Looking for a value fine-tuning tool - Lemmy.world
I have this idea for a certain game development tool, but before I start another
side project I want to check if something similar already exists. An important
part of game development is fine-tuning numeric values. You have some numbers
that govern things like character motion, weapon impact, enemy AI, or any other
game mechanic. For most of these there is no “correct” value that can be
calculated (or even verified!) with some algorithm - you have to manually try
different values and converge to something that “feels right”. The most naive
way to fine-tune these numbers is to have them as hard-coded values, tweak them
in code, and re-run the game every time you change them. This, of course, is a
tedious process - especially if you have to go through long build times, game
loading, and/or gameplay to reach a state where you can test these values (that
last hurdle can often be skipped by programming in a special entry point, but
that too can get tedious) A better way would be to write these numbers in
configuration file(s) which the game can hot-reload - at least while in
development mode. That way you can just edit the file and save it, and the game
will reload the new values. This is a huge improvement because it skips the
building/loading/preparing which can drastically shorten the cycles - but it’s
still not perfect because you have to constantly switch between the game and the
configuration file. Sometimes you can use the game engine editor to tweak these
while the game is running, or create your own UI. This makes the context
switches hurt less, and also lets you use sliders instead of editing textual
numbers, but it’s still not perfect - you still have to switch back and forth
between the game controls and the tweaking interface. Which brings us to my
idea. What I envision is a local fine-tuning server. The server will either
update configuration files which the game will hot-reload, or the game could
connect to it via WebSocket (or some other IPC. But I like WebSocket) so that
the server could push the new values to it as they get updated. After the server
deduces the structure of the configuration (or read it from a schema - but
providing a schema may usually be a overkill) you could use its webapp UI to
configure how the values would be tweaked. We usually want sliders, so you’ll
need to provide a range - even if the exact value is hard to determine, it’s
usually fairly easy to come up with a rough range that the value must be in (how
high can a human jump? More than 5cm, less than 5m). You will also decide for
each slider if it’s linear or logarithmic. The server, of course, will save all
that configuration so that you won’t have t reconfigure it the next time you
want to tweak values (unless there are new values, in which case you’ll only
have to configure the sliders for them) Since this would be a server, the
tweaking of the values could be done from another device - preferably something
with a touchscreen, like a smartphone or a tablet, because tweaking many sliders
is easier with a touchscreen. So you have the game running on your PC/console,
gamepad in hand (or keyboard+mouse, if that’s your thing), and as you play you
tweak the sliders on the touchscreen until you get them just right. Does anyone
know if a similar tool already exists?