Packets

Credit: A large portion of this section was written by humanoid24, lcdr, and pwjones (Google Docs main, client, server, and replica). Go back to main page>
The purpose of this document is to list and protocol all the information about the network packets of the game LEGO Universe. For details about client/server/replica packets refer to the respective documents (Client packets, Server packets, and Replica packets); the data and info listed here is used in all these documents and/or by both client and server.

Disclaimer: The LEGO® Group has not endorsed or authorized the operation of this game and is not liable for any safety issues in relation to the operation of this game. All files are under the General Public License, version 3, and are only for use on a non-commercial basis.

At this point all the structures are interpretation dependent which means that the data types (and with that the length) of each structure are not necessarily correct and should only be corrected if they are proven to be wrong (or if they make more sense). All strings that are not variable are null terminated, therefore their real length is [occupied space]-1*character size, also if they have a fixed size and the string doesn't occupy the whole space, the bytes after the null terminator can be random. Variable strings are not null terminated but honor null termination if a null character is inserted. If any single hex numbers are used they should be marked as such (preceding 0x), for consecutive numbers that are taken directly from the data (like packet headers) this doesn't have to be the case. All integers and floating point numbers are in little endian meaning that you have to read the occupied space in reverse to get the number, if you think there are some numbers that are in big endian, mark them as such.

Structure Documentation Format

Sort of formal definition (in EBNF): For sake of simplicity I'm not defining alphanumeric and any-character here
variable = {alphanumeric | "_"}
variable-assign = variable, "=";
octal-digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7";
decimal-digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
hex-digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "a" | "b" | "c" | "d" | "e" | "f";
bit = "BIT:", octal-digit
address = "A:0x", {hex-digit}, [bit];
length = "L:", {decimal-digit}, [bit];
struct-info = [address], length;
struct = "[", (struct-info | variable), "]";
description = any-character;
struct-definition = {"\t"}, [variable-assign], struct, " - ", description, ", ", type;
For possible values for type, see list below, e.g:
[A:0x00,L:1] - struct 1, u8
[L:4] - struct 2, u32
	[L:1] - struct repeated [struct 2] times, u8
another_struct=[L:4] - another struct, u32
[another_struct]
	[L:2] - struct repeated [another_struct] times, u16

Reference

Packet Header

Size: 8 bytes

Packet List

