Editing ActorSerializeParameter and AI
Jump to navigation
Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 91: | Line 91: | ||
[[File:p4-portaltrigger-ai.png |500px|thumb|center|]] | [[File:p4-portaltrigger-ai.png |500px|thumb|center|]] | ||
− | === | + | === AreaBaseAI Gen Variable === |
This chart is for the base camps. | This chart is for the base camps. | ||
Line 98: | Line 98: | ||
− | === | + | === SprinklerAI and ObjectAIParameter === |
Objects mostly seem composed of two objects - <code>ObjectAIParameter</code> and an entity-specific object, like <code>SprinklerAIParameter</code>. The former contains inventories (<code>DropParameter</code>) and some stuff to do with edge collision it seems, while the latter controls everything specific to the entity. The chart below illustrates it for sprinklers. | Objects mostly seem composed of two objects - <code>ObjectAIParameter</code> and an entity-specific object, like <code>SprinklerAIParameter</code>. The former contains inventories (<code>DropParameter</code>) and some stuff to do with edge collision it seems, while the latter controls everything specific to the entity. The chart below illustrates it for sprinklers. | ||
− | |||
− | |||
− | |||
− | |||
[[File:p4-sprinkler-objectAI.png |500px|thumb|center|]] | [[File:p4-sprinkler-objectAI.png |500px|thumb|center|]] | ||
− | === | + | === ValveAI === |
− | Valves have a few properties in their parameter, but ObjectParameter is mostly unused here. There are some missing values that I haven't found the indexes for, but you can see the default values in FModel's blueprint. The enum values for EValveWorkType are also unknown, but 2 and 6 are confirmed. | + | Valves have a few properties in their parameter, but ObjectParameter is mostly unused here. There are some missing values that I haven't found the indexes for, but you can see the default values in FModel's blueprint. The enum values for EValveWorkType are also unknown, but 2 and 6 are confirmed. |
[[File:p4-valveai.png |500px|thumb|center|]] | [[File:p4-valveai.png |500px|thumb|center|]] | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== Researching === | === Researching === | ||
Line 130: | Line 114: | ||
The best way of breaking down the AI parameter (I have found) is to combine the blueprint JSONs from the <code>Sublevels/</code> folder, with the <code>ActorPlacementInfo</code> file of the same type. The Sublevels files contain the gen_variables that seem to be encoded into the byte arrays of ActorSerializeParameter. | The best way of breaking down the AI parameter (I have found) is to combine the blueprint JSONs from the <code>Sublevels/</code> folder, with the <code>ActorPlacementInfo</code> file of the same type. The Sublevels files contain the gen_variables that seem to be encoded into the byte arrays of ActorSerializeParameter. | ||
− | AI parameters can be found by searching for <code>{entity}AI_GEN_VARIABLE</code>, for example <code>ElecMushiAI_GEN_VARIABLE</code> for Anode Beetles. Most of the contents of that object's <code>Properties</code> will be encoded in that actor's <code>ActorSerializeParameter.AI.Static</code> in the <code>ActorPlacementInfo</code> file, so you can compare things like the drop numbers, asset path and other such floats for occurrences of those values in the AI array. Strings are often the easiest to find/locate with due to their easy to spot nature (look for the big sequence of non-0 numbers and decode it to see if it matches what you need) | + | AI parameters can be found by searching for <code>{entity}AI_GEN_VARIABLE</code>, for example <code>ElecMushiAI_GEN_VARIABLE</code> for Anode Beetles. Most of the contents of that object's <code>Properties</code> will be encoded in that actor's <code>ActorSerializeParameter.AI.Static</code> in the <code>ActorPlacementInfo</code> file, so you can compare things like the drop numbers, asset path and other such floats for occurrences of those values in the AI array. Strings are often the easiest to find/locate with due to their easy to spot nature (look for the big sequence of non-0 numbers and decode it to see if it matches what you need). |
A scrape of all of the sublevel files can be found in [https://github.com/Chagrilled/P4-DandoriDesktop/blob/master/src/api/sublevels.json Dandori Desktop's repo] which collects every parameter that each entity ever defines - so every drop, and config param ever given to any Kochappy, for example. This is very useful for finding all the potential values of random things like <code>GameRulePermissionFlag</code> or <code>CustomParameter</code>, and is a great starting point for piecing parts of the AI puzzles together, as params like <code>ObjectAIParameter</code> and <code>TekiAIParameter</code> are shared frequently, with individual properties being set on certain entities. This isn't comprehensive as many properties are just left defaulted, which doesn't mean they can't be changed, just that we don't have 2 differing examples to easily locate them in the bytes. | A scrape of all of the sublevel files can be found in [https://github.com/Chagrilled/P4-DandoriDesktop/blob/master/src/api/sublevels.json Dandori Desktop's repo] which collects every parameter that each entity ever defines - so every drop, and config param ever given to any Kochappy, for example. This is very useful for finding all the potential values of random things like <code>GameRulePermissionFlag</code> or <code>CustomParameter</code>, and is a great starting point for piecing parts of the AI puzzles together, as params like <code>ObjectAIParameter</code> and <code>TekiAIParameter</code> are shared frequently, with individual properties being set on certain entities. This isn't comprehensive as many properties are just left defaulted, which doesn't mean they can't be changed, just that we don't have 2 differing examples to easily locate them in the bytes. | ||
The blueprints can also be viewed in FModel (in <code>Placeables/</code>), and you can find the <code>AI_GEN_VARIABLE</code>s which should have all the property names and their default values. I've had limited success here, as you often can't just find the value in the AI bytes, but it can definitely give insight into what must be available in the object, and other possible enum values etc. This leads me to think it's possible that non-overriden fields of the gen variable objects are left zeroed, which doesn't make much sense, because how would you set a value of zero? idk. | The blueprints can also be viewed in FModel (in <code>Placeables/</code>), and you can find the <code>AI_GEN_VARIABLE</code>s which should have all the property names and their default values. I've had limited success here, as you often can't just find the value in the AI bytes, but it can definitely give insight into what must be available in the object, and other possible enum values etc. This leads me to think it's possible that non-overriden fields of the gen variable objects are left zeroed, which doesn't make much sense, because how would you set a value of zero? idk. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
[[Category:Pikmin 4]] | [[Category:Pikmin 4]] | ||
[[Category:Parameters]] | [[Category:Parameters]] |