RPG MMO Server System for UE4

awesome :slight_smile:

ill be following your progress on this!

@Smartay

I am planning on adding a system for spinning up dungeon instance servers similar to how World of Warcraft does for 5 mans and 10 mans. It seems like this type of thing is what you would be looking for to do 5v5 or 6v6. The current system will not keep groups of people together, so the modification I will be making is that when a server is spun up it will tag the pre-defined group of users to that server and not allow others to join. I have a few other things to clean up before I get to this, but it is definitely on my roadmap. I only work with Microsoft technologies so I donā€™t currently have any interest in making this system work on Linux servers.

So about player limits with the default UE4 server. I saw this come up a few times.

There are no ā€œhard set limitsā€ when it comes to player counts. It all comes down to your hardware, the complexity of the game logic, and the number of players. UDK had a hard limit of 64 players. UE4 did away with that limit.
While it wont be able to get MMO levels of players with out some form of major modifications to the default server tech it can get allot of players 128+ in some cases.

Just thought I would chime in on that. :slight_smile:
@Dartanlla -

What price point are you thinking about for this tech?

@HeadClot

Thanks for the explanation of the UE4 server limit. Even if you can only get 100 players per map that still seems pretty good. Then have a dozen or so maps per server and you can get 1,000+ players on one server.

I havenā€™t really decided what the price point would be, but here is what I was thinking. Most UE4 developers are hobbyists like myself, so they need something simple that doesnā€™t cost a lot. I was thinking of selling a developer license for somewhere around a $50 one time fee that gets you the world server component, a UE4 starter project (assuming Epic allows me to distribute this) and use of my server hardware for the central management server that requires Microsoft IIS and SQL. This will allow blueprint only UE4 developers to get up and running instantly, not have to spend $30 a month on server hosting, and not have to deal with complicated server configuration. Then if someone does want to release a game to the public I can work with them to setup all the necessary server hardware at a reasonable cost. Let me know your thoughts on this price point / configuration. Thanks!

I should have a video showing how the system works later today.

@Dartanlla this is something Iā€™d also be interested in checking out as Iā€™ve been looking into persistent player data solutions for a while for the game Iā€™m working on (including looking at BaaS solutions, though most seem to mainly be used by mobile games). Iā€™ve also looked into rolling my own solution, though it would be time consuming (though I am a game dev with plenty of multiplayer experience, web programming isnā€™t my speciality). Scalability and security would be quite important considerations as itā€™s something I plan to release at some point, as would pricing if it ticks all the boxes :slight_smile:

Hi Dartanlla,

I just stop by to show support for your project. I love The Internet/Networking and it is always awesome to see Developers to take on the UE4 MMO challenge. I peeked into the UE4 MMO Server to Server communication for a brief moment in my early UE4 days. However, I put the research on the back-burner in favor of developing Procedural/Semi-procedural Content Creation Systems. The time is coming where I will need to revisit.

I would be interested in a solution such as yours wrapped in a Wordpress Plugin (PHP) in which I can integrate directly with my WP powered Online Store Website. My Master Plan is to build a VR MMO Emporium in which Users can interact and purchase products from within the Virtual World. With the exception of presentation, all Product Cart and Purchase/Order Fulfillment processing would be handled by the same backend code of the Wordpress Site Server.

Somewhere in the middle of developing Procedural/Semi-procedural Content Creation Systems, I started writing the ArcadeKomodo Online API (AKO) [for ArcadeKomodo.com]. AKO provides a HTTP-based API to work between UE4 Online Subsystem and Wordpress Server managing Users/Login, Sessions, Matchmaking, Achievements Contests, Formats, Friends, Metadata, Points, Scoreboards, and Widgets.

I mention the UE4 Online Subsystem because it could offer an abstracted interface for managing sessions, creating character stats, communication with other social media online subsystems. I referenced the GameJolt API for inspiration and there be a couple UE4 GameJolt API Plugins: #1](GameJolt Game API Plugin for UE4 - Community Content, Tools and Tutorials - Unreal Engine Forums), #2]([FREE]Game Jolt API Plugin - A simple plugin that integrates Game Jolt Game API with Unreal Engine 4 - Community Content, Tools and Tutorials - Unreal Engine Forums) available for review. An Online Subsystem API will be the starting point for myself when I revisit development of MMO Systems.

Keep up the awesome work!

@HeadClot @Chieling

As promised I uploaded a video showing a quick preview of how the system works. The Microsoft Video 1 compression codec I used has terrible artifacting, but hopefully you can still get the idea. Let me know your thoughts.

Thanks!

@TechLord

