Page 1 of 1

red disk physics

Posted: Tue Jul 05, 2016 7:12 pm
by Aurora
is it just me or are red disk physics a tiny bit off of what they are in original supaplex? it feels to me like many of the tricks involving red disks (ie using them to climb in a gravity environment) are much harder now which makes trick-heavy levels like level 1 of Supaplex 77 that much more frustrating
edit: apparently this is entirely a speed thing

Re: red disk physics

Posted: Sat Dec 10, 2016 3:26 pm
by Holger
Sorry for answering a bit late:

Apart from game speed, red disk physics are 100% exactly the same as in the original (DOS) Supaplex game, as the program game logic is exactly the same. (The native Supaplex game engine implementation is even a bit more compatible than the old Megaplex, which is also known as a 1:1 compatible Supaplex game engine.)

So it's probably indeed a game speed thing. The original DOS version of Supaplex was intended to run at 35 frames per second (fps), but later it usually ran at 70 fps due to faster PCs, which was then fixed by Herman Perl's "SPEEDFIX.EXE" version of Supaplex, which fixed game speed back to the original 35 fps.

In R'n'D, the game usually run's at 50 fps, which can be changed in the setup menu. If you use "Very Slow" mode, it uses a frame delay of 30 ms, which is quite near to the 28.5 ms frame delay which would be required for 35 fps.

Re: red disk physics

Posted: Mon Dec 12, 2016 12:21 am
by filbo
Is there any reason (like uncooperative timer system calls) not to change the "very slow" speed to 28.5ms, exactly matching this game's desire? In fact, possibly, make that change only when running the Supaplex engine?

Re: red disk physics

Posted: Mon Dec 12, 2016 2:50 pm
by Holger
Is there any reason (like uncooperative timer system calls) not to change the "very slow" speed to 28.5ms, exactly matching this game's desire?
Currently the reason is trying to be user friendly with the speed settings -- here's a snippet from the current code:

Code: Select all

#if 1
  {     30,     "Very Slow"                     },
  {     25,     "Slow"                          },
  {     20,     "Normal"                        },
  {     15,     "Fast"                          },
  {     10,     "Very Fast"                     },
#else
  {     1000,   "1/1s (Extremely Slow)"         },
  {     500,    "1/2s"                          },
  {     200,    "1/5s"                          },
  {     100,    "1/10s"                         },
  {     50,     "1/20s"                         },
  {     29,     "1/35s (Original Supaplex)"     },
  {     25,     "1/40s"                         },
  {     20,     "1/50s (Normal Speed)"          },
  {     14,     "1/70s (Maximum Supaplex)"      },
  {     10,     "1/100s"                        },
  {     5,      "1/200s"                        },
  {     2,      "1/500s"                        },
  {     1,      "1/1000s (Extremely Fast)"      },
#endif
Maybe I should add an "expert mode" switch to toggle between the two versions...
In fact, possibly, make that change only when running the Supaplex engine?
Changing the game speed depending on the game engine of the current level has the disadvantage that it would be harder (and/or less transparent to the user) to choose a game speed that differs from the "optimal" game speed (like people who want to play levels at a higher or lower speed, including Supaplex levels).

Another related thing is that it may be desirable to change the default game speed from 50 fps to 60 fps to match current displays. (This may even change again in the future, as displays and graphics cards seem to gain more popularity that allow for display refresh rates other than 50 frames per second.)

On Android and iOS, there's another issue, as it seems that they always use VSYNC by default, making any speed over 60 fps pointless anyway (try it with the Android and/or iOS version). But it should be possible to change this when doing SDL video initialization, so I could add another setup option "use vsync: on/off"...

Re: red disk physics

Posted: Tue Dec 13, 2016 12:41 am
by filbo
I could imagine adding to the current 5 "friendly" speeds, one or two extra speeds on each end with names like "unplayable super [slow|fast] (for testing)"...