Hopeless Place – a Postmortem

Ever listen to a song that transports you to a different place? Hearing We Found Love by Rihanna takes me to a mystical place, full of light and sound. So I made a game about it.

Hopeless Place

Here’s the page with a link to the download.

The first thing I did was go through the lyrics. I was surprised to see that only the chorus and one verse could be easily adapted to a game. I took those lyrics, made each line into a gameplay element, and started programming.

What went well:

  • Entity-Component-System. I listened to a talk on YouTube about how to use databases in games. “If you don’t understand the data, you don’t understand the problem.” It made things so much more manageable by cutting down on classes and inheritance. I’m still trying to figure out how it can be applied to AI systems.
  • Scripting. I probably should’ve used a real scripting language, but instead I used libgdx’s actor action methods to get the job done. For my first time using scripts, it was easy to start and worked very well in my opinion.
  • Debug controller class again was critical in testing out different aspects of the program on the fly. It loaded scripts, reset animations, and quickly moved between levels. I had implemented one for Spirit-uality where it literally saved the game, since time was of the essence. In the end, I just commented out the line of code that added the debug controls to the game and it was ready for production.
  • Hit detection turned out to be simple. For Hopeless Place, I only needed very basic triggers, so I just programmed my own. I know it’s not efficient; I calculate all collisions twice a frame to check for old and new triggers. Turns out computers can handle lots of computations.
  • Finishing. On the subreddit /r/gamedev, users are always suggesting to finish your game before moving on to the next one. Otherwise, you’d never have anything to show to people. I took this to heart when I got thoughts of abandoning ship to start yet another project. While not everything I wanted made the final cut (I never added the ambient music I picked out, for example), the game is complete from the start menu to the final scene.

What could’ve been better:

  • Sprites. I got lazy at the end, and didn’t do a final pass for quality. Hell, I didn’t even replace the placeholder tree sprite! I don’t know if I was going for a top-down or 3/4 view or what. A graphics bible would’ve been helpful. The sprites were definitely not what I had in mind when I started this project (I imagined an FPS game).
  • Lighting. Placing lights close together made things super bright. I could never get the colors or distance where I wanted them. Instead, I took an artist’s approach and let the pieces fall where they may.
  • Data organization. A real database would’ve been amazing. Instead, I faked it by using HashMaps as two-column database tables, and implementing classes for more advanced tables. Then again, perhaps I should’ve used more of those kind of classes, not less.
  • Music. While boscaceoil helped transpose the sheet music into .wavs, the music is super simplistic. I’d still like a more fleshed out music system, but I got bored of programming this game before I could make one.

What was terrible

  • Gameplay and puzzle elements. The tree “puzzle” isn’t a puzzle. I imagined the final torch placement to be more of a puzzle than what it turned out to be. Maybe an action button would’ve helped, instead of just walking through things and having the game take care of itself.
  • The final product as a Video Game. You walk around until you can’t. It reminds me of Dear Esther, or Stanley Parable. At least you could interact with the world in Stanley. A few more days brainstorming a game people would want to play would’ve been helpful.

All in all, I’m glad it’s done, and while it isn’t the vision I had in my head, I learned a ton and the new tools and techniques really helped my game development skills.

Onwards and upwards!

 

Programs and resources used in the creation of Hopeless Place: