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!

Making a Mu Online (possible knock-off variant) in Java? Suggestions, Advice ....?

Junior Spellweaver
Joined
May 11, 2008
Messages
105
Reaction score
9
Hello RageZone, I'm starting my first thread as OP with a very nice subject for discussion and I'm really hoping I could get some devs and coders to get in on this (opinion or participation) because quite honestly I am tired of browsing a close to dead thread looking for the perfect free files between cracked, protected and possibly worm infected from original coders..

And don't say fix bugs on your own because (insert stupid reason here) due to the following:
1) the current language of MU is not one of my favorites
2) not everyone is a pro coder (some coders prefer a given language; eg: Java (Like myself))
3) it's time to give life back to this section IMO and make a REAL open source/ REAL FREE to PLAY not PAY-2-Win crap.
4) I love the idea of making Mu (or its possible knock-off) Available in a universal machine Language, it extends the possible player base, just like everything should be, Universal & Free.

**Please do note, I am not a master coder like some of the guys currently working on files found on this forum, this is a simple discussion**

I do however, have a game plan; how it could be constructed, how everything could be structured, etc, etc.

Browser based?
Don't know to be honest, in it's current form, Mu clients go from 150-200mb (season 1) to close to an outstanding 1 GB (latest Season)

Why Java you may ask?
- Java is easy to manipulate (in my opinion)
- Easily integrated with MSSQL and MySQL (again, my opinion)
- More possibilities for fancy stuff, depending on how it's done (silly example, look at runescape)
- Very Flexible
- Universal (can be played/ran on every OS that has JAVA installed)
- More CPU than GPU dependent. (depends on graphics used)
- Everything, including graphics can be done professionally with FREE tools (i.e Blender (graphics), Eclipse) (same applies for the rest of the programming languages, I am aware)
- (Applies to all languages) Properly optimized, It can take minimal ressources to output some very fancy visuals.

I would very much want to know everyone's opinion on this. I have started making SOME files, however my current knowledge doesn't cover everything I need to know for game development. I will continue studying because app and game development are my dream.
I am also looking for constructive critisism. Thank you in advace to everyone who will participate in this conversation

I promise closure on this.

Signed: ReaperMuAdmin
 
Junior Spellweaver
Joined
Jan 24, 2012
Messages
168
Reaction score
88
- Java is easy to manipulate (in my opinion)
maybe, me for example, more like a C++ coding paradigm than Java or .Net based, but that is not point. Try to make them good!
- Easily integrated with MSSQL and MySQL (again, my opinion)
You may include only MySQL support, that is really enough for emulator, MySQL supported fine on Windows - based Servers too.
- More possibilities for fancy stuff, depending on how it's done (silly example, look at runescape)
- Very Flexible

what do you mean? Any example of customizations please. MuOnline is - RPG, not a MMORPG. Like a Diablo and etc. If we imagine a game-design concept of MuOnline, best & right way - only add features in "MuOnline" style... Dont need add features like a "build you own house" or "dungeons" like WoW or something else.
- Universal (can be played/ran on every OS that has JAVA installed)
Multiplatform... hmm that is really hard task, becouse a Lin/Mac/Win have a different API (for simple example - try to implement a cursor(colored and etc) for all systems, include linux... For linux, you need a really low-level API for draw that.)
- More CPU than GPU dependent. (depends on graphics used)
CUDA? You solution? That is really not simple, i will ask that again - you need a low-lewel coding again.
- Everything, including graphics can be done professionally with FREE tools (i.e Blender (graphics), Eclipse) (same applies for the rest of the programming languages, I am aware)
- (Applies to all languages) Properly optimized, It can take minimal ressources to output some very fancy visuals.

Hmm, that is good about graphics. (i mean tools). About resource usage - how you test them? Where testing.log, or something for proof? My imho here - the best way for implement this - store (models & their textures) in packed binary format.

