Notations and some important data structures used in Habbo Hotel
Nota
Este documento es una traducción del original. Si observas inconsistencias con el contenido del juego en este idioma, por favor, avísanos para que podamos corregir la localización.
Habbo Avatar Figure Notation (HAFN) v2 es un estándar para la notación de strings de texto diseñado para representar apariencias de avatares de Habbo usando códigos compactos separados por puntos. Cada string codifica datos estructurados que representan partes de la figura, set IDs y color IDs, y se basa en los datos expuestos por la figuredata
disponible.
Aunque HAFN v2 refleja cómo se codifican las figuras de avatar en las URLs de Habbo y en los sistemas backend, no es una notación oficial de Sulake, y futuros cambios podrían no ser adoptados por Sulake.
Esta especificación existe para formalizar y documentar cómo Habbo codifica strings de figura de avatar para renderización y personalización. Está dirigida a:
figuredata
disponibles públicamente.HAFN v2 es una representación textual de la configuración del avatar que permite:
NO incluye elementos adicionales como acciones del avatar y efectos visuales, tal como se describe en la Sección 8.
Este documento está dirigido a desarrolladores, archivistas, modders y entusiastas de la comunidad Habbo que trabajan en herramientas y experiencias relacionadas con avatares. Se recomienda familiaridad con manipulación de strings y análisis de XML (para leer figuredata
).
HAFN v2.0 define la estructura actualmente conocida de strings de los avatares de Habbo, basada en el comportamiento de análisis observado en Habbo Hotel y es personalizable mediante el archivo figuredata
.
HAFN es mantenido por la comunidad. Aunque coincide con los patrones de uso actuales, Sulake puede cambiar el formato en cualquier momento. Futuras extensiones intentarán preservar la retrocompatibilidad siempre que sea posible.
Las palabras clave “DEBE”, “NO DEBE”, “OBLIGATORIO”, “DEBERÁ”, “NO DEBERÁ”, “RECOMENDADO”, “PUEDE” y “OPCIONAL” en este documento deben interpretarse según lo descrito en RFC 2119.
Una implementación se considera conforme con HAFN v2.0 si sigue la syntax, la lógica de validación y las reglas de resolución definidas en este documento. Una implementación de analizador (parser) conforme:
figuredata
válida.figuredata
actual.Una string válida de HAFN v2.0 DEBE:
figuredata
.Una string HAFN v2 codifica la apariencia completa de un avatar de Habbo. Consiste en múltiples partes de figura, separadas por puntos (.
). Cada parte codifica un tipo, un set ID y hasta dos color IDs.
La Forma de Backus-Naur Extendida (EBNF) que sigue define el syntax de HAFN v2.0:
<figure> ::= <part> ("." <part>)*
<part> ::= <type> "-" <setId> [ "-" <colorId1> [ "-" <colorId2> ] ]
<type> ::= "hr" | "hd" | "ch" | "lg" | "sh" | "ea" | "cc" | ... ; (ver figuredata)
<setId> ::= <positiveInteger>
<colorId1> ::= <positiveInteger>
<colorId2> ::= <positiveInteger>
Campo | Tipo | Descripción |
---|---|---|
type |
Cadena | Un tipo de parte válido según figuredata |
setId |
Entero | Un set ID válido perteneciente al tipo de parte especificado |
colorId1 |
Entero | Un color ID válido primario (PODRÍA ser obligatorio según la parte) |
colorId2 |
Entero | Un color ID válido secundario, es OPCIONAL (para partes con dos capas de color) |
Cada parte DEBE corresponder a una entrada set
existente en figuredata
bajo <settype type="...">
.
La siguiente expresión regular puede usarse para validar la estructura general de una string HAFN v2.0:
(?:[a-z]{2}-\d+(?:-\d+(?:-\d+)?)?)(?:\.(?:[a-z]{2}-\d+(?:-\d+(?:-\d+)?)?))*
Cada parte se separa con un punto (.
). El parser DEBE:
.
para extraer partes individuales-
para identificar tipo, set ID y colores opcionalesfiguredata
actualizadafiguredata
bajo <settype type="...">
paletteid
) referenciada por la definición de ese setCódigo de Error | Descripción |
---|---|
ERR_UNKNOWN_TYPE | type no encontrado en el figuredata actual |
ERR_INVALID_SETID | Set ID no definido para el tipo especificado |
ERR_INVALID_COLOR | Color ID no válido para la paleta usada en el set |
ERR_FORMAT_SYNTAX | Falta - , uso incorrecto de delimitadores, formato de partes inválido |
ERR_PART_INCOMPLETE | Falta set ID o color ID obligatorio |
Un parser conforme con HAFN DEBE rechazar strings inválidas y reportar el error apropiado.
Considere el siguiente ejemplo de string HAFN v2.0:
hr-890-45.hd-600-10.ch-665-1408.lg-716-1408-1408
Explicación:
hr-890-45
→ Cabello, set ID 890
, color 45
hd-600-10
→ Cabeza, set ID 600
, color 10
ch-665-1408
→ Camisa (pecho), set ID 665
, color 1408
lg-716-1408-1408
→ Pantalones (piernas), set ID 716
, color primario y secundario 1408
El avatar puede tener muchas más partes definidas:
hr-802-37.hd-180-1.ch-3030-1408.lg-3023-64.sh-3068-1408-64.ea-1403-1408.cc-3280-64-1408.cp-3284-64
Explicación:
hr-802-37
→ Cabello, set ID 802
, color 37
hd-180-1
→ Cabeza, set ID 180
, color 1
ch-3030-1408
→ Camisa, set ID 3030
, color 1408
lg-3023-64
→ Pantalones, set ID 3023
, color 64
sh-3068-1408-64
→ Zapatos, set ID 3068
, color primario 1408
, secundario 64
ea-1403-1408
→ Gafas, set ID 1403
, color 1408
cc-3280-64-1408
→ Abrigo, set ID 3280
, color primario 64
, secundario 1408
cp-3284-64
→ Estampado, set ID 3284
, color 64
Existen otros aspectos relacionados con la figura del avatar que no estan cubiertos por esta especificación, como prendas que usan múltiples partes, acciones del avatar (por ejemplo, acostarse, sentarse, saludar, bailar) y efectos visuales. Estos elementos no estan presentes en la notación en sí y deben considerarse puramente informativos en este documento; estos no definen ni alteran la notación en ningún sentido.
A continuación tienen enlaces a fuentes de datos relevantes usadas para calcular o renderizar esos elementos. En un futuro se puede redactar documentación adicional para explicarlos con más detalle:
Futuras versiones PODRÍAN incluir:
Las revisiones de la especificación DEBERÁN versionarse adecuadamente, y la retrocompatibilidan DEBERÍA mantenerse mientras sea posible.
Aunque HAFN v2 es una notación textual y no ejecuta código, las implementaciones DEBEN sanitizar y validar rigurosamente las input strings para prevenir:
Importante
Las strings HAFN v2 no verifican la propiedad de ropa o colores. Solo representan la apariencia y no deben usarse para imponer acceso o la propiedad de partes de la figura.
La estricta adherencia al syntax y a las directrices de procesamiento son requeridas para una implementación segura.
figuredata
de Habbo, Habbo.es. Disponible en: https://www.habbo.es/gamedata/figuredata/1external_flash_texts
de Habbo, Habbo.es. Disponible en: https://www.habbo.es/gamedata/external_flash_texts/1Este documento fue desarrollado con contribuciones de:
v1
a v2
para permitir que v1
sea la notación basada en números.La siguiente tabla enumera los identificadores de dos letras actualmente soportados utilizados para las partes de la figura del avatar, junto con sus nombres, íconos y ejemplos.
Nombre de Categoría | Ícono de Categoría | Identificador de Subcategoría ▲ | Nombre de Subcategoría | Ícono de Subcategoría | Ejemplos |
---|---|---|---|---|---|
Torso | ![]() |
ca |
Joyería (accesorios superiores) | ![]() ![]() |
|
Torso | ![]() |
cc |
Abrigos | ![]() ![]() |
|
Torso | ![]() |
ch |
Camisas | ![]() ![]() |
|
Torso | ![]() |
cp |
Serigrafías | ![]() ![]() |
|
Cabeza | ![]() |
ea |
Lentes (accesorios faciales) | ![]() ![]() |
|
Cabeza | ![]() |
fa |
Máscaras (accesorios de cara) | ![]() ![]() |
|
Cabeza | ![]() |
ha |
Sombreros | ![]() ![]() |
|
Cuerpo | ![]() |
hd |
Cara & Cuerpo | ![]() ![]() ![]() ![]() |
|
Cabeza | ![]() |
he |
Accesorios | ![]() ![]() |
|
Cabeza | ![]() |
hr |
Cabellos | ![]() ![]() |
|
Piernas | ![]() |
lg |
Pantalones | ![]() ![]() |
|
Piernas | ![]() |
sh |
Zapatos | ![]() ![]() |
|
Piernas | ![]() |
wa |
Cinturones (accesorios inferiores) | ![]() ![]() |