Commit Graph

202 Commits

Author SHA1 Message Date
Joshua Yanovski
986d104faa Update Rust toolchain. 2022-09-08 15:43:53 -07:00
Joshua Yanovski
f5aee1d2a7 Allow mods/admins to log in when server is full.
As a side effect, this moves the initial game server sync message into
the login code, since that's the first place we can check for admin
permissions and we want to avoid sending large messages to users who are
not authenticated (especially if the player cap has been reached;
previously, the player cap check limited the damage that could be done
by unauthenticated players).

Some fallout from this is that we don't synchronize the Player component
anymore, which had some minor effects on voxygen.  This update also
breaks Torvus, since Client::new now expects the username and password
to be provided from the getgo--an accompanying MR will be submitted to
fix it.
2022-09-06 21:42:31 -07:00
Imbris
334937568e Add an entity view distance setting that allows limiting the distance
entities are synced from and displayed in.

NOTE: Syncing entities work at the granularity regions which are
multi-chunk squares but the display of entities in voxygen is limited in
a circle with the radiues of the supplied distance.

Additional details and changes:
* Added `ViewDistances` struct in `common` that contains separate
  terrain and entity view distances (the entity view distance will be
  clamped by the terrain view distance in uses of this).
* View distance requests from the client to the server now use this
  type.
* When requesting the character or spectate state the client now passes
  its desired view distances. This is exposed as a new parameter on
  `Client::request_character`/`Client::request_spectate`. And the client
  no longer needs to send a view distance request after entering these
  states. This also allows us to avoid needing to initialize `Presence`
  with a default view distance value on the server.
* Removed `DerefFlaggedStorage` from `Presence` and `RegionSubscription` since the
  change tracking isn't used for these components.
* Add sliders in voxygen graphics and network tabs for this new setting.
  Show the clamped value as well as the selected value next to the
  slider.
* Rename existing "Entities View Distance" slider (which AFAIK controls
  the distance at which different LOD levels apply to figures) to
  "Entities Detail Distance" so we can use the former name for this new
  slider.
2022-08-25 23:24:43 -04:00
flo
e882e62c08 seachapel 2022-08-24 21:50:53 +00: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
Imbris
d5b59c2bb7 Convert away from IdvStorage to mixture of VecStorage and DenseVecStorage 2022-08-08 00:38:20 -04:00
tygyh
120ee6b6c0 Fix typos 2022-07-15 18:59:37 +02:00
tygyh
5e5698249b Remove unnecessarily qualified paths 2022-07-15 14:49:46 +02:00
Marcel Märtens
e4909650e1 update hashbrown, specs, and tracy 2022-07-06 15:41:59 +02:00
IsseW
08b0989789 add slider for rain map resolution 2022-07-04 18:07:18 +02:00
IsseW
54f958acc7 more correct occlusion 2022-07-04 18:07:16 +02:00
IsseW
b7c0196129 Server weather sim 2022-07-04 18:11:41 +02:00
Samantha W
57ab1c5767 Add a client-side mutelist 2022-06-14 20:35:01 +00:00
Benoît du Garreau
8488c7b25e Upgrade assets_manager to 0.8.0 and image to 0.24
This removes a significant number of duplicated dependencies
2022-05-28 23:18:31 +02: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
Sam
d436362a8d Consolidated crafting UI for the primnary component of modular weapons. 2022-05-16 15:11:21 -04: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
Marcel Märtens
fa49248c31 switch to upstream vek again 2022-04-28 09:10:55 +02:00
ubruntu
94a9b407c2 Fix waypoints being movable 2022-02-28 19:20:37 +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
1a744808f0 Cleanup up possession code and add TODOs for issues to fix. Remove
SyncFrom debug_assertions hack.
2022-02-27 13:47:12 -05:00
Marcel
df7cd2da1a Merge branch 'isse/shared-waypoints' into 'master'
Shared and persistent waypoints

