In Vivo

An adventure puzzle game with unlimited planning time, but limited execution time.

This past week has been a busy one. I was hoping to have In Vivo available for purchase by the 12th. The bad news is that doesn’t look like it’s going to happen. The good news is that the game is actually 100% finished with development. I still have a bit of testing to do, and some marketing materials to create, but the game is done being developed. The rest of the work shouldn’t take more than a night, but then I still have to submit the game to the various distribution platforms that I want to put the game on and wait to hear back. I’ll be honest in saying that I have no clue how long that will take, but I’m optimistic that it won’t take too long. So while we all wait, let me regale you with a quick look back at this project, and some details about what went into this hectic week.

Setting a deadline

When I first started this project back in September, I gave myself a very short deadline. I thought I could take a 48-hour game jam game and turn it into something commercially viable within a month. Are we all done laughing now? Ok good, moving on. I figured that with the core prototype finished, it shouldn’t take very long to finish the game. All I had to do was add a bit more content, one or two more gameplay features, and polish everything up. I didn’t finish even one of those things within a month, and looking back I don’t know how I ever thought I could. Part of the reason behind the deadline I set was because I was moving across an ocean at the end of October, and I knew that if I wasn’t finished before the chaos of that set in, I wouldn’t likely get a chance to really dive into it until December. While that was true, and I did have almost a full two months where I didn’t work on it at all, in my head I honestly believed that I could deliver the features that I wanted to in that time frame.

How the game originally looked. No animations, just the player sliding around. It was pretty awful, really.

How the game originally looked. No animations, just the player sliding around. It was pretty awful, really. Why did I think I could turn this into a real game so quickly?

Deadlines are good. When used properly, they are an awesome tool to help get something done and refine the design of your product to make it as focused as possible. What I did was not a proper use at all. I made almost no compromises with what I wanted the game to have, and I didn’t make a realistic estimate of how long it was going to take me to create that product. I just threw ideas on the page and picked a random date on the calendar. It’s no wonder I didn’t make that deadline. When I came back to the project after getting settled in at the new house, I made it a personal goal to get the game released before April. This decision was much less arbitrary; I actually took estimates of how long various parts of the game had taken me, how much was left to do, and accounted for time lost for things like me having no idea how to record sound effects. As it got close to release, I got excited and jumped the gun. I thought I would be done by the 12th, and it looks like a bit of crunch this past weekend made that possible, but having a finished product and being able to actually sell that product are not the same milestone. So much of making an indie game has absolutely nothing to with the game itself.

Oh how far we have come

I feel like I’ve been doing a pretty good job for the past couple of months in sticking to a good schedule with this project. I’m a programmer by trade, and since agile is pretty popular in programming circles right now, I decided to try and adapt some of those principles to my game. The most important and rewarding of those was the time boxing. Setting up a weekly deadline helped me focus on what was important and deliver something playable on a consistent basis. It was an amazing feeling to know that at any given time, whomever I was talking to and whatever the circumstance was, I could point to a link on my website and let people try a functioning version of the game. Motivation went through the roof with that; it stopped feeling like I was alone in my office slaving away at something, and more like I was courting my potential customers. It also got me more feedback than I ever could have hoped for if I had waited to deliver something closer to the end product.

Fitting that the room that started it all would make it into the final release in some form.

I know this image was in last week’s post, but it really shows how far the project has come to see this right after seeing the original. Plus, it’s my blog, I do what I want.

It’s a good thing, too, because this game was not fun. I’m not being self deprecating here; the interface was clunky, the controls were awkward, and the play was punishingly difficult. Having the ability to take that feedback, iterate on it for a week, and present the changes to an audience really helped me refine the product. I would have loved to have more feedback, or even the same people making comments from week to week, but without the comments I got, I know this game would be a hot mess right now.

Chaos ensues

Last Monday, with the March 12th deadline fast approaching, I set myself into a crunch period, of sorts. I had a lot to get done just to finish the game in that time, and I wasn’t sure if I could really do it. The core mechanics have been done for some time now, and these final weeks have been focused almost entirely on content, with the occasional tweak or bug fix. Unfortunately for me, I am awful at content generation. I spent the first several years of my hobby time creating engines. My code is riddled with small, pointless optimizations using things like bit-wise operations, and every file format that this code creates is entirely custom and written at the byte level. I’m sure JSON or something else would have been fine, but I do these kinds of things without even thinking about it. Designing a level though? That’s much more difficult.

