Website Faviconnotations

Notations and some important data structures used in Habbo Hotel

View the Project on GitHub Habbianos/notations

Habbo Room Icon Notation (HRIN) v1.0

Table of Contents

1. Introduction

1.1 Abstract

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.

Example Icon

1.2 Scope and Intent

1.2.1 This Document

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.

1.2.2 The Notation

HRIN v1 is a textual representation of layered symbols that enables:

1.3 Audience

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.


2. Status of This Document

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.


3. Normative Language

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.


4. Conformance

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:

  1. Follow the grammar defined in Section 5.
  2. Use correct numeric ranges for each field.
  3. Separate the three main components (background, top layer, items) with pipe (|) characters.

5. Syntax Definition

5.1 Overview

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).

5.2 Grammar

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

5.3 Lexical Constraints

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).

5.4 Regular Expression

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]))*$/

6. Processing Model

6.1 Composition Semantics

6.2 Rendering Considerations

6.3 Error Handling

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.


7. Example Entries

7.1. Basic Example

Consider the following example HRIN v1.0 string, considered the default:

1|0|

Default room icon image

Explanation:

7.2. Complete Example

2|9|6,3 7,5 9,4

Party room icon image

Explanation:

7.3. Other Examples

`Cold dog` `Loving bacon` `Rich guy` `Moving furni` `Racing jungle` `Dog at home` `Hot sauna` `Traffic road` `Lost island` `Crowded room`


8. Extensibility and Future Work

Future extensions MAY include:

  1. Additional layers: Introducing mid-layers or cyclic layers beyond top_layer.
  2. Dynamic ranges: Allowing higher ID ranges for backgrounds or items.
  3. Metadata segments: Embedding optional flags or metadata (e.g., animations).

Revisions SHALL be versioned to maintain clarity and backward compatibility.


9. Security Considerations

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.


10. Reference Tables for Room Icon Assets

The following tables list the approved asset mappings. Implementers and developers can use these tables as a reference for rendering icon components.

10.1 Background Assets

Notation Id Image
1 Background 1
2 Background 2
3 Background 3
4 Background 4
5 Background 5
6 Background 6
7 Background 7
8 Background 8
9 Background 9
10 Background 10
11 Background 11
12 Background 12
13 Background 13
14 Background 14
15 Background 15
16 Background 16
17 Background 17
18 Background 18
19 Background 19
20 Background 20
21 Background 21
22 Background 22
23 Background 23

10.2 Top-Layer Assets

Notation Id Image
0 No top layer
1 Top Layer 1
2 Top Layer 2
3 Top Layer 3
4 Top Layer 4
5 Top Layer 5
6 Top Layer 6
7 Top Layer 7
8 Top Layer 8
9 Top Layer 9
10 Top Layer 10
11 Top Layer 11

10.3 Item Assets

Notation Id Image
1 Item 1
2 Item 2
3 Item 3
4 Item 4
5 Item 5
6 Item 6
7 Item 7
8 Item 8
9 Item 9
10 Item 10
11 Item 11
12 Item 12
13 Item 13
14 Item 14
15 Item 15
16 Item 16
17 Item 17
18 Item 18
19 Item 19
20 Item 20
21 Item 21
22 Item 22
23 Item 23
24 Item 24
25 Item 25
26 Item 26
27 Item 27

10.4 Position Mapping

Position Description
0 Tile 0
1 Tile 1
10 Tile 10

11. References


Changelog

⬆️ Back to top

✏️ Edit this page on GitHub