See merge request veloren/veloren!3162
2022-02-20 10:10:18 +00:00
Isidor Nielsen
a685a353cb Shared and persistent waypoints 2022-02-20 10:10:18 +00:00
Imbris
565785c0aa Remove TODO, UidAllocator needed on client to map uid -> entities 2022-02-19 20:01:40 -05:00
Sam
4991f7ecea Gnarlign site tweaks and chieftain buff 2022-02-11 01:23:09 -05:00
Marcel Märtens
201a5ac2c7 stricten some rules and fix some clippy warnings 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
fba89517de Move Veloren to 2021 edition 2022-01-26 16:46:40 +02:00
Sam
e6bef416b4 Fix possession for animation work purposes. 2022-01-25 12:29:05 -05:00
Imbris
13d970bf6f Rename SyncFrom::AllEntities to SyncFrom::AnyEntity for more clarity, add more comments for component syncing code, address MR comment 2022-01-19 00:56:42 -05:00
Imbris
374bd10e5d Small comment fixes 2022-01-19 00:56:42 -05:00
Imbris
fa42be75b8 Fix health last change time not being set properly 2022-01-19 00:56:42 -05:00
Imbris
5494bd31f2 Sync SkillSet from all entities for now since it is needed for some things in voxygen, fix character_behavior system always triggering energy and density modification flags 2022-01-19 00:56:42 -05:00
Imbris
b19f780d9f Make Combo also only sync for the client's entity 2022-01-19 00:56:42 -05:00
Imbris
aa122c1a18 Sync some components only from the client's own entity. Vastly reduce the amount of places to modify when adding/removing a component from network syncing. 2022-01-19 00:56:42 -05:00
Joshua Barretto
043016a433 Don't try to mount unmountable entities, clippy fixes and fmt 2022-01-16 17:53:14 +00:00
Joshua Barretto
504e2a38d5 Added overhead hints, smoother mount movement 2022-01-16 17:53:14 +00:00
Joshua Barretto
b3e2d825ed Overhauled mounting to make it more reliable 2022-01-16 17:53:13 +00:00
Sam
efbc5f9b75 UI notifying player that their skillset has been invalidated. 2022-01-03 19:55:06 -05:00
Sam
27dd7b4391 Refactored skills code. 2022-01-03 19:55:01 -05:00
Imbris
bf48bd5346 update toolchain to nightly-2021-12-19 2021-12-23 13:04:24 +01:00
Joshua Barretto
6e97e3179d Slippery ice 2021-12-20 18:03:52 +00:00
Joshua Barretto
e3203080ed Added Calendar for temporal events based on the real-world calendar 2021-12-20 18:03:52 +00:00
Dr. Dystopia
408fe1e6b6 Begin creating character editing 2021-12-13 01:13:33 +01:00
Jonathan Berglin
596307c9b7 Remove unused clippy suppressions 2021-12-05 17:59:02 +00:00
Ben Wallis
022c1417b6 EXP on kill is now shared between damage contributors. A "damage contributor" is either an individual entity, or a group - depending if the attacker is in a group. This means that not only does the "killing blow" no longer get 100% of EXP, but multiple groups and individuals all receive their fair share of EXP on death (assuming they are still within range of the entity when it dies).
Damage from a given individual or group only counts towards a kill for 10 minutes since that individual or group's last damage to the entity - after this period their damage contribution is removed. This avoids the list of damage contributors growing excessively large for an entity that does a lot of combat but never dies.