Format:
[header] - according enum name taken from the client executable - more descriptive name
Packet Color Index: All Servers (MSG_SERVER_):
53-00-00-00 - VERSION_CONFIRM   - Handshake (both client and server)
53-00-00-01 - DISCONNECT_NOTIFY - Disconnect notify
53-00-00-02 - GENERAL_NOTIFY    - General notify
Chat (MSG_CHAT_):
53-02-00-00 - LOGIN_SESSION_NOTIFY
53-02-00-01 - GENERAL_CHAT_MESSAGE                    - Public chat message
53-02-00-02 - PRIVATE_CHAT_MESSAGE                    - Private chat message
53-02-00-03 - USER_CHANNEL_CHAT_MESSAGE
53-02-00-04 - WORLD_DISCONNECT_REQUEST
53-02-00-05 - WORLD_PROXIMITY_RESPONSE
53-02-00-06 - WORLD_PARCEL_RESPONSE
53-02-00-07 - ADD_FRIEND_REQUEST
53-02-00-08 - ADD_FRIEND_RESPONSE
53-02-00-09 - REMOVE_FRIEND
53-02-00-0a - GET_FRIENDS_LIST
53-02-00-0b - ADD_IGNORE
53-02-00-0c - REMOVE_IGNORE
53-02-00-0d - GET_IGNORE_LIST
53-02-00-0e - TEAM_MISSED_INVITE_CHECK
53-02-00-0f - TEAM_INVITE
53-02-00-10 - TEAM_INVITE_RESPONSE
53-02-00-11 - TEAM_KICK
53-02-00-12 - TEAM_LEAVE
53-02-00-13 - TEAM_SET_LOOT
53-02-00-14 - TEAM_SET_LEADER
53-02-00-15 - TEAM_GET_STATUS
53-02-00-16 - GUILD_CREATE
53-02-00-17 - GUILD_INVITE
53-02-00-18 - GUILD_INVITE_RESPONSE
53-02-00-19 - GUILD_LEAVE
53-02-00-1a - GUILD_KICK
53-02-00-1b - GUILD_GET_STATUS
53-02-00-1c - GUILD_GET_ALL
53-02-00-1d - SHOW_ALL
53-02-00-1e - BLUEPRINT_MODERATED
53-02-00-1f - BLUEPRINT_MODEL_READY
53-02-00-20 - PROPERTY_READY_FOR_APPROVAL
53-02-00-21 - PROPERTY_MODERATION_CHANGED
53-02-00-22 - PROPERTY_BUILDMODE_CHANGED
53-02-00-23 - PROPERTY_BUILDMODE_CHANGED_REPORT
53-02-00-24 - MAIL
53-02-00-25 - WORLD_INSTANCE_LOCATION_REQUEST
53-02-00-26 - REPUTATION_UPDATE
53-02-00-27 - SEND_CANNED_TEXT
53-02-00-28 - GMLEVEL_UPDATE
53-02-00-29 - CHARACTER_NAME_CHANGE_REQUEST
53-02-00-2a - CSR_REQUEST
53-02-00-2b - CSR_REPLY
53-02-00-2c - GM_KICK
53-02-00-2d - GM_ANNOUNCE
53-02-00-2e - GM_MUTE
53-02-00-2f - ACTIVITY_UPDATE
53-02-00-30 - WORLD_ROUTE_PACKET
53-02-00-31 - GET_ZONE_POPULATIONS
53-02-00-32 - REQUEST_MINIMUM_CHAT_MODE
53-02-00-33 - REQUEST_MINIMUM_CHAT_MODE_PRIVATE
53-02-00-34 - MATCH_REQUEST
53-02-00-35 - UGCMANIFEST_REPORT_MISSING_FILE
53-02-00-36 - UGCMANIFEST_REPORT_DONE_FILE
53-02-00-37 - UGCMANIFEST_REPORT_DONE_BLUEPRINT
53-02-00-38 - UGCC_REQUEST
53-02-00-39 - WHO
53-02-00-3a - WORLD_PLAYERS_PET_MODERATED_ACKNOWLEDGE
53-02-00-3b - ACHIEVEMENT_NOTIFY                      - Chat Achievement notify
53-02-00-3c - GM_CLOSE_PRIVATE_CHAT_WINDOW
53-02-00-3d - UNEXPECTED_DISCONNECT
53-02-00-3e - PLAYER_READY
53-02-00-3f - GET_DONATION_TOTAL
53-02-00-40 - UPDATE_DONATION
53-02-00-41 - PRG_CSR_COMMAND
53-02-00-42 - HEARTBEAT_REQUEST_FROM_WORLD
53-02-00-43 - UPDATE_FREE_TRIAL_STATUS
Client Auth (MSG_AUTH_):
53-01-00-00 - LOGIN_REQUEST               - Login info
53-01-00-01 - LOGOUT_REQUEST
53-01-00-02 - CREATE_NEW_ACCOUNT_REQUEST
53-01-00-03 - LEGOINTERFACE_AUTH_RESPONSE
53-01-00-04 - SESSIONKEY_RECEIVED_CONFIRM
53-01-00-05 - RUNTIME_CONFIG
Client World (MSG_WORLD_):
53-04-00-00
53-04-00-01 - CLIENT_VALIDATION                     - Session info
53-04-00-02 - CLIENT_CHARACTER_LIST_REQUEST
53-04-00-03 - CLIENT_CHARACTER_CREATE_REQUEST
53-04-00-04 - CLIENT_LOGIN_REQUEST                  - Character selected
53-04-00-05 - CLIENT_GAME_MSG
53-04-00-06 - CLIENT_CHARACTER_DELETE_REQUEST
53-04-00-07 - CLIENT_CHARACTER_RENAME_REQUEST
53-04-00-08 - CLIENT_HAPPY_FLOWER_MODE_NOTIFY
53-04-00-09 - CLIENT_SLASH_RELOAD_MAP               - Reload map cmp
53-04-00-0a - CLIENT_SLASH_PUSH_MAP_REQUEST         - Push map req cmd
53-04-00-0b - CLIENT_SLASH_PUSH_MAP                 - Push map cmd
53-04-00-0c - CLIENT_SLASH_PULL_MAP                 - Pull map cmd
53-04-00-0d - CLIENT_LOCK_MAP_REQUEST
53-04-00-0e - CLIENT_GENERAL_CHAT_MESSAGE           - General chat message
53-04-00-0f - CLIENT_HTTP_MONITOR_INFO_REQUEST
53-04-00-10 - CLIENT_SLASH_DEBUG_SCRIPTS            - Debug scripts cmd
53-04-00-11 - CLIENT_MODELS_CLEAR
53-04-00-12 - CLIENT_EXHIBIT_INSERT_MODEL
53-04-00-13 - CLIENT_LEVEL_LOAD_COMPLETE            - Character data request
53-04-00-14 - CLIENT_TMP_GUILD_CREATE
53-04-00-15 - CLIENT_ROUTE_PACKET                   - Social (?)
53-04-00-16 - CLIENT_POSITION_UPDATE                - Position update
53-04-00-17 - CLIENT_MAIL
53-04-00-18 - CLIENT_WORD_CHECK                     - Whitelist word check
53-04-00-19 - CLIENT_STRING_CHECK                   - Whitelist string check
53-04-00-1a - CLIENT_GET_PLAYERS_IN_ZONE
53-04-00-1b - CLIENT_REQUEST_UGC_MANIFEST_INFO
53-04-00-1c - CLIENT_BLUEPRINT_GET_ALL_DATA_REQUEST
53-04-00-1d - CLIENT_CANCEL_MAP_QUEUE
53-04-00-1e - CLIENT_HANDLE_FUNNESS                 - Performance issue (?)
53-04-00-1f - CLIENT_FAKE_PRG_CSR_MESSAGE
53-04-00-20 - CLIENT_REQUEST_FREE_TRIAL_REFRESH
53-04-00-21 - CLIENT_GM_SET_FREE_TRIAL_STATUS
// unsure about these, depends on whether only MSG_WORLD_CLIENT_* names were used for packets or generally MSG_WORLD_* names (though the former wouldn’t make sense with the id 78 and leave it unoccupied)
53-04-00-22 - Top 5 issues request                  - Theoretical packet
53-04-00-23 - UGC download failed (?)               - Theoretical packet
53-04-00-24
53-04-00-25
53-04-00-26
53-04-00-27
53-04-00-28
53-04-00-29
53-04-00-30
53-04-00-31
53-04-00-32
53-04-00-33
53-04-00-34
53-04-00-35
53-04-00-36
53-04-00-37
53-04-00-38
53-04-00-39
53-04-00-40
53-04-00-41
53-04-00-42
53-04-00-43
53-04-00-44
53-04-00-45
53-04-00-46
53-04-00-47
53-04-00-48
53-04-00-49
53-04-00-50
53-04-00-51
53-04-00-52
53-04-00-53
53-04-00-54
53-04-00-55
53-04-00-56
53-04-00-57
53-04-00-58
53-04-00-59
53-04-00-60
53-04-00-61
53-04-00-62
53-04-00-63
53-04-00-64
53-04-00-65
53-04-00-66
53-04-00-67
53-04-00-68
53-04-00-69
53-04-00-70
53-04-00-71
53-04-00-72
53-04-00-73
53-04-00-74
53-04-00-75
53-04-00-76
53-04-00-77
53-04-00-78 - UGC download failed (ID would fit with the biggest enum available)
World Server (MSG_CLIENT_):
53-05-00-00 - LOGIN_RESPONSE
53-05-00-01 - LOGOUT_RESPONSE
53-05-00-02 - LOAD_STATIC_ZONE                   - World info
53-05-00-03 - CREATE_OBJECT
53-05-00-04 - CREATE_CHARACTER                   - Character data
53-05-00-05 - CREATE_CHARACTER_EXTENDED
53-05-00-06 - CHARACTER_LIST_RESPONSE            - Character list
53-05-00-07 - CHARACTER_CREATE_RESPONSE
53-05-00-08 - CHARACTER_RENAME_RESPONSE          - Character rename
53-05-00-09 - CHAT_CONNECT_RESPONSE              - Chat service response
53-05-00-0a - AUTH_ACCOUNT_CREATE_RESPONSE
53-05-00-0b - DELETE_CHARACTER_RESPONSE
53-05-00-0c - GAME_MSG                           - Server Update
53-05-00-0d - CONNECT_CHAT
53-05-00-0e - TRANSFER_TO_WORLD                  - Redirection
53-05-00-0f - IMPENDING_RELOAD_NOTIFY
53-05-00-10 - MAKE_GM_RESPONSE                   - GMlevel change
53-05-00-11 - HTTP_MONITOR_INFO_RESPONSE
53-05-00-12 - SLASH_PUSH_MAP_RESPONSE            - Push map
53-05-00-13 - SLASH_PULL_MAP_RESPONSE            - Pull map
53-05-00-14 - SLASH_LOCK_MAP_RESPONSE            - Lock map
53-05-00-15 - BLUEPRINT_SAVE_RESPONSE
53-05-00-16 - BLUEPRINT_LUP_SAVE_RESPONSE
53-05-00-17 - BLUEPRINT_LOAD_RESPONSE_ITEMID
53-05-00-18 - BLUEPRINT_GET_ALL_DATA_RESPONSE
53-05-00-19 - MODEL_INSTANTIATE_RESPONSE
53-05-00-1a - DEBUG_OUTPUT
53-05-00-1b - ADD_FRIEND_REQUEST                 - Friend request
53-05-00-1c - ADD_FRIEND_RESPONSE                - Friend request response
53-05-00-1d - REMOVE_FRIEND_RESPONSE
53-05-00-1e - GET_FRIENDS_LIST_RESPONSE          - Friends list
53-05-00-1f - UPDATE_FRIEND_NOTIFY               - Friend update
53-05-00-20 - ADD_IGNORE_RESPONSE                - Add blocked
53-05-00-21 - REMOVE_IGNORE_RESPONSE             - Remove blocked
53-05-00-22 - GET_IGNORE_LIST_RESPONSE           - Blocked list
53-05-00-23 - TEAM_INVITE
53-05-00-24 - TEAM_INVITE_INITIAL_RESPONSE
53-05-00-25 - GUILD_CREATE_RESPONSE
53-05-00-26 - GUILD_GET_STATUS_RESPONSE          - Guild get status
53-05-00-27 - GUILD_INVITE
53-05-00-28 - GUILD_INVITE_INITIAL_RESPONSE
53-05-00-29 - GUILD_INVITE_FINAL_RESPONSE
53-05-00-2a - GUILD_INVITE_CONFIRM
53-05-00-2b - GUILD_ADD_PLAYER
53-05-00-2c - GUILD_REMOVE_PLAYER
53-05-00-2d - GUILD_LOGIN_LOGOUT                 - Guild login/logout
53-05-00-2e - GUILD_RANK_CHANGE
53-05-00-2f - GUILD_DATA
53-05-00-30 - GUILD_STATUS
53-05-00-31 - MAIL
53-05-00-32 - DB_PROXY_RESULT
53-05-00-33 - SHOW_ALL_RESPONSE                  - Online player list
53-05-00-34 - WHO_RESPONSE                       - Player location response
53-05-00-35 - SEND_CANNED_TEXT                   - Chat message send failure response
53-05-00-36 - UPDATE_CHARACTER_NAME
53-05-00-37 - SET_NETWORK_SIMULATOR
53-05-00-38 - INVALID_CHAT_MESSAGE
53-05-00-39 - MINIMUM_CHAT_MODE_RESPONSE
53-05-00-3a - MINIMUM_CHAT_MODE_RESPONSE_PRIVATE
53-05-00-3b - CHAT_MODERATION_STRING
53-05-00-3c - UGC_MANIFEST_RESPONSE
53-05-00-3d - IN_LOGIN_QUEUE
53-05-00-3e - SERVER_STATES                      - Server states/status
53-05-00-3f - GM_CLOSE_TARGET_CHAT_WINDOW        - GM quit private chat
53-05-00-40 - GENERAL_TEXT_FOR_LOCALIZATION
53-05-00-41 - UPDATE_FREE_TRIAL_STATUS
possible ids 42 to 6b (?)

