Jump to content

Full Game Replay?


Recommended Posts

Originally posted by Sergei:

Err...

Are you implying I did not read that part? I did, and thus called Shenanigans (a South Park Reference meant to convey that I don't believe the explanation is 100% accurate while also implying that I am not taking it too seriously).

What I am saying is if they can make this game a multiplayer game...they can save it off. There is no more simple way to say it. Ok I will try

A) If you have the ability to let two different machines play this game in a way that you feel is fair to both players, then you must have a way for both machines to be able to stay synch'ed up.

B) If A is true you must have a way to store it to disk as any other method of transferring the data to the other machine is many times SLOWER than a hard drive. So if streaming to the hard drive is slow, god help them if they want to transfer it to the internet.

Heck there is not even a C to this argument.

The only complaint can be that the files are huge, but heck you can just let the user use a zip program to tighten them up.

[Edit]

OOps finished before I wanted to.

Like I said in my original post I'm sure they could be done it, but it would have added perhaps a month or two to the project. They mention it too in the last part of the msg where they said maybe they will look into this. later but they did not have time.

I'm a bit bummed because way back when they started this that was one of the things they said they would add to the new engine.

I had assumed it was in there. Bummer. I guess people will be force to use FRAPS to show off the game to friends.

[ July 19, 2007, 04:15 PM: Message edited by: MHertogh ]

Link to comment
Share on other sites

