Play now at https://rubaiyat.itch.io/hop32
HOP32 is not found in the comfort of living rooms, but in the conventions, parties, galleries, or where else people gather. Progression is collectivized, incrementing with each playthrough and requiring players to invite others to fill in empty slots to keep the play continuing. Can players work together to reach the Cloud Kingdom or succumb to the harsh difficulty of the Broken Lands?
Hop Each player uses their one button to jump forward. Players build jump power when they are grounded, allowing them to perform short hops by pressing rapidly, or high hops if they wait.
Holes Bottomless holes are scattered throughout the landscape. These are simple jump challenges that can turn into tricky situations depending on the terrain and other anomalies.
Zombies These anomaly are undead humans and they're quite dumb, but touching them will lead to dead.
UFO
Certain areas in the map have UFOs that will roam for a certain period of time, then drop down to abduct any players below.
Rescue helicopter Death is not the end. Rescue helicopters will fly through the top of the map holding an eliminated player. If an active player can jump high enough and hit the heilcopter, the eliminated player will drop and return to the game.
The original prototype was created during a 2 week game jam hosted by the Game Dev Club at SJSU. All original 32 characters were playable on the keyboard. We hadn't figured out how to add collision detection yet, so our map was being displayed just as a background.
Procedural generation
I had the idea of setting the map size in proportion to the amount of players in the game. At the time I felt the game should be just as fun with 2 players as it would be with 32 players. I later abandoned this design goal, preferring to design the game to be easier with more players. So with my original intention firmly in place, I did some research on YouTube and found a fairly simple and intuitive solution. Essentially, I fill the entire gird with tiles, then remove tiles above a sin wave that I've modified with math to look like terrain.
Unlike other game engines, performance is a big deal in Pico8. I needed a big map so calculating and storing the entire terrain in a table was not going to cut it. I had to revamp the terrain system render small chucks at a time, which vastly improved performance. This photo shows the performance with 32 players and two chunks rendered.
Collision detection
A collision system was needed for the procedural terrain. I had to do some research to find a solution with good performance and no strange edge cases. I tried using LLMs to generate a system, but it turns out human created solutions are much better.
Creating the UFO
The game needed something more than holes to jump over, so I started designing enemies. I termed them as anomalies, because I wanted to bring together all sorts of creatures from different genres together in a way that made thematic sense. The original cast of anomalies were the UFO, zombie, and the dragon. The dragon was never started and eventually canceled.
The UFO started when I wanted an anomaly that was interactable and a challenge to watch out for. I thought about how a UFO could fly through the space, players could jump off it, and it can abduct players, sucking them up and flying away. The game needed more situations for players to save each other, so I included the functionality to allow players to save other abducted players by jumping on the UFO.
Buttons
With 1 month left until Subzero, a collaborator who was going to design the buttons for me, fell through. With absolutely no knowledge of industrial design, I set out to learn as much as I can. I started with the simplest shape I could think of, a square, and from there I built a small 1 button controller that I was proud of. I used heat inserted threads and fastener to attach the button shell together and mount the raspberry pico to the button. The actual button is a standard X-Arcade button.
I started working on the electronics very earlier since this was a completely new field for me. After much prototyping and research, I was able to get a simple prototype with a direction usb connection working. The raspberry pico is running circuit python with adafruit's HID library installed. Each micro-controller is programmed to send a unique keyboard key. The buttons are connected to the computer through a usb cable.
With 1 month left until Subzero, a collaborator who was going to design the buttons for me, fell through. With absolutely no knowledge of industrial design, I set out to learn as much as I can. I started with the simplest shape I could think of, a square, and from there I built a small 1 button controller that I was proud of. I used heat inserted threads and fastener to attach the button shell together and mount the raspberry pico to the button. The actual button is a standard X-Arcade button.
June 6th and June 7th 2025
San Jose, CA
Coming soon