RustyDO
A server emulator for Digimon Online v1.5.
Credits
Digimon Online v1.5 was created by CCR. The rights of the game and its IP belong to CCR and BANDAI, respectively.
This repository is to emulate the server and does not copyright the game itself in any form or use it for profit. The user is solely responsible for the consequences of using this.
This repository is maintained by JungHyun Kim (@jidoc01).
Objective
This project is an open-source version of a toy server that I used to make in my free time. The goal is to recreate the game server of the time. Due to the lack of information, difficulties are expected, but we can try to imitate it as much as we can.
Videos
Screenshots
In a lobby |
In a room |
In a game |
References
-
Wiki:
How to run
Pre-requisite for Server
- OS: Windows 10+ (64 bits)
- Rust: Cargo 1.62.0+
- Git: Git
- Visual C++:
- VS Build Tools 2019+ with
Desktop Development with C++
checked - Redistributable Package for VS 2015
- VS Build Tools 2019+ with
Build the source code
First, you need to clone this respository: git clone https://github.com/jidoc01/RustyDO
After cloning it, compile the source code: cargo build --release
When it succeeds, it will generate an executable on {root_directory}/target/release/server.exe
. Copy the executable to some place and put config.toml
to the same directory.
Run the server
To run the server, launch the server.exe
. It will open network port 9874
for both TCP and UDP. So, you should not use any of the same ports to prevent port collision. It is not modifiable unless you directly hack the client, and it is easily achievable but out-of-scope here.
Run the client
First, download the client file digimonbattleserver.rar
and uncompress it to some place.
In its root directory, there are three sub-directories. You will use Digimon Online
directory only.
Before launching the client, you should prepare some configurations.
Edit the server configuration
In the Digimon Online
directory, there is svr.info
, and open it with a text editor. Then, you can see ip addresses there. Replace them with your ip address. Let SERVER_IP
be your ip address, then it'd look like:
101 0 100 SERVER_IP Status1
...
401 3 5000 SERVER_IP 폴더대륙
Note that the address should be a public ip address if it needs to be accessed via public network. And it should be a dot-separated address, not a domain name.
Edit the registry
You need to write the absolute path of Digimon Online
directory into the registry item HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\X2Online\Digimon Online V1.5
with a key PATH
.
For example, if your Digimon Online
directory is C:/X2Online/Digimon Online
, then you can use the following registry script:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\X2Online\Digimon Online V1.5]
"PATH"="C:\\X2Online\\Digimon Online"
Launch the client executable
Now you can launch the client executable in Digimon Online
directory. In the directory, the following instruction will launch the game: digimon.dll "1 1"
.
FYI, you can write a batch script (*.bat) and launch it instead of typing the instruction every time you launch the game.
To those who want to contribute
This project only implements basic functions. The parts that need to be implemented are marked as TODO on the source code.
If you want to implement TODO, introduce new features (ex. processing a new packet, introducing new implementation, etc.), or improve inefficient parts of its existing implementation, feel free to issue. Especially, it is written in Rust language, but I am not very fluent in the language. And I am not aware of server architectures. Feel free to suggest any form of improvement in its design.
Features
There are features not implemented (or finished) yet. You can search TODO
in the source code to check what features are not implemented yet.
Board
- Writing a new post.
- Reading a post.
- Modification/deletion/reply of posts.
Shop
- Entering/Leaving a shop.
- Checking validity of purchasing.
Room
- Changing team/character/map.
- Kicking a player.
In-game
- Basic movements.
- Using items.
- Expressing emotions.
- Kurumon generation algorithm.
- It could be impossible to recover the exact algorithms which its original server used.
- But I hope we imitate it as much as we can.
- Item generation algorithm.
- Red crack generation algorithm.
- Improving priority calculation algorithm.
- Leaving a game while playing it.
- Gaining experiences after game.
Messenger
- Packet analysis (both in TCP/UDP).
Ranking
- Packet analysis.
Etc.
- Changing nickname.
- Changing game settings.
- Chatting.
- Whispering.
- Server migration.
- Scheduling priority in events.
License
Copyright 2022 JungHyun Kim