Serkyo
b3f10d8f12
feat(shared): add chunk subscribe and delivery message types
2026-07-21 21:57:55 +02:00
Serkyo
ce79449a6c
refactor(shared): split protocol into stub and control submodule
2026-07-21 21:57:38 +02:00
Serkyo
8cfee29b53
fix(renderer): silence release-build warnings from debug-only validation
2026-07-16 03:01:02 +02:00
Serkyo
fd6ec10ce5
fix(renderer): recreate swapchain on resize and out-of-date present
2026-07-16 02:54:23 +02:00
Serkyo
2bf140cf02
feat(client): stream local chunk meshes around camera
2026-07-16 02:24:27 +02:00
Serkyo
60fe2fc294
feat(client): upload origin chunk via renderer insert_mesh
2026-07-16 00:05:30 +02:00
Serkyo
dd8a969828
feat(renderer): render keyed collection of chunk meshes with per-chunk offset
2026-07-16 00:05:30 +02:00
Serkyo
bb33247f96
chore(net): modified doc comments
2026-07-15 18:48:21 +02:00
Serkyo
7620c3b54e
feat(client): connect to server and complete handshake
2026-07-14 01:38:58 +02:00
Serkyo
e941415836
feat(server): accept QUIC client connections
2026-07-14 01:38:58 +02:00
Serkyo
e9d6854e7a
feat(net): add threaded tokio runtime bridge for connections
2026-07-14 01:38:50 +02:00
Serkyo
30a45f1c41
docs(net): trim handshake pack-validation TODO comment
2026-07-14 01:18:53 +02:00
Serkyo
7b3908dd7f
test(workspace): relocate all tests into per-crate src/tests via #[path]
2026-07-14 00:42:42 +02:00
Serkyo
8e7cd15085
feat(net): perform synvael handshake and graceful disconnect
2026-07-13 23:40:53 +02:00
Serkyo
092d546c52
docs(workspace): standardize function doc sections and enforce # Errors
2026-07-13 21:09:27 +02:00
Serkyo
c6d8d1bd70
refactor(net): move NetError into its own error module
2026-07-13 19:56:19 +02:00
Serkyo
aa9dc18efe
feat(net): add QUIC endpoints with synvael ALPN and self-signed TLS
2026-07-13 14:26:19 +02:00
Serkyo
f83a0f1232
chore(shared): add reasons to expect attributes
2026-07-13 00:39:49 +02:00
Serkyo
343ea7605b
chore(server): add reasons to expect attributes
2026-07-13 00:39:49 +02:00
Serkyo
6b3ae06031
chore(renderer): add reasons to expect attributes
2026-07-13 00:39:49 +02:00
Serkyo
8a5c662e10
chore(client): add reasons to expect attributes
2026-07-13 00:39:49 +02:00
Serkyo
f7e986cb24
feat(net): add length-prefixed postcard frame codec
2026-07-13 00:27:51 +02:00
Serkyo
339c0efe5a
feat(shared): support server-pushed resource packs
2026-07-12 16:01:39 +02:00
Serkyo
41ba2e5d5c
feat(shared): add network control-protocol message types
2026-07-12 13:33:36 +02:00
Serkyo
ae33251c70
Merge branch 'dev' into feat/networking-foundation
...
# Conflicts:
# Cargo.lock
2026-07-12 01:04:16 +02:00
Serkyo
fef3d1d549
chore(net): removed redundant licence-file
2026-07-12 01:02:33 +02:00
Serkyo
eb696385b4
Merge branch 'dev' of github.com:Cryoforge-Nexus/Synvael into dev
2026-07-12 00:48:03 +02:00
Serkyo
81c578ad0a
chore(workspace): removed redundant license-file
2026-07-12 00:46:25 +02:00
Serkyo
eefc9a2a5a
docs(workspace): unwrap pre-wrapped module doc comments
2026-07-12 00:41:34 +02:00
Serkyo
2891ff1feb
refactor(workspace): centralize serde/postcard/thiserror pins and use concise dep inheritance
2026-07-12 00:41:34 +02:00
Serkyo
f0d2269e8f
chore(workspace): scaffold net crate for QUIC transport
2026-07-12 00:28:45 +02:00
Serkyo
82cb8513be
chore(workspace): inherit license-file and normalize package key order
2026-07-11 23:52:20 +02:00
Serkyo
8a0a28765c
chore(server): changed test import to be generic
2026-07-11 22:47:20 +02:00
Serkyo
c54eeb2216
feat(server): add dirty-chunk write-back on unload
2026-07-11 21:44:35 +02:00
Serkyo
0fedd1b30b
chore(workspace): refactored the way some comments were written across the repository
2026-07-10 17:38:07 +02:00
Serkyo
955d62bfcf
feat(server): add LRU chunk cache
2026-07-10 13:23:58 +02:00
Serkyo
e0dfcde529
feat(server): add chunk loading pipeline
2026-07-10 13:01:21 +02:00
Serkyo
fa99b6dcea
docs(server): note whole-file rewrite deviation from save spec
2026-07-10 01:15:44 +02:00
Serkyo
085f496898
chore(workspace): removed leftover mod.rs files
2026-07-10 00:26:59 +02:00
Serkyo
54d2f522cc
refactor(server): migrate mod.rs modules to path-style files
2026-07-09 19:47:00 +02:00
Serkyo
b6687dc82b
refactor(shared): migrate mod.rs modules to path-style files
2026-07-09 19:47:00 +02:00
Serkyo
1db124e63b
feat(server): add atomic region-file durability layer
2026-07-09 15:14:24 +02:00
Serkyo
a4f2bb32bc
style(shared): apply rustfmt to save module
2026-07-09 15:00:28 +02:00
Serkyo
8c8c70e990
fix(shared): correct SYNR framing order and widen worldgen version
2026-07-09 14:59:18 +02:00
Serkyo
de6f7dd722
feat(shared): add SYNR region index framing
2026-07-09 00:20:34 +02:00
Serkyo
b676755633
feat(shared): add SYNC per-chunk record encoding
2026-07-08 16:21:54 +02:00
Serkyo
7ce3bb8577
refactor(server): propagate config-load errors via anyhow
2026-07-08 15:14:45 +02:00
Serkyo
e940cf560e
chore(workspace): centralize shared deps and unify glam to 0.33
2026-07-08 15:05:55 +02:00
Serkyo
9a3224d102
feat(shared): add sparse baseline-relative ChunkData
2026-07-08 14:16:02 +02:00
Serkyo
b196dc3152
refactor(shared): split world module into per-concept files
2026-07-08 02:37:19 +02:00
Serkyo
3a3ecc13e2
feat(shared): add palette-compressed chunk representation
2026-07-08 02:16:18 +02:00
Serkyo
12390d3008
refactor(server): drop unused synchronous get_chunk path
2026-07-07 22:47:07 +02:00
Serkyo
ca39d36a81
feat(server): gate startup on initial region streaming
2026-07-07 22:29:50 +02:00
Serkyo
19fdec44d1
test(server): cover async reconcile convergence and eviction race
2026-07-07 22:27:00 +02:00
Serkyo
9001cc6f98
feat(server): generate chunks on worker pool
2026-07-07 22:21:32 +02:00
Serkyo
44511cde75
feat(server): stream chunks around a player entity via ECS
2026-07-07 18:53:24 +02:00
Serkyo
9b4cfccd43
refactor(server): pass EntityPos to load_around
2026-07-07 18:14:52 +02:00
Serkyo
bf55c91e91
feat(shared): derive serde on EntityPos
2026-07-07 18:14:52 +02:00
Serkyo
d0ddc31801
feat(shared): add EntityPos split-coordinate entity position
2026-07-07 18:07:15 +02:00
Serkyo
3b802a542f
perf(server): parallelize chunk generation in load_around
2026-07-07 17:17:54 +02:00
Serkyo
6bd8e5d3ba
feat(server): generate a cylinder of chunks around a center point
2026-07-07 01:47:46 +02:00
Serkyo
8045c3cae3
refactor(workspace): use #[expect] over #[allow] for lint suppressions
2026-07-07 01:28:56 +02:00
Serkyo
d3c75a4454
feat(shared): add ChunkPos::from_world world-to-chunk conversion
2026-07-07 01:17:35 +02:00
Serkyo
ea6fbf1624
feat(client): add free-fly camera with wasd and mouse-look
2026-07-06 00:20:57 +02:00
Serkyo
102c75a514
refactor(workspace): rename project codename from Catalyst to Synvael
2026-06-27 22:57:08 +02:00
Serkyo
cd7ab3a3c5
chore(workspace): add SPDX identifiers to source files
2026-05-17 21:06:39 +02:00
Serkyo
de17b143db
chore(workspace): declare license metadata in Cargo.toml
2026-05-17 21:06:13 +02:00
Serkyo
928f0103a4
docs(renderer): collapse multi-line comments and note construction leak
2026-05-16 20:30:01 +02:00
Serkyo
f04912df70
fix(renderer): plug shader-module and stale-handle leaks
...
create_graphics_pipeline now destroys its shader modules on the error
path as well, and update_mesh nulls the buffer handles after destroying
them so a later Drop or retry cannot redestroy freed buffers.
2026-05-16 19:43:16 +02:00
Serkyo
4130ebf5f9
fix(client): drop renderer before window on shutdown
...
Reorder the fields of App so renderer is declared before window. Rust
drops struct fields in declaration order, and the renderer owns a
Vulkan surface tied to the window's display-server handle; tearing the
window down first leaves the surface dangling when Renderer::drop runs.
2026-05-16 19:28:54 +02:00
Serkyo
19f79080b1
fix(renderer): correct resource teardown ordering in Drop
...
Replace ptr::read-based field consumption with Option<T> + take() for
sync primitives, GPU allocations, and the allocator itself. The prior
pattern left bitwise-duplicated values in the original fields, so Rust's
automatic field drop after Drop::drop returned freed the same heap
buffers (Vec backings inside SyncPrimitives) and Allocations twice.
The allocator is now explicitly dropped before destroy_device so its
own Drop impl, which releases vk::DeviceMemory blocks, runs while the
logical device is still valid. Swapchain image views are also now
destroyed before the swapchain, as required by the Vulkan spec.
2026-05-16 19:28:47 +02:00
Serkyo
5659469e17
chore(workspace): fix formatting and clippy warnings
2026-05-16 19:05:53 +02:00
Serkyo
61a7fb0ed5
feat(client): implement face culling and voxel rendering
2026-05-16 19:04:27 +02:00
Serkyo
203cc2a671
feat(renderer): add dynamic mesh updates via buffer reallocation
2026-05-16 19:04:20 +02:00
Serkyo
ab01c8a033
feat(server): implement authoritative chunk tracking
2026-05-16 19:04:08 +02:00
Serkyo
4724e91281
feat(shared): define base voxel world types and procedural generation
2026-05-16 19:03:29 +02:00
Serkyo
38077c980d
feat(renderer): implement depth testing and indexed 3d rendering
2026-05-12 23:00:30 +02:00
Serkyo
32ef9ca4c6
chore(workspace): finalize clippy requirements and resolve all warnings
2026-05-12 19:03:39 +02:00
Serkyo
d30834e14f
chore(workspace): run cargo fmt
2026-05-12 18:53:56 +02:00
Serkyo
34f1a9d989
chore(workspace): enforce missing_docs and resolve all linting violations
2026-05-12 18:52:30 +02:00
Serkyo
fd5d5e4e4b
chore(workspace): configure linters and format codebase
2026-05-12 11:43:17 +02:00
Serkyo
e6f8414817
feat(renderer): implement vertex buffer allocation and memory mapping
2026-05-11 00:04:42 +02:00
Serkyo
8af89292b6
feat(renderer): integrate graphics pipeline and initialize gpu allocator with centralized frames in flight
2026-05-10 22:56:14 +02:00
Serkyo
c7fc5de690
docs(renderer): add detailed docstrings for all struct fields and logic
2026-05-10 22:16:53 +02:00
Serkyo
17d06a0423
feat(renderer): add pipeline module for graphics pipeline creation
2026-05-10 22:02:43 +02:00
Serkyo
560b1e4d0f
feat(renderer): add mesh module with Vertex struct
2026-05-10 22:02:09 +02:00
Serkyo
1c3eb69cbf
fix(renderer): align synchronization with working save and force FIFO
2026-05-09 21:49:40 +02:00
Serkyo
3997fa5fd9
refactor(renderer): modularize crate and enable vulkan 1.3 features
2026-05-09 21:43:30 +02:00
Serkyo
1805ae6aa6
feat(renderer): implement robust synchronized render loop
2026-05-09 21:33:57 +02:00
Serkyo
e005bf1c75
feat(renderer): create synchronization primitives
2026-05-09 21:03:34 +02:00
Serkyo
d0fa203743
feat(renderer): create command pool and buffer
2026-05-09 17:35:09 +02:00
Serkyo
65b43651bb
feat(renderer): create image views for swapchain images
2026-05-09 17:29:47 +02:00
Serkyo
636c44b29f
fix(renderer): handle u32::MAX swapchain extent
...
Fixed a crash where the renderer would attempt to create a swapchain with u32::MAX dimensions when the OS didn't provide a preferred extent. Updated Renderer::new to accept window dimensions and use them as a fallback. Also renamed InstanceCreateFailed to VulkanError for better generality.
2026-04-30 15:17:38 +02:00
Serkyo
76450da41f
feat(renderer): finalize swapchain initialization
...
Negotiated swapchain settings (format, present mode, extent), created the swapchain and its images, and ensured correct destruction order. Added comprehensive documentation for all new fields and methods.
2026-04-30 15:15:07 +02:00
Serkyo
5ee9fc1bd6
feat(renderer): implement surface creation and support checks
...
Created the OS surface and ensured that the selected GPU and queue family support presentation to that surface. Updated Drop to properly destroy the surface and improved documentation.
2026-04-30 14:56:45 +02:00
Serkyo
347f868af1
feat(renderer): update new() to accept window handles
...
Updated the Renderer constructor to accept RawDisplayHandle and RawWindowHandle, and updated the client to pass these handles during resumption. This is a prerequisite for surface creation.
2026-04-30 14:48:03 +02:00
Serkyo
70e08dd883
feat(renderer): implement Drop trait for resource cleanup
...
Ensured that the Logical Device, Debug Messenger, and Instance are destroyed in the correct reverse order when the Renderer is dropped. Added documentation for the cleanup process.
2026-04-30 14:26:18 +02:00
Serkyo
92764f6f2d
feat(renderer): implement logical device creation
...
Created the logical device handle, enabled Vulkan 1.3 features (dynamic rendering, synchronization2), and retrieved the graphics queue. Added documentation for the new fields and helpers.
2026-04-30 14:19:16 +02:00
Serkyo
7034a24498
feat(renderer): implement physical device selection
...
Added logic to enumerate and score physical devices, preferring discrete GPUs. Added NoSuitableGpu error variant and documentation for the selection process.
2026-04-30 13:46:46 +02:00
Serkyo
edcde4ffd1
feat(renderer): wire vulkan debug messenger to tracing
...
Implemented the Vulkan debug callback to intercept internal driver warnings and validation layer errors, converting them into tracing logs. Resolved unused assignment and unsafe pointer 2024 edition warnings. Added doc comments for the Renderer and its initialization logic.
2026-04-30 12:26:38 +02:00