What is theoretically possible is often not practical. In theory we could probably make something that would work and allow continual playback of at least turn based games (that's pretty certainly doable) and possibly real time games (questionable). But who wants to delay the game by 2 months to figure out if it is possible to do or not? That's the problem with this crap... we don't have a government grant to explore the possibilities. We have to produce something and get it to market before we go out of business or someone beats us to it. It's a great feature to have, but we aren't going to risk so much on something like this. I doubt you would if you were in our shoes either. Or you might, but you'd only do it once :D

Steve

Link to comment
Share on other sites

Originally posted by Battlefront.com:

There is no full game replay for RealTime or WeGo. There are two reasons for this. The first is that in RT the hit to the disk to track would hit the framerate too much so we didn't even try it. The second reason, and this applies to both, is the size of the data that needs to be stored. We estimated that a single game "replay" could be several hundred MB in size. The problem with this, from our end, is how to stream that much data smoothly. Someday we hope to dedicate the time to figuring it out, but with all the other things we had to do for CM:SF... we just didn't have the time to play around with it.

Company of Heroes, RTS, fully 3D, deformable terrain, awesome physics engine, does have a "save as replay" function. Basically any battle you play (AFAIK) you are given the option to save the replay at the AAR screen.

I wonder what it is about that game that makes it different to CM:SF in that sense.

Lt Bull

Link to comment
Share on other sites

Originally posted by Battlefront.com:

We have to produce something and get it to market before we go out of business or someone beats us to it. It's a great feature to have, but we aren't going to risk so much on something like this. I doubt you would if you were in our shoes either. Or you might, but you'd only do it once :D

Steve

Like I said before I agree that it would have taken 1-2 extra months. And I said I was bummed it was not in, but I still pre-ordered, and I don't regret it over just full replay.

I worked for a small game developer myself (I was lead prog on the entire line of Starfleet Command games). And we had to cut features left and right to get the product out the door. I just disagreed with the initial explaination of why. Just like other folks here catch each other on points of historical accuracy, I can't stand to hear stuff like pseudo random numbers are hard to mimic on two machines.

Ok I guess too much typing has been wasted on this subject... Just wating for the 26th... smile.gif

Link to comment
Share on other sites

Ugh...I promised not to start a debate but I guess it's too late now.

It's not against BFC or something, especially because Steve understood me first and provided an explanation why they didn't go that way.

To others: it's a widely (or at least much) used technology, and simpler than you think. You don't need no stinking registers, threads, concurrency etc. It just uses the inherent determinism of computers, and has nothing to do with realtime.

You are probably concerned that a frame sequence captured on a computer will never play back on another computer with the same exact timing. It's not a problem, the user's brain will integrate the small changes.

Actually it's a feature in the replay viewer that you can watch the replay quicker than realtime, as fast as your CPU can process it.

The sad news this is not gonna take 2 months, this cant be just retrofitted, your whole simulation engine must be deterministic.

Link to comment
Share on other sites

@MHertough

I cry Shinanigins!

If you have multiplayer WeGo you just need to stich together all of the turns. Or are you saying E-mail WeGo does not work either.

That's not enough, if the game engine is not built up deterministic.

Think of any input data, i.e. move object X to location Y. This means only a quite small amount of data is needed to transport, but the game engine does not need to react deterministic to it. What if the command and control system "layer" introduces some kind of nondeterministic delay (i.e. random, fuzzy logic), before the movement starts and is calcultated?

Two identical inputs will deliver different results.

And what do we know about the physics engine? Is it built up deterministic or does it model the certain inconsistencies in surface with nondeterministic processes? What about a ricochet: is the reflection angle always identical to the entry angle or is some kind of "randomness" introduced?

Or the penetration algo.

One great thing in CM always was the unpredictable but realistical results.

So i think we should believe Steve :D , if he says, that the only solution they found was a too high stress on certain hardware parts.

Things will develop and maybe in a few months computer power and great sales numbers will make them rethink their position and integrate it? Who knows.

@Kineas

The sad news this is not gonna take 2 months, this cant be just retrofitted, your whole simulation engine must be deterministic.
Exactly. That's the point.

[ July 20, 2007, 01:26 AM: Message edited by: Steiner14 ]

Link to comment
Share on other sites

@Steiner

you don't get it, sorry. Steve gave a different reason too.

You can have all the randomness you want, provided you can replay it every time. You just need to store the random generator seed.

In the second game you will have different ricochets etc.

Link to comment
Share on other sites

Originally posted by Kineas:

@Steiner

you don't get it, sorry. Steve gave a different reason too.

No, Steve gave the answer what is necessary because the game-engine is not deterministic: the whole data-stream about the action in the field has to be recorded for reproducable results.

You can have all the randomness you want, provided you can replay it every time. You just need to store the random generator seed.

If the calculations are nondeterministic, it is not sufficient to store the seed, you need to store the result too and inject the result into the engine as if the result was calculated online.
Link to comment
Share on other sites

Originally posted by Lt Bull:

Company of Heroes, RTS, fully 3D, deformable terrain, awesome physics engine, does have a "save as replay" function. Basically any battle you play (AFAIK) you are given the option to save the replay at the AAR screen.

I wonder what it is about that game that makes it different to CM:SF in that sense.

Lt Bull

Millions of dollars and a considerably larger production team might be a factor. And in regards to file size, fewer units, fewer calculations, a shorter game time (on average) etc.

[ July 20, 2007, 07:12 AM: Message edited by: Dr. Zoidberg ]

Link to comment
Share on other sites

Steiner, you are wrong.

Your earlier examples (a couple of posts up) are easily saved, you seed the generator and then you can reproduce it, random isn't truly random if generated on a computer. Depending on how they have implemented it and with threads and other stuff it can be a pita to do, but you would never need to save the whole datastream.

You need to ask yourself where that non-determenism would come from.

Link to comment
Share on other sites

Originally posted by Steiner14:

That's not enough, if the game engine is not built up deterministic.

No one would create a non-deterministic random number generator for a game that is supposed to be multi-player. Why would you go through the effort to generate truely random numbers if you need two machines playing the game to have the same results?

If you answer this next question you will find your answer.

If you get two machines to play a game in real time where both are generating truely random results, how can you make sure the same thing happens on both machines?

Link to comment
Share on other sites

It is really very simple, if enough people buy the game to keep Battlefront happily in Business we might get this on a module eventually, especially as hardware keeps improving. There is not a chance in *&^$%#^%# of getting it in the next few months, Battlefront does not have the resources available and the game is pushing many customers machines to the limit already. There is not a whole lot more too it than that. :cool:

Link to comment
Share on other sites

Originally posted by MHertogh:

</font><blockquote>quote:</font><hr />Originally posted by Steiner14:

That's not enough, if the game engine is not built up deterministic. [/qb]

No one would create a non-deterministic random number generator for a game that is supposed to be multi-player.</font>
Link to comment
Share on other sites

Originally posted by Steiner14:

You are assuming things you don't know.

So are you.

Who generates random generators? Did Steve tell you, they didn't use common C++ functions?

No he didn't. Did he tell you? either way it does not matter.

Have you ever let CMx1 calculate a turn two times?

Yes, I think so...it has been a while but I think the answer is yes.

You will recognize the results will be different.

And this is, because the engine is non-deterministic.

Not true. Not even close. Actually that result has no proof at all for either side of the argument. Most games generate a "random" seed at the begining of a sequence. You usually use time as the input. Hence you use a standard Random number generator and use time as a seed and violia you have different results because they where generated at different TIMES. You can also get different results if you use truely random numbers (non deterministic numbers that is). So the example is worthless. You are interpeting an effect that can be caused by many things.

If you get two machines to play a game in real time where both are generating truely random results, how can you make sure the same thing happens on both machines?

You don't need to. It's possible to calculate the outcome on one machine and share the result with the other machines.

And so there is your answer. So if you can share the result with the other machine, you just make that the replay data. If you can share it with another machine in real-time, which according to your answer they do, then the data stream is going to be so small as to be easily streamable to your hard drive as well. Done.

The real reason they did not include replay has already been discovered. Steve said it himself above. It would take more time. They have used a LOT of time making this game as acurate as possible. They have shown in the past that their attention to detail in the simulation itself is their forte.

That detail is what people are paying for, not the replay, so they push all of their efforts into what makes them stand out.

Link to comment
Share on other sites

So the example is worthless. You are interpeting an effect that can be caused by many things.
Don't you understand what the problem is? It doesn't matter how the random-generator is built up, if it's results can't be exactly defined and controlled. If it's determinism lies in a clock-counter or in a complex algorithm doesn't matter. If the coder calls a normal rand()-function he get's a unpredictable return value and that turns it from the important functional point of view into a non-deterministic function!

Even if the result is deterministic in depth, it is from the functional point of view for the coder non-deterministic which forces him not only to work with the input-data, but also with the results of the non-deterministic functions.

I think we can stop the discussion, since it is already clear, that it could not be implemented easily and will not be implemented at least in CMSF no matter, if other programs have it or not.

Link to comment
Share on other sites

Steiner14

I think we can stop the discussion, since it is already clear, that it could not be implemented easily and will not be implemented at least in CMSF no matter, if other programs have it or not.
Of course this is exactly what I've been saying all along :D We tried it once, got burned, and we're not anxious to try it again. CMx2 is even more complex than CMx1, so if we couldn't get the former to work I doubt very much a MORE complex system will be easier.

Steve

Link to comment
Share on other sites

Originally posted by Steiner14:

No, you dont understand. There is no such thing, all known (algorithmic) random-generators are predicatable given their seed, no matter how "complex". So you save your random seed (time or whatever) and share that and you are good to go.

I would love to see such a function that doesnt call external hardware and is fast enough to use for a game. Feel free to point me in the right direction.

What are you gonna use for this? Time difference regarding to timeslices? Small variations in mouse positining? Not very usefull for a game...

Yeah, but it has nothing to do with the random generators...
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...