Advertisement

3D game like Metin2

Started by August 09, 2014 11:12 AM
4 comments, last by Gian-Reto 10 years, 5 months ago

Hello guys!

I made a game with Unity and c#. Unity has a lot of feature what are not necessary for me.

I would like to make a game like Metin2 (by that I mean the game structure), the pack system.

With Unity i think it is not possible.

I am stuck. I don't know which would be the best programming solution for my problem. I know programming in c#. My server side is in c# console. I would like to make a client for that. Unity is not good for me.

What do you recommend me? Should i start to make it in python or in java? I heard about SlimDX (or something similar) it is a DX framework for c#.

Thanks for the answers! Bye!

I think it would be helpful for people trying to help you to give a quick explanation of WHAT you trying to accomplish and WHY it does not seem possible within Unity.

I have a hard time believing something being outright impossible within Unity, as its a quite open general purpose game engine. Possibly you just haven't found the right way of doing it?

I had to do a quick wiki search for Metin2. Seems to be one of the rather obscure Korean MMOs (obscure from a western perspective), so I think you should add a quick description of the game, and what parts of it you face problems with while recreating in Unity.

My recommendation for you with the current amount of information is to chill, think through the problem you have, document it well here and see if there isn't something you can do with the Tools and Languages you are already accustomed to.

Advertisement

By game like Metin2, i meant the structure. In Unity i cannot figure out, how can i make the patcher system (the game updater).

For the beginning I would like to create a game, where you can log in, you have an inventory you can hit the other players with your hand or with a weapon (sword, bow, dagger).

In Unity you cannot create patch files. You cannot say that:

OK Unity you have to create 5 decrypted asset files: weapons, terrain, monsters, player, item

If the game developer makes a change in the item asset file you have to download that asset and (with the same exe) you have to run the game.

Secondly I would like to create a client which I can edit without rebuilding the game again and again.

Hm.... sounds not like this is something Unity comes prebuilt with, but maybe I misunderstand things.

1) Patcher file:

This is just information to update the client with. You are talking about updating the values of Items, but not fully swap out graphical objects, change scenes and stuff like that? Or you want to completly change scenes without swapping out the "exe"?

2) Change client without rebuilding:

Wait, what are you trying to achive here? You don't want to rebuild the game when you fully change scenes, add 3D Models and so on? You want to able to change the client without changing the server?

EDIT:

After thingking somewhat about your problem here, I got some ideas how it COULD work in Unity (be aware most of this is untested as I never come close to needing a patcher yet).

1) What you first need is a patcher process. This could be as an additional scene in your build or as complex as a separate c++ program that will call your built game once the patcher is done.

2) If we go with the simple Route, you would build a simple additional scene that would show the patcher GUI with the patch download and install status (and is fabulous place to sneak in some advertisments, if you want to go that route).

This Patcher will start a host of scripts, that use the Unity networking layer to contact your server, check if a new patch is available, and then download your patch (which is just a unity package containing all the new 3D Models, Audio, Textures, and the Patch scripts that do the grunt work of updating the built game).

3) Then the patch scripts get started. Now, I am threading in murky waters for me. I am NOT sure you can change a scene that got built just like that... but you could build the scene in a way that makes it easy.

3a) lets say you want to tweak your weaponstats a lot. Write that stats to a local DB or file (encrypt it if you want to prevent the player from having an easy way to cheat). Chances are, if you build a multiplayer game, this information is mastered on the server anyway, so no need for patching.

3b) If you want to change a scene: Build up the scene in a way that will preload most scene information from the latest patch file, and create the scene on the fly. Of course lightbaking and stuff like that needs to be done in the Unity editor so your patcher script gets a built lightmap to work with.

3c) If you want to swap out the model of a character: Again, check at scene startup or game startup which charactermodel should be loaded.

Of course there might also be the possibility to go even deeper and write a script that will modify the built game permanently. I have no expierience with that, but there is a valid reason to choose that over the dynamic route I described above (less time wasted on game startup / scene startup), so I guess SOMEONE must have thought about it in the Unity community at one point or another.

EDIT 2:

On rereading your last post, I think you want to go the dynamic route. Let me assure, that IS certainly possible. But most of the scripting and hardwiring you will have to do. You might find some Assets in the Asset Store that will do that out of the box, but most probably not for free.

Creating the Patcher would certainly be easy. I guess the downloading part would also be not a problem as it is one of the simpler tasks in networking.

Now, if you talking Item Asset in the sense of "Tweaking the Game Values"... they should be stored on the server in an online game anway. Get a local copy at startup and regularly check that the player has not hacked into it and changed values.

Or, if your game is really playing it save, the client will not need the information at all, as all game calculations like that are handled on the server anyway (the client would just get results and show the graphics)

If you talking about "Changing the Graphics of Items", then this also shouldn't be a problem. Swapping one mesh out for another is a simple task in Unity. Unity shouldn't care if that Resource has been in the built game from the start or was just downloaded, if everything is in the right format.

You might run into smaller troubles like adjusting your characters animations for a new weapon mesh or FX needing a replacement. There are just as many options to solve them (importing new animations, making sure the new weapon model is compatible with the existing animation, using some kind of Inverse Kinematics to place the Hands at the right points ).

Thanks for your long post, I really appreciate it. But, I think Unity is too good for me. I don't want to use an engine like a that for my game (and there is licensing problem as well, I don't have money for the full license).

I am thinking to make my game with SharpDX or SlimDX.

I will check one more time in Unity with your information.

Thanks!

Regards MrAkroMenToS

Thanks for your long post, I really appreciate it. But, I think Unity is too good for me. I don't want to use an engine like a that for my game (and there is licensing problem as well, I don't have money for the full license).

I am thinking to make my game with SharpDX or SlimDX.

I will check one more time in Unity with your information.

Thanks!

Regards MrAkroMenToS

About the licensing:

Be aware that you can use Unity free of charge, as long as you meet the following requirements:

- you earn less than 10'000$ with games annually

- you do not need Image Effects (SSAO, Depth of field, blur,...)

- you do not need deferred (to be able to use more pixel lights in the same scene)

- you are happy with hard shadows and don't need soft shadows (for realtime shadows)

- you don't want access to Unitys profiler

- you are happy to optimize your static meshes on your own (no static batching for the free edition)

Depending on your requirements, that might not be a problem for you.

Altough, if your requirements are actually pretty light, going the DIY Route with the engine might be the better way of handling things. You certainly will have an easier time writing your patcher that way, and might cut down on some of the engine overhead that Unity would certainly add.

Be aware that other engines might give you more for less money (have a look at the unreal Engine 4, you get the full engine for 20$ if you handle the subscription right), the only downside to Unity is 5% royalities if you reach 50k$ profit with your game.

But there do not seem to be the same limitations to that Indie version than what you face with the Unity Free version.

Of course, UE4 will most probably also not solve your patcher problem out of the box.

This topic is closed to new replies.

Advertisement