Well, the idea is great, but need to know a more technical details for talking about that. Whats already done? Coding standarts? How about (for example) Maps code? Char movement algorithm? Patchfinding?(when player left-click by mouse on minimap for example, and move to that location) (you may use A* algorithm, becouse movements in Mu - 2D, have a only X,Y). Do you have a working plan, todo's, repository, tracking system, etc? How you want coordinate the project?

At this time - so much questions... more than answers. Keep it up! and goodluck!
 
Junior Spellweaver
Joined
May 11, 2008
Messages
105
Reaction score
9
- Java is easy to manipulate (in my opinion)
maybe, me for example, more like a C++ coding paradigm than Java or .Net based, but that is not point. Try to make them good!
- Easily integrated with MSSQL and MySQL (again, my opinion)
You may include only MySQL support, that is really enough for emulator, MySQL supported fine on Windows - based Servers too.
- More possibilities for fancy stuff, depending on how it's done (silly example, look at runescape)
- Very Flexible

what do you mean? Any example of customizations please. MuOnline is - RPG, not a MMORPG. Like a Diablo and etc. If we imagine a game-design concept of MuOnline, best & right way - only add features in "MuOnline" style... Dont need add features like a "build you own house" or "dungeons" like WoW or something else.
- Universal (can be played/ran on every OS that has JAVA installed)
Multiplatform... hmm that is really hard task, becouse a Lin/Mac/Win have a different API (for simple example - try to implement a cursor(colored and etc) for all systems, include linux... For linux, you need a really low-level API for draw that.)
- More CPU than GPU dependent. (depends on graphics used)
CUDA? You solution? That is really not simple, i will ask that again - you need a low-lewel coding again.
- Everything, including graphics can be done professionally with FREE tools (i.e Blender (graphics), Eclipse) (same applies for the rest of the programming languages, I am aware)
- (Applies to all languages) Properly optimized, It can take minimal ressources to output some very fancy visuals.

Hmm, that is good about graphics. (i mean tools). About resource usage - how you test them? Where testing.log, or something for proof? My imho here - the best way for implement this - store (models & their textures) in packed binary format.

Well, the idea is great, but need to know a more technical details for talking about that. Whats already done? Coding standarts? How about (for example) Maps code? Char movement algorithm? Patchfinding?(when player left-click by mouse on minimap for example, and move to that location) (you may use A* algorithm, becouse movements in Mu - 2D, have a only X,Y). Do you have a working plan, todo's, repository, tracking system, etc? How you want coordinate the project?

At this time - so much questions... more than answers. Keep it up! and goodluck!


Thank you for your interest!

Here are my explanations:

When I said adding fancy stuff, I didn't mean building a house, or Dungeons (But why not, if not making EXACT copy of mu online?)
if we look at the regular client, we can see that the glow and effects (power slash for MG, twisting Slash for DK/BK) can cause extreme lag, When I gave Runescape as an example, I didn't exactly want everyone to look at the player-specific houses/dungeons, but focus towards the effects and how they are compressed to extremely small form and extracted and translated by the client. (proof is very simple, When I am on RS. I am monitoring my data, for 1 hour, on maxed everying, it uses about 17 mb. (~17.3-17.5 mb) Which for an MMO is extremely good! I am talking about chat, commands transfer for fireworks, coordinates, etc, etc. In my opinion that is EXTREMELY good!

When you mention dungeons, I was thinking exactly that actually, Script user specific dungeons that can be joined by parties, but are unlimited. like always re-spawn mobs and have good loot at the bosses. (that will eliminate spot crowding problem, but maybe add a time limit to remove danger of dungeon abuse for epic loot)

for Multi System, Java is Java. it's universal. example given: download (JDownlader) scripted completely in JAVA. no matter which release you download, Unix, Mac or Win, it will run in Java environment (used .jar files). so, while host system has java environment installed, game can be played with little to no changes in the code.

