Okay I may over ask, and or be trying to over think this.
I have taken much time to learn Blueprints as well as Cpp for Unreal. Reached capability to feel confident enough to create almost anything within reason and manage organization of these things.
I am mostly looking for tips on how I should structure the game to make minimal effort to transfer a game to multiplayer. I understand replication and passing from server.
(just looking for tips)
I create a makeshift Login system with no connection, but simply store the password/account info in an Array though Savegame style, would a later implementation of an API web-based Login system be easy to transition over? Am I’m asking something that really would only be based on the structure of the code? If so, any tips on establishing a good way to simplify the transition later down the line. My CPP and BP knowledge is based on Unreal only so going outside of using Unreal. This meaning creating an API or anything of the sort would not be in bounds for me. Alternatively, would it be better to prep in a Json wrap type. I know it’s not much information to pass, so I am in belief that a makeshift array SaveGame style is okay and will be easy to transition. Please Correct me … this is what I’m looking to figure out mostly.
Storing stats and the like On Character Classes. Is this, okay? My General conceptual idea is to create a component type. Attach and keep the stats on this. Then verify with server if it is okay.
Where should the stored checks be saved as in. A character logs in and has 100HP out of 1000 from its last login. GameMode? What measures would be necessary to prevent a hacker coming in and saying they have 1000HP on login instead. I am only looking for tips. However, you are more than welcome to give me an entire explanation.
My goal is to have a Dedicated server. I am looking for basic tips on what to do to continue the design, and ultimately NOT shoot myself in the foot. When I want to implement a multiplayer system, is this possible to do and ANY basic knowledge I should consider while doing this.
One thing to add. I THINK what im ultimately struggling with is Communicating outside of unreal … VS to Unreal ezpz BPs already in Unreal… is it a bad idea to develop the system to store stats and stuff within the development and NOT a database… but ONLY work with low number of assets …
ex. Character appearance is saved to SaveGame instead of Database… and the savegame slot is the character identifier
ex a different slot is the the account information … which then populates the character appearance then the Character name is the slot to the first example… (this is what ive done)
is this bad implementation for preperation of a database network system later?
I struggle hard because i do not want to spend a ton of time on doing something pointless … I also struggle because i want it to work in a manner that it should work and have halted production because… it just feels ikky to not have a good understanding of the communication between the DB and Networking…
i feel like a cave man when it comes to communicating outside of unreal… but within doing Cpp or BP its easy… then it makes me believe i already know the answer use plugins and just do that LOL… but then i want to come back to networking later and try to do it myself … but dont want to learn that part yet … Thanks Guys when you can please help …
Error handling is the most important part here. What happens if the user has no internet connection? What if the login callback never gets called? What needs to happen before Login is ready to attempt? What can’t happen before being successfully logged in? What are the cases that needs actions from the user like accept Terms of Service or Privacy Policy Agreement. What if the user is banned? What if the game needs an update? etc.
Stats is a broad term and is up to you to decide where to store it.
Clients are never trustworthy which is why only the dedicated server should be the one submitting and requesting users competitive information directly from the backend service. When using Listen-servers your only option is to setup some hidden rules that verify the information to catch cheaters.
Dedicated Servers often run on Linux since it is cheaper but you need to ensure your code works and all the plugins that are needed on the server support Linux. Hosting servers is not cheap either so optimizing the CPU, RAM and Upload usage might become important.
Even with a solution outside unreal to keep everything in sync you might need to cache the frequent updating things locally anyway to avoid making too many API requests. Secondly it might be necessary to bundle things together in one API requests. Whatever system you make it should be open for these types of tweaks later on.
Yeah that all makes since. I guess i still am not sure what im trying to figure out lol.
I think i already know how to do it … im just overthinking …
My main concern is not working backwards… I THINK using playfabs is great start and sqlite… i started looking that up… but then im curious how i would create dedicated with this … even if dedicated is only my home pc for testing… do these even correspond? (Playfabs and Dedicated to my own PC)
Im sorry but does this make since…
Use Playfabs to have the concept of Login being applied - if yes Open a level?
Make Dedication based on UnrealDocumentation on my own PC. Level Open from here
SQlite Character information - Allow only Client to recieve information. - this is my confusing part- Store the Database on dedicated… then Client asks for it from the pretend not at dedicated server… but really is… i think LOL…
Should be possible to setup a Dedicated server locally that still works with PlayFab or any other Service since this is crucial for development iteration. Checkout the documentation.
Normally there is a Client API and a Server API so the Clients can also read and write directly to PlayFab except when it is information that could be cheated with.