Learning BYOND, Day 2: Back To Fundamentals

There’s 16 days left until I’m back at the University as a Digital Technology and Culture student for another semester. While I don’t plan to stop playing with BYOND at that point, this time is nonetheless quite valuable for the purpose of learning it.

Today, my primary accomplishments included:

  1. I figured out some additional ways in which BYOND initializes variables. Recall from yesterday that nothing happens (no code is executed) unless an event occurs. Actually, things that are painted on the map maker pretty much are already in existence and ready to go. This is interesting because there’s actually a whole loaded database up and running before you write your first line of code.
  2. Who can use the “verbs” on an object is determined by the “set as src” parameter. This is extremely handy, because once a verb is accessible the GUI automatically makes it available to the player in all sorts of fancy ways (e.g. right click and it pops up on the menu). Verbs are basically custom events, fully programmable by the game creator, and are the catalyst of action between the players and the game.
  3. I can, indeed, utilize procedures on other objects. However, it requires at least a temporary initialized object in order to reference the appropriate procedures. I’m still a little rusty on this, it’ll probably be a bit easier on me once I know where (in the code) I can start instantiating things and how to reference them properly. The interfaces are not quite as clear-cut as JAVA – there’s no private and publicly declared variables and procedures.

Overall, a bunch of extremely newb-ish reading and experimenting was done today as I strive to Grok this new means of programming. If it seems like I’m backpedling a bit, it’s because I am. Shattered is the initial overconfidence that I could just dive in and make stuff. It seems I’m way too rusty for that – hell, I probably never had a chance to mess with a program that accomplishes as much as BYOND presents. Yet, this attitude seems to have made me more receptive to learning as well: I made it up to about chapter 6-7 in the official guide with greatly increased understanding. (Specifically, the longer PDF version – which is quite excellently and humorously written, by the way) .

Very little progress was made towards Building My Own Net Dream today, as it seems I’m mired down in understanding the fundamentals. However, at least part of this is because of the high aspirations I have. If I was trying to recreate an Ulltima 6 then BYOND makes that fairly easy to do – it practically is a massively multi-player enabled Ultima 6 engine by default. However, what I’m going for is more of a point-and-click, dynamically-changing-world game where custom events (such as the automation I was blogging about a few days ago) take the center stage. That’ll take a bit more effort.

Though it’s generally a bad idea to plan bigger than you’re capable of, I’m not feeling too disheartened: it seems to me that the engine is very capable and probably the friendliest in existence for me to use. Thus, it’s just a matter of practicing until understanding it is second nature. The further I get into it, the more it seems that I just need to find the existing procedures and learn to use them instead of bull my way through with overridden procedures as I was planning.

2 Responses

  1. Interesting stuff, Geldon. Thanks for the pointer to BYOND.

    I’m surprised you’re finding the event-based style novel – NWN takes the same approach, no?

  2. Thanks — I’m hoping this isn’t too boring, as I’m thinking I’ll continue writing a bit of a “developer log” of learning the ropes of BYOND as it might be handy to others who are trying to pick it up. Of course, that’s not the only topic I’ll be writing here, but it should be an interesting set of entries.

    You make a good point about how one can apply NWN’s event-based style model to BYOND. I guess the main reason why BYOND is trickier is just because the way it is presented to the user is different.

    NWN’s Aurora/Electron toolset gives you a large library of premade NPCs/Items/Tiles/ect that you can place on the map and modify the properties of, including a script window that clearly points out which script corresponds to each event. You’re usually given a working example of each event’s script on the item, which can then be modified or replaced with your own. You can even use the toolset to pull up the properties and event scripts of the object that runs the world.

    BYOND starts with a working framework, but that’s all hidden. When you open a new Dream Maker game development environment, you have seemingly blank code and nothing (not npc, item, tile, ect) that can be placed on the map. Only after you write the code that defines some turfs, mobs, or objects will they show up to be placed on the map. (There’s actually a built-in graphical editor in the Dream Maker that enables you to create your own icon files that show up on creatures, objects, map tiles – this includes support for changing states and animations.) One has to learn manually where all those hidden event handlers are, and without any kind of convenient script-container on each thing created. At most, you can double-click on something on the map builder and it’ll take you to where, in the code, you defined it (along with some editable parameters you may have defined for objects of that type).

    BYOND’s comparatively blank-slate approach is to its advantage because NWN does only one thing: simulate a real-time twist to a D20 D&D game. (Something like Lute Hero‘s unique interface is working well outside of the friendly toolset.) BYOND starts off as an action-less, stat-less, graphic-less RPG, but can be made to be able to handle nearly any 2D tile-based game you can think of. The flexibility is astounding, and the interface is quite adaptively friendly considering what it can do. It still takes a bit of learning, I’m discovering, but it’ll be on the scale of days/weeks instead of weeks/months.

    [edit: Pardon all the edits, I like to be thorough đŸ˜› ]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: