LEGO Universe
In 2011, LEGO Universe, a massively-multiplayer online role play game by the LEGO Group has been shutdown, making it impossible to play the game anymore. The original servers went offline, and the clients could not work anymore.
Since before the closing, fans have worked on creating custom servers to replace the official ones, and this effort has been continued to this day.
Originally, humanoid24 created a first test server, which was improved upon as the LUNI Server by a community lead by raffa505. That project, with contributions by jon002, CuzItsJonny and myself (Xiphoseer) can be found in its latest iteration at https://github.com/LUNIServer/UniverseServer.
Another implementation based on humanoids original test version is DLU by DarwinAnim8or which is currently developed in private by him and a team of developers including TheMachine, Jon002, Matt/Extra and myself.
humanoid is still working on an implementation of the server, joined by lcdr. They have released a detailed documentation of their findings at https://docs.google.com/document/d/1v9GB1gNwO0C81Rhd4imbaLN7z-R0zpK5sYJMbxPP3Kc. Most of this work has only been possible because pwjones has captured and released network traffic from the original game.
To read more about the backstory of LU server development, consider reading A bit of backstory, if you haven’t already done so.
If you want to set up a server, you will need to compile a public project yourself or write your own server with the help of the documentation, since most public binarys are either incomplete, corrupted or out of date. Keep in mind that hosting unfinished software on your machine will likely make it vulnerable to malicious activities and all public versions use the official RakNet implementation which is requires a Windows operating system.
Public Servers
Even before multiplayer was introduced, people wanted to have public servers to play with their friends. This was first possible when I published my source that contained multiplayer functionality, leading to CDFalcon setting up the first public server. At this point, CuzItsJonny provides the only sane public server at http://jonnyvps.de/. Other servers may exist, but I strongly discourage using them, as server owners without knowledge on how to fix bugs and maintain the server should not be encouraged.
Client
The game initially had two modes to download the game data. Full Download would take multiple hours, but you would have all game files required on your PC. The ‘As required’ mode downloaded the files just before you needed them, making it possible to start the game with barely any download time. Most people have chosen the second option for obvious reasons, this is the reason why clients that still work are so rare.
One complete client available is the Blast Client, by BlasterBuilder, available at either OneDrive or MEGA. Blast Client includes boot.cfg files to connect to different public servers that exist.
There is also a client branded Nexus2, which has been artificially reassembled, which works fine in most cases (I still use it), but may not be your best choice.
If you have an old client of around 10GB in size, ideally with a different version or language than the Blast Client lying around, feel free to send me a message on Skype (Xiphoseer), to see if it contains data that is not yet known.
Footnote
Yes, the LUNI Server mentioned here is the project that Timtech advertised. He has been given donations to make a public server and failed to do so, never contributed anything relevant to the source, and made the original developers abandon LUNI. It’s not his project, he just ended up killing it.
UPDATE 06.01.2016: CuzItsJonnys server is no longer available, due to malicious activity against him. He might reopen a private whitelisted server at some point.
Is this post up to date? Is the detailed document with the original packets found by pwJones also up to date? Interested in helping with the development side of things but want to learn more on how projects such as DLU are able to implement all the things they have.
LikeLike
The document with the packets should be up-to-date / complete as far as I know. There is also a (proof of concept) port of the docs at lu-docs.rtfd.io. What is not written down is how the database (CDClient) relates to features ingame, and there is additonal info on how the game worked over at https://legouniverse.wikia.com. As for this post, there is currently no public server available, though both DLU (https://darkflameuniverse.org) and LCDR (https://lcdruniverse.org) are currently in closed alpha. If you want to get into development, lcdr’s tools are quite helpful (fdb->sqlite) until better editors become commonly available (Simon or Avery were working on FDB editors).
As a personal note: Writing a full server emulator by yourself is hard. Opening up fully public servers (from the start) will likely fail, and may make people angry, depending on how it’s handled. You won’t get the source of the larger projects to look at and understand. But by all means, if you have the time and motivation to look into the game systems, go ahead, you’ll find a few people that are happy to discuss individual systems with you, and if you like, contribute your findings to the documentation.
If you haven’t already, join the LUCH discord at: https://discord.gg/7xZzH8p
LikeLike
(Thanks for the reply!) I’m not interested in setting up a public server myself, I agree that would be pretty difficult for one guy. I’m not a pro by any means, actually have some questions about the packets and how to interpret the data they send. I’m currently using Microsoft Message Analyzer, understand the ports and addresses but not sure how to fully read the packet data, for instance how did you find out the Zone ID’s? I would assume those were found in the packets? Understand you’re busy so reply whenever you get the chance
Here’s the link to my screenshot of the packet data for logging in. https://ibb.co/jjUemS
(Relates to the Server AUTH log in http://lu-docs.readthedocs.io/en/latest/server.html)
Thanks again
LikeLike
Upfront, I’d like to recommend the discord to you for these kinds of questions, as I had already written an answer earlier, but my phone browser froze and I couldn’t send it.
As for the actual question: The zone ids can indeed be found in the packets although we have the client database (CDClient) available which contains the full list of all zones. Only the checksums needed to load a world do come from the packets. I know some people found a way to calculate them, but I don’t know how.
The payload of the packets is usually byte-aligned so any hex editor is sufficient to do some manual digging. Game messages are more tricky as they are not byte aligned and somewhat space-optimized. In any case, there is a packetviewer in lcdr_utils.
The docs should have most packets fully documented, and reading them should be as simple as step-by-step processing/reading the payload as described in the docs, where indentation means conditional or looped.
LikeLike
0 Pingbacks