1
1
+++
2
2
title = " This Month in Rust GameDev #30 - January 2022"
3
3
transparent = true
4
- draft = true
4
+ date = 2022-02-10
5
5
+++
6
6
7
7
<!-- no toc -->
@@ -106,12 +106,12 @@ _Rusty Vangers engine in action within the original game_
106
106
[ Vangers] game from the last century.
107
107
It's in Rust, and uses GPU and multiple threads heavily.
108
108
109
- Something incredible has been brewing within the small by dedicated community
109
+ Something incredible has been brewing within the small but dedicated community
110
110
of the original game. They prototyped a pluggable rendering interface in order
111
111
to support rendering the game via [ Rusty Vangers] instead of the default
112
112
CPU-based rasterizer. The plugin is made as a static library sub-crate with a
113
113
bunch of C-exported functions.
114
- Basic concept worked on the terrain, and the mini working group transitioned
114
+ The approach worked for the terrain, so the mini working group transitioned
115
115
to moving more visual features off the old path and into the Rust-based plugin.
116
116
117
117
At the same time, [ Rusty Vangers] engine got a number of important
@@ -138,7 +138,7 @@ engine. It has a demo available [on Steam][wor].
138
138
Latest developments:
139
139
140
140
- [ Making Your Game Go Fast by Asking Windows Nicely] [ wor-fast ] was published,
141
- discussing Windows specific performance tweaks in Way of Rhea's engine
141
+ discussing Windows- specific performance tweaks in Way of Rhea's engine
142
142
- Work started on the Snowcrab + Teleporter puzzles, completing nearly all the
143
143
puzzles in the main game
144
144
- Work began on art for The Professor (pictured left), Shrew, and Hermes
@@ -204,7 +204,7 @@ _A light to keep the night away_
204
204
Fortress and Cube World.
205
205
206
206
In January, another [ Veloren Reading Club was
207
- recorded] ( [veloren-reading-club-4] ) !. The ` entity_sync ` system was refactored to
207
+ recorded] ( [veloren-reading-club-4] ) ! The ` entity_sync ` system was refactored to
208
208
be parallel. This was the largest bottleneck during the last release party, and
209
209
this fix will allow us to more easily surpass the 200 player mark on the server.
210
210
Work has been done to improve dagger animations. Sounds for flowing rivers are
@@ -214,7 +214,7 @@ backward compatibility for older GPUs.
214
214
215
215
Skiing and ice skating have gotten to a playable state. The mounts system was
216
216
overhauled to make it more ergonomic to work with, you can [ watch a video of
217
- that here] [ veloren-mounts ] . Several shaders experimental shaders have been
217
+ that here] [ veloren-mounts ] . Several experimental shaders have been
218
218
added, along with a "point glow" which help lanterns look better. With these new
219
219
shaders, swimming underwater is a whole new experience! A tracking issue was
220
220
created for worldgen issues that will help coordinate direction for some large
@@ -313,22 +313,22 @@ Features
313
313
is a realistic sailing/foiling inshore simulator in development for PC/Steam
314
314
that will put you in the driving seat of modern competitive sailing.
315
315
316
- Last couple of months saw great disappointment for the failed port to WGPU
317
- due to unexpected performance losses compared to the old renderer.
318
- The game is now back to its original DirectX 11 renderer.
316
+ The last couple of months saw great disappointment for the failed port to WGPU
317
+ due to unexpected performance losses compared to the old renderer. The game is
318
+ now back to its original DirectX 11 renderer.
319
319
320
- February will see the beginning of the private alpha testing program, exciting
321
- opportunity to gather the first feedbacks about boat handling and controls
322
- before diving in one of the most challeging task of the game: sailing rules
323
- implementation.
320
+ February will see the beginning of the private alpha testing program, an
321
+ exciting opportunity to gather the first feedback about boat handling and
322
+ controls before diving into one of the most challenging tasks of the game:
323
+ sailing rules implementation.
324
324
325
- Content-wise, Hong Kong will soon join Den Haag as race location while the race
326
- course is getting more and more alive with addition of spectators boats.
327
- The playable foiling catamaran Jx50 is also constantly getting graphical
325
+ Content-wise, Hong Kong will soon join Den Haag as a race location while the
326
+ racecourse is becoming more and more alive with the addition of spectators
327
+ boats. The playable foiling catamaran Jx50 is also constantly getting graphical
328
328
updates and physics tweaks.
329
329
330
- Hydrofoil Generation is scheduled to release on Steam Early Access in
331
- Summer 2022.
330
+ Hydrofoil Generation is scheduled to release on Steam Early Access in Summer
331
+ 2022 .
332
332
333
333
[ Hydrofoil Generation ] : https://hydrofoil-generation.com/
334
334
[ hgs_facebook ] : https://www.facebook.com/HydrofoilGenerationSailing/
@@ -344,7 +344,7 @@ Summer 2022.
344
344
[ @anastasiaopara ] [ country-slice-twitter ] 's hobby project, where users can draw a
345
345
small procedurally assembled scene.
346
346
347
- Newest addition is an erase brush and an ability to continue existing walls.
347
+ The newest addition is an erase brush and an ability to continue existing walls.
348
348
349
349
[ @anastasiaopara ] [ country-slice-twitter ] also shared [ a Twitter thread] [ country-slice-discussion ]
350
350
about doing procedural generation in Houdini vs Rust & OpenGL.
@@ -360,26 +360,26 @@ about doing procedural generation in Houdini vs Rust & OpenGL.
360
360
godot-rust ([ GitHub] [ gd-github ] , [ Discord] [ gd-discord ] , [ Twitter] [ gd-twitter ] )
361
361
is a Rust library that provides bindings for the Godot game engine.
362
362
363
- The start of 2022 is a good opportunity to showcase a few godot-rust games
364
- in development. More info is available in [ the book] [ gd-book-games ] .
363
+ The start of 2022 is a good opportunity to showcase a few godot-rust games in
364
+ development. More info is available in [ the book] [ gd-book-games ] .
365
365
366
366
![ godot-rust example games] ( godot-rust-games.jpg )
367
367
368
- Using custom builds of the Godot engine involved quite a bit of ceremony
369
- in the past: manual CLI invocations, code replacement and re-wiring
370
- of the ` gdnative-bindings ` subcrate. The approach has been fundamentally
371
- overhauled, and is now as simple as specifying the crate feature ` custom-godot `
368
+ Using custom builds of the Godot engine involved quite a bit of ceremony in the
369
+ past: manual CLI invocations, code replacement, and re-wiring of the
370
+ ` gdnative-bindings ` subcrate. The approach has been fundamentally overhauled,
371
+ and is now as simple as specifying the crate feature ` custom-godot `
372
372
([ #833 ] [ gd-833 ] ). The library will automatically look for a ` godot ` executable
373
373
in the system path (or a ` GODOT_BIN ` environment variable), and regenerate
374
374
` api.json ` . This makes using older or module-extended Godot versions a breeze.
375
375
376
- Latest ` master ` branch has now been updated to support Godot 3.4 out of the box
377
- ([ #829 ] [ gd-829 ] ).
376
+ The latest ` master ` branch has now been updated to support Godot 3.4 out of the
377
+ box ([ #829 ] [ gd-829 ] ).
378
378
379
- Upcoming godot-rust version 0.10 seems to be finally on the horizon, with only
380
- a handful of tasks left ([ #842 ] [ gd-842 ] ). A changelog since v0.9.3 is now
381
- available. The continous stream of small improvements here and there has led
382
- to a sizable list! ([ #845 ] [ gd-845 ] )
379
+ Upcoming godot-rust version 0.10 seems to be finally on the horizon, with only a
380
+ handful of tasks left ([ #842 ] [ gd-842 ] ). A changelog since v0.9.3 is now
381
+ available. The continuous stream of small improvements here and there has led to
382
+ a sizable list! ([ #845 ] [ gd-845 ] )
383
383
384
384
[ gd-833 ] : https://github.com/godot-rust/godot-rust/pull/833
385
385
[ gd-829 ] : https://github.com/godot-rust/godot-rust/pull/829
@@ -469,11 +469,11 @@ that aims to make rendering simple and give the user full control.
469
469
- Environment lighting (image-based lighting)
470
470
- HDR environment map
471
471
- Headless graphics context
472
- - Tangent vertex atributes
472
+ - Tangent vertex attributes
473
473
- Texture transform
474
474
- Cube map render targets
475
475
- f16 and u16 texture data types
476
- - and more..
476
+ - and more...
477
477
478
478
See [ this Twitter thread] [ three-d-twitter ] for videos.
479
479
@@ -487,7 +487,7 @@ month, an alpha version of Tetra 0.7 was released, featuring:
487
487
488
488
- Support for a wider variety of texture formats
489
489
- A more powerful API for blending
490
- - Lots of bug fixes, cleanups and improvements
490
+ - Lots of bug fixes, cleanups, and improvements
491
491
492
492
For more details, see the [ changelog] [ tetra-changelog ] .
493
493
@@ -509,7 +509,7 @@ rationale for why they decided to move on from the project.
509
509
[ ![ A speed limit sign labeled 45 FPS] ( awn-header.jpg )] [ awn-post ]
510
510
511
511
[ Mason Remaley] [ awn-mason-remaley ] published [ a blog post] [ awn-post ] covering
512
- Windows specific performance tweaks employed in his Rust game engine:
512
+ Windows- specific performance tweaks employed in his Rust game engine:
513
513
514
514
> Normally, to make your software go faster, it has to do less work. This
515
515
> usually involves improving your algorithms, skipping work the user won't see,
@@ -553,7 +553,7 @@ takeaways from this post:
553
553
hole goes.
554
554
- Evaluate the library ecosystem of Rust thoroughly before using it for a
555
555
project that requires somewhat exotic functionality.
556
- - Rust forces you to care about the details, regardless whether you want to.
556
+ - Rust forces you to care about the details, regardless of whether you want to.
557
557
558
558
The remainder of the article goes into depth on these three points.
559
559
@@ -689,15 +689,15 @@ _Sci-fi base demo scene, [watch TAA demo on youtube][rafx-youtube-video]!_
689
689
Since the previous rafx update in this newsletter (6 months ago!), many new
690
690
features have been introduced to improve performance and image quality. The
691
691
main rendering pipeline has also been split into "modern" and "basic"
692
- pipelines. Unlike the basic pipeline which focusses on wide compatibility,
692
+ pipelines. Unlike the basic pipeline which focuses on wide compatibility,
693
693
the modern pipeline uses forward-clustered lighting and handles hundreds
694
694
of shadow-casting lights. It is targeting compute shaders and will be adding
695
695
bindless and GPU-driven rendering soon.
696
696
697
- Since the last update, the modern pipeline adds GPU-accelierated light binning,
697
+ Since the last update, the modern pipeline adds GPU-accelerated light binning,
698
698
SSAO, shadow map atlasing/caching, TAA with sharpening, and auto-exposure/HDR.
699
699
In addition, both modern and basic pipelines now support transparency. A
700
- [ video demonstrating TAA] ( rafx-youtube-video ) (temporal anti-aliasing) is
700
+ [ video demonstrating TAA] [ rafx-youtube-video ] (temporal anti-aliasing) is
701
701
available on youtube.
702
702
703
703
With these performance improvements, ` rafx ` is now able to render challenging
@@ -715,7 +715,7 @@ scenes with photorealistic style at 60FPS/1440p on modern, mid-range GPUs.
715
715
716
716
When starting a new Vulkan project, there's always the struggle of writing a
717
717
whole bunch of boilerplate code in order to, e.g., get your first triangle on
718
- the screen. You have to create an ` VkInstance ` , with the validation layers
718
+ the screen. You have to create a ` VkInstance ` , with the validation layers
719
719
set up and working for development. Then select the best suited
720
720
` VkPhysicalDevice ` for your app's requirements. Use that to create a ` VkDevice `
721
721
with the appropriate queue families chosen. Oh, and after that, you need
@@ -731,49 +731,51 @@ the excellent [vk-bootstrap] library for C++.
731
731
732
732
### [ Edict]
733
733
734
- New archetypes based ECS implementation by [ @zakarumych ] ( https://github.com/zakarumych ) .
734
+ [ Edict ] is a new archetype- based ECS implementation by [ @zakarumych ] .
735
735
736
736
The novel feature of [ Edict] is entity ownership implemented via reference counting.
737
737
This optional feature allows creating owned kind of ` Entity ` "reference",
738
- that ensures entity is alive and despawns it on drop.
738
+ that ensures the entity is alive and despawns it on drop.
739
739
Storing owning ` Entity ` in the component of another entity
740
740
creates ownership relation between those entities.
741
741
Even though ` Entity ` is an owning reference,
742
742
components of the entity are can be queried from ` World ` as usual.
743
743
Shared ownership is also available.
744
744
745
745
Optimized for both high density ` World ` s with thousands of entities
746
- and also for ` World ` s with lower number of entities spread among many archetypes.
747
- [ Edict] is aimed for wide range of game genres and use cases outside of games.
746
+ and also for ` World ` s with a lower number of entities spread among many archetypes.
747
+ [ Edict] is aimed at a wide range of game genres and use cases outside of games.
748
748
749
749
Built-in change detection with epochs allows systems to query for components
750
- that were updated since last run of that query,
750
+ that were updated since the last run of that query,
751
751
or since any other epoch as defined by ` Tracks ` argument.
752
- This opens possibility to have multiple POV on changes even in single system.
753
- For example server-side netcode can track changes individually
754
- for each client and query for changes since last ACK.
752
+ This opens the possibility to have multiple POV on changes even in a single system.
753
+ For example, server-side netcode can track changes individually
754
+ for each client and query for changes since the last ACK.
755
755
[ Edict] optimizes iteration significantly when entities
756
756
with modified components are queried.
757
757
758
758
Although ECS abbreviation implies, [ Edict] does not come
759
759
with predefined ` System ` trait and systems scheduler.
760
760
We can call it ECQ (Entity-Component-Query) as an alternative to ECS.
761
761
762
- [ Edict] is added to [ ecs_bench_suite] ( https://github.com/rust-gamedev/ecs_bench_suite )
762
+ [ Edict] is added to [ ecs_bench_suite]
763
763
so anyone can compare performance in some trivial examples with other ECS.
764
764
765
765
Development focus for February is making more public API, including unsafe parts,
766
- to allow writing custom queries, implement schedulers with parallel execution etc.
766
+ to allow writing custom queries, implement schedulers with parallel execution, etc.
767
767
768
+ [ @zakarumych ] : https://github.com/zakarumych
768
769
[ Edict ] : https://github.com/zakarumych/edict
770
+ [ ecs_bench_suite ] : https://github.com/rust-gamedev/ecs_bench_suite
769
771
770
772
### [ bevy_backroll v0.3] [ backroll-github ]
771
773
772
774
[ Backroll] [ backroll-github ] is a 100% type-safe native Rust implementation of the
773
775
[ GGPO] [ ggpo ] rollback netcode library. The core library has gone through
774
- superfical updates, but the [ Bevy plugin] [ bevy-backroll-crates-io ] has been
775
- massively overhauled. This update signfigantly improves the ergonomics of setting
776
- up rollback netcode for your game (no more ugly turbofishes! no more generic type
776
+ superficial updates, but the [ Bevy plugin] [ bevy-backroll-crates-io ] has been
777
+ massively overhauled. This update significantly improves the ergonomics of setting
778
+ up rollback netcode for your game (no more ugly turbofishes! No more generic type
777
779
parameter config type!), provides an automatic way of saving and loading Bevy
778
780
components and resources, and fully parallelizes the saving and loading of game
779
781
state when a rollback occurs.
0 commit comments