Commit Graph

951 Commits

Author SHA1 Message Date
Imbris
c36d6e873f Fix issue with the region subscription system not updating on view
distance changes (until the player crossed a chunk boundary and
triggered the normal update).

This introduces a `ViewDistance` struct that provides an abstraction
around limiting the rate the view distance can be cycled up and down.
This helps avoid unnecessary sending, deleting, and then resending of
synced things like entities (the client will still delete its terrain
locally and re-request it though).

The second part of this fix is storing the last view distance in the
`RegionSubscription` struct and then updating region subscriptions if
this doesn't match the current view distance in the `Presence`
component.
2022-08-25 23:24:43 -04:00
flo
e882e62c08 seachapel 2022-08-24 21:50:53 +00:00
Tormod Gjeitnes Hellen
e306b3bfe3
Have the ambushers say something.
Very unsure about the way I did this...
2022-08-17 23:50:09 +02:00
Tormod G. Hellen
753a51e683
Make selfish bastards ambush people when they're alone. 2022-08-17 23:50:09 +02:00
Samuel Keiffer
9112e2177a Merge branch 'vfoulon80/agent-behavior-tree' into 'master'
Refactor agent's behavior tree

See merge request veloren/veloren!3500
2022-08-11 20:46:14 +00:00
Vincent Foulon
b1baa09815
Address review comments 2022-08-11 21:15:46 +02:00
Joshua Barretto
602de267b1 Perform validation on all kinds of chat message 2022-08-11 11:11:33 +01:00
Joshua Barretto
4e103c433f Simplified and improved alias validation 2022-08-11 11:11:31 +01:00
Joshua Barretto
52bd7b2485 Added automod 2022-08-11 11:09:52 +01:00
IsseW
87821d5c1d force update counter 2022-08-09 19:22:09 +02:00
Isse
0471e78f41 spectate mode :D 2022-08-09 18:43:13 +02:00
Vincent Foulon
c1dcb6e412
Fix missing translation key in interaction 2022-08-07 21:16:31 +02:00
Vincent Foulon
b82da6acdb
Reimplement !3508 2022-08-07 21:11:58 +02:00
Vincent Foulon
62568d2229
Add documentation 2022-08-07 20:54:09 +02:00
Vincent Foulon
3203051fc3
Move interaction-cancelling code in interaction behavior + includes missing fix from !3467 2022-08-07 20:54:08 +02:00
Vincent Foulon
4f53d055de
Reimplement !3467 + fix event being pushed in front of agent inbox 2022-08-07 20:54:07 +02:00
Vincent Foulon
6994b026b1
Remove unused import 2022-08-07 20:54:06 +02:00
Vincent Foulon
faf2b13ac1
Move recv_interactions into BehaviorTree + cleanup functions ^& warnings 2022-08-07 20:54:02 +02:00
Vincent Foulon
d105d7063c
Cleanup prof_span + finish unfinished module rename 2022-08-07 20:50:37 +02:00
Vincent Foulon
6fae4efd45
PoC: Refactor agent's behavior tree 2022-08-07 20:50:24 +02:00
juliancoffee
d000cc90a1 Migrate code to new i18n API 2022-08-06 21:56:01 +03:00
Vincent Foulon
8862258f61 Deny any interaction received during hostile_tree 2022-08-06 18:31:42 +00:00
Forest Anderson
9d67deeeb7 Reverted removal of msg 2022-07-17 13:32:53 -04:00
tygyh
120ee6b6c0 Fix typos 2022-07-15 18:59:37 +02:00
tygyh
cbe4d9d807 Remove unused imports 2022-07-15 16:00:27 +02:00
tygyh
5e5698249b Remove unnecessarily qualified paths 2022-07-15 14:49:46 +02:00
Isse
9edfbaa29d fix agent aggression when not recieving damage from attack 2022-07-13 19:46:48 +02:00
Marcel Märtens
50d85940d8 implement a event channel that posts regular information on events for Participants 2022-07-03 21:21:59 +02:00
James Melkonian
8439f3ef6d Wiring System Documentation and Refactoring 2022-06-29 20:28:09 +00:00
Samantha W
57ab1c5767 Add a client-side mutelist 2022-06-14 20:35:01 +00:00
Joshua Barretto
b555381677 Added server gameplay settings, ability to toggle explosion burns off 2022-06-14 14:24:08 +01:00
N A
3d24ac79e3 make animal NPC's eat food on spot 2022-06-07 07:25:27 +00:00
terrarier2111
45efdb6602 Implement group owned loot 2022-06-04 17:16:12 +00:00
Ben Wallis
d71f2ff682 Fixed animals picking up non-owned non-consumable loot 2022-05-31 15:57:58 +01:00
Sam
5e57eabd11 Code changes and msm 2022-05-30 20:25:31 -04:00
N A
c09f070241 Change animal species to have only one inventory slot 2022-05-29 23:53:00 +00:00
Ben Wallis
34f580dfaa Introduced loot ownership rules to combat loot stealing by players
* Added `LootOwner` component used to indicate that an `ItemDrop` entity is owned by another entity
* A loot winner is now calculated after EXP allocation using the EXP per entity for weighted chance distribution
* Used existing Inventory Full overitem text to show "Owned by {player} for {seconds}secs" when a pickup fails due to a loot ownership check
* Updated agent code to take into account loot ownership when searching for `ItemDrop` targets to pick up
* Added `loot` ECS system to clear expired loot ownerships
2022-05-28 12:06:49 +00:00
StereoJunkie
3015b4a29d Non-humanoid picking up consumables when hungry 2022-05-27 16:57:53 +00:00
N A
1f82dab948 NPC itemdrop picking up 2022-05-19 22:06:44 +00:00
Sam
534c7dc8b9 Simplified item key (no assets) 2022-05-18 16:28:06 -04:00
Sam
08b7bb781f Changed Item to have ItemBase instead of ItemDef. NO ASSETS. 2022-05-16 15:11:10 -04:00
Marcel Märtens
1b76874342 renamings and using unstable sort according to a code review 2022-05-11 21:50:41 +02:00
Marcel Märtens
637e63fbe2 switch from a Component to a Ressource with an Eventbus
Set CHUNK_SITE to 10 which results in a mean of 13ms per Slowjob. Its good if it stays under 30ms so it has less influence on ticks.
Some performance values measured with a AMD Ryzen 1700X:
 - voxygen and server and swarm (25 clients, 10 vd) on one machine.
 - total runtime was 240s
 - CHUNK_GENERATOR total time is 486s with a mean of 40ms
 - CHUNK_SERIALIZER total time is 18.19s with a mean of 13ms, so in total its a order of magnitude lower
   Trancy confirms this, the Serialize backlog is usually handled within 1-2 ticks.
 - terrain::sys total time 1.2s, mean 188us
 - msg::terrain::sys total time 812ms, mean 125us
 - terrain::sync total time 12ms, mean 1,85us
 - chunk_serialize::sys total time 69ms, mean 10us
 - chunk_send::sys total time 50ms, mean 7us

