Search Unity

uMMORPG Official Thread

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

  1. cioa00

    cioa00

    Joined:
    May 31, 2016
    Posts:
    203
    pushingpandas likes this.
  2. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Update: V1.25 is now on the Asset Store. Changes can be seen in the first post!

    I will submit the next version soon. I replaced skill.autorepeat with skill.followupDefaultAttack, so that all skills can now be followed with a default attack. And the default attack can be followed with a default attack as well, essentially being the same as autorepeat for that one. This features makes combat much more enjoyable. What this means is that your character now keeps attacking with the default attack after casting a special skill once. It was also requested a few times before I think.

    Another change is that monsters will only switch to another target if that target is at least 20% closer. This prevents cases where a monster would nervously switch between two targets that are standing in equal distance to it, or are alternating their distances because of animations. I noticed that when working on uMOBA. Code reuse is great.

    Thirdly there will be a change where item, quest and skill templates are now loaded into the dictionary via Resources.LoadAll, and they were all moved into the resources folder. This avoids situations where a monster may drop a special item during a christmas event, and then not drop it anymore after. In which case the item wouldn't be loadable by the database anymore, because it's not referenced in the game anywhere. The new version with Resources.LoadAll simply loads all items, so that items that aren't referenced in the game anymore can still be inside a player's inventory and won't just disappear. This is a very important feature that spares us some angry customers when running a real MMORPG.

    On a side note, one of our UNET bugs seems to be fixed in 5.4: https://issuetracker.unity3d.com/is...-synced-to-clients-if-the-object-was-disabled
    The two critical bugs that exist for a year now still exist:
    If anyone has some free time then please head over to the networking forum and raise awareness about them, or contact a developer and let them know that those bugs are important to you.


    About the editor: I am not very interested in doing that, because Unity is an editor already. For example:
    • Want to add a skill/item/quest? Right click into the folder and create a new one.
    • Want to modify a skill/item/quest? Select it in the folder, modify it in the Inspector.
    • Want to add a monster to the world? Drag it from the prefabs folder into the scene.
    • Want to modify a monster's properties? Select it in the hierarchy, modify it in the Inspector.
    • And so on..
    Everyone knows how to do that already, another editor would just confuse people. And be redundant. That's also the reason why I wanted to use ScriptableObjects for items, skills and quests. So that we don't need any kind of editor or external program, it's all right there in the Unity UI.

    About the Gui: as Devision4 explained, third party assets will just cause us problems along the road. I feel like the new UI is good enough. If anything, I'd consider the old OnGUI because of how much more simple it was.

    About TAB targeting: I might add something about that to the documentation if more people request it in the future. I probably won't add it to uMMORPG though, because it makes games very boring, automated and will fill your MMO with bots quickly.
     
    Last edited: Jun 21, 2016
  3. pushingpandas

    pushingpandas

    Joined:
    Jan 12, 2013
    Posts:
    1,419
    You could include Tab targeting and people decide if they want to use it in their mmo or not. I personal think it does not make the game boring, its a user friendly control. Same like WASD control. A developer should not mandatory a way of use of mechanics. Would it harm to make it optional?
     
  4. Nostre

    Nostre

    Joined:
    Mar 3, 2012
    Posts:
    44
    Ok you just answered my question your mmo will always be a cheap little script,
    You are not interested on demand of your client we are merde that it.

    I will ask unity for a refund bye bye.
     
  5. jagatai33

    jagatai33

    Joined:
    Feb 2, 2016
    Posts:
    165
    @vis2k

    Thank you for v1.25! nice implementation of the SkillUpgrades! any chance for v1.26 you can help us out with at least the framework for a party system? (you can use that on uMOBA as well :) )
     
  6. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    If more people request it then I'll probably add a complete script example to the documentation. I am hesitant to add it to the code because it would make it a lot more complicated (we'd have to store some kind of target history / order variable etc.).

    I never claimed that it has a custom editor. You can see that in the package description as well. I made some points about why I think it's unecessary, feel free to point out why I am wrong.

    Thanks. V1.26 will have those smaller adjustments that I mentioned above. I added a party system to the roadmap though.
     
  7. tequyla

    tequyla

    Joined:
    Jul 22, 2012
    Posts:
    335
    Ok I understood. everyone do it, if needed. no problem with your road.

    i like new UI system by unity, easy to customize.


    i agree, bot kills mmo.

    ++
     
  8. hufsa

    hufsa

    Joined:
    May 2, 2016
    Posts:
    2
    Hey.

    Been waiting a long time for WSAD. Unfortunately the current implementation is a major disappointment and frankly, it lacks in quality. I would like to see some work spent on this, at least a decent working client side prediction and server reconciliation. Maybe this could be optional and something that programmers with a little more knowledge could expand on? The average customer could ignore this and use the standard navmesh agent perhaps.

    I want to feel like I'm playing a single player when moving around with my WSAD buttons, which is not nearly the case with this implementation.

    I know this is asking a lot, and that it would be hard for the intermediate/rookie programmer to understand the code. I also do know that the mantra of the product is something like "a rock should be able to understand and expand" but in my honest opinion - who would want to expand on something that lacks the most important part of a mmorpg?

    One of the main reasons I bought this asset was because I found "WSAD Movement" in the soon-section.
     
  9. ace-conan

    ace-conan

    Joined:
    May 23, 2015
    Posts:
    1
    Hello vis2K. It's great ummorpg. Congratulations.
    A question, you got planning to do more complex quest, talking to various NPCs, kill different MOBs?
    Sorry I do not speak English and use google translator.
    Greetings.
    Gabriel.
     
  10. cioa00

    cioa00

    Joined:
    May 31, 2016
    Posts:
    203
    Seems small bug. When you make a new skill and mark it as default learned and when you try to drag it to skillbar, then it raise an error:

     
  11. jagatai33

    jagatai33

    Joined:
    Feb 2, 2016
    Posts:
    165
    Nice write up! Im looking forward to the new changes, even more so the use of Resources.LoadAll.

    Thanks again for all your hard work!
    -J
     
  12. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Progress Info: V1.26 was submitted for review. Changes can be seen in the first post (maintenance).

    Bad news: Our critical UNET bug that causes random UNET errors in random places, which would be a nightmare for every MMORPG in production, was inspected today. Apparently it's "by design".

    I wrote one final message to the developer to explain the severity of this bug and how it affects all of us here. I am done with begging people to fix this bug though.

    The last option is to fork the HLAPI and fix it myself or do some reverse engineering if it's part of the LLAPI. I will have to do that before I launch my own MMO some day, but I don't really want to do that before because it would be very time consuming. If someone here gets close to launching their own MMORPG, contact me.

    The current implementation is completely server sided, which is a start. I mentioned before that I am waiting for that new networking controller that was announced in a thread that I linked to somewhere. If it takes too long, then I'll probably try to implement client side prediction or client sided movement authority myself.

    Thanks. I added a lot of new features during the last few weeks, so currently I'll focus a bit more on maintenance again before getting to more new features. Killing different mobs should be doable though, you could simply convert the quest's monster to an array of monsters and then adjust all the code that makes use of it.

    Could you please try it in a fresh uMMORPG project with the latest version and write down a detailed step by step description that causes this error?

    Thanks.
     
    Last edited: Jun 22, 2016
  13. tequyla

    tequyla

    Joined:
    Jul 22, 2012
    Posts:
    335
    i voted.

    keep the faith.

    state update with exit time to 0 ?

    +++
     
    Last edited: Jun 21, 2016
  14. danielnetzer

    danielnetzer

    Joined:
    Jan 5, 2016
    Posts:
    29
    Well done vis2K, once i'm finished with my final exams I would dive into using uMMO more as ill build my next year's final project on this, so I do hope unity will reply and start moving a head with uNET dev. since its a major key in the gaming future (as in Networking ofc.).
     
  15. JBR-games

    JBR-games

    Joined:
    Sep 26, 2012
    Posts:
    708
    Simple add-on if you want skills to automatically upgrade if no skills xp is required and learn by default is selected.
    Add this under "Experience"

    Code (CSharp):
    1.                     ++level;
    2. //Added**If the player levels up , automatically updates any skills that have no exp requirements and are set to learn by default******************************
    3.                     for (int i = 0; i < skills.Count -1; ++i)
    4.                     {
    5.                         if (skills[i].level < skills[i].maxLevel)
    6.                         {
    7.                             if (level >= skills[i].upgradeRequiredLevel && skills[i].upgradeRequiredSkillExp == 0 && skills[i].learnDefault == true)
    8.                             {
    9.  
    10.                                 StartCoroutine(DelayedCMD(i));
    11.                                     Debug.Log(skills[i].name + " leveled up to " + skills[i].level +1);
    12.                             }
    13.                         }
    14.                     }
    15. //************************************************************************************************************************************
    16.                 }
    17.  
    18.                 // set to expMax if there is still too much exp remaining
    19.                 if (_exp > expMax) _exp = expMax;
    20.             }
    21.         }
    22.     }
    23. //added****small delay on calling CmdUgradeSkill , otherwise the skill wont actually upgrade *****************************************
    24.     IEnumerator DelayedCMD(int i)
    25.     {
    26.         yield return new WaitForSeconds(1.0f);
    27.         CmdUpgradeSkill(i);
    28.     }
    29. //************************************************************************************************************************************
    30.  
     
    pushingpandas likes this.
  16. Roughrider

    Roughrider

    Joined:
    Jul 17, 2011
    Posts:
    73
    I'll purchase the moment WASD and a third to first person camera is implemented.
     
  17. dhogan

    dhogan

    Joined:
    Jun 2, 2008
    Posts:
    55
    I was setting up multiple clients today as part of using my iMac as a dedicated server for testing and noticed a looting issue worth mentioning.

    Right now in uMMORPG, it doesn't matter who kills the monster, anyone can loot it.

    In my MMO playing, I've seen looting handled in various ways :
    1 - It doesn't matter who kills the monster, anyone can loot it.
    2 - Only the person who killed the monster can loot it.
    3 - Only a member of the group can loot it.
    4 - Only the person/group who killed the monster can loot it for a fixed amount of time, then anyone can loot it.

    I don't know if a variety of options is important for the kit, or if it's best left to each developer, but I thought it was worth mentioning.
     
  18. jjobby

    jjobby

    Joined:
    Nov 28, 2009
    Posts:
    161
    That's weird. How come sending error network packets is by design? Do you intend to fix it with your own solution and include it in uMMO for future update? Also, how frequently does this bug occur? So far, I still don't encounter this issue.
     
  19. danielnetzer

    danielnetzer

    Joined:
    Jan 5, 2016
    Posts:
    29
    should be very simple to implement a "only killer can loot" system as it should work with a single IF and another String var.
     
  20. tequyla

    tequyla

    Joined:
    Jul 22, 2012
    Posts:
    335
    hi Vis2k,

    Is possible to put this feature in next release ?

    ++
     
  21. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Progress Info: I have been working on V1.27. Will have several improvements and simpler code, because of a few animation and skill related things that I noticed in uMOBA.

    The animation state machine will require less parameters in V1.27, and skill canceling will be possible.

    Thanks, good luck!

    WSAD (simple) is already implemented. Third to first person camera isn't planned (yet), but you can probably find a script for that somewhere on the internet already.

    Thanks for mentioning that. I'll probably have to consider loot rights when implementing the party system in the future, so there will be some kind of change at some point.

    It means that it happens because of how UNET is designed. Or in other words, the serialization part has to be redesigned for this bug to be fixed. Which will probably take a long time.

    The bug doesn't happen in uMMORPG right now because after struggling with random UNET errors for half a year, I learned how to avoid it as best as I could. People who modify uMMORPG will most likely run into those random errors which are caused by this bug at some point though.

    I would take a look at the UNET source before launching my own MMORPG because that bug is a game breaker. The UNET developer replied to my report again and said that they will consider a serialization redesign in the future, so for now I'll just wait and see if they fix it some day.

    Next few releases will be maintenance. I want to simplify the skill system first. Maybe afterwards.
     
  22. dhogan

    dhogan

    Joined:
    Jun 2, 2008
    Posts:
    55
    EDIT : I realize this was a quick implementation of WSAD, I'm just noting these things as I explore the project, since further development of this feature is undetermined.

    Another quick bug :

    When entering text in chat, WSAD still moves the Player.

    If you're moving with WSAD and left click, it still leaves the 'move to' target decal on the ground. It remains until you use click to move again OR target a monster. (It stays even if you start and stop movement with WSAD again.)

    Somewhat related to this, in click to move the target decal remains once you've reached the destination. Perhaps it would feel better if the decal is cleared on arrival.
     
    Last edited: Jun 23, 2016
  23. jagatai33

    jagatai33

    Joined:
    Feb 2, 2016
    Posts:
    165
    just this to the top of WSADHandling()
    Code (csharp):
    1.  
    2.         if (!UIRefresh.FindObjectOfType<InputField>().isFocused)
    3.  
    add this right below if (h != 0 || v != 0) still inside WASDHandling():
    Code (csharp):
    1.  
    2.            if (target == null && indicator) Destroy(indicator, 0.3f);
    3.  
    just add a quick check between the indicator pos and agent pos the use Destroy(indicator)

    Hope this helps
    -J
     
    JBR-games and dhogan like this.
  24. dhogan

    dhogan

    Joined:
    Jun 2, 2008
    Posts:
    55
    Thanks jagatai33,

    I wasn't so much looking for a fix as I was bug reporting. :) At the moment I'm still working on understanding the kit, and not yet actively developing anything.

    There are a number of things in this thread that seem like good additions to the asset, but as fast as the kit is updated I'd rather see if they are implemented officially before I get into maintaining my own repository of changes.
     
  25. jjobby

    jjobby

    Joined:
    Nov 28, 2009
    Posts:
    161
    Sounds very problematic. Any tips to avoid this bug?
     
  26. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Someone reported the WSAD chat issue via email already. It will be fixed in V1.27.

    About the decal: will take a look at it!

    Don't do errors in OnDeserialize. I have a few more ideas there, will take a look at it after I finished the current stuff.
     
  27. jagatai33

    jagatai33

    Joined:
    Feb 2, 2016
    Posts:
    165
    All,

    Just curious as im still new with Unity and certainly with Mecanim. Does anyone have any experience using the Animation Events? basically if i understand it correctly the animation controller has the ability to send events i.e. int, float, string and even call functions to the object which the controller is attached to?

    Did i read this correctly, does Unity animation controllers have the ability to send those type of events to the object which the controller is attached to? and if so has anyone used this with UNET and how well does it synchronize between client/server?

    Thanks,
    -J
     
  28. Sr-Liermann

    Sr-Liermann

    Joined:
    Jan 7, 2015
    Posts:
    68
    Good Morning Everyone!
    First I want to say: Congratulations to the author!
    The progress and the suport is fantastic.

    By the way, now I would ask for a help to turn the WASD an option, cause I dont want to use this for while, how I can disable this or turn it and option.

    And I have one suggestion, when we create a "Class" I missing an option to hide this on menu selector, then I cant create a job system. Example: I have a starter class called Warrior, when this reach level 15 it can update the class/job for a Knight and your 3d model will be change for another. But all classes/model that we setup, always be displayed in class selector on the menu. Then I need a option to hide some class to keep for upgrade.
     
    JBR-games likes this.
  29. cioa00

    cioa00

    Joined:
    May 31, 2016
    Posts:
    203
    You can turn off function WSADHandling calls which can be found under Scripts\Player.cs file
     
  30. Sr-Liermann

    Sr-Liermann

    Joined:
    Jan 7, 2015
    Posts:
    68
    Thankyou!
     
  31. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    You usually pass parameters from your scripts to the animation state machine. It then decides which state to go to (which animation to play).
     
  32. Sr-Liermann

    Sr-Liermann

    Joined:
    Jan 7, 2015
    Posts:
    68
    Can I Build a WebGL Client for my Dedicated Linux Server Now? Or WebGL Clients Still Not Work?
     
    Gameccino likes this.
  33. jagatai33

    jagatai33

    Joined:
    Feb 2, 2016
    Posts:
    165
    I found the following http://docs.unity3d.com/Manual/animeditor-AnimationEvents.html , i saw a video where you can send animation events so for example if you want the animations to be more precise during combat, you could go frame by frame on an animation and right when you find the frame which (for example) has the sword motion hitting the target you can send an event and then trigger the actual damage to occur?

    Not sure if im making sense, but unless i misread the above link, it sounds like we can pass parameters from animation controller to objects or to functions in a script on the object.

    ill have to test and see, was curious if anyone else has done anything similar specifically with UNET.

    Thanks,
    -J
     
  34. danielnetzer

    danielnetzer

    Joined:
    Jan 5, 2016
    Posts:
    29
    have fun jagtai :D, https://unity3d.com/learn/tutorials/topics/animation/animate-anything-mecanim

    btw I've started working with blender a bit trying to create a wizard model and some more weapons and things to add to uMMORPG, tbh once i'm done with that I dont mind sharing them with everyone.

    the most important thing to me for now is getting the most basic human model (no face, no hair, no cloths) to try and create a character creation scene and create some basic walk, jump and run animations.
     
  35. cioa00

    cioa00

    Joined:
    May 31, 2016
    Posts:
    203
    I`m having fun with issue where newly added monster is running toward to player backward and player is able to move enemy. Not sure if it`s something to do with model itself or i missed something. At the moment i can't even target enemy. Any advice would be great.


    Edit: seems after reading ummorpg docs, then i realized that i needed to add additional layer to fix model position. Also to get targetting working i needed to add that to that newly added layer.

     
    Last edited: Jun 25, 2016
  36. JBR-games

    JBR-games

    Joined:
    Sep 26, 2012
    Posts:
    708
    I have yet to test them but i like the improvements made with v1.26 .

    @vis2k have you put any thoughts into an enmity system. This should eliminate any concern about distance issues..and also make attacking monsters in groups a bit more strategic. Example you have a group of 2 attacking a monster. Ranged attacker and a warrior. Damage by the ranged attacks if powerful should sway the attention of the monster more so than the proximity of the warrior. Also casting healing should pull some enmity otherwise someone could just hang back and cure the attackers without any worries..
     
    Last edited: Jun 24, 2016
  37. Gameccino

    Gameccino

    Joined:
    Aug 1, 2012
    Posts:
    40
    A single very fast question:

    uMMORPG makes use of UNET, doues this means that I would need Unity's matchmaking services or does it uses its own server for matchmaking (e.g. the headless linux build I've seen on examples)?
     
  38. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Update: V1.26 is now on the Asset Store. Changes can be seen in the first post!

    Enable 'use Websockets' in the NetworkManager. Then WebGL clients can connect to it.

    Right now it's completely distance based. Will think about that, perhaps something like damage based or skill type based makes more sense yes.

    You don't need them for MMORPGs because you would host a dedicated server. We probably will make use of the Simulation Server some day though.
     
    Gameccino likes this.
  39. CaptainMurphy

    CaptainMurphy

    Joined:
    Jul 15, 2014
    Posts:
    746
    Giving a sneak peek at our project that uses uMMORPG. We are using it a bit differently in that we have an NPC class that is a 'town' or village that interacts in a static location and saves the info attached to it so that the level is persistent on who owns towns with a faction var. Once some groups are available in uMMORPG we can get some fleet action going!




     
    JBR-games likes this.
  40. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    This is very cool. I can add it to a 'made with uMMORPG' section if you want. Would just need the name and the best screenshot!
     
  41. CaptainMurphy

    CaptainMurphy

    Joined:
    Jul 15, 2014
    Posts:
    746
    Thanks, but it is still pretty far from having a 'best' screenshot, lol. We haven't even settled on a final name at this point, more of a proof-of-concept using uMMORPG as a base.
     
  42. MHolmstrom

    MHolmstrom

    Joined:
    Aug 16, 2012
    Posts:
    115
    Is there a way to force QUE another skill after one is used?
    Stil trying to add more "dynamic" attack animations!
     
  43. fatalmind

    fatalmind

    Joined:
    Sep 29, 2013
    Posts:
    3
    I'm currently trying to add a new class. I'm trying to build it off the first person standard asset since it will allow me to use physics. The problem I'm having right now is the player controller in ummorpg is fighting with the player controller in the fps character asset. How can I disable the built in player controller in terms of movement control. As it stands, what I have is able to move around like a normal FPS. Even jumping works in the default level. (i understand the clipping risks). Any help would be greatly appreciated.
     
  44. JBR-games

    JBR-games

    Joined:
    Sep 26, 2012
    Posts:
    708
    I believe most of the player controls are done in player.cs. bottom of script.
    Maybe just comment out the wasd code.
     
  45. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    What do you mean with QUE?

    The easiest solution is to duplicate an existing uMMORPG prefab and replace the meshes with your new ones and the animations in the controller with your new ones.
     
  46. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Progress Info: I am simplifying the two most complicated parts of uMMORPG:

    The skill system
    There are several issues that make it difficult to work with. Players and monsters use a separate one, which is just a waste of code. And players have this weird UpdateCASTING and TryCastSkill code, which is getting far too complicated at this point. I already redesigned that part. Entity.cs now holds a few very simple and clear functions to find out if we can cast a skill and to apply a skill onto the current target. Player.cs and Monster.cs will then use those functions in their state machines. This is so much more elegant and understandable. It also means that monsters will be able to use more than skill, or even buffs. For now they will default to skill 0 though, until the new system was tested for a while.

    The state machine
    The state machine are those UpdateIDLE, UpdateMOVING etc. functions in Player.cs and Monster.cs. Inside those functions we currently don't explicitly check for every single thing that could happen (like DEAD, TARGET_DIED, TARGET_DISAPPEARED, ..). Instead we sometimes check for 'if target died or disappeared then do this..'.
    Now there is another kind of state machine in computer science, it's called a 'finite state machine' (FSM), which is a fancy way of saying that we check for every single event in every single state. The advantage of a FSM is that we eliminate all kinds of weird cases that could happen. For example, there is an issue where monsters sometimes run to a respawned player after they killed him. I just noticed today that this happens because we forgot to check an event in UpdateCASTING. This is not very obvious, but it would be immediately obvious with a finite state machine, because when debugging situations like 'the monster does something weird if a target died while moving', we could look at the 'TARGET_DIED' event in UpdateMOVING and would be done. Nothing weird, less ways to mess up.

    In other words: uMMORPG will be much simpler and the code will be shorter yet again.
     
    Last edited: Jun 27, 2016
    nixter and JBR-games like this.
  47. Azthetik

    Azthetik

    Joined:
    Mar 20, 2013
    Posts:
    16
    Are there portals for dungeons now?
     
  48. cioa00

    cioa00

    Joined:
    May 31, 2016
    Posts:
    203
    Since you can make only one scene at the moment (due UNET limitation) then you could make for example separated areas where you can't walk. And then you could use teleport from one place to another. On the default uMMORPG package there is one teleport gameobject (to the woods), check on hierarchy window.
     
    mischa2k likes this.
  49. JBR-games

    JBR-games

    Joined:
    Sep 26, 2012
    Posts:
    708

    Does this mean that the enemy can have skills like the player potentially?
     
  50. fatalmind

    fatalmind

    Joined:
    Sep 29, 2013
    Posts:
    3
    Thanks. It kind of moved things in the right direction. As it stands right now, it will spawn the new fps archer class, I commented out everything in the wasd function in Player.cs. The problem I'm having now is that the animations no longer work, which I think I can easily figure out. The part that I'm stuck on is that when looking around with the mouse, the fps camera causes the player model to tilt when I look up or down. I'm going to mess around with the order in which the components are layered in the character prefab and see if that fixes it.

    Edit: I managed to fix the tilt, just had to change how the prefab components were layered. Now I just need to disable to click to move, it seriously messes things up. It causes the player to freak out and run around like crazy.
     
    Last edited: Jun 26, 2016