Determinism


#1

In its current state, battles are quite random: if you fight twice on the same battlefield, with the same forces and the same orders, you get two different battles. That’s fine and how it should be. However, what is rather sad, is there’s no way to have the very same battle (same moves, same length, same actions…) twice (well, it’s possible…just as it’s possible to shuffle a deck of cards and have the cards sort themselves back in order). So I would love to have battles to unfold in a deterministic way, so that it is possible to, basically, replay a battle.
So, technically, every time the player would run a battle, a seed would be generated and fed into just every rand() call along with whatever cliff is using atm (time I guess, though it would have to be changed too…say, time into the battle rather than plain time). Every battle would be tied to a different seed obviously, pseudo-randomly generated, but the player would be allowed to input a custom seed so he could reproduce whichever battle he wanted, as long as everything remains the same (ships, ships modules, orders, placement…everything, which you can save in a deployment file).
So, what are the implications? Simple, that would allow you to actually watch a battle that happened on someone else’s computer. You got it, challenges. You wouldn’t just get the battle result, but could watch the battle (as long of course as you input the same seed as your opponent did and can use his deployment).

I’m not sure how heavy it would be for Cliff to alter GSB for these changes, I would think not that hard, but without seeing cliff’s code obviously, who knows? At least the idea is there if there ever is a GSB2.


#2

I’ll say this just because it’s obvious, and then I’ll pick it apart so no one else has to: a “recording” of the battle would serve as well, sort of an .avi kind of thing.

The issues with it:

File size: Ye gods, but avi files can get frelling huge. And that seems to run counter to GSB’s generally text-based files et al.

Interactivity: It is a major amount of work to twiddle an avi type of file to allow you to zoom in, speed up, slow down etc. Most of the ones I’ve seen can be sized to your screen. That’s about the limit of it.

And I’m sure that folks can come up with more, but I think those two alone make it ewwww. So yeah, perhaps a “seed” text file that the game can render into a complete battle using the normal interface. A good thought.


#3

As you said, an AVI can get huge. A seed in the form of a simple number is rather easy to share :wink:
This isn’t a recording system, it’s just having the game play the same whenever you enter the same seed as before.


#4

It’s been stated that there’s some framerate or speed dependencies in the simulation somewhere.


#5

There’s something like this for Tribes 2, were it can replay battles that you record in-game.

I have 2 recordings on 2 different mods, neither of which I have downloaded, and they both play fine, as if I had the mod installed and the other players were playing the game now, right down to voice binds and chat. The beautiful thing about these recordings is that for my 2 20 - 30 minute long recordings, they each take up about 1.5 megs.

Im not sure how that could be put into GSB, but it would be a nice feature, and it would be lightweight. My 2 cents


#6

A replay feature where all events of a battle are recorded, in order to replay this later sounds like a very good idea.
You just have to track where all ships are going, who they’re shooting at (and with what) and whether it hits or not (and what it hits).
Just that shouldn’t be too much data (per time-unit):
Per ship:

  • position
  • orientation
  • speed
  • acceleration
    Per weapon discharged (which is per ship):
  • weapon type
  • target
  • what it’s going to hit

The rest can probably be derived from just that.


#7

I don’t think this is true, I had played the same battles with exactly the same setup, and just a few times the loss shifted by just a couple of percentages.


#8

Could you specify what you are referring to with ‘this’ (not being true)?

Another example: All battles where ECM is involved can take dramatic twists depending on the successrate of ECM on either side.


#9

If the game was deterministic, you’d get the exact same result, not even a slight shift or anything, as long as the setting (ships, equiement, orders, ennemies) is the same.
It isn’t, and this is linked, from what someone said, to some of the battle logic being tied with framerate.


#10

Yea, a few posts up.

Stop fussing about that, this thread is about having a replay-feature that allows you to replay the same match exactly as it went down before (when you saved the replay).
It is not about whether or not a battle is deterministic, because it clearly isn’t.


#11

From what I’ve been reading, yes and no. This thread is not about whether the battles in GSB are deterministic. As you say, we have established that they are not. This thread is about getting a deterministic output for the purposes of replaying.