Commit Graph

46 Commits

Author SHA1 Message Date
metalgearsloth
2299399226 Rate-limit AI updates (#2120)
* Rate-limit AI updates

Stop the public servers from getting hammered too hard.

* Add logger for the AI limit as well.

* Also support AI maxupdates <= 0

Juuusssttt in case

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-09-24 16:04:01 +02:00
Swept
0ea8792501 Cleanup (#2111) 2020-09-20 17:29:11 +02:00
DrSmugleaf
74943a2770 Typo, redundant string interpolation, namespaces and imports cleanup (#2068)
* Readonly, typos and redundant string interpolations

* Namespaces

* Optimize imports

* Address reviews

* but actually

* Localize missing strings

* Remove redundant vars
2020-09-13 14:23:52 +02:00
DrSmugleaf
48b61f6bcc Replace every usage of GridCoordinates with EntityCoordinates (#2021)
* Update RobustToolbox

* Transition direct type usages

* More updates

* Fix invalid use of to map

* Update RobustToolbox

* Fix dropping items

* Rename name usages of "GridCoordinates" to "EntityCoordinates"

* Revert "Update RobustToolbox"

This reverts commit 9f334a17c5908ded0043a63158bb671e4aa3f346.

* Revert "Update RobustToolbox"

This reverts commit 3a9c8cfa3606fa501aa84407796d2ad920853a09.

# Conflicts:
#	RobustToolbox

* Fix cursed IMapGrid method usage.

* GridTileLookupTest now uses EntityCoordinates

Co-authored-by: Víctor Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
Co-authored-by: Víctor Aguilera Puerto <zddm@outlook.es>
2020-09-06 16:11:53 +02:00
DrSmugleaf
9d6c394f6b Refactor InRangeUnobstructed and add extension methods (#1925)
* Sort out InRangeUnobstructed and add extension methods

* Rename client RangeChecks to RangeExtensions

* Add container extension methods and test

* Add missing component methods

Component to container
Grid coordinates to container
Map coordinates to container
Local player to container

* Actually use the field

* Merge fixes

* Add popup argument to local player extension methods

* Reduce code repetition for client range extensions
2020-08-30 11:37:06 +02:00
metalgearsloth
b0a18ebc5b Fix AiReachable crash (#1913)
This system haunts my nightmares and I'm gonna refactor it before release.

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-08-25 16:44:23 +02:00
metalgearsloth
6240f43ea5 Fix AI mapping crash (#1915)
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-08-25 16:16:54 +02:00
DrSmugleaf
8a27a5322a Replace pragma warning 649 disable/restore with default! 2020-08-24 14:10:28 +02:00
metalgearsloth
969eeb5528 Add AI factions (#1807)
* Add NPC faction tags

Some stuff isn't easy to represent by the existence of components so tags are intended to provide that functionality for AI usage.

I was 50/50 on having all tags in the 1 component or splitting it into 2. I'm leaning towards 2. This would be for stuff like say "CanMimic" so the mimic knows it's allowed to look like a specific prototype, or something like "smg" on a gun so it can say smg-specific barks for instance (as currently smgs and pistols look the same from a component perspective).

This also means combat behaviors aren't hardcoded per faction, plus it makes it easy to update faction relations during events.

* Factions command

Update faction relationships via commands.

* Remove command TODO

* Woops

Forgot to commit these items

* Serializer writing and parsing

* linq me up fam

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-08-24 12:33:03 +02:00
metalgearsloth
0b4ca168d4 Fix AI steering throw (#1872)
Entity steering wasn't properly checking if the target was deleted.

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-08-23 12:42:59 +02:00
DrSmugleaf
b9196d0a10 Add a test that puts all components on an entity and checks for no exceptions (#1815)
* Add test that puts all components on an entity and checks for no exceptions

Also fix all the exceptions that happened because of this

* Add comments to the test

* Fix nullable errors

* Fix more nullable errors

* More nullable error fixes

* Unignore basic actor component

* Fix more nullable errors

* NULLABLE ERROR

* Add string interpolation

* Merge if checks

* Remove redundant pragma warning disable 649

* Address reviews

* Remove null wrappers around TryGetComponent

* Merge conflict fixes

* APC battery component error fix

* Fix power test

* Fix atmos mapgrid usages
2020-08-22 22:29:20 +02:00
metalgearsloth
72e50cce94 AI pickup changes (#1811)
* AI pickup changes

Eating and drinking isn't spammed anymore.
AI can do InRangeUnobstructed checks for item pickups.
AI can open drink cans.

AI littering to be coded.

* #nullable enable

* github's nullable fails are actively shortening my lifespan

* Use a const instead

So it's easier to find given the performance implications.

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-08-22 12:03:24 +02:00
Pieter-Jan Briers
bf60a4e9fc Merge branch 'master' into mathmerge 2020-08-20 20:33:43 +02:00
metalgearsloth
04bc20c365 AI sleeping (#1708)
* AI sleeping

AI no longer update when dead.

* It was easier to merge master and re-apply it.

* Update AiControllerComponent.cs

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
2020-08-18 15:14:55 +02:00
Visne
0b448b500d Merge MathHelper and FloatMath
Requires  space-wizards/RobustToolbox#1234
2020-08-16 14:54:52 +02:00
Vince
b647ad0f42 Refactor UpdateKinematics() and fix a lot of Content warnings (#1709)
Most warnings were related to EntityQuery and IPhysicsComponent.
Partially fixes #1650 and fixes #1682
2020-08-15 20:38:35 -07:00
DrSmugleaf
4a8ed41e3a Fix namespaces and optimize imports (#1651)
* Fix namespaces and optimize imports

* Cleanup fixes

* Merge conflict fixes

* Merge conflict fixes

* Merge conflict fixes
2020-08-13 14:40:27 +02:00
metalgearsloth
619386a04a Server EntitySystem cleanup (#1617)
* Server EntitySystem cleanup

I went after low-hanging fruit systems.

* Add / change to internal access modifiers to systems
* Use EntityQuery to get components instead
* Add sealed modifier to systems
* Remove unused imports
* Add jetbrains annotation for unused classes
* Removed some pragmas for dependencies

This should also fix a decent chunk of the server build warnings, at least the ones that matter.

* Also disposals

* Update Content.Server/GameObjects/EntitySystems/GravitySystem.cs

* Fix build

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
Co-authored-by: Víctor Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
2020-08-13 14:17:12 +02:00
Pieter-Jan Briers
f182ff5613 Remove CannyFastMath. 2020-08-12 21:19:34 +02:00
metalgearsloth
b34bd7c188 AI preset curves and expandable optimisation (#1346)
* AI preset curves and expandable optimisation

Added preset curves for considerations to use just to avoid repeating the same variables all over the shop.

Moved common considerations for expanded actions onto the expandable action e.g. you need a free hand to be able to PickUpGloves so we'll just check it the once rather than for each action.

* FIX PRAGMA

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-08-11 22:01:55 +02:00
metalgearsloth
452a67032f Fix the pathfinding leak (#1647)
Off-grid entities were continually expanding the graph indefinitely which is... bad.

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-08-11 17:36:40 +02:00
Víctor Aguilera Puerto
ec75baeede Disables the AI Pathfinding system for the time being. 2020-08-10 03:33:05 +02:00
metalgearsloth
140f8f7647 AI reachable improvements (#1595)
Deleted regions in some instances were being retained indefinitely.

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-08-05 16:19:00 +02:00
metalgearsloth
7f0c379e87 Fix reachable merges (#1550)
Turns out the last PR revealed another issue but this will fix #1547

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-08-01 14:13:44 +02:00
metalgearsloth
89e0925c32 Better AI reachable cleanup (#1507)
Haven't profiled so can't say if it definitely fixes the leak.

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-07-27 16:11:07 +02:00
metalgearsloth
4e1597eeb3 Fix AI mem leak? (#1482)
Holy shit I'm dumb for missing that AGAIN.

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-07-25 21:27:24 -07:00
metalgearsloth
56737b635f Damage visualizer for simple mobs (#1332)
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2020-07-23 02:04:03 +02:00
Acruid
c9374992a6 Converted everything to use collision and physics component interfaces. 2020-07-19 00:33:02 -07:00
Pieter-Jan Briers
11ad47303a Fixes exceptions in AiReachableSystem on round restart. 2020-07-17 11:17:42 +02:00
metalgearsloth
51d08e8b05 AI Reachable system (#1342)
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-07-11 15:09:37 +02:00
metalgearsloth
a77f219515 Minor A* optimisations (#1335)
* Add some extra comments
* Remove the redundant closedTiles variable
* Rename some variables to better match the common naming schemes

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-07-10 20:30:33 +02:00
metalgearsloth
8938d96402 Fix AI avoiding entities they can't collide with (#1331)
Should stop mobs getting trapped at the bar on saltern as they try to avoid light bulbs

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-07-09 14:15:48 +02:00
Metal Gear Sloth
62302bfb23 Use named tuples
Thanks remie
2020-07-09 00:16:57 +10:00
metalgearsloth
b4adfbc15a Update Content.Server/GameObjects/EntitySystems/AI/Steering/AiSteeringSystem.cs
Co-authored-by: Remie Richards <remierichards@gmail.com>
2020-07-09 00:03:48 +10:00
Metal Gear Sloth
8678d867cf Fix AI steering spamming console
Turns out you shouldn't cancel pending jobs.
2020-07-08 23:44:47 +10:00
Metal Gear Sloth
facaee0cab Remove redundant method
Not used anymore.
2020-07-08 21:12:23 +10:00
Metal Gear Sloth
ae1c578e8e Fix pathfinding entity deletions
Also some slight optimisations in the process.
2020-07-08 21:05:27 +10:00
metalgearsloth
1d96adcc2c Add Breadth-First Search pathfinder (#1283)
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-07-08 01:41:41 +02:00
metalgearsloth
0ecaba1727 Minor AI system fixes (#1292)
* Add test to check all LogicNames in prototypes
* Change CreateProcessor to AiLogicProcessor (I thought I'd already done this as I remember PJB telling me to do this but apparently I'm an idiot)
* Temporarily remove invalid AiControllers

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-07-07 18:56:38 +02:00
metalgearsloth
29f1730d71 Remove pathfinding graph node directions (#1223)
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-06-28 17:43:06 +02:00
metalgearsloth
24831bf8a0 Refactor AI movement (#1222)
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-06-28 17:42:44 +02:00
Pieter-Jan Briers
f3a816321c Merge branch 'master' into 20-06-24-movement-prediction 2020-06-24 04:04:43 +02:00
Pieter-Jan Briers
da45a52325 WiP movement prediction. 2020-06-24 02:21:20 +02:00
metalgearsloth
805a5f1689 Refactor pathfinding updates and add AccessReader support (#1183)
There was some extra bloat in the path graph updates.
Now the queue should also just run if it gets too big regardless.
Un-anchored physics objects are no longer a hard fail for pathfinding.
Add AccessReader support so open / close doors show up for pathfinding
AI also ensure they call the operator's shutdown when they're shutdown so that should cancel the pathfinding job.

I tried to split these into 2 commits but they were kinda coupled together

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-06-22 18:55:50 +02:00
DrSmugleaf
ac19ad7eac Fix crash when the round restarts (#1161) 2020-06-21 17:28:43 +02:00
metalgearsloth
5391d3c72a Add utility AI (#806)
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2020-06-18 14:52:44 +02:00