I’ve known for a couple of weeks now that I was going to need two maps. One for the demo, based on the layout of the original map in the ludum dare version of the game, and one for the commercial product. The map for the demo was relatively easy, since I already had a structure to base things off of, and it is pretty small. The main map is roughly four times the size of the demo map, and it has a lot more going on. The demo map only took me a few days to finish, though it had been started and significant work had already been done on it. I really had no idea how long the full map was going to take. I cleared my calender for the entire week and just tore into it. While I’m a bit exhausted from the lack of sleep and the hour of my life that daylight savings stole from me, I think it was extremely productive.

Besides, what good are my level designs if the players can just move things around as they see fit?

Besides, what good are my level designs if the players can just move things around as they see fit?

A different approach

One of the key goals I had for this game was to make sure that every puzzle had multiple solutions. In the ludum dare version, many people complained that they would never have figured out how to beat the game because some of the steps made no sense to them. Certain tools could only be used to interact with certain objects, it was all very reminiscent of the old Sierra adventure games. With what I have now, there are simply a handful of tools at your disposal, and a map in front of you. I made sure that each goal can be achieved in at least two different ways, and in many cases that number jumps up to five or more.

Making that all work from a mechanics perspective was easy. I broke down each tool into a set of traits, and tagged each object with how it reacts to each trait. From a design perspective, making sure that the tools are available where the player will need them, and that each upgrade is sitting behind a series of obstacles that can all be bypassed in multiple ways was a nightmare. In some of the earlier puzzles, this took some serious tweaking to make sure it was possible with the tools the player had at the time. I was surprised, however, at how much easier that got as I moved to the later parts of the map. Once you have the ability to consistently dodge the guards and create distractions, almost any puzzle can be approached from at least three angles.

One of the primary functions of the living area of the ship is providing players with alternate means of acquiring the necessary keys to proceed. Plus drugs.

One of the primary functions of the living area of the ship is providing players with alternate means of acquiring the necessary keys to proceed. Plus drugs.

In the end, I’m pretty happy with the map I have. I’m sure more playtesting would make it better, and I’m almost 100% positive that it will get ripped apart if it ever gets reviewed. None of that matters though, because I have taken a game from concept to market-ready product for the first time in my life, after years of dabbling and making unfinished prototypes. No more will I have to try and make excuses when people ask to see some of the games I’ve worked on. I’ll just point them right here. Now all I have to do is figure out how the hell to actually get this thing into a store.

It’s finally here, the last freely available update to the game before the commercial launch. This will be a short article with a bit of a different format, focused mostly on the demo and less on the happenings of the past week. It seems appropriate to switch focus a bit here.

Fitting that the room that started it all would make it into the final release in some form.

Fitting that the room that started it all would make it into the final release in some form.

Why a demo?

I’ve been releasing updates pretty consistently since the game entered beta, and sporadically before that. I’m not shy about sharing my work to the public, but I am attempting to actually sell this game. At some point I was going to have to stop releasing everything for free and start working on the stuff that would be exclusively part of the commercial version. I hit that point last week, but I still wanted to get one last update out there. I also knew that I would need something going forward for people to play with that I could hand out for free without having to worry about potential sales. It’s a fine line to tread and I have absolutely no idea if it will work the way I want it to, but it seems like a good idea.

This room is tucked away in a corner behind a tricky door to get past. I wish there was a better reward than posters, but there isn't.

This room is tucked away in a corner behind a tricky door to get past. I wish there was a better reward than posters, but there isn’t.

So how is it different?

The demo for the game has a modified map that shows off the different aspects of the game in a much shorter fashion. One of the things I struggled with on this was the fact that the demo map is actually completely unique. It exists nowhere in the commercial version of the game, and it never will. I was hesitant to do this because it seems a bit disingenuous. If you enjoy the demo, the full game might be too big and confusing for you, and conversely if you feel cramped by the demo, the full game might be perfect for you, but you’d never know. I think I made the right decision here, because with the full-sized map it would take far too long to actually get through and find all of the parts of the game that I wanted to show off. At that point you are basically just playing the full version of the game anyway.

 

What can we expect?

Where the aliens sleep, pass time between guard shifts, and shoot at the idiot player who wanders in.

Where the aliens sleep, pass time between guard shifts, and shoot at the idiot player who wanders in.

