OpenLRR: Difference between revisions

From Research Realm
No edit summary
No edit summary
 
(11 intermediate revisions by the same user not shown)
Line 2: Line 2:
| title = OpenLRR
| title = OpenLRR
| logo = OpenLRR icon.png
| logo = OpenLRR icon.png
| logo caption =
| logo alt = A round icon with a teal border and the letters O and R. Inside the icon is a drill piercing through rock.
| logo alt = A round icon with a teal border and the letters O and R. Inside the icon is a drill piercing through rock.
| logo size =
| collapsible = <!-- Any text here will collapse the screenshot. -->
| screenshot = OpenLRR top fog route paths and options.png
| screenshot = OpenLRR top fog route paths and options.png
| screenshot alt =  
| screenshot alt = A screenshot of a game running in a window. It has a menu bar with one of the menus opened. The game window shows a 3D grid-based game with LEGO elements in an underground environment. The game world features thick fog and bright lines showing the paths in-game entities are walking along, both elements not normally part of gameplay.
| caption = Screenshot showing the added menus and some gameplay options enabled, including top-down fog and routing paths.
| caption = Screenshot showing the added menus and some gameplay options enabled, including top-down fog and routing paths.
| author =
| developer = trigger-segfault
| developer = trigger-segfault
| released = {{Start date and age|2022|02|18|df=no}}
| released = {{Start date and age|2022|02|18|df=no}}
| latest release version = v0.0.0.7 – Hotfix 1
| latest release version = v0.0.0.7-hotfix1
| latest release date = {{Start date and age|2022|09|28|df=no}}
| latest release date = {{Start date and age|2022|09|28|df=no}}
| latest preview version =
| latest preview date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} -->
| repo = {{URL|https://github.com/trigger-segfault/OpenLRR}}
| repo = {{URL|https://github.com/trigger-segfault/OpenLRR}}
| programming language = [[Wikipedia:C (programming language)|C]], [[Wikipedia:C++|C++]]
| programming language = [[Wikipedia:C (programming language)|C]], [[Wikipedia:C++|C++]]
| engine = Gods98<!-- or |engines= -->
| engine = Gods98
| operating system = [[Wikipedia:Microsoft Windows|Microsoft Windows]]
| operating system = [[Wikipedia:Microsoft Windows|Microsoft Windows]]
| platform = [[Wikipedia:x86|x86]]
| platform = [[Wikipedia:x86|x86]]
| size =
| language = English
| language = English
| language count = <!-- Number only -->
| language footnote =
| genre = [[Wikipedia:Real-time strategy|Real-time strategy game]]
| genre = [[Wikipedia:Real-time strategy|Real-time strategy game]]
| license = [[Wikipedia:GNU General Public License|GPLv3]] (OpenLRR code), [[Wikipedia:MIT License|MIT]] (decompiled code)<ref name="OpenLRR issue 5"/>
| license = [[Wikipedia:GNU General Public License|GPLv3]] (OpenLRR code), [[Wikipedia:MIT License|MIT]] (decompiled code)<ref name="OpenLRR issue 5"/>
Line 30: Line 21:
}}
}}


'''OpenLRR''' is an [[Wikipedia:Open-source software|open-source]] [[Wikipedia:Game engine recreation|re-implementation]] of the 1999 [[Wikipedia:Real-time strategy|real-time strategy]] game [[LEGO Rock Raiders (video game)|''LEGO Rock Raiders'']].
'''OpenLRR''' is an [[Wikipedia:Open-source software|open-source]] [[Wikipedia:Game engine recreation|re-implementation]] and expansion of the 1999 [[Wikipedia:Real-time strategy|real-time strategy]] game [[LEGO Rock Raiders (video game)|''LEGO Rock Raiders'']]. First released in 2022, the program is built on a decompilation of the original game's [[Wikipedia:Executable|executable file]] and uses [[Wikipedia:DLL injection|DLL injection]] to modify functions. The project is still in early development, though it is not currently active. Despite this, OpenLRR already greatly improves gameplay stability, fixes bugs, and adds many new features; using it to play ''LEGO Rock Raiders'' is highly recommended.


