Thursday, February 3, 2011

The Toolchain

So, one of the things which I think will make it possible for us to easily extend FaeSaga and spin it into an even more expansive universe over time is the toolchain.  Many of the resources for FaeSaga are externalized to allow for resources to be readily swapped out and tested, and I have written a variety of tools to facilitate this process.

Here are some of the current tools being actively developed in FaeSaga's toolchain.
(Screenshots after the cut!)


NBTE
Codename:  newbite, newbite2

This is the tool that started it all.  Originally, NBTE ("Nobuyuki's Tile Editor") was started on a few years back because I couldn't wrap my head around mappy's output format, nor did the editor seem friendly to use.  Upon a cursory glance of various tile editors available, most seemed to be hideously spartan, out-of-date, or simply lacking in the types of features I wanted in a tile editor.  Having not used a tile editor in many years at that point, I figured it would simply be easier to roll my own.  A couple years later, I'm probably a bit wiser, but at this point, the tool is the most important part of the FaeSaga engine.

Many of NBTE's original features revolved around being able to "bake-in" information into the map which couldn't be expressed as a numeric tile.  Features were added over time, and bolted-on to the original primary concept, creating a huge clustered mess of a codebase to work with.  The original version of NBTE was MDI-based.  Since the tile editor was written in MMF, MDI had proven to be too much for the editor to handle and it became a single-document editor instead.  The code has been refactored many times since its original concept, probably with some cruft between all those builds, but remains relatively stable by MMF standards.  As of this posting, it is not yet feature-complete, but a lot of features have been added recently to facilitate easier map building for our team.

The original scope of this editor was to be an all-in-one tile and sprite editor, NPC behavior editor, and event editor in-one.  The scope of NBTE has been trimmed significantly in order to make it less critical for roles in which its functionality will eventually be superseded.  As a result, significant amounts of "dead" code remains in NBTE, mostly related to event programming which will probably be outsourced to a separate tool.



FaeSaga Map Linker
Codename:  WorldLinker

This tool is the main portal for creating and linking overhead maps together in the FaeSaga tile engine.  Maps are linked together by reference -- what this means is that while adjacent maps must be specified for all valid exits, which can be (and was) a tedious job to do by hand, it also means that the worlds in FaeSaga can be linked together in "non-euclidian" space.  Essentially, that means that a map's exit could reference itself (Lost Woods, anyone?), or it could reference the other side of the world (A wrap-around world),  or it could wrap around in other ways (hidden shortcuts).

Since most of our work was going to be on a cartesian coordinate grid anyway, I created a tool to facilitate automatically creating and naming maps to be edited in NBTE.  These maps can also be given a template file, which shows their general color on the grid, as well as provides a unified tileset and background music, which means that the references to these things do not need to be changed on each individual map (again, a very tedious process).



Treasure Definitions Editor
Codename:  TDE, ItemEditor

This tool was originally written to define references from an index number for Faerie Tales, but will be reused for FaeSaga to provide pictures and descriptions for usable items.  Pretty much any item that isn't equippable falls into this category, as well as generic vanity items and such.





Other tools which are important in the toolchain but have yet to be written:
  • Sprite Decorator -- This tool will be used to add non-tile-based resources to the map, such as animated sprites,  NPC's, treasure chests, signs, and etc.
  • Enemy Patterns Editor -- This tool will be used to add positions for enemies on the map, as well as creating banks of positions for an individual map to reference.  These banks (enemy patterns) will be selected from the engine at random whenever the player enters the screen and the screen isn't on the "cleared screen" queue at that time. 
I've also created a few other tools which may need to be rewritten to be adapted into the FaeSaga engine, such as a script editor and an NPC definitions editor.  I'll probably get around to describing some of these in a future post.  Maybe.  :)

Please Share


No comments:

Post a Comment