EnglishGermanFrenchRussianItalianSpanish
Log inRegister
 
[TOOL] X3 Customizer 3.2, Now with standalone executable and new file system
Post new topic Reply to topic Goto page Previous  1, 2
View previous topic :: View next topic
Author Message
SirNukes





Joined: 31 Mar 2007
Posts: 103 on topic

Thank you for registering your game
PostPosted: Sun, 24. Dec 17, 00:12    Post subject: Reply with quote Print

Here are some steps to follow, off the top of my head:

1) Copy the User_Transforms_Example.py file and name it something unique, or name it "User_Transforms.py", which is the default the customizer will look for. I will never put a file by that name on the git repository, so it should be safe against updates.

2) Edit the Set_Path call to change the directory where the X3:AP addon folder is located for your system. (This could point somewhere else, like some test directory, as long as it has the expected folder structure.)

3) You can optionally rename the source_folder from whatever default I have in there.

4) In the AP addon folder, make the subfolder with the source_folder name from (3) and start populating it with the files which are to be modified.

5) The easiest way to pull files, with any other mods applied, is to use the X3 Editor 2 virtual file system (VFS), which can be brought up through plugings->CAT Manager. This will show the game files according to highest priority. (This seems to be a little buggy when extracting director scripts and not giving them their full name, but the text files in the types folder should work fine.)

6) Fill in the files according to the requirements of the transforms you want to run. From the other thread, this would likely be types/Jobs.txt, types/TShips.txt, and types/WareLists.txt. When placing these into the source_folder, use the same directory structure relative to the addon folder, eg. put them in addon/source_folder/types.

7) You can run a quick test at this point: comment out any transforms in your User_Transforms.py file and just leave the Set_Path active (or return right after Set_Path), and run the customizer using X3_Customizer.py, optionally providing the name of your python file if it was named something other than User_Transforms.py. (Use the command line for this; shift-right clicking in the windows folder explorer should have a "open command window here" option to easily put it in the right directory.) The customizer should run succesfully and put copies of the files from the source_folder into the normal addon directory (without any edits applied).

8) With that working, you can start playing around with the different transforms. Syntax errors in transform calls will generally show up as python exceptions. Transforms with missing requirements should print a nice warning message and get skipped.

Back to top
View user's profile Send private message
SirNukes





Joined: 31 Mar 2007
Posts: 103 on topic

Thank you for registering your game
PostPosted: Wed, 27. Dec 17, 08:14    Post subject: Reply with quote Print

Updated to 2.17.

The major new addition is Add_More_Factory_Sizes, a transform which will fill out the factory lists from small to XL. Parameters can be used to limit the sizes and types generated, as well as to change how the cost is scaled, either using linear scaling or using scaling similar to solar power plants. Generated factories are added to appropriate shipyards using a generated director script, since I was having trouble figuring out how to do it using standard scripts (due to factories sharing names across races). The director script will fire automatically on loading a save game, and may take a few seconds to complete.

(Note: at time of this upload I have limited playing time with the new factories, though initial tests all looked good.)

With new knowledge on writing director scripts, the Add_Ship_Variants transform was switched to also using a director script, and no longer requires manually calling a script using the in-game script editor to update shipyards. Warning: this will fire on game load, and will freeze the game for a few seconds while it runs. This will only happen once.

If unwanted variants are present in a game, they can be soft removed using Remove_Ship_Variants, which will set their race to None (should stop random generation) and will remove them from shipyards. The variants will be left in the tships file to avoid game crashes and bugs, and any existing ships of those variants will continue to fly around.


Other changes are mostly aimed at script edits. Complex_Cleaner_Bug_Fix will clean out a couple bugs in the 4.09 version of that mod (latest that I am aware of). Complex_Cleaner_Use_Small_Cube is an edit to force selection of the smallest factory cube, which is mainly motivated by my personal preference for a smaller visual footprint.

Fleet_Interceptor_Bug_Fix will clear out a bug I noticed in the fleet logic, where a misspelling of 'interecept' when selecting ships to launch at enemy bombers appears to cause a default M6 to be sent instead.

Change_Sector_Music is a small, generic transform to simplify switching the music for a single sector.

Back to top
View user's profile Send private message
SirNukes





Joined: 31 Mar 2007
Posts: 103 on topic

Thank you for registering your game
PostPosted: Mon, 1. Jan 18, 12:05    Post subject: Reply with quote Print

Updated to 2.19. Version 2.18 had some bug fixes for the generated director scripts, notably to ensure they can run in a new game, since I haven't gotten around to editing the universe files to stick new ships and factories on default ware lists.

