We had quite an interesting solution in my team. All the balancing data (abilities params, speeds, etc) was stored as JSON on a separate web server, and it was downloaded and parsed every time a game started. We could tune this params in realtime, and didn't need to recompile the deployed game with new params, just restart the match. Also it helped us maintain multiple presets of game params and switch between them during tests easily. There was only a problem with versioning data, because we didn't store it in VCS, but currently I think that the best option is storing a JSON in repository, load it to some external server on startup/deploy and then read the data from the network, still with option to edit it online
@v1vendi2 жыл бұрын
Also for editing JSON we made quite a simple tool, that generates HTML form for any JSON on the fly. No validation, but it took around 2-3 days to develop and quite easy to maintain and extend
@ThePseudologos2 жыл бұрын
@@v1vendi Sounds very useful. Would be very interested to hear how you get the data back into unreal properties. a) How do you identify the target of the data (e.g. abilities are UObjects so how would that work) b) How do you set individual properties or do you invert the process everything knows how to read its properties and on startup parses the JSON?
@v1vendi2 жыл бұрын
@@ThePseudologos so basically, there's one huge USTRUCT, and a subsystem, that stores current selected preset id (default is stored in .ini), and requests one large JSON from web server on game server startup. This JSON gets parsed with FJsonObjectConverter::JsonObjectStringToUStruct and stored in subsystem property Every ability, or any other configurable thing (character speed, jump height, weapon fire rate) gets a property directly from subsystem in blueprints or in cpp: MyConfigSybsystem->GetCurrentPreset()->AbilityParams->MyAwesomeAbility->BananasPerSecond On testing clients there's also a trivial UI dropdown where you can switch selected preset (rpc to server), and server calls an event that notifies abilities and other actors about config change. Change can be even done realtime without match restart, but more cleanup and update logic is too much overhead for a testing feature, so we just restart the match
@sebastianavena Жыл бұрын
Thanks for sharing this, I'm taking the same approach and it's nice to have an actual experience from people that did the same :)
@kalleskit2 жыл бұрын
You've earned yourself a subscriber. Tack!
@GarethNN Жыл бұрын
Really great discussion, super informative! Do the other folks who took part have channels I could follow?