Outpost Universe Forums

Projects & Development => Projects => Outpost 2 Update => Topic started by: Vagabond on June 15, 2020, 04:29:34 PM

Title: op2ext 3.0.0 released
Post by: Vagabond on June 15, 2020, 04:29:34 PM
We just released op2ext 3.0.0. Hooman completed the bulk of the work and I filled in some minor parts and completed some of the manual testing. This change represents an extensive rewrite of the backend and a lot of improvements. Release notes are below.

You can download from here: https://github.com/OutpostUniverse/op2ext/releases

----

Outpost 2 Extension Modules (op2ext) Version 3.0.0

Outpost 2 extension module loader (op2ext) allows modifying and extending Outpost 2 through loading of alternate game resources or injecting independently compiled DLLs. Read more about Outpost 2 and the Outpost Universe Community at https://www.outpost2.net/.

Version 3.0.0

This version introduces breaking changes from 2.2.0 by removing the public functions IsConsoleModuleLoaded & IsIniModuleLoaded. Additionally, the format of data in the Outpost2.ini file has been updated. A user must reformat 2 sections of the .ini file to incorporate this version of op2ext. See instructions below the change log.

 * Remove public functions IsConsoleModuleLoaded & IsIniModuleLoaded
   - Breaking change from version 2.2.0
 * Allow loading multiple console modules
 * Allow GetConsoleModDir_s to also return the directory of an ini module
 * Allow Logging error and debug messages from modules
   - LogError
   - LogDebug
 * Add function hook for "Run" in ini modules
   - Matches corresponding Run function hook in console modules
 * Add concept of Built in Modules within op2ext
   - Repackage IPDropDown as a Built in Module
   - Add Earthworker Proximity Tasking as a Built in Module
 * Allow toggling modules on and off using the Outpost2.ini file
   - NOTICE: The INI file must be updated to new format when switching to this version of op2ext
 * Improve logging framework
 * Full support of mingw for compiling on Linux for Windows/Wine
 * Significant backend archicture improvements
   - Unify console and ini module loading
   - Improve memory patching techniques
   - Improve support of ini files
   - Improve coverage of unit tests and support gmock
   - Use continuous integration results to autopopulate release builds

How to update the Outpost2.ini file to be compatible with op2ext 3.0.0

Remove the LoadAddons line from the Game section (it is now replaced by the ExternalModules section)

[Game]
LoadAddons = "NetFix, NetHelper"


Add the following sections to the ini file:

[BuiltInModules]
EarthworkerProximityTasking = yes
IPDropDown = yes

[ExternalModules]
NetFix = yes
NetHelper = yes


Title: Re: op2ext 3.0.0 released
Post by: leeor_net on June 17, 2020, 09:19:42 PM
Nice work! Always glad to see forward progress  :D
Title: Re: op2ext 3.0.0 released
Post by: Hooman on June 18, 2020, 01:30:53 AM
Hooman completed the bulk of the work and I filled in some minor parts and completed some of the manual testing.

Brett's being modest. He did more than minor work. Plus he's probably the main driver of progress on a lot of those projects. If it wasn't for his collaboration I'd probably get nothing done.

Though yes, nice to see a new release packaged up and out the door.
Title: Re: op2ext 3.0.0 released
Post by: Crow! on June 22, 2020, 01:18:26 PM
What is Earthworker Proximity Tasking?
Title: Re: op2ext 3.0.0 released
Post by: Vagabond on June 22, 2020, 04:21:42 PM
Crow!,

In the base game, you cannot task earthworkers to build walls next to active lava. Also if an earthworker is actively building a wall, you cannot task another earthworker to build a wall adjacent to it. This Built In Module allows the behaviour and defaults to on. You can turn it off in the Outpost2.ini file if desired. I struggled to find a better name. I didn't design the actual patch code, just adapted it for use in op2ext.

From the source code:

// Allows designating walls for construction in a 3x3 area around where
// other earthworkers are already working and next to lava flows. 
// Adapted from Caught in the Crossfire 2 mission code


-Brett