RPG MMO Server System for UE4

New Video showing a demo of the Chat Server

@Chieling
@TechLord
@HeadClot

Here is a new demo showing how the Chat Server system works for communicating across server/map instances:

By using a long polling technique the response time is nearly instant. This demo is shown with it communicating over the internet to a Virtual Private Server hosted at 1and1. This video was recorded at 1 frame per second. I need to find better screen recording software.

@Dartanlla

looks great! exactly what we were discussing!

hows the ā€œto doā€ list lookin? :slight_smile:

Iā€™m rather excited to see this in action!

Here is what the work list is looking like right now:

Add more admin tools (this is the story of my life :)).
Spin off a template/starter project with all of my game code removed.
Add a player registration system, to allow your players to sign up for your game and create their account.
Add a dungeon instance system that allows you to launch new map instances with a group of players.
Add persistent storage for actors placed in your worlds (items, building systems, etc.) (on hold - this might be a feature I add later after the first release as it seems kind of optional for some games)

I think I am going to look into the dungeon instance server thing next and how how you can group together with other players and then launch a new dungeon instance server just for your group that only your group is allowed in. Weā€™ll see. I have off work the next few days, so hoping to get a lot done.

@Dartanlla

looks like a hell of a list! cant wait to see your next steps!

@Dartanlla,

The ToDo List is very enticing and I would anticipate it being a challenge developing solo. Therefore, I would like to sign up to assist you in development / testing of DWS. Iā€™m using Perforce for version control. I would also like to be the first customer with a pre-order, just need a paypal email. I discovered PHP for IIS which will run my current Wordpress/WooCommerce Solution.

My intention is to use DWS in TheGameDevStore.VR, a VR MMO 3D version of the Online Store TheGameDevStore.com Game Asset Marketplace. The TheGameDevStore.VR is essentially a open world constructed from game assets that can be tested, purchased, and downloaded. There is a basic RPG FPS running-on-top to provide Game Mechanics (ie: Character Customization, Leveling, Crafting/building, AI Mobs, Weapons & Combat) for testing Game Assets. Thus, I can use every feature in the ToDo List.

@TechLord

I think your GameDevStore that uses VR to preview game assets is a great idea. There have been times where I almost bought items from the Unreal Marketplace, but ended up not buying them because the pictures werenā€™t enough to let me know the quality. I can definitely see how you could use my server system to power that. Basically you would spin up new map server instances whenever someone wants to preview an asset and then shut them down when they leave.

I do have a question though. Have you figured out a way to protect the assets? My guess is that you would have to distribute the assets for previewing as uasset files or in a PAK file (unless you figured out some way to stream them). It is my understanding that it is easy to pull files out of a PAK file, so that isnā€™t enough to make them safe. Also, there are tools I have used in the past that can rip 3d meshes and textures from any Direct3D game. Just wondering if you figured out a way to overcome this? I am assuming this would be important to anyone wanting to sell their assets through your GameDevStore.

I am working on getting a template project setup that I can easily distribute. When I do, I will let you know so you can help with the testing and provide any feedback you might have related to your use of it. I have used PHP for IIS before to run production wordpress websites and it worked quite well once it was all configured (the documentation wasnā€™t great).

@Dartanlla,

I anticipate taking the same anti-piracy precautions standard UE4 game apps do to protect content. Asset protection requires some research, and Iā€™m investigating into UE4ā€™s content cooking, patch support, and encryption. Iā€™m also investigating into deployment to GameDevStore.VR UE4 Client to HTML5. As a Content Provider myself, my greatest concern is refunding after a purchase is made due to the lack for DRM protection.

