Skip to content

Latest commit

 

History

History
160 lines (108 loc) · 5.1 KB

README.md

File metadata and controls

160 lines (108 loc) · 5.1 KB

CoEmu (COServer Emulator)

Fully Featured Conquer Online 5017 Server Emulator
⚠ Still Under Constructions ⚠.

About

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).

Build and Run

  1. Install Rust

  2. Use Nightly Rust (it offers speed compile-time).

rustup default nightly
  1. Clone and Configure
git clone https://github.com/shekohex/coemu && cd coemu && cp .env.example .env # edit the env file if you want.
  1. Start Database

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!

  1. Build and Run Server

Now After the database is ready, run the servers

  • Auth Server
$ cargo auth
  • Game Server
$ cargo game

Game Client Download

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.

Documentations

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

FAQ

  1. How do I configure the client?
  • You may connect to your server instance without modifying client code. Create a shortcut to Conquer.exe and add "blacknull" as a target command-line argument. Open server.dat and enter the following (adding your IP address). Be sure not to specify an internal IP address (must be external or a loopback adapter). If you specify an internal IP address, the client will throw an error: "Server.dat is damaged".
[Header]
GroupAmount=1
Group1=GroupPic4

[Group1]
ServerAmount=1

Server1=CoEmu
Ip1=
Port1=9958
ServerName1=CoEmu
HintWord1=
Pic1=servericon33
  1. How do I create an account?

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 :)

Resources

Contributing

Want to join us? Check out our "Contributing" guide and take a look at some of these issues:

Legality

Algorithms and packet structuring used by this project for interoperability with the Conquer Online game client is a result of reverse engineering. By Sec. 103(f) of the DMCA (17 U.S.C. § 1201 (f)), legal possession of the Conquer Online client is permitted for this purpose, including circumvention of client protection necessary for archiving interoperability. CoEmu is a non-profit, academic project and not associated with TQ Digital Entertainment. All rights over CoEmu are reserved by Shady Khalifa "shekohex". All rights over the game client are reserved by TQ Digital Entertainment.

License

Licensed under GPL v3.0 license.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the GPL-3.0 license, shall be licensed as above, without any additional terms or conditions.