Search Unity

uMMORPG Official Thread

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

  1. bartuq

    bartuq

    Joined:
    Sep 26, 2016
    Posts:
    127
    @Fhizban
    I use for freezing:
    Entity.cs
    Code (CSharp):
    1. [SyncVar] public bool IsFrozen = false;
    then in Monster.cs - Attacking
    Code (CSharp):
    1.     bool EventAggro() {
    2.         return target != null && target.health > 0 && !IsFrozen;
    3.     }
    and - Movement
    Code (CSharp):
    1.     bool EventMoveRandomly() {
    2.         return !IsFrozen && Random.value <= moveProbability * Time.deltaTime;
    3.     }
    also for a player
    Player.cs in Selection handling where is your button input add
    Code (CSharp):
    1.  && !IsFrozen
    I use this with command from chat but also as a new skill.
     
    Last edited: Apr 26, 2017
    FS_Artsy likes this.
  2. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Update: V1.70 [released 2017-04-26]
    • Player.OnLevelUp hook added for addons
    • Extensions.FindObserver removed, replaced with onlinePlayers[name] everywhere
    • Updated documentation
    • Camera yMin/MaxAngle renamed to xMin/MaxAngle
    • UI Scripts are now partial and provide Update hooks for addons
     
  3. yumianhuli1

    yumianhuli1

    Joined:
    Mar 14, 2015
    Posts:
    92
    Does the movement position through master-server(C->S->C(cost much bandwidth)),or peer2peer(C->C(little bandwidth)) directly in your kit?
     
    Last edited: Apr 26, 2017
  4. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Progress: worked on the spawn positions today. I added a NetworkStartPositionForClass script that allows us to set different spawn positions for different classes. Also added a GetNearestSpawnPosition function to the NetworkManager so that players always respawn at the nearest position instead of a random one.

    UNET's HLAPI is built around client<->server communication. Clients don't directly know each other if I am not mistaken. So movement always goes through the server. This avoids cheating as well.
     
  5. tequyla

    tequyla

    Joined:
    Jul 22, 2012
    Posts:
    335
    yes, authoritative server allow or disallow the things.
     
  6. joncrzo

    joncrzo

    Joined:
    Sep 26, 2015
    Posts:
    30
    Hi @vis2k

    I was looking at the documentation on how to make a 2d game with ummorpg and I have a few questions.

    When I open unity and create a new project, do I have to click where it says 3D or 2D?

    After following the documentation, I'm stuck where it says "Select all entity prefabs, remove the NavMeshAgent component, add the NavMeshAgent2D component".

    When I click on the Gear and then click "Remove Component" an error shows up saying "Can't remove component. Can't remove NavMeshAgent because NavmeshPathGizmo(Script), Player(Script), NetworkNavMeshAgent(Script) depends on it."

    I'm trying to remove it from Assets>uMMORPG>Prefabs>Entities

    Is there something missing in the documentation?

    Is there a way to remove it from all Entities at once?

    Thank you.
     
  7. yumianhuli1

    yumianhuli1

    Joined:
    Mar 14, 2015
    Posts:
    92
    But in fact I think the server is also as a client,just named server,right?I mean the movement position data not through dedicated server,just through between clients or (clients,1server(in fact a master client)).So the dedicated server(like web hosting) will be not busy.But this way do not take care of hacking.
     
    Last edited: Apr 27, 2017
  8. johnsmith11

    johnsmith11

    Joined:
    Jan 16, 2017
    Posts:
    6
    Hi. I want to purchase this kit. I have question about ummorpg. it this mmo can handle 300 players or more than?
     
  9. yumianhuli1

    yumianhuli1

    Joined:
    Mar 14, 2015
    Posts:
    92
    It depends on your bandwidth.And I also wander about 1M bandwidth equals how much ccu?
     
  10. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Good morning everyone. Next version was submitted for review:
    V1.71
    • New Skill Effects system (replaces skill.projectile). Make sure to drag the new Arrow prefab into the Archer skills' effect prefab slot.
    • NetworkStartPositionForClass script that inherits from NetworkStartPosition and can be used to set the start position for a certain class.
    • Player respawns at the closest NetworkStartPosition instead of a random one
    uMMORPG is still one sale by the way: https://www.assetstore.unity3d.com/en/#!/content/51212
    Depends on how far you want to go 2D wise. The easiest way would be to keep everything in 3D and just replace the meshes with sprites and make the camera top down. This way you don't have to worry about anything. If this is good enough for your game then I'd definitely recommend it.

    If you want true 2D then you have to replace all the 3D colliders and positions with 2D.

    You can remove the RequireComponent part in NavMeshPathGizmo, Player, NetworkNavMeshAgent if necessary. To be honest though, if you are having trouble with that already then I highly recommend the first option that I explained. It will be way less stressful for you.

    If player A wants to move, he asks the server, the server then broadcasts the moves to player A, B and C.
    Player A doesn't contact player B and C directly.

    I think I answered you in Discord already, but it depends on your hardware and on how many modifications you will add / how many monsters your game world has / how big it is etc.
     
    Ronith and FS_Artsy like this.
  11. FS_Artsy

    FS_Artsy

    Joined:
    Mar 28, 2017
    Posts:
    69
    @bartuq thank you, that did it!
    @vis2k thanks!

    @vis2k 1.71: The change is only to projectiles or is there a major change to skill handling as well? (I modified them quite a bit already)
     
  12. st0le

    st0le

    Joined:
    Nov 24, 2015
    Posts:
    18
  13. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    No major change to skill handling.

    If it works with UNET then maybe.
     
    CrandellWS likes this.
  14. shamsfk

    shamsfk

    Joined:
    Nov 21, 2014
    Posts:
    307
    @vis2k Hi! Have you tried Obfuscator from the store? I've managed to make it work for 1 time) Just once I've got a client and a server builds that were compatible. But it was like a pure luck. Maybe you or someone else here have tried it and can suggest settings?
     
  15. tequyla

    tequyla

    Joined:
    Jul 22, 2012
    Posts:
    335
    @vis2k, what happens there in regards to the sounds, because a game without sound is not really effective, i think.

    +++
     
  16. FS_Artsy

    FS_Artsy

    Joined:
    Mar 28, 2017
    Posts:
    69
    @vis2k For the first time, I'm having trouble applying the new update:

    The arrow does not accept the SkillEffect script (compile error, but there is none) and when I remove it, i am not able to re-assign it.

    Of course, Im not able to assign the arrow to any of the skills then.
     
  17. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,315
    you need to change the name of the script on the arrow to be : SkillEffectArrow

    the class name is changed but not the file name
     
    FS_Artsy likes this.
  18. FS_Artsy

    FS_Artsy

    Joined:
    Mar 28, 2017
    Posts:
    69
    @Damien-Delmarle got it. thanks!

    @vis2k Simple request regarding quests:

    Add another quest fulfillment option: Talk to NPC X. that way we can send players across the scene and make them talk to different kinds of people.

    can easily be implemented by ourselves, but would fit nicely into the core concept as well.
     
    Last edited: Apr 29, 2017
  19. FS_Artsy

    FS_Artsy

    Joined:
    Mar 28, 2017
    Posts:
    69
    Sorry to rollback:

    Now i cannot assign the arrow from the skills. Renamed the projectile file into SkillEffectArrow - it was not possible to attach it to the arrow otherwise.

    Kind of a rant sidenote:

    I Really thought we would get server-controlled multi-target skill effects like chain lightning, but this update is just a supertiny cosmetic visual change to class/prefab structure that can easily be skipped. A bit of a downer actually...

    I appreciate small steps, but adding a hook to each file and submit it as a "update" is kinda ... meh....
     
  20. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Good morning everyone. The Asset Store sale ends tomorrow, so grab uMMORPG while you still can: https://www.assetstore.unity3d.com/#!/content/51212

    Note if you are visiting https://ummorpg.net, there is some kind of hosting issue today that makes the site really slow. I will contact the hoster later if that continues.


    Check out a fresh uMMORPG project, there is a new arrow prefab + script.

    The new system was a rather simple, yet powerful change. It definitely allows you to implement chain lighting now. I simply didn't do that yet because I have no mage model that it could be used for.

    Talk to NPC quests are planned, still needs more research.

    Will buy some sounds at some point, but that's not really the most difficult part in an MMORPG. The networking is more interesting for now.

    Haven't tried it, still waiting for IL2CPP to become available on standalone.
     
    Last edited: Apr 29, 2017
  21. shamsfk

    shamsfk

    Joined:
    Nov 21, 2014
    Posts:
    307
    Last time I asked devs they replied with - there is no current plans of adding il2cpp on win standalone.

    If we are to wait for devs at things like that we can just leave the whole idea of mmo alone. They proved themselves over and over again to be unresponsive and generally slow.
     
  22. st0le

    st0le

    Joined:
    Nov 24, 2015
    Posts:
    18
    Hello,

    Is it possible to integrate PlayMaker and UMMORPG?

    Cheers
     
  23. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,315
    which function are you looking to use from UMMORPG with playmaker?
     
  24. st0le

    st0le

    Joined:
    Nov 24, 2015
    Posts:
    18
    Uhmm... Dunno actually, but I want to know if it's possible.
     
  25. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,315
    its possible. but it depend what you want to do but its just highly not recommended to use playmaker on something else than simple games or prototypes
     
    mischa2k likes this.
  26. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Update: V1.71 [released 2017-04-29]
    • New Skill Effects system (replaces skill.projectile). Make sure to drag the new Arrow prefab into the Archer skills' effect prefab slot.
    • NetworkStartPositionForClass script that inherits from NetworkStartPosition and can be used to set the start position for a certain class.
    • Player respawns at the closest NetworkStartPosition instead of a random one
    Why leave the mmo idea alone over obfuscation / IL2CPP/
     
  27. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Progress: added a FAQ section to the website: https://ummorpg.net/faq/ . A lot of people asked about UNET Phase 3 before so I put a link to the Unite presentation in there as well.
     
  28. FS_Artsy

    FS_Artsy

    Joined:
    Mar 28, 2017
    Posts:
    69
    @vis2k Thanks for pointing the new skill system out. I got it.

    We managed to apply most of our changes to the uMMORPG Core system, while maintaining the update pace.

    I would like to second my most urgent development wishes:

    1. SMALL ADDITION TO QUESTS that require the player to talk to a specific NPC. This is A. easy to implement B. pretty generic and C. opens up another variety on quests.

    2. PARTY SYSTEM that allows you to INVITE/JOIN another players party by clicking on the player. Invite/Join buttons could be located next to the Trade button. Parties could be limited to 5 members and provide a Kick function for the leader as well. Invites should be confirmed and logging out removes you from your party. You don't have to provide any gameplay benefits from being in a party (thats our job as game-designers). Just the raw Party System.

    Thank you for listening!

    -Fhizban ("full-price-customer")
     
    shamsfk likes this.
  29. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Good morning everyone! uMMORPG is 30% off for a few more hours: https://www.assetstore.unity3d.com/en/#!/content/51212

    Good to hear!

    1. It's on my 'research' list. It sounds easy to implement, but there are a few design issues that I have to figure out first.

    2. I am not sure how important feature is to be honest. As in: I don't think your MMO will fail / succeed based on the fact that you have a party system. I think there are more important things to come first, like skinned mesh equipping, instances etc.
     
  30. shamsfk

    shamsfk

    Joined:
    Nov 21, 2014
    Posts:
    307
    IMO it is of much more of importance than skinned meshes and even instances. As mmorpg are social and partying is a key feature to have. Not having an ability to socialize through party grinding/questing/pvping is unacceptable to most of the players. (at least where I come from: RO / Lineage 2)

    On a side note, it is not too hard to do by ourselves, but it is very strange to have guilds and market and crafting and yet have no parties.
     
    Last edited: Apr 30, 2017
    TonanBora and FS_Artsy like this.
  31. shamsfk

    shamsfk

    Joined:
    Nov 21, 2014
    Posts:
    307
    I meant only that it is not too viable to wait for devs to do something. As they are not too fast/responsive most likely this approach will result in a disappointment.
     
  32. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Progress: next version was submitted for review.

    V1.72
    • SyncVarLimitWorkaround synchronizes all values when starting once. Fixes a bug where a SyncVar_ wouldn't be synchronized if it was modified before Start
    • Fixed GetStartPositionFor index out of range issues if a NetworkStartPositionForClass playerPrefab was null
    • Renamed start positions in the scene to respawn positions for clarity
    I see, didn't know that this was so important to some people. I will keep it mind, but I can't promise anything. I usually work on whatever excites me the most :)

    True. There's virtually no way for us to implement the C++ conversion ourselves though, so obfuscation is really the only option in the meantime. And I have concerns with that regarding UNET, since the UnetWeaver seems to use lots of Reflection and needs to know exact method names for hooks and so on.
     
    TonanBora and shamsfk like this.
  33. shamsfk

    shamsfk

    Joined:
    Nov 21, 2014
    Posts:
    307
    That's cool!

    There is an Obfuscator package on the store. I've managed to compile a Linux executable (with obfuscator included but deactivated (it is still changing something)) + a windows executable (obfuscated) and play it! But only once. And I couldn't do it again for some reason.
     
  34. FS_Artsy

    FS_Artsy

    Joined:
    Mar 28, 2017
    Posts:
    69
    Well, it's the final missing feature that accompanies guilds etc. We want to build a experience sharing, gold sharing, coins reward system around it. It increases socialising and gives players a bonus when working together. A feature like this is a community motor.

    Plus One'd!

    We are researching 2 alternatives: A. build it ourselves from scratch B. just use the existing guild system as a form of "big party" (not quite the same actually).
     
    Buzzlebot and shamsfk like this.
  35. shamsfk

    shamsfk

    Joined:
    Nov 21, 2014
    Posts:
    307
    @vis2k Just as a proposal - it would be cool if you would contact the dev of Obfuscator and make some effort (I suppose it won;t require too much of it (EDIT: as Obfuscator already is UNET aware as I understand)) to make your's assets support each other. It would benefit both you and community I think.

    EDIT: obfuscation is by far not the greatest choice of protection - but it is the only choice we have with unity for now. And any protection is better than none.
     
    Last edited: Apr 30, 2017
  36. shamsfk

    shamsfk

    Joined:
    Nov 21, 2014
    Posts:
    307
    @vis2k
    Hi! Sorry for been so noisy lately.

    I'm working with a very complex set of character parameters (50+ different internal and external stats). And syncing them all for every player in the scene is excessive (and opens up an easy way to spy on opponents). Can you suggest a way to sync only some set of variables across all players and other variables only to a local player (owner of those params)?
    I've hoped for the "hook" but it happened only to ignore variables after they are received, not to prevent a sending itself.
    I'm ok with moving stats into a separate class, if it will help, just need to know how to achieve that partial sync.
     
    Last edited: May 1, 2017
  37. shamsfk

    shamsfk

    Joined:
    Nov 21, 2014
    Posts:
    307
    @vis2k
    The second question is if you can suggest a way to modify uMMO combat system into "more responsive" one? Real network test showed significant lags can happen and do happen on skills execution, so something like starting an animation before actual RPC from server came (but we do expect it to) would help to hide that lag.
    What I'm afraid is to mess uMMO too much and loose an update capability too early. So if you could suggest a best at your opinion way I would be very grateful.
     
  38. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    You can use TargetRPC to send them only to one person.

    Exactly what you said. You could start the animation before sending the cmdcastskill command to the server and hope that it gets executed.
     
    shamsfk likes this.
  39. shamsfk

    shamsfk

    Joined:
    Nov 21, 2014
    Posts:
    307
    Please see if I understood your suggestion correctly:
    • Make a struct containing private stats
    • Make some code to manage it's "dirtiness"
    • On struct being dirty sync it with the call of TargetRPC
    Is this a way, or it might be done simpler?

    EDIT: just found your post
    https://forum.unity3d.com/threads/u...ion-errors-workarounds-best-practices.395952/
    This is awesome stuff! You should make a huge visible link to it or include a version of it in the docs! I'm so sad I didn't see it earlier, lots of useful stuff.
     
    Last edited: May 2, 2017
  40. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    So your question was answered?
     
  41. barbugamer

    barbugamer

    Joined:
    Nov 26, 2016
    Posts:
    38

    have you resolve this problem? or it is still there?
     
  42. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    I added a section about that problem to the documentation: https://ummorpg.net/documentation/
     
  43. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Update: V1.72 [released 2017-05-02]
    • SyncVarLimitWorkaround synchronizes all values when starting once. Fixes a bug where a SyncVar_ wouldn't be synchronized if it was modified before Start
    • Fixed GetStartPositionFor index out of range issues if a NetworkStartPositionForClass playerPrefab was null
    • Renamed start positions in the scene to respawn positions for clarity
     
  44. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Good morning everyone!

    To keep you up to date, I am researching the skill effect system again. The new skill effects were the first necessary step for attack skills, but there are a few more cases to cover. The whole topic is somewhat complex since some effects should be client sided (like a blood splatter) while others should be server&client sided, like an arrow or a fireball that deals damage after reaching the target.

    I am trying to find a solution that fits all cases.
     
    FS_Artsy, Ronith and shamsfk like this.
  45. FS_Artsy

    FS_Artsy

    Joined:
    Mar 28, 2017
    Posts:
    69
    Since 1.72 we are experiencing strange errors in the compiled version of our client. certain syncVars are not properly synched or are reverted to 0 after successfully logging a player in. anybody has similar experiences?

    Info: We now try to tackle a multi-scene/multi-zone/instancing system utilizing Master Server. Will tell you how far we got with that.
     
  46. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Does it happen for [SyncVar] or for [SyncVar_]?
     
  47. FS_Artsy

    FS_Artsy

    Joined:
    Mar 28, 2017
    Posts:
    69
    It happens with the Gold stat to be more specific.

    Its correctly inserted into the database, all manipulations are correctly echoed into our debug log and it is correctly calculated at the server side. But the variable stays 0 on client side. Even more: When logging in, the client loads the correct value from the DB but after instantiating the player object, it goes back to 0 again.

    I cannot tell exactly if it is our fault or not, but we checked a lot of our own code and we <think> its not related.

    Summary: We now expect exactly that SyncVar bug that was supposed to be fixed in 1.72 - and we did not encounter it before :)
     
  48. FS_Artsy

    FS_Artsy

    Joined:
    Mar 28, 2017
    Posts:
    69
    Addendum: It only happens on a compiled client. not when hosting server+client from within unity. Took us a while until we found that out.
     
  49. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Interesting. The 1.72 fix was only for [SyncVar_], which is my custom one.
    Could you try to remove things from your game until it stops happening? Might be an important bug report for QA.
     
  50. FS_Artsy

    FS_Artsy

    Joined:
    Mar 28, 2017
    Posts:
    69
    Ok, found the cause:

    In player.cs go to the Gold definition and replace SyncVar_ with SyncVar

    Sidenote: It is the same for all SyncVar_ implementations: SkillExp is now also bugged and so on.

    So, it seems the bug is on your custom implementation.