Turn Speed: Difference between revisions

From LEGO Island Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
One of the biggest issues with playing Lego Island on a modern computer is its turn speed.
[[LEGO Island]]'s [[Turn Speed]] is one of its biggest issues regarding playability on modern computers.


Lego Island infamously ties its turn speed to its running frame rate, which means the faster the game is running, the faster the turn speed will be. The computers of the era would render Lego Island at approximately ~10 FPS, but modern systems have no trouble and will happily run at the game's fixed limit of 90 FPS. This causes turning to be 8-10x faster than intended and makes maneuvering often unwieldy or even unplayable.
== Background ==


This is even a known issue according to the developers, only discovered once higher powered computers were tested at the end of Lego Island's development <ref>[http://archive.is/aLwQn Information From The Lead Programmer of LEGO Island]</ref>. A fix was even written, but never released as either a [[Lego Island Versions|retail update]] or as a downloadable patch.
Despite LEGO Island's maximum frame rate of ~91 FPS, at the time of its development, most computers could only reach fairly low frame rates while playing it (often around 10-20 FPS). Due to the relative unpredictability of user hardware, the game automatically adjusts the walking speed based on how long each frame takes to render, effectively keeping movement at a consistent speed regardless of the frame rate. However, due to a code oversight, this adjustment is not made to the turning speed, which infamously makes the player turn faster/slower depending on how high/low the frame rate is. Beyond ~30 FPS, the turn speed starts to becomes too fast to control accurately, and as computer performance has continued to increase, the game has become progressively harder to control. Nowadays, all modern computers can play LEGO Island at its maximum frame rate, significantly faster than computers of the era, and as such, significantly harder to control.


== Technical Details ==
== Oversight ==


Internally, turn speed is a 32-bit float with a range of -20.0f to 20.0f (-20.0f being left, 0.0f being no turning, and 20.0f being right). Lego Island's mouse control (clicking and dragging on the screen) will utilize the full extent of this range (far left side being -20.0f, far right side being 20.0f, and a float range in between), but keyboard controls push all the way to each extreme, i.e. as fast as the speed was designed to go.
According to the game code, walking uses a "velocity" system so that players gradually accelerate to a target speed (maximum speed if using keyboard controls) and decelerate to a stop when controls are released. This system had "delta time" adjustment - adjusting by the time each frame took to render - built into it. It appears developers had initially intended to use this system with turning as well (i.e. turning would gradually accelerate/decelerate) but at some point chose to disable it and instead set the turn speed directly to the target speed with no acceleration/deceleration.
 
While not using velocity for turning makes a lot of sense (turning that accelerated/decelerated likely would have been unwieldy to play), they neglected to write any delta time adjustment into the new approach, locking the turn speed to the frame rate in the final release of the game.
 
== Response From Developers ==
 
An interview with lead programmer Dennis Goodrow reveals that this was a known issue that the developers had discovered shortly after release, once they were able to test on a computer fast enough to reveal the bug. The developers wrote a fix but it was never released since the discs had already shipped and [[Mindscape]] never made any attempt to publish it.<ref>[http://archive.is/aLwQn Information From The Lead Programmer of LEGO Island]</ref>


== Solutions ==
== Solutions ==


This 20.0f value is hardcoded as the maximum turn speed into LEGO1.DLL. The [[Lego Island Mod Tool]] directly edits this float value to whatever the user specifies (it can even increase the turn speed, however this is naturally not recommended).
This bug can be patched with [[LEGO Island Rebuilder]] through a number of different approaches:


Unfortunately, Lego Island seems to use the same routines for all player movement, so this modification also affects movement speed. It is currently unknown whether this affects the ability to win races, but it's safe to assume it does (unless the AI movement is also passed through the same multiplier). Currently there are plans to separate movement speed from turning speed, but no research has been done in this area as of yet.
* '''Unhooking the turn speed''': Rebuilder contains a patch that implements delta time adjustment into the turning to fully address the issue (most likely what the unreleased official patch would have been)
* '''Reducing the frame rate''': Rebuilder can simply limit the frame rate for an "authentic" experience similar to computers of the era.
* '''Reducing the maximum turning speed''': Rebuilder can modify the maximum turning speed. This used to be the main solution to this issue but has been superceded by the unhooking patch. It can still be used in tandem with unhooking to adjust the speed to the user's liking.


== References ==
== References ==
<references />
<references />

Latest revision as of 10:37, 9 March 2020

LEGO Island's Turn Speed is one of its biggest issues regarding playability on modern computers.

Background

Despite LEGO Island's maximum frame rate of ~91 FPS, at the time of its development, most computers could only reach fairly low frame rates while playing it (often around 10-20 FPS). Due to the relative unpredictability of user hardware, the game automatically adjusts the walking speed based on how long each frame takes to render, effectively keeping movement at a consistent speed regardless of the frame rate. However, due to a code oversight, this adjustment is not made to the turning speed, which infamously makes the player turn faster/slower depending on how high/low the frame rate is. Beyond ~30 FPS, the turn speed starts to becomes too fast to control accurately, and as computer performance has continued to increase, the game has become progressively harder to control. Nowadays, all modern computers can play LEGO Island at its maximum frame rate, significantly faster than computers of the era, and as such, significantly harder to control.

Oversight

According to the game code, walking uses a "velocity" system so that players gradually accelerate to a target speed (maximum speed if using keyboard controls) and decelerate to a stop when controls are released. This system had "delta time" adjustment - adjusting by the time each frame took to render - built into it. It appears developers had initially intended to use this system with turning as well (i.e. turning would gradually accelerate/decelerate) but at some point chose to disable it and instead set the turn speed directly to the target speed with no acceleration/deceleration.

While not using velocity for turning makes a lot of sense (turning that accelerated/decelerated likely would have been unwieldy to play), they neglected to write any delta time adjustment into the new approach, locking the turn speed to the frame rate in the final release of the game.

Response From Developers

An interview with lead programmer Dennis Goodrow reveals that this was a known issue that the developers had discovered shortly after release, once they were able to test on a computer fast enough to reveal the bug. The developers wrote a fix but it was never released since the discs had already shipped and Mindscape never made any attempt to publish it.[1]

Solutions

This bug can be patched with LEGO Island Rebuilder through a number of different approaches:

  • Unhooking the turn speed: Rebuilder contains a patch that implements delta time adjustment into the turning to fully address the issue (most likely what the unreleased official patch would have been)
  • Reducing the frame rate: Rebuilder can simply limit the frame rate for an "authentic" experience similar to computers of the era.
  • Reducing the maximum turning speed: Rebuilder can modify the maximum turning speed. This used to be the main solution to this issue but has been superceded by the unhooking patch. It can still be used in tandem with unhooking to adjust the speed to the user's liking.

References