11+++
22title = " This Month in Rust GameDev #30 - January 2022"
33transparent = true
4- draft = true
4+ date = 2022-02-10
55+++
66
77<!-- no toc -->
@@ -106,12 +106,12 @@ _Rusty Vangers engine in action within the original game_
106106[ Vangers] game from the last century.
107107It's in Rust, and uses GPU and multiple threads heavily.
108108
109- Something incredible has been brewing within the small by dedicated community
109+ Something incredible has been brewing within the small but dedicated community
110110of the original game. They prototyped a pluggable rendering interface in order
111111to support rendering the game via [ Rusty Vangers] instead of the default
112112CPU-based rasterizer. The plugin is made as a static library sub-crate with a
113113bunch 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
115115to moving more visual features off the old path and into the Rust-based plugin.
116116
117117At the same time, [ Rusty Vangers] engine got a number of important
@@ -138,7 +138,7 @@ engine. It has a demo available [on Steam][wor].
138138Latest developments:
139139
140140- [ 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
142142- Work started on the Snowcrab + Teleporter puzzles, completing nearly all the
143143 puzzles in the main game
144144- Work began on art for The Professor (pictured left), Shrew, and Hermes
@@ -204,7 +204,7 @@ _A light to keep the night away_
204204Fortress and Cube World.
205205
206206In 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
208208be parallel. This was the largest bottleneck during the last release party, and
209209this fix will allow us to more easily surpass the 200 player mark on the server.
210210Work has been done to improve dagger animations. Sounds for flowing rivers are
@@ -214,7 +214,7 @@ backward compatibility for older GPUs.
214214
215215Skiing and ice skating have gotten to a playable state. The mounts system was
216216overhauled 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
218218added, along with a "point glow" which help lanterns look better. With these new
219219shaders, swimming underwater is a whole new experience! A tracking issue was
220220created for worldgen issues that will help coordinate direction for some large
@@ -313,22 +313,22 @@ Features
313313is a realistic sailing/foiling inshore simulator in development for PC/Steam
314314that will put you in the driving seat of modern competitive sailing.
315315
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.
319319
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.
324324
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
328328updates and physics tweaks.
329329
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 .
332332
333333[ Hydrofoil Generation ] : https://hydrofoil-generation.com/
334334[ hgs_facebook ] : https://www.facebook.com/HydrofoilGenerationSailing/
@@ -344,7 +344,7 @@ Summer 2022.
344344[ @anastasiaopara ] [ country-slice-twitter ] 's hobby project, where users can draw a
345345small procedurally assembled scene.
346346
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.
348348
349349[ @anastasiaopara ] [ country-slice-twitter ] also shared [ a Twitter thread] [ country-slice-discussion ]
350350about doing procedural generation in Houdini vs Rust & OpenGL.
@@ -360,26 +360,26 @@ about doing procedural generation in Houdini vs Rust & OpenGL.
360360godot-rust ([ GitHub] [ gd-github ] , [ Discord] [ gd-discord ] , [ Twitter] [ gd-twitter ] )
361361is a Rust library that provides bindings for the Godot game engine.
362362
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 ] .
365365
366366![ godot-rust example games] ( godot-rust-games.jpg )
367367
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 `
372372([ #833 ] [ gd-833 ] ). The library will automatically look for a ` godot ` executable
373373in the system path (or a ` GODOT_BIN ` environment variable), and regenerate
374374` api.json ` . This makes using older or module-extended Godot versions a breeze.
375375
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 ] ).
378378
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 ] )
383383
384384[ gd-833 ] : https://github.com/godot-rust/godot-rust/pull/833
385385[ 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.
469469- Environment lighting (image-based lighting)
470470- HDR environment map
471471- Headless graphics context
472- - Tangent vertex atributes
472+ - Tangent vertex attributes
473473- Texture transform
474474- Cube map render targets
475475- f16 and u16 texture data types
476- - and more..
476+ - and more...
477477
478478See [ this Twitter thread] [ three-d-twitter ] for videos.
479479
@@ -487,7 +487,7 @@ month, an alpha version of Tetra 0.7 was released, featuring:
487487
488488- Support for a wider variety of texture formats
489489- A more powerful API for blending
490- - Lots of bug fixes, cleanups and improvements
490+ - Lots of bug fixes, cleanups, and improvements
491491
492492For more details, see the [ changelog] [ tetra-changelog ] .
493493
@@ -509,7 +509,7 @@ rationale for why they decided to move on from the project.
509509[ ![ A speed limit sign labeled 45 FPS] ( awn-header.jpg )] [ awn-post ]
510510
511511[ 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:
513513
514514> Normally, to make your software go faster, it has to do less work. This
515515> usually involves improving your algorithms, skipping work the user won't see,
@@ -553,7 +553,7 @@ takeaways from this post:
553553 hole goes.
554554- Evaluate the library ecosystem of Rust thoroughly before using it for a
555555 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.
557557
558558The remainder of the article goes into depth on these three points.
559559
@@ -689,15 +689,15 @@ _Sci-fi base demo scene, [watch TAA demo on youtube][rafx-youtube-video]!_
689689Since the previous rafx update in this newsletter (6 months ago!), many new
690690features have been introduced to improve performance and image quality. The
691691main 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,
693693the modern pipeline uses forward-clustered lighting and handles hundreds
694694of shadow-casting lights. It is targeting compute shaders and will be adding
695695bindless and GPU-driven rendering soon.
696696
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,
698698SSAO, shadow map atlasing/caching, TAA with sharpening, and auto-exposure/HDR.
699699In 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
701701available on youtube.
702702
703703With 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.
715715
716716When starting a new Vulkan project, there's always the struggle of writing a
717717whole 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
719719set up and working for development. Then select the best suited
720720` VkPhysicalDevice ` for your app's requirements. Use that to create a ` VkDevice `
721721with the appropriate queue families chosen. Oh, and after that, you need
@@ -731,49 +731,51 @@ the excellent [vk-bootstrap] library for C++.
731731
732732### [ Edict]
733733
734- New archetypes based ECS implementation by [ @zakarumych ] ( https://github.com/zakarumych ) .
734+ [ Edict ] is a new archetype- based ECS implementation by [ @zakarumych ] .
735735
736736The novel feature of [ Edict] is entity ownership implemented via reference counting.
737737This 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.
739739Storing owning ` Entity ` in the component of another entity
740740creates ownership relation between those entities.
741741Even though ` Entity ` is an owning reference,
742742components of the entity are can be queried from ` World ` as usual.
743743Shared ownership is also available.
744744
745745Optimized 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.
748748
749749Built-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,
751751or 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.
755755[ Edict] optimizes iteration significantly when entities
756756with modified components are queried.
757757
758758Although ECS abbreviation implies, [ Edict] does not come
759759with predefined ` System ` trait and systems scheduler.
760760We can call it ECQ (Entity-Component-Query) as an alternative to ECS.
761761
762- [ Edict] is added to [ ecs_bench_suite] ( https://github.com/rust-gamedev/ecs_bench_suite )
762+ [ Edict] is added to [ ecs_bench_suite]
763763so anyone can compare performance in some trivial examples with other ECS.
764764
765765Development 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.
767767
768+ [ @zakarumych ] : https://github.com/zakarumych
768769[ Edict ] : https://github.com/zakarumych/edict
770+ [ ecs_bench_suite ] : https://github.com/rust-gamedev/ecs_bench_suite
769771
770772### [ bevy_backroll v0.3] [ backroll-github ]
771773
772774[ Backroll] [ backroll-github ] is a 100% type-safe native Rust implementation of the
773775[ 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
777779parameter config type!), provides an automatic way of saving and loading Bevy
778780components and resources, and fully parallelizes the saving and loading of game
779781state when a rollback occurs.
0 commit comments