so all in all total time for serializsation is 20.33 of which 89% are spend outside of the ECS
2022-05-11 21:04:17 +02:00
Marcel Märtens
efe284a673 make the client request a few more chunks to compensate for the delay in serialisation 2022-05-11 20:22:24 +02:00
Marcel Märtens
8e47d02f8d add metrics and trigger slowjobs in chunks of 25 2022-05-11 20:22:23 +02:00
Marcel Märtens
9b53693783 switch to a system where chunk_serialize will start a SlowJow that is then consumed by chunk_send 2022-05-11 20:22:21 +02:00
Marcel Märtens
6c756c2440 first implementation of defering serialisation 2022-05-11 20:22:19 +02:00
Joshua Barretto
e02f8aee65 Merge branch 'zesterer/lod-objects' into 'master'
LoD Objects (inc. Trees)

See merge request veloren/veloren!3367
2022-05-11 14:56:12 +00:00
Samuel Keiffer
1bd33bb997 Merge branch 'holychowders/streamline_stealth_coefficient' into 'master'
Distinguish armor and sneaking stealth; Show stealth as percentage in Stats UI.

Closes #1525

See merge request veloren/veloren!3352
2022-05-10 11:41:49 +00:00
Joshua Barretto
f35c98d1a1 Added LoD distance setting 2022-05-10 12:40:06 +01:00
Joshua Barretto
b3126ca687 Initial implementation of LoD trees 2022-05-10 12:38:36 +01:00
IsseW
022fa3d556 Clamp chances for gen bool in agent.rs 2022-05-10 08:44:26 +02:00
Forest Anderson
cea55143ce Change outcomes to eventbus 2022-05-09 19:58:13 +00:00
holychowders
e473c47bcf Distinguish stealth from armor and stealth from sneaking. Also fixes #1525.
- Armor and sneaking have exclusive effects on overall stealth, rather
  than armor taking effect only while sneaking.

Gameplay:
- Agents factor in stealth from armor in all cases, not only when sneaking.
- Max stealth takes place when sneaking (final multiplier of `0.7`) and with stealth from armor up to `0.7` (`0.3` multiplier), resulting in a max distance modifier of about `0.5`, approximately what it was previously.
- Min stealth score from armor is now 0 instead of 2.

Internals:
- Stealth getter accounts for sneaking in final calculation, not just
  armor.
- Prevents potential division by zero.
- Stealth getter returns value that should be multiplied instead of divided.
- Legitimized stealth as a score between 0 and 1.

Notes:
- FIXME: Someone more familiar with the different armor types may want to adjust their stealths.
  - Armor stealths seem to be valued between `0.0` and `1.0`, and I've reinforced this in the code. However, it is possible, particularly for the `Dragonscale` armors, to cumulatively reach a value of `2.0`.
2022-05-06 13:15:46 -05:00
holychowders
9c68fbbeed Fix agents not hearing sounds due to reduced listen_dist, caused by commit a6955e5af.
- `listen_dist` has been restored to normal and the behavior intended by
  the trouble commit has been much more properly encoded.
2022-05-04 21:22:19 -05:00
Marcel
84ab219cf3 Merge branch 'xMAC94x/update-toolchain' into 'master'
update toolchain to `nightly-2022-04-25`

See merge request veloren/veloren!3343
2022-05-03 14:07:49 +00:00
Marcel Märtens
697673bcca update toolchain to nightly-2022-04-25 2022-05-03 15:22:28 +02:00
holychowders
eab010b8c4 Change can_see_entity() parameter ordering to be consistent with other action nodes.
- Moved `agent` and `controller` to front.
2022-05-01 19:18:44 -05:00
holychowders
f2b5ea600e Revert parameter re-ordering of flee() (included in commit 9b6616fc0) to be consistent with other action nodes. 2022-05-01 19:18:44 -05:00
holychowders
a6955e5afb Re-add listen_dist check in choose_target() and add randomness to simulate agents detecting entities directly behind them. 2022-05-01 19:18:43 -05:00
holychowders
17f7353083 Move more expensive perception check below validity check in filter; Reduce number of component fetches. 2022-05-01 19:18:42 -05:00
holychowders
5d78294141 Pass positions and bodies into entities_have_line_of_sight() instead of fetching within. 2022-05-01 19:18:42 -05:00
holychowders
706ec91e69 Fix: Add alignment passivity check in is_enemy(). 2022-05-01 19:18:25 -05:00
holychowders
97e0e39887 Reduce function names and remove unnecessary component fetch from function. 2022-05-01 19:05:28 -05:00
holychowders
455cab0ee7 Address code review. 2022-05-01 18:44:10 -05:00
holychowders
995504be26 Have line-of-sight checks explicitly account for eye-height for entities. 2022-05-01 18:23:27 -05:00
holychowders
dda85e4bc3 Address code review. 2022-05-01 18:23:23 -05:00
holychowders
645bbf7b0d Refactor: re-order function signature to make more sense. 2022-05-01 17:30:23 -05:00
holychowders
d3873e357e Agent: Use FOV when scanning for hostile targets and refactor choose_target().
- Refactors `choose_target()`, renaming it and extracting functions with more meaningful names and more correct behavior.
- Adds FOV for agents scanning for hostile targets.
2022-05-01 17:29:45 -05:00
holychowders
914b44c714 Fix villagers seeing cultists and familiar enemies through objects. 2022-05-01 15:06:43 +00:00
Youssef Fahmy
aec866e5ec Balance tweaks 2022-04-23 14:54:01 +00:00
holychowders
cc409fd537 Extract some retargeting logic. 2022-04-11 11:54:09 -05:00
James Melkonian
b590bc50d7 Fix #1516 Add else branch to allow for agent idling when no sound events 2022-04-05 03:40:26 +00:00
Tormod G. Hellen
cb88648cca Give NPCs random Big Five personalities. 2022-04-04 20:17:50 +02:00
holychowders
39d5a73c10 Fix deadwood not attacking if target is at a different elevation than deadwood. 2022-03-27 20:02:38 +00:00
Justin Shipsey
aee1aa7c1d Merge branch 'holychowders/prevent_undesired_movement_on_agent_interaction' into 'master'
Agent Perception: Improve Awareness System

See merge request veloren/veloren!3263
2022-03-26 00:28:18 +00:00
holychowders
a88d8ada0f Comment out unused awareness increment/decrement calls and un-nest conditional for early return. 2022-03-19 12:02:29 -05:00
Manuel Schmidbauer
0037518472 Impl #1357: Agent chase abort
- Adds util funcs to calculate benefit of continue pursue vs letting
target escape
- Hooks util funcs into agent's hostile tree
2022-03-14 18:06:57 +01:00
holychowders
c6bc6b63ee Prevent enemy agents from reacting to sounds from too far away and remove an inconsequential distance check. 2022-03-12 18:13:02 -06:00
holychowders
cc808251e6 Make Enemy agents flee from dangerous sounds instead of follow. 2022-03-12 16:58:06 -06:00
holychowders
3ffb1a7706 Also restrict when Enemy agents respond to sounds and fix potential conditional bug. 2022-03-12 16:58:06 -06:00
holychowders
8d98ade15e Agent perception: Make handling of sounds and awareness more intuitive.
When a sound was received in `idle_tree()`, awareness would be
incremented, causing a call to `handle_elevated_awareness()`, which
handled sounds heard. Instead, just `handle_sounds()` when they are heard and
increment awareness as part of hearing them.

The code more straightforwardly shows the agent first hearing a sound and then
becoming more aware based on that.
2022-03-12 16:58:06 -06:00
holychowders
df91f665d7 Agent Perception: Restrict when idling agents respond to sounds.
- Prevent utterances and other sounds from causing undesired jitters and
  fleeing, such as those caused by greeting villagers.
- Agents will no longer flee from quieter weapon sounds such as melee.
2022-03-12 16:58:06 -06:00
Samuel Keiffer
a411db17bf Merge branch 'tygyh/Refactor-path_toward_target' into 'master'
Tygyh/refactor path toward target