Sounds like a really kewl project you have there. VR Worlds are definitely the future and I love building worlds! I canā€™t say I know a lot about PHP as it has been years since I used it, but PHP is certainly capable of connecting to a SQL backend the same as C# does, so that type of integration should be possible. Thanks for all the links. Now I have some stuff to read. I have not really looked at the UE4 Online Subsystem as my solution is mostly external. It would be kewl to have a true MMO server system in UE4 that did not replicate the Player Character classes to all other players, but to do that you would probably have to know a lot about the UE4 Online Subsystem. My solution isnā€™t nearly that clever as I just leverage what UE4 already does and the way its multiplayer system already works.

@TechLord

I read your Next Gen MMO Plug-in thread from 2014 and thought it was interesting that you listed SmartFox server as a possible middleware platform. Prior to switching to UE4 in May of 2014 I spent a few weeks building a simple MMO project in Unity using SmartFox as the back end server. SmartFox is a classic MMO style server; which is to say it is just a modified chat server. SmartFox was very difficult to use because there wasnā€™t a lot of good documentation or examples. The performance of this style of server is very efficient, but I quickly ran into one huge problem. Server authoratative collisions. Basically to do it right, you have to load all your collision data (from meshes and landscapes onto the server side of the system). SmartFox does none of this for you and you have to build it all from scratch. This would be a huge undertaking and is one of the reasons I switched to UE4.

Anyway, just thought it was interesting that you mentioned SmartFox server and thought I would relay my experience with it.

@Dartanlla

it looks like a great system and I like the roadmap so far!

will u have a way to add to what gets saved? (ie: stats, player inventory, etc) even something in a document that shows how you do it for player location may be helpful as an example.

Since u discussed having dungeons keeping a group of players together, are u also including some sort of mechanics for grouping?

Iā€™m tryin to keep all this ā€œserverā€ related since this seems to be focusā€¦ but a mail server added on later may be of interest. (EQ or WoW style is a good example)

if u are designing personal storage, u may want to keep in mind while u are designing this is the possibility of a guild add-on. (guild banks)

just a few questions and ideas that ran across my head immediately :slight_smile:

@Chieling

Thanks for the ideas. I had totally forgotten about inventory, which is kind of funny because I first started working on this back in 2014 when I was building a persistent inventory system for another game I was working on with a team. Yeah, I will definitely need to add an inventory system.

My thought on fields for persistent character storage is that I will try to create a set of fields that will cover 90% of what games might use and then setup a custom field system for anything super specific. Weā€™ll see how that works.

To be able to show how to use the group dungeon instances I will have to create a simple grouping system.

I hadnā€™t thought about adding an in-game mail system, but that is a good idea. Many games have systems like that and they require persistent storage, so it fits right in to this project.

A guild system is something that would need persistent storage as well. The trick will be to create it in a way that it can be used for guilds, groups, factions, etc.

Lotā€™s of good ideas. Thanks!

Just saw the video. It looks awesome and I cannot wait to get my hands on this. :smiley:

50 dollars or there about seems pretty fair cost wise. Seamless transitions would really be nice. :slight_smile:

  • HeadClot

@Dartanlla

ok, was just thinkingā€¦ Iā€™m not sure how u want to handle weapon or possibly spell combat, but any buffs/debuffs/etc on the character would also need to be persistent. honestly, even stats for that matter.

alsoā€¦ another thought. different levels of players (ie: a player, a GM, etc). this isnā€™t server issue, but a possible design thought

alsoā€¦ are you going to handle or how would u handle dialog/quest or AI?

@Dartanlla,

Excellent Video. The Admin Web Pages look very clean and easy to read. What scripting/Markup languages used? Active Server Pages (ASP)? I assume so in using IIS. I intend to do the same thing, but with all the features of a CMS like Wordpress (PHP).

The portal zoning system is pretty slick. Can Zoning Portals be dynamically created and positioned on-demand? Zone Portals achieve similar goals to that of UE4ā€™s Level Streaming, so I can only imagine Larger Worlds/Faster Load times for Zone Portals coupled with Level Streaming.

Playing with friends & fam is what players enjoy the most about multiplayer. As a Game Dev, I want to develop scalable Co-op Games of various genres. So I would anticipate supporting Player Group Zoning and Chat to significant boost the sales of your ā€˜Dartanlla *World *Serverā€™ (DWS) solution. I would also be very interested in showcasing DWS in the Soon-to-be Ultimate Gamer Dev Online eStore: TheGameDevStore.com.

I have multiple projects in progress, and Iā€™ve realized DWS would be ideal for Dragonā€™$ Gold. In Dragonā€™$ Gold, I randomly generate the Labyrinth Architecture using a RandomStream Seed. Sending the same RandomStream Seed to all the Clients in the Map to construct identical Labyrinth Architecture has the highest priority during Map Load. Have you tested replication of random generation, spawning etc using Random Streams or other method?

PS: Iā€™ve also spoke with several other Devs working on Multiplayer Survival/Crafting Games who are in need of Dark World Server solutionā€¦ and Iā€™ll be spreading the world.

@Chieling

