This is quite nice and I will be very interested in it once you are about to release it.
I can agree with you as to world origin shifting being slightly pointless. Given how many people could feasibly work on a dedicated server using default UE4 Networking it would almost be counter productive and could leave your world feeling under populated. A giant world with 70-120 players (give or take) running on a single instance compared to smaller chunk sized instances each capable of housing that many people would almost be preferred. Sure, you hit loading screens more often but at 20k by 20k⦠Thats pretty **** big. I mean SWGās planets were 16km by 16km and on a speeder it took about 15-30 minutes to cross.
Sidenote: I highly recommend giving this a read http://www.raphkoster.com/2015/04/20/swgs-dynamic-world/
Obviously again server hardware plays a large role in this but you get the gist.
Thanks for the link. It is interesting that it is about SWG because that is the first MMO I played. It is also where I learned most of what I know about MMO server software. One of their programmers wrote an article about 10 years ago, detailing how their server software works. The main idea is that they were able to dynamically split up a planet into multiple servers and change it automatically based on server load. Very cool stuff.
Yesterday, we spent all day getting a 20km by 20km world composition map up and running for an upcoming MMO title. The map was made up of 16 2km zones where the landscape and other actors were separated into multiple sub levels. One of the big issues with World Composition is that the server is always running all of the sub levels. This would be horrible for performance. So I modified the Unreal engine code to allow me to filter which sub levels load on the server from my server system. This allowed us to load 9 landscape zone sub levels (the 1 we are in and the 8 surrounding ones) at a time and only load the actor sub level for the zone we are in. By doing this we were able to get the dedicated server to run in less than 400 MB per server instance and keep the client running at 60 FPS (on a mid-grade PC with old video card). The client was properly streaming levels in and out to help with performance. For open world systems, this seems like the best solution right now.
If anyone wants more information, join our discord channel and we can chat.
This is sounding better and better every time I check! Keep killing it!
Hello Gamer Devs,
In my opinion, a primary concern with how DWS operates, is Map Loading Times/Loading Screens. I donāt have an issue with Loading Screens as they can be a great intermission after a action packed battle or stressful event. However, I do understand how Loading Screens can be immersion breakers.
My personal goal is to reduce loading times, where possible, but, leverage long duration Loading Screens as part of the Games Experience. I believe Loading Screens can be Fun, Educational, and Rewarding.
Iām actively researching articles on cool game loading screens. Thereās even a Loading Screen Jam that focuses on is creating interactive loading screens/mini games. Read-only Loading Screens can convey Secret Cheats, Narrative/Lore, and Advertisements.
My plan is to literally Reward the player for waiting. One idea is to present an interactive Slot Machine (The MotherLoad) which can be played for a chance to Win in-game currency/Special Loot. In a survival game this could be an opportunity to replenish resources. I opened to discussing other ideas for Loading Screens.
@techLord I am so glad that stupid patent expired on loading screen minigames⦠that was just silly! lol
I love the idea of loading screen minigames, but I think you might be surprised at how short the wait times on the loading screens are. LOL. And that is a good thing
This toolkit is getting better.
I think everyone will benefit from getting a āseamlessā travelling system and not a map loading approach.
THe other kit owner did it but not published it yet. All I know is that itās using the ālevel streamingā from UE to load area on demand. Next is to change the network layer to have 2 active connection at a moment with a master/slave approach and switch them at some time when you mode to another area. The new server will become the main connection and the other one the slave. Then we you are enough far for the āborder lineā you can drop the slave connection.
This is just theory, but if you can make it real, your Kit will be greatly improve on the UX side!
I am still just using the map loading approach. Recently we have been trying to get map loading as seamless as possible by using World Composition to load the surrounding areas, but the basis of this system is still just client travel from server to server. So there will always be a short load time between map transfers (about 2 seconds).
From what I have read, the approach you outlined that uses two network connections seems to be the most common approach to solving seamless server transfer, but that sort of thing is going to be a lot bigger project and probably isnāt something most indie UE4 devās are going to be able to afford.
I may look into something like that in the future, but right now I am focusing on finishing all of the management tools for the current system I have.
The M/S Connection Switching technique sounds pretty slick and Iām 1000% in favor of a Seamless Travelling System. Loading Screens have their place in Seamless Travel too.
However, Iām developing within the context of DWSās current ability, focusing on the effective use of Loading Screens which are implicitly part of the DWS design.
Iāve summed up the core player āproblemā with Loading to Undesired Play-time Blocking. Other culprits are Framerate Drops, Net Lag, and Cut Scenes. Loading Screens actually help soothe Undesired Play-time Blocking. In my opinion, the optimum solution to Undesired Play-time Blocking in DWS during map Load is⦠Desired Play-time Blocking
So, Iām actively seeking answers to How to make Desirable Play-time Blocking. One of my solutions is to use Loading Screens making them part of the Gameās play [Game Mechanic] , not a another game to play [Mini Game].
A two (2) second load time is awesome! However, I donāt think it would difficult to set timers, that switch on Loading Screens for duration > 2 secs.
I have been working on the persistent inventory system this past week and it is coming along well. I have an Item Library that can be managed from the management server web interface. Each item definition has a few commonly used fields, but you can add as many custom fields as you want. In the starter project there is a simple inventory system showing how to use the GetInventoryItems, SaveInventory, AddItemToInventory, RemoveItemFromInventory, and ParseInventoryCustomData blueprint nodes. You can expand upon this simple inventory system, or you can plug my blueprint nodes into your custom inventory system or one that you have purchased off the marketplace.
A simple character inventory system showing how to load the inventory from persistent storage, handle picking up items, moving items around, and destroying items.
Oh this is looking so exciting!!
Have you tested with the newly announced GameLift service from Amazon? And I would love to help test things out.
Amazon GameLift is something we have been discussing, but some people are concerned about the costs. If you are interested in helping test things out, join us on Discord here:
Hey @Dartanlla -
Got a few suggestions for your MMO server.
- Use Akka - http://getakka.net/ - You can read about it more in detail but in short it allows you to scale the game server. Free and open source under the Apache 2.0 license.
- Add an āArea of Interestā system - Details here Link
More info for you to dig into to make your system better located at this blog.
https://gameserverarchitecture.com/
A few things stand out to me.
https://gameserverarchitecture.com/2016/03/pattern-seamless-world-game-server/
Please donāt include item systems and stuff like that, there is another mmo starter kit that does that and it is a PITA to strip all the nonsense out it kinda forces us to use that system with both itās strengths and flaws/limits. Subscribing to this thread and good luck with it, very useful stuff. Will definitely buy it.
On discord, you had mentioned that you might consider our suggestion to separate out the database management into a separate package. Is that still under consideration?
That is exactly what I said when people asked me to add additional systems. I HATE having to use other peopleās systems. Nothing bugs me more, because in my opinion no one does things the right way. And I am sure there are many other people who feel the same So as much as possible I am separating things into separate modules and making it so you can easily use as much or as little as you want. Here are some examples:
Letās say your game doesnāt use chat or you have your own system. No problem. Donāt initialize the chat component in your player controller and donāt drop the chat manager into your level. Done. You arenāt using any of the chat system. If you donāt want to use the item system, donāt load the item library into your game mode on the server. If you donāt want to use the ability system, then inherit your character BP from RPGCharacter instead of RPGCharacterWithAbilities.
One of the reasons I think this is really important is that I have people using my system for MMOās, persistent world co-op games, FPS matchmaking, RTS, and racing games. So everyone is going to need something a little different. My goal is to provide developers with the server technology needed to make their game, not to program their game for them.
Yep, I am trying to keep all the modules as separate as possible, so it should be fairly easy for you to use some of the database management stuff without using the world server system. If there is anything specifically you are wanting to use or not use, let me know, just so I can make sure it is separate.
you think exactly like me
i am working on a game and it is modular from ground up. everything can be switched on/off/replaced easily. now that you told me this, i trust it will be a beautiful asset, and if i can do anything to help you finish faster, just tell me. and when it is ready, i will be one of the first buyers.
actually what really interests me is the mostly non UE4 part, the login server / login process, loading the character data from the database, the instance launcher, the moving of the player between maps, to report the playerās positions and maps for guild or group to see them on the map, things that are persistent enough to not be stored on the level server process.
basically what is already included in the video. if you sell that bare boned as it is in the demo vid, drop me a pm , if not i will wait for a more complete solution. thanks for the answer, good luck!
Modular design offers the most flexible development methodology in my opinion. Working with assets from the Marketplace sort of forces the modular design. This has inspired me to develop individual subsystem applications firstly, individual game mechanics using the concept of Mutators, integrating them into multiple game products. My goal is to build 4 Game simultaneously, swapping audio/visuals theme, and deactivating applications and mutators as needed. All in all, I find myself subconsciously building a Drag n Drop game development system with UE4.