Inspiration

This project was largely inspired by the 2024 Paris Olympics. Upon seeing the performances of various track and field athletes, I was moved by the amount of work they put in to shave off a few milliseconds of time on their runs. I wanted to capture the idea of being put into a difficult race and struggling against your competitors (quite literally as the opponents push you in the game).

Also being a huge fan of Rick Riordan, I wanted to bring visualization to the Greek gods in his books.

What it does

The game allows the player to race against the Greek gods on a 5-part track. Each part is meant to have a unique shape, layout, and difficulty. For instance, the yellow track contains moving metallic obstacles which were meant to symbolize Hephaestus's machinery. The game allows the player to challenge themselves to balance on a track that moves (Dionysus's nausea) and traverse a maze (built for Athena). The game is meant to entertain with sections representative of the long jump (lava blocks), high jump (slime blocks), and diving (lava hoops) from the Olympics.

How I built it

Using what I had learned from BornCG's Godot tutorials, I utilized almost every Node that the gaming engine offered. I was especially fond of the Path3D Node, which allows for the creation of complex, twisting shapes that can be used as tracks. Furthermore, I really liked the way the Godot scenes were OOP-oriented and I could make reusable objects such as speed-boost-rings and slime-block-jumps. The Gridmap Node of Godot was very handy for making a maze (it was the easiest part of making the race track). Finally, the Animation Player is a quite powerful Node in Godot and I was able to use it to make the moving obstacles on the yellow track.

In the end, I allowed my brother to test the game and I realized that restarting at every death made him insanely frustrated. Hence, I added checkpoints using the Area3D Node of Godot.

Yet, playing alone did not appeal to me as an intriguing idea so I created bots that I could race against. After making new scenes for each bot, I had a lot of fun designing each "Greek god" opponent with open-source 3D textures.

Challenges I ran into

Making the bots intelligent was a daunting problem since the mechanics of the game were so difficult. Initially, I used 3D RayCasts to allow the bots to sense the surrounding track, but it was imprecise and insufficient. Therefore, I thought of printing my coordinates onto the console every frame so I could paste them as a mega-array inside each bot's script. Even though it is more of a brute force approach and the script lines reached into the 10000s, it worked per par in the end.

Accomplishments that I'm proud of

This is the first time I felt as if I took my games to a whole another dimension, pun intended. Till now, I mostly programmed 2D games on Khan Academy and Godot. Even though I had made a 3D platformer before, it felt incomplete due to the lack of action in the gameplay. This game allowed me to freely use all 3 dimensions as I could create the curved tracks without any restriction.

What I learned

I immensely enjoyed using 3D textures and exploring various types of music. I realize that the graphical aesthetics of a game are a crucial factor in user experience. Also, using GitHub had not always been a strong suit of mine but I did gain plenty of experience with it while trying to upload my project.

Try out the Game

Go down and click the link to the GitHub repository. Then follow the directions in the README file.

What's next for Olympic Run - A 3D Race for the Eras

I would love to host this game on gaming websites such as crazygames or coolmath. Quite frankly, I feel as though it would make a great addition to the action game category. Perhaps, publishing this game on Play Store could also be a possibility.

Built With

  • borncg-tutorials
  • ccotextures.com
  • deepai.org
  • elements.envato.com
  • fontlibrary.org
  • gdscript
  • godot
Share this project:

Updates