See merge request veloren/veloren!3241
2022-03-08 16:43:37 +00:00
Dr. Dystopia
1810998641 Remove redundant 'pos' variable 2022-03-05 09:54:01 +01:00
Dr. Dystopia
1cb7a083e7 Remove redundant if-statement 2022-03-05 09:53:28 +01:00
Dr. Dystopia
4aab1eea43 Remove redundant 'tgt_pos' variables 2022-03-01 22:54:44 +01:00
Dr. Dystopia
5aa1d3ceaf Rename 'vec3' parameter to 'pos_difference' 2022-03-01 22:47:01 +01:00
Dr. Dystopia
f99a637606 Rename 'dist_to_pos' variable to 'pos_diff' 2022-03-01 22:44:55 +01:00
Dr. Dystopia
50f877bdf6 Rename 'dist_to_pos_xy' variable to 'dist_xy' 2022-03-01 22:42:03 +01:00
Dr. Dystopia
83f46658a9 Fix pathing execution 2022-03-01 22:40:43 +01:00
Dr. Dystopia
0a3de57be6 Rename 'distance_to_target' variable to 'pos_difference' 2022-03-01 22:38:35 +01:00
Dr. Dystopia
4d24ff0027 Rename 'target_position' clojure to 'partial_path_tgt_pos' 2022-03-01 22:33:25 +01:00
InfRandomness
042d258161 Modify message catch-all arms 2022-02-27 23:08:47 +00:00
Imbris
7be5b4c051 Merge branch 'imbris/fix-possesion-comp-sync' into 'master'
Improve possession edge cases

See merge request veloren/veloren!3233
2022-02-27 20:10:16 +00:00
N A
fc9c3c3be9 worth_choosing refactor 2022-02-27 19:21:21 +00:00
Imbris
e52159f638 Remove original character from game world when possessing to make persistence more robust. 2022-02-27 13:47:13 -05:00
Imbris
10803a9735 Stop using Character presence kind when possessing so that persistence doesn't get messed up. 2022-02-27 13:47:12 -05:00
Imbris
c2ad763b9c Handle removing/inserting SyncFrom::ClientEntity components properly during possession. 2022-02-27 13:47:12 -05:00
Dr. Dystopia
7e70d7648e Dereference 'tgt_pos' variables 2022-02-27 10:36:01 +01:00
Dr. Dystopia
a39d514bae Replace 'tgt_data' parameter with 'tgt_pos' parameter 2022-02-27 10:19:45 +01:00
Imbris
fb2f731ac3 Small fix 2022-02-26 01:05:28 -05:00
Dr. Dystopia
75322ddfc0 Extract 'dist_to_pos' variable 2022-02-25 22:00:42 +01:00
Dr. Dystopia
ee26778118 Extract 'dist_to_pos_xy' variable 2022-02-25 21:57:29 +01:00
Dr. Dystopia
019d619cf6 Extract 'spacing' variable 2022-02-25 21:48:29 +01:00
Dr. Dystopia
15bea26823 Extract 'target_position' clojure 2022-02-25 21:44:43 +01:00
Dr. Dystopia
d921e1e3ea Extract 'pos' variable 2022-02-25 21:40:42 +01:00
Dr. Dystopia
e2d42207a4 Update 'path_toward_target' doc comment 2022-02-25 21:37:01 +01:00
Dr. Dystopia
4aebe19d94 Extract 'distance_to_target' variable 2022-02-25 21:35:50 +01:00
Dr. Dystopia
0dad86e1ca Replace flag parameters with 'Path' enum 2022-02-25 21:35:35 +01:00
Isidor Nielsen
a685a353cb Shared and persistent waypoints 2022-02-20 10:10:18 +00:00
jshipsey
e569ee24c3 fix 2022-02-17 00:58:25 -05:00
Marcel
b09698b8ac Merge branch 'shouvik/prevent_empty_trades' into 'master'
Fixes #1452 - Prevents empty trades

Closes #1452

