Here is a bit of writing I submitted to the EGC3:
Heart Stream Postmortem
Heart Stream did not start out as Heart Stream. It started out as a game titled “Magnetoball,” and the Visual Studio project still keeps that name. The initial concept was that the player controlled a ball rolling around the world, and he could point at a wall and activate a ‘magnet’ which would draw him toward that wall, allowing him to gain some leverage (there was no jumping). If I had time, I was going to allow the player to draw in objects and throw them back out as weapons. Thus, the player would try to avoid traps and enemies in a platformer-style game.
That idea didn’t work.
The major problem was that I couldn’t get the physics to feel right. I hacked at the simulation a bit and had the ball rolling around and colliding appropriately, but I couldn’t get the sense that this world was going to be interesting to navigate. I looked at that ball rolling around and simply dreaded what was going to be produced. So I decided to shift gears.
I wasn’t sure where to go from there, so I just started playing around with particles and masses. I intuitively derived the gravity formula (you’d be surprised how easy it is) and watched some things fly around the screen. I kept running the simulation, rearranging things and watching what happened, and then the idea for Heart Stream came to me.
The idea had quite a few evolutions to go before arriving at the final concept. Originally it was going to be a slower puzzle game – you would place things down before the simulation began and then kick the simulation into gear. Also I was going to include a lot more things to place down, such as walls or particle modifiers.
As development progressed, I still didn’t feel quite right. I wasn’t seeing how this would all come together, and I wasn’t sure if it would be any good. Two things changed that:
First, I discovered the wonderful filters the Gimp has to offer. I’m a horrible artist, but I think I managed to create a pretty nice space scene by using some of those filters. A nice polished look can do wonders for how you feel about a game.
Second, I started allowing the player to simply place the gravity bodies down and manipulate particles in real-time. Simply watching the particle interactions became fun in its own right – I wasted a lot of time just starting up the simulation and playing around.
So I simplified the concept a bit and made it more free-form while still maintaining its puzzle roots. I went on to finish up the programming and polish things up as well as I could, but I was running out of time and couldn’t make everything quite as shiny as I would have liked.
On the very last day, I managed to get some levels together and I created a simple music track. The levels went a long way toward making me feel more confident about the game. They made the game a lot more ‘alive.’ I wish the Gimp had a music filter, though, because my electric guitar talent isn’t so hot.
What Went Right:
If you look at the games I made without an artist, you notice a common trend – either the art is very bad or I use simple vector shapes. The reason for this is that my ability to draw is only marginally better than a small dog’s. I managed to cheat a bit with The Duelist by taking pictures of people, but even that didn’t look great. The inspiration to throw together a dating simulation and take pictures again was there (I nearly considered just reusing The Duelist’s images), but I stayed strong.
This game nearly used vector art, but one night I was playing around with the Gimp and opened the Filters menu. Put some noise on a sphere and colorized it, and I actually liked what I saw. Played around with a few of the other filters, did some nifty color effects, and before I knew it I had graphics. Bless Kevin Perlin and his noise function.
Games involving physics aren’t the easiest to develop. My original idea was very kinematics based, and although it used a lot of simplifications (was only 2D, simple line segment collision, etc), it was still complicated enough to burn a bit of time.
When you get into the effect that gravity has on objects in space, though, things are a whole lot simpler. I managed to derive the entire gravity equation in its entirety before Googling to check the accuracy of my simulation (I’m a little ashamed I didn’t just remember the equation, but in my defense it’s been four years since I took a physics course).
Level design also became significantly easier since I no longer had to arrange lines and complicated geometry and work out jumping distances, etc. I could just throw some mass bodies into space and setup some particle generators and play the level, constantly tweaking positions/masses until I was satisfied with the difficulty.
The game is all about the puzzles and playing around with the gravity. Nothing was really ‘alive’ during most of the development, and this caused a great deal of unease right up until the last day. It wasn’t until I threw in the levels that the game clicked with me and I enjoyed it. I would encourage future developers to constantly be creating real levels so that you can get a sense of how the game is actually going to play.
What Went Wrong:
I struggled with getting out any idea at all, and once that idea was conceived I had to do a little bit of research to get it working right. And then when it didn’t work, I had to struggle with a new idea. I probably wasted a solid week going in the wrong direction.
Even after I had my idea, I still felt a little weary right up until I got the levels integrated. In retrospect, I should’ve made those sooner.
Combine that with a full school schedule, a teaching assistantship position, and doing Master’s research, and you can see my schedule could be a little hectic some nights. I probably shouldn’t have been developing the game at all, but I managed to juggle some obligations and push some things off so that I could produce something.
I didn’t allot myself a lot of time to do sound because I knew I wasn’t capable of producing anything brilliant (I’m just not a good musician). The quality of the sound illustrates this. I tried to keep things simple and minimalistic to at least not hurt the game, and hopefully to that end I succeeded.
Despite how I felt throughout the entire development, I’m relatively pleased with the game. I hope you will enjoy it. Feel free to send any questions/comments to email@example.com.