==Gameplay==
== Features ==
{{See also|LEGO Rock Raiders (video game)#Gameplay}}
{{See also|LEGO Rock Raiders (video game)#Gameplay}}
As a re-implementation, OpenLRR requires a copy of the original game to already be installed on the computer.
 
As a re-implementation of ''LEGO Rock Raiders'', OpenLRR requires a copy of the original game to already be installed on the computer, and its files must be placed in a working install folder.<ref name="wiki running"/> The gameplay when running OpenLRR is largely unchanged from ''Rock Raiders''; however, OpenLRR fixes numerous crashes, bugs, and issues found in the original game.<ref name="reddit guide"/> Most notably, OpenLRR adds a [[Wikipedia:Menu bar|menu bar]] that allows for toggling numerous functions, including [[Wikipedia:Debug menu|debug]] and [[Wikipedia:Cheating in video games|cheat]] options.<ref name="OpenLRR release 0001"/> Some of its changes include:
 
* Easy menu toggling of options that otherwise would have to be edited in the [[Main Lego Config File]].
* Configurable keybinds, for both normal and debug keys.<ref name="OpenLRR release 0004"/>
* Configurable [[Wikipedia:Logging (computing)|logging]] to a separate console window.
* Adjustable graphics options, such as top-down [[Wikipedia:Distance fog|fog]], [[Wikipedia:Level of detail (computer graphics)|level of detail]], and rendering quality (eg. enabling [[Wikipedia:Wire-frame model|wireframe]] mode).
* Higher-resolution scaling support, allowing the 3D world to be rendered at a higher internal resolution (while using [[Wikipedia:Image scaling|nearest-neighbor scaling]] for the interface).<ref name="OpenLRR release 0006"/>
* [[Wikipedia:Color depth# True color (24-bit)|True color]] support; previously the game was limited to [[Wikipedia:High color|16-bit high color]].<ref name="OpenLRR release 0005"/>
* Increased zooming range in the radar panel.<ref name="OpenLRR release 0006"/>
* Viewable [[Wikipedia:Pathfinding|routing paths]].<ref name="OpenLRR release 0005"/>
* Allowing the player to directly control a selected unit in top-down view, including resources and enemies.<ref name="rru decomp"/>
* Cheat options such as the "Super Tool Store" cheat which allows the [[Tool Store]] to teleport all land vehicles, power other buildings, and train any ability.<ref name="OpenLRR release 0007a"/>


== Development ==
== Development ==
Development of OpenLRR began in 2021 when programmer Robert "trigger-segfault" Jordan started work on a decompilation of ''LEGO Rock Raiders''. Jordan posted a summary of his research into how the game's [[Lego.cfg]] syntax functions on the website Rock Raiders United on June 17, 2021.<ref name="rru syntax"/> He released a [[Wikipedia:Python (programming language)|Python]] patch on June 27 to fix some of the game's audio issues.<ref name="rru patch"/>
[[File:LegoRRMonitor Dig up the rainbow (crop).png|thumb|left|Multi-color crystals]]
Development of OpenLRR began in 2021 as a [[Wikipedia:Decompilation|decompilation]] project by American programmer Robert "trigger-segfault" Jordan, who  wanted to look through the ''LEGO Rock Raiders'' [[Wikipedia:Executable|executable]] [[Wikipedia:Assembly language|assembly]] to figure out how the game's [[Main Lego Config File|config file]] syntax functioned.<ref name="rru syntax"/> Jordan used [[Wikipedia:Ghidra|Ghidra]] to decompile, identify, and label code from the ''LEGO Rock Raiders'' executable. The decompilation focused on the September 27 English version of the game's executable (the "Masterpiece edition") as it was considered to be the most stable and widely-used version of the game.<ref name="wiki decompiling"/>{{efn|The English version of ''LEGO Rock Raiders'' has three known executable versions: a September 25 version, a September 27 version (commonly called the ''Masterpiece'' edition as it was the version used in ''[[LEGO Masterpiece Collection|LEGO Masterpiece]]''-labeled released of the game), and an October 12 version (which includes ''[[Wikipedia:SafeDisc|SafeDisc]]'' protection).}} Jordan started a forum thread to post his initial findings on the website [[Rock Raiders United]] on June 17, 2021.<ref name="rru syntax"/> Over the next few months he continued work on decompiling and identifying all the functions, global variables, symbols, and data types in the assembly. Jordan's work was made easier by the release of the source code for the Gods98 [[Wikipedia:Game engine|game engine]], which ''LEGO Rock Raiders'' uses, after it was discovered on [[DDI Dump|hard drives formerly owned by]] developer [[Data Design Interactive]].<ref name="rru decomp"/>
 
{{external media
| float  = right
| width  = 225px
| video1 = [https://www.youtube.com/watch?v=hA3cIdH8Hgk& OpenLRR Demos with Pre-recorded Input] at YouTube
}}
By September 3, Jordan had organized most of the game's code into a more navigable state. Using [[Wikipedia:DLL injection|DLL injection]], he was able to replace several functions in the game's executable, allowing for new functions such as controlling entities in top-down view, multi-colored crystals, and resource monitoring.<ref name="rru decomp"/> (Prior to this, he had released some assembly patches created in [[Wikipedia:Python (programming language)|Python]], including one to fix a bug with certain sounds not playing.)<ref name="rru patch"/> Jordan planned to eventually build on this concept to create an open-source version of the ''LEGO Rock Raiders'' executable, similar to projects like [[Wikipedia:OpenRCT2|OpenRCT2]] (which Jordan had previously contributed to).<ref name="OpenRCT2"/><ref name="rru decomp"/> A [[Wikipedia:GitHub|GitHub]] repository for the project, now called OpenLRR, was created on September 9, 2021.<ref name="OpenLRR commit initial"/> The first build version of OpenLRR was released on February 18, 2022.<ref name="OpenLRR release 0001"/> A number of update builds were released during August and September 2022.<ref name="OpenLRR release 0002"/><ref name="OpenLRR release 0007b"/> Further edits were made to its code through October 2023, though [[Wikipedia:Visual Studio|Visual Studio 2019]] is required to compile these versions. The project has been on hiatus since then.
 
== Version history ==
[[File:OpenLRR topview Rock Monster controls.gif|thumb|Controlling a selected Rock Monster in Top View]]
[[File:OpenLRR Routing Path example 1.gif|thumb|An example of a routing path]]
[[File:OpenLRR debug tooltip (Rock Raider, Deposit, CarryRubble).png|thumb|Debug tool tip and routing paths]]
 
{| class="wikitable"
|+ Release history of OpenLRR
|-
! Version !! Release date !! Release type and highlights
|-
| 0.0.0.1 || {{date|2022-02-18|MDY}} || ''First Release''<ref name="OpenLRR release 0001"/>
* Menu bar
|-
| 0.0.0.2 || {{date|2022-08-11|MDY}} || ''Random sound cue fix''<ref name="OpenLRR release 0002"/>
|-
| 0.0.0.3 || {{date|2022-08-13|MDY}} || ''Multiple sound trigger and erosion debug tooltip fix''<ref name="OpenLRR release 0003"/>
|-
| 0.0.0.4 || {{date|2022-08-25|MDY}} || ''Configurable keyboard shortcuts and cheats''<ref name="OpenLRR release 0004"/>
* New key shortcuts
* Configurable keybinds
* Logging configuration
|-
| 0.0.0.5 || {{date|2022-09-16|MDY}} || ''True color support and command line options''<ref name="OpenLRR release 0005"/>
* True color support
* Building placement arrow
* Routing paths
* New cheats
* New command-line parameters
|-
| 0.0.0.6 || {{date|2022-09-24|MDY}} || ''Increase 3D and Radar Map resolution when scaling''<ref name="OpenLRR release 0006"/>
* Internal resolution scaling
* Improved vector graphics drawing
* Increased allowed range of radar map zooming
* Debug options to disable 2D drawing modules
* New command-line parameters
|-
| 0.0.0.7 || {{date|2022-09-27|MDY}} || ''Optimisations, cursor clipping, mod support, and more!''<ref name="OpenLRR release 0007a"/>
* Cursor Clipping
* Super Tool Store cheat
* New graphics options
* New command-line parameters
* New key shortcuts
* Improved Lego.cfg error reporting
|}


decompiled ''LEGO Rock Raiders'' using [[Wikipedia:Ghidra|Ghidra]], used the September 27 English version of the [[Wikipedia:.exe|EXE]] (often referred to as the ''Masterpiece'' executable), as it was considered to be the most stable and widely-used version of the game.<ref name="Decompiling"/>{{efn|The English version of ''LEGO Rock Raiders'' has three known executable versions: a September 25 version, a September 27 version (the ''Masterpiece'' edition, called such as it was included in ''[[LEGO Masterpiece Collection|LEGO Masterpiece]]''-labeled released of the game), and an October 12 version (which includes ''[[Wikipedia:SafeDisc|SafeDisc]]'' protection).}}
== See also ==
* ''[[Manic Miners]]''


== Notes ==
== Notes ==
Line 46: Line 103:
== References ==
== References ==
{{reflist|refs=
{{reflist|refs=
<ref name="Decompiling">{{cite web |url=https://github.com/trigger-segfault/OpenLRR/wiki/Decompiling-LEGO-Rock-Raiders#decompiling-lego-rock-raiders |last=Jordan |first=Robert |date=December 17, 2021 |title=Decompiling LEGO Rock Raiders |website=OpenLRR Wiki |via=[[Wikipedia:GitHub|GitHub]] |archive-url=https://web.archive.org/web/20240701034732/https://github.com/trigger-segfault/OpenLRR/wiki/Decompiling-LEGO-Rock-Raiders#decompiling-lego-rock-raiders |archive-date=July 1, 2024 |url-status=live}}</ref>
<ref name="OpenLRR commit initial">{{cite web |url=https://github.com/trigger-segfault/OpenLRR/commit/c43ab2666b42d6ada7653cb90ca62e92139288fb |title=Initial commit |date=September 9, 2021 |author=trigger-segfault |website=OpenLRR |type=GitHub commit |via=GitHub |archive-url=https://web.archive.org/web/20240929121353/https://github.com/trigger-segfault/OpenLRR/commit/c43ab2666b42d6ada7653cb90ca62e92139288fb |archive-date=September 29, 2024 |url-status=live}}</ref>


<ref name="OpenLRR issue 5">{{cite web |url=https://github.com/trigger-segfault/OpenLRR/issues/5#issuecomment-1049095486 |title=License and copyright considerations |date=February 23, 2022 |author=trigger-segfault |website=OpenLRR Issues |via=[[Wikipedia:GitHub|GitHub]] |archive-url=https://web.archive.org/web/20240929115429/https://github.com/trigger-segfault/OpenLRR/issues/5#issuecomment-1049095486 |archive-date=September 29, 2024 |url-status=live}}</ref>
<ref name="OpenLRR issue 5">{{cite web |url=https://github.com/trigger-segfault/OpenLRR/issues/5#issuecomment-1049095486 |title=License and copyright considerations |date=February 23, 2022 |author=trigger-segfault |website=OpenLRR Issues |type=GitHub issue |via=[[Wikipedia:GitHub|GitHub]] |archive-url=https://web.archive.org/web/20240929115429/https://github.com/trigger-segfault/OpenLRR/issues/5#issuecomment-1049095486 |archive-date=September 29, 2024 |url-status=live}}</ref>
 
<ref name="OpenLRR release 0001">{{cite web |url=https://github.com/trigger-segfault/OpenLRR/releases/tag/v0.0.0.1 |title=First Release |date=February 18, 2022 |author=trigger-segfault |website=OpenLRR |type=GitHub release |via=GitHub |archive-url=https://web.archive.org/web/20240930043626/https://github.com/trigger-segfault/OpenLRR/releases/tag/v0.0.0.1 |archive-date=September 30, 2024 |url-status=live}}</ref>
 
<ref name="OpenLRR release 0002">{{cite web |url=https://github.com/trigger-segfault/OpenLRR/releases/tag/v0.0.0.2 |title=Random sound cue fix |date=August 11, 2022 |author=trigger-segfault |website=OpenLRR |type=GitHub release |via=GitHub |archive-url=https://web.archive.org/web/20240930171744/https://github.com/trigger-segfault/OpenLRR/releases/tag/v0.0.0.2 |archive-date=September 30, 2024 |url-status=live}}</ref>
 
<ref name="OpenLRR release 0003">{{cite web |url=https://github.com/trigger-segfault/OpenLRR/releases/tag/v0.0.0.3 |title= Multiple sound trigger and erosion debug tooltip fix Pre-release |date=August 13, 2022 |author=trigger-segfault |website=OpenLRR |type=GitHub release |via=GitHub |archive-url=https://web.archive.org/web/20241001102317/https://github.com/trigger-segfault/OpenLRR/releases/tag/v0.0.0.3 |archive-date=October 1, 2024 |url-status=live}}</ref>
 
<ref name="OpenLRR release 0004">{{cite web |url=https://github.com/trigger-segfault/OpenLRR/releases/tag/v0.0.0.4 |title=Configurable keyboard shortcuts and cheats |date=August 25, 2022 |author=trigger-segfault |website=OpenLRR |type=GitHub release |via=GitHub |archive-url=https://web.archive.org/web/20240930162842/https://github.com/trigger-segfault/OpenLRR/releases/tag/v0.0.0.4 |archive-date=September 30, 2024 |url-status=live}}</ref>
 
<ref name="OpenLRR release 0005">{{cite web |url=https://github.com/trigger-segfault/OpenLRR/releases/tag/v0.0.0.5 |title= True color support and command line options |date=September 16, 2022 |author=trigger-segfault |website=OpenLRR |type=GitHub release |via=GitHub |archive-url=https://web.archive.org/web/20241001080202/https://github.com/trigger-segfault/OpenLRR/releases/tag/v0.0.0.5 |archive-date=October 1, 2024 |url-status=live}}</ref>
 
<ref name="OpenLRR release 0006">{{cite web |url=https://github.com/trigger-segfault/OpenLRR/releases/tag/v0.0.0.6 |title=Increase 3D and Radar Map resolution when scaling |date=September 24, 2022 |author=trigger-segfault |website=OpenLRR |type=GitHub release |via=GitHub |archive-url=https://web.archive.org/web/20240930165358/https://github.com/trigger-segfault/OpenLRR/releases/tag/v0.0.0.6 |archive-date=September 30, 2024 |url-status=live}}</ref>
 
<ref name="OpenLRR release 0007a">{{cite web |url=https://github.com/trigger-segfault/OpenLRR/releases/tag/v0.0.0.7 |title= Optimisations, cursor clipping, mod support, and more!
|date=September 27, 2022 |author=trigger-segfault |website=OpenLRR |type=GitHub release |via=GitHub |archive-url=https://web.archive.org/web/20240930181739/https://github.com/trigger-segfault/OpenLRR/releases/tag/v0.0.0.7 |archive-date=September 30, 2024 |url-status=live}}</ref>
 
<ref name="OpenLRR release 0007b">{{cite web |url=https://github.com/trigger-segfault/OpenLRR/releases/tag/v0.0.0.7-hotfix1 |title=v0.0.0.7 - Hotfix 1 |date=September 28, 2022 |author=trigger-segfault |website=OpenLRR |type=GitHub release |via=GitHub |archive-url=https://web.archive.org/web/20240930185328/https://github.com/trigger-segfault/OpenLRR/releases/tag/v0.0.0.7-hotfix1 |archive-date=September 30, 2024 |url-status=live}}</ref>
 
<ref name="OpenRCT2">{{cite web |url=https://trigger-segfault.github.io/games/openrct2/ |title=OpenRCT2 Contributions |first=Robert |last=Jordan |date=November 21, 2018 |website=Trigger's Tools & Games |archive-url=https://web.archive.org/web/20240930035615/https://trigger-segfault.github.io/games/openrct2/ |archive-date=September 30, 2024 |url-status=live}}</ref>
 
<ref name="reddit guide">{{cite web |url=https://old.reddit.com/r/Rockraiders/comments/1apx9js/a_modern_guide_to_experiencing_lego_rock_raiders/ |title=A modern guide to experiencing LEGO Rock Raiders! |author=Baraklava |date=13 February 2024 |website=[[Wikipedia:Reddit|Reddit]] |archive-url=https://web.archive.org/web/20241001052056/https://old.reddit.com/r/Rockraiders/comments/1apx9js/a_modern_guide_to_experiencing_lego_rock_raiders/ |archive-date=October 1, 2024}}</ref>
 
<ref name="rru decomp">{{cite web |url=https://rockraidersunited.com/topic/9089-open-source-decompilation-of-rock-raiders/ |title= Open Source Decompilation of Rock Raiders |author=trigger_segfault |date=September 3, 2021 |website=[[Rock Raiders United]] |archive-url=https://web.archive.org/web/20240929122937/https://rockraidersunited.com/topic/9089-open-source-decompilation-of-rock-raiders/ |archive-date=September 29, 2024 |url-status=live}}</ref>


<ref name="rru patch">{{cite web |url=https://rockraidersunited.com/topic/9048-in-depth-look-at-the-cfg-syntax/?do=findComment&comment=141124 |title=Sounds good! I've actually already gotten an assembly patch working to fix this... |type=comment on forum topic "In-depth Look at the CFG Syntax" |author=trigger_segfault |date=June 27, 2021 |website=Rock Raiders United |archive-url=http://web.archive.org/web/20240930044226/https://rockraidersunited.com/topic/9048-in-depth-look-at-the-cfg-syntax/#comment-141124 |archive-date=September 30, 2024 |url-status=live}}</ref>
<ref name="rru patch">{{cite web |url=https://rockraidersunited.com/topic/9048-in-depth-look-at-the-cfg-syntax/?do=findComment&comment=141124 |title=Sounds good! I've actually already gotten an assembly patch working to fix this... |type=comment on forum topic "In-depth Look at the CFG Syntax" |author=trigger_segfault |date=June 27, 2021 |website=Rock Raiders United |archive-url=http://web.archive.org/web/20240930044226/https://rockraidersunited.com/topic/9048-in-depth-look-at-the-cfg-syntax/#comment-141124 |archive-date=September 30, 2024 |url-status=live}}</ref>


<ref name="rru syntax">{{cite web |url=https://rockraidersunited.com/topic/9048-in-depth-look-at-the-cfg-syntax/ |title=In-depth Look at the CFG Syntax |author=trigger_segfault |date=June 17, 2021 |website=[[Rock Raiders United]] |archive-url=https://web.archive.org/web/20240929123003/https://rockraidersunited.com/topic/9048-in-depth-look-at-the-cfg-syntax/ |archive-date=September 29, 2024 |url-status=live}}</ref>
<ref name="rru syntax">{{cite web |url=https://rockraidersunited.com/topic/9048-in-depth-look-at-the-cfg-syntax/ |title=In-depth Look at the CFG Syntax |author=trigger_segfault |date=June 17, 2021 |website=[[Rock Raiders United]] |archive-url=https://web.archive.org/web/20240929123003/https://rockraidersunited.com/topic/9048-in-depth-look-at-the-cfg-syntax/ |archive-date=September 29, 2024 |url-status=live}}</ref>
<ref name="wiki decompiling">{{cite web |url=https://github.com/trigger-segfault/OpenLRR/wiki/Decompiling-LEGO-Rock-Raiders |last=Jordan |first=Robert |date=December 17, 2021 |title=Decompiling LEGO Rock Raiders |website=OpenLRR Wiki |via=[[Wikipedia:GitHub|GitHub]] |archive-url=https://web.archive.org/web/20240701034732/https://github.com/trigger-segfault/OpenLRR/wiki/Decompiling-LEGO-Rock-Raiders#decompiling-lego-rock-raiders |archive-date=July 1, 2024 |url-status=live}}</ref>
<ref name="wiki running">{{cite web |url=https://github.com/trigger-segfault/OpenLRR/wiki/Running-OpenLRR |last=Jordan |first=Robert |date=December 17, 2021 |title=Running OpenLRR |website=OpenLRR Wiki |via=[[Wikipedia:GitHub|GitHub]] |archive-url=https://web.archive.org/web/20240930041200/https://github.com/trigger-segfault/OpenLRR/wiki/Running-OpenLRR |archive-date=September 30, 2024 |url-status=live}}</ref>
}}
}}



Latest revision as of 23:12, 17 October 2024

OpenLRR
Developer(s)trigger-segfault
Initial releaseFebruary 18, 2022; 2 years ago (2022-02-18)
Stable release
v0.0.0.7-hotfix1 / September 28, 2022; 2 years ago (2022-09-28)
Repositorygithub.com/trigger-segfault/OpenLRR
Written inC, C++
EngineGods98
Operating systemMicrosoft Windows
Platformx86
Available inEnglish
TypeReal-time strategy game
LicenseGPLv3 (OpenLRR code), MIT (decompiled code)[1]

OpenLRR is an open-source re-implementation and expansion of the 1999 real-time strategy game LEGO Rock Raiders. First released in 2022, the program is built on a decompilation of the original game's executable file and uses DLL injection to modify functions. The project is still in early development, though it is not currently active. Despite this, OpenLRR already greatly improves gameplay stability, fixes bugs, and adds many new features; using it to play LEGO Rock Raiders is highly recommended.

Features

As a re-implementation of LEGO Rock Raiders, OpenLRR requires a copy of the original game to already be installed on the computer, and its files must be placed in a working install folder.[2] The gameplay when running OpenLRR is largely unchanged from Rock Raiders; however, OpenLRR fixes numerous crashes, bugs, and issues found in the original game.[3] Most notably, OpenLRR adds a menu bar that allows for toggling numerous functions, including debug and cheat options.[4] Some of its changes include:

  • Easy menu toggling of options that otherwise would have to be edited in the Main Lego Config File.
  • Configurable keybinds, for both normal and debug keys.[5]
  • Configurable logging to a separate console window.
  • Adjustable graphics options, such as top-down fog, level of detail, and rendering quality (eg. enabling wireframe mode).
  • Higher-resolution scaling support, allowing the 3D world to be rendered at a higher internal resolution (while using nearest-neighbor scaling for the interface).[6]
  • True color support; previously the game was limited to 16-bit high color.[7]
  • Increased zooming range in the radar panel.[6]
  • Viewable routing paths.[7]
  • Allowing the player to directly control a selected unit in top-down view, including resources and enemies.[8]
  • Cheat options such as the "Super Tool Store" cheat which allows the Tool Store to teleport all land vehicles, power other buildings, and train any ability.[9]

Development

Multi-color crystals

Development of OpenLRR began in 2021 as a decompilation project by American programmer Robert "trigger-segfault" Jordan, who wanted to look through the LEGO Rock Raiders executable assembly to figure out how the game's config file syntax functioned.[10] Jordan used Ghidra to decompile, identify, and label code from the LEGO Rock Raiders executable. The decompilation focused on the September 27 English version of the game's executable (the "Masterpiece edition") as it was considered to be the most stable and widely-used version of the game.[11][note 1] Jordan started a forum thread to post his initial findings on the website Rock Raiders United on June 17, 2021.[10] Over the next few months he continued work on decompiling and identifying all the functions, global variables, symbols, and data types in the assembly. Jordan's work was made easier by the release of the source code for the Gods98 game engine, which LEGO Rock Raiders uses, after it was discovered on hard drives formerly owned by developer Data Design Interactive.[8]

External video
video icon OpenLRR Demos with Pre-recorded Input at YouTube

By September 3, Jordan had organized most of the game's code into a more navigable state. Using DLL injection, he was able to replace several functions in the game's executable, allowing for new functions such as controlling entities in top-down view, multi-colored crystals, and resource monitoring.[8] (Prior to this, he had released some assembly patches created in Python, including one to fix a bug with certain sounds not playing.)[12] Jordan planned to eventually build on this concept to create an open-source version of the LEGO Rock Raiders executable, similar to projects like OpenRCT2 (which Jordan had previously contributed to).[13][8] A GitHub repository for the project, now called OpenLRR, was created on September 9, 2021.[14] The first build version of OpenLRR was released on February 18, 2022.[4] A number of update builds were released during August and September 2022.[15][16] Further edits were made to its code through October 2023, though Visual Studio 2019 is required to compile these versions. The project has been on hiatus since then.

Version history

Controlling a selected Rock Monster in Top View
An example of a routing path
Debug tool tip and routing paths
Release history of OpenLRR
Version Release date Release type and highlights
0.0.0.1 February 18, 2022 First Release[4]
  • Menu bar
0.0.0.2 August 11, 2022 Random sound cue fix[15]
0.0.0.3 August 13, 2022 Multiple sound trigger and erosion debug tooltip fix[17]
0.0.0.4 August 25, 2022 Configurable keyboard shortcuts and cheats[5]
  • New key shortcuts
  • Configurable keybinds
  • Logging configuration
0.0.0.5 September 16, 2022 True color support and command line options[7]
  • True color support
  • Building placement arrow
  • Routing paths
  • New cheats
  • New command-line parameters
0.0.0.6 September 24, 2022 Increase 3D and Radar Map resolution when scaling[6]
  • Internal resolution scaling
  • Improved vector graphics drawing
  • Increased allowed range of radar map zooming
  • Debug options to disable 2D drawing modules
  • New command-line parameters
0.0.0.7 September 27, 2022 Optimisations, cursor clipping, mod support, and more![9]
  • Cursor Clipping
  • Super Tool Store cheat
  • New graphics options
  • New command-line parameters
  • New key shortcuts
  • Improved Lego.cfg error reporting

See also

Notes

  1. The English version of LEGO Rock Raiders has three known executable versions: a September 25 version, a September 27 version (commonly called the Masterpiece edition as it was the version used in LEGO Masterpiece-labeled released of the game), and an October 12 version (which includes SafeDisc protection).

References

  1. trigger-segfault (February 23, 2022). "License and copyright considerations". OpenLRR Issues (GitHub issue). Archived from the original on September 29, 2024 – via GitHub.
  2. Jordan, Robert (December 17, 2021). "Running OpenLRR". OpenLRR Wiki. Archived from the original on September 30, 2024 – via GitHub.
  3. Baraklava (13 February 2024). "A modern guide to experiencing LEGO Rock Raiders!". Reddit. Archived from the original on October 1, 2024.
  4. 4.0 4.1 4.2 trigger-segfault (February 18, 2022). "First Release". OpenLRR (GitHub release). Archived from the original on September 30, 2024 – via GitHub.
  5. 5.0 5.1 trigger-segfault (August 25, 2022). "Configurable keyboard shortcuts and cheats". OpenLRR (GitHub release). Archived from the original on September 30, 2024 – via GitHub.
  6. 6.0 6.1 6.2 trigger-segfault (September 24, 2022). "Increase 3D and Radar Map resolution when scaling". OpenLRR (GitHub release). Archived from the original on September 30, 2024 – via GitHub.
  7. 7.0 7.1 7.2 trigger-segfault (September 16, 2022). "True color support and command line options". OpenLRR (GitHub release). Archived from the original on October 1, 2024 – via GitHub.
  8. 8.0 8.1 8.2 8.3 trigger_segfault (September 3, 2021). "Open Source Decompilation of Rock Raiders". Rock Raiders United. Archived from the original on September 29, 2024.
  9. 9.0 9.1 trigger-segfault (September 27, 2022). "Optimisations, cursor clipping, mod support, and more!". OpenLRR (GitHub release). Archived from the original on September 30, 2024 – via GitHub.
  10. 10.0 10.1 trigger_segfault (June 17, 2021). "In-depth Look at the CFG Syntax". Rock Raiders United. Archived from the original on September 29, 2024.
  11. Jordan, Robert (December 17, 2021). "Decompiling LEGO Rock Raiders". OpenLRR Wiki. Archived from the original on July 1, 2024 – via GitHub.
  12. trigger_segfault (June 27, 2021). "Sounds good! I've actually already gotten an assembly patch working to fix this..." Rock Raiders United (comment on forum topic "In-depth Look at the CFG Syntax"). Archived from the original on September 30, 2024.
  13. Jordan, Robert (November 21, 2018). "OpenRCT2 Contributions". Trigger's Tools & Games. Archived from the original on September 30, 2024.
  14. trigger-segfault (September 9, 2021). "Initial commit". OpenLRR (GitHub commit). Archived from the original on September 29, 2024 – via GitHub.
  15. 15.0 15.1 trigger-segfault (August 11, 2022). "Random sound cue fix". OpenLRR (GitHub release). Archived from the original on September 30, 2024 – via GitHub.
  16. trigger-segfault (September 28, 2022). "v0.0.0.7 - Hotfix 1". OpenLRR (GitHub release). Archived from the original on September 30, 2024 – via GitHub.
  17. trigger-segfault (August 13, 2022). "Multiple sound trigger and erosion debug tooltip fix Pre-release". OpenLRR (GitHub release). Archived from the original on October 1, 2024 – via GitHub.