Search Unity

uMMORPG Official Thread

Discussion in 'Assets and Asset Store' started by mischa2k, Dec 29, 2015.

  1. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    1) Watch this video:
    . During the last few minutes Erik talks about the simulation server and the master simulation server. We need the master simulation server to be exact, because it allows us to split the game world between different server instances automatically. I am sure it is worth waiting for it, since this would make hosting uMMORPG very easy (via the build menu).

    2) That would be the server library that was mentioned above. It's a library to use UNET functions from outside of Unity.
     
  2. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Update: V1.36 is now on the Asset Store. Changes:
    • Upgraded to Unity 5.4.1p1 to avoid UNET bugs
    • Damage Popup RPC is sent to attacker instead of target to avoid cases where it may not reach the target if it died
    • SyncList hook bug workaround implemented again
    • UI hotkeys for inventory, equipment, skills, quests, character info windows
    • Skillbar hotkeys have any-input-active check now
    • Moved character create function from NetworkManager to Database
    • Spawn has a Gizmo now for better visibility in the scene view
     
  3. jonkuze

    jonkuze

    Joined:
    Aug 19, 2012
    Posts:
    1,709
    Has anyone created or maybe have a work in progress game they have online? I'd love to see what is being made with this framework thus far.
     
  4. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    There was this ship game that someone made, which looked really neat. There were screenshots somewhere in this thread, during the first few pages I think.

    I do get the occasional email with screenshots here and there, but I don't know which of them are meant to be kept private.

    It will probably take another 2-3 years until we see a real MMORPG release though, considering how people couldn't have worked on it for more than a year yet (since uMMORPG release) - which is not much time for an MMO.
     
  5. CaptainMurphy

    CaptainMurphy

    Joined:
    Jul 15, 2014
    Posts:
    746
    https://www.wolfpackgames.co/portfolio/sea-titans/
    This is our current in-progress game using uMMORPG.
     
    jonkuze and mischa2k like this.
  6. bartuq

    bartuq

    Joined:
    Sep 26, 2016
    Posts:
    127
    I would like to do drag and drop item from inventory to the ground. When I move an object out of a backpack it must appear in front of the player or in the indicated place. Someone has tried this in uMMORPG? Something like this (transform as player):
    Code (CSharp):
    1. Instantiate(prefab, transform.position +(transform.forward*2), transform.rotation);
    just where to insert it
     
  7. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    PlayerDndHandling has a OnDragAndClear function that is called when dragging something out of the window. You can start there.
     
  8. bartuq

    bartuq

    Joined:
    Sep 26, 2016
    Posts:
    127
    I put this in CmdUseInventoryItem (use item)
    Code (CSharp):
    1. Instantiate(item.model, transform.position + (transform.forward * 2), transform.rotation);
    Thanks for the advice I'll check it.
     
  9. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    That function is client sided by the way. So from there you would call player.CmdDropItemToGround(int itemIndex) etc.
     
  10. jonkuze

    jonkuze

    Joined:
    Aug 19, 2012
    Posts:
    1,709

    Very cool! Thanks for the reply, I'll check it out.

    Although I know a game can take a long time ofcourse, I'm surpise to not see more work-in-progress titles with this Framework. It's really amazing! I haven't yet purchased it, as I have very little time right now as a Web Developer working on other projects. But when I am able to return to Game Development, I plan to use uMMORPG Kit. Very well designed, great work.
     
  11. angeji_96

    angeji_96

    Joined:
    Oct 15, 2015
    Posts:
    8
  12. shamsfk

    shamsfk

    Joined:
    Nov 21, 2014
    Posts:
    307
    vis2k, Hello!

    I have several more questions:
    1. What is your stand on player abusing game client (boting and etc)? Have you thought/worked/know of any solution to make that at least not so obvious (I'm looking at you - c#)? Obfuscating won't help too much, maybe some integrity checks or something else? That is the task for later but it should be planned ahead imho.
    2. Do you know of a way to remove some logic during a build phase? I'm talking about removing server side logic code from client build to not to expose it. Another solution is to maintain different projects for server and client but that is something I want to avoid.
    3. Can you share your thoughts on multithreading server logic (you mentioned that you have some)? Simulation server is nice and everything but it seems to be very far away.
    4. And maybe a general note on how do you see a game made with uMMORPG growing past a prototype phase?
    Sorry for such a burden with all those questions but I'm to start a long lasting project and even thou I like your framework very much there are issues mostly unity-related that must be adressed to make a viable choice.
     
    Last edited: Sep 28, 2016
  13. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    This looks neat. I can add it to some kind of uMMORPG showcase if you tell me the name of the game.

    Hello.

    1. and 2.: this is a complex topic. I did lots of reverse engineering before I started working with Unity and also worked on a few game bots. First of all, we need the IL2CPP build option for windows/mac/linux instead of just for WebGL, Android etc. If you look through my post history you will see that I explained this issue to the IL2CPP developers before, so they are aware of it. They seem to be doing good work too, so I am pretty sure that we will get this option eventually. If not, there's still code obfuscation, which would require a custom approach to not break UNET or Unity. But it's possible. Note that UNET also does a script CRC check when connecting. But even if a client knows all the code and modifies it, it still doesn't matter if the server is secure. People have been doing that for a long time with clientless bots etc. So wallhacks, speedhacks, item duping etc. can all be avoided if the server is secure. I believe that uMMORPG is secure, because all input is carefully validated by the server and all the movement is simulated on the server as well.

    Now game bots are another issue. People will always be able to create a game bot, given enough time and motivation. There are two ways to avoid game bots: either a client sided detection, which is not that difficult, or a server sided 'this looks like a bot' detection. This part is not that difficult if you are smart about it. For example, you should never show a big message like 'game bot detected', then botters will know where to look for the check. Instead, you should always silently detect the bot and then ban the user a bit later.

    Removing logic is another option, but I personally would consider this too much of a hassle, unless the UNET developers come up with a native solution. IL2CPP is the way to go here. I don't really mind if people see the item trading algorithm in assembly.

    3. UNET and all our Unity scripts are single threaded. I hated it first, but it turns out to be not that bad since we will never run into deadlocks, race conditions etc. Multithreaded C# would be a nightmare, this only works well in more functional languages with immutable data structures. Splitting the world between multiple server instances is the far better solution. If you test uMMORPG with lots of entities you will notice that once the CPU reaches 100%, things still continue to work, they just slow down. With multithreaded MMOs, things usually start to go horribly wrong when CPU load reaches 100% (race conditions, deadlocks, etc.). So for us indie developers, not worrying about these kinds of things is really good. Note that you can still use C# threads if you wanted to, but you really have to know what you are doing.

    4. If available, use the simulation server and IL2CPP for windows/mac/linux. If no simulation server exists, create your own (or use mine if I ever make one, like I mentioned before). If no IL2CPP is available, release for WebGL first or use obfuscation or just don't care about people seeing your code until a future version can be built with IL2CPP. Use my patcher if you need one. Combine with a forum or content management system for user management. That should do.

    I suggest contacting the IL2CPP guys at Unity by the way. Let them know that you need this feature. The more people request it, the better!
     
    Last edited: Sep 28, 2016
  14. shamsfk

    shamsfk

    Joined:
    Nov 21, 2014
    Posts:
    307
    Thank you! That are very well defined and helpful answers!

    Multithreading worries me a lot still.
    Lets take for example a Capital city zone. I can do whatever server splitting and zoning but from my own gaming experience there definitely will be some place that players will choose to hang out which will most likely cause that poor core to boil up.
    And that scenario is not too far in the future (more likely - its from a day 1 problem)

    I will definitely contact IL2CPP guys, that feature is too of a great importance imho.

    And one more) I studied this forum heavily for days and issue tracker too, and it looks like uNET is in some kind of stagnation or what? Looks like one more risk to assess.

    Still, just a mere look at c++ server framework behemoths out there makes you think pretty carefully on where are you going)
     
    Last edited: Sep 28, 2016
  15. VE_GAME

    VE_GAME

    Joined:
    Mar 13, 2014
    Posts:
    41
    there is not one of the popular game, which is not bots

    dozens of programmers can not do nothing

    it is impossible to protect the game against bots

    ps / rejoice if written bot, your game is popular))
     
  16. shamsfk

    shamsfk

    Joined:
    Nov 21, 2014
    Posts:
    307
    well, that is true, yet bots can sink your game within a blink of an eye. look at Tree of Saviour - very nich project marketed to diehard RO fans.
    Its like dead already, still floats but upside down. And awful amount of bots is the main reason, not to mention ineffective measures to counter them which led to second half of reasons.
    So, true - bots mean you'v done well - but leave it be - and you is as good as none.
    No one hopes to make impenetrable bot defence, but there will be a huge difference between closing the gaps and closing a Titanic sized breaches.
     
  17. VE_GAME

    VE_GAME

    Joined:
    Mar 13, 2014
    Posts:
    41
    I mean, if a game is popular you will have the money to hire programmers.
    but now you can throw a force for the development of the game.

    but it's everybody what to do)
     
  18. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    About concurrency:
    Your concerns about being single threaded are all valid.
    From my experience though, indie MMO projects never fail because too many people want to play them. They fail because developing an MMO, even a small one, is incredibly difficult.

    For perfect performance / CCU, you would need a client written in something like raw C++ and a server written in a programming language that works really well for servers, like Erlang. Erlang is so good with concurrency that scaling is basically free, because it just doesn't care if an extra process runs on the same computer or on a different one. A C++ & Erlang approach would probably only take you 10-15 years of your life.

    With Unity+UNET+uMMORPG you can launch in 1-3 years easily. It won't be as fast, but personally I care about 10 years of my life more than I care about CCU. Even if you wind up with a CCU of 500 per server, it's not that bad. You launched an MMO where all others failed. You make money from your dream job while others are still delivering pizza and working on their C++ library in their free time.

    So really this is a luxury problem to have. Of course, there are actual solutions to it. With some know-how you can use C# threads to outsource some computations to other cores. uMMORPG physics are really simple and could easily be simulated in another core. Pathfinding is basic A*, that could easily be simulated on another core as well. The Database just writes and parses files, you can use another core for that as well. Even when remaining single core, you can still add lots of optimizations like caching all components, reducing tick rates for "IDLE" entities, etc. If you wanted to, you could at some point also replace the server side with Erlang, it's all doable. This is an easy problem to solve once you get to the point of having thousands of players play (and pay) for your game. The challenge is to get there. This is the problem that I am trying to solve.

    About UNET: Networking is really difficult, and the developers solved a lot of really hard problems already. I love UNET. Fixing bugs and posting on the forums doesn't seem to be much of a priority though. And since they don't talk much, we don't really know what's going on behind the scenes. Perhaps there are deadlines to be reached for new features. Perhaps more features make more money than bug fixes. Perhaps they don't care as much as you and me, since it's just a job. Perhaps it's because seanr left, who was the HLAPI guy. Or perhaps the bugs just take that long to fix. Perhaps send them an email and ask nicely, who knows what we will learn.

    Of course, given enough time and motivation, bots will always be possible. The same applies to game cracks, hacks, etc.
    The trick is to make it more difficult. You can easily scare away 99% of the bot developers by simply virtualizing your exe with Themida, Enigma Protector, etc. No one likes to debug virtualized code, that's just not fun. That combined with a silent detection - even if it's as simple as "is bot.exe running?" can go a long way. Again this is a luxury problem to have, the hard part is getting there. If your uMMORPG release ends up with a bot problem, send me a message and I will help you!
     
    VE_GAME likes this.
  19. shamsfk

    shamsfk

    Joined:
    Nov 21, 2014
    Posts:
    307
    Thank you!
    And note that I'm a big fan of what you'v done and is doing with uMMORPG.
     
    mischa2k likes this.
  20. GOLDY00

    GOLDY00

    Joined:
    Mar 16, 2013
    Posts:
    139
    Hi all I'm new to mayor this stuff but I was wondering with ummorpg I had some questions my self I don't think that have been asked 1. Could I make something similar to say Star Wars galaxy like create your character beeing neutral but say killing npcs or doing questions you can join a faction and be with them

    2. Can you also do building houses with this framework so like have a blueprint of something then use it and place a house down and then can you drop stuff on the floor and make them like decorations
    3. I also have uni storm how would I implement that with this framework in the online point and connecting it with the camera there already

    Sorry I don't know if these are silly questions or not but I would like to know before I purchase this my self thanks again happy gaming and developing
     
  21. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Hey,
    1. You could probably add some kind of 'Quest.balance' property. And if you finish a quest, it is added to Player.balance (which makes you good/evil/neutral). That's not too hard.

    2. You would call a command like CmdPlaceHouse on the server, then the server Instantiates+NetworkServer.Spawns a house. There are several things to consider though, like how can enter the house, saving and loading all houses, a limit to how many houses there are, places where house can or can't be built, etc.

    3. I never used that, but you would have to make it based on the server time. Calculating that in uMMORPG is very easy by using Time.time + NetworkTime.offset.

    Let me know if you have any more questions.
     
  22. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Progress Info: doing some updates to the Asset Store page. You guys gave me a lot of kind reviews on the store page and on this thread, so I added some to the logo:
    2016-09-30_newlogo.png

    Note: if you don't want your review to be in the logo, let me know.
     
    Last edited: Sep 30, 2016
  23. bartuq

    bartuq

    Joined:
    Sep 26, 2016
    Posts:
    127
    uMMORPG with slightly modified "The Blacksmith" for tests :)
    [LINK]
    [LINK]
     
    Last edited: Oct 1, 2016
  24. GOLDY00

    GOLDY00

    Joined:
    Mar 16, 2013
    Posts:
    139
    So basically with this package I could do everything like Star Wars galaxy's I'm using that game as a sorts bass for mine
     
  25. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Looks nice!

    I never played Star Wars Galaxy. But the things that you mentioned are possible. That being said, they are not part of uMMORPG right now so you would have to implement them yourself. But since you are interested in an MMORPG you probably have some coding skills anyway.
     
  26. GOLDY00

    GOLDY00

    Joined:
    Mar 16, 2013
    Posts:
    139
    No I have no experience but I'm wanting to learn that's why I'm hoping this can give me a basic prototype to start off
     
  27. GOLDY00

    GOLDY00

    Joined:
    Mar 16, 2013
    Posts:
    139
    I was gonna ask is there any chance of implementing a guild system to this package
     
  28. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    It's on the roadmap. There's no release date yet though.
     
  29. GOLDY00

    GOLDY00

    Joined:
    Mar 16, 2013
    Posts:
    139
    I was wondering I bought this awesome asset how can I get rid of the click on the ground so it's like a wow camera no left click just right click to interact

    Also wanted to know I have an error with quests it says it can't find uiquest prefab
    And also how do I make it so the game isn't seperate scene but charecter creating is and the log in stuff if it's possible
     
    Last edited: Oct 4, 2016
  30. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Player.SelectionHandling has the click to move code.

    The NetworkManager has an offlineScene and onlineScene property, try those!
     
  31. GOLDY00

    GOLDY00

    Joined:
    Mar 16, 2013
    Posts:
    139
    What about the error in the uiquest prefab
     
  32. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Can you make a screenshot of the error? And is there no SlotQuest prefab in your prefabs/ui folder?
     
  33. GOLDY00

    GOLDY00

    Joined:
    Mar 16, 2013
    Posts:
    139
    It's a broken prefab I can tomorrow I'm in Australia now it's 10:44 so yeah basically when I click on the alchemist I go to quests nothing actually shows up for quests
     
  34. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Please make sure to use Unity 5.4.1p2 and a fresh uMMORPG download. Downgrading the project to an older Unity version may cause errors like the missing prefab one.
     
    Last edited: Oct 4, 2016
  35. GOLDY00

    GOLDY00

    Joined:
    Mar 16, 2013
    Posts:
    139
    Where Is the player selection handling located
     
  36. GOLDY00

    GOLDY00

    Joined:
    Mar 16, 2013
    Posts:
    139
    Ok so I added more level to the character and changed the health and mana that your meant to do but I get to level 4 then this error comes up and it freezes how do I fix this please help
     

    Attached Files:

  37. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    In the Player.cs script's SelectionHandling function.

    If you have 4 levels then you also need hpMax, mpMax etc. arrays with 4 entries (one for each level).
     
  38. GOLDY00

    GOLDY00

    Joined:
    Mar 16, 2013
    Posts:
    139
    Do I need to comment that part out I have been trying find it I can't find it can you screen shot please
     
  39. GOLDY00

    GOLDY00

    Joined:
    Mar 16, 2013
    Posts:
    139
    Hi I just want to say thank you I figured out how to do it I comment out the last past and it stoped but everything still works here is a pic of what part I'm talking about thank you so much again it won't let me upload sorry
     
  40. MHolmstrom

    MHolmstrom

    Joined:
    Aug 16, 2012
    Posts:
    115
    If anyone are interested you can follow see my development either on Twitter @PIXELINESTUDIO
    or via website.
    http://pixelinestudio.net
    Hope there is something you find intresting :)
     
  41. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Great to hear that it works!

    That is amazing. Mind if I use one or both of those screenshots for a uMMORPG showcase picture?
    pixelinestudio 2.jpg
    pixelinestudio 1.jpg
     
  42. GOLDY00

    GOLDY00

    Joined:
    Mar 16, 2013
    Posts:
    139
    IS it possible to get video tutorials in this as well cause there are so much I wanna do I don't understand even reading it like changing the look of ui is it just change the texture box and that's it also for new updates I would like to see is
    1. A reputation system like making it so when you start out you have no faction as per say then maybe you can gain reputation by questing or some other way
    2. Crafting system would be really nice
    3.a building system would be good to to go along with crafting or even

    Dialog system maybe or something I don't know there are heaps of things one thing I do wanna know is how can I make it that I dont have the skill points and that I have it so when I put gear on it upgrades the points so no skill system just having it like wow a talent system even
     
  43. jjobby

    jjobby

    Joined:
    Nov 28, 2009
    Posts:
    161
    It seems 5.4.1p1 has a serious bug. If the client is time out (or you can test by build the client as exe and close the window after you connect), the player entity on the server is still not destroyed.
     
  44. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    UNET fixed one bug and introduced another, as usual.
    I just sent in a bug report, will let you know when I know anything more.

    Here is the forum thread:
    https://forum.unity3d.com/threads/any-way-to-tap-into-ondisconnecterror.431385/
     
  45. MHolmstrom

    MHolmstrom

    Joined:
    Aug 16, 2012
    Posts:
    115
    I would be honored if you would use them :) Feel free to do whatever you'd like to do with them! :)
    Just check in from time to time for more Screenshots, working on my blog page right now so I'll need a video in short once I get my Touchlight 2 combat system to work :)
     
  46. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    I usually add tutorials to the documentation, this is far easier to edit than a complete video.
    For UI I suggest the Unity manual, this is a great place to start learning.

    Your feature requests are noted. Those are all huge features of course, so one step after another..

    Sounds great!
     
  47. MHolmstrom

    MHolmstrom

    Joined:
    Aug 16, 2012
    Posts:
    115
    Basically, I was trying to do the following:

    Code (CSharp):
    1.     public void Attackingrand()
    2.     {
    3.         int whatattack;
    4.         whatattack = Random.Range(1, 3);
    5.         switch (whatattack)
    6.         {
    7.             case 1:
    8.              
    9.             CmdUseSkill(0);
    10.                 Debug.Log("Attack 0");
    11.                 return;
    12.             case 2:
    13.                 CmdUseSkill(1);
    14.                 Debug.Log("Attack 1");
    15.                 return;
    16.             case 3:
    17.                 CmdUseSkill(2);
    18.                 Debug.Log("Attack 2");
    19.                 return;
    20.         }
    21.     }
    Then call it in a custom SelectionHandling() but it's prittey much the same as the current one and in the
    Code (CSharp):
    1. if (skills.Count > 0 && skills[0].IsReady())
    I try to call the Attackingrand the debug works but it will not use the CmdUseSkill(1); or CmdUseSkill(2);
    ideas so that I can have my 3 first attacks beeing randomly used? thanks in advance.
     
  48. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Did you check skill.Ready etc. as well?
     
  49. MHolmstrom

    MHolmstrom

    Joined:
    Aug 16, 2012
    Posts:
    115
    Edit I solved it, if anyone else is trying to do this here is a ugly workaround.
    First, you duplicate etc Normal Attack (Warrior) x2
    You should now have a total of 3.
    Go to animator make 2 empty connect to "any state" skillCur should be set 1 and 2 because "simple attack" is 0.
    Add the skills to your playable character in slot 1 - 3.
    Add the following code to the Player.cs

    Code (CSharp):
    1.  
    2. public int whatattack;
    3.  
    4. public void Attackingrand()
    5.     {
    6.  
    7.        // Attack 1
    8.         if (whatattack == 0)
    9.             skillCur = 0;
    10.             CmdUseSkill(0);
    11.         //Check Cooldown then change value
    12.              if (skills.Count > 0 && skills[0].IsReady())
    13.              whatattack = 1;
    14.              Debug.Log("Attack 0");
    15.  
    16.         // Attack 2
    17.         if (whatattack == 1)
    18.                 skillCur = 1;
    19.                 CmdUseSkill(1);
    20.         //Check Cooldown then change value
    21.         if (skills.Count > 0 && skills[1].IsReady())
    22.             whatattack = 2;
    23.             Debug.Log("Attack 1");
    24.  
    25.         // Attack 3
    26.         if (skills.Count > 0 && whatattack == 2)
    27.              skillCur = 2;
    28.              CmdUseSkill(2);
    29.         //Check Cooldown then change value
    30.         if (skills[2].IsReady())
    31.             Debug.Log("Attack 2");
    32.             whatattack = 0;
    33.      
    34.     }
    35.  
    Now you just need something to call it from.
     
    Last edited: Oct 7, 2016
    mischa2k likes this.
  50. VE_GAME

    VE_GAME

    Joined:
    Mar 13, 2014
    Posts:
    41
    when there is a new version of the demo web player also updated?