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!

C# Mu Online framework

Joined
Jul 23, 2011
Messages
391
Reaction score
664
Hi there. Let's get straight to the point. I've been working with multiple mmorpgs for a while now (mostly, Silkroad Online). Mu Online is one of my favorite games, althrough, I didn't do much development for it (except zFileManager, some connectserver VIP account list reloader at c++/asm), and thats something I wanna change. Mu Online section is full of c++ sources, and that's really cool... but I didn't see any good c# framework for basic stuff like networking (with packet encryption/decryption routines and so on). Ofcourse, networking is just one of things that could be made simple by making a good class library which could be used even by beginners. This would bring even more developers to this section.

If there are people who would like to contribute (give information/ideas, write code) - feel free to PM me here, on RZ, or even better - add me on one of my skype accounts: cherno0x33@gmail.com (live:cherno0x33) or jahtemg.

Thanks for your time reading this.

Regards, Chernobyl. :)
 
Don't be afraid to ask!
Loyal Member
Joined
Jun 2, 2012
Messages
1,454
Reaction score
252
I dont understand people, why you always want to remake the muonline serverside...?:D

Remake the clientside, thats what need for the community, a re engineerd clientside, on unreal engine or any custom engine.

And developers will pay for get this core, because 20 type of serverside is on the internet - old - new - downgraded- upgraded etc....

But client is never change... because everybody using webzen client, and than adding custom libs, if anybody can rebuild the clientside (I know some RZ developer who has full source for the s4 client), than you can release a new game.

You can make the game better, if you just recode the serverside on C# or on any random code language the game will be the same, and you are creating just more and more bugs.


I am working on a supersocket C# server -client app now for mu... but to replace the whole serverside of the mu is a totally bad idea in my opinion.



Replace the clientside, its a good thing, building the game core from zero is a good idea...
 
Custom Title Activated
Loyal Member
Joined
Apr 6, 2007
Messages
1,806
Reaction score
483
Recreating the clientside is a HUGE work....If someone has that clientside source and isnt sharing it.... shame on him....but i doubt someone will even try remaking the client...or at least an 'updated' version of it. ..weve seen a few 97d remakes on Unity but its not the same....se need a pro unreal engine user....and lots of willpower for this to happen....
On the other side, c# serverside could be easily made having c++ sources to 'start from' and for some 'guidance' .....imho its not a that bad idea; although it would be a real huge pain in the butt to do this.

 
Joined
Aug 6, 2005
Messages
552
Reaction score
298
I dont understand people, why you always want to remake the muonline serverside...?:D

Remake the clientside, thats what need for the community, a re engineerd clientside, on unreal engine or any custom engine.

And developers will pay for get this core, because 20 type of serverside is on the internet - old - new - downgraded- upgraded etc....

But client is never change... because everybody using webzen client, and than adding custom libs, if anybody can rebuild the clientside (I know some RZ developer who has full source for the s4 client), than you can release a new game.

You can make the game better, if you just recode the serverside on C# or on any random code language the game will be the same, and you are creating just more and more bugs.


I am working on a supersocket C# server -client app now for mu... but to replace the whole serverside of the mu is a totally bad idea in my opinion.



Replace the clientside, its a good thing, building the game core from zero is a good idea...

Well, I don't know if your a developer... but all the C++ sources you find here are more or less pure crap in sense of code quality (from a professional perspective). It's a nightmare to extend, fix bugs etc.... in C++ you can create a lot of errors which you can't in C#, and there are actually many errors in all those server files.
Additionally the server structure is pretty old and limiting... starting a dozens of processes (on the same server hardware) just to start the server? It's 2016 now, not 1999. It's hard to configure with all these config files, hard to manage, error prone...

I think many people don't care, or are happy as it is (because they don't know better), but I'm not. You just can't believe what's possible, I mean technically, with the .NET infrastructure and the available frameworks.
Just to give some Ideas what I'm planning for my server, and have partially acomplished yet:
- All config data is in the database -> no more errors possible, like when you play around with referencing ids in different files
- Most logic is defined by data, not 100% hard coded like the available server files. Want a character with additional stat type (like str, agi, vit)? no problem, just a change in the database...
- Web interface to manage the server(s) with live logging
- Running multiple servers in one process or separate. The communication inside a process is much faster than between a dozen ones over tcp ;)
- Data is normalized where it makes sense - e.g. each Item has their own row in a database, persistent item dupes are impossible!
- Most of the code is reuseable, e.g. making a single player game out of it is a no-brainer.

