Week 5_Midterm_Progress

Concept

Back in school, they wouldn’t give us the WiFi password, so whenever I opened a browser I’d get stuck on the “No internet” page. With nothing else to do, I’d end up playing the offline dino game, and it got really competitive between me and my classmates as we all tried to beat each other’s high scores. That memory is where this game started. I wanted to bring back that same simple, addictive feeling, but make it my own by adding my culture to it. So instead of the dino game, I made Desert Runner. The main character is an Emirati man in a kandura and ghutra, and instead of jumping over cacti he jumps over animals from the UAE desert. He runs through real places in Abu Dhabi, starting at Saadiyat Island and moving on to Sweihan, Al Ain and Liwa as the score goes up, before looping back to Saadiyat.

Design

I kept the core of the original game, which is one character, simple controls and a score that keeps climbing, and changed everything around it to feel Emirati. The character wears a white kandura, a ghutra and a black agal. He is drawn entirely in code using simple shapes with black outlines in a cartoon style, and his arms and legs swing as he runs while his ghutra flaps in the wind. Instead of cacti, the obstacles are desert animals. Snakes, Arabian red foxes, Arabian oryx and camels have to be jumped over, while falcons fly at head height so the player has to duck under them.

Every 250 points the scenery fades into a new area, ordered by distance from Saadiyat, and each place has its own look. Saadiyat has the beach, the sea and dhows. Sweihan has ghaf trees and camel farms. Al Ain has Jebel Hafeet, an old fort and date palms, and Liwa has a sunset over huge red dunes. Before playing, the player sees a start menu with Play Now, Settings, Tutorial and Controls, so they can learn the game first. While playing, there is desert wind with an oud-style melody and a darbuka rhythm in the background, along with sound effects for jumping, dying and reaching a new location. The high score is saved automatically so it stays when the player retries, which brings back the competitive side I remember from school.

Saadiyat Beach, Voted One Of The World's Best Beaches Discover culture in Al Ain | Experience Abu DhabiMorning Fewbie - Sweihan Master the Climb Sweihan - Abu Dhabi - 05 Sept  2026 - Events Calendar - Carnity.comDiscover Best Things to Do in Liwa Desert Abu Dhabi (2025)

Challenging Aspects

The most challenging part was drawing the character and the animals with code instead of using images. Everything is built from ellipses, lines, triangles and custom shapes, and the order they are drawn in matters a lot. The back arm has to come first, then the kandura, then the front arm and finally the head, so that each part overlaps the right way. Getting the ghutra to wrap around the head and hang down to the shoulder took a lot of adjusting of coordinates before it looked right.

Making the character actually look like he was running was another challenge. I used a sine wave so his legs and arms swing in opposite directions, his body bobs slightly up and down, and his ghutra flaps in the wind. The same idea brings the obstacles to life: the snake’s body follows a moving wave so it slithers, and the camel’s legs swing back and forth as it walks. Jumping also took some work. I had to give the character an upward speed when the player presses jump, then pull him back down a little more every frame with gravity, so the jump curves naturally instead of moving straight up and down.

The background was tricky too, because I wanted it to feel like Saadiyat Island while still moving. I split it into layers that scroll at different speeds. The sea moves slowly, the palm trees move a bit faster and the ground moves fastest, which creates a sense of depth. Finally, collisions were difficult because the camel’s neck and tail and the snake’s tongue stick out of their bodies. Using the exact shapes would have made the game feel unfair, so I used simpler invisible rectangles called hitboxes to check whether the player has hit an obstacle.

Risk Prevention

Since the game speeds up over time, one risk was obstacles appearing too close together to jump over. To prevent this, the minimum gap between obstacles grows with the current speed, so there is always enough room to land and jump again. The speed also has a maximum limit, so the game never becomes impossibly fast. To avoid unfair deaths, the hitboxes are slightly smaller than the drawings, so the player only loses when they clearly hit something. The player can also only jump while on the ground, which stops them from jumping again in mid-air and floating over everything.

The game starts at a slow speed and gets faster gradually, so new players have time to get used to the timing before it becomes difficult. Movement is based on how much time has passed rather than on frames, so the game runs at the same speed on both fast and slow computers. Pressing the space bar would normally scroll the web page, so I blocked that to keep the game on screen. The game also works with a mouse click as well as the keyboard. Obstacles are removed once they leave the screen so the game doesn’t slow down the longer you play. When the player crashes, everything resets cleanly so they can try again right away.

Leave a Reply