Search Unity

  1. Are you interested in providing feedback directly to Unity teams? Sign up to become a member of Unity Pulse, our new product feedback and research community.
    Dismiss Notice

Games [WIP] MMORPG Exaro Online - Unity based fully authoritative

Discussion in 'Works In Progress - Archive' started by Matt-Roper, Mar 21, 2017.

  1. Matt-Roper

    Matt-Roper

    <Of The Graphics> Unity Technologies

    Joined:
    Oct 27, 2015
    Posts:
    106
    Website: www.exaro-online.com << Register to play here!
    Twitter: twitter.com/Unity_MattR




    Join our Discord

    Keep up to date with development, give ideas, or just chat. Please join our Discord and help us create an amazing community!

    About The Game/Development

    Exaro is a MMORPG developed in Unity for the past 5 years. A public, permanent progressive alpha is planned for this year!

    The game features traits common to MMO's, key influences would include World or Warcraft/Runescape but of course with my own touch, in attempts to take what is amazing parts of these games and make it more meaningful.


    Combat WIP << Larger res here




    Classes



    Development

    Even know the game has been in development for a long time there is still much to do, there is a ton of stuff to do, but also a ton of bugs, with a recent internal test we found 131 bugs, 120 of which are now fixed, but most are crucial and needed to be fixed before any public testing.


    WIP List for Alpha:
    Completed:
    - Standard systems: Inventory, using items, using armour/weapons, stats, leveling/experience, chat system, tool tips, data delegation.
    - Party system: Able to invite/kick users, leave and promote others to leader. Shared xp/loot and priority instancing.
    - Combat system: Melee needs work. Abilities are looking good, includes HoTs, DoTs, standard projectiles, standard heals.
    - NPC system: Talk to NPCs, access shops, or special events, access quests.
    - Instancing: smart delegation of players and handling zones, dungeons etc,
    - Quest system: some basic quests, looking to enhance further + quest tracker.
    - Friends system: add friends or people you enjoy playing with, or ignore.
    - Looting NPCs: Player owned loot (anti theft), delegated items & rare rolling.
    - Character window system: see stats/used items.
    - Death/Respawning.
    - NPC threat system with abilities causing different threat amounts + math for damage.
    - NPC stat system: regens, random stat offsets (so each NPC is slightly varied).
    - Mail system: send/receive mail from NPCs and other players, including items or gold.
    - Server AI pathing: NPCs can move and will be visible by all players.
    - News system: Receive news on login and server messages in game.
    - Premium currency: for those supporting development of Exaro, there is a premium currency for cosmetic items
    - Classes: different classes + abilities.

    Currently being developed:
    - Character creation: Most setup is done, just need to finish new UI + add new features like hair.
    - New world: graphics overhaul and new areas to explore.
    - More quests/abilities

    Bug fixing To Do:
    - Guild system
    - Dungeons - further combat damage calculations
    - SQL manager
    - Improved melee
    - Bug reporter (discord or forum is also fine for this) - Trading



    Story/Quests

    Exaro features a wealth of small stories and meaningful quests, instead of one large story and thousands of grindy quests that mean nothing, the goal is to have one player mention a quest by name and have the other remember it, and be able to reflect upon it too. There are many paths a player can take, but still features a traditional MMO style.

    Interaction

    Interaction is something I am really trying to make perfect, by this I mean how the player interacts with others and in the world. Rather than automatically selling your objects on an automated 'auction house' a player can rent stall spaces, build or even buy their own, when they sell items they will become visible on their stall, we want players to be able to walk past a stall and see a really cool sword and think "Wow, I would totally buy that!"

    Although far more than above is planned it merely serves to an introduction of mechanics, more will come as I post more.

    Eearly WIP - Approx 2015





    A collection of older images can be found Here


     
    Last edited: Mar 21, 2018
    tylerguitar75, mgsvevo, Mauri and 5 others like this.
  2. Matt-Roper

    Matt-Roper

    <Of The Graphics> Unity Technologies

    Joined:
    Oct 27, 2015
    Posts:
    106
  3. castlesidegamestudio

    castlesidegamestudio

    Joined:
    Oct 16, 2013
    Posts:
    36
    Hi

    This looks great!

    I have a few server related questions....

    Is your game logic predominately in the client (like uMMORPG) or predominately on the server (like a MUD)?

    Are you using an existing server or did you write it yourself.. or a combination of the two?

    I have a bunch more questions depending upon how you answer these.

    Thanks!
    :)
    Brian

    http://www.hallsofcamelot.com/
     
  4. Matt-Roper

    Matt-Roper

    <Of The Graphics> Unity Technologies

    Joined:
    Oct 27, 2015
    Posts:
    106
    The server is fully authoritative, all core features are handled on the server(s) - depending on the server area.

    I cut corners on the client when I can, but it's all fully server-sided. Currently the only core thing that belongs on the client is movement + prediction, but there's a bunch of anti hack stuff in place for that and if WoW can get around it, so can I :D

    server is custom written around the transport layer of LLAPI for Unet. it's been through iterations of Smart fox, Photon and custom written completely - at this point now it allows for fastest development and no headaches for handling abstraction.
     
    castlesidegamestudio likes this.
  5. castlesidegamestudio

    castlesidegamestudio

    Joined:
    Oct 16, 2013
    Posts:
    36
    > server is custom written around the transport layer of LLAPI for Unet. it's been through iterations of Smart fox, Photon and custom written completely

    Great!

    -Server
    So it seems that you have a client and a server and that the majority of the logic for the game resides on the server and not on the client. Are both the client and server written using unity? Or is the server written in some other language like c#, java, c++, etc? It seems that the only reason to use Unet is because you are running a simulation of the game (in unity) on the server to handle proximity checks for combat, etc, etc?. If you are not using unity to simulate the game on the server side.. then how are you checking if a particular attack hits an enemy or not, etc, etc?

    Is the server actually a collection of *services* behind a reverse proxy or load balancer or is it a single server with every piece of logic in it. For example, do you have a separate login server, chat server, etc, etc?

    -Persistence
    Are you using a database or flat files? What kind of interface do you have for managing the players, skills, characters, quests, items, etc, etc. Are you using a spreadsheet? an external RPGMaker like interface? some sort of interface embedded into the game? Do you modify the game database directly or import it at different milestones.

    > at this point now it allows for fastest development and no headaches for handling abstraction.

    How do you evolve the schema and code? Can you change the schema or code without restarting the server every time? Can multiple people log into the game and extend it without restarting it or is it pretty much a one man handles the server and deploys it.

    Okay..

    Thanks so much!
    :)
    Brian

    http://www.hallsofcamelot.com/
     
  6. Matt-Roper

    Matt-Roper

    <Of The Graphics> Unity Technologies

    Joined:
    Oct 27, 2015
    Posts:
    106
    I'd like to welcome you to our discord, it'd probably be easier for future discussion :) I have added a channel specifically for this.

    So the server, and the client both have a huge amount of logic, anything that needs to be authoritative like quests, combat, stats, items etc (anything that could be cheated too) - will be on the server, the client will fill in with client logic, you know stuff like visual, handling UI, handling NPC animations with the net movement etc. As you would expect with an MMO.

    Yes, I keep the server in Unity and extract it when deployed, this allows me to develop quickly and prototype with unity functionality, I have a simulated world space that just uses distances and similar checks for combat, stuff isn't projectile based, it's target based, so can't miss, so in this situation it's fine. As for stuff like point and click AOE spells, these will be calculated on the server and hit the player based on the current server position, there will be no authority over the client to decide whether they got hit or not; I did think of implementing some kind of lockstep for this but it just isn't needed.

    The server can act as a collection, or a singleton and has snappable c++ multi threaded compute nodes, I have Login, master, instance and database servers, each can be separate, combined or one, the idea is I'll have a bunch of proxies for the logins and the master/db nodes will never be visible by the client. Instance nodes offload and hold data in memory which is periodically fed back to the master and eventually written to SQL - I don't use a doc db or something like cassandra atm bec all the data is held in memory and it's real fast, the only downfall is if an instance were to fall a rollback of 1-5 minutes would occur, but I am working on a streaming function too for passing players over given this happens, we already have instance streaming of basic data.

    Quests, skills, npcs etc are all created in unity via custom editors and written into server code, they are embedded into the DB when saved and re-sync'd to the server when I need them to be updated, NPCs are just handled in a IoC format from instances when instantiated. The player also has a "client DB" which gets updated per patch, the client uses this to sample and predict info that isn't really needed from the server, stuff like what quest is where, requirements, steps etc, it's then checked against the server, so even if a player does change this data it won't matter as it's only client sided.

    stuff like NPCs and abilities can be updated in realtime via the server, but this data currently isn't pushed, I could do stuff like change the ability damage and it would update, but stuff like tooltips on the client would still display the old data until a prompt is set like setting a new item which has spell data or leveling up.

    What do you mean can multiple people log into the game and extend it? - multiple people can log in like a MMO, and stuff like new instances can be created, extended, moved and so on.
     
  7. Matt-Roper

    Matt-Roper

    <Of The Graphics> Unity Technologies

    Joined:
    Oct 27, 2015
    Posts:
    106

    Further graphical updates
    ~ Added new friend and chat system improvements
    ~ Working on new NPC system
    ~ More server/system and data structure improvements
    ~ Adding new spells and particles
     
  8. Slider_j

    Slider_j

    Joined:
    May 20, 2014
    Posts:
    28
    I was just logging on to outline my new game (Hyperracer, a mobile racing game with sci-fi craft and weapons, still a work in progress) but saw your game and got very engrossed! it looks amazing! really, well done, it does look awesome, the real rub is in how it plays though!

    I've written (and shelved) a couple of RPG's so i'm all too familier with the work that goes into it, but never on an MMO so i can only guess on the added depth you need to think about when writing it.

    I think i'll be following this with great interest. :)
     
    Matt-Roper likes this.
  9. Matt-Roper

    Matt-Roper

    <Of The Graphics> Unity Technologies

    Joined:
    Oct 27, 2015
    Posts:
    106
    Thanks man, I'll check your game out too!

    And yes, having interesting gameplay over a network has proven to be difficult, especially with prediction and stuff, and it's certainly a WIP - if you check the website you can see some real early WIP combat/movement scenes and it was really janky; I've spent a lot of time improving it and smoothing it out and it's really coming along great!
     
  10. Lostlogic

    Lostlogic

    Joined:
    Sep 6, 2009
    Posts:
    693
    Looking really nice! Client-Server game dev is no small task. :)
     
    Matt-Roper likes this.
unityunity