Commit Graph

662 Commits

Author SHA1 Message Date
Joshua Barretto
87a6143375 Began adding rtsim2 NPCs, scale command 2023-04-09 19:25:51 +01:00
Joshua Barretto
9d3dadfaba Make resource depletion an rtsim rule 2023-04-09 19:25:51 +01:00
Joshua Barretto
c168ff2f9b Added rtsim saving, chunk resources, chunk resource depletion 2023-04-09 19:25:51 +01:00
Joshua Barretto
0cafafdaa7 Began integrating rtsim2 into server 2023-04-09 19:25:51 +01:00
Joshua Barretto
63a949b95c Removed spawn town and safe spawn settings 2023-04-01 17:51:05 +01:00
Sophia Waggoner
30251221e5 Fix math mistakes (24 * 60 is 1440 not 1400) 2023-03-22 06:19:38 -07:00
Sophia Waggoner
264e4a53f8 cargo clippy + fmt 2023-03-22 05:49:54 -07:00
Sophia Waggoner
4a3d1bbb86 Ultimately use setting in day cycle updates.
(First functional commit.)
2023-03-21 21:32:05 -07:00
Sophia Waggoner
7e4ea483e0 Add a ServerConstants to Client and Server structs and sync on register. 2023-03-21 20:28:08 -07:00
Imbris
9e212935e5 Merge branch 'imbris/time-local-event-handling' into 'master'
Add metrics for timing subsections of State::tick

See merge request veloren/veloren!3825
2023-03-14 14:52:57 +00:00
Imbris
87bf44241b Add metrics for timing subsections of State::tick 2023-03-14 01:03:05 -04:00
Ben Wallis
6eedc02286 Changed character deletion to go via batch update 2023-03-12 23:21:53 +00:00
Marcel Märtens
cf6a764aa4 update toolchain to 2022-09-23 2022-09-25 15:58:32 +02:00
Marcel Märtens
c2b453f6f1 update toolchain to 2022-09-08
This reverts commit 6c9deee491.
This reverts commit a32b269252.
2022-09-24 00:04:40 +02:00
Joshua Yanovski
67231aff90 Remove persistence loading error from SkillSet.
This is needed (for now) in order to parallelize ingame_chat, because
one of the handled messages updates this value on the server.  It turns
out that the value is not actually used on the server, only the client,
so this was mostly a matter of threading this back to the correct place.
Additionally, we took the opportunity to modify the UI to not log you
into the game until your character was confirmed to be loaded, which
was a todo item that lets us simplify some error handling logic and
remove stuff from global state.
2022-09-21 09:29:25 -07:00
Joshua Yanovski
2c15d0af56 Reduce overhead of messaging systems. 2022-09-14 21:04:53 -07:00
Marcel Märtens
a32b269252 steal sharps clippy improvements to the old nightly 2022-09-11 16:10:56 +02:00
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
ce8b8b6f12 Update changelog, cargo fmt 2022-08-21 12:10:20 -04:00
Imbris
87815b4615 Use send_fallible in notify_client implementation to document that any errors are ignored (and use if let instead of map) 2022-08-20 18:47:09 -04:00
Saverio Miroddi
021a8be62e Server: Vacuum database on startup
Runs after the migrations. In some cases, it can reclaim a significant amount of space (reported 30%).
2022-08-17 20:12:20 +02:00
Isse
e81dade43f Fix compilation with worldgen turned off. 2022-08-11 20:27:25 +00:00
Joshua Barretto
4e103c433f Simplified and improved alias validation 2022-08-11 11:11:31 +01:00
Joshua Barretto
4d110a542c Improved banned words loading 2022-08-11 11:09:53 +01:00
Joshua Barretto
52bd7b2485 Added automod 2022-08-11 11:09:52 +01: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
IsseW
b7c0196129 Server weather sim 2022-07-04 18:11:41 +02:00
Imbris
cd503a210e Remove tick_count since we can already get a count of ticks via
`tick_time_hist_count`.
2022-06-16 22:08:54 -04:00
Imbris
d5718fd410 Switch to counter of events and add tick counter 2022-06-15 19:25:00 -04:00
Imbris
950723dd0d Add metrics for counting server events 2022-06-15 00:40:58 -04:00
Samantha W
57ab1c5767 Add a client-side mutelist 2022-06-14 20:35:01 +00:00
Sam
5e57eabd11 Code changes and msm 2022-05-30 20:25:31 -04: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
Sam
81c83c5e83 Items with components can now have their name modified by the components. Also addressed more review. NO ASSETS 2022-05-16 15:11:15 -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
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
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
Forest Anderson
cea55143ce Change outcomes to eventbus 2022-05-09 19:58:13 +00:00
Marcel Märtens
affdf3131f update a bunch of dependencies, including clap3 2022-04-04 11:43:29 +02:00
Marcel
6506a97dcd Merge branch 'zesterer/enable-site2-towns' into 'master'
Enabled site2 towns by default

