Here's the recap of the last batch of features.
New Start-up Sequence
First of all, the game now has a title screen and menu. It's a placeholder for now, but I decided it was time I started thinking about how this game is going to be presented to the player, and the game states that implies. Fortunately, Flixel has a nice state system already built-in (one of the reasons I chose to switch to Flixel). So setting this up took almost no time at all.
|The title screen I'm using for now.|
Skills, Quotes, and Fade to Black
When the player clicks "Play," they're immediately taken to a skills/abilities selection page. Here, they can choose what skills their character will have to use in surviving the wastelands.
|Skill selection page, v2|
|Extra skill/ability space granted for taking a disadvantage.|
The above all happens while the game is loading the map. Map-loading can take a few seconds on my dev machine, and longer on older machines. In case the character creation step is completed before the game has finished loading, the user will see quotes that are relevant to the game universe. I want to use every available space to paint more depth in my game universe, and this is one such case.
Main Game UI
The main game UI has had a lot of work done as well. It's now possible to visually track one's character status via some colored status bars in the top left. As time passes in the game, the needles in these bars slide to show how the character is holding up (e.g. getting colder/hotter, more hungry, more tired). Each color represents a stage of hunger, fatigue, hypothermia, etc. As the needle crosses into gradually more red stages, penalties accumulate.
|New in-game UI, including status bars and message window.|
To further enhance player feedback, a running message log was added to the lower left. It calls out status changes in hunger, temperature, etc., as well as when items are found in the current hex.
Scavenging and Sleeping
I also added some more buttons to the top right. "Sleep" causes the player to sleep in the current hex. The map disappears, and only the UI remains. All buttons disappear except a "Wake" button. If the player is in a yellow or orange fatigue state, "Wake" is not automatically successful, because the player is too tired. (A message in the log tells the player this is the case.) If the fatigue is in the green state, the player will automatically wake up.
The scavenge button was added to allow the player to search for items in the current hex. It takes movement points to execute, but may reveal useful items. Currently, that's the only way to find items in the game. A recent playtest with Rochelle revealed that this is probably not ideal, as she expected to find some items automatically as she wandered. I agree with her, and will probably change it so that scavenge finds more "out of the way" loot in a hex, in exchange for the movement points spent searching.
I've spent quite a bit of time upgrading the encounter system to cover the types of encounters I want. One such change is the ability for encounters to spawn creatures on the map.
|A dogman is stalking the player.|
Encounters can also teleport the player to a new hex (handy for quick travel). Encounters can be triggered by date range, location, or hex type, with a certain percent frequency. They can also be unique, so they only fire once, and can trigger only on certain player conditions (or the absence thereof), which is handy for setting game variables like "player angered crime boss."
Encounters can also reveal distant hexes on the map. And to help give the player landmarks to go by, it made sense to give them an overview of the map. So I added a minimap!
|Minimap, with labels.|
The minimap is fairly crude, but it's a 1-to-1 relationship with the hex map the player sees. It makes navigating a bit easier on the player, as well as development easier for me. The map can be scrolled around in WASD fashion, with the ability to zoom out. Here, we can see the starting cryo facility labeled. Any revealed hexes can have labels as well.
Encounters were quickly becoming confusing to author, especially since one encounter can branch into zero or more other encounters based on character responses. So, I decided to take some time to make a visual tool for editing these encounter relationships. It makes encounter authoring much easier on me, and much faster. And since encounters are the meat of the game, I'm already reaping the benefits of an editor.
|Try editing THAT in a spreadsheet!|
One thing to note about the editor: it uses fl.controls instead of Flixel. It still lives within a Flixel game state, but I needed quick access to text boxes, scrollbars, and select boxes. So I managed to load a swc with all those controls from Flash CS4, and that helped me get this editor up and running within a week.
Crafting and Item Conditions
I finally bit the bullet and hacked together crafting for the game. I think it was easier than the last time I approached this problem because more of the game is fixed in place now. With less wiggle room, decisions became clearer.
|Crafting a campfire.|
It's really cut and dry for now. The player adds items to the center "Ingredients" panel like they would any other container. If the ingredients can make something, it appears ghosted on the right along with a "Craft Item" button. Clicking that button removes all ingredients, and un-ghosts the crafted item for player use. Also, the discovered recipe appears in the left scrollbox for use later. Clicking any known recipe on the left tries to fill "Ingredients" with the necessary items from the player inventory or ground.
Regarding the campfire, I wanted the player to be able to place items in a hex to help them weather the night, take shelter, etc. So I made items bestow conditions (buffs) based on where they are stored or equipped. In this case, simply being in the same hex as a campfire warms the player, restoring his body temperature each turn he ends or sleeps there. This goes for clothing as well, which only works when equipped in the correct slots. Finally, I use this in a later encounter to trigger a quest option based on what the character is carrying.
Also, Other Stuff
A raft of other less-visible things have gone in as well. I've finished an overall story arc in Illustrator, and that's helping me keep everything in context for the game. The game architecture was changed from a sloppy if/else block to a more robust game state (within Flixel's "play state"). Now, I can more cleanly keep track of when the AI vs player are doing stuff, when game should be paused due to inventory or map screens, and what order the game should load data.
And of course, there's the game content. New encounters, new items, new hex types...this is going to continue for a bit. I'll also be continually tweaking game rules as I go. I've already started counting hex movement costs against player fatigue as an experiment. Now there's an additional reason to consider which hex to choose when traversing an area.
There's still much to be done, but I think the end is in sight. I have to stay disciplined now, try to keep scope in check, and keep my eye on the release as a real thing. And figure out how to get some wider playtesting done soon!