[COLOR=#333333]Iā€™m aiming for a persistent game world to operate a basic RPG FPS running-on-top of [/COLOR]TheGameDevStore.VR. I anticipate Game Devs and players to hop on the Server and play the RPG for fun. Any item can be purchased at any time. I can see spawning map instances to be useful for mini-exhibits demonstrating particles/physics/animations and mini-games demonstrating special game mechanics. The ultimate goal is to extend on the RPG to build up Dragonā€™$ Gold as Iā€™m too lazy to start from scratch.

@Dartanlla

I also plan on buying this and using it as the backbone for Dawn of Ascension. Please let me know if there is anything that I can do to help also

Music to my ears. Its a good start in the right direction with multiple uses. You could almost sell that separately and people would buy it. Iā€™ve been looking for a solution like this for months now. Ideally Iā€™d use it for co-op matchmaking basically. Gonna keep my eye on this one :slight_smile:

Good luck and hopefully all goes well for ya.

@Dartanlla, I was chatting with my level designer about your product and a question came up.

how/does does your system handle server load? I know you said that u can handle the normal UE4 amount of players (64-128) and that u are looking at a system where a group can all travel to the same dungeon together.

howeverā€¦

what if I have a world zone (non dungeon) and for whatever reason, the number of players start climbing up over 150? (just an example number) Id assume that the lag at that point would start going crazy. would/does your system handle spinning up a new instance of a zone (server) if the number of players hit X limit? I know this is partially a game design issue but its also server load.

I know you have a system that your working on that would keep groups together and spin up a new instance of a dungeon for that group, but I believe this would a modification of that and I definitely think a load balance system for zones may be a thought to avoid to server overload issue.

@Chieling

Server load is handled by spinning up extra instances of the same map once a player limit is reached. You can set the max number of players limit on a per map basis (since the limits might be different per map). In your example, once the 151ā€™st person tries to connect a new map instance will by spun up for that player. As players leave a map instance, more players will be able to connect.

One thing I would like to add is the ability for you to move to a map instance that has your friends if there are player slots available. I was watching a friend play WoW over the holidays and this is what they are doing now. You can do quests with players from other servers by creating a group and then joining the server that the leader of the group is on. To make this work better I may create two player limits: a soft limit and a hard limit. New map instances will spin up when the soft limit is reached, but still allow players to join friends up to the hard limit. Still working on this, but it will be something like that.

@Dartanlla
Everquest does something similar also. they use a /pickzone command to have a UI pop up that shows the instances and number of people in that instance. you can just click into the instance u want/need to go to once you are in the base zone (instance_0)

the one mechanic u may need to watch forā€¦ in EQ if u are in an instance and u /pickzone over to a new instance, u stay in the same location in the new zone. it causes camping issues, allowing for a player base to see how many zones are up and start flopping between the zones tryin to get the same spawn. while this is all game mechanics, the question I guess is ā€œif u get to choose an instance, where do u pop up in that instance?ā€

@Chieling

That is interesting that Everquest lets you pick the zone you want to join and shows you which ones are active. I can give you blueprint nodes to list the active zones and transfer a client to a zone, so you can use those however you want. My guess is that many other MMOā€™s donā€™t let players directly pick their zone to combat cheating like you mentioned. I would think if you changed zones it would not change your location. You would pop up in the same location just on another map instance. Zone changes would work the same as moving from one map to another, so the transfer will only take a second or two.

Another gameplay issue you might run into would be how to deal with aggro mobs in the area you zone into. You may have to make it so players who switch zones are immune from aggro for a certain period of time, but again you would want to limit cheating with that feature.

Just want to give you all an update on my progress. I am working on putting together a template project that I can distribute and I decided I donā€™t want to continue to rely on the VaREST plugin, so I am rewriting all of the HTTP server calls directly. This will delay the project a few days, but in the end it will be more self contained and have less dependencies. It might run a bit faster too :slight_smile:

I will begin distributing a free evaluation version soon so that you guys can give it a try, determine if it will work for what you want to do, and provide any feedback you might have.

Hey @Dartanlla,
Got a few questions about your tech -

I am looking at replicating the Freelancer style game world where planets, Moons, Space Stations, etc. can act as hub levels for player activity.
However the game Overworld(s) are represented as small Solar systems however only one overworld can be loaded per client at one time. Multiple Clients can be connected to a single Overworld.

So If Bob was in the Naboo system and Sally was in the Degobah system. Both are different solar systems and thus different overworld maps.

  1. Does your system support multiple large multi-segment Over world maps?
  2. Does your system support maps that act as connections between other maps?

To elaborate on 2 - Bob wants to go to degobah to help sally in a quest. But in order to do that he needs to Navigate a few Hyperspace lanes aka (Intermediate maps) to get to sally. Which involves Jumping from Naboo to <Insert Intermediate map here> to <Insert solar system here> to <Insert Intermediate map here> to Degobah.

Thanks for your time,

HeadClot

fantastic news Dartanlla!!

With my system you can string together as many maps as you want, but there is no way to multi-segment one map. A player is always in one and only one map at a time. A box collision is used to transfer between maps in the demo project I am putting together, but you could use any condition you want. In a space game I would probably use maps to build a grid. Then when you exceed a certain X value, Y value or Z value (+ or -) you would call my Transfer to Map blueprint node to move the player/client to the new map on whatever server is hosting it.

Another option if you donā€™t want to represent all of the space using a grid would be to string maps together in a star pattern so you only create maps around and between your points of interest. All of this is up by you though. Just build as many maps as you want and then create conditions for when to transfer the player/client to another map and which map to transfer to.

Also, since most space games use hyperspace that is a great place to hide the 2 second load time between maps :slight_smile:

Iā€™ve been working with the MMO Kit by codespartan for sometime nowā€¦ But I like what I see here. Do we know what this might cost with release? Outside of mechanicsā€¦ I could see my team and I moving over to something like this with little to no convincing. Ideally the instancing system map management system is a huge boost to backend development.

As for account administration I was always a fan of using http://www.userfrosting.com/ as a base. If you havenā€™t taken a look at it, Iā€™d say give it a gander.

My focus is on developing the back end infrastructure needed to run an MMO with UE4. My day job is designing the architecture for large web server / database systems, so this is what I have the most experience doing. I love MMO games! I am a recovering WoW addict and still enjoy playing table top RPGā€™s. I am trying to setup my server system to allow any type of game to be built as I can see how my tools could easily be used for launching matchmaking servers or instance servers for MOBA or space games like Star Citizen.

Right now I am planning on selling two kinds of licenses:

The Developer license will cost $50. This will allow you to get up and running right away without having to setup any expensive servers because I will generate an API key for you and you will use my hosted servers. I understand that most people will never publish their game, so this will allow hobbyists to use my system to build MMOā€™s for a small fee. Developer licenses can be converted to full licenses by paying the difference if and when you want to publish your game.

The full license will be around $100 and will include full source code and all of the server components needed to host your own system on your own servers. It will also grant you a license to release one game project to the public with the license. The price is really low considering that I have hundreds of hours of development into this, but I realize there isnā€™t really any money in this sort of thing and I am more interested in helping people get their MMOā€™s to launch :slight_smile:

I am also available for a small consulting fee to help you setup your server infrastructure when you go to release your game. I can also build you a custom launcher for your game as using UE4 to login (what I do in the demo project) will not scale well with thousands of users.

Thanks for the link to User Frosting. It looks interesting. I already have my own registration system and I am a Microsoft guy, so PHP isnā€™t really my thing either :wink: