C:\raft cover
C:\raft screenshot
Linux PC Mac Steam
Genre: Role-playing (RPG), Adventure, Indie

C:\raft

A Year In Review


It’s crazy thinking about just how much has changed in the past year alone thanks to Steam Early Access.  Some stuff had already changed thanks to the push for Steam Greenlight compared to what the game was when it was exclusively distributed on Desura.

Let’s summarize all the big changes from each update


There’s also be a slew of smaller, more engine related changes regarding graphical performance and stability improvements.  Code’s also be refactored quite a bit, and things like dungeon generation have been restructured to allow for additional algorithms, though I still have yet to take advantage of that.

And for reference, this is what happened in the past year of on-off development.
That’s quite a bit for a project that’s managed by a single person who isn’t good at keeping track of how much he changes on a file-by-file basis and commits in bursts.  Also, a good portion of the file additions were just resources and not code, so the game’s code-base is still manageable (only about 240 source files).

Here’s to hoping the game continues to get better.  Also here’s to hoping I can finally feel comfortable with wrapping this game up and marking it as a full release.

Anniversary Update


It’s been a year since StoryMode entered Early Access on steam, and I swear the game isn’t any less broken than it was when I started.  On the plus side, though, there’s been a lot of new features added since then, and in a lot of ways the game is nothing like it was.

It’s probably a good time to update the trailer too, but I’m not good at stuff like that, so whatever.

There’s some new features arriving with this update too, and like usual old save data is no longer compatible.  Instead of giving a long write up on what’s changed, I’ll just direct you to some blog posts that I did while the changes were still just ideas fluttering about in my brain.

Here’s a summary:

Stronger, Faster, Deadlier

Another big update, coming along. Sorry for not posting any updates in June or during the summer sale, I’ve been rather busy the past 2 months and couldn’t put as much time into this as I would have liked (rather I spent my free time trying to de-stress from programming all day by playing other games like FFXIV).

Anyway, this update includes the culmination of everything I’ve been working on and talking about in the dev blog for the past two months. Particularly, it includes the following features that I’m going to talk to you in detail about!

Seasons and Lunar Cycles



The game time system has been cleaned up a bit internally, and as such I’ve added new seasonal tracking and a lunar calendar to the game. Seasons don’t do anything just yet, but they’re in there as a feature that’ll be used for a future update.

Lunar cycles, on the other hand, do have an impact. A lunar cycle lasts 18 days, meaning you’ll hit a full moon and a new moon on average once a month. The closer you are to a full moon the harder enemies will become in dungeons. This adds a new level of challenge and strategy, as you’ll have to decide when do you want to go into a dungeon and when do you want to sleep away a day. As always, the higher level enemy you fight, the more loot that drops, so on full moon days you can guarantee yourself getting more loot, if you can stay alive that is.

Additionally, there’s a 5% chance of an eclipse happening on any day. Eclipses convert dungeons into a boss-run mode, where on every floor in the dungeon there is a boss fight. This leaves you with no chance to ally with friendly monsters to take with into dungeons, but it does give you an opportunity to try your might at fighting low level bosses and high level bosses to get the items you need in your quest to serve the goddess. It also gives you a chance to pit your skills and might of your human party against the strongest beasts of your hard drive.

Sleep is Optional



With this update, days now advance whenever you return to town, and you’ll automatically be healed. Sleeping has been a considered a chore and confusing element of the game since I demoed it for the very first time. Removing it is a much needed change. Now the only reason why you’ll need to sleep is to adjust dungeon difficulty, or for other features that may come in the future.

Redesigned Questing



Questing has been completely restructured due to criticism about its seemingly pointless nature and lack of guidance. While the prompts remain the same nonsensical spam email mad-libed humbo-jumbo, quests are a lot more structured and easier to complete.

Now, you may only take on one quest at a time. Also, Quests no longer expire. Each quest has its own random seed assigned to it, so now you will achieve your goals by going into the quest’s own dungeon instead of trying to find everything on your hard drive. This makes questing more extensible as well, which means in the future I can add more unique quest mechanics, such as quests starting your character off at level 1 and having to reach a certain level within the dungeon to complete the quest.

For Hunt quests and Gather quests, there’s a 10% chance an enemy will be the type you need to kill or will drop the item you need to collect. This is much better than the usual .05% chance you have to get a specific item or monster because of the amount of randomly generated content in the game. These additional features and guides should hold your hand enough to get quests done, but the dungeoning is still hard so don’t expect the game to suddenly be a breeze.

Leveling in Dungeons



Leveling a character now works the same way as leveling up your equipment at a blacksmith. Within dungeons your character can once more gain xp from killing monsters and level up. When you level up in a dungeon, the stat point is assigned randomly, unlike when you train a specific stat. Upon leaving a dungeon, whether willingly or through death, your stats will reset back to the values that you have trained them to be. This makes your dungeon level a completely temporary stat, but the leveling up in dungeons with natural progression should help adventurers make it deeper more safely. And of course, the deeper your go, the more pleased the goddess will be. Because you get more loot that way to crafting things with, of course.

More enemies, More fun



Dungeoning is a lot more dangerous now with the enemy factory adjustments. There’s a heck ton more enemies on each floor now, because there were complaints that dungeons just weren’t dangerous or fun enough. Seeing that dungeoning is the core component of the game that people are going to be playing, it’s probably best that they don’t feel bored in vast dungeons with no enemies.

Bug Fixes



And what patch/update isn’t complete without a few bug fixes. Some of the big ones noticed were


  • Craft menu doesn’t match up properly (Today and Required were switched)
  • Crafting button was missing, so you couldn’t actually craft.
  • Fix enemy AI movement for when there are more than 25 enemies on a floor, This has been plaguing the game for months and was nothing more than a spelling error calling dot instead of dst for distance calulations.

Of course, since this patch introduced new features, there’s bound to be some new bugs introduced. Please report all that you find to either the steam forums or github issue tracker as you find them, so I can squash them as soon as possible.

Thank you for your patience and enjoy the update!

Quick Fixes and Dev Blog

Found some bugs shortly after pushing yesterday’s update. I fixed what I saw and made a few cleanups here and there. Something that I forgot to mention in the last update post was the fact that the dungeon generation backend has been completely refactored to allow for different algorithms to be plugged in. Right now it’s still using the classic algorithm based on RoguelikeLib, but I’ll be looking into adding support for Angband and Perlin-nose/Cave style dungeons. As a result of the refactor, some things were temporarily broken with the classic dungeon generation that have been fixed with this patch.

In addition to the quick fixes, I’ve added in the CRT filter as a video option that can be toggled on and off. Be careful, as since it does distort the rendering space slightly, mouse-based input may not be pixel perfect towards the edges when it’s turned on.

The update has already been pushed out on Steam. Itch.io will be updated shortly.

Also of notice, I've created an official dev blog on tumblr that'll feature more kinds of background to the game's development. You'll be able to ask me questions directly and see screenshots and videos of features in development. Steam will continue to receive changelog posts, but anything else will be on the blog.

Planetary Alignment