See merge request veloren/veloren!3202
2022-02-16 21:41:26 +00:00
ShouvikGhosh2048
d72f43190b Fixes #1452 - Prevents empty trades 2022-02-16 21:41:26 +00:00
James Melkonian
c906c9e2dc Fix NPC humanoids not rolling when on fire 2022-02-15 08:28:37 +00:00
Sam
c77270b799 Addressed feedback 2022-02-12 20:52:01 -05:00
jshipsey
2eee43865f chieftain anims 2022-02-11 02:18:48 -05:00
Sam
4991f7ecea Gnarlign site tweaks and chieftain buff 2022-02-11 01:23:09 -05:00
Sam
0031aa6f5f Chieftain AI and attacks 2022-02-10 14:58:35 -05:00
Sam
fcb0f8d8f0 Wood golem attacks and ai 2022-02-10 14:58:32 -05:00
Sam
e044bf5091 Mandragora attacks and ai 2022-02-10 14:58:32 -05:00
Sam
f1801560fa Deadwood ai 2022-02-10 14:58:31 -05:00
Sam
40bb74c42f Gnarling stalker AI 2022-02-10 14:58:28 -05:00
Sam
c15fb2b68f Better mugger AI 2022-02-10 14:58:28 -05:00
Sam
e1f164d099 Initial AI for gnarling logger/mugger. 2022-02-10 14:58:27 -05:00
Tormod G. Hellen
a00121bedf Make entities protect owned bodies. 2022-02-08 22:53:00 +01:00
Tormod G. Hellen
82273f0f36 Make friendly creatures defend each other. 2022-02-08 22:32:25 +01:00
Marcel
72e270368d Merge branch 'aweinstock/resolve-clippy-lints' into 'master'
Globally allow more clippy lints and reconfigure complexity to be less verbose

See merge request veloren/veloren!3052
2022-01-30 22:53:36 +00:00
James Melkonian
44865d99ff Fix guards menacing instead of defending villagers 2022-01-30 13:14:24 -08:00
Avi Weinstock
f3f08936d8 Decrease too-many-arguments-threshold and type-complexity-threshold. 2022-01-30 20:16:21 +01:00
Avi Weinstock
5f8957d8ef Globally allow the clippy lints {new_without_default, many_single_char_names, identity_op, type_complexity, too_many_arguments}. 2022-01-30 20:16:20 +01:00
juliancoffee
ed593cd0cb Adress review №2 2022-01-28 00:02:34 +02:00
juliancoffee
e004fba9da Adress review 2022-01-28 00:02:34 +02:00
juliancoffee
4a4f2f8d8f Loadout Update: Managed Rng
Rewrite EntityInfo api to take Rng from caller.
2022-01-28 00:02:34 +02:00
juliancoffee
d5b927602a Loadout Udpate: NpcData part
Actually implement creating npc with new EntitytInfo by chaning
CreateNpc.loadout to CreateNpc.inventory and cleaning code in
NpcData::from_entity_info.
2022-01-28 00:02:34 +02:00
Dr. Dystopia
b0d6a68e8c Create 'push_initiate_invite' function 2022-01-26 21:23:37 +01:00
Dr. Dystopia
027154a5be Create 'push_invite_response' function 2022-01-26 21:16:29 +01:00
Dr. Dystopia
0516526985 Create 'push_utterance' function 2022-01-26 21:12:19 +01:00
Dr. Dystopia
765e858c19 Create 'push_cancel_input' function 2022-01-26 21:07:36 +01:00
Dr. Dystopia
b2b208687c Create 'push_basic_input' function 2022-01-26 20:09:59 +01:00
Dr. Dystopia
bc0a8c7704 Create 'push_action' function 2022-01-26 19:52:19 +01:00
Dr. Dystopia
f47184df85 Use 'push_event' function in more places 2022-01-26 19:40:18 +01:00
James Melkonian
2671f824d0 Prohibit accidental cliff diving by NPCs 2022-01-25 16:25:40 +00:00
Snowram
a6e396e29a Stunned and jump anims, stats, spawns, more IA work 2022-01-20 00:53:29 +01:00
Snowram
fd3ed89899 More arthropod animations 2022-01-19 19:01:15 +01:00
Snowram
38bbd60fd2 Arthropod basic attack 2022-01-19 19:01:14 +01:00
Snowram
1e6ead4005 Arthropod charge 2022-01-19 19:01:13 +01:00
Snowram
02ed6ffd60 More arthropod work 2022-01-19 19:01:13 +01:00
Snowram
ae71f2e4f0 Adds poisoned debuff (energy change over time) 2022-01-19 19:01:13 +01:00
Snowram
f67bf2a539 Adds arthropod skeleton 2022-01-19 19:01:11 +01:00