The Snake experience you didn't know you needed.
Forget 4K textures and Raytracing. Wait, actually... we have graphical pixels now!
This is Retro Snake, a fully modular, over-engineered, SOLID-compliant implementation of the Nokia classic, running in your Windows Console OR as a graphical window. Powered by .NET 10, Spectre.Console and now MonoGame.
We didn't just write a while(true) loop and call it a day. We built an engine.
- 🏗️ Architecture First: Built with
Strategy Patternfor levels,Dependency Injectionfor services, and aRender Abstraction Layerthat separates logic from the pixels. It's clean code you can eat off of. - 🎮 Dual Frontends:
- TUI (Spectre.Console): Text-based, double-buffered ANSI magic for buttery smooth console gaming.
- GUI (MonoGame): A shiny new graphical window with splash screens, smooth scaling and actual colored pixels.
- 🔊 Audio: Yes, it beeps. (Using
NAudiofor that authentic retro crunch).
The vanilla experience. Eat red apples, get longer, don't hit the wall. A timeless masterpiece.
Things get spicy.
- Faster Base Speed.
- Golden Apples: They appear rarely. Eating one gives you a Slow-Motion Matrix Effect but makes you grow ENORMOUSLY (+8 segments!). Risk vs. Reward at its finest.
Wait, what?
- It's Snake.
- It's Tetris.
- It's Chaos.
- Standard Tetrominoes (I, O, T, L, J) fall from the sky.
- Rules: If a block hits your HEAD, you die. If it hits your body, it passes through like a ghost. Dodge the rain!
- gRPC Integration: Connects to a separate server process.
- Smart(ish) AI: An opponent snake that tries to survive.
- Trap it to win: Outlast the AI or force it to crash.
Choose your pain tolerance in the Settings menu:
- 👟 Schnürsenkel (Easy): For a relaxed Sunday drive. (Base 130ms)
- 💦 Gartenschlauch (Medium): The intended experience. (Base 80ms)
- ☠️ Gefahrnudel (Hard): Reflexes required. Only for the true Internet Handwerker. (Base 50ms)
Just want to play? Easy.
- Go to the Releases page on GitHub.
- Download the latest
.zipfile. - Extract the zip file completely.
- Important: Start the
SnakeGame.Server.exefirst (keep it running in the background). - Start
SnakeGame.exe. - Enjoy the Danger Noodle.
You want to tinker? You need the bleeding edge .NET 10 SDK.
- Clone this repo.
- Open your terminal in the folder.
- Run the server (separate terminal, optional for local levels but required for Tron Mode):
dotnet run --project SnakeGame.Server - Run the game:
dotnet run --project SnakeGame - Navigate the menu to Settings -> Frontend to switch between TUI and MonoGame.
- Control the danger noodle with your Arrow Keys (or WASD in MonoGame).
- GameEngine.cs: A passive, frontend-agnostic state orchestrator.
- Logic/LevelStrategies.cs: Contains the
LevelManagerstate machine. - Infrastructure/MonoGame: The new graphical frontend implementation with
PixelFontrendering and state management. - Infrastructure/SpectreConsoleRenderer.cs: Translates the
GameStateintoCanvaspixels for the terminal. - Models/GameState.cs: Pure data container (Record types where possible).
Hi. It's me, the Internethandwerker.
This project was (so far) completely vibe-coded using the Gemini CLI Preview and Gemini 3.
It's obviously a fun project, but for me, this wasn't really about writing a game. It was about answering a question: How well does raw vibe-coding actually work for me? How does it feel? What are the pitfalls? How do you fix bugs when you aren't writing the code line-by-line? How do you prompt effectively?
I'll publish my findings elsewhere (though by the time you read this, it's probably yesterday's news). But TL;DR: It was fun. It surprised me positively. And yes, it frustrated the hell out of me at times (dead ends are real).
Either way, I hope this "remix" of my ideas, AI generation, and ASCII characters makes sense to you. Maybe you'll have fun just running it. Or breaking it. Or making it better.
Take care. Happy coding.
Der Internethandwerker


