-
-
There's a calendar! Here it is! There are also other menus, e.g. a high score table and some settings, but... life's too short.
-
Honestly, taking screenshots of this was a nightmare. Still, here I am just missing collecting some boosts gems.
-
Venus has more angular paths. Regrettably so for this driver who is trying to take screenshots as he drives
-
Another HOT LAP underway; some chevrons mark a booster on the other side of this corner. Hit it to go fast! Or miss it completely
-
A HOT LAP is underway. It looks like it's going OK but I assure you it isn't.
-
Expertly avoding taking the racing line by crashing into the inside of a bend on Mars.
-
HOT LAP again. At this point I've given up and just parked myself by the finish, admiring the vectors.
-
Exploring some of the collision physics.
-
At the start of every circuit we see an overview. This is a Saturn map, typically windy and a little bit tighter than others.
Inspiration
I make games. Usually I make puzzle games - my most recent "proper" game was Mindset GO! released last year (https://mindset.game). I've made a couple of others on my own in my spare time. They're generally no-rush five-minute brain activities, newspaper-ish puzzle games.
At the end of January I ran into the Devvit team at the Pocket Gamer conference and one of them let me know about this hackathon. I showed them a (good!) puzzle game that isn't quite finished but IS very Reddit and they encouraged me to submit. But that felt wrong; it wasn't built for this and I wanted to try something fresh (and out of my comfort zone).
I let the idea sit and thought about the daily game space. There are so many algorithmic puzzle games which throw up daily Wordle-style challenges; I've built a lot of those and this felt like an excuse to build something different. I started thinking about the golden era of arcade games. There's a lot of synergy there WITH daily puzzles: you invest a small amount of time and typically you get one shot - and your results are etched on a high score table forever.
So that's where I started, and everything else followed: an arcade game, the opposite of a puzzle game, something hyper fast and twitchy, favouring reaction over thought, with retro aesthetics and modern-day meta. I wanted the ONE SHOT adrenaline of arcade and I wanted a short gameplay loop that you could play forever if you wanted. And that let me to HOT LAP 1982.
What it does
HOT LAP 1982 is a top down racing game modelled on games that could have existed in the late 70s / early 80s, or at least how we imagine those games now. But it has a few neat things:
Daily generation. There are seven different types of circuit (named after the seven planets, colour-coded), each with a different feel. They can also contain different power ups and different hazards / run off areas. There's a wide variety of possible courses and a new one generates every day. So there's that blend of rhythm (the same planet happens on the same day every week), unpredictability (tracks vary within a planet's style) and infinite content (the game continues for as long as Reddit's servers exists)
The HOT LAP. I wanted a "you've got one shot at this" feel. The player starts a new circuit completely blind, the preview on the subreddit page being their only guide. They're straight into the action, and they get three laps 'practice' before the HOT LAP. And the hot lap is their single go at recording a time for the HOT LAP leaderboard. If they mess up, that's it. If you clip a corner you need to recover and do your best, knowing (from your ghosts, streaking out in front of you) you could have done better. The pressure is on...
... But all isn't lost. Because we have two leaderboards; one for the HOT LAP and one for the PERFECT lap. If players want they can continue after the four laps and shave hundredths of seconds off their best, beating their ghost over and over again (and racing against the ghosts of other players, all of which are saved to Redis).
There's also Challenge mode, where you can send your ghost to another player on Reddit; and the ability to share a ghost code in public, so anyone can follow a link to the sub, enter the code and try to out-do you
How we built it
The short answer: I vibe-coded it with Codex and bits of hands on messing, using Typescript.
The longer answer: As a designer LLM assistants allow me to prototype and tweak the feel of a game faster than ever before. So while previously my work was dominated by design documents, variable tweaks and slow iteration now I can dive straight into what makes a game fun. The physics, the boost mechanics, the banking, the course design, everything becomes an iterative process. I had the game running in a night but making it fun, addictive, one more go, took a week.
Challenges we ran into
Not much beyond the concept and then shaping it into something fun. Data storage was an important point early on: deciding what to store and what to let expire on Redis was important given ghost data could become problematic with a heavy player count - so we save everyone's ghosts for 24 hours and then pick the top 12 and crucial percentiles as markers for ongoing games.
Accomplishments that we're proud of
It's a little way out of my comfort zone but I'm delighted with how it feels and plays. Pulling someone else's ghost onto the circuit and racing it feels elegant and human, and there's something really satisfying and instant about the high score reporting. I also love the track previews on the Reddit posts and I'd like to add more to that - ideally it'd show the current times but that's not possible, so maybe yesterday's winners...
What we learned
Vectors are pretty and going fast is fun. I can make good games on my own that are not puzzle games.
What's next for HOT LAP 1982
Unclear, but hopefully a hundred players on the leaderboard all competing for fractions of seconds. There is a monthly championship built in for daily players and I want a next-day reward system that looks at where you were in yesterday's leaderboards. Maybe I'll build an arcade machine?
Built With
- codex
- redis
- typescript
Log in or sign up for Devpost to join the conversation.