Loading
"Ring Force" is one of my most exciting and ambitious projects to date. It originally began as a simple endless runner where players controlled a cube, moving side to side to dodge walls. This early version was based on a tutorial I followed to create a basic game, and as one of my first projects, I was quite proud of it.
Eight years later, I stumbled upon the old project files and decided to revamp it with my current knowledge of game development. The game has now evolved into an immersive experience where players pilot a spaceship through a planet’s rings, skillfully dodging asteroids and lasers. Revisiting and transforming this project has been a rewarding journey, highlighting my growth and skills in game development.
The core gameplay revolves around an endless mode where players navigate a constantly evolving environment filled with hazards. I created a platform prefab with obstacle spawn points to implement the endless game mode. As the player progresses, each platform prefab has a trigger in the middle that spawns a new platform while removing old ones behind the player, keeping the level uncluttered and efficient.
Each platform consists of 4-5 rows, each with five spawn points for walls or obstacles. The number of obstacles spawned varies depending on the player's progress, ranging from 1 to 4. This system ensures there is always a path for the player to pass through. Once the player reaches the threshold to allow spawning four obstacles, a system randomly spawns 2-4 obstacles instead of always spawning four, adding more gameplay variety.
These dynamic platforms and randomly generated obstacles work together to create a truly endless game mode with engaging randomization.
I introduced power-ups to assist the player in navigating the increasingly challenging environment. Each power-up has a chance to randomly spawn at a platform's obstacle spawn point instead of a wall. To maintain balance and prevent an excess of power-ups, only one power-up can spawn per platform.
Shield: Grants the player temporary protection. In the updated version, the shield is represented by a transparent, blue-tinted version of the ship model. It absorbs one hit and deflects the obstacle into orbit.
Bomb: Instantly clears the next few basic obstacles in the player's path, providing a brief respite from the constant challenges.
Over time, I refined and balanced these power-ups to fit the new mechanics introduced in the more advanced versions of the game.
In the second iteration, I expanded on the core mechanics by adopting a space theme. The player model transformed into a spaceship, and the setting shifted to a planet's rings filled with orbiting meteorites. I also introduced vertical movement alongside the existing horizontal controls, enhancing the gameplay depth.
With the new movement capabilities, I removed the jump power-up as it became redundant. Instead, I focused on designing new obstacle types to provide more diverse challenges:
Basic Obstacles: Transformed from cube walls into red meteorites that align with the space theme. These obstacles feature randomized rotations for increased visual variety.
Magnetic Rocks: Pairs of rocks that attract each other when the player approaches, narrowing the available path.
Mines: Explosive obstacles that detonate in a 3x3 area if the player comes too close.
Laser Line Enemy: Fires a continuous laser beam across a specific row or column, restricting the player’s movement options.
These new obstacles, combined with enhanced movement, significantly increased the game's complexity and engagement.
The score system evolved alongside the gameplay. In the original version, the score was based on the player's 'z' position, which did not account for player speed or power-up effects. To address this, I developed a dynamic scoring algorithm:
Score Formula:
score =
(
baseScore +
(
distanceMultiplier *
(
log(
distanceTraveled + 1
)
)
)
) *
Time.deltaTime *
scoreMultiplier
Breakdown:
1. baseScore: Ensures a consistent score increase.
2. distanceMultiplier: Scales the score based on distance traveled.
3. log(distanceTraveled + 1): Normalizes score growth, preventing runaway inflation.
4. Time.deltaTime: Ensures frame-rate independence.
5. scoreMultiplier: Allows for dynamic score adjustments via power-ups.
This updated system accurately reflects player performance while allowing flexibility for future mechanics.
I used GitHub for version control throughout the development of "Ring Force." This allowed me to track changes, experiment with new features, and quickly revert if necessary. Managing the repository independently gave me full control over the development cycle, ensuring efficient backups and version tracking.
For documentation, I maintained thorough technical notes, including design decisions, system overviews, and formulas. This helped streamline the development process and provided a clear roadmap as the project evolved.
You can download and play "Ring Force" on GitHub and experience the evolution from a simple endless runner to an immersive space adventure.
I have ambitious plans to continue expanding "Ring Force." Some upcoming features include:
Enemies: Introduce aggressive ships that attack the player, adding an extra layer of challenge.
Player Attacks: Equip the player with offensive capabilities like lasers and projectiles.
More Power-Ups: Implement new power-ups, including a score multiplier and time-slow effect.
Ship Customization: Allow players to personalize their spaceship's appearance and functionality.
Art Style Evolution: Explore a major overhaul of the game's visuals to keep the experience fresh and engaging.