News

Lantern 0.1.8 Update

December 29, 2024  by  wiz

With another year of development since the last update, it’s time to share the progress we’ve made, where we stand, and what’s next.

Classic login screen
Server select
Chat
News
What's the status of networking? What is playable?

Three weeks ago, we had our first in-game developer meetup in Qeynos.

Developer meetup

It was the culmination of several months of building our networking infrastructure. We have the following server components up and running:

  • Login Server - Handles account authentication and displays available world servers. Once a player selects a server, it confirms the connection before directing the client to the chosen world server.
  • Chat Server - Provides a central space for players to communicate outside the context of specific game servers.
  • World Server - Manages character creation and tracks players across zones, facilitating transitions between zone servers.
  • Zone Server - Responsible for logic within individual zones, including player and NPC movement, spawns, pathing, and other zone-specific mechanics.
  • Web Server - Interfaces with the login and world servers to enable features like status pages, web-based admin tools, and more.

Anyone familiar with EQEmu will notice that we’ve adopted a very similar setup and for good reason; it works.

As for exactly what’s supported at this moment, it changes daily as features are being moved from the client to the common/server layer. Currently, you can log into an account, connect to a server, create a character and walk around in a zone where you can chat/see/emote to other players. You can also open/close doors. It may not seem like much but most of the in-zone functionality was added just in the past two weeks and reflects that our infrastructure is established to the point where we can start bringing core game functionality online.

Can you share additional technical details?

The server is written in C#, ensuring straightforward integration with the Unity client. This shared language enables us to use a common layer for both server and client, allowing code to be shared between the two.

Full abstraction behind core technologies ensures flexibility. Networking libraries, serialization formats, and databases are all designed to be interchangeable with minimal effort.

Server components (login, world, zones) can be run as standalone processes or as a single process (both single and multithreaded) or can be run embedded in the Unity client (offline mode).

We have chosen LiteNetLib as our networking library. We spend a good amount of time evaluating other options like Mirror and Fish-Networking. It became almost immediately clear that we were not interested in using a library that was “Unity-aware” and provided this functionality out of the box. While it would have been quicker to get things off the ground, there were major concerns about scalability and assumptions that libraries like this make about the way things are implemented and interact with the engine.

The server structure is similar to TAKP (https://www.takproject.net). Keeping it as consistent as possible ensures that those familiar with EQEmu can quickly understand how things work. Improvements have also been made, such as the use of dependency injection to avoid global objects and the aforementioned use of abstraction layers to decouple external libraries from the implementation.

What are the next steps?

With our networking layer operational, it’s time to bring more of the functionality that was working in the previous release online. For some systems, they just need to be moved from the client to the common/server layer. For others, like NPC pathing, they have to be created from scratch. The plan moving forward is to share small updates as each of these features is brought online.

Why has this taken so long?

The main reason that it took so long is that life has been extremely busy for the development team. We all have full time jobs and work on the project in what free time we have available. Regular progress was being made this year but the progress wasn’t really something we felt excited sharing.

Another reason is that while some of us work in games and are familiar with game architecture, none of us are experienced with networked games at the scale that we’re aiming for. There are significant considerations when building software that supports the level of complexity and population of an MMO. It’s fair to say that there has been a great deal of learning taking place in the past year.

Believe us, we’d love nothing more than to dedicate ourselves to this project full time, but the reality of hobby projects is that they have to fit around the demands of daily life.

When will I be able to play?

We don’t have a specific timeline for the next release but we hope that it will be sometime in the coming months. The immediate goal is to ensure all the functionality from version 0.1.7 is fully operational in networked mode. Beyond that, there will likely be concentrated testing on a single server to ensure that the server functions well at scale.

The plan is still in the future for players to have the option to host their own servers. This feature will become available once we’ve reached a point where the game is more complete and playable.

Are you still committed to recreating everything as accurately as possible?

The short answer is: yes, but with some important caveats. As we continue to work on this project, it’s become clear that there are significant opportunities for improvement in many areas. A lot of the original features and systems were built within the constraints of 1999-era technology—limitations that simply don’t apply anymore. While we are dedicated to providing an authentic, classic experience for those who want it, we also recognize the benefits of leveraging over 20 years of advancements in technology and game design.

One of the biggest advantages we have is being free from the restrictions of the original closed-source client that EQEmu was built to support. With access to our own tools and systems, we can recreate certain aspects without those constraints. For instance, we’ve opted not to replicate the classic player movement system exactly as it was. The original implementation was imprecise and players would essentially snap around on a grid. It’s possible that we will emulate those inaccuracies for those that want it, but our primary goal is reimplementing things in a way we’d like to play them.

This philosophy extends beyond movement to other areas as well. We’re always evaluating where it makes sense to innovate and where it’s important to remain faithful to the classic experience. We’ll continue to share more about these improvements in future updates.

What about offline mode? Is it still supported?

Yes, offline mode without any additional setup is functional and accessible from a single click on the login screen.

Will EQEmu integration be supported?

The hopeful answer is that yes, it will be. The plan is that the LanternEQ client will be able to connect to TAKP based servers. There are still a lot of details to work out and obvious challenges, but we have been working with their developers to ensure our code is as compatible as possible.

Thank you all for your continued support and interest and we’re excited to share more updates in the new year.

© 2024 Project Lantern. EverQuest is a registered trademark of Daybreak Game Company LLC.