for Blender, I do not have any logs, I am basing my conclusion on observations for games that I have played with players. A 3D or 2D model created in blender (for example, OMSI Bus simulator gets their graphics from Blender and they are very close to realistic ( Need work on colours and contrast) but some 3D animator created a model with Unity engine and it was 7x bigger than 3D model with Blender.(from 23mb in Blender to 158mb in Unity) There was nice visual difference, but since I want this game to be from high perspective, why bother with High quality models when user won't be able to see?

When you ask me why more CPU than GPU dependent. My observations are the following:
My teachers taught me, JAVA is very CPU dependent because it's always doing mathematical operations. Assign item A to item B, move this there, that here, etc, etc
GPU can join the work, by helping calculations with CPU, I read on AMD and nVidia website they have the ability to share load from CPU.
The graphics of MU are not that big, maybe 100-150 megabyte for all the graphics to pre-load to virtual memory and keep there.
the rest will be job of the CPU

I will now answer your question about movement.
Originally I wanted to keep the original 2-Axis X-Y movement. And I Still do. It's close to perfect the way it is. However Maybe work on the maps. Make them bigger/smaller (to decide)?
Todo's are a lot.

1st step is to find people who are interested to work on this.

I have already created the Character Constructor methods, but it takes me about 2-3 days to create a constructor, then it's copy/paste because the majority of stuff repeat themselves.

example:
create a constructor for Dark Knight
str, agi, vit, ene, (remember command is only DL)

BUT there is also
Defense, Def Rating, Atk Speed, MoveSpeed, dodge rating, ManaPerLvl, HpPerLvl, HpRegen, ManaRegen, HpRegenLvl, ManaRegenLvl,

then you add
% application of weapon damage to normal character DMG

after that is all completed, you copy/paste for the rest of the 5 chars; SM, MG, ELF, DL(here make small edit and add command) and Summoner.

I have done that
I have constructed maps, I have coordinates system, and some Items and sets are completed. in total its take me 1 month to do all that.

BUT remember, until now I have no GUI. I will do separate job. I need to make .jar file that calls resolution file which constructs window. then I need to work on conversion from .OZT to .jpg or .png files, find someone who is interested to compress to binary lvl to save space

THEN

if I see browser edition is too big, we have to RE-create the whole client with compressed to binary lvl every single file!

After that.

Once we create GUI interface and be able to login, I will work on coordinate system to show exact coordinate, it's simple really, portray the map as 2D array and according to where your character is found, just display the coordinate with a simple counter
example:

int[][] coordinateSystem = new int[255][255] //size of map is ((255*255)*1000) create a realistic size to map. (edit by need if too large)

for( int i = 0; i < coordinateSystem.length, i++)
{

for( int i2 = 0; i2 < coordinateSystem[].length; i2++
{
if (character) //if character boolean = true (which means character is present in this spot)
SOPln(Arrays.toString(coordinatesSystem[i2])); //print position to where the character boolean is present on the map.
}
}


This is not the exact algorithm, but it will follow that logic.
I work on my code, I make it always clean. If too much comments or code doesn't work properly, I erase and start over.
I want perfection and I aim for it, always.

Right now I am working on an linux system, remotely logged in my server at home via SSH so I can work on this always and if my laptop HDD crash I won't lose sources.
I will create a repository and pack an installer, but that won't be any time soon because I just barely start the work. if I am going to do alone, I cannot guarantee before the next 3 to 5 years because I want to guarantee GOOD game with excellent code to have even weaker computers be able to play this.
 
Joined
Aug 6, 2005
Messages
550
Reaction score
296
if we look at the regular client, we can see that the glow and effects (power slash for MG, twisting Slash for DK/BK) can cause extreme lag, ...
That's because the client of webzen seems to use the CPU for rendering and/or is extremely inefficient. This kind of effects are a piece of cake for any GPU.



When you ask me why more CPU than GPU dependent. My observations are the following:
My teachers taught me, JAVA is very CPU dependent because it's always doing mathematical operations. Assign item A to item B, move this there, that here, etc, etc
GPU can join the work, by helping calculations with CPU, I read on AMD and nVidia website they have the ability to share load from CPU.
The graphics of MU are not that big, maybe 100-150 megabyte for all the graphics to pre-load to virtual memory and keep there.
the rest will be job of the CPU
Sorry, I think you don't have a clue what you are talking about. Every "mainstream" programming language does use the CPU. It is in the job of the developer to hand over data and programs to the GPU, for example with OpenGL/DirectX. Not every problem can be efficiently resolved on the GPU, however I think a MU Online client can be realized even with JavaScript and WebGL - so why even bother with Java?! JavaScript and WebGL runs on every modern browser, even on mobile and is future proof. A lot of languages can be compiled to JavaScript, there is asm.js with Emscripten, etc.
If you are interested in WebGL, have a look at

The server side however, is a different story. I would choose any language which suits you best. Java, .NET, C++ doesn't matter if you ask me, all can be fast enough if the developer knows what he's doing.


I have already created the Character Constructor methods, but it takes me about 2-3 days to create a constructor, then it's copy/paste because the majority of stuff repeat themselves.

example:
create a constructor for Dark Knight
str, agi, vit, ene, (remember command is only DL)

BUT there is also
Defense, Def Rating, Atk Speed, MoveSpeed, dodge rating, ManaPerLvl, HpPerLvl, HpRegen, ManaRegen, HpRegenLvl, ManaRegenLvl,

then you add
% application of weapon damage to normal character DMG

after that is all completed, you copy/paste for the rest of the 5 chars; SM, MG, ELF, DL(here make small edit and add command) and Summoner.
Sorry, but this sounds funny to me ;-) copy/paste-code is always a sign for bad design. I guess you don't have much experience yet, so I give you some hints:
You could create one class "Character" for all kind of characters. The character class (DK, Elf...) is just a field/attribute of one instance of a "Character". You can make a "CharacterClass" class which can contain your character-specific attributes. For each character class you can create one instance and share them across all "Character"-instances (Flyweight-Pattern).
You also don't need to add fields (for Defense etc.) like crazy to the "Character" class, make a collection of "Attributes" instead. I created a system which can automatically calculate attributes based on other attributes etc - it rocks.
I know this might sound difficult to you, but in the end, a clean and expandable design can save a lot of time in the long run.


- Easily integrated with MSSQL and MySQL (again, my opinion)
- (Applies to all languages) Properly optimized, It can take minimal ressources to output some very fancy visuals.
- Please don't use MSSQL or MySQL. MSSQL is really expensive if you want it legal (to be clear: I AM AGAINST WAREZ). MySQL doesn't respect SQL-Standards and is not completely free like everyone thinks - it is dual licensed. I doubt all the guys who use the "free" GPL client libraries are releasing their software under GPL as well. If you want to use a powerful, standard-compliant, really free and open database, I recommend PostgreSQL.
- Imho the JVM is using a lot of memory compared to other languages/platforms, even for simple programs.
 
Last edited:
Junior Spellweaver
Joined
Jun 25, 2006
Messages
191
Reaction score
226
if you want to make a game, u need to choose what to use, based on your knowledge.

if you dont have experience in oop programming, if you dont have some basic math knowledge (single-multi varibale calculus, linear algebra) and if you dont have time, use unity3d or unrealengine.

otherwise, if you want to learn, write your own game, wrap OpenGL api (or use JOGL) and start from there. (if u choose this, good luck... u will need that.)
 
Newbie Spellweaver
Joined
Jun 19, 2008
Messages
85
Reaction score
11
dont waste your time trying to recreate a game that already exists. But, if you really do, build it for Android... iOS...
 
Banned
Banned
Joined
Jan 1, 2014
Messages
793
Reaction score
81
Dude, it seem to me your going to code a whole lot of stuff you think is it worth.

You might as well devlope another game similar or high version to MuOnline. Thats a great start and many will be looking forward to it bro.
 
Back
Top