AI warp flight – experiments & ideas

Hello!

Warp drive is an underrated feature in Infinity: Battlescape. Utilized to its fullest, it has the potential to expand the area players and AIs fight in from around stations to actually encompassing the planetary system. One of reasons that is yet to happen seems to be in how AIs aren’t using warp drive to travel freely, not even in combat. As a result, they need to be spawned at battles, which limits examples of flight for players to learn from, and advanced interactions like rallying, reinforcements, interdicts, get blocked for AIs completely. It’s related to inherent problems of how AI movement calculation, warp drive speed function, even netcode, interact together.

Now, with Mission Runtime’s features, path is open for experiments! :fire:

This topic is for sharing and discussing these exactly, as well as general ideas related to the topic of IB’s AI ships attempting warp flight. No promises. More like experiments to see how or if things can work.

— – — – —

To begin, check out a simple scenario with a corvette follower:

The script. Put it in the Workshop folder:
Warp hops AI scenario.rar (3.1 KB)

The scenario demonstrates how ship AI has an overshot problem by setting a corvette on a path. Path is premade with CreatePath, matched with waypoints one to one, intentionally dips closer to planet. I have added “Range” attributes, wondering if they would work, but looks like no. As a result, corvette overshoots waypoints more often, mainly because it starts braking too late.

Basic solution is made using MoveAI. Code is taken from Training, and modified to have destination distance scaled with corvette’s approach relative speed. It’s imprecise, and still works, mainly because part of braking is already implemented into MoveAI. This solution resembles an approach players very likely have, with speed limits being related to distance… aaand as a result, has similar errors too :smile:

image

Such simplicity can be beneficial for a while. When players attempt formation flight, they have trouble managing relative speeds with current warp drives — these have no cooperation, no reference frame to share, so it becomes fine to get separated and rally at slow speed near destination. This is what AIs might be able to mimic. It is worth exploring for at least making battlescapes more lively, and better yet, I suspect there are ways to implement combat at high speeds later on. Hey, Warp Jam was one such example already!

Most likely, next thing to try would be in automating autonomous warp activation, as for now that racer corvette’s warp drive is initiated by a custom function. Though again, no promises.

1 Like

It would be nice to have AIs travel in-system between battles/bases, but it is currently out of scope. Plus the server has a limit to the number of bots for performance reasons, so if a bot isn’t in a battle, it reduces by 1 the size of the potential battle. Ex.: if your server had a limit of 400 bots and 200 of them were in warp/doing other stuff, then the max size of a battle would be 200 bots, which currently corresponds to “small” battles.

What is not out of scope is to have AI micro-warp withint a battle, to travel to a target that is like 100+ Km away. That’s on my todo list, hopefully for the next December patch (but no guarantees).

Hello, and thanks for joining the topic!

Reaching beyond current scope limits is expected, these are experiments after all. I think that results would come in useful later on. Currently main driver is experience in Assault mode, previously online, now in Sandbox, and next important would be cinematics — some would be needed for animations.

On bots in battle it’s the same thing like with separated ships slowboating to targets. They’re kind of still in battle. Being interceptable, and being attackable by them in return, is what makes them included. They can be compartmentalized into tiny battles even near each other anyway. Use of warp scales down the time between combat, and range of being included in battles as a result.

Which is a thing among some others I’d like to try someday. Context stems from inability to join online servers by fair means — OVH servers are currently throttled in my country. Meanwhile, in Sandbox my old processor can handle about 50-60 ships. With current battle and reinforcements mechanics they sometimes run out completely. Making a custom scenario where there always are 50 ships in flight, that continuously spawn at stations, can switch classes, and can get me and each other anywhere in the system, is the idea.

Solving bit by bit :hourglass_flowing_sand:

Oh wow it sucks that your bandwidth is being throttled. Any idea by how much ? Even in big battles it normally consumes 50 to 100 Kb/s, is that still too much ? No VPNs ?

I got ideas for scenarios/challenges as well, but no time to experiment with those atm :frowning:

Judging by news, as little as 16 Kb/s. Name servers can be pinged, route is traceable, but no response from them reaches back. Haven’t tried VPNs either, mostly due to neglect of the topic. Too little free budget for sustain or for mishaps.

Yeah I can see why 16 Kb/s wouldn’t be enough. What about the asian server ? Are you getting throttled there too ?

Yes, there too. All three servers are visible, but not joinable. Singapore server, still from OVH.

Sneaking in a scripting question in parallel: What’s the correct tag for dividing by value? I found MulValue for multiplying, but might have missed one for dividing.

Binary operations: AddValue, MulValue, SubValue, DivValue, MinValue, MaxValue, PowValue, ModValue, RandomValue (between min/max range), DistanceValue (between two vectors), AngleValue (same), DotValue (same), CrossValue (same).

Unary operations: AbsValue, NegValue, ClampValue (in 0-1), NormalizeValue

1 Like

Wonderful, thank you! PowValue, ClampValue, ModValue are also in, cool :fire: