Hello. I am currently looking for new developers for a World of Warcraft C++ emulator project not based on any other emulators (coded 100% from scratch) that, until now, has been coded only by me. Most of the really important stuff has already been done (see below), and the source code of only the server (not including tools) amounts to 123 files (960 KB). So, as you can see, it's not something I thought about the other night and that will fail tomorrow.
Quick Facts
- The name is Shadow Moses.
- You download the source through svn at https://shadowmoses.svn.sourceforge....t/shadowmoses/ or you can browse it online at http://shadowmoses.svn.sourceforge.net/
- The main language used is C++, even though some tools are in C# (especially GUIs)
- Supports both Linux and Windows, both 32 and 64 bit.
- It uses MySQL to save data
- It mainly focuses on only three things: performance (it will greatly outperform any other currently public emulator on both RAM and CPU time used), code clearity (as you can see by yourself the code is very commented and also very easy to read, and you can't definitely say the same for, for example, Ascent) and reliability (no crashes, or at least I try. Can't really say that it's more stable than other emulators, since it hasn't received any real world testing, but we'll see)
What has been done so far (with screenshots, when applicable). The main things, in one sentence (keep reading for a more detailed description): you can create/delete characters, log in, run around, see other people logged in, chat with them, gain/lose reputation, save system.
- Flamy, a C# GUI tool used to administrate the server. It allows you to add new accounts, realms, to suspend/ban/give warning/keep track of accounts, and it's also a bug a tracker. Screenshots: one two three four five six
- MySQL system to auto-update the database when you want to change the table structure, and to execute in a simple way both synchronous and asynchronous queries.
- Fully completed network/packet system. It can read/send/decrypt/encrypt packets, very high performance and also with interesting features, such as MultiSend's (you create one packet, for example an SMSG_UPDATE_OBJECT, and it has a reference count so that you can send that same packet to as many clients as you want without having to make several copies of it).
- Inter-server communication: the auth server and the game server are linked together and communicate with each other
- Chat system (whispers, staff chat, admin chat, /say, /yell, possibility of viewing log messages directly from the game, etc)
- Faction system (gain/lose reputation)
- Rested XP system
- Most of the core methods of Players/Units/Objects have been implemented (see Object.h, Unit.h and Player.h)
- Update Object system, automatically sends packets whenever fields of an object are changed (see UpdateObject.cpp/.h)
- Queue system, when the server is full
- Save system (some things are saved with asynchronous queries every time they change, such as the player's money. Others are saved periodically, such as the players' positions on the map, but not all in a row: 0.5% (actually 100 / 0x100 %) of the players online are saved every 2 seconds, and thus a whole cycle takes 10 minutes). See Save.h/Save.cpp
- Very simple and not bug prone Thread System. Every map gets a thread. This way, you only have to worry about communicating with other threads when implementing chat and transfer from one map to another, and you do so by sending ThreadMessage's, which are very similar to network packets. So you'll never have to worry about mutexes, deadlocks, and all that headache. It also works out very well since the load is distributed equally among threads, so that it can take advantage of multi-core systems.
- Timers
- Much much more (see the source by yourself!)
Who I am looking for
Hopefully I wasn't too boring and you're still reading this, because we're getting at the part I'm interested about :D As I already mentioned, every single line of code has been written by me so far. But now that I'm basically done with the core systems, I want to recruit more developers to help me achieve greatness :) If you are interested, the following are the requirements:
- WRITING IN ENGLISH AT A NEAR-NATIVE LEVEL. This is really really important for me, and I don't want to sound like a jerk but even if you are a C++ God, but you type "u" instead of "you" or you write comments in engrish, then I am sorry but I am not interested. I want Shadow Moses to look very professional, and this requires the entire staff to speak (or at least write in) english properly. :/ I'm not a native english speaker myself, and if you misspell the word "definitely" I won't kill you, but if you write comments that are barely understandable (like some mongos/ascent/arcemu developers do) then I probably will.
- Good C and C++ skills, for obvious reasons. If you are a C# programmer, I might still be interested and you could help me develop tools (like Flamy). If you are a web developer, you could help me create a website, but honestly I don't care too much about a website at this point.
- Good coding habits. This means using meaningful variable/method/function/etc names, commenting a lot, and NOT doing stuff like this:
instead of:Code:if (flags & 16)
like I've seen a million times on other emulators :( Look at my code for examples of useful comments / meaningful variable names / etcCode:enum PlayerFlags { ... SOME_MEANINGFUL_NAME = 0x10, /* Description of the flag */ ... if (flags & SOME_MEANINGFUL_NAME)
About me
I am a 20 year old male, and I've been programming since I was 14. I know many programming languages, including C/C++/C#/php/java/tcl, but what I excel at is C/C++, especially if it's server development (I'm not really good with GUIs and I don't like programming them). In the past I have led several programming teams, including one dedicated to the development of an Ultima Online emulator back in the days, and it was very successful. Right now I'm going to college (Computer Science), but besides that I don't do much except playing wow :( It's addictive!
That's it :) If you are interested and serious about this, or if you just want to talk to me because you have questions/curosities/etc, you can either reply to this thread or contact me directly PMing or emailing me through the forums. Thanks for your time :)
Edit: If you want to avoid a headache, I would suggest against trying to run it on your computer. You would have to generate the map files, the DBS files, you would have to create a config file, to setup boost, and a lot of other stuff. While of course you can if you feel adventurous enough, at least until there will be documentation explaining what you have to do to compile it (or until there will be pre-generated files uploaded), I would suggest just looking at the code for now.


Reply With Quote