EXP sharing within groups is unchanged - the difference is simply that the input to this calculation may be less than 100% of the base EXP reward for the kill if other individuals or groups contributed damage.
2021-11-13 20:46:45 +00:00
Sam
a288f9ee43 Addressed further review. 2021-11-11 22:37:37 -05:00
Sam
dfcb8c8519 Addressed review feedback. 2021-11-11 18:10:22 -05:00
Sam
b678f7f46e Added some client methods for changing abilities to hook into. 2021-11-11 01:55:32 -05:00
Sam
a8bec0280c Ability pool mostly functional. 2021-11-09 12:56:07 -05:00
Joshua Barretto
1cfad833c7 Added caverns, fixed chunk load performance issue 2021-10-10 13:41:56 +01:00
Marcel Märtens
e36eef99c8 apply some clippy fixes that comes with the new toolchain version 2021-09-24 23:18:18 +02:00
Marcel Märtens
2a82405df2 update toolchain to nightly-2021-09-24 2021-09-24 23:18:07 +02:00
Marcel Märtens
88685cc016 update crates 2021-09-20 14:39:01 +02:00
Joshua Barretto
1b0cb40d94 Made ore streams mineable 2021-09-01 12:05:00 +01:00
Joshua Barretto
76ba3496a1 sync 2021-08-28 14:53:30 +01:00
Joshua Barretto
8b8adcc1b8 More block particles, changes ore vein colour 2021-08-28 14:53:30 +01:00
Monty Marz
14eb0f9aa2 Remove sceptre, add swords 2021-07-29 22:38:35 +00:00
Dr. Dystopia
9abd066e53 Apply same member order as in trait 2021-07-20 09:43:52 +02:00
Imbris
30119a6afc Re-address approx_constant lint without using fractional constants and
re-add a few blank lines
2021-07-17 20:41:09 -04:00
Imbris
9c72333741 Revert "Merge branch..."
This reverts merge request !2608
2021-07-17 22:04:59 +00:00
Jonathan Berglin
c1c331d59e Resolve all '#[allow(clippy::approx_constant)]' error supressions 2021-07-15 16:56:55 +00:00
Imbris
a9767c40d1 Merge branch 'aweinstock/networktracy' into 'master'
Add some tracy plots about network usage to the client.

See merge request veloren/veloren!2510
2021-07-03 05:44:30 +00:00
Avi Weinstock
c2106e158f Use approximate byte count for the terrain recv graph. 2021-07-02 12:43:34 -04:00
Avi Weinstock
f9c263faf6 Add benchmark for color quantization using the rtree crate. 2021-07-01 13:41:37 -04:00
Avi Weinstock
47b3b5e5d9 Generate palette info from block statistics, and benchmark how well it compresses. 2021-06-28 22:11:19 -04:00
Avi Weinstock
19979413d5 Convert dungeon lights to CSG, tweak pillars, convert the magic circle from lava to glowing rock, make enemies spawn in dungeons, and fix clippy warnings. 2021-06-24 23:03:24 -04:00
Dominik Broński
8356e2ffca Merge branch 'aweinstock/lava' into 'master'
Lava

See merge request veloren/veloren!2482
2021-06-21 20:49:44 +00:00
Avi Weinstock
2226a4c6a9 Add lava to caves, which sets you on fire if you swim in it. Currently requires uncommenting #define LAVA in the shaders, and only looks good with cheap fluid mode. 2021-06-19 16:31:21 -04:00
Imbris
659b42e813 Remove tracy features that are no longer needed now that macros have been fixed 2021-06-19 04:27:50 -04:00
Joshua Barretto
96cbf60c3f Made commands a distinct ClientMsg to avoid possible sanitisation problems for clients 2021-06-17 19:55:21 +01:00
Marcel Märtens
4167621f5d Change the version number to 0.10 2021-06-12 10:14:07 +02:00
Marcel Märtens
7185dcee68 switch to hashbrown 0.11 and specs 0.16.2 2021-06-07 13:01:01 +02:00
Imbris
48ebb10d50 Update toolchain 2021-05-31 20:44:57 -04:00
Joshua Yanovski
e7587c4d9d Added non-admin moderators and timed bans.
The security model has been updated to reflect this change (for example,
moderators cannot revert a ban by an administrator).  Ban history is
also now recorded in the ban file, and much more information about the
ban is stored (whitelists and administrators also have extra
information).

To support the new information without losing important information,
this commit also introduces a new migration path for editable settings
(both from legacy to the new format, and between versions).  Examples
of how to do this correctly, and migrate to new versions of a settings
file, are in the settings/ subdirectory.