I already handle persistent buffs/debuffs/stats since I use this for a Pathfinder/D&D game. I just need to modify the system to be more general. Probably rows instead of columns and then AddBuffDebuff and RemoveBuffDebuff BP nodes that optionally go to persistent storage if thier effect time is long enough. No point in writing short term effects to persistent storage.

Player authorization levels could easily be handled with just one field. Seems simple enough. Then your game just queries that field to allow certain extra functionality.

The only part of questing that I see needing persistent storage is keeping track of completed quests. So I can just add a generic AddAchievement system with a string field for the achievement name and then people can use it for anything the want to keep track of (quest completion, storyline management, other achievements, etc.)

Most MMOā€™s donā€™t seem to have persistent monsters, so not sure if I will be doing anything with AI. I have to leave something for the game developer to create on their own :wink:

Thanks for brainstorming with me :slight_smile:

@Dartanlla

the reason why I brought up dialog wasnā€™t for persistence (although u had a very valid point). It was for other servers. Like a chat server, that allows for chat across servers, would u need to add the quest/dialog system to something like that also? If I had gotten a quest to kill a monster in a different zone, would putting the quest system on its own server be needed so that the other server knows to spawn X monster?

as far as monsters goā€¦ this isnā€™t persistence in the monster. this is to unload the AI ā€œloadā€ (thought process) off of the playing server. lets think beyond ā€œorc_pawn_01ā€ that has a base sword attack. lets give the AI a script to follow. will it attack? buff? heal? at 50% will it have a different script? will it ā€œsubmitā€ and then have to say a dialog? or submit and then take the players across a zone to go to another location?

while u are looking at a server system, Iā€™m just tryin to think of the ways to give this the most flexibility and hopefully the best distributed work load so that your system can handle the bigger loads with no lag.

Microsoft ASP .NET with MVC 4 and Bootstrap 3

The portals between maps are just simple BPā€™s with a box collision and the following variables: Map to Transfer To and Location in Map to Transfer To. I want to start a conversation about level streaming. I will do that in a new message when I finish the research I am doing on it.

Playing multiplayer with family and friends is the best kind of multiplayer and what I originally built this server system for.

Dragonā€™$ Gold looks really kewl. I love the idea of competitive questing and am very interested in (non-FPS) eSports type games built in UE4. If I had unlimited time, I would love to work on a game that was nothing but an endless string of raiding dungeons. So think WoW with no leveling/questing where it was just one raid dungeon after another that you progress through as a team. The only leveling up that happens is from gear you obtain while downing bosses. Teams would be ranked weekly on their progress and it would be considered a team sport.

cool. thanks for posting this

Ah, yeah, I didnā€™t think of quests across map instances. So I would also need to add a system to keep track of active quests that developers could use to query across maps. Wow, there really is a lot of stuff required to make an MMO like system that spans maps in UE4.

Not sure if the AI load could really be taken off the UE4 dedicated servers. There is a huge limitation to persistent storage. It is incredibly slow (vs game time). So a round trip network request between UE4 client and UE4 dedicated server at most might take a few hundred ms, but a round trip request to persistent storage will take multiple seconds under load. Also, UE4 has two way communication: the client can call the server with RPC and the server can call the client with a rep notify variable. The persistent storage server is only one-way. The UE4 dedicated server can call the persistent storage, but the storage system cannot call the UE4 dedicated server. The UE4 dedicated server is only capable of polling the persistent storage server. What this means is that the persistent storage server cannot be used for most things that need to happen in real-time and is best used asynchronously (without waiting for a response).

Thanks for the ideas :slight_smile:

Oops, I overlooked that in the initial post. Iā€™ve started researching into ASP to PHP Converters to prep for DWS Wordpress Plugin:)

I can see a lot of power in Zone Portals with additional replication features. A sort of Spatial Replication Trigger? They could be useful in transferring players from one world to another with completely different rules/mechanics by replicating the rules-script upon transfer, with minimum immersion breaking. I want to employ such Zone Portals in TheGameDevStoreā€™s VR Emporium as its purpose is to demonstrate Game Dev Assets (Media, Data, and Scripts/Code) for purchase in real-time.

What you propose can be implemented into Dragonā€™$ Gold (D$G) as type of Game Mode. Lets call this Game Mode: Raider. The primary D$G Game Mode: Treasure Hunter, is in essence a series of Boss Raids that takes place on massive Platforms arranged in Maze. So, with a few rule tweaks on Maze Size, Monster Drops, Treasure Spawns, and Leveling, the new Raider Game Mode can be added. You also spark an idea for a form of cooperative *Party Character *that is treated like an individual Player Character. The Party Character that will have its own attributes, skills, and inventory in which all Party members can utilize, on basis first-come-first-serve and time-critical voting mechanism. Thus far, Iā€™ve been developing solo, so door is always open for devs to join the D$G Dev Party.