Big update falls this month in Storymode. As we're approaching the one year mark since I uploaded Storymode to Steam Greenlight, I thought it'd be a good time to change quite a bit with the game's features and presentation. So let's go over the changes in detail (it's gonna be a long one)

Planet Navigation



Visible right away, the biggest change is the reorganized main menu. As new features and menus began creeping their way into the game, I realized a new menu system was required to keep things streamlined and easier to navigate. Some things still need ironing out, and user feedback is incredibly valuable at this point because it's such a big change to a central part of the game.

Menus are now broken into planets, which can be navigated between by either scrolling or pressing Up/Down. Some planets and options are locked away until you reach certain criteria, including some features that were accessible as soon as you started the game. There are hints provided to help you discover what you need to do. Some planets have features and menus that weren't available before this update. So let's talk about those next.

Blacksmith



In addition to training your character by sacrificing items to the gods of Gains, there's now a planet of blacksmiths, which will accept items as materials with which to increase the base stats of your equipment. Weapons and armor that you find in dungeons function more as an enhancement/enchantment to your base equipment, meaning once the enchantment wears off you're still as good as your equipment instead of your raw strength. You're able to permanently increase the strength of your equipment, as well as increase the minimum durability of all enhancements.

Be sure to balance increasing weapons with increasing stats. Unlike stats, weapons do have a max level, so at some point you will need to make yourself stronger instead of just relying on your tools.

Persistent Party



Forming a party of humans instead of monsters is now possible outside of dungeons. A select group of up to 4 humans of varying classes, birthsigns, and names that you hire will follow you into dungeons. They play by the same rules as monster allies, so when they die they'll be sent right back home, allowing you to replace them with something that you befriend during your dungeon run. Additionally, if you befriend a monster that's stronger than an ally, that ally will be sent home.

Each ally has a random growth curve assigned to them, allowing for a predictable level up path. In some ways leveling up an ally is a bit cheaper and easier than yourself, but since they have a predefined curve you lose the intimate customizability that you have with your character. However, since they have their own birthsigns and jobs, it allows you to experience a taste of all the game has to offer without having to create new characters.

Micromanaging



What's a grindy game with luck based micromanaging/gambling? Another feature of your persistent party is the ability to send them off into dungeons by themselves for multiple days to gather items for you. Success rate is dependent on their level and their current depth in the dungeon they're exploring. You can call them back at any point, and it'll take only a day for them to bring back all that they've gathered...if they're lucky.

Allies can die at any floor during exploration, so balance your chances if you want to get anything out of sending them off. When they die, you get nothing out of it. Additionally, since it takes a day for them to come back, there's even a chance they'll die on the way out. Also, when they're away getting things for you, they won't be able to accompany you when you go into a dungeon.

You might be thinking, with this mechanic, why even go into dungeons anymore? Well, since it also takes days for them to get or do anything, you won't be able to use this as a means to complete quests. Additionally, what they pick up is random, unlike going into files where the items are dependent on the kind of file you're exploring. Pretty much, micromanaging provides a safe, fast way to get a mix of junk, which is useful for leveling up your main character and your allies. Heck, you might even get lucky and get enough random items to craft a few things. But if speed is your game, and you want to complete the goddess's list like a loyal servant, you'll want to do things yourself.

New Game+


End game no longer returns you to the title screen. Instead, you'll be thrown back into your world, with your same character and party, but with a new, longer list of items to craft, allowing you to play through faster and unlock as much of the game as possible. Some features and menus are also only available after you beat the game at least once, so look forward to that too!

Overlay mini-map


By pressing B and C in a dungeon simultaneously, you can adjust the minimap's display mode to be overlaid or in the corner. You can adjust the overlay opacity in the settings menu, or even turn off the minimap all together if you want to be hard core. The dungeon introduction can also be turned off now, for those of you who just want to jump straight into killing stuff.

Mac OSX Support


Packages have been made to support OSX, however, as I do not have the equipment to test said packages, try them at your own risk. Virtually, they're the same as the linux builds, just with different .so files. LibGDX makes that really easy when it comes to desktop bundling, so it shouldn't be that much trouble. However, if there are any bugs that don't appear on other platforms, please report them indicating you're using the Mac build.

Backend Changes


LWJGL3 didn't appear to be the most stable platform to build against just yet, blocking out some people who used to be able to play the game. As such, I've rolled back to using the LWJGL2 backend of LibGDX.

Additionally, the JVM packaged with the game has been upgraded from Java7 to JRE8 thanks to Azul System's Zulu OpenJDK builds. This will give me more flexibility in the future with the code and features that are possible.

As always...


With any big change like this, expect some bugs and things needing polish (it wouldn't be Storymode without things being broken now would it). Hopefully there's no new conditions that cause crashing.

Also take note, with these new features, there's been enough breaking changes that old saves are not compatible.

Updated binaries will be rolling out shortly. Thanks for all your support!

Have fun grinding, and have fun breaking stuff!

Snazziness and Jazziness

Hi everyone, back for yet another update! Sorry for the long-ish period with no new content or word from me. Things have been a bit hectic, but hopefully what'll be dropping in the next day or two will have been worth the wait!

So let's talk about these changes

Snazziness



There's been some adjustments made to the rendering code so now the appearance of the game scales substantially better for more resolutions. Aspect Ratio is maintained, color filters are better managed, and oh my god the texture scaling, it's perfect. No more weird one pixel wrap around errors or dithering or proportion distortion.

Now, instead of scaling all elements and textures per actor, everything is rendered to a frame buffer with internal resolution, like is the native solution provided by frameworks like XNA, and the common technique used by other 2D game engines. The frame buffer is then and scaled appropriately to your decided resolution. This sacrifices sharpness slightly, but it improves overall quality ten-fold and does away with all previous texture errors associated with different resolutions. It also means I've restored manually resizable windows, because now no matter your resolution it won't look like absolute crap.

There's additional snazziness elsewhere too. Title sequence has a little bit of decoration added, and now when you enter a dungeon it'll tell you your location and the name of the song track that'll be playing in the background.

Jazziness



The chosen music of the game has always been a point of contention for players. There's only so much that can really be done with creative commons music while trying to not sound like every other low-budget game. At the same time, there's a feel and atmosphere that is familiar to the genre and is expected with the territory that needs to be respected.

As such, I've been looking into putting together more neutral soundtrack that should be less offensive to the general populous. This includes some more atmosphere and even jazzy/weather channel-like music for the main menu and more JRPG-ish music for dungeons and boss fights. And as always, everything is downsampled to at least try to give it a retro-vibe.

And if you're worrying if this is going to make the game feel even more generic, don't worry, because that's the point. StoryMode has always been a satirical homage to the roguelike and JRPG genres, so having a generic soundtrack is all the better towards making it what it's supposed to be.

If it turns out, however, that most people do not like the new music selection, I'll either revert the soundtrack changes, or I'll release the old pack as a free DLC pack allowing you to swap it in on-demand.

Anything else


There's the typical slew of bugfixes coming. Found some problems with input that should be fixed, and a game crashing bug when you craft the last item in your list. The settings pane now has a network configuration tab that allows you to set values such as your tombstone alias, daily dungeon url, and check what data you pull and send to daily dungeons and steam.

That's all I can think of off the top of my head.

Thanks again for purchasing and/or following Storymode's development and trying out the game. It always makes me happy when I check the daily dungeon server and see people's tombstones!

Settings and Stability

Patch has been put out featuring a new settings menu and a slew of bugfixes. Also added a few more tombstone phrases so you can laugh some more at people who died in the daily dungeons.

The new settings menu is a priliminary design and will be improved according to user feedback. Additional optional settings for the game have yet to find their way into the new interface, but that'll be adjusted. In the future there will be a networking setting that'll allow you to configure things such as your upstream connections to services like Steam and what you send to daily dungeon servers.

Color palettes have been moved into the settings pane instead of being a "hidden" feature along the number row. This means that the number row no longer changes the palette. Color palette settings are also now saved alongside every other setting, so when you start up the game again it'll be in the same palette that you last played in.

The general bugfixes include some odd ones with rather obscure execution requirements that'd cause crashing (one only happened if you were playing from save data instead of a new game), so overall the game should be more stable now.

Update to Daily Dungeons

Some reworking has been made to the daily dungeon system. Deaths are now tracked each day for every user who dies in the daily dungeon. When you load up the dungeon, you'll see tombstones on each floor indicating where someone else has died. These tombstones are non-blocking, so you can walk right on through them. Hovering your mouse over the tombstone will show you the name of the user and what they died against.

The daily dungeon script which you can host yourself has been updated to include all that's necessary for making a daily dungeon server. The script is a python flask application, but you're free to implement it in whatever language and framework you feel like using, as long as the responses are the same.

Because the daily dungeon application has changed, so has the server URL. If you weren't already using a custom daily dungeon server that you intend on updating yourself, you will have to revert your settings to the defaults in order to pick up the new url.

This update is a very basic update to the game to show off the new feature. Detail and polish will be made in later updates.

I've also updated the game's dependencies on LibGDX and complimentary libraries to the latest versions with this build. I'm still running on the LWJGL2 backend as long as the LWJGL3 one is still in development. Once it's marked stable I'll be looking into adopting it for improved support, stability, and performance.

My apologies for any game breaking bugs that are currently out there, I'm trying to fix them up as they appear. Remember, the more logs and reports the better, any bit helps to make a greater game!

Thank you

January Update - Fight Together

Hello again for yet another monthly update full of new features and bug fixes!

Continuing on with the party system introduced with the last update, I've gone ahead and done what I said I was planning to do: Redesign the Boss Fight combat system.

Boss Fight Redesign



I've already uploaded a screenshot to the store page that shows the new layout of things, but there's been some modifications to the way it's played.

One of the key aspects now is Dice roll persistence. When you or the boss defends, the rolled value persists on them until their next action. Any attack done against the opponent will act according to that stored value. If you roll the same value or less, your attack will do nothing, unless of course you do a manual attack.

Manual attacking, now called Braving, is the same as before where you have to time your hits to do any damage. To do any damage at all you'll need to match more of your hits than how many of the enemy's you missed.

For example: If you roll 4 and the enemy has a 3 roll on their defense, you'll have to time 4 of your hits and 3 of theres. If you match 3 of yours and 2 of theirs, you'll score 2 hits. If you match 2 of yours and 1 of theirs, your attack will be blocked. Matching all 3 of their hits will give you a clean shot at them.

Going on with dice persistence, when you attack your dice roll will not persist, leaving your defense wide open. This works both ways, where if the boss attacks its defense is left wide open too.

The AI is a bit more complex now, balancing who to attack and when to defend. It'll purposely attack allies who aren't defending, and it also has a slight preference to attack allies instead of the main character. Additionally, if you're holding "C" (default: Tab) when a party member becomes ready, they'll act according to AI as well that's teamwork oriented. So AI in boss combat is not just for the boss!

Stacking modifiers onto the boss is no longer a mechanic, as the assistance of party members should be more than enough to compensate for it. Sacrificing to heal is still available, though. It should be noted as since sacrificing still costs items in battle, the amount is still relative to how many times you sacrificed in your dungeon run. AI execution also will never sacrifice, so if you need to heal someone, you'll need to do it manually.

Other fixes


There were a few other bugs found throughout testing the new combat system. As such, returning to the dungeon after a boss fight should be working a-okay now. Additionally, on deeper dungeons where there's a 100% chance of encountering lore, you will now actually encounter lore. In fact, before this update it was mechanically impossible to see any of the game's lore without using the cheat code in debug mode, so sorry about that!

On top of that, I finally got around to fixing a logic bug with input, so now you can hold down a direction button to move in dungeons, instead of having to repeatedly click or press buttons. Feels good to have that back again, it's been almost a year since that was last possible.

Shareware/Demo version


Over on itch.io there's been a shareware version of the game available with limited features. A lot has happened in the steam version and I haven't gotten around to building a new version of the demo in quite some time. In order to encourage more people trying the game without having to buy it, the Demo will be available here on Steam as well, and it'll be updated to the latest build features.

The itch.io versions will also be updated soon, too, for people who enjoy getting games through that platform.

Thanks again for the feedback, bug reports, and supporting development with your purchase. Be sure to tell your friends, too, if you like the game. Enjoy the new features!

What's Christmas without a Party?

Hello everyone! Merry Christmas, or Merry Dies Natalis of Sol Invictus for you traditionalists, it's time to announce the latest new feature added just in time for the holidays!

This time I've added a new feature that will help StoryMode feel more like a traditional RPG and make the game a bit easier, if you become good at utilizing the strategy that is.

Introducing the Party System!


Expanding upon trading with enemies, now if you trade with an enemy successfully they'll join your party. You can have up to 4 allies in addition to your main character. By going into the assist menu, you can select which character to wander around as. Your party will consist of only the 4 strongest foes that you've befriended.

All characters have a shared inventory and shared equipment, but they all have their own stats and can become afflicted with their own set of ailments. Additionally, every enemy now has their own birthsign and job assigned to them, so when they join your party and switch to a different character you now have the opportunity to play the game differently.

When you sacrifice items you'll only heal your currently controlled character. The sacrifice requirement is also shared, so if you require a lot of healing, it might actually become more advantageous to just befriend more enemies because that will mean more total hp. Additionally, since the cost is shared, you might hit a point where it's cheaper to befriend enemies instead of sacrificing, so you need to consider that too.

When a character dies, you'll automatically be prompted to change to another living character. Your main character may never be removed from the party. Additionally, you can not revive your main character after he/she goes down, but you can still befriend other monsters with whoever you are guiding. You can think of it as if your squad is going through the dungeon dragging around and puppeteering your main character a la Weekend at Bernie's.

Other fixes


Weather systems can now be toggled in the settings pane as they were primarily for eye-candy. There's also some general code optimizations and cleanup as always, primarily done for my own benefit.

The party system was the primary update and was thrown together within the past 2 days. There's still plenty of room for improvements and rebalancing of it, which will be done according to user feedback and my own ideas. I'm going to be trying to implement the party support system within boss fights as well at a later date.

Thanks again for the feedback, bug reports, and supporting development with your purchase. Be sure to tell your friends, too, if you like the game. Enjoy the new features and enjoy the Steam Winter Sale!