Hello all!
I’m working on a fun little side project that I’d eventually like to give away to the community as a 3D endless runner game starter package. The camera view and game play are going to be similar to Temple Run, Pitfall (Android version,) and Subway Surfers. I’m trying to get some discussion going about the best practices when creating this type of game, but I’ve hit a couple of obstacles that I’d like to tackle without taking low quality shortcuts:
-
Should the character move through space or should the ground move underneath the character? In my prototype, I have the ground moving underneath the character so that he’s on a sort of randomly generated treadmill full of obstacles. It works fine, but maybe there are reasons to go the other route?
-
What is the best way to hide the horizon so that the player can’t see the level pieces “pop” into existence? This is my biggest trouble. I personally don’t like the depth fog method of hiding the horizon. Subway Surfers did it well, but I like the Pitfall and Temple Run 2 methods better. They use curves and hills to hide the level assembly that is happening in the background. I would love to hear how other Unity developers would tackle curved procedural level generation like this.
My first thought was to have a spline curve following the contours of the curved land pieces. Those spline curves could be used to snap the land pieces together when they are generated, but rotating them underneath the character using my “treadmill” method has proven to be a fairly difficult task.
I’ve found some other discussions that touch on endless runner type games and game development with Unity. However, none of these truly touch on what I’m trying to figure out:
- Endless Running Game Unity
- Subway Surfers Unity Development
- Generate Terrain Like Temple Run in Unity
- Minimal Unity Runner Game
- Basic Unity Endless Runner Template
- T-Split in Temple Run Style Game
- The Temple Run Development Story
Any thoughts, help or advice would be greatly appreciated! Thanks in advance for being polite.