Version 2.19 adds support for editing game .obj files. This evening I learned how to decompile those and figured out the general behavior of the assembly code, well enough to make some fun edits. New transforms are focused on adjusting SETA behavior, with an extra tweak to change marine counts.

Adjust_Max_Seta will let you unlock the Seta factor, with one argument for your desired cap in the menu. I put a soft limit of 50x on it, since that is the game's debug mode limit, but you can always edit that out if 50x isn't crazy enough for you.

Adjust_Max_Speedup_Rate changes the rate at when the game enters Seta mode. A factor of 2 will halve the time from pressing the key to reaching the full Seta multiplier. In practice, I expect this to be limited by framerate, and estimate it will top out around 15x faster at 60 fps.

Stop_Events_From_Disabling_Seta will stop Seta from turning off in a few cases, selectable in the transform arguments. These include: when a missile is fired at your ship (very annoying when just wanting to traverse a pirate sector), when nearing another object, and when a priority message pops up (eg. police scan notice). (I didn't test that last one because of lazy police, but it should work.)

Set_Max_Marines allows you to change the marine cap on different classes of ships. The practical upper limit is 127 marines (1 byte signed, needs to be positive). The ship class groupings are: TM, TP, M6, capitals (M1, M2, M7, TL), and the Sirokos (or whatever ship is at entry 263 in Tships). Adding marines to other ship types is unlikely at this time, but may be possible if there is a way to do it without changing the number of bytes of assembly code in relevant sections (since changing byte count messes up pointers in the obj file, and I don't want to deal with fixing that).


As an aside, if anyone had any transform requests, feel free to post them. Also, if anyone wanted to help with the tool development, I am open to giving github permissions.

Back to top
View user's profile Send private message
SirNukes





Joined: 31 Mar 2007
Posts: 103 on topic

Thank you for registering your game
PostPosted: Wed, 3. Jan 18, 06:20    Post subject: Reply with quote Print

Updated to 2.20. This adds two sound related transforms.

Disable_Combat_Music will stop the game from transitioning to combat music when near enemies or missiles, when a missile is fired at the player, etc. Normal sector music will continue to play uninterrupted.

Remove_Combat_Beep will remove the beep that plays when entering combat mode by nearing an enemy.

As an aside, my main motivation for digging deeper into game modding was a hope to be able to address collision damage issues with the suicidal autopilot. Unfortunately, my tests so far lead me to believe that code might be buried in the exe, which is currently beyond my threshold for modding difficulty. If anyone knows more about changing collision damage, please let me know.

Also, the recent obj related transforms likely will break if applied to a game that has those files modded already, and may break if the game gets patched. It doesn't affect me personally for now, but give me a nudge if you want some more robust transforms to use with LU or similar.

Back to top
View user's profile Send private message
SirNukes





Joined: 31 Mar 2007
Posts: 103 on topic

Thank you for registering your game
PostPosted: Sun, 7. Jan 18, 03:03    Post subject: Reply with quote Print

Updated to 2.21.

After more hours spent with the KC than I care to admit to, I have now added the Stop_GoD_From_Removing_Stations option. This will short circuit the function which analyzes factories in a sector and picks ones to delete. This is an experimental transform, though I ran a bunch of tests today (at 127x Seta) to try different code edits before being satisfied that this fix should work.

I wasn't able to fully determine the mechanic for station deletion once the factory analysis is done. It kicks off into intermediate steps to generate Event objects which in turn mess around with scripts. If anything down that path is responsible for behavior other than factory deletion, it may be affected as well. Let me know if you notice any side effects.

As before, this transform will not work if the x3story.obj file has already been changed significantly (enough to cause pointer changes). I am mostly thinking of LU here, which I personally haven't tried yet. Making the transform work on that mod shouldn't be much trouble now that I know what to edit (assuming LU hasn't already changed GoD), so just holler if you want that.


If a save game has already has had a bunch of stations removed, it may be possible to restore them by having a setup script do an info dump of still existing stations, comparing that against x3universe to find what is missing, and copying those stations to a secondary map file to be reloaded. I'm not sure if/when I might get to that.


Other changes in 2.21 include:
- Upping the softcap on Seta speed to 127 from 50, which is the max positive signed byte value. In practice, the game only runs at ~40x speed for me (based on the play timer), but you might do better with a strong CPU.
- Added Disable_Asteroid_Respawn, which should allow permanent removal of unwanted asteroids. I suggest only using this temporarily when knocking out a few asteroids, and not leaving it on long term.

Back to top
View user's profile Send private message
Lone Machete





Joined: 03 Dec 2017
Posts: 23 on topic

Thank you for registering your game
PostPosted: Sun, 7. Jan 18, 11:58    Post subject: Reply with quote Print

to stop god removement entirely is a bad idea as you can read in the relative topics since number of stations is limited and god is more likely to build up stations in some areas of the map than in others, designing a very poor universe with only one truely "prospering" area while the rest stays more or less empty.

Back to top
View user's profile Send private message
SirNukes





Joined: 31 Mar 2007
Posts: 103 on topic

Thank you for registering your game
PostPosted: Mon, 8. Jan 18, 01:51    Post subject: Reply with quote Print

Can you provide links to such topics? I didn't run across any good documentation of GoD behavior in my searches; mostly it was just extrapolations based on individual experiences.

At any rate, the transform is reversible, for players to use as they see fit. Eg. turn off station removal when starting a new game, eventually place m5s at every station the player wants to keep, take a minute to turn station removal back on (save, rerun the customizer without the transform, reload), and let it go to work.

Back to top
View user's profile Send private message
SirNukes





Joined: 31 Mar 2007
Posts: 103 on topic

Thank you for registering your game
PostPosted: Sun, 15. Apr 18, 03:46    Post subject: Reply with quote Print

Major update to v3.2.

Support for compiling to a standalone executable has been added, removing the python requirement. The binary release can be found on the github releases tab, as a zip file. Note: this is still a command line tool at the time, so don't be surprised if you double click to launch it and nothing happens. Smile

Backwards compatibility may be slightly messy, as the older versions did not keep a log of which files they had written. Consider doing an empty run of the prior version first to undo its changes (using a command script with the correct path but no transforms). Alternatively, do at least one run on the new version before moving files out of the old sources folder.


The internal file management system has been reworked; it can now find source data from the standard game directory or from the cat/dat files, and no longer requires (though still supports) a high priority source folder. Existing files will be renamed (suffixed with .x3c.bak) when they would conflict with modified files; they have their name restored if the modified file is not created on the next run. A json log will be generated stating which files were written (with their sha256 hashes), as well as which renamed, to inform later runs.

The general source code structure of the project has been reorganized in a number of ways, though this is mostly transparent if you don't want to edit source. Various misc refinements have been made. The dependency on the scipy package has been removed, though if that package is available it can be used to create smoother scaling equations for transforms that support them.


As a bonus, an Allow_Valhalla_To_Jump_To_Gates transform has been added. Use at your own risk; I recommend some sort of ship size mod or gate mod to avoid crashes. This requires a KC edit, so currently will not work on mods that edit x3story.obj (eg. LU).

Thanks to akruppa (https://forum.egosoft.com/viewtopic.php?t=361709) for an example on how to decode the cat/dat pairs.

Back to top
View user's profile Send private message
Joubarbe





Joined: 31 Oct 2006
Posts: 3084 on topic
Location: France
Thank you for registering your game
PostPosted: Sun, 15. Apr 18, 05:14    Post subject: Reply with quote Print

Nice!


_________________
Mayhem - Satellites Monitoring - Internal Distribution Network - ADS (Joubarbian Edition) - The Joubarbian Toolkit - EasyConnect
Back to top
View user's profile Send private message
RoverTX



MEDALMEDALMEDAL

Joined: 16 Nov 2011
Posts: 670 on topic

Thank you for registering your game
PostPosted: Tue, 17. Apr 18, 06:38    Post subject: Reply with quote Print

Lone Machete wrote:
to stop god removement entirely is a bad idea as you can read in the relative topics since number of stations is limited and god is more likely to build up stations in some areas of the map than in others, designing a very poor universe with only one truely "prospering" area while the rest stays more or less empty.


What relative topics? I also have seen people say this alot, but I have never seen GoD actually add in any stations to fill missing gaps. It just seems to cull stations.


_________________
NPC Traders With Jump Drives O My
Station Capture Through TL Boarding
B.A.M. - Bad *ss Marines
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic Reply to topic Goto page Previous  1, 2
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum
Control Panel
Login Data
The time now is Mon, 23. Apr 18, 05:56

All times are GMT + 2 Hours


Board Security

Copyright © EGOSOFT 1989-2018
Powered by phpBB © 2001, 2005 phpBB Group
Template created by Avatar & BurnIt!
Debug: page generation = 0.10178 seconds, sql queries = 24