Giter Site home page Giter Site logo

openstarruler-modpack's Introduction

Open Star Ruler

Developed by Blind Mind Studios from 2011-2017 and first launched in March 2015, Star Ruler 2 is a massive-scale 4X/RTS set in space. Explore dozens, hundreds, or even thousands of systems in a galaxy (or galaxies) of your choosing, expand across their planets, exploit the resources you find, and ultimately exterminate any who stand in your way. The fate of your empire depends on your ability to master the economy, field a military, influence galactic politics, and learn what you can about the universe.

Open Star Ruler is a community-led attempt to maintain and upgrade the original game with as little impact as possible upon its compatibility with the commercially distributed binaries from Steam and GOG.

What is this?

This repository contains the OpenSR Modpack, the third branch of the OpenSR project and the successor to the SR2 Community Patch. Given the extreme moddability provided by the Starflare engine, most OpenSR changes can be packaged as a mod (in fact, the original game is itself virtually indistinct from a mod).

The use of the game's modding system to distribute such changes allows us to maximize compatibility with commercial versions of the game, to the point that we do not currently foresee a scenario where we shall have to break data compatibility with commercial clients.

Modder's Guide

This mod can be overridden and included as a resource by other mods, allowing them to inherit the changes made by the Modpack. The following line must be added to your modinfo.txt:

    Derives From: OpenSR Modpack

The Modpack must not be enabled in the SR2 mod list when used in this way; the parent mod will enable it implicitly without user intervention. Files overridden by the parent mod have priority over those of the Modpack. This means that files overridden by both the parent mod and the OpenSR Modpack must be merged to keep functionalities from the Modpack.

Contributor Code of Conduct

It is strongly recommended that you observe certain standards when working on the Modpack, to make things easier for you, people reviewing your code, and people tracking down bugs or other changes:

  1. Follow the instructions outlined in the OpenSR modder's guide, located at https://github.com/OpenSRProject/OpenStarRuler-Launchpad#modders-guide, to properly connect your MP repository to your game. (These instructions can, and should also be applied to other mods intended for distribution via the OpenSR Launchpad.)

  2. When editing a file that previously existed in the base game, commit the original, unmodified file in a "clone commit", then commit your changes after that. This will make your changes easier to identify when looking through the commit history. (Obviously, images and other binary files are an exception...)

    Pull requests not observing proper cloning protocols will be closed. While the changes contained in such PRs may be subsequently reproduced by a Modpack maintainer in a properly-formatted PR, the OpenSR team does not make any guarantee as to if or when this will take place.

openstarruler-modpack's People

Contributors

dalolorn avatar engineofdarkness avatar scitor avatar skeletonxf avatar sol-oriens avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

openstarruler-modpack's Issues

Finish resolving licensing issues.

Since other options seem to be coming off the table, we may have to remove dolynick's code from the Modpack.

This will also require a thorough investigation of Soloriens' code, since some of it may have been based on DOF. (Also, we technically haven't heard back from Sol himself, so... we'll have to decide whether to assume his prior activities constitute consent or prepare to temporarily remove his code too.)

Terraforming callback

Per the 1.1.0 patch notes:

  • The ProduceNativePressurePct hook will now correctly produce pressure for multiple resources (if applicable), and updates its pressure selection if the planet's resources are altered.
    • This update runs every 30 seconds. Future MP versions will instead add a new callback to notify hooks that the planet's resources have changed.

I'm turning this into an issue for the sake of visibility.

Figure out Workshop distribution.

Unfortunately, it is seeming increasingly likely that Soloriens will not be able/willing to continue releasing updates to the Community Patch on Steam. (Which is another reason I renamed it, the first one being to associate it with the rest of OpenSR.) In his absence, there is no alternative but to create a new Workshop item.