The demo has all of the main features of the game. Seven of the eleven upgrades are on the map that you can pick up and use. There are a few aliens scattered about to interact with, and there are plenty of alien documents to read through. If you know exactly where to go, you can beat the demo in just a few minutes, but the exploration and puzzle solving make that a much longer experience. I would expect around an hour to find a way to beat the game, maybe 3-4 hours if you want to try and find everything. There is plenty of map to explore, plenty of strategies to try, and a lot of the core mechanic of the game, spiraling out to greater distances as you upgrade your character and learn how to navigate the alien ship. While the progress won’t transfer between the demo and the full version, and the experiences will be unique, it’s a safe bet that if you like the demo, you will like the full version, and you won’t spoil the story or ruin anything by playing the demo first.

The deck of the ship on the demo map. It's pretty cozy, though the walls are a bit bare.

The deck of the ship on the demo map. It’s pretty cozy, though the walls are a bit bare.

If you are interested, check out the demo right here, and let me know what you think.

Download the In Vivo demo

The game is now at the point where the only difference between the final commercial release and the demo that will accompany it is the content. I’ve spent the early parts of this week working on finishing up the last of the sound effects and various bug fixes, and the later parts on level design. Since I’m working on polishing up the final demo for release, there will be no beta update this week. I wanted to put the demo out today, but I wasn’t able to complete everything in time. Without further ado, here’s the nitty-gritty details on what’s happened in In Vivo this week.

Hitting those hundred percents

My checklist of things to do for this game is getting very small. This week, sound finally got its 100% completion check mark. Every sound effect that is planned to go into the game, is in the game, and is properly triggering. There may be changes, for instance I was considering adding in different alien noises for different types of alarms, and those sounds are in the game currently, but one class of those sounds is only used in cutscenes. I still consider these to be 100% complete, since the game can ship without the changes, and they aren’t adding anything new to the game. The introductory cutscenes are all finished, with the sounds loaded into them, and the only changes to be made there are dependent on the map being finished to ensure the aliens continue to path correctly. All said, there’s not a whole lot left to add besides the level content.

The psionics lab, part of the new content that has to be added still. Ignore the blood trail, I just forgot to wire up the door.

The psionics lab, part of the new content that has to be added still. Ignore the blood trail, I just forgot to wire up the door.

The background music for the game was finished a while ago, but in writing out the planned end-game cutscenes I thought about potentially recording an additional song to play during that as well. In my head it will be every bit as good and catchy as the portal song, but I know that won’t be the case in reality. I may give it a go if I have extra time, but it’s considered non-essential, and hitting that March 12th release date is more important. As the project slowly heads toward its close, I’m also trying to take stock of what went right and what didn’t, and I’m really not fond of how I left the level design until the very end. More details on that decision and why I now hate it will be available in the post mortem that will follow the release.

A bug in every garage

The sound was a big win for me, since this is the first time I’ve ever made a game that had a complete score and set of sound effects. It’s not that I’ve not made well-polished games in the past, but I rarely listen to a game’s audio, so it’s never been a priority for me. After finishing the sound effects, I decided to tackle my last few remaining bugs and usability updates. It’s amazing how I managed to get the game this far without having an interface that was equipped with usability standards that were established over 20 years. Finally, the game makes continue the default option when you have a saved game, and you can exit to the main menu from within the game’s pause menu. Those were both easy fixes, and I have no idea why I waited so long to do them.

This shouldn't have to be a screenshot, I'm a little embarrassed it took this long.

This shouldn’t have to be a screenshot, I’m a little embarrassed it took this long.

The game isn’t quite free of all known defects, an issue I hope to correct before launch. The aliens still let the player run past in certain circumstances, and their ability to search for the player causes some severe latency if their range isn’t kept small. The left and right arrow keys don’t work when navigating the menus, and the contextual key replacement doesn’t put in the icons for the controller buttons if you have one plugged in. These are all small issues that I wouldn’t delay the release for, but the list has grown quite small and I’m pretty happy with the overall level of quality at this point.

Finding a place for everything

At this point, the only thing standing between now and the final release of the game is the map. There are a few cutscenes for the ending that still have to be actually scripted out, but I can’t do that just yet because I don’t know the exact layout of the area where that ending scene will take place. Designing the level for this game is actually much more difficult than I originally thought it would be. When I made the original 48-hour game jam entry that inspired this game, the level was crammed in at the last minute and it didn’t take me very long to throw together. I thought that making a map 4x that area would simply take 4x as long. If I hadn’t added so many features, that may have been true, but it’s nowhere near the case now.