That's just a small part about the benefits... I hope you got it :)
 
Joined
Nov 4, 2012
Messages
928
Reaction score
545
Well, I don't know if your a developer... but all the C++ sources you find here are more or less pure crap in sense of code quality (from a professional perspective). It's a nightmare to extend, fix bugs etc.... in C++ you can create a lot of errors which you can't in C#, and there are actually many errors in all those server files.
Additionally the server structure is pretty old and limiting... starting a dozens of processes (on the same server hardware) just to start the server? It's 2016 now, not 1999. It's hard to configure with all these config files, hard to manage, error prone...

I think many people don't care, or are happy as it is (because they don't know better), but I'm not. You just can't believe what's possible, I mean technically, with the .NET infrastructure and the available frameworks.
Just to give some Ideas what I'm planning for my server, and have partially acomplished yet:
- All config data is in the database -> no more errors possible, like when you play around with referencing ids in different files
- Most logic is defined by data, not 100% hard coded like the available server files. Want a character with additional stat type (like str, agi, vit)? no problem, just a change in the database...
- Web interface to manage the server(s) with live logging
- Running multiple servers in one process or separate. The communication inside a process is much faster than between a dozen ones over tcp ;)
- Data is normalized where it makes sense - e.g. each Item has their own row in a database, persistent item dupes are impossible!
- Most of the code is reuseable, e.g. making a single player game out of it is a no-brainer.

That's just a small part about the benefits... I hope you got it :)

The most three problematic things:

- Old engine at client side;
- Lack of documentation for protocols, since client need correct packets to avoid bugs on both sides
- Serverside is designed to run each application on each server: I mean, dataserver in one machine, joinserver on other, due to large scale processing from webzen i guess. This is not a fail from webzen, but jesus christ how you can change whole server engine with a thousand of accounts running on server?

Yes, rewrite whole poop will be good anyway, but is not hard maintain a c++ project with all tools given today by IDEs.
And if i am not wrong, some team rewriting all, after some time without management from that team this can be a mess again.
 
Don't be afraid to ask!
Loyal Member
Joined
Jun 2, 2012
Messages
1,454
Reaction score
252
Well, I don't know if your a developer... but all the C++ sources you find here are more or less pure crap in sense of code quality (from a professional perspective). It's a nightmare to extend, fix bugs etc.... in C++ you can create a lot of errors which you can't in C#, and there are actually many errors in all those server files.
Additionally the server structure is pretty old and limiting... starting a dozens of processes (on the same server hardware) just to start the server? It's 2016 now, not 1999. It's hard to configure with all these config files, hard to manage, error prone...

I think many people don't care, or are happy as it is (because they don't know better), but I'm not. You just can't believe what's possible, I mean technically, with the .NET infrastructure and the available frameworks.
Just to give some Ideas what I'm planning for my server, and have partially acomplished yet:
- All config data is in the database -> no more errors possible, like when you play around with referencing ids in different files
- Most logic is defined by data, not 100% hard coded like the available server files. Want a character with additional stat type (like str, agi, vit)? no problem, just a change in the database...
- Web interface to manage the server(s) with live logging
- Running multiple servers in one process or separate. The communication inside a process is much faster than between a dozen ones over tcp ;)
- Data is normalized where it makes sense - e.g. each Item has their own row in a database, persistent item dupes are impossible!
- Most of the code is reuseable, e.g. making a single player game out of it is a no-brainer.

That's just a small part about the benefits... I hope you got it :)

I am a simple Win sysadmin, I am hobby programmer, I know a lot programming language, and now I am working on my ASP MVC C#, full bootstrap 3, angularjs, ajax website for my Muserver, on my C# .net server -client launcher system, which using supersocket.

But... to remake the serverside, without recreating the clientside is a totally useless thing. Muemu source mixed with zteam files is totally right, stable, good and you can add whatever you just want.

The only problem is the clientside. Okey... here on RZ we have some skilled asm programmer and they can make cool features, but the opengl client engine is so bad, the clientside has more sh*t than the serverside.

So you can do it, you can do whatever, but In my opinion its just wasted time, if you recreate the clientside and the serverside same time, than its a great idea, but only remake one of the two is useless.

Have nice day!
 
Joined
Aug 6, 2005
Messages
552
Reaction score
298
I am a simple Win sysadmin, I am hobby programmer, I know a lot programming language, and now I am working on my ASP MVC C#, full bootstrap 3, angularjs, ajax website for my Muserver, on my C# .net server -client launcher system, which using supersocket.

But... to remake the serverside, without recreating the clientside is a totally useless thing. Muemu source mixed with zteam files is totally right, stable, good and you can add whatever you just want.

The only problem is the clientside. Okey... here on RZ we have some skilled asm programmer and they can make cool features, but the opengl client engine is so bad, the clientside has more sh*t than the serverside.

So you can do it, you can do whatever, but In my opinion its just wasted time, if you recreate the clientside and the serverside same time, than its a great idea, but only remake one of the two is useless.

Have nice day!
So you basically say, the client contains more crap than the available server files... well, this might be true, but who will remake this client for free, if this requires a lot more of effort? If you would do this, then you can just create a new and better game and sell it yourself - but with using webzen assets this is not possible (legal issues).

If I would pursue your logic I have to wonder, why you guys are extending the server side with quite high effort, if a better client is more in demand?

As I said, I can reuse my server-side code to create other games, even mixing single with multiplayer (coop). Ofc, the more similarity to MU, less stuff has to be done to do so... but what can you do with the available, hard coded and incrusted c++ servers? You can just create complete MU-clones...



The most three problematic things:

- Old engine at client side;
- Lack of documentation for protocols, since client need correct packets to avoid bugs on both sides
- Serverside is designed to run each application on each server: I mean, dataserver in one machine, joinserver on other, due to large scale processing from webzen i guess. This is not a fail from webzen, but jesus christ how you can change whole server engine with a thousand of accounts running on server?

Yes, rewrite whole poop will be good anyway, but is not hard maintain a c++ project with all tools given today by IDEs.
And if i am not wrong, some team rewriting all, after some time without management from that team this can be a mess again.

- Old client engine: You have this problem with all the available servers as well, so why is this a problem of a new C#-based server?
- Lack of documentation: That's one thing which could be improved. I have the plan to create a description of every packet on github by simple markdown files. With a branch for different versions it should not be hard to maintain.
- Serverside is designed to run each application on each server: I did no tests yet, but I don't think it's a big problem to run thousands of players on the same machine. Just depends how everything is implemented, and webzens implementations for various things seem to be a bit inefficient. Additionally you have to consider the time when webzen created MU... the machines were a lot slower than they are now. Anyways, my server is not limited to one machine, it's just more efficient to run on one.
 
Last edited:
Newbie Spellweaver
Joined
Jul 25, 2007
Messages
57
Reaction score
34
I think there are no reason to recreate server side without a new cliente and no reason to recreate client without new server.

MU Online as we know is an old game, with bugs and limitations, the game play is hard(not flexible). No one here can recreate models/sounds/maps by yourself. We are stuck with MU Online, we have all the models, sounds, maps, texture, it is a shame not using this.

Some things that should change:
Better models, a friend o mine are working on MU Origin models and textures.
We need to implement Str, Agi, Vit and Pow as item options.
Remove the itens requeriment, leaving level as the only limitation.
Rework the excelent and set items bonus.
Increase item power.

I'm working at the top of a JAVA api, for server. (SmartFoxServer 2x.). Again, there are no reason to create a server from scrath.

I will share the Leather Set, Short Sword and Falchion from MU Origin and my game next week.

What i heve until now
I can create chars(DK).
Char selection.
Chat.
Explore World.
Kill mobs, they wander and strike back.
Pick, equip and use itens.
Level Up.
Spend points, Increase stats.

I will share server code - all done by me in few mounths, with help we can go big kickly. If requested i can create i thread with all stuff, u can implement your own server and code for unity project, u can connect to my server in 30 minutes or less.

I cant share the unity project and some assets, but i can share all the code to connect game to server. And code to manage the game.
 
Joined
May 26, 2009
Messages
17,308
Reaction score
3,218
@pcdubaum , problem on models is they are old models with half life .smd structure and im not sure if there's better way to compile a model and make it look as you exactly want in game, also texture max size 512x512 (which is usually enough) but still not a quality of work, plus everyone can re-create models/sounds/maps/effects why not?

