Thursday, May 17, 2012

Island Forge: Island Forging

Island Forge is an indie developed MMO adventure game / editor. I've already written an article focused on initial impressions and the game side of things, this time I'm going to talk more about the editor. After logging in to Island Forge, one of your options is the Islands tab. Through this interface you can create an island of your own and start the editor. The initial editor window looks like this:
Basic editor - click to embiggen
From the top left you have island save, validate, and publish options, bulletin board (a required bit of text for each island), actor creation and story testing, help and save / exit. The next area down is the drawing palette, with tabs for terrain, objects, town structures, and actors. Below that are some drawing options, some display options, and finally, the map overview. To the right is the actual drawing canvas.

Drawing stuff is pretty easy. Pick a terrain or object and start laying it down on the canvas with the mouse. The draw options are a pretty short list, but they work and do the job. The developer, while trying to stay focused on finalizing the game, is amenable to suggestions, my own "replace mode for objects" suggestion was implemented within a day or two.

The display options are very useful for figuring out how your island is actually going to work. The Scenery check box shows/ghosts objects on the canvas, the Edging check box shows/hides the graphical edge blurring between hexes, and the navigation highlight check box shows where a player will be able to walk.
Editor canvas showing navigation

As you can see from the quick demo here, red shows impassible, yellow shows in town areas, and blue shows wilderness. Objects vary as to their navigability, and you can use actors to allow passage through normally impassible areas (theoretically).

As I mentioned before, zoom is an issue for me, not allowing the camera close enough to the action for my taste. The editor has the same problem (though it's less an issue here as you're not trying to click on moving foes). Overall I remain very impressed with the stability of the client. I've had it running in the background for hours at a time, used it for long stretches, and had no issues beyond a disconnect hang caused by my ISP dropping the line. Kudos to the developer for bug-free code.

With a basic layout done and a few scribbled notes, it's time to start working on story. To build stories in Island Forge you create Actors and Tasks, then build dialog trees using a combination of three nodes types, Dialog, Task, and Branch.
  • Actors are what the player interacts with on screen. They can be visible and appear as people, or invisible and be placed anywhere to give anything in game dialog options. If you want a talking tree, place a tree, create an invisible Actor, and then place it on the tree. When the player clicks on the tree element, the dialog is activated.
  • Tasks are jobs, quests, or tracking objects. Each Task has three states, Unset, Started, or Finished. You can use Task nodes to alter the state of a Task, and Branch nodes to test Task state and choose a path through an Actor's dialog set.
  • Dialog nodes are the basic talking interaction piece. Each has text and up to two options associated with it. Each option links to another node.
  • Task nodes, as previously mentioned change the state of a running task, then link to another node.
  • Branch nodes test the state of a Task, then link to other nodes based on that state.
Here's a quick and dirty dialog implementation for the dreaded Black Knight. It's kind of big because I wanted to get everything in there.
The Black Knight!

At the top you can see who this is, and what they look like. At the bottom you see a single Fight task listed, and in the middle from left to right the Dialog, Task, and Branch nodes. The interaction begins at node 7, indicated by the start button. The first thing we do is check Fight status, if unset (the default state), we go to the beginning of the dialog, if started, we head for the active fight, and if finished we go to the end.
Node 1 is a simple dialog with choice A looping back to itself, and choice B moving on. Node 2 is similar, except the choice B jumps to Task node 4 which sets Fight to Started, then passes on to node 3. Should the player run away here, they get called a coward and the dialog ends. Dialog nodes with no options just offer a close box. 

Now however if the player returns to the Black Knight later, the Fight is still in Started state so node 7 jumps straight to the action in node 3. Choice A here finishes the fight with node 5, then displays the other terminal condition, node 6. We know the Black Knight can never be slain.

The system as it stands is fairly powerful. You can do a lot of interesting things with tasks, especially if you use invisible tasks to track states. I've implemented a reputation system that tracks how various NPCs feel about a player, a complicated list of ingredients, a guard that prevents conversation with other NPCs, and, of course, simple dialog. That said, there are some limitations, chief among them is the limit of two choice slots on Dialog nodes. I'd love to have more. Even better would be a way to build lists of dialog based on Task an Actor combinations. As things are now, it's hard to deal with actors that have impact on many Tasks as you need to build a large branching structure and many dialog nodes to handle all the choices. Some form of dynamic choice lists would help quite a bit. A second limitation is more a UI issue. It'd be nice to be able to rearrange nodes in the display or color code them for tracking purposes.

Even with these limits, the system can do quite a bit. Hopefully I'll be able to finish my island soon to demonstrate some of the power here. As I mentioned before, most of the islands I've explored are pretty simple affairs.

Back to editing, once you've built your Actor dialog trees, you can use the test button to walk through the entire story, watching task status and actor processing as you go. There's also a base validation tool to check your dialog for loops and invalid links, something you really must do before testing, since a bad dialog tree can kill the client (something I need to report actually). As with all things editor, save early, save often.

Once you're happy with all the above it's time to publish. I haven't yet gone through this process, but it seems like a simple one button operation. One thing I'd like to see is a full preview mode so you can actually walk your creation before publication, something the developer has indicated they're considering.

So there you have it, Island Forge, an indie adventure game worth a look. I hope that between my previous post and this one you've seen enough to give it a spin. With that I'll close with a quick preview of what I'm building:
Vale of Tears - work in progess


  1. The developer here again - another very well-written article. This is better than my own help text!

    I'm looking forward to exploring your island, it looks amazing. Your quest logic sounds like it's going to be the most elaborate in the world so far.

    I'm eager to hear how you managed to break the client - hurray beta!

    I'm glad you're pushing the builder to its limits, inspiring me to continually improve it.

  2. I'll post something up about the client breakdown on the forums. It wasn't a major thing.

    I decided I needed to test a couple things out on a test island, so I went through the publication process. Had a bit of a brain fart working out a problem until I realized that if you need to make changes to a published island, you must republish for those changes to take effect.


Note: all comments are moderated to block spammers. Please be polite.