All Projects → Ruk33 → l2auth

Ruk33 / l2auth

Licence: GPL-3.0 License
Lineage 2 C4 server written in C as a learning exercise

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to l2auth

android-image-preview-docs
Docs for the preview of the Android machine image on CircleCI
Stars: ✭ 18 (-41.94%)
Mutual labels:  emulator
khedgb
Experiments in Game Boy emulation
Stars: ✭ 15 (-51.61%)
Mutual labels:  emulator
L2jRoboto
A fake player engine for L2j with decision making and behaviors
Stars: ✭ 51 (+64.52%)
Mutual labels:  lineage2
columbus
Metadata storage service
Stars: ✭ 42 (+35.48%)
Mutual labels:  lineage
spym
MIPS ISA toolchain including a (dis)assembler, debugger, and vm.
Stars: ✭ 15 (-51.61%)
Mutual labels:  emulator
miniqubit
Quantum emulator of the IBM Quantum experience
Stars: ✭ 24 (-22.58%)
Mutual labels:  emulator
retro-computing
🤓🕹💾 This hobby project contains software implementations of old microprocessors and complete computer systems. I'm very interested in retrocomputing and this is how I learn about the inner workings of these old, classic and amazing computers and game consoles.
Stars: ✭ 15 (-51.61%)
Mutual labels:  emulator
1964js
Nintendo64 emulator in JavaScript
Stars: ✭ 57 (+83.87%)
Mutual labels:  emulator
chip8emu
A Terminal Based Chip-8 Emulator
Stars: ✭ 28 (-9.68%)
Mutual labels:  emulator
mos6502
MOS 6502 emulator written in Rust
Stars: ✭ 25 (-19.35%)
Mutual labels:  emulator
ti5x android
TI-58C/TI-59 calculator emulator for Android
Stars: ✭ 17 (-45.16%)
Mutual labels:  emulator
i8080-Space-Invaders
Intel i8080 Space Invaders Arcade Emulator
Stars: ✭ 19 (-38.71%)
Mutual labels:  emulator
Emuloader
Emuloader is an application that allows easy management of game backups locally or on the cloud and one-click installs of emulator enivronments
Stars: ✭ 55 (+77.42%)
Mutual labels:  emulator
accordion
Android accordion emulator
Stars: ✭ 23 (-25.81%)
Mutual labels:  emulator
slippers
A Club Penguin server emulator for the original 2005 client
Stars: ✭ 30 (-3.23%)
Mutual labels:  emulator
bevm
Basic computer emulator
Stars: ✭ 20 (-35.48%)
Mutual labels:  emulator
SnesJs
A SNES emulator, in javascript
Stars: ✭ 28 (-9.68%)
Mutual labels:  emulator
JFTSE
JFTSE Open Source MMO Framework
Stars: ✭ 23 (-25.81%)
Mutual labels:  emulator
pokegb
A gameboy emulator that only plays Pokemon Blue, in ~50 lines of c++.
Stars: ✭ 1,166 (+3661.29%)
Mutual labels:  emulator
Kotlin-Gameboy-Emulator
A GameBoy emulator written in Kotlin
Stars: ✭ 12 (-61.29%)
Mutual labels:  emulator
L2 AUTH
    L2auth is a simple Lineage 2 Chronicle 4 (C4) server emulator written in 
    the C programming language as a learning exercise. The project's objective
    is not to be a 1:1 implementation with the official servers but rather, 
    just a fun experiment to see and explore what can be made with it.

COMUNITY
    - Join our Discord at https://discord.gg/A62eUFfDp6
    - Watch the development of the project in:
        - Youtube: https://www.youtube.com/channel/UCmbdpFvxXfxk4KbmUgTAomw
        - Twitch: https://www.twitch.tv/franco_montenegro

QUICK START
    - Download a release from: https://github.com/Ruk33/l2auth/releases
    - Start the login server from a terminal with: bash ./loginserver
    - Start the game server from a terminal with: bash ./gameserver
    - Run the game (make sure your system or /etc/host file is set for localhost)
    The login server will listen for connections to localhost using port 2106.
    The game server will listen for connections to localhost using port 7777.

CONTRIBUTE
    Just open up an issue detailing what you will be working on, this way
    we can be more organized with the work. After that, just have 
    fun working on it.

    A few rules for contributors:
    - No dynamic memory allocation. Exceptions:
        - Third party libraries
        - Platform specific code (win32, linux, etc. layers)
    - All variables must be initialized
    - No NULL, use 0 (shorter to write)
    - OS related code must be inside of the os folder (ie, src/linux)
    - Storage related code, must be inside of storage/name.c (ie, storage/sqlite.c)
    - Only 1 thread is used to handle requests
    - The code should be robust enough to handle bad and good requests without crashing
    - Have fun

CREDITS
    - l2jserver: http://l2jserver.com/
    - http://fursoffers.narod.ru/Packets.htm
    - https://code.google.com/archive/p/l2adenalib/wikis/L2LoginServerProtocol.wiki

LICENSE
    GPL

PROJECT DOCUMENTATION
    The project is split between the login server (where the user can 
    authenticate with a username and password) from the game server.

    To make it portable to multiple operating systems (Windows, Linux, etc.),
    the project separates all that platform specific code from the game code.
    The game server produces a library/dll in order to provide hot code reload.
    With this, any change in the game server code can be reflected in a 
    running server without restarting or shutting it down.

    For storage, a similar approach is taken. To support multiple databases,
    the storage code is separated from the rest of the code. In order to provide 
    a new storage/database (ie, MySQL, PostgreSQL, etc.), you only need to 
    create a new file in the storage folder and provide the implementation for
    the functions declared in src/include/storage.h. After that, just update 
    gs_lib.c and ls_lib.c to include your implementation instead of sqlite.c.

DEPENDENCIES
    - openssl: https://www.openssl.org
    - sqlite3: https://www.sqlite.org
    - cglm: https://github.com/recp/cglm

COMPILE IN LINUX
    - Run: bash build.sh
    - Run migrations and seeds (see below for these two steps)

COMPILE IN WINDOWS
    Windows builds are not being updated for the moment since I don't have
    access to a Windows PC. If you would like to contribute on this end, 
    you are welcome to do so. Thanks!

    - Open a CMD terminal
    - Run: build.bat
    - Run migrations and seeds (see below for these two steps)

RUN MIGRATIONS
    Migrations contain all the schemes for the database (meaning, how should 
    the information be stored in the database)

    - Run: bash migrations/sqlite/run.sh build/db
    This will create a database in build/db (if required) and run the migration.

RUN SEEDS
    Seeds contain some initial data to upload into the database, such as,
    server information (ie, Bartz)

    - Run: bash seeds/sqlite/run.sh build/db
    This will create some initial entries in the database build/db.

START LOGIN SERVER
    - Run: build/login_server
    The login server will listen for connections to localhost using port 2106.

START GAME SERVER
    Run: build/game_server
    The game server will listen for connection to localhost using port 7777.

LINEAGE 2 PROTOCOL
    Lineage 2 uses TCP to send packets.

    All integers are little-endian and this project is MEANT to run on little
    endian machines.

    The first two bytes of the packet contain the packet size and the third one, 
    usually the packet type.

    Other than the first packet, all the login server packets are encrypted with 
    Blowfish using the following hardcoded key ;5.]94-31==-%xT!^[$\000
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].