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.
Go fast (but not too fast) and break things. YAGNI. Do solo gameplay for now, broadcast later. 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.
Unless explicitely specified, don't assume anything to be available. 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
c621only; - Only one user is served at any point in time for now;
- Users can log in with any credentials, no data is stored on disk (yet);
- Server list always displays 2 server (one up, one down), both lead to game server.
Game Server
- Protocol 656 only;
- Character creation (but not restored as no data is stored on disk yet);
- One male human fighter named "test" is automatically created (for uh… test purposes);
- World entering (every character spawns at Talking Island);
- Moving around (not broadcasted yet);
- Inventory list (gear items can be equipped and unequipped);
- Mini-map;
- Character status;
- Skills list (can give yourself any skill with
//learn <skill_id> <skill_level>command); - Skill use (animation only);
- Shortcuts (skills and items);
- Target select and unselect;
- Chat (no restrictions);
- Can spawn any NPC with
//spawn <npc_id>(collision is bugged); - game loop to handle over-time actions and updates (regen, auto-attacks, DoTs…);
- Auto-attacking (infinite);
- In-game time.
See the Unrealeased section of CHANGELOG.md
I develop with the following environment:
- Windows 11
- Visual Studio Build Tools 2026
- CMake 4.2
- Conan (latest as of 2026-03-08)
- Ninja (latest as of 2026-03-08)
git clone -b dev 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-debugBuild then start a login server, then a game server. Now log in with a game client supporting protocol 656 and voilà!