Chat Packet Structure

SC_[53-02-00-01] (chat message)
Size: variable SC_[53-02-00-02] (private chat message)
Size: variable

Game Messages

29 00 - Speedchat
76 00 - EchoStartSkill
77 00 - StartSkill
7f 00 - Action bar skill
9a 00 - PlayFXEffect?
9b 00 - StopFXEffect?
e0 00 - Inventory Item slot move
e6 00 - Item deletion / Item dragging to trash
e7 00 - Item equip
6c 01 - Object interact
fd 01 - walking? reloads items in inventory?
07 02 - Survey URL
0d 03 - game object message? uses lego data type format
52 03 - ParseChatMessage - Chat Command
5a 03 - SlashCommandFeedbackText? - (System?) Chat message
64 03 - Trade Request
78 03 - ReadyForUpdates? - Replica creation confirm?
7f 04 - DoClientProjectileImpact (confirmed by game logs, use this as reference point)
a0 04 - GUI Message
bc 05 - imagination bar fill up?
e6 05 - News panel Top Properties response
e7 05 - News panel Top Properties request

LEGO Data Format (LDF) and data type IDs

This binary data format is used in various packets, for example the chardata packet.

[L:4] - number of keys

These data type IDs are used in boot.cfg, client settings, and the binary part of the chardata packet.

0. String (variable wstring?)
1. s32
3. Float (32bit, signed)
5. u32
7. Boolean (0 or 1)
8. s64
9. s64, Used only for (object?) IDs?
13. in chardata this was XML data, in client settings checksum ?