Skip to main content

Learning BYOND, Day 1: Little Digital Souls

Contrary to my previous entry, I’m not finding BYOND to be the mind-reading device I was hoping it was. Instead, I’m wrapping my head around how to code my creation. This is not just that dinky script modification stuff I was doing in Neverwinter Nights 2 or Elder Scrolls IV: Oblivion, but rather defining a completely event-driven game already running within the generous framework provided.

Pouring over manuals and tutorials reveals that reading about it is one thing, actually doing it requires more than a skim. Several dendrites have died needlessly, however, progress has been made. I don’t have much to say about today’s progress, so this will be a short entry. However, I will leave this hard-earned gem:

I thought I knew was Object Oriented programming was, having dabbled with Java a bit in the past. However, I was mistaken, and at least part of my mind was still mired in the procedural past. Unlike Java (a completely object oriented language), BYOND offers no point in which the program starts; there’s no main() starting function. Instead, the starting point is the BYOND game interpreter itself, and what the would-be BYOND designer is given is an entirely event-driven model.

Nothing in BYOND happens unless an event sets it in motion: the server reboots, a player logs in, a tree falls in the forest (and the server was there to hear it). The event triggers a whole newly spawned process, running on its own independent thread, until it is completed. Behind the scenes, only one thing may be happening at a time due to the limitations of the hardware. However, to perception of the players and the BYOND programmer, there’s several things running at once at all times.

It makes sense. After all, BYOND was made to simulate virtual worlds. Each active PC and NPC needs no less than their own little digital soul or else the virtual reality fails to acknowledge them when the time is right. Trees won’t fall in the forest if the universe is too busy doing something else to enact gravity, so they need their own slice of time (preferably immediately after the axe has finished its work). And so on.

Suffice to say, it’s been a mind-expanding experience. I’ve never worked on software that worked quite this way before, and it’s taking some adjustment. However, like learning music, mathematics, or (most appropriately) a foreign language, anything worth learning can be learned in persistence. (Unless you die trying, of course. Pacing is important!)
Post a Comment

Popular posts from this blog

Resonant Induction Really Grinds My Gears... In A Good Way

From about 2pm yesterday until 8pm today, I've been dabbling with my latest custom mod mix for Minecraft 1.6.4, which is this time very much Universal Electricity focused.
Aside from the usual GUI enhancers and Somnia, the primary contenders in this mix were:
Calclavia Core - Of course: this is the base of the Universal Electricity system.Resonant Induction - This seems to be largely focused on increasingly more advanced methods of refining ores divided across 4 ages of technological progression.  It also includes some really cool things such as assembly lines.  I'll primarily be talking about just a few blocks out of this mod today.Atomic Science - A mod dedicated to generating more of those lovely universal electricity volts via the power of splitting the atom.  Build your own nuclear reactor!  Deal with nuclear meltdowns!  You maniac!ICBM - A mod dedicated to generating more destruction using those lovely universal electricity volts (and more than a little gunpowder), it cer…

Empyrion Vrs Space Engineers: A Different Kind Of Space Race

In my quest for more compelling virtual worlds, I have been watching Empyrion: Galactic Survival a lot this bizarro weekend, mostly via the Angry Joe Show twitch stream.  What I have concluded from my observations is Empyrion is following in Space Engineers' shadow, but it is nevertheless threatening the elder game due to a greater feature set (the modding scene notwithstanding).

Empyrion is made in Unity, whereas Space Engineers is built on a custom engine.  While this does put Empyrion at a disadvantage when it comes to conceptual flexibility, its developers nevertheless have a substantial advantage when it comes to adding features due to a savings of time spent that would have gone into developing their own engine.  Examples include:
Planets.  Empyrion already has planets and space to explore between them, whereas in Space Engineers planets are in the works but still awhile away (so you just have asteroid fields to scavenge).Enemies.  Space Engineers' survival mode boasts onl…

Ancient Warfare - What Is It Good For?

The Ancient Warfare mod for Minecraft threw me for a loop.  I was looking for "villagers" that would perform useful tasks while simultaneously resolving the glut of food with a need to eat, thereby turning Minecraft into a bit of 4X game you can play from the inside.  Millenaire wasn't quite there, partly because recent updates to Forge had broken its compatibility with Minecraft 1.7.10, and Minecolony's development is not quite fast enough to keep up with the state of mods in general (they probably need to make a core API).
In comes Ancient Warfare, which does indeed provide workers and soldiers who need to eat, you can even order around a little army of them to defeat your enemies.  It has working waterwheels and windmills, something I thought was awesome in Resonant Induction.  It has a warehouse with a built-in sorting system, as well as courier NPCs that can move things from building to building, and crafting NPCs that can create things for you automatically - w…