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.

Lantern 0.1.7 Release

January 5, 2024  by  wiz

After a year of development, we're proud to present the next client release for the LanternEQ project. While we had originally planned on having more frequent release cadence, real life obligations slowed development considerably. Furthermore, some features like the audio system turned out to be quite the rabbit hole in terms of complexity and took forever to fully understand and document. Nevertheless, 2023 was a great year for the project and the community and we're proud of what we've accomplished and are excited for the next chapter.

Here are the major changes in this release:

  • Music system - The original EverQuest music system has been reverse engineered and implemented. You can choose between realtime MIDI and recorded audio playback.
  • Audio system - The world is alive with sound. As you wander around the world you can hear wooden doors creak open, the footsteps of guards as they make their patrols and the bubbling of dark swamps.
  • Passive skill system - Skills system has been added and weapon skills will raise as they are used in combat.
  • Guildmaster/training - Players can now learn new skills and improve their skills using training points.
  • Combat system improvements - Combat should feel better as we've fixed a number of issues.
  • Dropping items/coin - Low on bag space? The ground can now be used as your personal storage system.
  • Health/mana tick - Players will now passively regenerate health and mana.
Real-time MIDI Playback
Audio System
Item and coins dropping
Guildmaster training

This is the final single player only release of the LanternEQ client. We're in the process of evaluating networking options and will share more information when we have a path forward. Our first goal is to have players walking around in the world together and for movement to look and feel better than it ever has in EverQuest. Additionally, with the addition of ojrac, our team now comprises three developers, allowing us to intensify our efforts towards the next release.

Onward to great things.

Download

Client downloads for Windows, macOS and Linux are available here.

How To Play

Please refer to our LanternEQ Quickstart Guide.

Lantern 0.1.6 Release

January 27, 2023  by  wiz

Sharpen your blades and memorize those spells, the first passes of combat and spellcasting are here. It has been a busy four months since 0.1.5 but we have delivered on our promise to keep development more focused and our release cadence tighter. While many areas of the game are lacking polish and classic accuracy, with the addition of combat and leveling, the core game loop is now structurally complete. We’re very aware of just how much work there is still to do but we plan on continuing to iterate to completion in the coming releases.

While kicnlag and I have continued working together on the engineering front, I really do need to highlight the incredible work he has done, not only in this release or for the client, but for the project in general. Between his additions to the website, deciphering decompiled code, fixing bugs, and driving entire features, he has been a huge asset to this project and is an important part of why we have been able to pick up steam in the past year. Not to mention, he single-handedly added spellcasting, experience handling, and leveling this release.

It’s also important to give a huge shoutout to two Lantern team members who have continued contributing professional-grade art assets to the project.

Modestlaw has continued to assist not only with our Lantern UI needs, but also with his EverQuest upscale project (available for all EQ clients). His ability to track down source images for even the most blurry textures, create stunningly detailed upscales and paint entirely new textures that fit perfectly into the EQ style continues to blow our minds. You can see more of his work here.

Halas
Snow Orc
Freeport
Kerra Island Temple
Qeynos Arena
Qeynos Gate

Chucktropolis, who has been working in the shadows for the past few years, has unveiled his incredible work on not only generating an entirely custom classic-era zone, Rujarkian Hills, but also his seamless continent rework of Norrath. We will absolutely support these creations inside of Lantern in the coming releases. You can see his continent and custom zone content on his YouTube here.

Zoneless Qeynos To Freeport Run
Zoneless Faydwer Run
Rujarkian Hills

Thank you also to Torven for helping me try to wrap my head around all of the complex combat logic.

Lastly, thank you to everyone that helped test this release: Landon, Zoidberg, vermadas and Umple.

As with the previous release, we’re going to forgo listing out the dozens of small fixes and features and instead focus on the big ones.

Changes

  • Base combat system - Auto-attacking with your primary weapon only. Basic damage and delay formulas. No active skills (e.g. kick, backstab) or passive skills (e.g. dual wield, double attack) have been added. Use hotkey 'T' to toggle auto-attack.
  • Base spellcasting system - Spellcasting routine, cast validation, mana and reagent consumption. Spell effect system has been added. The following effect types are supported:
    • True North
    • Identify
    • Infravision
    • Ultravision
    • Telescope
    • HP (heals/damage)
    • Mana
    • Bind Affinity
    • Gate
    • Create Item
    • Shadow Step
    • Change Form
    • Instant HP
    • Portal
    • Combat Portal
    • Height
    • Weather Control
  • Experience system - Killing NPCs now gives you EXP. All of this data is exposed in config files so that it can be tuned.
  • Leveling - Players can now level up (and down).
  • Death - Upon death, players are teleported back to their bind point.
  • Character slope orientation - Races like humans will stand upright while spiders orient themselves to the surface normal.

