Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[Development] eMU :: MU2 Server Emulator (open source)

Newbie Spellweaver
Joined
Oct 11, 2013
Messages
18
Reaction score
47
Hi,
I'm pleased to present MU2 Server Emulator - The eMU.

Project is written in C++11 and using mysql database engine. Is designed to cross platform (Win32/Linux).

Project structure:
core - network / xml / transactions engine / abstract factory / implementations,
dataserver - implementation of dataserver and mysql database engine wrapper,
loginserver - implementation of loginserver (account authorization, servers list, servers statistics),
gameserver - implementation of gameserver,
protocol - messages class wrappers (requests, responses, indications),
analyzer - tool for MU2 protocol analysis (parsing and building packets),
ut - unit tests,
mt - module tests.

The most important thing in eMU is quality, so all features were tested by Unit Tests (googletest framework) or Module Tests.

Project is using cmake build engine.

Libraries needed to build eMU:
-c++ compiler supporting C++11 (clang or GCC 4.7+)
-cmake,
-boost,
-gtest,
-gmock,
-gflags,
-glog,
-rapidxml,
-qt5 (analyzer only),
-gcc (for coverage reports only)
-lcov (for coverage reports only).

cmake flags:
CMAKE_BUILD_TYPE=UT/MT/DEBUG/RELEASE
UT - build unit tests
MT - build module tests
DEBUG - target build without optimalizations
RELEASE - target build with -O2 optimalizations

QT_ROOT=path
path to Qt5 directory (analyzer only)

COVERAGE=true/false
enable or disable tests coverage reports

What is done:
-all core features,
-mysql support,
-analyzer,
-account authorization,
-gameservers list,
-gameserver details

What is next:
-character create/delete.

Screens:
4 - [Development] eMU :: MU2 Server Emulator (open source) - RaGEZONE Forums 3 - [Development] eMU :: MU2 Server Emulator (open source) - RaGEZONE Forums 2 - [Development] eMU :: MU2 Server Emulator (open source) - RaGEZONE Forums 1 - [Development] eMU :: MU2 Server Emulator (open source) - RaGEZONE Forums


Milestone 1:
-Characters list (DONE 07.01.2014),
characters list - [Development] eMU :: MU2 Server Emulator (open source) - RaGEZONE Forums

-Character create (DONE 20.01.2014),
-Character delete,
-World join.



Link:


Stay tuned!

Best regards,
f1x (aka bezloginu)
 

Attachments

You must be registered for see attachments list
Last edited:
Newbie Spellweaver
Joined
May 23, 2008
Messages
48
Reaction score
37
GL with ur project :D! I am bad at coding but I can help with packets if needed.

EDIT: I will add here packets structures.

DEBUG version packets:

All packets starts by this:

[dword:size][word:id][dword:0][dword:0]

Unknow values are being set to 0 by default.

UnicodeString is:
dword (len of string in ASCII) + unicodeString

**********************************

Character list.

Response to: 0x13b
Server -> client.
id : 0x13c

[dword:0]
[word:charCount]
[dword:unk]
[Unicodestring:characterName]
[byte:level]
[byte:unk]
[byte:faction] -> //faction for girl if 2 makes elf
//for slim guy and dark lord (or wizard) 8 makes avatar (blue skin)
//mad guy turns into red monster with 4
[byte:race]
[dword:unk]

8 bytes of characters customs:
[byte:face] -> 0-1, >= 2 no face
[byte:unk]
[byte:hairType]
[byte:hairColor]
[byte:tatoo]
[byte:skinColor]
[byte:unk]
[byte:unk]

[dword:tutorialState]

//tutorialState 0 = ZoneJoin, > 0 = TutorialJoin
//race
//1 = wizard
//2 = mad guy
//4 = slim guy
//8 - elf
//16 - Emphatizer (in the future) (girl with white hair and horns)


**********************************
**********************************
Create character

Response to: 0x13d
Server -> client.
id : 0x13e

[dword:0]
**********************************
**********************************
Enter game (from char screen to in-game).

Response to: 0x141
Server -> client.
id : 0x142

[dword:0]
[dword:unk]
[byte:unk] -> If 0 crash
[dword:map]
[dword:unk]


Some maps
//0x3F9 = Navi_Dungeon_G (0x13), 0x3F8 = Navi_Dungeon_F (0x12),
//0x3F7 = Navi_Dungeon_E (0x11), 0x3F6 = Navi_Dungeon_D (0x10),0x3F5 = Navi_Dungeon_C (0xF)
//0x3F4 = Navi_Dungeon_B (0xE), 0x3F3 = Navi_Dungeon_A (0xD)
//0x3E9 = Baron (C),
//0xCA = Amberial Forest
//0xC9 = Dudrin Village
//0xCB = Weis Basin (3)
//0xD3 = Heath Mine (4)
//0x65 = Tutorial Kan


**********************************
**********************************

Set character data (from char screen to in-game).

Response to: 0x147
Server -> client.
id : 0x148

8 bytes maybe charID
[dword:1] -> Don't change both maybe BSOD
[dword:1]

[dword:unk]
[UnicodeString:characterName]
[byte:level]
[byte:unk] -> If 0 can't move
[byte:faction]
[byte:race]
[dword:unk]
[float:X]
[float:Y]
[float:Z]

8 bytes
[dword:Current experience]
[dword:unk] -> Maybe 64 bits of experience seems not currently used

8 bytes
[dword:Experience to next level (maxExp)]
[dword:unk] -> -> Maybe 64 bits of experience seems not currently used

8 bytes
[dword:unk]
[dword:unk]

[dword:CurrentHP]
[dword:CurrentMana]

8 bytes
[dword:money]
[dword:unk]

[dword:unk]
[dword:unk]
[dword:unk]
[dword:unk]

8 bytes char customs:

[byte:faceOn] -> 1 = face on
[byte:custom] -> 4 = on muscle guy tatoo tribal
[byte:hairStyle] -> 2 = bald
[byte:hairColor]
[byte:unk]
[byte:skinColor]
[byte:unk]
[byte:unk]


[dword:unk]
[dword:unk]
[dword:unk]
[dword:unk]
[dword:unk]
[dword:unk]
[dword:unk]


**********************************
**********************************

Set character inventory

Response to: 0x147
Server -> client.
id : 0x14A (sent at the same time as 0x148).


[dword:0]
[byte:itemCount]
[dword:unk]
[dword:unk]
[dword:itemID] -> 0xF241 -> green gem, 0xF242 -> teal gem, 2001 -> Shield
[dword:bagNumber] -> 1-3
[dword:position] -> (0-31) (0 - > first row, 8 -> start second row, etc)
[dword:itemQuantity]
[dword:unk]
[dword:unk]
[dword:unk]
[byte:unk]
[byte:unk]
[byte:unk]
[dword:unk]
[dword:unk]
[dword:unk]
[dword:unk]
[dword:unk]
[dword:unk]
[dword:unk]
[dword:unk]
[byte:unk]
[word:unk]
[dword:unk]
[dword:unk]
[dword:unk]


**********************************
**********************************

Activates the interface

Response to: 0x147
Server -> client.
id : 0x14C (sent at the same time as 0x148).

[dword:unk]
[word:unk]
[word:unk]
[dword:unk]



**********************************
 
Last edited:
Newbie Spellweaver
Joined
Oct 11, 2005
Messages
6
Reaction score
0
a little silly question - how to set up the client to connect to my ip. ( except loopback ) ?
 
Newbie Spellweaver
Joined
May 23, 2008
Messages
48
Reaction score
37
a little silly question - how to set up the client to connect to my ip. ( except loopback ) ?

If you are using debug client (first one released) you can change the IP to connect (iirc) in MU2GameFiles\MU2GAME\Config\MU2Game.ini:

[MU2Net]
OnServer=TRUE
LoginServerIP=THEIPHERE
LoginServerPort=5000

On newer clients they have some tricks and you can't change it editing the files (maybe ip hardcoded in .exe).
 
Junior Spellweaver
Joined
Jun 25, 2006
Messages
191
Reaction score
226
i already started to make my own mu2 server months ago, then i stop when i realized that new clients (released by megamax) have an "extra" or different upk compress method, so u cannot actually see C>S packet structures cause they are stored in upk format. (actually, u can but it gets so Ducking harder....)

so, instead of burning my head trying to find packet by packet structure to walk step by step using newer clients (trade send, then debug to track trade response, etc), y decided to store some logic info like ids and basic packet structure like login etc and wait until some beta test.

trying to create a server, based just on a simple test client with no server to test is like walking in the dark... but maybe, some rusty gs will give some extra knowledge for the first oficia beta that "should" be coming soon.

anyway, it is a good start but i bet webzen is gonna change everything, storage methos, structures messages, crypt/enc protocol methods, etc...

no one is gonna release a game using a protocol such as this... the response to every request opcode or id is the id + 1 ... (rolf when i found out this...)

anyway, it is a good project like mine, for learning porpuse, but useless if there is no official server to test T_T
 
Newbie Spellweaver
Joined
Oct 11, 2013
Messages
18
Reaction score
47
07.01.2014 Update:
-Characters list support. Thread updated.


Many thanks to Kyhoh for packets structure! Thanks Kyhoh!
 
Junior Spellweaver
Joined
Jun 25, 2006
Messages
191
Reaction score
226
i made this emu after the first client was released by megamax, 2 weeks then i stopped.
C++ and C++/CLI. Can spawn mobs, kill them, drop items, walk, change map (tp and walking through gate), create delete chars, and some other stuff, far from playable but it's still something...
took me almost a week to understand and dump all packet format/info but since client is beta, i cannot make all functions work since there are not even coded in client side.

so, waiting for some beta server from webzen...

edit: i could not translate it to eng, there is no option in any config file so, i dont understand a poop

bezloginu - [Development] eMU :: MU2 Server Emulator (open source) - RaGEZONE Forums

bezloginu - [Development] eMU :: MU2 Server Emulator (open source) - RaGEZONE Forums

bezloginu - [Development] eMU :: MU2 Server Emulator (open source) - RaGEZONE Forums

bezloginu - [Development] eMU :: MU2 Server Emulator (open source) - RaGEZONE Forums

bezloginu - [Development] eMU :: MU2 Server Emulator (open source) - RaGEZONE Forums

bezloginu - [Development] eMU :: MU2 Server Emulator (open source) - RaGEZONE Forums

bezloginu - [Development] eMU :: MU2 Server Emulator (open source) - RaGEZONE Forums

bezloginu - [Development] eMU :: MU2 Server Emulator (open source) - RaGEZONE Forums
 
Last edited:
Newbie Spellweaver
Joined
Sep 6, 2005
Messages
16
Reaction score
1
Yep , I Agree , it has a D3 Look, this blue fog like effect it's all over D3 Act1.
I Also could see on one of those pics a D3 Reversing Smth.....on Andromeda's Desktop , have you gotten a chance to look over their Binaries?
 
Last edited:
Junior Spellweaver
Joined
Jun 25, 2006
Messages
191
Reaction score
226
Yep , I Agree , it has a D3 Look, this blue fog like effect it's all over D3 Act1.
I Also could see on one of those pics a D3 Reversing Smth.....on Andromeda's Desktop , have you gotten a chance to look over their Binaries?

on topic: Yes, it is like diablo 3, map assets like tables, chairs and barrels are almost the same. But of course, blizzard project was developed by people with experience, they know what they are doing, and webzen... ehm, they dont.
mu2 uses unreal engine, blizzard uses their own engine, so u can see a lot of games "look like" mu2, but no like diablo 3.

Even more, i reversed diablo 3 protocol, completely, bnet and game, i took me 3 months (login, creating character and testing skills, watching traffic, even getting banned lol)... and i did the same in MU2, it took me 3 days without testing over an official server (cause it doesn't exist.)
so, Diablo 3 = best developers, MU2 = MU = noobs.

Off topic:
when D3 beta was released, i was part of a team that tried to make a private server before retail version. But Blizzard stop it a few months after the final version.
So yes, i reversed diablo 3 protocol (used in private server) and almost every structure in the graphic engine (this was just for fun :)).

After this i used that data, including animations, materials, textures, etc to make my own mu client... as u can see, there are a lot of things from diablo in this client:

But this client is no complete, it takes a lot of time i DONT have.
Can just login char, walk, cast some basic skills, warp just to the new lorencia devias and noria , kill all monsters (98 monsters including most mu monsters), trade and use inventory. but no event, party, drop config, etc... far from playable.
 
Newbie Spellweaver
Joined
Sep 6, 2005
Messages
16
Reaction score
1
Wow, I did not know it was such a difference, 3 months to 3 days roughly... I've been playing arround with mooege and D3 beta client, that's why your icon peeked my attention.

Anyway, I already saw your Game preview on another post about Mu Client on Iphone i guess... honestly , it's the best work I've seem around here, pro-like stuff !
Not only the game which we can only view a very small portion, but for your observations regarding newer implementations , like scene manager , Path finding and why you did not use the same from reversed mu client.

Ps: Very nice effects on UI Bar , your d3 mix looks very nice.

Best of Luck on your Endeavors !
 
Newbie Spellweaver
Joined
Oct 11, 2013
Messages
18
Reaction score
47
20.01.2014 Update:
-Character create support. Thread updated.
 
Newbie Spellweaver
Joined
Sep 25, 2013
Messages
5
Reaction score
0
Hello, How i can enter to the server? and see the game please tell me! :(
 
Junior Spellweaver
Joined
Feb 5, 2007
Messages
136
Reaction score
45
When it is done you will see it on the first post. For now it is in red and not done.

-Character delete,
-World join.
 
Initiate Mage
Joined
Aug 20, 2006
Messages
1
Reaction score
0
hello friend I would like to test your emulator Might spend the emulator download link and wanted to know if I used the client MegaMax posting, because I could not download
from already thank you
 
Back
Top