Akaito/reassembly-ai-mod-example

Various requests regarding C++ AI modding

Owlfeathers asked for this feature 8 months ago — 5 comments

Owlfeathers commented 8 months ago

Probably easier to just put these all here instead of having them haphazardly strewn around the #ask_arthur channel (these aren't in any particular order):

  • Addition of dll export/.lib file update to include getHealthFaction() function (for implementing disengage behaviour on critically damaged ships)

  • Access to/explanation of core radius calculations (core radius is very different from what I'd expect on some ships, which is causing problems with adding certain AI behaviours)

  • Some kind of capability to recognize tournament arena boundaries

| manylegged commented 8 months ago Admin

Formally the core radius is the mean plus one standard deviation of the blocks in the ship weighted by P (min 0.25 P). You can loop over the blocks in a ship in the AI and calculate it however you want, just beware that it can get slow quickly if you aren't careful.

You can access the tournament arena boundaries with zone->getStreamer()->getBoundsRadius() which returns a float2 width/height and and zone->getStreamer()->getBoundsEdges() which returns the number of verts (e.g. 8).

These functions aren't dll exported yet but will be soon.

| manylegged commented 8 months ago Admin

Note that ships/clusters also have a member called "bbox" which stores the unroted axis aligned bounding box which might be more appropriate for long skinny ships (I think +x is forwards). AABBox has .mn and .mx members which are the minimum and maximum points.

| manylegged commented 8 months ago Admin

The ReassemblyRelease.lib has been updated so getHealthFaction() should be available now (need beta reassembly).

| manylegged commented 8 months ago Admin

implemented, closing.

Join the discussion!

Sign-in with GitHub to comment