- Joined
- Feb 12, 2007
- Messages
- 30
- Reaction score
- 4
Hey everyone,
Back in 2013, Thomas Vermaercke released [Jabbo v3.1](https://forum.ragezone.com/threads/jabbo-v3-1-javascript-habbo-html5-websockets.912294/) — a pure JavaScript/HTML5 Habbo proof of concept. I was always a massive fan of what he built back then. Long before Flash was phased out, he demonstrated that a lightweight browser-based MMO was genuinely doable in plain JS. It always felt like a missed opportunity that development stopped there.
A little while ago, I dug up the old source code. This started out as a tiny weekend side project while waiting for Claude to finish tasks on other stuff — but with modern AI vibe-coding (Claude & GPT), things escalated pretty fast.
Full disclosure right up front: **I haven’t written a single line of code myself.** Everything has been prompted, refactored, and vibed into existence using Claude and GPT. Honestly, I’m genuinely blown away by how far you can push a 2013 codebase just by directing AI models.
---
### 1. Backend & Architecture Overhaul
One of the biggest pain points with Jabbo back in the day was getting it to run (Windows C#.NET server binary, Apache/PHP web server, MySQL dumps, and finicky socket bridges).
- **Unified Node.js Stack:** Both the HTTP server and WebSocket server run directly from a single Node.js 24 process. No Apache, IIS, or PHP runtime required.
- **Embedded SQLite (Zero DB Setup):** Replaced the legacy MySQL dependency with embedded SQLite via `node:sqlite`. It boots with automated versioned migrations right out of the box — zero SQL configuration required.
- **Asset Compositing via Python/Pillow:** Avatar spritesheets, Lido swimsuits, and bed layers are composited on-the-fly via a headless Python Pillow worker.
- **Security & Exploits Overhaul:** Fixed critical legacy exploits present in the 2013 release:
- Migrated legacy unsalted MD5 passwords to salted `scrypt`.
- Added strict per-account brute-force backoff and rate limiting.
- Implemented role/rank hierarchy checks for moderation (`:ban`, `:kick`).
- Completely eliminated `eval()` from legacy template parsing.
- Hardened Content-Security-Policy (CSP), framing, and modern security headers.
- Full automated test suite (over 400 test cases covering parity, packet handling, and systems).
---
### 2. Client Features & Gameplay Additions
The goal is a nostalgic hybrid experience pulling classic Shockwave elements (v9 reference layout) up to late Shockwave/v32 features:
- **Public Rooms:** Classic layout rendering with native multi-layer depths, custom walkspaces, and the authentic Reception Lobby with Receptionist bot Harry.
- **Habbo Lido & Diving (Turmspringen):** Fully playable pool with locker rooms, changing into swimsuits, ticket machines, diving board queue, real-time keyboard trick inputs (W/E/A/S/D/Z/X), splash physics, and the spectator screen.
- **HC Rooms (Model G & H):** Complete private room stairs geometry with multi-height logic and all 161 original wallpapers & 116 floor compositions.
- **Trax Machine:** ~95% complete with an in-client sequencer and sound engine hooked up via the Web Audio API (4 channels, 9 Traxpacks, 81 samples, room playback synchronization).
- **Pets:** Dogs, cats, and crocodiles with classic AI (wandering, hunger/thirst pathfinding, sleeping, commands like "sit", "speak").
- **Bed & Seating Mechanics:** All 52 bed/sleeping bag/hammock models with proper lane reservations, dual-sleeper support, and depth offsets.
- **Physics & Rollers:** Authentic roller snapshot coordination, item stacking, and rider conveyor movement.
- **Trophies (Pokale):** Classic gold/silver/bronze trophies with custom engraved inscriptions and viewer modals.
- **Consumables & Hand Items:** Drink dispensers and ice cream machines with proper avatar holding/sipping animations.
- **Photo Wall & Camera:** In-room camera snapshots saved to the gallery and placeable as photo wall furni.
- **In-Client Wardrobe & Habbo Club:** Real-time clothes changing inside the client without reloading, plus Jabbo Club purchasing.
- **Dances:** Standard dancing + all classic HC dances.
- **Kamera**
- **Wallpaper and floor**
---
### 3. What’s Next on the Roadmap?
- Building a clean web portal / REST API for account registration and user management.
- Polishing edge cases in multi-height room clicking and pathfinding.
- Exploring classic mini-games down the line (BattleBall or SnowStorm ported to HTML5 Canvas).
---
### 4. Legal / Sulake Assets & Release Questions (Need your advice!)
I’m still thinking about what the final open-source release should look like. I want to avoid any legal friction with Sulake / Azerion.
As Thomas mentioned in his original 2013 release, the code itself is custom, but the assets (CCT rips, sprites, audio samples) are Sulake’s IP.
- What is the community’s current consensus on asset distribution for HTML5 projects?
- Is it best practice to strip all original assets and provide a separate asset scraper/extractor script?
- How do current projects (like Nitro or modern retro emulators) handle asset distribution safely?
---
### Thoughts?
Is there still interest in the community for a lightweight, dependency-free Node.js + HTML5 Habbo stack that preserves the authentic Shockwave look and feel without bloated frameworks?
Drop your thoughts, feedback, or suggestions below. I'll keep updating this thread as new milestones get prompted into existence!
**Credits:**
- **Thomas Vermaercke** – for the original Jabbo v3.1/v3.2 concept and architecture.
- **Modern AI tooling (Claude & GPT)** – for doing the heavy code lifting.
Back in 2013, Thomas Vermaercke released [Jabbo v3.1](https://forum.ragezone.com/threads/jabbo-v3-1-javascript-habbo-html5-websockets.912294/) — a pure JavaScript/HTML5 Habbo proof of concept. I was always a massive fan of what he built back then. Long before Flash was phased out, he demonstrated that a lightweight browser-based MMO was genuinely doable in plain JS. It always felt like a missed opportunity that development stopped there.
A little while ago, I dug up the old source code. This started out as a tiny weekend side project while waiting for Claude to finish tasks on other stuff — but with modern AI vibe-coding (Claude & GPT), things escalated pretty fast.
Full disclosure right up front: **I haven’t written a single line of code myself.** Everything has been prompted, refactored, and vibed into existence using Claude and GPT. Honestly, I’m genuinely blown away by how far you can push a 2013 codebase just by directing AI models.
---
### 1. Backend & Architecture Overhaul
One of the biggest pain points with Jabbo back in the day was getting it to run (Windows C#.NET server binary, Apache/PHP web server, MySQL dumps, and finicky socket bridges).
- **Unified Node.js Stack:** Both the HTTP server and WebSocket server run directly from a single Node.js 24 process. No Apache, IIS, or PHP runtime required.
- **Embedded SQLite (Zero DB Setup):** Replaced the legacy MySQL dependency with embedded SQLite via `node:sqlite`. It boots with automated versioned migrations right out of the box — zero SQL configuration required.
- **Asset Compositing via Python/Pillow:** Avatar spritesheets, Lido swimsuits, and bed layers are composited on-the-fly via a headless Python Pillow worker.
- **Security & Exploits Overhaul:** Fixed critical legacy exploits present in the 2013 release:
- Migrated legacy unsalted MD5 passwords to salted `scrypt`.
- Added strict per-account brute-force backoff and rate limiting.
- Implemented role/rank hierarchy checks for moderation (`:ban`, `:kick`).
- Completely eliminated `eval()` from legacy template parsing.
- Hardened Content-Security-Policy (CSP), framing, and modern security headers.
- Full automated test suite (over 400 test cases covering parity, packet handling, and systems).
---
### 2. Client Features & Gameplay Additions
The goal is a nostalgic hybrid experience pulling classic Shockwave elements (v9 reference layout) up to late Shockwave/v32 features:
- **Public Rooms:** Classic layout rendering with native multi-layer depths, custom walkspaces, and the authentic Reception Lobby with Receptionist bot Harry.
- **Habbo Lido & Diving (Turmspringen):** Fully playable pool with locker rooms, changing into swimsuits, ticket machines, diving board queue, real-time keyboard trick inputs (W/E/A/S/D/Z/X), splash physics, and the spectator screen.
- **HC Rooms (Model G & H):** Complete private room stairs geometry with multi-height logic and all 161 original wallpapers & 116 floor compositions.
- **Trax Machine:** ~95% complete with an in-client sequencer and sound engine hooked up via the Web Audio API (4 channels, 9 Traxpacks, 81 samples, room playback synchronization).
- **Pets:** Dogs, cats, and crocodiles with classic AI (wandering, hunger/thirst pathfinding, sleeping, commands like "sit", "speak").
- **Bed & Seating Mechanics:** All 52 bed/sleeping bag/hammock models with proper lane reservations, dual-sleeper support, and depth offsets.
- **Physics & Rollers:** Authentic roller snapshot coordination, item stacking, and rider conveyor movement.
- **Trophies (Pokale):** Classic gold/silver/bronze trophies with custom engraved inscriptions and viewer modals.
- **Consumables & Hand Items:** Drink dispensers and ice cream machines with proper avatar holding/sipping animations.
- **Photo Wall & Camera:** In-room camera snapshots saved to the gallery and placeable as photo wall furni.
- **In-Client Wardrobe & Habbo Club:** Real-time clothes changing inside the client without reloading, plus Jabbo Club purchasing.
- **Dances:** Standard dancing + all classic HC dances.
- **Kamera**
- **Wallpaper and floor**
---
### 3. What’s Next on the Roadmap?
- Building a clean web portal / REST API for account registration and user management.
- Polishing edge cases in multi-height room clicking and pathfinding.
- Exploring classic mini-games down the line (BattleBall or SnowStorm ported to HTML5 Canvas).
---
### 4. Legal / Sulake Assets & Release Questions (Need your advice!)
I’m still thinking about what the final open-source release should look like. I want to avoid any legal friction with Sulake / Azerion.
As Thomas mentioned in his original 2013 release, the code itself is custom, but the assets (CCT rips, sprites, audio samples) are Sulake’s IP.
- What is the community’s current consensus on asset distribution for HTML5 projects?
- Is it best practice to strip all original assets and provide a separate asset scraper/extractor script?
- How do current projects (like Nitro or modern retro emulators) handle asset distribution safely?
---
### Thoughts?
Is there still interest in the community for a lightweight, dependency-free Node.js + HTML5 Habbo stack that preserves the authentic Shockwave look and feel without bloated frameworks?
Drop your thoughts, feedback, or suggestions below. I'll keep updating this thread as new milestones get prompted into existence!
**Credits:**
- **Thomas Vermaercke** – for the original Jabbo v3.1/v3.2 concept and architecture.
- **Modern AI tooling (Claude & GPT)** – for doing the heavy code lifting.
To view the content, you need to sign in or register
Last edited:

