
Joust - A retro 2d jousting game
This jousting game was built utilizing Unity 2D, C#, the pixel art tools of Piskel, and Amazon Q.
Published Jan 13, 2025
Last Modified Jan 14, 2025
Introduction
This is my game, Joust,** a retro jousting game built using Unity 2d and C#. This game was inspired by a variety of older arcade games, but also by one of my favorite movies, A Knight’s Tale. In the film, Heath Ledger’s character, William Thatcher, comes out victorious in a jousting tournament in which his opponent cheated by utilizing a sharp blade within his weapon. While obviously rigged in the tournament, competitive advantages (power-ups and jukes) are not dismissed in Joust the game.
Project Overview
Joust is the first game I have ever constructed, so I had quite a large list of things that I wanted to integrate into the game: my own animations, attacks, defenses, power-ups, health bars, and of course, good lore. Though it took time, effort, and quite a lot of trial and error, I’m proud to say that I implemented each of these. Joust includes 3 different tournament players, Barnyard Bob, Raven the Rabid, and Sam the Seldom, each who are jousting to become General of Earth’s new Emporer’s legions. Once you click who you are backing, you are thrown into the arena facing one of the two other opponents. As you go back and forth, you and your opponent will begin to teeter on the edge of death. If you win, your character will make it to the second round, with a chance to win the tournament. If you lose, you will find yourself in a loser’s lobby, greeted with one of many inspiring quotes. Good luck and happy gaming!
Tools
- Unity 2d
- C#
- Piskel
- Amazon Q Developer
- Amazon S3
Constructing the Project
- Brainstorming: I struggled to hone my ideas into one, bouncing off of space games, 3d racing games, and a sports game, but I finally settled on jousting because I hadn’t seen one of its nature.
- First Steps: I started with constructing visuals, as I needed a grasp on the look of the game before I could figure out the gameplay. In my opinion, the heart of the game is in the visuals, so I couldn’t have a true understanding of what I was making before I could see it.
- Creating the Scenes: The next part was creating the scenes in Unity. All together there are 5: the player select page, the fighting pit, the first winner’s lobby, the second winner’s lobby, and the loser’s lobby. Each of these contains properties such as background images, text, characters, animations, and more.
- Coding the Project: As I wanted to get more experience with C# code, I wrote most of it myself. This part was the most difficult for me, as I wasn’t 100% sure I would be able to implement everything I wanted too. This caused me to do everything one step at a time without thinking about the next steps. Hence, the code got a bit ugly at times, but I was able to ground myself and clean it up in the end. Next time I make a game, I will definitely have a more structured outline before beginning it.
Integrating Amazon Technologies
- I utilized Amazon Q’s chatbox interface many a time to brainstorm on specific issues with the game. One of these issues was the difficulty: the game was considered too hard by my friends and family, who were getting frustrated at their consistent failures. I went into the tank, asking Amazon Q what area of my code to adjust to give the player a better chance. Amazon Q stated that adjusting the jousting period from within .5 space units to within .6 space units could greatly improve the user’s chances.
- Another part of my game that Amazon Q helped with was efficiency. I did not realize that GameObject.Find(“...”) was such a heavy-lifting task, as opposed to the [Serialized Object] field where I could drag and drop the object in Unity.
- Finally, I utilized Amazon S3 to leverage its static website hosting capabilities. I uploaded the index.html file, Build, and TemplateData folders generated during the Unity WebGL build process into an S3 bucket. I then configured the site for static hosting, which provided a URL to access the game seamlessly. Amazon S3 provided a reliable and simple way to access the game.
Play Game / Github
- click here to play
- click here for Github