See merge request veloren/veloren!3206
2022-02-20 14:02:53 +00: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
Joshua Barretto
b786570470 Added location system, switched to release map 2022-02-17 14:51:59 +00:00
Joshua Barretto
00b003a23c Enabled site2 towns by default 2022-02-15 19:01:43 +00:00
protheory8
7148737252 Remove quic_files server setting
(cherry picked from commit 38339d90ceb87008bbb0ce31ad4e28350213a401)
2022-02-05 13:04:16 +01:00
protheory8
89580eba8c Remove gameserver_address setting and add protocols_and_addresses setting
(cherry picked from commit a5e4575ad349aacb1f41a7e93e3d5ff9eeafc6ae)
2022-02-05 13:04:16 +01: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
537cc38b5e Fixed lantern position when mounting 2022-01-16 17:53:13 +00:00
Joshua Barretto
b3e2d825ed Overhauled mounting to make it more reliable 2022-01-16 17:53:13 +00:00
Sam
7ae8ed09f6 Addressed MR comments. 2022-01-15 21:50:27 -05:00
Christof Petig
8a85d6e6e0 cargo fmt, pass calendar down into building creation 2021-12-20 18:06:58 +00:00
Christof Petig
42ba9212ea move Calendar object into WorldSim
(needed for Christmas decoration in towns)
2021-12-20 18:06:58 +00:00
Joshua Barretto
78f76dde83 Added baubles to trees 2021-12-20 18:03:52 +00:00
Joshua Barretto
3ddacb96ab Added christmas snow 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
d9dd49552b Tygyh/resolve all '# allow(clippy needless update)]' error supressions 2021-11-29 09:32:55 +00:00
Marcel Märtens
ef40ebe0c8 update toolchain to nightly-2021-11-24 2021-11-24 10:09:22 +01:00
Marcel Märtens
aa93b4b53c update other binaries 2021-11-20 20:19:48 +01:00
Marcel Märtens
e29ede7c97 updating dependencies,
cannot update the following dependencies:
 - vek: Sharps SIMD isnt upstream
 - tracing-subscriber: MakeWriter was adjusted and i was to lazy to fiddle with lifetimes,
 - refinery, rustsql: we have a custom refinery version which is incompatible with newer rustsql
 - equi + egui_winit + egui_wgpu_backend: i tried it in this commit but it turned out that they dependo n wgpu which we cant update
 - wgpu: cant update due new version doesnt support DX11

Got quinn updated which now require some dependencies to be explicit.
2021-11-20 20:17:49 +01:00
Sam
a288f9ee43 Addressed further review. 2021-11-11 22:37:37 -05:00
Joshua Barretto
1473029204 Added ability to toggle world features 2021-10-10 13:41:57 +01:00
Imbris
8987389e8a Submit chunk requests to the generator within the terrain system right before receiving new chunks, so that duplicate work is not done for chunks that just finished but were not yet added to the terrain. 2021-10-08 16:17:31 -04:00
Joshua Barretto
6d33e0d183 Prevented double-spawning of chunks 2021-10-08 12:20:46 +01:00
Joshua Barretto
8dc8aeace5 Added minimum server-side chunk loading 2021-10-07 14:23:55 +01:00
Sam
9675d2b45a Cultists no longer attack the starting town. 2021-09-05 11:36:40 -04:00
Joshua Barretto
003b9f57ce Merge branch 'juliancoffee/pvp_command' into 'master'
Implement /battlemode command and more