The question now is, what account should release it, and how might that account need to be prepared?

  • I can, of course, sidestep the issue by taking his place, much like I did when Alarcarr left Rising Stars. I don't currently intend to become completely inaccessible, even if I end up going on hiatus again... so I should be able to push updates fairly easily for the foreseeable future. However, in the event that I do disappear completely for whatever reason, we'll be back at square one. (Well, I won't. Because I'll be gone.)
  • We could set up a shared OpenSR account. This is something that has been done by other modding teams using the Workshop, so there is precedent. However, this invites further discussion of how to balance security and accessibility, and raises the issue of needing a new Steam copy of SR2 to be granted to the OpenSR account.
  • We could do both, and make a more controlled transfer of authority from my account to the shared account at a later date - similar to how Alar and I originally transferred Rising Stars, only more smoothly executed. Considering I'm hoping to migrate away from the Community Patch in time for the next Rising Stars weekly game (not to be confused with the next session of the current game! ๐Ÿ˜›), this may be the most likely option.

[suggestions]the problem of no "Z axis" for FTL movement orders

Pretty much I'd suggest either :

  • find a way to implement a new control mechanism but that might be too hard to implement ? (I have no idea)
  • alternatively make all "empty space destination movement" near a system be drawn toward the plane of that system
  • alternatively change all galaxy/game generation settings to "flatten" by default

EDIT: since this feature exist in normal movement, can it be adapted to FTL as well ?

Review planet physics

This is technically only noticeable in mods that mess with galaxy scaling, but it's possible for a planet's hitbox to overlap with stations or other planets. This can theoretically allow them to become immune to any non-AoE attack (except maybe Disruptors), as all projectiles just collide with the planet instead.

To resolve this, objects inside a planet should be kicked out somehow. (Unless the planet has physics disabled, like Ringworlds.)

Current master version has some sort of savegame corruption

Steps to Reproduce

  1. Download the current master
  2. Install and Enable OpenSR
  3. Start a new game (no need to change anything)
  4. Enter game, open Console, notice there are no errors
  5. Save game
  6. Open Console again, notice the following errors
Script Exception: Duplicate identifier: 'AncientDeveloper'.
 D:\Star Ruler 2\scripts\definitions\buildings.as
  buildings::void saveIdentifiers(SaveFile&inout) | Line 688 | Col 3

Script Exception: Duplicate identifier: 'GalacticSuperpower'.
 D:\Star Ruler 2\scripts\definitions\influence.as
  influence::void saveIdentifiers(SaveFile&inout) | Line 4102 | Col 3

Script Exception: Duplicate identifier: 'AncientDeveloper'.
 D:\Star Ruler 2\scripts\definitions\statuses.as
  statuses::void saveIdentifiers(SaveFile&inout) | Line 346 | Col 3
  1. Reload the Game - game either hangs (game seems to eat all my 32gb of memory, so the issue probably causes a memory leak or something) on load or crashes to desktop for me in some instances (not really sure why it's not consistent, sometimes when I make a new game and save and reload it leads to crashes, sometimes to infinite loading)

Resolve pre-MP issues.

  • sol-oriens#6: Battleworld quality of life fixes
  • sol-oriens#20: Transferring support ships with supply crates only decreases the supply of the original flagship
  • sol-oriens#21: Sanity check: Support ships should not be transferrable between star systems
  • sol-oriens#22: Sanity check: Flagships have no business owning support satellites

[suggestions]map settings saving

hi
I'm not sure where to post suggestions for the future of openstarruler & its modpack

  • 1 ) being able to save AI settings or make AI remember the last settings you used
    example : create 1 AI, put it on hard with 1 cheat, create a second AI, it's on hard with the same 1 cheat
  • 2 ) make the above survive game restarts as well
  • 3 ) make map settings be able to be saved or defaults changed & survive game restart

Hyperdense Laser information is incorrect

The hyperdense laser states:

  • Lower overall DPS.

Presumably this refers to the laser, but it does not have a lower DPS than the laser - it has a higher DPS, a higher power cost and a higher supply cost. Effectively it's a better weapon per space unit used, at slightly higher cost, which sounds right because it's an unlockable instead of default weapon.

Tooltip should probably remove that line and add a neutral-information line stating it does higher DPS at a higher power and supply cost compared to laser.

