Search Unity

  1. Unity 2019.2 is now released.
    Dismiss Notice

Games [WIP] VRGuardians a VRMMORPG Platform (Like VRChat)

Discussion in 'Works In Progress' started by Glader, Dec 4, 2018.

  1. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    My Own VRChat-like Platform

    Hi guys, for awhile now I've been working on server/client network game emulation projects and over a long period was working on my own online game backend and networking. Originally I didn't know what it was going to be used for, just that I wanted to make a large online game.

    Now I know. I'm making a VRChat-like platform in Unity3D. VRChat proved that Unity3D was the best tool to deliver the ability to create custom content and download/load it at runtime.

    This isn't the first time I toyed with the idea, a long while back I put together a prototype for world uploading. Basically, AWS S3 + ASP Core + AssetBundles. Unity3D does the heavy lifting, you can watch that here:


    Two days ago I finally decided to seriously work on it and forked the project I was working on, based on GaiaOnline's intellectual property which I did not own but was using as a visual prototype for the project. Because of the previous work, progress is already far-ish along! I planned to have a proof-of-concept of networked VR in a day, and I'll have more information about that later.

    Enjoy this short video that recaps the work of the previous project, that this project is forked from, and the initial work done to create a VRChat type world.

     
    Slaghton and HeadClot88 like this.
  2. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Spent the day setting up world downloading, via asset bundles, in the current client. The client will select a character, request a session be created for it (if none exist) and then will go to the loading screen. When at the loading screen the client will send some requests to determine what zone/world it should be going to. With that information it can query the content server to get an AWS S3 download URL. Fun stuff!

     
    HeadClot88 likes this.
  3. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    I finally got around to making a "Networked VR Proof-of-Concept" video. This was hard to put together because I don't have VR. Required abit of testing with my friend. So, basically networked VR like VRChat is pretty easy and this proof-of-concept proves that it can and will be done for this project in the near-ish future. Exciting times!

     
    HeadClot88 likes this.
  4. HeadClot88

    HeadClot88

    Joined:
    Jul 3, 2012
    Posts:
    691
    Hey this is pretty neat!
     
    Glader likes this.
  5. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Thanks! I'll have a new video out tomorrow about it, involving world downloading in the current client and moving between instance servers. (In VRChat this would be transfering between worlds)
     
    HeadClot88 likes this.
  6. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Today I built the features required for authoritative zone/instance server registration on the "gameserver". These are headless/serverbuild Unity3D instances. I built a demo that showcases both the world downloading, AssetBundles via AWS S3, and joining and moving to different maps/instance servers. Each map shown is run by a seperate zoneserver and you can only see other people in the same instance as you, thought the video doesn't exactly prove that as the clients move together into worlds. I could have just created a second instance of the same map too, but thought it'd be more interesting to add 2 maps being downloaded at runtime!

     
  7. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Put some time into networked voice chat. At first, I went the wrong route. So it took longer to implement than I wanted. However, voice is working over GladNet3 right now (only TCP) and eventually will be over a separate service using GladNet3 (R)UDP in the distant future. The voice integration was done using Dissonance Voice Chat for clientside audio data handling.

     
  8. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Today is all about refactoring and addressing latent faults! For example, data races and threading issues. There hasn't been much safety in accessing resources entities are associated with. I'm introducing packet handler-level locking policies based on Nito.AsyncEx's AsyncReaderWriterLock. The concept is we need to not remove resources associated with an entity, this is sorta an ECS implementation, while handling a message related to them. Basically just covers the race condition of them disconnecting during handling, and whatever thread ends up doing the session cleanup and removal of the entity from the world.

    I'll also be addressing some design faults and missing features in GladNet3 to better support the cases of async session cleanup! Or, I may take the lazy way and work around the issue for now.
     
  9. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Movement controls was something everyone complained about while testing the client. So, before public testing (which is soon) I decided to put a couple minutes into better clientside movement controls and supported networking. Here it is! Close enough to VRChat for now, though not exactly how they handle it.

     
  10. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Added 3D/positional networked voice chat! Wasn't too much of a change, originally it just broadcasted voice that everyone could here. I've got a video demo of that here. Oh, and I'm now working on implementing custom avatar uploading + loading them into the client for everyone to see, so essentially model changing packets too and etc. Should be done within a couple days or sooner!

     
  11. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    I'm still working on custom avatar uploading and downloading (at runtime). Ran into some issues with IK when spawning/replacing the current avatar but I finally had a breakthrough tonight! I'm now working on the database and SDK (uploading) part of the feature, the networking was actually already finished from the other day. Stay tuned!

     
  12. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    I'm happy to announce that a prototype of custom avatar uploading to the platform is finished. Check out this awesome video that demonstrates the feature, if you're curious how it's implemented let me know! I'll answer questions.

     
  13. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Another small update video, about floating avatar names! That's not the only thing I've worked on lately. I've been addressing some issues related to async/multithreading in Unity3D within the project. GameObjects and Components can disappear inbetween awaits in an async method. The entire scene could have changed by the time the continuation happens! So, implementing a guard system and the initial creation of a cancellation system is important for dealing with ANYTHING that will eventually re-join the main Unity3D thread and touch GameObjects in some way. Difficult stuff!

    Anyway, enjoy the video!

     
  14. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    A public test is coming up in the next few days, additionally I've launched a Discord server for the project at www.vrguardians.net. Come join the community! The project is very user/community driven, so it's a good idea to join!

     
  15. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Today at 4:30pm CST (+6 GMT) a public test announcement will premiere on my Youtube channel. This will announce a public test build available for download and testing in the Discord at http://discord.vrguardians.net. Come check it out!

    I'll also be holding a voice-chat Q&A in-game too for anyone who has questions.

     
  16. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Just made a video about the new Social backend service, built with ASP Core SignalR (websockets), and demonstrated zone-wide text chat with it. This is just the start for this Social service. The support for web, mobile and desktop all at the same time is going to bring lots of potential for users! Things like guild chat, friends notifications, invites and more will all go through the the scalable realtime social service!

    The best part is the instance/zone servers stay slim. It all goes through a seperate backend service!!

    Here a video on zone text chat using this new service:

     
  17. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    I finally have a video demonstrating the guilds and guild chat system/feature. Since I don't really have a UI for guild invites and stuff it's only really going to show guild chat for now!

     
  18. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Well, I don't know who would be interested in this video but I've announced I will be using Unity3D, TrinityCore (a 3.3.5 World of Warcraft emulator), FreecraftCore (a C# WoW emulation library I've developed for years) and GladNet3 to deliver GladMMO. A unified framework for MMO development using TrinityCore in Unity3D for my projects. Also for VRGuardians!

     
    HeadClot88 likes this.
  19. HeadClot88

    HeadClot88

    Joined:
    Jul 3, 2012
    Posts:
    691
    A few questions for you @Glader -

    1. Would you do a technical deep dive video into GladMMO?
    2. What can we expect in terms of raw player counts from GladMMO?
     
  20. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    @HeadClot88 I don't intend for the Unity3D community to use GladMMO, though they are welcome to. GladMMO is basically GladNet3 + FreecraftCore + TrinityCore meaning it's basically a World of Warcraft client emulator and the backend is a fork of TrinityCore which is currently holding thousands of concurrent players in open world. Warmane claims to have 12,000 concurrent players and Nostalrius achieved the same. If you put everyone in instances, due to the multithreaded nature of Map updating in TrinityCore, you can achieve even higher player counts.

    But, this is a very unique problem that required a unique solution. To unify my efforts to work on several projects I needed to take my existing World of Warcraft client emulation work and utilize for my other projects. Years of experience with TrinityCore and WoW client emulation put me in such a position.

    People are welcome to try to use it though.
     
    HeadClot88 likes this.
  21. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    I've opened up the World Creation SDK alpha testing today. You can now test and upload words with the SDK to the VRGuardians platform.

     
    Last edited: Sep 23, 2019
    HeadClot88 likes this.
  22. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Finally got the creature part of the content creation SDK to be demonstrable. You can upload creature models and add them to worlds and they're fully networked and the client can see them and downloads their models at runtime!

     
    HeadClot88 likes this.
  23. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Added support for uploading networked gameobjects to the platform!

     
    HeadClot88 likes this.
  24. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Tonight I recorded a video that demonstrates World Teleporters. The ability to place them in worlds via the VRG SDK and the ability to go from one server instance/world to another via those world teleporters.

     
  25. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Tonight I made a video that demonstrates the reimplementation of text chat, a feature that already existed, using Vivox. Originally I used Dissonance voice and a custom SignalR server for text chat. Now I use Vivox for both voice and text chat.

     
  26. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Added Avatar Pedestal functionality! This lets content creators place pedestals that users that join their world's can click on and become that avatar!

     
  27. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    New video that shows avatar persistence in VRGuardians. The ability to save selected avatars and in the future the ability to save customization options for it!

     
  28. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Video discussing the technicals and approach behind the integration of Akka.NET's actor model into the authoritative game servers.

     
  29. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Made a video about serverside pathfinding for creatures on worlds players upload to the platform!

     
  30. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Made a video about the networked targeting system feature I worked on today.

     
  31. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Created a persistent experience and leveling system for VRGuardians.

     
  32. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Spent today finally getting rid of all of the placeholder UI elements that I borrowed from other MMORPGs. Reimplementing all the UI functionality with something I do actually have the rights to use.

     
  33. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Added the foundation for realtime social features this past week and created the friends system on both the backend and frontend. Here is a video showing off the new friends system!

     
  34. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Uploaded a video demonstrating VRGuardian's guild system built on top of ASP Core's SignalR websockets for the realtime notifications.

     
  35. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Hey guys, I spent the past two days integrating Microsoft's Azure Cloud into VRGuardians. The inclusion of Azure Pipelines, Azure Service Bus, Azure App Service and Azure's SignalR Service is going to make deploying scalable backend environments a breeze and it this marks a point where VRGuardians is officially running 24/7 in the public.

     
  36. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Made some general improvements including a new version of networked movement!

     
  37. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Made a video about the spell casting system prototype! An actual spell system will be implemented and demonstrated soon, but here is the casting!

     
  38. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    401
    Made a video demonstrating the data-driven customizable spell system in VRGuardians.