prjEuclid [C#, V1, MySQL/ORM]


a devbest user says what
Aug 22, 2010

Project Euclid is a Habbo Hotel server written in C# NET 5.0 that uses various libraries such as DotNetty and NHibernate to emulate the version 1 of Habbo Hotel when it was first around in 2001, which at the time of writing is 21 years old.

I must preface by saying, while yes, I did indeed write , which was the damn near almost complete version 1 server of Habbo Hotel. I wrote this back in 2017, almost five years ago. There are plenty things wrong with the server, which Euclid will correct and it is better to start again than to try and apply duct tape to that codebase.


  • Fully implemented RC4 encryption (client->server)
  • Register
  • Login
  • Support for multiple public rooms
  • Navigator
  • Private rooms
  • Create rooms (with proper redirect into room, unlike any other V1 server before it)
  • Update rooms (with correct room info displayed when editing)
  • Walking

Frequently Asked Questions

Open source?

Of course it will be open source, eventually. No one will be interested in this otherwise.

Why a server for version 1 in 2022?

We have the Lingo for the version 1 so why not create it to the best of our abilities.

Why are you using NHibernate?

Why not? I like it.

Code Snippets

Configuration file example (public rooms each require their own port to distinguish which room they connected to)



using Euclid.Game;
using Euclid.Network.Streams.Util;
using Euclid.Storage.Database.Data;
using System.Collections.Generic;

namespace Euclid.Messages.Outgoing
    class BUSY_FLAT_RESULTS : IMessageComposer
        private List<Room> rooms;

        public BUSY_FLAT_RESULTS(List<Room> rooms)
            this.rooms = rooms;

        public override void Write()
            foreach (var room in rooms)
                Data.Add(new ValueEntry(room.Data.Id, "/"));
                Data.Add(new ValueEntry(room.Data.Name, "/"));

                if (room.Data.ShowName)
                    Data.Add(new ValueEntry(room.Data.OwnerData.Name, "/"));
                    Data.Add(new ValueEntry("-", "/"));

                if (room.Data.AccessType == RoomStatus.OPEN)
                    Data.Add(new ValueEntry("open", "/"));

                if (room.Data.AccessType == RoomStatus.CLOSED)
                    Data.Add(new ValueEntry("closed", "/"));

                if (room.Data.AccessType == RoomStatus.PASSWORD)
                    Data.Add(new ValueEntry("password", "/"));

                Data.Add(new ValueEntry("Floor1", "/"));
                Data.Add(new ValueEntry("", "/"));
                Data.Add(new ValueEntry(room.Address.IpAddress, "/"));
                Data.Add(new ValueEntry(room.Address.IpAddress, "/"));
                Data.Add(new ValueEntry(room.Address.Port, "/"));
                Data.Add(new ValueEntry(room.Data.UsersNow, "/"));
                Data.Add(new ValueEntry("null", "/"));
                Data.Add(new TextEntry(room.Data.Description));


Working room creation


Working pagination on navigator

Last edited:


a devbest user says what
Aug 22, 2010
Some updates.

Added five more public rooms. I have also furnished these rooms, with all collision working correctly, such as sitting on items and such.

  • Skylight Lobby
  • Median Lobby
  • Basement Lobby
  • The Chromide Club
  • Cafe Ole

In private rooms, item purchasing is done, the hand works, placing, moving and picking up furniture is also functional.

Sitting on furniture works now too.

Chatting, shouting and whispering now also works.

Floor and wall decorations now work too.




Mar 10, 2021
This give me such nostalgic vibes, the Shockwave client for Habbo was and will always be the best era of Habbo and I feel so sad for people that didn't play Habbo in its glory days.


New Member
Jan 27, 2022
I was pointed toward this project by a friend and all I need to say is that I'm hyped. I can't wait and will definitely keep an eye on this project! Loving the updates and screenshots so far, keep it up!

Users who are viewing this thread