An in development MMORPG framework. Based on ASP Core, SignalR Core, Unity3D, GladNet3, Akka.NET and Protobuf-Net. If you're interested in the development of a game that uses this framework, such as PSOBB2 or VRGuardians, then join this Discord: https://discordapp.com/invite/Qk8HpmG
Supporting:
-
Authentication/Authorization service (OAuth/JWT)
-
Playfab Integration
-
Character Services
-
Realtime Instance Services
-
User-Created-Content UCC (Avatars/Worlds)
-
Realtime Social (Guilds, Friends, Text chat)
-
Unity3D SDK for UCC
-
Vivox Voice Chat
-
FinalIK Integration
-
VR Support
Azure PlayFab (backend only)
ASP Core >=2.0
* Not included
All services are built with scale in mind. It's built upon the crossplatform technology ASP.NET Core. This allows GladMMO's services to be high performance and asynchronous stateless HTTP APIs which provide for high scalability.
GladMMO's Authentication service provides authentication and registeration services to player accounts. Supports PlayFab integration opaquely but does NOT rely on PlayFab identity or authentication service at all.
The Authentication is based on ASP Core's identity library as well as Openiddict's OAuth/JWT library. It provides a way for player accounts to authorize themselves in the distributed stateless backend using JWT (Web Tokens) to access secure API on other services.
GladMMO's Service Discovery service provides a singular endpoint into the GladMMO backend. It works similar to a DNS service providing routes based on service name. This allows for clients to only ever have to know a single backend endpoint when deployed and can gather other service's endpoints at runtime from this service.
GladMMO's ContentServer service is responsible for handling User Created Content and servicing client's that data at runtime. The GladMMO SDK interacts with this service to allow users to upload content such as: Worlds, Avatars, Creatures and Networked Objects.
Backed by Azure Storage Blob which it uses in a secure fashion to allow users to upload and update content they've created.
GladMMO's Vivox service is responsible for issuing Vivox authorization tokens to allow users to join channels for text chat and voice chat. It does this in a secure fashion by integrating GladMMO's authoization tokens with Vivox's authorative token generation scheme. It does not actually handle text chat or voice chat, 3rd Vivox servers handle this, but a user cannot interact with those services without authorization from GladMMO.Service.Vivox.
GladMMO's Name Query service is responsible for translating NetworkEntityGuid's into human readable string names. This includes: Players, creatures, gameobjects and more. Acting as a reverse-DNS for Entity's on the platform the service takes globally unique 64bit data encoded identifiers and translates them to non-unique names. This allows for the platform to address entities using the 64bit NetworkEntityGuid and not by string name allowing for high performance and easy addressing for actions. It's the identifier that drives the Entity Data Component's in GladMMO's ECS.
GladMMO's Social service is responsible for the realtime non-chat Social events. This includes guilds, friends, social notifications and eventually groups.
Based on Microsoft's SignalR it utilizes ASP Core and SignalR together to deliver a scalable realtime websockets solutions for modern social features expected in an online game platform. Eventually will support integration into Microsoft's Azure's managed SignalR service.
GladMMO Zone Authentication service is similar in feature set and technology to GladMMO's player authentication service. However, this is an account registeration and authentication service specifically for zone/instance servers. It creates ephemeral one-time accounts for Zone/Instance Servers that are spun up either on the backend or by user's themselves. Supporting the user self-hosting feature of GladMMO securely. It uses linked JWT authorization for zone registeration to allow only authorized players to create zone server accounts.
GladMMO's Zone Manager service is responsible for managing zone servers that come online. After zone account creation and authorization with GladMMO.Service.ZoneAuthentication zone servers are able to register themselves on the backend allowing for the ability for users to be routed to them. It's also responsible for handling zone health checks by processing them to ensure zones that are no longer available are cleaned up.
It utilizes Azure Service Bus message queue to process checkins and character data persistence requests in a fault tolerant and highly available manner. Making sure that the distributed nature fo GladMMO's zone/instance server can survive even if parts of the GladMMO backend become unavailable.
Q. Why does the library use a precompiled version of Microsoft.Azure.ServiceBus?
Due to issues with Unity3D's netstandard2.0 compatibility with some assemblies it was required, at the time of this writing at least, to fork it to this repository Glader.Azure.ServiceBus.Unity. It removed some of the dependencies and ensure Unity3D compatibility without breaking assembly references.
PLAYFAB_KEY: The secret backend key for PlayFab authorization.
AZURE_STORAGE_CONNECTIONSTRING: If using Azure Blob for content delivery this is the variable for the secret connection string for Azure Storage.
VIVOX_API_KEY: Vivox authorization service requires a secret key for signing tokens for client authorization.
AZURE_SERVICE_BUS_KEY: Global Azure Service Bus secret key that allows the backend to manage, send and listen on Service Queues and Topics.
AUTHENTICATION_DATABASE_CONNECTION_STRING: Variable for authentication database connection string. It's used in cloud deployments in lieu of the connection configuration file.
CHARACTER_DATABASE_CONNECTION_STRING: See AUTHENTICATION_DATABASE_CONNECTION_STRING.
CONTENT_DATABASE_CONNECTION_STRING: See AUTHENTICATION_DATABASE_CONNECTION_STRING
AZURE_SIGNALR_CONNECTION_STRING: When built for Azure the Social service will use Azure's SignalR backplane service so this is the connection string you'd use as a variable so it can redirect clients.
TODO: AWS
For regular users this repository is licensed under AGPL 3.0. Seperate from the AGPL 3.0, an additional unrestricted, non-exclusive, perpetual, and irrevocable license is also granted to Andrew Blakely for all works in this repository and any dependent GladMMO repository within the GladMMO Github organization.