(I'm pretty sure this issue is present in vanilla as well, but I think here is the place to report it?)

Pin Object / Pin Object Floating causes savegame corruption if pinned object is destroyed in Vanilla SR2

Video about the issue (still uploading, about an 30 minutes left, see section "Steps to Reproduce" for written reproduction steps):

https://youtu.be/JrgjHThny8U

Note I have not yet written any code, this issue is basically all what I currently "know" about it.

Preface

I tried this in singleplayer but I assume the same problem will apply to multiplayer aswell.

It may make sense to this hide issue from the public because if this happens in MP aswell you can "grief" Vanilla Multiplayer Matches simply by "pinning" your own ship and sending it to certain doom right at the start of the game. Of Course you can (currently) grief all matches including modded ones

After that point, the match is doomed if people count on saving to continue another day, because of course the game doesn't instantly crash but happily chugs along while the proverbial doomsday clock is ticking. I'm not sure if anything but trying to "load" triggers the issue, so you might be able to play for hours and be none the wiser until you load your game again.

This happened to me in SP, twice. Once with your OpenStarRuler-Modpack and once with Colonisation Expansion from @Skeletonxf

Steps to Reproduce

  1. Start new Game, no need to change anything
  2. Click on your Starter Cruiser
  3. Press "p" (or whatever your keybind is for "Pin Object"), should open a Popup for your Cruiser
  4. Make sure the Cruiser is still selected
  5. Open the Console with ^ (or whatever key you use)
  6. type cheats on followed by ch_destroy
  7. The Cruiser should be destroyed (Support ships left behind), note that the Popup is still open
  8. Save the game
  9. Load the game
  10. Notice the UI is broken, if you try to open the planet ui a lot of the UI elements are missing
  11. Open the Console to see the following error
Script Exception: Null pointer access
 D:\Star Ruler 2\scripts\toolkit\elements\GuiBlueprint.as
  elements.GuiBlueprint::void GuiBlueprint::display(Ship@) | Line 167 | Col 3
  overlays.ShipPopup::void ShipPopup::set(Object@) | Line 118 | Col 3
  tabs.GalaxyTab::Popup@ GalaxyTab::pinObject(Object@, bool = false) | Line 432 | Col 3
  tabs.GalaxyTab::void GalaxyTab::load(SaveFile&inout) | Line 274 | Col 5
  tabs.tabbar::void load(SaveFile&inout) | Line 945 | Col 4

Fun fact - if you try to quit the game to Desktop it now crashes instead.

If you close the Popup manually after Step 7 then the savegame corruption does not occur (shown in the Video, no output in console and the UI is not broken)

Solution(s)

  1. Ensure that, upon destruction of an object, all Popups that reference said object are removed
  • most likely the "easiest" solution
  1. Try to guard all locations where this object is accessed to prevent the issue
  • sounds dirty and hard to maintain, but if the above is not feasible

Solution - Considerations

Solution 1st might get complex depending on how "Popup" saving is done in Multiplayer, because we don't want a client to trigger saving a "ghost" popup (that is gone on the server), which is why I thought about the 2nd Solutioin (which doesn't strike me as particulary good either)

I still don't quite understand why this causes an issue though, because in the GalaxyTab.as there is a check if the object is not null before the Popup is created... Or maybe that just checks that a object exists in the savegame and not if the object is valid in the current gamestate (aka object still exists).

https://github.com/OpenSRProject/OpenStarRuler-Modpack/blob/master/OpenSR/scripts/gui/tabs/GalaxyTab.as#L278

In which case we'd have a 3rd Solution, check if the pointer (uuid or whatever is available) is still existing before applying the Popup.

But then again that would just be a workaround because the Popup of a destroyed object should not be saved anyway.

So a 4th Solution is to check on saving if the object is still in the game and if not, discard saving that popup. While nicer than guarding in the load (to me at least) method this is not really good for players (why is there a popup of an object that is gone? but then again if the popup simply vanishes (Solution 1) that might also confuse players).

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.