ID:2264185
 
Independence Day is nearly here, and if it ever stops raining for more than two hours at a stretch I'll do some grilling to celebrate.

Work on 512 progressed this week, with more work put into finishing touches on visual contents, after which I got to adding a byond_build var (world and client) that's been wanted for a long time. For obvious reasons the client.byond_build var won't be useful with pre-512 clients, but at any rate it's available from now on.

Also, I decided it was time to investigate the feasibility of world.vars and global.vars more thoroughly. They've been haunting me for a long time now, and finally the time had come to get to it. world.vars was quite simple to add, really, because it was pretty straightforward. The real bugaboo was global.vars. Not only does that necessitate adding info to the .dmb, but I had to figure out how to handle the parsing so that a special global "vars" var could be recognized. (And it's a doozy. When a var lookup is done and fails to find anything else, a new node is created on the fly so it can be looked up in subsequent cases, and the .dmb is marked as 512+ for servers so that the extra global var list can be added.) I still need to test writes and then document this, but otherwise these changes are in place. It was a lot of difficult work, but I hope developers will think it was worth it!

I've moved preload_rsc up higher in my to-do list because it's really a huge deal and I want to prioritize it for 512. The main difficulty is wrapping my head around how to handle all the issues surrounding it. But I think I can finally start on that pretty soon.

Big thanks to everyone who helped support BYOND this month. You keep development going. And thanks too to everyone who makes use of the new features to create awesome games, including the crazy wonderful SS13 community.

Now get out there and enjoy some fireworks if you can, and when you come back write us a fantastic hack-and-slash dungeon crawler or space mining game.
The real bugaboo was global.vars. Not only does that necessitate adding info to the .dmb, but I had to figure out how to handle the parsing so that a special global "vars" var could be recognized.

At the end of the day, what you needed was a list of global var names, and a way to get the value of a global var by name. since static vars on datums act like global vars in how they parse and are looked up, but exist in that things vars list, this was already doable with the existing dmb format.

But I don't know if there is an easy way in how the compiler is designed to translate global vars to a pseudo global var datum that holds static vars. (or some abstracted version of that)
Yay! World vars! My dreams have come true!