This is a World of Warcraft 1.1.2.4125 tiny server emulator, written in Python, which tries to remain small, clean and understandable. The goal is to handle several player and basic stuff like chat and groups to have some fun with old school exploration techniques.
I'll repeat that again: it is a TINY emulator, which means that it is not meant for serious use (you shouldn't run a serious private server anyway). There are very few sanity checks beside basic auth, and almost nothing that a client wouldn't do is checked for. It is also not meant to be an efficient implementation. It is in Python, and nothing is done to circumvent the GIL. The threaded connections use locks pretty much anywhere because I didn't want to do a full-fledged concurrency system, and I'm not even implying that I could do that correctly. It would mean that I have to look in my reading notes about the readers-writers problems and stuff, and these notes are almost unreadable.
Use it to have fun exploring with a few friends, that's all.
Demo: https://youtu.be/uucpgeK3ILk
Dependencies:
- Python 3.4+
- MySQL
- Peewee, the Python ORM used
- A Python MySQL driver
- PyShgck
Get that from their website.
Get a community package from their website, anything slightly recent should be fine. Once the MySQL server is running, you need to setup a database and an account to access this database.
Quick MySQL database setup:
- CREATE DATABASE durator;
- CREATE USER 'durator'@'%' IDENTIFIED BY 'durator'
- GRANT ALL PRIVILEGES ON durator.* TO 'durator'@'%' IDENTIFIED BY 'durator';
Feel free to use other credentials (but update the database code configuration), and to narrow the hostname to something more private than a full wildcard.
Available in PyPI:
pip install peewee
You only need one of them, preferably PyMySQL because that's the one I use, but both are available in PyPI:
pip install pymysql
# OR
pip install mysqldb
Grab this tag and install it with the setup batch file.
Configure the database and create an account with the database client
cd DuratorEmu
python3 -m durator.main db
# use the commands 'install' and 'account'
Then just use start.bat
, or manually start the login and world servers in
different consoles:
python3 -m durator.main login
python3 -m durator.main world
Some related projects and documentation that I used, first for Vanilla (mostly 1.12):
More recent but still interesting sources:
Also, thanks to #modcraft for being nice folks :]