ID:1866410
 
Hey all, I'd like to turn over a new leaf by being a little more transparent about the development process, so I intend to make regular posts on what I'm working on.

As you've probably heard, BYOND 508 will include a number of new features: The appearance var, try/catch, and now MouseWheel() and maptext_x/y. The maptext changes were a last-minute addition, because whenever new keywords/vars/etc. are added they require a major version bump, so this was the time to do them.

I'm expecting to release 508.1287 on Monday the 8th. You can blame the delay on feature creep, and especially on the users who requested it. Everything is mostly set and documented, but I need to test some changes to the webclient and get everything buttoned up for release. I'm also hoping to squeak in another fix or two if possible.

I burned some time today looking into nearest neighbor interpolation for Dream Seeker, so that retro games can look good when upscaled without a lot of blurriness caused by linear interpolation. This is a long-requested feature. I can't make any promises on it, and I do not expect it to get into 508.1287--but it's very high-priority if I can manage to do it. Right now that's still an "if". If any DirectX gurus are in the house, please weigh in on the thread in Feature Requests.

508 is going to have multiple releases just like 507 did, and I'm really hoping to get a lot more done on the webclient in the next few weeks.

Speaking of regular updates, I made a post in Tutorials & Snippets recently called Under the hood: Appearances and you. I'd like this to be the first of many, and welcome suggestions to explain other under-the-hood info that people might find useful.

If you're not a Member yet, please consider purchasing a membership for yourself, or for a friend, and donations are of course always welcome. Your contributions to the project really mean a lot.
Finally, after all these years the mouse wheel gets some love!
MouseWheel() is such a great addition, I'd say it's the PC equivalent to adding shoulder buttons to a controller.
So much like in one post, it's almost impossible to endure. But wait! There's more! Not only is scaled graphics in the works, but I think I heard 200% zoom is in the priority list too! Ahhh, BYOND is improving sooo much during my busy time. It is going to be so great coming back to all this improvement when I find the time.
Very interesting. It appears exception handling is being implemented.
Yut Put wrote:
oh my god i requested maptext_x and maptext_y literally the second maptext came out years ago

Good things come to those who wait.
In response to Bandock
Bandock wrote:
Very interesting. It appears exception handling is being implemented.

Indeed! At the time it was first requested I didn't understand nearly enough about the compiler to take a jab at it, but now it ended up being a lot easier.

Here's the basics:

// regular exceptions (generated by runtime errors)
try
...
catch(var/exception/e)
... // datum contains name, file, and line info, and desc for call stack

// thrown values
try
...
throw 4 // you can throw anything
catch(var/n)
if(n == 4)
...
else
...

// when try isn't in use
world/Error(exception/e)
...

Rules of exception handling:

- If an error happens inside a try block, in the same proc or indirectly within a proc that it called, all of the child procs end and control goes to the catch statement.

- If an error happens outside a try block, world/Error() is called if present. The current proc will end and control will return to the caller, just like it normally would.

- You don't need a variable (or parentheses, in that case) for catch, if you don't intend to use the exception value.
In response to Lummox JR
Lummox JR wrote:
Bandock wrote:
Very interesting. It appears exception handling is being implemented.

Indeed! At the time it was first requested I didn't understand nearly enough about the compiler to take a jab at it, but now it ended up being a lot easier.

Here's the basics:

// regular exceptions (generated by runtime errors)
> try
> ...
> catch(var/exception/e)
> ... // datum contains name, file, and line info, and desc for call stack
>
> // thrown values
> try
> ...
> throw 4 // you can throw anything
> catch(var/n)
> if(n == 4)
> ...
> else
> ...
>
> // when try isn't in use
> world/Error(exception/e)
> ...

Rules of exception handling:

- If an error happens inside a try block, in the same proc or indirectly within a proc that it called, all of the child procs end and control goes to the catch statement.

- If an error happens outside a try block, world/Error() is called if present. The current proc will end and control will return to the caller, just like it normally would.

- You don't need a variable (or parentheses, in that case) for catch, if you don't intend to use the exception value.

Awesome!
Yut Put wrote:
I almost forgot. Flip/rotate buttons for the icon editor that allow you to rotate/flip multiple frames/directions at once were mentioned earlier. How far off is that feature from being implemented? It sounds like something that couldn't be too hard to do, but would massively make the lives of developers easier

It's not in 508.1287 but I do plan it for the 508 series fairly soon. It's very high on the short list.
Could you create a closed-topic that has a list of things you plan on adding or that have already been added in V.508 and have like check marks near the ones that have been implemented.

It would be pretty cool to know whats coming and what are your priorities. That way people won't request things you are already working on or are planning to add.
I appreciate you sharing your focuses and progress.
In response to Lummox JR
On the topic of catching exceptions, is there a way to 're-throw' exceptions, a la C#?

In that, from within a catch block if you put just "throw;" on a line, it'll re-throw the error in such a way that the originating information (file, line, stack trace) are preserved and simply continue to unwind up to the next catch block, or the global exception handler (if one exists).
I think having exceptions travel up is the default behavior anyway unless you tell it not to.
In response to Topkasa
Topkasa wrote:
On the topic of catching exceptions, is there a way to 're-throw' exceptions, a la C#?

In that, from within a catch block if you put just "throw;" on a line, it'll re-throw the error in such a way that the originating information (file, line, stack trace) are preserved and simply continue to unwind up to the next catch block, or the global exception handler (if one exists).

The throw keyword demands a value to throw; but this should work:

catch(var/e)
...
throw e
Okay, that'd be nice. Would be good to be able to not catch some exceptions, and only catch/handle specific exception types.
Okay, that'd be nice. Would be good to be able to not catch some exceptions, and only catch/handle specific exception types.

Well, I guess this is where my background pays off. I really started in Java. Generally, exceptions that don't have a handler throw an unhandled exception error. The default behavior of BYOND is to CRASH() when an exception occurs unless you are in a try/catch block.

So really, something like this would effectively be the same thing, just slightly higher on the call stack:

try
doSomething()
catch(var/exception/e)
switch(e.name)
if("invalid argument")
//handle
if("division by zero")
//handle
else
throw e
//CRASH()
In response to Exentriks Gaming
Exentriks Gaming wrote:
This next please!:

http://www.byond.com/forum/?post=972611&hla

This definitely has been a pain in the ass for us. Hoping it gets fixed soon. Keep up the great work though Lummox. You've fixed many things Ter and I have needed recently :)
Here's a quick link to the nearest neighbor thread. I put it in the comments of the Facebook post, but in general it's probably wise to put links like this in the original news post for impulse clicks. =)

http://www.byond.com/forum/?post=1388769
What exactly is map_text x /y going to do? Couldn't we already move it into certain pixel locations?

Also mouse wheel what is that? Is it like the click proc but responds to mouse wheel instead? Though I know not everyone has a mouse wheel so I don't want to use it. As I hate games that require it and I'm like well im just on my laptops touch pad
Page: 1 2 3