Home World Forum
Stars! AutoHost web forums

Jump to Stars! AutoHost


 
 
Home » Stars! Clones, Extensions, Modding » Stars! Extensions » Fixing Stars!
Fixing Stars! Sun, 24 November 2019 02:21 Go to next message
ricks03 is currently offline ricks03

 
Senior Chief Petty Officer

Messages: 92
Registered: January 2012
Location: NC
As I gain proficiency in manipulating Stars! files, it occurs to me it shouldn't be all that hard to fix some of the common concerns in .x files.

Any suggestions or tips as to what to fix? It occurs to me the colonizer still colonizing without a colonization module on it would likely be fairly easy to fix (famous last words) but looking at new ship designs in the .x file and resetting the "able to colonize" bit if the ship design doesn't actually have a colonization module on it.

The minefield dodge of looking to see if a waypoint is along the y (or in the case of speedbump x) axis (tho that sounds problematic, as you'd effectively have to outlaw moving in a straight line).

Things like that. Anyway, if anyone has pointers on what might be fixed along those conceptual lines. Bugs, tools, code, etc. The more specific the better.

Ideally a tool that scans .x files and just warns people there's a problem with the turn so they can't submit it to a hosting environment. Or something that actually flips the bits (as once you know what they are, changing them is relatively easy). The closer information is to "In this block, this thing can be broken, and it's byte [x]" of course Smile

Rick



https://www.irelandbybicycle.com
https://totalhost.sinister.net:999
https://github.com/ricks03/TotalHost

Report message to a moderator

Re: Fixing Stars! Sun, 24 November 2019 23:50 Go to previous messageGo to next message
ricks03 is currently offline ricks03

 
Senior Chief Petty Officer

Messages: 92
Registered: January 2012
Location: NC
Adding to the list (from StarsSupremacytool) : Currently checks for 22 or more superlatinum in a slot, prevents use of the 10th space dock for all races and prevents editing starbase design if there are partially completed ones in planet queue.

if (this.Races[num2].ShipDesigns[index] != null)
{
Design design = this.Races[num2].ShipDesigns[index];
foreach (DesignSlot slot in design.Slots)
{
if ((slot != null) && (((slot.CategoryID == Cool & (slot.ItemID == 11)) & (slot.Count >= 0x16)))
{
str = str + "You are not allowed to have 22 Superlatinum in one slot on the " + design.Name + " design\r\n";
}
}
}
index++;
}
while (index <= 15);
index = 0;
do
{
if (this.Races[num2].StarbaseDesigns[index] != null)
{
Design design2 = this.Races[num2].StarbaseDesigns[index];
foreach (DesignSlot slot2 in design2.Slots)
{
if ((slot2 != null) && (((slot2.CategoryID == Cool & (slot2.ItemID == 11)) & (slot2.Count >= 0x16)))
{
str = str + "You are not allowed to have 22 Superlatinum in one slot on the " + design2.Name + " design\r\n";
}
}
}

if (!this.Settings.AllowTenthStarbaseSlotToBeUsed[num2] && (this.Races[num2].StarbaseDesigns[9] != null))
{
str = str + "You are not allowed to use the 10th Starbase design slot\r\n";
}


if (!this.Settings.AllowDesignChangesToPartiallyCompletedItems[ num2])
{
int num6 = this.PlanetCount - 1;
for (int i = 0; i <= num6; i++)
{
Planet planet = this.Planets[i];
if (planet.ProductionQueue != null)
{
foreach (QueueItem item in planet.ProductionQueue)
{
if (((item.Completion > 0) && ((item.ItemID >= 0x20) & (item.ItemID <= 0x29))) && ((this.Races[num2].StarbaseDesigns[item.ItemID - 0x20] != null) && this.Races[num2].StarbaseDesigns[item.ItemID - 0x20].Dirty))
{
str = str + "You are not allowed to edit the starbase designs " + this.Races[num2].StarbaseDesigns[item.ItemID - 0x20].Name + " because one is already partially completed at Planet No " + Conversions.ToString((int) (i + 1)) + "\r\n";
}
}
}
}
}



https://www.irelandbybicycle.com
https://totalhost.sinister.net:999
https://github.com/ricks03/TotalHost

Report message to a moderator

Re: Fixing Stars! Wed, 27 November 2019 00:23 Go to previous messageGo to next message
ricks03 is currently offline ricks03

 
Senior Chief Petty Officer

Messages: 92
Registered: January 2012
Location: NC
OK, I can now correct for the Colonizer bug (if a ship is submitted with it, reset the values so it's back to a normal empty slot).

I can also at least warn/prevent someone from:
-submitting a turn causing the Space Dock Armor slot Buffer Overflow
-designing a 10th Starbase prompting the crash for 10 Starbases.


I'll get around to integrating into my hosting program eventually. If anyone wants a scrip that will detect all of these and report (useful if you've automated turn gen) let me know.




https://www.irelandbybicycle.com
https://totalhost.sinister.net:999
https://github.com/ricks03/TotalHost

Report message to a moderator

Re: Fixing Stars! Thu, 28 November 2019 17:21 Go to previous messageGo to next message
Ron is currently offline Ron

 
Commander
Forum Administrator
Stars! AutoHost Administrator

Messages: 1217
Registered: October 2002
Location: Collegedale, TN
ricks03 wrote on Wed, 27 November 2019 00:23
OK, I can now correct for the Colonizer bug (if a ship is submitted with it, reset the values so it's back to a normal empty slot).

I can also at least warn/prevent someone from:
-submitting a turn causing the Space Dock Armor slot Buffer Overflow
-designing a 10th Starbase prompting the crash for 10 Starbases.


I'll get around to integrating into my hosting program eventually. If anyone wants a scrip that will detect all of these and report (useful if you've automated turn gen) let me know.


Yes, email it please.



Ron Miller
Stars! AutoHost

Report message to a moderator

Re: Fixing Stars! Sun, 15 December 2019 19:00 Go to previous messageGo to next message
mrvan is currently offline mrvan

 
Officer Cadet 1st Year

Messages: 218
Registered: May 2014
Would this also allow you/us to make changes to the files to do some rebalancing?

I could imagine e.g. preventing AR space deaths; replacing CA instaforming by cheap terraforming; removing the mineral 'tax' on packets; etc.

Report message to a moderator

Re: Fixing Stars! Sun, 15 December 2019 19:48 Go to previous messageGo to next message
ricks03 is currently offline ricks03

 
Senior Chief Petty Officer

Messages: 92
Registered: January 2012
Location: NC
I can (with high degrees of effort if the bits aren't already known) modify .x files (the data going in) and .m files (the data coming out). I can't modify at all what's happening at actual generation.

So one could look at the data that went in, and the data that came out, and then modify it appropriately depending on the particular data. That would require knowing likely the .m and .x file from the turn pre-generation, and the .m file post generation, and then changing it. So you could look at the cargo of an AR race before the turn is generated, and then after the turn was generated, set it back. Fiddly, but doable.

I just want to control for cheats and bugs. Modifying the core game is not a task I'm interested in; I like the game as it is! The only thing I do when I play/host adjust the number of points for race submission.




https://www.irelandbybicycle.com
https://totalhost.sinister.net:999
https://github.com/ricks03/TotalHost

Report message to a moderator

Re: Fixing Stars! Wed, 18 December 2019 20:15 Go to previous messageGo to next message
m.a@stars is currently offline m.a@stars

 
Commander

Messages: 2760
Registered: October 2004
Location: Third star to the left
From the Known Bugs (JRC3) - Player Exploitable Bugs / Features list, I'd try to detect and/or nerf Split Fleet Dodge, dodgy Mineral Upload, AR Starter Colony 'block', Prod Qs blocked due to lack of minerals, 'fleet targeting fleet' bugs, AR Mineral Fountain, SpaceDock 'infinite' refueling, CA hab Intel on non-Allies, the 512 fleet limit eating newly produced ships... Confused

Also, maybe lay the groundwork for external micromanagement/automation tools, which would need to insert/tweak lots of orders in the x file, and extract lots of actionable data from the m file. Rolling Eyes

Also 'shared' Intel tools, so a player can 'export' planet or fleet data, and give/sell it to others. Teleport


[Updated on: Wed, 18 December 2019 20:36]




So many Stars, so few Missiles!

In space no one can hear you scheme! Deal

Report message to a moderator

Re: Fixing Stars! Wed, 18 December 2019 20:34 Go to previous messageGo to next message
ricks03 is currently offline ricks03

 
Senior Chief Petty Officer

Messages: 92
Registered: January 2012
Location: NC


I do appreciate your enthusiasm. In the context that all of my work is focused on extending Totalhost:
-I don't consider split fleet/dodge a bug given the changes to the Patrol order in jrc4 (How you'd even fix that in .x files I have no idea).
-I plan on filtering for the "Stealth pick up pop", correcting much like the ability to colonize with colonizers with no colonization module that I can already fix.
-I plan on figuring out how to clear the queue for AR starter colonizers, but I don't know if it's possible from a .x file.
-I have no idea how to fix a queue blocked due to lack of minerals (and I don't consider it a bug - manage your queue).
-I believe I've already fixed for CA player info.
-I don't know how I'd calculate (or fix) for the 512 fleet limit. In a hosting context I could possibly review submitted files and figure out how many fleets there would be, and warn people. . . but I've already made a stab at fleet info, but I'm hindered by the block not being translated enough. That's probably more complicated than I care to bite off. Someone who helped out with that would make that process faster. . .
-For that matter, my code is on Github, so if you want a tool, either submitted code to me, or modifying the TH code and submitting it would also speed things up. TH includes a tool that will let you display the decrypted data for a block type. Patiently making changes to a file and noting the changes can lead to determining heretofor unknown block information.

For several things I plan on displaying notes/warnings on submitted turns, instead of making actual changes.


The groundwork for writing external management tools is the library/API raptor is building. Much of my work is leveraging that Java API into perl tools (just the tools that I want). Smile and I want to fix/detect/clear bugs, not change the game.






https://www.irelandbybicycle.com
https://totalhost.sinister.net:999
https://github.com/ricks03/TotalHost

Report message to a moderator

Re: Fixing Stars! Thu, 19 December 2019 18:51 Go to previous messageGo to next message
m.a@stars is currently offline m.a@stars

 
Commander

Messages: 2760
Registered: October 2004
Location: Third star to the left
I'm thinking not only of stomping bugs, but also about enforcing special rules (such as IT allows Allies to refuel, but Gating is reserved for Friends...), and helping craft tools that simplify the management of empires with more than a few planets. Twisted Evil

For instance: changing Production Queues for planets that meet certain conditions. Sending fleets of interest to some particular rendez-vous. Check for simple yet dangerous mistakes. Automation. Cool



So many Stars, so few Missiles!

In space no one can hear you scheme! Deal

Report message to a moderator

Re: Fixing Stars! Thu, 19 December 2019 22:53 Go to previous messageGo to next message
ricks03 is currently offline ricks03

 
Senior Chief Petty Officer

Messages: 92
Registered: January 2012
Location: NC
I appreciate your enthusiasm.

I'll admit I'd love to see a filter that let you share fuel (backend) but not gating (front end). I look forward to your code contribution Smile




https://www.irelandbybicycle.com
https://totalhost.sinister.net:999
https://github.com/ricks03/TotalHost

Report message to a moderator

Re: Fixing Stars! Fri, 20 December 2019 19:37 Go to previous messageGo to next message
m.a@stars is currently offline m.a@stars

 
Commander

Messages: 2760
Registered: October 2004
Location: Third star to the left
Alas, no code yet. Rolling Eyes

I guess there's 2 ways to split Fueling from Gating:

1) Allow Fueling of Neutrals, by tweaking the m file. Teleport

2) Disallow Gating orders in the x file for Friends not on a special Permissions list. Such a list could be generated/maintained by sending coded/formatted messages to self, and include things such as minefields, exclusion zones, off-limits Gates, etc, etc. Twisted Evil



So many Stars, so few Missiles!

In space no one can hear you scheme! Deal

Report message to a moderator

Re: Fixing Stars! Sat, 21 December 2019 02:46 Go to previous messageGo to next message
ricks03 is currently offline ricks03

 
Senior Chief Petty Officer

Messages: 92
Registered: January 2012
Location: NC
I'd be more likely to rig it that if a move order was "Use Stargate" for an ally, delete it. (removing all ability to gate at an allies planet), and then make it a hosted game option.

tho the second is clever, and more interesting, if more complicated.



https://www.irelandbybicycle.com
https://totalhost.sinister.net:999
https://github.com/ricks03/TotalHost

Report message to a moderator

Re: Fixing Stars! Sat, 21 December 2019 06:05 Go to previous messageGo to next message
mrvan is currently offline mrvan

 
Officer Cadet 1st Year

Messages: 218
Registered: May 2014
Is it also possible to create/alter .x files to automate more?

For example, I could imagine writing little scripts to automate mineral balancing, mass rerouting, setting gate+merge orders on slightly overweight ships, etc.

Report message to a moderator

Re: Fixing Stars! Sat, 21 December 2019 14:17 Go to previous messageGo to next message
ricks03 is currently offline ricks03

 
Senior Chief Petty Officer

Messages: 92
Registered: January 2012
Location: NC
The only thing that's a factor is whether a block is completely mapped.

I have tools up on TotalHost that will let you view (and change) the output of a block. The API from Raptor has the block information that has been mapped so far (sort of).

So you can make a single change, submit a tun, and look at the output of a .x file. From there it's (painfully) possible to map blocks. It's made harder by the intense compression of stars. Even things like text use a clever algorithm to try to save space. Some blocks have two formats (long and short) depending on what data is stored within them. Often pieces of a byte are more than one tidbit of information, so you have to break it out in binary.


So it's "easy" to read and change values in a .x file to what you want, once they're mapped. Sky's the limit if the block is mapped.


[Updated on: Sat, 21 December 2019 14:47]




https://www.irelandbybicycle.com
https://totalhost.sinister.net:999
https://github.com/ricks03/TotalHost

Report message to a moderator

Re: Fixing Stars! Mon, 23 December 2019 23:36 Go to previous message
ricks03 is currently offline ricks03

 
Senior Chief Petty Officer

Messages: 92
Registered: January 2012
Location: NC
There are tools in the Totalhost suite to just list the block values for those patient enough to untangle them.


https://www.irelandbybicycle.com
https://totalhost.sinister.net:999
https://github.com/ricks03/TotalHost

Report message to a moderator

Previous Topic: Player messages fully decoded
Goto Forum:
  


Current Time: Mon Jan 27 10:40:44 EST 2020