Conquer Online 2.0 Server Emulator
GPL-3.0 License
CoEmu is a Conquer Online server project containing an account server and game server. The account server authenticates players, while the game server services players in the game world. This simple two-server architecture acts as a good introduction into server programming and networking. The server is interoperable with the Conquer Online game client, patch 5017 (not provided by this project).
Use Nightly Rust (it offers speed compile-time).
rustup default nightly
git clone https://github.com/shekohex/coemu && cd coemu && cp .env.example .env # edit the env file if you want.
We are using Sqlite as Database for storing all of server data and states.
To make things easy, Install sqlx-cli for running Database Migrations.
$ cargo install sqlx-cli --no-default-features --features rustls,sqlite
that will take some time, then run
sqlx migrate run --database-url 'sqlite://data/coemu.db?mode=rwc'
Good, let's build the servers!
Now After the database is ready, run the servers
$ cargo auth
$ cargo game
Note: This Game is only available for Microsoft Windows OS. So if you willing to use it on Mac or Linux, I highly recommend looking at https://www.playonlinux.com/en/ or use a Windows VM.
This Server Emulator is build for Conquer Online version 5017. you can download this version from here.
Currently We try to Write Every Single Detail about anything in the codebase it self, so at the end we have a self-documanted codebase. all you have to do to view docs, Run:
$ cargo doc --no-deps --document-private-items --open
[Header]
GroupAmount=1
Group1=GroupPic4
[Group1]
ServerAmount=1
Server1=CoEmu
Ip1=
Port1=9958
ServerName1=CoEmu
HintWord1=
Pic1=servericon33
To Create an Account, you should open the Database on a Database Manager (something like Datagrip or alternatives) then in the accounts
table you should create a new raw with your account information, you should only need to input the username
and password
.
Please note that the password
needs to be hashed using Bcrypt .. You could use the provided tool to get a hashed password, just run
$ cargo hash-pwd <password>
for example
$ cargo hash-pwd test
$2b$12$iSrnkacd/i/8eZr5pBoDlO5qcbLmLUWGQ6IN.oQuemnlRKU/NExIW
After creating the account, you should be able to login and create your character :)
Want to join us? Check out our "Contributing" guide and take a look at some of these issues: