Skip to content

Latest commit

Β 

History

History
245 lines (225 loc) Β· 6.59 KB

File metadata and controls

245 lines (225 loc) Β· 6.59 KB

l2cpp

Lineage 2, Chronicle 4: Scions of Destiny C++23 emulation servers.

This is my latest passion project. I've been wanting to do this since I was 15, and here I am 16 years later with enough programming skills to do this on my own.

Even though I never played C4 (began on Interlude), I'm targeting this one because the game is less big and the protocol is slightly easier. I'd love to support more protocols in the future.

The goal

Go fast (but not too fast) and break things. YAGNI. Implement game design patterns I've studied years ago. Don't be too clever but have fun implementing and testing. DO NOT USE MULTIPLE THREADS. Leverage async code instead.

Future releases

See the Unrealeased section of CHANGELOG.md

What's available?

If it's not in the list, it's probably not implemented, or very (very) partially implemented. Here's what's been done so far:

Core

  • Packet creation, reading and sending;
  • Auth & Game protocols encryption/decryption;
  • Exception stack handling.

Login Server

  • Protocol c621 only;
  • Users can log in with any credentials, account is created if non existent;
  • Server list always displays 2 server (to test one up, one down), both lead to game server.

Game Server

Category Feature Status Details
Authentication Supported protocols 656
Lobby Character creation 🟠 Base stats are the same for all races/profession.
Character deletion 🟒 ⚠️ Deletion is instantaneous!
Character selection 🟒 Every character spawns at Talking Island.
Inventory List 🟒
Equip gear 🟠 No effects applied yet.
Starting items 🟒 Can be configured per starting profession and/or globally.
Gear items can be set to equipped.
Item templates database 🟠 Most templates are missing due to datapack conversion effort needed.
Status Window Display values 🟒
Refresh on update 🟒 Optimization: max. once per World update.
Mini-Map Open/Close 🟠 World map only.
Party members location πŸ”΄
In-game time 🟒
Social Send/Receive messages 🟒
Send/Receive private messages 🟠 Visually only.
Chat restrictions πŸ”΄
System messages 🟒
Social actions 🟒
Combat Auto-attacking 🟒 Until target is dead.
Corpse removal 🟒
Skills List 🟒
Learn 🟠 Via admin command only.
Use 🟒 Single and multiple targets animation.
Effects 🟠 Available effects:
  • Instant buff (e.g. Wind Walk)
  • Toggle buff (e.g. Super Haste)
  • Instant damage (e.g. Wind Strike)
  • Damage over time (e.g. Poison)
  • Instant heal (e.g. Battle Heal)
  • Heal over time (e.g. Chant of Life)
  • Resurrection (e.g. Mass Resurrection)
Prerequisites 🟠 No mana/health consumption yet.
Target matching combination is possible.
Skill templates database 🟠 All skills loaded with bare minimum info.
Cast cancellation 🟒
Shortcuts Add/Replace/Remove 🟠 Limited to skills, items and actions.
Movement Left-click 🟠 No checks done whatsoever.
Geodata πŸ”΄

How to build

I develop with the following environment:

  • Windows 11
  • Visual Studio Build Tools 2026
  • CMake 4.2 (required for VS 2026 generator)
  • Conan (latest as of 2026-04-12)
  • Ninja (latest as of 2026-04-12)
git clone https://github.com/Chnossos/l2cpp.git && cd l2cpp
conan install -b missing -c tools.cmake.cmaketoolchain:generator="Ninja Multi-Config"
cmake --preset conan-default
cmake --build build --preset conan-release # or conan-debug

How to run

  1. Download a game client supporting protocol 656
  2. Build the project
  3. Start a login server from the project root
  4. Start a game server from the project root
  5. Use the client to log in, and voilΓ !

Credits

l2auth, L2jMobius and L2JLisvus.