Notes:

  • Combat accuracy and damage formulas don’t feel quite right yet. We’re going to continue to work on improving them and expose exactly how the systems work so that we can get feedback and fix issues.
  • Zone persistence is not yet implemented; each time you zone or die, a fresh copy of the zone is created.
  • Bard songs are not yet supported.

Download

Client downloads for Windows, macOS and Linux are available here.

How To Play

Please refer to our LanternEQ Quickstart Guide.

How You Can Help

  • Download and test the build. Let us know what you think!
  • Report any bugs on our bug tracker so that we can fix them.
  • If you have an idea for a feature or improvement, add them to our feature request tracker.

Next Release - 0.1.7

In the next release, we’re focusing on:

  • Combat (formulas, passive skills, configs, documentation)
  • Spellcasting (more effects, configs, documentation)
  • Skills system
  • Guildmaster training
  • Health/mana tick
  • Dropping items/money

LanternExtractor

Changes

  • Add client data copy and sound extraction for LanternEQ client
  • Fix duplicate skeleton bone for Highpass Citizen (HHM)

LanternUnityTools

Changes

  • Update project to generate LanternEQ 0.1.6 compatible asset bundles.
  • Add character slope orientation.
  • Fix a number of animation bugs.
  • Fix skeleton attach point issues.

LanternEQ Website

Changes

  • News section
  • Support page
    • Feature requests
    • Known bugs
    • Report a bug
  • Versioned commands

See you in the next release!

Lantern 0.1.5 Release

September 23, 2022  by  wiz

One year and 1400 code commits later, 0.1.5 is finally ready for release. We've kept it simple this time around and are only listing the big ticket items in the changelog.

Changes

  • Added full game client architecture
  • Added classic lighting system
  • Added overhaul to character controller
  • Added climbing ladder logic
  • Added spell force pushback logic
  • Added ducking
  • Added character creation logic including skill points, starting location, starting items and random name generation
  • Added classic character select music variations (audio disabled)
  • Added pixel perfect targeting for characters, crafting stations and doors
  • Added complete animation system for all characters
  • Added classic character select UI implementation
  • Added support for screen space ambient occlusion and emissive textures
  • Added player vision effects (e.g. infravision/ultravision)
  • Added real time player lights from items
  • Added considering of NPCs
  • Added TOML config system allowing for full customization of game features
  • Added system to fix cross platform shader differences
  • Updated Unity to 2020.3 LTS
  • Fixed mouse positioning issues on Linux and macOS
  • Fixed widescreen FOV issues

Notes

  • Shader asset bundle has been deprecated
  • Titanium and debug UIs have been disabled for this release
  • All audio is disabled for this release

Next Release - 0.1.6

Our client architecture is solid. We’ve made huge strides in decompiling the Trilogy codebase. After taking a step back and reevaluating where we wanted to go next, we reworked the roadmap. The next release, 0.1.6, will introduce (among other things) combat, spellcasting, XP (gain/loss), and leveling. We’re also looking at doing much shorter release cycles (2-3 months) and keeping the feature list smaller to match.

LanternExtractor

The planned 0.2.0 version of the extractor has been renamed 0.1.5 to coincide with the LanternEQ client version. Moving forward, we will keep these versions in lockstep (unless otherwise mentioned).

Changes

  • Added skeletal animations
  • Added character skins
  • Added equipment
  • Added glTF export support
  • Added OBJ zone exports with object instances
  • Fixed numerous bugs

We have also (finally) added documentation in the github wiki: https://github.com/LanternEQ/LanternExtractor/wiki

For further assistance using the extractor please visit the #lantern-support channel in the LanternEQ discord or file a bug report (if appropriate) on the project github repo.

LanternUnityTools

The LanternUnityImporter has outgrown its name as it now does much more than import assets into Unity. This project is now a base on which the LanternEQ client is built and others can build their projects.

The planned 0.2.0 version of the toolset has been renamed 0.1.5 to coincide with the LanternEQ client version. Moving forward, we will keep these versions in lockstep (unless otherwise mentioned).

Changes

  • Added support for exports from version 0.1.5 of the extractor. This includes the creation of drag and drop prefabs for zones, objects, characters, equipment and sky imports.
  • Added open source EQ accurate shaders for URP.
  • Added LanternEQ asset bundle building support.

For assistance using the unity tools please visit the #lantern-support channel in the LanternEQ discord or file a bug report on the project github repo. Please note this is NOT a support channel for basic Unity questions.

LanternEQ Website

Our website (www.lanterneq.com) has been overhauled to contain more information about the client we are building and the data we have reverse engineered from the Trilogy client.

  • Added reference page for LanternEQ controls/hotkeys
  • Added reference page for races
  • Added reference page for zones
  • Added public research docs we have created from our reverse engineering
  • Added additional hover-over info on some roadmap icons

- The Lantern Team

Lantern 0.1.4 Release

August 21, 2021  by  wiz