As part of this effort, editable settings have been revamped to
guarantee atomic saves (due to the increased amount of information in
each file), some latent bugs in networking were fixed, and server-cli
has been updated to go through StructOpt for both calls through TUI
and argv, greatly simplifying parsing logic.
2021-05-09 21:19:16 -07:00
Avi Weinstock
efa4f9fe0a Experiment with const fn lanczos lookup tables, enable weighted average interpolation for now. 2021-05-03 00:09:44 -04:00
Avi Weinstock
be39054767 Make terrain compression a checkbox instead of a bandwidth (throughput?) heuristic. 2021-05-03 00:09:44 -04:00
Avi Weinstock
b15913560b Optimize CompressedData with Vec::with_capacity, and move obsolete formats from common_net into the compression benchmark. 2021-05-03 00:09:24 -04:00
Avi Weinstock
c199d12f2d Address MR 2207 review comments.
- Add metrics for which branch of the compression heuristic was taken.
- Reduce the threshold for the heuristic.
- Deduplicate code for dealing with lazy messages.
- Make jpeg dependency only scoped to the compression benchmark.
- Remove commented code.
2021-05-03 00:09:24 -04:00
Avi Weinstock
30cae40b82 Add a bandwidth-based heuristic for chunk compression. 2021-05-03 00:09:24 -04:00
Avi Weinstock
cdc2eccda8 Improve quadpng by adding WidePacking, which makes a wider image, which is faster due to PNG compressing by row. Heuristically switch between quadpng and deflate based on chunk height to reduce variance. 2021-05-03 00:09:24 -04:00
Avi Weinstock
dffc7db8f5 Add matplotlib graph generation to the compression benchmarks. 2021-05-03 00:09:24 -04:00
Avi Weinstock
0f4315c98b Remove a use of inline_tweak and use TallPacking instead of GridLtrPacking in common_net::msg::server. 2021-05-03 00:09:24 -04:00
Mckol
c913b9b858 Added Lanczos interpolation for QuadPng
Should support arbitrary scales (N).
Does support arbitrary Lanczos a parameters (currently 2)
and sample sizes (currently 5x5).
2021-05-03 00:09:24 -04:00
Avi Weinstock
fe0f331a19 Add 5x5 manhattan blur effect to quadpng, and omit interpolation at chunk borders. 2021-05-03 00:09:24 -04:00
Avi Weinstock
c2fd5e807d Experiment with 256-color palette "tripng" encoding, and Lanczos interpolation for "quadpng". 2021-05-03 00:09:24 -04:00
Avi Weinstock
a220cc569e Add resolution downscaling to QuadPng's color channel, and use half-resolution QuadPng ingame. 2021-05-03 00:09:24 -04:00
Avi Weinstock
f81539cb00 Get PngPngPngJpeg terrain working in the actual game. 2021-05-03 00:09:24 -04:00
Avi Weinstock
a9a943c19a Move compression helpers to common_net::msg::compression and experiment with more image formats at more site kinds. 2021-05-03 00:09:24 -04:00
James Melkonian
f553700e8c Add map markers for lakes and mountains 2021-05-03 02:00:23 +00:00
Avi Weinstock
308ad4d81e Cleanup errors introduced in rebase. 2021-04-20 23:34:17 -04:00
Avi Weinstock
15e32e5655 Move terrain compression code to common_net and disable redundant LZ4 compression on the terrain stream. 2021-04-20 23:24:24 -04:00
Avi Weinstock
6d9de520f3 Compress terrain chunks with deflate. Includes a benchmark showing that this makes them around 70% smaller, and is the same speed as LZ4. 2021-04-20 23:23:53 -04:00
Imbris
e17477979f Remove extra chunk cloning and parallelize serialization in the server terrain sys 2021-04-20 15:25:05 -04:00
Ludvig Böklin
762c68cfbb Basic fluid dynamics and physical properties for entities 2021-04-20 17:38:19 +02:00
Marcel Märtens
425063e24e remove authc from common::net 2021-04-20 01:30:23 +02:00