Skip to content

Commit 8565455

Browse files
N30: Release, take 2 (rust-gamedev#944)
Co-authored-by: Joe Clay <[email protected]> Co-authored-by: Forest Anderson <[email protected]>
1 parent 749395f commit 8565455

File tree

3 files changed

+59
-54
lines changed

3 files changed

+59
-54
lines changed

content/news/030/graphite_alpha.png

177 KB
Loading

content/news/030/index.md

+55-53
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
+++
22
title = "This Month in Rust GameDev #30 - January 2022"
33
transparent = 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.
107107
It'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
110110
of the original game. They prototyped a pluggable rendering interface in order
111111
to support rendering the game via [Rusty Vangers] instead of the default
112112
CPU-based rasterizer. The plugin is made as a static library sub-crate with a
113113
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
115115
to moving more visual features off the old path and into the Rust-based plugin.
116116

117117
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].
138138
Latest 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_
204204
Fortress and Cube World.
205205

206206
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
208208
be parallel. This was the largest bottleneck during the last release party, and
209209
this fix will allow us to more easily surpass the 200 player mark on the server.
210210
Work has been done to improve dagger animations. Sounds for flowing rivers are
@@ -214,7 +214,7 @@ backward compatibility for older GPUs.
214214

215215
Skiing and ice skating have gotten to a playable state. The mounts system was
216216
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
218218
added, along with a "point glow" which help lanterns look better. With these new
219219
shaders, swimming underwater is a whole new experience! A tracking issue was
220220
created for worldgen issues that will help coordinate direction for some large
@@ -313,22 +313,22 @@ Features
313313
is a realistic sailing/foiling inshore simulator in development for PC/Steam
314314
that 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
328328
updates 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
345345
small 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]
350350
about doing procedural generation in Houdini vs Rust & OpenGL.
@@ -360,26 +360,26 @@ about doing procedural generation in Houdini vs Rust & OpenGL.
360360
godot-rust ([GitHub][gd-github], [Discord][gd-discord], [Twitter][gd-twitter])
361361
is 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
373373
in 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

478478
See [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

492492
For 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

558558
The 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]!_
689689
Since the previous rafx update in this newsletter (6 months ago!), many new
690690
features have been introduced to improve performance and image quality. The
691691
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,
693693
the modern pipeline uses forward-clustered lighting and handles hundreds
694694
of shadow-casting lights. It is targeting compute shaders and will be adding
695695
bindless 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,
698698
SSAO, shadow map atlasing/caching, TAA with sharpening, and auto-exposure/HDR.
699699
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
701701
available on youtube.
702702

703703
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.
715715

716716
When starting a new Vulkan project, there's always the struggle of writing a
717717
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
719719
set up and working for development. Then select the best suited
720720
`VkPhysicalDevice` for your app's requirements. Use that to create a `VkDevice`
721721
with 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

736736
The novel feature of [Edict] is entity ownership implemented via reference counting.
737737
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.
739739
Storing owning `Entity` in the component of another entity
740740
creates ownership relation between those entities.
741741
Even though `Entity` is an owning reference,
742742
components of the entity are can be queried from `World` as usual.
743743
Shared ownership is also available.
744744

745745
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.
748748

749749
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,
751751
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.
755755
[Edict] optimizes iteration significantly when entities
756756
with modified components are queried.
757757

758758
Although ECS abbreviation implies, [Edict] does not come
759759
with predefined `System` trait and systems scheduler.
760760
We 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]
763763
so anyone can compare performance in some trivial examples with other ECS.
764764

765765
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.
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
777779
parameter config type!), provides an automatic way of saving and loading Bevy
778780
components and resources, and fully parallelizes the saving and loading of game
779781
state when a rollback occurs.

sass/_extra.scss

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
hr {
2-
margin-bottom: $spacing-unit / 2;
2+
border: 0;
3+
height: 1px;
4+
margin: 32px 0;
5+
background-color: #bfbfbf;
36
}
47

58
li {

0 commit comments

Comments
 (0)