Coder Social home page Coder Social logo

rfg-modding / rsl Goto Github PK

View Code? Open in Web Editor NEW
8.0 8.0 1.0 14.62 MB

Re-mars-tered Script Loader. A lua scripting API and modding tool for Red Faction Guerilla Re-mars-tered. Development for RSL1 has ended

License: GNU General Public License v2.0

C++ 55.72% C 35.44% Lua 2.52% Python 0.35% PowerShell 0.02% C# 5.57% Makefile 0.24% Batchfile 0.14%
lua red-faction red-faction-guerrilla script-loader

rsl's People

Contributors

moneyl avatar v4xi5 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

v4xi5

rsl's Issues

Move dependencies into their own repos / connect with submodules

Dependencies should be moved into their own repos so this repo only contains it's own code, and stays small.

Ideally all dependencies would be connected via submodules and rebuilt for each build. However, this might negatively impact build times. One option is to keep including all or some dependencies prebuilt, but to place them into a submodule. Something in between the two is probably best.

Azure pipelines is broken

Azure pipelines is setup for this project for automated builds but currently fails to build the project. It was initially added to the repo to test if it built the project any quicker than appveyor. The build errors should be fixed, and if it's slower or equal to appveyor it might be better just to remove it.

Add function hooking guide to docs

Write a guide in the docs that describes the basics of function hooking, how it works, and steps on how to add new hooks via c++. This should make the onboarding process for the c++ side of the RSL easier for new contributors.

Support the GOG version of Re-mars-tered

RSL should support the GOG version of re-mars-tered. It currently doesn't do anything with steam specific code so adding support would likely only be a matter of adding a compilation option for using steam or gog function and value offsets, and finding those offsets for GOG. That part shouldn't be difficult, just time consuming.

The part I'm not sure about is how to keep automatic builds from doubling in time. My current thought is to just have a compilation flag for whether Steam or GOG offsets should be used. The problem with that is that we'd then have to build it twice unless there's a way to build two compile configs at once in appveyor. Once for GOG, once for Steam.

GUI not displaying, but cursor is free.

RSL is successfully loading, I hear the 3 beeps.

Fresh install of the game, with no other mod managers installed. I've tried different screen resolutions, reinstalled the game a few times with no fixes.

I can't pull a screenshot to show this because my cursor gets cropped off. But essentially I can see the cursor is "unbound" to RFGR's custom one. There's just nothing to click on

logs.zip

Freecam causes issues with "no ragdoll" and "ai ignore" settings when deactivated

The freecam can cause the "no ragdoll" and "ai ignore" settings in the tweaks gui to appear to be enabled while actually being disabled.

Steps to reproduce:

  1. Open the tweaks gui and enable the "no ragdoll" and "ai ignore" settings.
  2. Activate the free cam with numpad 3 and then disable it with the same button.
  3. Go back to the tweaks gui, "no ragdoll" and "ai ignore" should still be checked, however, they are not really active. You'll need to click them twice to make them show as disabled again.

Add unit tests to the project

Unit tests should be added to the c++ code of the project to try and make the code more stable and to notice breakage early. Ideally they would automatically be run by appveyor/azure pipelines/github actions each time a new commit is made.

There isn't any code coverage goal with this, just that the important areas of the code should have meaningful tests to make sure they haven't broke. We could probably also add tests to the lua code, but it'll need a separate testing tool/framework.

Transfer gui code to lua where possible

Currently all of the overlay GUIs are written in C++. They should be transferred to lua for a few reasons:

  • Allows for live editing / live reload of guis
  • Anyone can edit or update them
  • It will make the c++ code smaller and more purposeful, rather than having a bunch of gui logic spread around it.

This issue can be split into a few parts:

  • Bind Dear ImGui, the library used for overlay guis, to lua.
  • Rewrite guis in lua
  • Provide a way for guis to determine how they should be displayed. By default they should just be toggled with the gui key, currently F1. But they should also be able to set custom behavior for set like how the lua console has a separate key to toggle it.

Transfer existing features to lua where possible

Things like the free cam and the first person cam should be transferred to lua for the same reasons listed in #8 for moving gui code to lua. It might be better to move these into another repo that is included by automated builds to keep this one from growing too large.

CameraWrapper would still be written in c++ and bound to lua to provide a nice way of controlling the camera, but the actual camera logic would be in lua.

Support older versions of RFG

Currently the RSL only supports RFG Re-mars-tered edition on Steam, with plans to support the GOG version #12. Re-mars-tered was chosen partially because it is newer and comes with many graphics and performance improvements, but also because it came with a PDB filled with debug information, which makes finding useful pieces of code for hooking much easier.

The original versions of RFG do not have PDBs publicly available. This means that making something like the script loader for those older versions would be a lot more work. Since in depth reverse engineering would be required for any function or code needing to be hooked or modified. It's possible that large portions of the RSL would need to be rewritten to work with original versions of RFG since it's designed with re-mars-tered structures in mind, and we don't know if they've changed significantly between the original versions and re-mars-tered.

So, for the time being the RSL will not support any versions of RFG other than Re-mars-tered on Steam and GOG.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.