The telekinesis lab, the other of the two laboratories in the neurology department. This time I made it there without setting off the alarm. Progress!

The telekinesis lab, the other of the two laboratories in the neurology department. This time I made it there without setting off the alarm. Progress!

I want the game to be flexible. If a player can think up a way to use the tools in the game to achieve something, I don’t want to block that with arbitrary restrictions. There are keys to every door that blocks an upgrade, but those are all tied to the power grid somehow, or have a grate that you can use to bypass the door. If you go out of order and get the teleportation upgrade early, you can skip a majority of the puzzles by just teleporting through the laser grids. I’m designing the level to have a primary intended path, but I want to make sure I don’t limit the game to just that path. With all of these factors, and the addition of things like the power grid, proper lighting and the alien presence, there’s a lot that goes into each room. I spent a good few hours trying to flesh out the neurology lab, and while I’m pretty pleased with how it has turned out, it took me much longer than I anticipated.

I’ve decided to take the initial map that was in the game jam version of the game and clean it up for the game’s demo. This will mean that the demo will have a completely different and unrelated map from the real game. Part of me likes this idea, as it means that even if you play the demo, the game will be a fresh experience for you. Part of me worries that people will feel slighted if they don’t get the demo map in the real game, or that the demo level will be of higher quality and dissuade people from buying the full version. I’m trying to put all of that aside and worry about actually finishing both levels and getting the game to a good state, but it’s hard to do. At this point I’m pretty pleased with all of the level work I’ve done so far, so hopefully a full focus on that in the coming week will put those fears to rest.

Most of the focus this week was on fixing outstanding issues and trying to add more polish to the game. Sound effects were the other major part of the focus from this past week, and I spent a bit of time improving the cut scenes used in the intro and title sequences. I’m nearing the point where I have but a few more sound effects to create and implement, and a bit of tweaking left on the title sequence before the beta becomes the demo. I may tweak the map a bit and add a few messages to tell the player about some of the less-obvious controls, but those are minor changes.

Squashing bugs like a boss

One of the last things for any project is the hunt for bugs in the code. I haven’t spent a ton of time testing this game, since I’m doing 100% of everything all on my own, most things get less time than they really need. As I test other features of the game, I keep a log of all of the issues that I encounter and unless they are game-breaking, I file them away for later. Later, it seems, finally came. There are three known issues left on my list that are actual bugs, and it’s a pretty good feeling. These three are a bit more involved to deal with, so they got left out for this week.

Bleeding purple blood? Check. Timer working above 30 seconds? Check. Clean getaway? Aw nuts.

Bleeding purple blood? Check. Timer working above 30 seconds? Check. Clean getaway? Aw nuts.

As the game nears release, I want to make sure I have a viable product; nobody wants to buy a game full of crashes and errors. Being an independent entity, I want to make sure that I don’t make my first impression in the commercial sector since there’s already a bit of a stigma to overcome. Quality control is hard, and one of the many reasons I’ve been pushing updates out regularly is to try and get as much feedback and testing as possible out of this community. You guys are awesome and I couldn’t do it without you.

Everything makes noise

I’ve talked about what a difference sound effects make before, and it still amazes me every time I experience it. Parts of my game that felt weak or uninteresting can be made awesome with just a small sound file. One of the best examples is bashing in glass fixtures. Before, this was somewhat lackluster. Most of the glass graphics are hard to see when you are in a rush, and on the whole it was an underwhelming experience. Since fixing the bug that was preventing aliens from responding to the sound of it, and adding in an actual sound effect for it, it has really become so much stronger of an experience.

I really like the shattering glass sound effect. Don't be surprised if there's a disproportionate number of screenshots involving a hammer from here on out.

I really like the shattering glass sound effect. Don’t be surprised if there’s a disproportionate number of screenshots involving a hammer from here on out.

I really had a lot of fun working on making the sound effects this week. The first go at it, I focused on the things that I could do easily, and just got them out of the way as quickly as possible. For this second bout, I had harder sounds to create, so I enlisted some help. I made a list of all of the sounds that I needed to represent, and my wife and I went around the house clinking, tapping, and rustling everything we could to try and get the right noises. My favorite was how we did the glass sound effect, by taking a baking sheet, filling it with water and freezing it. This gave us a nice sheet of ice, and we smacked it with a hammer and recorded the sound. I think it came out really nice.

