Inspiration
Nostos The Game was inspired by the charm of arcade games from the 1980s and 1990s.
We wanted to combine that arcade feeling with a Galaga-inspired bullet hell that was simple, fun, and addictive. Essentially, we wanted something that was easy to understand but difficult to master.
Originally, we gave it the very “serious” name of “GameTestApp,” but eventually decided upon “Nostos,” which refers to a hero’s journey home. It felt fitting for a game centered around surviving impossible odds.
What it does
Nostos The Game is a lightweight, Greek-mythology arcade survival shooter that runs directly on Reddit.
The player automatically fires while moving around the arena, dodging enemy projectiles and using the Dash and its I-frames to escape attacks. Defeated enemies award points and also have a chance to drop upgrades. Enemies eventually become more difficult, and there is even a secret boss mechanic built into the game!
How we built it
We built this game using Phaser 4, TypeScript, and Vite for the game client.
Reddit’s Developer Platform powers the surrounding application. Devvit Web handles the custom Reddit post and expanded game view, while Hono provides the server routes. Redis stores personal bests, leaderboard entries, and temporary run-validation data using single-use tokens.
The game uses reusable systems for:
- Enemy definitions and roles
- Projectile and weapon behavior
- Attack patterns
- Difficulty scaling
- Collision detection
- Pickups and upgrade limits
- Responsive scene layouts
- Combat effects and audio
- Scoring and leaderboard communication
Enemy behavior is assembled using reusable weapon patterns. This allows elites and bosses to combine multiple attack patterns so that each enemy feels unique.
Score submissions use expiring, single-use run IDs tied to the authenticated Reddit username. This doesn’t make a client-based scoring system impossible to exploit, but it is a simple safeguard that prevents requests from submitting unlimited random numbers.
Challenges we ran into
Some of our biggest challenges were screen resizing, enemy scaling, making mobile fun, and creating assets.
The game needed to work on both mobile and desktop, so finding the Goldilocks zone for the sizing was rather difficult.
The difference between mobile and desktop player movement was another challenge. Early versions caused the player to drift, and trying to dash while moving caused a huge problem, especially in a bullet hell.
Another challenge was difficulty scaling. We were constantly playtesting and trying to fine-tune what felt good: how to make the player not too OP, how to make the enemies not too OP, how quickly the enemies should become more difficult, how often pickups should appear, the speed of projectiles, and many other factors. Sometimes the game would feel too hard because the player wasn’t strong enough to defeat elites, while other times it was too easy. We feel that the balance is enjoyable right now, but we hope to add more enemies and weapon ideas to help refine it later.
Lifecycle problems also occurred early on. Animations, event listeners, and exit behavior weren’t always cleaned up properly, causing them to overflow into the next run.
Connecting to Reddit introduced a security challenge because the server cannot blindly trust a submitted score when the game runs on the client. We added authenticated, expiring, single-use run records to make leaderboard manipulation more difficult.
Finally, finding and creating assets was a huge challenge for us. By no means are we Picasso, but even pixel art requires a degree of artistic talent. AI-generated art introduced a new problem involving bilinear and trilinear interpolation. Finding the cross-section between custom sprites, AI-generated art, touching those assets up, and creating fun visuals at appropriate pixel sizes proved to be both a huge challenge and a time sink.
We’re currently trying to improve at pixel art so that we can eventually replace the AI-assisted sprites with completely custom artwork and implement the true vision we had. For right now, though, we needed a little assistance since we are artistically lacking.
Accomplishments that we’re proud of
We are proud that Nostos became a complete game and what we originally set out to make, rather than remaining a shell or another bare-bones bullet hell.
In particular, we are proud of:
- Creating seven unique enemies
- Finding unique bullet patterns
- Having fun making a secret “run-killer” boss
- Creating ten pickups
- Supporting desktop and mobile
- Giving the game its own identity
What we learned
We learned that a good arcade game doesn’t just fall out of the sky. Feedback and playtesting need just as much attention as the mechanics themselves. Although an arcade game may seem simple on the surface, there are still many things invisible to the naked eye. Projectiles can be mathematically unfair, a dash can’t work correctly without proper I-frames, and the formulas behind difficulty scaling can be extremely difficult to balance.
We also learned the importance of reusable systems and interfaces. Defining these systems made it much easier to experiment without needing to rebuild the whole game every time. Good infrastructure allows for good development and coding practices.
Building for Reddit taught us how Devvit works, including both its shortcomings and its high points. It also reminded us to treat anything sent by the client as untrusted data. Security is often an overlooked feature.
More importantly, assets are not easy to come by. Whether they are custom-made or AI-generated, they rarely match the exact vision we had. Finding the intersection between the two is also very difficult. It takes time for a developer to become a pixel artist too.
Finally, we learned that we like game development! This was really fun for us and even became a passion project. We’ve got loads of ideas at the moment, and tackling all of these challenges was unexpectedly enjoyable. After submission, because we will no longer be constrained by a strict timeframe, we can take our time chiseling Nostos into a standalone game.
Even if we don’t win anything, I think it’s fair to say that we won something else: the passion to start building our own games.
What’s next for Nostos The Game
- Opening cinematics and a larger underlying story
- Additional arenas and environmental themes
- Fully custom sprites
- Expanded upgrade combinations and build combos
- Controller support
- Achievements and challenges
- Additional music and sound effects
- Stronger leaderboard validation
- Seasonal or community challenges on Reddit, such as a Boss Rush mode
- A standalone release for platforms such as Steam
The next version would expand the meaning of Nostos by turning this game into a much larger journey!
Built With
- devvit
- phaser.js
- typescript
- vite
Log in or sign up for Devpost to join the conversation.