Download

Where to save very much variables (over 200 skills) for MyCharacter to use?

Hi

What is the best way to save over 200 Variables (Skills; like Swordmanship, One Handed, Blocking, Blacksmith and more) for use in “MyCharacter” (also the PlayerCharacter = Player).

This is for Multiplayer and need to work as deticated Server!
All Informations (MyCharacter, Skills and more), need to be saved on the Server!

I am working on a Fantasy Online RPG (like a MMORPG) and now, i need to add multiple Skills to the Character and the world, to work with them.

Example:
If i add a variable “Swordmanship” (a skills to improve the damage with Swords, depend on how high the skill is), i need 1x Base Variable, 1x Max Variable and 1x Variable to increase the damage with Swords from my Swordmanship-Skill.

Its also need 3 variables (or more) to include only that one Skills, and i have very much of them!

… Macefight, Axefight, TwoHanded, OneHanded etc. …

How can i add this big ammount of Variables to MyCharacter to avoid to add them direct to MyCharacter?
If i add more Variables to MyCharacter, the compile time is going to explode (actually 6 seconds). I dont want to raise the time for that.

Is the best way to keep all Variables in a “DataBase” or a “Struct” or in my PlayerController?

Every Character (Player) can have different Skills (Variables).

Example:

A Fighter-Class Player can have Swordmanship (Max-Skill) on 50%.
A Warrior-Class, can have Swordmanship (Max 75%).

But this is not a game with fixed stats and classes, the classes are only a simple-focus on the way you are.

Hope you can understand what i am talking about and thanks for helps :slight_smile:

PS: VERY IMPORTANT!!!

Every Variable (from Skill list) need to be modify in the running-game.
Also a Game Master can set direct in the game, the ammount of “SwordmanShip” at Player 1 from 1 to whatever.
At the same way the GM can set the Skills on Player 2 and 3 and all other players.

Also i need a easy function to read all Skills from the Player and modify it in the game.

AND, how do i save all this Infos to the Server AND the Server gives the Player the right Skills (Owning skills)?

You could simply store a list of “Skill” structs that have two fields, the name (or some ID) of the skill and the skill level (a float). Or maybe store them in a map where the name of the skill is the key.

Thanks for Info.

I allready use a Struct for me Items (Weapons, Armors, Food, Materials to craft etc.) and its not easy to handle it.
The longer the Struct, the more you need to connect and more… its sometimes run messy.

Whats about of a “Datatable” (but is only read?), actually i have testet some Variables in the PlayerController and it works very good!
How can i save it to the “SaveGame” for Multiplayer with a Dedicated Server?

Thats why i am asking for, a good and easy way to Save them all. Hope you can give me some infos about that!
Have allready watched some SaveGame Tutorials, but they are only for non multiplayer games (like the SaveGame Training vom Unreal Engine).

I’m sure data tables are read only

The ‘SaveGame’ system by default exposes all functions to your Clients when you package…
Also it isn’t scalable when you have players pop in and out of Game World, so it isn’t useful for this kind of server architecture.

To solve this problem in a way that can be scaled and core functions be stripped out of game.exe when packaged in Client mode, I built this system for a on-going project:
https://www.youtube.com/watch?v=Py4kqPyXnco&t=127s

It is sitting on some EpicGames lawyer’s desk since last GDC because it is dependent on SQLite and they don’t know yet if can be published or not :slight_smile:

Dedicated Server reads data from the Database, then applies read data to authority Actor / Component / Object…
Replicated properties will automatically propagate to owner Client.
Server can use custom OnRep functions to broadcast property changes to all non owner Clients relevant to the area.

The Quality of the Video is very bad and i cant see anything!

If i put all the Variables to MyCharacter, and i save this to the Player that is owning it. I cant save “just” the MyCharacter for the Player to the SaveGame and identify it on its Player ID to wrote and read?

Need to understand the Logic about that system to know, how i can add this function to my project.
Dont know if this works, but all variables to MyCharacter and just safe the MyCharacter to a Database can be possible?

My problem is, every player can have different possible functions to each other. Also its not a fixed “Player-Class” (Fighter, Warrior, Mage etc.) its more a open system, like from Eve Online.
In Eve Online you can learn all skills and this is more what i am going to, instead of limit all functions for each player by its Class or something else.

Sorry my english is not so well, hope you can understand what way i am going to do!

What I was saying is " I wrote roughly 5000 ~ 6000 lines of C++ code to make that work properly…"
So what you wish to do may quickly become very complex depending on how deep you’re willing to dive in.

If you’re trying to “make a MMO”, well, good luck with that ^^

There is no way to use this in Blueprint?
Why so much lines? :slight_smile:

Have allready added very much features and functions to the game and they are all working very well in Multiplayer (just in Editor with dedicated Server), so i need to know how to save this infos to the Server.
A real Server actually dont exist, also i need a way to save this local to the simulated dedicated Server to wrote and read its function for each Player (MyCharacter).

Do you know a good tutorial video for SaveGame WITH a dedicated Server?