This whole thing could be a nice task for a bachelor thesis for computer science/gaming related degree... If ES would approach a professor of a university with such areas , im sure they could find some applicants.
Imperial Good wrote: ↑Wed, 2. Dec 20, 08:43
I suspect you are vastly underestimating the number of variables needed for a vaguely accurate low attention simulation. Below is a list of the variables the AI would need to factor in (be fed) for just a single ship.
>LIST<
Now this is just per ship. For the simulation to be accurate it would need to factor in possibly dozens of ships at the same time to accommodate for how they interact with each other.
First of all in OOS movement/rotation and their derivatives can be decoupled from the actual damage simulation. You can give the appearance OOS that a small ship is flying around a larger one during combat when you look at the map. But that doesnt mean damage calculation needs to fit this visual representation - or that the actual ship movement is simulated like it is IS. You can in fact ignore it in a lot of prime cases (such as dogfights).
Facing of the target is irrelevant for dogfights at large time scale, because it changes so fast that its no longer relevant OOS. It only matters if the target is engaged in a dogfight or not. In the later case it will travel in a straight line 95% of the time. Could change if AI is someday overhauled to perform space ballet, or actively tries not to get hit at far range - but i dont see that happening.
Range to target is relevant, yes. Doesnt matter what the coordinates of the vector are, because there is no gravity / bullet drop to consider. And most stuff in X4 plays out on a 2D plane anyway... (unfortunate for variety, fortunate for system simplifications).
turret rotations speed, bullet speed and max range is the only thing you need for weapons. You just need to find out hit propability and "time you have for shooting at the enemy". Yes you need to know what turrets are on the ship, but that is not a parameter how likely it is "to hit".
Facing of the ship only is relevant for if it can deal damage or not - and only relevant for capitals, because they turn slowly. If turrets are supposed to shoot where they facing, then this can too be simplified to 6 directions (forward, right, up, etc) - where 2 (up, down) are in most cases ignorable, since almost everything plays in 2D plane. If OOS for a capital and range to target is high, one can also just assume that the capital ship chooses a favorable facing, where at least 1 usefull direction with amount of turrets is effective. And if OOS and capital, but fighter target dogfighting the capital, one can assume that only one direction or 2 can fire, pick the side randomly, and then each turret of that side is allowed to roll for damage... (unless it already rolled for another target in one "OOS firecycle").
A detailed ship shape other than general dimensions (average surface area) would be ridiculous to include in low detail simulation.
Pilot faction ? lol... since when do certain races hit better? The NN isnt supposed to tell what the ship should do either. The NN is just the formula for hit chance and practical DPS.
The logic can then be adjusted until most of the test cases have results which are fairly close to the very high attention results.
I dont understand why you reject NN as too complicated/ too many parameters but handwave "create some logic, and then adjust it" around just like that. "Just perform a bit of magic, create a formula for life, the universe and everything and then you get the result" is what you are saying there. To find the connections between the different parameters manually, and cover every edge case will be near impossible, if you apply the same criteria that you stated for the NN.
You can perform some abstractions and general statements, for example that hit propability is a function bullet travel time + range + evasive potential of the target + targetsize + projectile hitbox + flight behaviour state (dogfighting or flying in a straight line). You know that the more time it takes, the more time the enemy has to accidentally perform some maneuver that throws off your aim (because AI are not actively trying to evade shots... at least for now). But thats about it - start guessing. For a NN you can use this relation to structure it / give initial guesses with this information.
But apart from that, good luck guessing a formula that "just works" for all test cases - even if you have all the raw data you could think off. No matter what you guess, it wont fit all. The behaviour you want to simulate wont do you the favor of behaving linearly...
If i had time and access to source code i would love to have a gander...