Notations and some important data structures used in Habbo Hotel
Habbo Room Icon Notation (HRIN) v1.0 is a standard for the text-based notation designed to represent room icons in a compact, human- and machine-readable form. It encodes the background, top-layer style, and a set of optional items (with their positions and identifiers) as a single string, facilitating storage, parsing, generation, and interoperability of room icon configurations.
While HRIN v1 reflects the room icon definition, it is not an official format maintained by Sulake. Future updates or extensions may not be adopted by the company.
This specification exists to formalize and document how Habbo Hotel processes room icon configurations. It is:
HRIN is not a standard maintained by Sulake, and its future extensions MAY NOT be reflected in the game’s implementation.
HRIN v1 is a textual representation of layered symbols that enables:
This specification is intended for developers, designers, and enthusiasts involved in the Habbo Hotel community, particularly those working on tools for creating or manipulating room icons. It also serves as a common reference for understanding, implementing, and manipulating the Habbo Room Icon Notation (HRIN), which can be used for tasks such as developing interoperable software, emulators, and documentation for fan-driven projects. Familiarity with basic programming concepts, string manipulation, and markup languages is recommended but not required.
HRIN v1.0 defines the known structure for how room icon designs used to be stored, based on the original implementation in Habbo Hotel.
HRIN is community-maintained. While efforts are made to ensure accuracy, Sulake may change the format at any time. Future extensions will aim to preserve backward compatibility whenever possible.
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119.
An implementation is considered HRIN v1.0 compliant if it adheres to the syntax, processing rules, and constraints defined in this document. A conforming parser implementation:
A valid HRIN string MUST:
|
) characters.A HRIN v1 string represents a room icon by concatenating three parts. The first defines the background with a value from 1 to 24 indicating one of the available backgrounds. The second defines the top_layer with a value from 0 to 11 indicating the style applied on top of everything. The third defines the items with zero or more items, each specifying a position (0–10) and an item identifier (1–27).
The following Extended Backus-Naur Form (EBNF) defines the syntax of HRIN v1.0:
<room_icon> ::= <background> "|" <top_layer> "|" [ <item> ( " " <item> )* ]
<background> ::= 1..24
<top_layer> ::= 0..11
<item> ::= <position> "," <item_id>
<position> ::= 0..10
<item_id> ::= 1..27
Field | Type | Format | Description |
---|---|---|---|
background |
Integer | 1-2 digits | ID of the background (1 through 24). |
top_layer |
Integer | 1-2 digits | ID of the top-layer style (0 through 11). |
position |
Integer | 1-2 digits | Grid or slot position (0 through 10). |
item_id |
Integer | 1-2 digits | ID of the room item (1 through 27). |
The following regular expression can be used to validate the general structure of an HRIN v1.0 string:
/^[1-9]\d?\|(?:0|[1-9]|1[0-1])\|(?:[0-9]|10),(?:[1-9]|1\d|2[0-7])(?: (?:[0-9]|10),(?:[1-9]|1\d|2[0-7]))*$/
Error Code | Description |
---|---|
ERR_BACKGROUND_RANGE | background is outside the range 1–24. |
ERR_TOP_LAYER_RANGE | top_layer is outside the range 0–11. |
ERR_ITEM_SYNTAX | An item entry does not match <position>,<item_id> . |
ERR_POSITION_RANGE | position is outside the range 0–10. |
ERR_ITEM_ID_RANGE | item_id is outside the range 1–27. |
ERR_SYNTAX | The HRIN string violates the overall grammar or missing delimiters. |
An HRIN-compliant parser MUST reject invalid strings and report an appropriate error.
Consider the following example HRIN v1.0 string, considered the default:
1|0|
Explanation:
1
→ Background with asset id 1
.0
→ Top layer with asset id 0
.2|9|6,3 7,5 9,4
Explanation:
2
→ Background with asset id 2
.9
→ Top layer with asset id 9
.6,3
→ Item with asset id 3
in the position 6
.7,5
→ Item with asset id 5
in the position 7
.9,4
→ Item with asset id 4
in the position 9
.
Future extensions MAY include:
top_layer
.Revisions SHALL be versioned to maintain clarity and backward compatibility.
Although HRIN is a textual notation and does not execute code, implementations MUST sanitize and validate input strings rigorously to prevent issues such as:
Strict adherence to the syntax and processing guidelines is required for safe implementation.
The following tables list the approved asset mappings. Implementers and developers can use these tables as a reference for rendering icon components.
Notation Id | Image |
---|---|
1 |
![]() |
2 |
![]() |
3 |
![]() |
4 |
![]() |
5 |
![]() |
6 |
![]() |
7 |
![]() |
8 |
![]() |
9 |
![]() |
10 |
![]() |
11 |
![]() |
12 |
![]() |
13 |
![]() |
14 |
![]() |
15 |
![]() |
16 |
![]() |
17 |
![]() |
18 |
![]() |
19 |
![]() |
20 |
![]() |
21 |
![]() |
22 |
![]() |
23 |
![]() |
Notation Id | Image |
---|---|
0 |
No top layer |
1 |
![]() |
2 |
![]() |
3 |
![]() |
4 |
![]() |
5 |
![]() |
6 |
![]() |
7 |
![]() |
8 |
![]() |
9 |
![]() |
10 |
![]() |
11 |
![]() |
Notation Id | Image |
---|---|
1 |
![]() |
2 |
![]() |
3 |
![]() |
4 |
![]() |
5 |
![]() |
6 |
![]() |
7 |
![]() |
8 |
![]() |
9 |
![]() |
10 |
![]() |
11 |
![]() |
12 |
![]() |
13 |
![]() |
14 |
![]() |
15 |
![]() |
16 |
![]() |
17 |
![]() |
18 |
![]() |
19 |
![]() |
20 |
![]() |
21 |
![]() |
22 |
![]() |
23 |
![]() |
24 |
![]() |
25 |
![]() |
26 |
![]() |
27 |
![]() |
Position | Description |
---|---|
0 | Tile 0 |
1 | Tile 1 |
… | … |
10 | Tile 10 |
Quackster/Havana
Habbo server emulatorNappa Hotel
retroHabbo Hotel flash client
decompilation