[Unity3D] MU Showcase.

Joined
Jan 22, 2009
Messages
1,183
Reaction score
539
Hey,

Well, for a while now, I've been having fun developing my own framework for Unity 3D because I was working on a Ragnarok project (in case you're curious, there's a video about it on the same channel). And of course, I've been following some MU projects over time, some of which started and then stopped, while others managed to launch and are still on the market today.

So this topic is just another showcase as well. I don't know how far I'll go, but I don't have big ambitions for SEASON 100000 (all features), etc. Currently, my plans are more about testing my framework and potentially reusing this 3D project in other plans. So, I would say that my current backlog would be 3 complete classes, the basics of an RPG/MMORPG (inv, char, guild, friend..), etc.

In case you're curious about the server being used, I'm currently using a customized version of OpenMU (I'm not and don't want to follow the actual MU structure, like serialization, movement system, etc.). And of course, if you don't know it yet, you're missing out.

I chose OpenMU mainly because it's in C#, and, of course, there are several other factors, such as the project's maturity, the architecture choices made over the years, etc. MU is a straightforward MMORPG with multiple channels, so there aren't many secrets or extreme optimizations involved.

Video:


As you can see, I've only focused on the export process for now; there are still some issues to be fixed, such as detecting shaders for objects with transparency, some missing textures (hence the pink color), and so on.

The project is a few weeks old, but most of the time has been spent exporting various objects (not necessarily from BMD to FBX with Blender) but rather from FBX to Unity and performing the necessary processing and conversions to prefabs, etc.

The export for maps still requires some adjustments, like the lightmap (it's easy to read in Unity, but I would like to try converting the lightmap to light probes with some simple logic to see what the result will be), maybe improving the grass on the maps, and other minor issues.

Another part where time was spent is the conversion of monsters/NPCs to be rendered, because in the main source code, it's a huge switch statement for handling them. I ended up converting all of that into a custom file; I don't want to leave it hardcoded, as I already have enough trauma from working with Ragnarok.

That's it for now. I hope to post progress gradually, and my next step now, just to have some fun, is to focus a bit on the UI and 3D HUDs to bring a bit more life to the project. I also want to finish the new server-side serialization, maybe add the ability to teleport between maps, and so on.
 
Well, this week I’ve been playing around a bit more with lightmaps. As I mentioned earlier, I wanted to convert the lightmap itself into actual lights so I could edit them and do the baking process (maybe some people think it’s useless or not worth it, but I don’t care lol). Anyway, I’ve made some progress; I just need to improve the intensity of the lights.

Here’s the current example in Lorencia. For instance, this photo shows Lorencia without any lightmap:

Screenshot_3 - [Unity3D] MU Showcase. - RaGEZONE Forums

Now, the second image shows the lights generated from MU's lightmap:

Screenshot_2 - [Unity3D] MU Showcase. - RaGEZONE Forums

And now the final result, after baking:

Screenshot_1 - [Unity3D] MU Showcase. - RaGEZONE Forums

I have also been reprocessing the FBX files again for a few reasons:

- Many of MU's animations don't end smoothly enough to achieve a ping-pong effect without a sudden restart of the animation. So, I reprocessed them to interpolate the last keyframe with the first one, making the looped animations a bit smoother.

- Another thing that was done is that some items or players are not completely in the T-pose. I have currently implemented a mesh combiner, which combines the player's skeleton with the equipped items. This provides some performance gains, reducing draw calls and skinned meshes. I haven't checked the actual gain, but it's already better than having multiple game objects with animators for each one, and so on.

I started setting up some interactive triggers, such as the roof of certain buildings, where the roof disappears when you enter the building or house. Well, I added a small algorithm to grab all the objects, like the roof of a building, automatically calculate the collision, and add it, as shown in the image below.

Screenshot_5 - [Unity3D] MU Showcase. - RaGEZONE Forums

The only thing that needs to be done is to add the object's ID to the script to identify the 3D object.

Other things were done as well, such as identifying special NPCs/monsters, whether through specific equipment or NPCs that have their own skeleton and corresponding equipment.

Screenshot_6 - [Unity3D] MU Showcase. - RaGEZONE Forums

After I make more progress, I will be recording another video. I still want to implement the UI, improve the FSM for object animations, finish the lightmap, and start looking into the chrome shader.

Well, that’s it for today. I hope to post more things soon. :)



