An Endless Runner meets Lunar Lander - LLL is a procedurally generated exploration, simulation and resource management game.
Explore Endless Space Navigate the endless procedurally generated landscape. Every step of every run is different and unique. Powered by AI, the world adapts to always stay challenging to your skill level.
Collect All The Fuels Your rocket is able to burn many different liquid fuels, each with their own advantages and disadvantages. Soak them all up and use them to survive and explore. When your rocket is full, fly into deep space and find a space station to trade with.
Trade Fuel for Upgrades Fly high enough and you'll be accosted by a friendly space station. Sell your extra fuel to buy upgrades for your rocket. Is your engine too weak? Upgrade it into a supersonic jet. Are you exploding at the slightest bump? Strengthen that hull with a very fairly priced upgrade.
Two-Week Portfolio Prototype Disclaimer This game was developed as a prototype by one person in two weeks for portfolio content. As such, the game may have significant bugs and lack polish in some areas. That being said, the game is designed to reflect a professional standard of work and is published as a finished product.
For a more technical breakdown of this prototype, please continue reading.
Design Brief
The goal of this prototype was to achieve and demonstrate the following:A casual browser game based on the concept "An Endless Runner meets Lunar Lander".
Multi-platform compatibility of geometry shader effectsUse of Shader GraphUse of procedural generation with an additional logic layerLightweight level streaming
Level Streaming
Only a small chunk of terrain is ever generated at any given moment. Each chunk is designed, generated and rendered procedurally by a Terrain Streamer function as well as an added logic layer that responds to player skill level and play time.Between random fluctuations and course corrections, the Terrain Streamer will place premade Terrain Features such as mountains, valleys, craters, inclines and declines. The Terrain Streamer integrates each Terrain Feature while still fluctuating and balancing the terrain as usual.
Currently, these Terrain Features are hardcoded in script, but future versions could use Scriptable Objects, XML files or database entries for easier asset design. The Terrain Streamer also has the ability to add Prefabs to the Terrain Feature, allowing for more advanced features such as landing pads, mining spots and enemies, however these were mostly cut from this prototype due to time constraints.
The simple design of the terrain allows for easy procedural generation. Every mesh can be generated vertex by vertex at run-time with no significant impact on stream delay.
Resource Management
This prototype uses 5 different fuel types, each with a different thrust multiplier. Fuels can also trigger player effects and unlock abilities. For example the Blue fuel unlocks a shield when used, while the Green fuel restores the rocket's health. Each fuel type has a use in-game, for example the Red fuel is very powerful and allows the player to easily leave the surface and reach the in-game store, whereas the Black fuel is barely strong enough to keep the rocket afloat, allowing the player a controlled yet soft landing.
Multiple fuel types allows for Resource Management game design patterns, such as stash balancing and a marketplace. This prototype includes a basic store and a limited yet upgradeable stash capacity. In future versions, this could be expanded with more fuel types and multiple stores.
Adaptive Difficulty
The Terrain Streamer has an additional logic layer that is designed to keep the difficulty roughly optimal for fun. The Terrain Streamer Brain calculates the current difficulty of the game as well as the overall skill of the player, and attempts to balance and grow these two metrics evenly.
Using a Priorities list, the Terrain Streamer Brain is able to design the next Terrain Chunk intelligently. When the player is low on fuel, the terrain starts offering more resources. When the player has shown adept flying skills, more mountains and difficult Terrain Features are generated.
Upgrade Game Loop
If the player flies directly upwards, a satellite will catch their rocket and offer to trade. The player can sell fuel for credits, which can be used to upgrade their rocket. A simple Resource Management loop, but one that was important for this prototype to function.
With this upgrade loop, the game is elevated from a simple arcade-based coin-eater game to one that has a clear goal. It also allows the player to offset any difficulty spikes by purchasing better engines or a harder hull. Without this loop, this prototype and this game design overall is basically just a sandbox physics sim.
URP Multi-Platform Shader Graph Materials
The fuel tank of the rocket uses a combination of a "Half-Life Alyx"-style liquid shader and a candy cane stripe shader to produce a reactive, animated material that can be used on Desktop, Web and Mobile.
This prototype also uses a wireframe shader made using a combination of vertex position data generated at the design stage, and a Shader Graph material that creates geometry-dependent effects at runtime. This combination of baking and Shader Graph overcomes the lack of geometry shader functionality on WebGL and some Mobile platforms, giving the prototype multi-platform functionality.
Status | Released |
Platforms | HTML5 |
Rating | Rated 4.8 out of 5 stars (5 total ratings) |
Author | necropocene |
Genre | Interactive Fiction, Adventure |
Tags | 2D, LGBT, meta, Monsters, Short, sweet, trans-protagonist, Twine |