See merge request veloren/veloren!2787
2021-09-04 18:37:01 +00:00
Sam
311fb251c1 Allowed specifying that rtsim entities spawn at a particular site. 2021-09-03 23:34:24 -04:00
juliancoffee
43d40c4efc Workaround of bug with global Player component
* Set default value of battle_mode and last_battlemode_change explicitly
if isn't found in battlemode_buffer
2021-09-04 02:29:02 +03:00
juliancoffee
1baa9e9879 Add in-memory persistence for battlemode changes 2021-09-04 01:41:48 +03:00
Ben Wallis
0c55b7b4b3 Fixed the message shown when adding an admin or moderator to show the correct role 2021-08-21 15:43:33 +01:00
Joshua Barretto
c2498d81c7 Added feature flag for terrain persistence 2021-08-12 10:48:00 +01:00
Joshua Barretto
738e59965f Added experimental terrain persistence 2021-08-12 10:26:20 +01:00
Imbris
119c72f5d8 Fix typo in log message and remove prefixed '_' from a few used variables 2021-07-30 22:10:12 -04:00
Ben Wallis
01ca6911a9 * Pets are now saved on logout and spawned with the player on login
* Pets now teleport to their owner when they are too far away from them
* Limited the animals that can be tamed to `QuadrupedLow` and `QuadrupedSmall` to prevent players taming overly powerful creatures before the pet feature is further developed
* Added `Pet` component used to store pet information about an entity - currently only used to store the pet's database ID
* Added `pet` database table which stores a pet's `body_id` and `name`, alongside the `character_id` that it belongs to
* Replaced `HomeChunk` component with more flexible `Anchor` component which supports anchoring entities to other entities as well as chunks.
2021-07-28 22:36:41 +00:00
Marcel Märtens
7d93d907f6 implement slowjob metrics to measuere time in queue and execution time 2021-07-22 19:31:21 +02:00
Jonathan Berglin
b15f426ee5 Resolve all approved error supressions 2021-07-18 17:11:46 +00:00
Avi Weinstock
a4d6f0f3c1 Address MR 2612 review comments. 2021-07-16 17:46:48 -04:00
Avi Weinstock
7555be0e25 Spawn players aboveground when using /site or when their waypoint is underground. 2021-07-15 17:54:29 -04:00
Marcel Märtens
9b3b21f368 fix clippy warnings 2021-07-12 12:09:09 +02:00
Ben Wallis
a50ed6b50a Fixed build warnings for server-cli related to non-default plugin feature 2021-06-26 21:56:03 +01:00
Joshua Barretto
294b6e394a Renamed command event 2021-06-18 11:31:06 +01: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
005f528e25 fix tracy-server compilation via cargo tracy-server 2021-06-09 17:17:37 +02:00
Marcel
f988584337 Merge branch 'revert-c6e200a3' into 'master'
Add a configuration Option to opt-in Quic backend

See merge request veloren/veloren!2318
2021-06-02 14:27:13 +00:00
Imbris
48ebb10d50 Update toolchain 2021-05-31 20:44:57 -04:00
Marcel Märtens
cf3188b412 remove Protocol from Quic, cleanup code, fix some log spam 2021-05-21 10:41:19 +02:00
Marcel
99304ffddd Revert "Merge branch 'sharp/revert-quinn' into 'master'"
This reverts merge request !2315
2021-05-21 10:41:16 +02:00
Joshua Yanovski
3679cb75bc Revert "Merge branch 'xMAC94x/quic_enablement' into 'master'"
This reverts commit 04d8ddf25e, reversing
changes made to 9dcf7a9d26.
2021-05-17 08:32:12 -07:00
Marcel
04d8ddf25e Merge branch 'xMAC94x/quic_enablement' into 'master'
Add a configuration Option to opt-in Quic backend

See merge request veloren/veloren!2268
2021-05-17 12:02:55 +00:00
Joshua Yanovski
3869cdf1d2 Don't remesh chunk vertex data on sprite update.
This results in an extremely visually noticeable improvement in latency
when adding or removing sprite data and makes the game feel more
responsive.

This happens, for instance, when picking up a sprite like an apple or
flower from the environment.  We check to make sure that for items
with lighting (like Velorite) or changes that otherwise affect meshing
(like changing from fluid to nonfluid) this doesn't trigger.
2021-05-11 12:58:15 -07:00
Marcel Märtens
b443e4dd31 Add Quin support, as this is not yet very much tested it needs to be activated in the settings of SERVER and CLIENT.
Server:
 provide a certificate file and key file via the settings. When provided it will then listen on TCP and QUIC, if not provided it will be TCP only.
 The certificate must be known by the client, so you might get problems with self-signed certificates.
 ```ron
 quic_files: Some((
     cert: "/home/user/veloren_cert.pem",
     key: "/home/user/veloren_key.key",
 )),
 ```

Client:
 activate the voxygen settin `use_quic: true` to try to connect to the quic backend of a server.
2021-05-10 12:59:13 +02: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
Marcel Märtens
8196fd8b35 instead of manually trying to sync disconnect metrics we now pass a Reason to the handle_disconnect.
There we make sure that the disconnect only happens once and decrease the respective Metrics.
Also added more reasons
2021-05-06 11:43:10 +02:00