It all makes sense now

The last stretch of the week was finishing up the introductory cut scenes that explain the premise of the game. I think the first scene does a sufficient job of explaining that the player is being abducted. It doesn’t have the flair, the bells and whistles that I would like if I had the money to contract it out, but it gets the point across. The 30 seconds that follow give the player a bit of freedom, but you can’t really actually do anything. I went with no music or even ambient noise here, other than the player’s footsteps. After the player passes out, the aliens whisk him away and take him to the airlock to shoot him out into space.

The player being abducted from his bed. It's a short scene, but I didn't think the ESRB would appreciate the probing that comes next.

The player being abducted from his bed. It’s a short scene, but I didn’t think the ESRB would appreciate the probing that comes next.

The second scene still needs some work. I don’t think it gets the point across at all. It shows the player that something happens after he passes out each time, but I don’t think it gets across that he’s being killed each time. I think fixing some of the in-scene pathing issues and adding a nice airlock door sound, followed by a rushing noise might do the trick, but I ran out of time to try and get that in this week.

It’s been a busy week for me. I’m hoping that by next week I will have the final demo version of the game, and then the release is only some map design away. I’ve set a tentative date of March 12th, which should give me plenty of time to finish and get the game onto the stores and other release platforms that I’m targeting. Anyway, here’s a new beta download, enjoy.

Download Beta.7

In the past week I’ve been focused on finished up the final pieces of the game content to turn it from a fancy engine into a real game. There were a few issues with the sound system that needed ironing out and the cutscenes that explain the story and premise hadn’t even been touched. In an effort to turn the beta into what will eventually become the demo of the commercial release, I want to get at least some of all of the pieces of the game up and running.

After the first run, a cutscene shows what happens to the player in between runs.

After the first run, a cutscene shows what happens to the player in between runs.

Fixing the Glitch

The first thing on the list for this week was to finish the fixes to the audio system from last week. In order to make important things like chronostasis and pause work with the audio, I had to update the engine that my game runs on. Luckily that transition went extremely smoothly. The new engine only caused four immediate errors, and once those were resolved the audio issues vanished. There are still a few sound effects that need to be created, but the system works in all of the cases that I tested, so I was ready to move on to the next piece.

Before moving on though, there were some other errors from updating the engine that needed to be resolved. It seems that the guys over at LibGDX really ramped up their handling of JSON files, but unfortunately the way it was handled before masked the issues that these changes caused. It was really a mess before, with everything having to be type checked and cast from objects, and the new system handles things very well, with special JSON objects and functions to retrieve children as certain types. Instead of causing syntax errors though, these changes just meant that all of the old JSON code silently stopped working. After certain features simply stopped working, and the cause was isolated, all was well and the game was back up and running.

Setting the Stage

The airlock is the perfect place for disposing of spent clones.

The airlock is the perfect place for disposing of spent clones.

After the sound issues were resolved, it was time to take on cutscenes. This was something that I had never attempted before, so I was curious to see how this would play out. In theory it seemed simple, some controller that runs a timer to hand out events as they come in, and a set of classes to execute each of the events in the scene. It turned out to be exactly as simple as I thought it was, which is always nice. The scenes are loaded in as a collection of scripted events, with a timer telling them when to start and how long to run. Each event is tied to an object that takes the JSON data and executes that logic on whatever is indicated in the loaded data. A few issues with the scripted events crept up due to bad copying and pasting, but once I got past that it was smooth sailing.

With the engine in place, it was time to try and actually script a scene. It works out pretty well, and I have what will likely end up as the final version, sans sound effects, of the second scene in place in the new beta download out this week. The scene shows the player’s body being dragged into the ship’s airlock after his first run, which should give the players a sense of what is happening between runs and why everything gets reset. It was pretty easy, though a bit tedious, to script out and the actual data file that holds the scene’s data is only a few kilobytes. I need to finish off the map of the player’s house in order to script the first scene, but I have high hopes that it will go just as smooth as everything else.

With all of the changes made this week, the game is extremely close to being done with the open beta period. Once the remaining introductory cutscene is scripted and it’s map is finished, and a few more of the sound effects are in place, I will package that up as the demo of the commercial game and sadly there will be no more updates posted for free. The good news is that means the commercial release is not far off.

Download Beta.6