A pixelated multiplayer world where you level up by shipping IRL projects.
Pixl Pixl is a pixel-themed YSWS where you evolve in a retro 2D open world and level up by building real projects. By exploring the map, you will discover different regions such as a cyberpunk city, an underwater region or even a gambling one (regions comming soon, not in game yet). Each region will have sidequests like making apps, websites, or hardware for in-game characters that will pay you with a base prize (or base funding for hardware) and give you some pixels, the in-game currency, for you to spend in the shop. The more pixels you get, the best regions you can unlock and the more pixels you will get from the merchants.
- Shared open world - explore with other Hack Clubbers in real time
- Private village - your own personal space
- Shop & economy - spend Pixels on a shop to get prizes (mainly grants as we know you love that)
- Custom skins - draw your own 16×16 pixel avatar --- WILL BE ADDED LATER
- Chat & voice - communicate with nearby players
- Project submissions - ship projects via the in-game Pip NPC
- Hackatime integration - coding time is automatically tracked and rewarded
More screenshots coming soon, add yours by opening a PR!
![]() private village |
![]() openworld |
In-Game Shop |
![]() Custom Skin Editor |
A real-time top-down world. Explore the shared open world with other players in real time, or head to your own village.
The more project you ship, the best merchants you unlock in your village, meaning that they will pay you more !
Earn Pixels by shipping projects. Spend them in the shop on prizes. Prices are enforced server-side — no spoofing possible.
Choose from 5 preset character skins, or open the Skin Editor to draw a completely custom 16×16 avatar. Your skin is saved to your account and broadcast to all nearby players.
Talk to the Pip NPC in your village to submit projects with a name, description, repo URL, and demo link. Link your Hackatime account to automatically sync coding time to your projects.
Client
└─▶ GET /auth/login
└─▶ Hack Club consent screen
└─▶ GET /auth/callback (token exchange + /api/v1/me)
└─▶ Redirect to client with #auth=<sessionToken>
└─▶ Client stores token in localStorage
└─▶ Sent in socket handshake → server/auth.ts validates
- Accounts and tokens are stored in the SQLite
accountstable with a 30-day sliding session expiry. - Game state (position, pixels) is keyed by Hack Club account ID.
- One active session per account — a new login kicks the previous session.
Players exist in exactly one world at a time, identified by a WorldRef:
| Kind | Description |
|---|---|
openworld |
Shared world for all players |
village |
Your own village |
house |
Single shared multiplayer interior |
World switches are requested via the world:enter socket event. The server validates access and emits world:state with the new player list. Walking onto a door tile triggers building entry; a portal tile switches between the open world and your village.
Contributions are very welcome! Here is how to get started:
- Fork the repository
- Create a feature branch -
git checkout -b feat/amazing-feature - Commit your changes -
git commit -m 'feat: add amazing feature' - Push to the branch -
git push origin feat/amazing-feature - Open a Pull Request
Please check the open issues before starting work on something new.
Distributed under the MIT License. See LICENSE for more information.