What's New

Spellcasting and Particle Effects

The largest amount of time spent on any feature this release was getting the spell particle effects reverse engineered and implemented into Unity. No information about the classic particle format existed so it had to be (painfully) deciphered. The spell casting routine and casting logic have also been added. Data effects (i.e. how the spells affect the player/targets) will be implemented with the combat system.

NPC Pathing

The base logic for NPC pathing has been implemented and you are now able to see patrollers (NPCs that follow a specific path) and wanderers (NPCs that move randomly in a predefined area). NPCs will also open doors when they encounter them. There is still additional work to do in the future involving NPCs pathing to players.

Looting

NPCs can now be killed with the /kill command and looted. If they have loot which is visible (weapons, shields, etc), the equipment models will appear on the NPC.

Zone Fixes

One of the goals for this release was to have all zones loading and looking correct. The Lantern Beta team spent a great deal of time going through each zone and identifying dozens of bugs. We're happy to report that most of them have been fixed and as a result, we are now able to load into all 124 zones supported by the client. This includes special cases like the Loading Zone, the Tutorial Zone, and the GM only Sunset Home. Thank you to everyone on the Beta Team for your effort!

Delayed Zone Instantiation

One of the biggest performance issues in Lantern has been loading and rendering zones with a large number of objects. In most zones, the overhead (especially on modern hardware) is negligible, but in some Kunark and Velious zones there are upwards of 24k objects. Creating these objects all at once, especially as most of them are animated, has a huge performance impact with load times taking upwards of 30 seconds and the framerate dipping down into single digits. Objects are now intelligenly pooled, and stream in as you walk around the zone, eliminating both loading and framerate issues.

Debug UI

We've added a debug UI which can be accessed via the backtick (`) key. This UI is always loaded, is separate from the game UI, and houses both a debug console and a canvas for custom editor windows. You can try them out by typing /zone or /spawn without any arguments. Expect more functionality to be added in the coming releases.

Full Changelog

  • Added spell casting routine and visual particle effects
  • Added NPC patrol and wander pathing
  • Added NPC looting + item/money tables
  • Added weather system (rain only - /weather 1)
  • Added delayed zone object instantiation and pooling to improve load times/performance
  • Added /kill command
  • Added /resetui command
  • Added Forage skill
  • Added Sense Heading skill
  • Added Social animations and associated chat messages
  • Added in-game screenshot ability via keypad minus key
  • Added debug console window, invoked via back tick key
  • Added zone picker when /zone has no parameters
  • Added spawn picker when /spawn has no parameters
  • Added Sunset Home (cshome) to list of valid zones
  • Added NPC spawn batching to speed up zone load
  • Added collision to spawned boats
  • Changed zone spawning to use spawn groups and spawn percentages
  • Changed doors to be streamed in on zone load vs created on zone import
  • Fixed dozens of issues and verified that all 124 zones load correctly
  • Fixed raycast logic to correctly place NPCs on the floor and light dynamic objects
  • Fixed raycast to allow for casting against non solid surfaces (e.g. water, lava)
  • Fixed spawning under the world when zoning into a handful of zones
  • Fixed incorrect appearance of some Kobolds
  • Fixed Shadow Men not being invisible
  • Fixed missing zone objects in some Kunark zones
  • Fixed missing light instances in some Kunark zones
  • Fixed issue with mismatched number of vertices and vertex colors
  • Fixed issue with many zones using incorrect fire material
  • Fixed a few issues with the zone loading sequence
  • Fixed incorrect collision on objects with skeletal animation
  • Fixed random hang on start due to incorrect SQLite DLL (thanks mixxit and kicnlag)
  • Fixed character placeholder to be lit correctly
  • Fixed sound issue when moving quickly past NPCs

Download

Windows, macOS and Linux builds are available here: https://drive.google.com/drive/folders/1C9W4mtIOQJ4y2-UwA9VxjIW-AljPlivO?usp=sharing

Asset Bundles

The following asset bundles have been added:

  1. sprites (external) - Contains item, spell gems, spell icons, and spell particle sprites.
  2. ui_debug (external)

The following asset bundles have been updated:

  1. construct - 0.1.4 (included in build)
  2. equipment - 0.1.4 (external)
  3. shaders - 0.1.4 (included in build)
  4. startup - 0.1.4 (external)
  5. characters - 0.1.4 (external)
  6. ui_dev - 0.1.4 (included in build)
  7. ui_titanium - 0.1.4 (external)

New Team Member

We're happy to welcome Landon, community member and Discord server host, to the Lantern team as a Community Manager. Landon deserves special recognition for not only being an early supporter of the project and allowing us to use his server as a home, but for helping us create the type of positive community we want to be a part of. Welcome!

New Website

A new website will be up shortly, (finally) containing a roadmap, guide to getting the client set up and an FAQ page. Stay tuned.

- The Lantern Team

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