- Feb 19, 2012
- 8,144
- 2
The thread title is creeping me out.....
Thanks for the reply! You should try a PS3 controller with your iMac, it's awesome.After some thought on the subject, I may end up waiting until the PC version comes out to continue my videos. While I love my 27in 2560x1440 LED display on my mid 2010 iMac 10.8.3, the controls leave a lot to be desired. I've managed to get the 360 controller working pretty good with a program called "enjoy". The problem is if I'm holding a flipper button, I can't nudge. As you can imagine this has led me to do some strange things to make decent scores. =) The software I'm using to record the videos on OS X is called "Screenflow". It offers a ton of options and fair video quality.
The problem with this is that pinball isn't entirely deterministic. There are (semi-)random rolls in some situations on some tables and that would throw the entire thing off kilter. These things are also almost completely impossible to implement without rebuilding the entire game engine with that in mind.
This is the biggest problem. I tried to implement a replay system for debugging, but the only way to get real valid data was to record every single frame. Too much randomnesss off of some things. Once it gets slightly out of sync, it goes down hill from there. We would have to re-write a good deal of logic.
Also the state of the emulation would have to be stored exactly the same at the start.
Ah, bummer for the PS3 crowd once again..
If you only focus on the playback you could think of storing all relevant data of every object per frame.
For a ball you need the x/y/z coordindates only per frame.
Every drop target only needs to store it's state per frame.
Also every light (on/off) only needs to store it's state per frame.
Every frame you can also store the score-delta.
For the flippers, just store the state it is in, probably an integer per frame.
In an OOP environment this could be easy implemented.
The playback just needs to read back and set the state of all objects per frame.
Optimize it (reduces amount of data) by only storing delta objects. A light that stays on for 200 frames and turns of at frame 201, just record the change at 201.
Think of it like some kind of playback-script telling all objects how to appear.
Not sure if this can be implemented easy on things like the DMD, or the music that's playing.
Also TPA probably has a lot of objects.
Doing the DMD would require much more data storage, and then you also have the sound effects the rom plays.
Are the pseudo random number generators seeded with known values? If so, then reseeding with those known values plus a timestamped log of user intputs (plunges, flips, nudges) should allow the game engine to recreate gameplay.
Some of the table ROMs generate their own random number sequences internally (Twilight Zone does for its Camera awards, for example), and the seed values used for these sequences are not necessarily available to FarSight's code.Random numbers from software is pseudorandomly generated. Know the seed used to initialize the prnd function, and you can generate all the same "random" numbers again.
Just take the ball for example. x,y,z is 12 bytes (x, y and z are all floating point 4 bytes each). Then figure 6 balls per table (so far thats the most on a table we've done. 60 frames per second, 60 seconds in a minute, 60 mins in an hour comes out to 12*6*60*60*60 = 15,552,000. So an hour of gameplay would be 15MB just with the ball data.
Doing the DMD would require much more data storage, and then you also have the sound effects the rom plays. Unless you are emulating the rom and having it go as it's actually playing you would need to store 1000's if not 100s of 1000's of sound calls and timing, for an hour of gameplay.
Though it may beossible to do it, where does the funding come to implement it? How many man-hours would it cost to code and debug, and how do you justify this cost? That's the question (or questions).
Mike mentioned that a replay system would be useful for debugging. I would say anything that might improve the quality level of the product is worth considering.
Esp if it can serve multiple purpose of debugging tool, replay engine, etc.
My programming experience tells me that this would be more trouble than it's worth, but that's for FarSight to decide, not me.
Though it may beossible to do it, where does the funding come to implement it? How many man-hours would it cost to code and debug, and how do you justify this cost? That's the question (or questions).