Well, these past few days I’ve been finalizing the lightmap. It’s now possible to convert the MU lightmap into lights (points) in Unity and perform the bake. Of course, it won’t be 100% identical to the original, but they are quite similar, and I’m happy with the result. :)

I also implemented the water layer from MU. Since it’s not possible to animate the water tile on Unity’s terrain directly, I had to create a custom implementation. First, I need to detect where the water layers are used throughout the terrain and create a water mesh, allowing the use of a custom shader to animate the offset and even create waves. The water meshes are generated in chunks (32x32), which can then be optimized alongside Unity’s culling.

I initially implemented the enchantment effect (chrome effect) per item. I’m not satisfied with the result, but there isn’t much I can do for now. I still don’t know how to achieve an effect that’s more faithful to MU xD. However, the colors for specific items and other details are already implemented.

Several other fixes have also been made, such as adjustments for items like HelmMale01 and HelmMale03, which are some helmets that conflict with the head. In such cases, a special handling is applied when combining the skinned meshes for these isolated cases.

I still want to look into the chrome effect a bit more, but I also want to move forward with other aspects. That’s it for now. :)
 
Last edited:
I ended up deleting the old post with the previous update, but the attachments were lost. However, I’ll leave the text inside the spoiler. :(
Well, this week I’ve been playing around a bit more with lightmaps. As I mentioned earlier, I wanted to convert the lightmap itself into actual lights so I could edit them and do the baking process (maybe some people think it’s useless or not worth it, but I don’t care lol). Anyway, I’ve made some progress; I just need to improve the intensity of the lights.

Here’s the current example in Lorencia. For instance, this photo shows Lorencia without any lightmap:

View attachment 267238

Now, the second image shows the lights generated from MU's lightmap:

View attachment 267237

And now the final result, after baking:

View attachment 267236

I have also been reprocessing the FBX files again for a few reasons:

- Many of MU's animations don't end smoothly enough to achieve a ping-pong effect without a sudden restart of the animation. So, I reprocessed them to interpolate the last keyframe with the first one, making the looped animations a bit smoother.

- Another thing that was done is that some items or players are not completely in the T-pose. I have currently implemented a mesh combiner, which combines the player's skeleton with the equipped items. This provides some performance gains, reducing draw calls and skinned meshes. I haven't checked the actual gain, but it's already better than having multiple game objects with animators for each one, and so on.

I started setting up some interactive triggers, such as the roof of certain buildings, where the roof disappears when you enter the building or house. Well, I added a small algorithm to grab all the objects, like the roof of a building, automatically calculate the collision, and add it, as shown in the image below.

View attachment 267241

The only thing that needs to be done is to add the object's ID to the script to identify the 3D object.

Other things were done as well, such as identifying special NPCs/monsters, whether through specific equipment or NPCs that have their own skeleton and corresponding equipment.

View attachment 267242

After I make more progress, I will be recording another video. I still want to implement the UI, improve the FSM for object animations, finish the lightmap, and start looking into the chrome shader.

Well, that’s it for today. I hope to post more things soon.



Well, these past few days I’ve been finalizing the lightmap. It’s now possible to convert the MU lightmap into lights (points) in Unity and perform the bake. Of course, it won’t be 100% identical to the original, but they are quite similar, and I’m happy with the result.

I also implemented the water layer from MU. Since it’s not possible to animate the water tile on Unity’s terrain directly, I had to create a custom implementation. First, I need to detect where the water layers are used throughout the terrain and create a water mesh, allowing the use of a custom shader to animate the offset and even create waves. The water meshes are generated in chunks (32x32), which can then be optimized alongside Unity’s culling.

I initially implemented the enchantment effect (chrome effect) per item. I’m not satisfied with the result, but there isn’t much I can do for now. I still don’t know how to achieve an effect that’s more faithful to MU xD. However, the colors for specific items and other details are already implemented.

Several other fixes have also been made, such as adjustments for items like HelmMale01 and HelmMale03, which are some helmets that conflict with the head. In such cases, a special handling is applied when combining the skinned meshes for these isolated cases.

I still want to look into the chrome effect a bit more, but I also want to move forward with other aspects. That’s it for now.
 
Last edited:


Hey guys, after a few weeks, I’m here to share the progress made for this stage:

  • Added the first UIs, such as a dynamic minimap, and also developed a script to generate the minimap from the ATT.
  • Added inventory. This step took longer than I would have liked, but it was a bit challenging to handle the 3D models within Unity 3D’s UI, so I had to develop my own UI system to manage the Z-index of the UIs to properly handle the 3D objects. And yes, I am not using RenderTexture because I ran several tests and found a significant performance loss!
  • Added a character information UI displaying current equipment in use, although I still plan to refactor this interface.
  • Added the Main UI, which shows the character’s current HP/MP, experience, and 3D HUD (character names, NPCs, monsters, etc.).
  • Refactored the shaders for leveled items. You can see a great improvement in the video, but it’s still not perfect; I still want to adapt the map's lighting and other factors.
  • Decompiled the main of S16 to read the monster and NPC models, which were all hardcoded in the main. I also converted them all into a readable and easily editable file.
  • Re-imported all assets. Currently, we are using assets from S20 (including models of the new class) and importing maps from S20 as well.
  • Currently implementing and improving the client core, including UI control, object pools, networking, and, in the near future, I’ll be implementing audio/sounds.
  • Fixed several small bugs that were found.

Other things were done as well, but I can't remember them right now xD

Anyway, I’ll continue working on the inventory, making some adjustments, adding the rotation effect and also implementing the first version of the tooltip. I also want to add the stats system to allow for increments, include a chart (yes, I like them) showing the current stats, and make other tweaks.
 
amazing work, willing to share some details? can you private message me?
 


Hello guys,

It took me a while to post updates due to some oxidation issues with the i9, but I’m back.

The progress in this stage is primarily focused on implementing UIs.

Here's the changelog:
  • Implemented the Map UI (featuring zoom, panning, an entity list on the map, and auto-move functionality);
  • Implemented the World Map (used for teleportation and navigation; the background I'm currently using is temporary);
  • Added rendering of entities on the minimap;
  • Improved layer and depth control for UI to better handle 3D objects;
  • Continued inventory implementation, now allowing objects to be moved within the grid;
  • Added tooltips for items, which are now 70% complete. There are still many hardcoded texts in the main UI that need to be converted for my client;
  • Implemented notification system (system messages and Map notification);
  • Implemented a chat and minimap system, which are still in progress. For the avatar feature, I’m still considering options or may leave it as static class images;
  • Enhanced the current client shader, now using a custom mobile shader that is performance-optimized and adapted for MU effects, with support for lights;
  • Made several fixes.

Well, there are other things I’ve worked on, but I can’t remember them all right now. For now, I plan to focus more on the combat system and other UIs.
 
great project, hope you can finish it. i have seen a lot of Mu on mobile rewritten with unity, maybe they have enough finance and human resources to be able to quickly finish and commercialize it, in my country, there are at least 4 to 5 servers like this and they are all different.
 
It's been a while since I last posted a progress update here, but I'm still developing. A lot has already been done and rewritten, especially the headache of having to deal with 3D object rendering in UGUI.

I also changed the UI, since the previous one didn't get good feedback, so now I'm using a different version from a Chinese MU lol

Anyway, here's a simple video showing item upgrading and the warehouse.

 

I think they have your sourcecode
 
Back