temporal survival icon Video Game: Temporal Survival

Download

End User License Agreement

This game is © 2025 David Hammerle. All Rights Reserved. You are granted permission to download and play for non-commercial, personal use only. No redistribution or commercial exploitation is permitted. For any other use, please contact davehammerlecoder@gmail.com.

Summary

I was actively working on this game from October 2023 through March 2024. I put ~520 hours into it, the equivalent of about 3 1/4 months of full-time work. Then I had a conversation with a friend about how the indie video game bubble is currently in the process of bursting because the market is saturated. That meant it was highly unlikely that I could make any decent amount of money from an indie video game. So I stopped working on this game and started looking into other ways of making money. But, you can play the game in its incomplete form, if you want. It's a twin stick shooter with a rewind feature, so when the player dies, the player can rewind to back before the player died. There is also a feature allowing the player to jump back in time, but it's buggy, especially if the player tries to rewind again after jumping back in time. This game is the spiritual successor to my other game, Rewind Blaster, so they have a lot of similar features.

How to Run the Game

Download the .zip file from here and unzip it to a folder. Run the file TemporalSurvival.exe in that folder and, when you are done, exit the game by pressing ALT F4. There is no other way to exit the game.

How to Play the Game

The objective of the game is to kill as many enemies as possible, and pick up as many of the little blue boxes that they drop as possible before you die for the last time. If you die, you will have the option of rewinding back to before you died, as long as you have accumulated at least 1 rewind point. Each time you rewind, your health will be healed back to full. There is no fire button. Your ship will fire continuously. You just control your ship's movement and facing.


Your ship automatically cycles through 6 different weapons:
  • Spreadshot: Fires three shots in a 60 degree spread.
  • Laser: Fires a laser that hits immediately, even at long range.
  • Vulcan: Fires a quick barrage of shots in a 30 degree spread.
  • Rocket: Fires a single rocket that deals damage inside a radius on impact.
  • Seeker: Fires shots that seek towards a nearby enemy.
  • Chain Lightning: Fires lightning that will chain to enemies near the target.
You will encounter a few different types of enemies:
  • Rippers: Red enemies with a lot of health, that only damage the player's ship on contact.
  • Shooters: Green enemies that fire shots towards the player's ship and have moderate health.
  • Spreadshooters: Blue enemies that fire shots in all directions and have very little health.
  • Healers: White and green enemies that heal other nearby enemies and have moderate health.
  • Producers: Large purple enemies that produce additional enemies if left alive. Produced enemies don't drop pickups, so can't be farmed.

There are a few cheat keys you can use if you want. If you want to test out the feature that allows you to jump back in time, you can press 'J' while you are rewinding and your ship will jump back to that point in time. However, this feature is still pretty buggy, so the game is likely to crash or behave incorrectly. Bugs especially tend to happen when rewinding after having jumped back in time. If you want to rewind, but you haven't died yet, or you don't have any rewind points left, you can press 'R' to pause and switch into rewind mode.

How I Made the Game

I made this game using the Unity Game Engine and a bunch of art assets from the Unity Asset Store. That's why it actually looks decent, and it isn't just programmer art and lines and circles. However, the Unity Engine was a lot more difficult to work with than the Java 2D graphics API that I used for the other games that I have made.

Since I was using C# as the programming language, I had to implement mostly my own object pooling, which was worth it for the performance gains, but seems like it should have just been built into the Unity Engine. And the fact that the game's main feature was the ability to rewind the game made the Unity Engine a lot more difficult to work with. Implementing the rewind feature required me to get a pretty solid understanding of Unity's timing. Some things needed to be handled in fixed frames, which triggered every certain span of game time, and some things needed to be handled in the normal frame updates, which trigger for every frame that is rendered to the screen. Figuring out which should be rendered where could be difficult, and making a mistake could mean that something renders just a few pixels over from where it should be on the screen. I also set up the rewind feature to only record every 5th fixed frame and then interpolate between those frames in order to reduce memory consumption, further increasing the complexity of the source code, possibly more than it was worth. The rewind functionality that I ended up with is probably more comprehensive than any rewind asset on the Unity Asset Store, and there are a bunch of them.

Unity's particle engine was also difficult to work with. There wasn't really an easy way to make the particle system play backwards, frame by frame, or restart from a specific number of seconds through. And I sometimes bought particle effects off the asset store, but had to adjust them to work from a top-down perspective instead of a side view perspective, which was awkward.

It kind of felt like Unity was more designed for hobbyists and college students than someone trying to create a finished, polished product. However, all the other options didn't seem like they would be any better, and, if nothing else, the Unity Asset Store has a really impressive variety of art assets on it, and they are so much cheaper than hiring an artist. I was considering using Godot for this game, because I've heard it is easy to work with, but I wasn't sure I could use assets from the Unity Asset Store in Godot and I thought it might not be flexible enough to let me implement the rewind feature and the other time travel features that I was planning to include in the game.