Best choice would be to create the game from scratch (remake on unity) and take ofcourse as many resources from muonline and other sources, but if you manage to use your own 'World Editor' and create maps comfortably then its going to be something new when it comes to maps, because maps = what everyone has to play and see whenever they join a server, the maps that exist right now are simple and very basic the way they are added, webzen only managed to succeed with the maps themes which is most important but maps are not made well, models are put usually randomly and there are useless map places where u can do nothing / where should be something (missing stuff) etc..
anyways i dont think thats super needed but it would be a great feature to bring more ideas in the game.
 
Joined
Nov 4, 2012
Messages
928
Reaction score
545
So you basically say, the client contains more crap than the available server files... well, this might be true, but who will remake this client for free, if this requires a lot more of effort? If you would do this, then you can just create a new and better game and sell it yourself - but with using webzen assets this is not possible (legal issues).

If I would pursue your logic I have to wonder, why you guys are extending the server side with quite high effort, if a better client is more in demand?

As I said, I can reuse my server-side code to create other games, even mixing single with multiplayer (coop). Ofc, the more similarity to MU, less stuff has to be done to do so... but what can you do with the available, hard coded and incrusted c++ servers? You can just create complete MU-clones...





- Old client engine: You have this problem with all the available servers as well, so why is this a problem of a new C#-based server?
- Lack of documentation: That's one thing which could be improved. I have the plan to create a description of every packet on github by simple markdown files. With a branch for different versions it should not be hard to maintain.
- Serverside is designed to run each application on each server: I did no tests yet, but I don't think it's a big problem to run thousands of players on the same machine. Just depends how everything is implemented, and webzens implementations for various things seem to be a bit inefficient. Additionally you have to consider the time when webzen created MU... the machines were a lot slower than they are now. Anyways, my server is not limited to one machine, it's just more efficient to run on one.

- Lack of documentation: That's one thing which could be improved. I have the plan to create a description of every packet on github by simple
I am saying on current engine. I love this small game as is and with their limitations.
anyway this will be a waste of time if client and server side not changed at same time anyway.
I only say about documentation in the current client engine, do not matter how you can write protocol documents.

- Old client engine: You have this problem with all the available servers as well, so why is this a problem of a new C#-based server?
Ex´plain better how server side can help client engine? I just simple can't understand this xD

Serverside is designed to run each application on each server
I just sayed this to repply you on this: - Running multiple servers in one process or separate. The communication inside a process is much faster than between a dozen ones over tcp ;)
 
Joined
Aug 6, 2005
Messages
552
Reaction score
298
- Old client engine: You have this problem with all the available servers as well, so why is this a problem of a new C#-based server?
Ex´plain better how server side can help client engine? I just simple can't understand this xD

I never said that it does... but you said this is a problem of a new server implementation (that's what the thread is about, actually)... strange logic ;)
 
Joined
Jul 23, 2011
Messages
391
Reaction score
664
I didn't quite mean re-creating server or client side. What I want to do is create a easy to use c# class lib, which would give you ability to write stuff like packet sniffers, packet-based bots without putting much effort digging into MU network protocol (ofc, relatively).
 
Joined
Aug 6, 2005
Messages
552
Reaction score
298
I didn't quite mean re-creating server or client side. What I want to do is create a easy to use c# class lib, which would give you ability to write stuff like packet sniffers, packet-based bots without putting much effort digging into MU network protocol (ofc, relatively).
Ah okay... Do you mean bots/hacks for players (like Mu Helper), or for server owners to help their players?
 
Joined
Jul 23, 2011
Messages
391
Reaction score
664
Yeah, that's right, nevS. For both players and server owners. I plan making a really advanced bot for players,which could nearly completely automate all player actions (with scripting support for teleporting between maps, buying stuff from shops, repairing and so on). Also, some kind of event bot for server owners, which would be able to do stuff like automatic hide and seek and so on.
 
Joined
May 26, 2009
Messages
17,308
Reaction score
3,218
Yeah, that's right, nevS. For both players and server owners. I plan making a really advanced bot for players,which could nearly completely automate all player actions (with scripting support for teleporting between maps, buying stuff from shops, repairing and so on). Also, some kind of event bot for server owners, which would be able to do stuff like automatic hide and seek and so on.

But then whats the point of playing?
also hide and seek auomatic events etc already in SCFMT sources u can take from there.
 
Back
Top