1
1
+++
2
2
title = " This Month in Rust GameDev #23 - June 2021"
3
- date = 2021-07-01
3
+ date = 2021-07-08
4
4
transparent = true
5
- draft = true
5
+ draft = false
6
6
+++
7
7
8
- <!-- Check the post with markdownlint-->
9
-
10
- Welcome to the {TODO}th issue of the Rust GameDev Workgroup's
8
+ Welcome to the 23rd issue of the Rust GameDev Workgroup's
11
9
monthly newsletter.
12
10
[ Rust] is a systems language pursuing the trifecta:
13
11
safety, concurrency, and speed.
@@ -36,11 +34,7 @@ Feel free to send PRs about your own projects!
36
34
- [ Engine Updates] ( #engine-updates )
37
35
- [ Tooling Updates] ( #tooling-updates )
38
36
- [ Library Updates] ( #library-updates )
39
- - [ Popular Workgroup Issues in Github] ( #popular-workgroup-issues-in-github )
40
- - [ Meeting Minutes] ( #meeting-minutes )
41
37
- [ Requests for Contribution] ( #requests-for-contribution )
42
- - [ Jobs] ( #jobs )
43
- - [ Bonus] ( #bonus )
44
38
45
39
<!--
46
40
Ideal section structure is:
@@ -125,7 +119,7 @@ along with an architectural overview of the project can be read in the
125
119
([ /r/OpenCombatGame] ( https://reddit.com/r/OpenCombatGame ) ,
126
120
[ Discord] ( https://discord.gg/YD2V7XsBQZ ) ,
127
121
[ Forum] ( https://discourse.opencombat.bux.fr/ ) )
128
- is a real time tactical game directly inspired from
122
+ is a real time tactical game directly inspired by
129
123
[ Close Combat Series] ( https://en.wikipedia.org/wiki/Close_Combat_(series) ) .
130
124
The player takes control of soldier units and orders them to win the battles
131
125
from a top down 2D view.
@@ -171,7 +165,7 @@ online multi user dungeons known as muds.
171
165
The project was birthed in April of 2020 and has come a long way since. It now
172
166
offers granular scripting access using [ lua] [ lua ] , plugin handling, built in
173
167
text-to-speech (via [ Speech dispatcher] [ speechd ] ), split view scrolling, modern
174
- telnet protocols and TLS connections to name a few.
168
+ telnet protocols, and TLS connections to name a few.
175
169
176
170
[ blightmud ] : https://github.com/Blightmud/Blightmud
177
171
[ tintin ] : https://tintin.mudhalla.net/
@@ -190,7 +184,7 @@ The Hat Chooses the Wizard is a 2D platformer for the Game Boy Advance.
190
184
It was made for this year's Game Maker's Toolkit (GMTK) game jam with the theme
191
185
joined together and came in the top 25% of over 5800 entries. The game plays
192
186
over 12 levels with the core mechanic being to throw your hat and then
193
- accelerate towards it. You can play it on a web based emulator embedded on the
187
+ accelerate towards it. You can play it on a web- based emulator embedded on the
194
188
[ itch] [ hatchooseswizard ] page.
195
189
196
190
The game is written in pure Rust and uses [ agb] [ agblibrary ] to
@@ -259,7 +253,7 @@ other players to join using WebRTC.
259
253
260
254
FishGame started as a [ nakama-rs] showcase, but now it's getting more life as
261
255
an independent game. To make a transition from a tech demo to a real game,
262
- lots of playtesting and fine-tuning happened this month. Most noticable
256
+ lots of playtesting and fine-tuning happened this month. Most noticeable
263
257
improvements: a new physics system with throwable everything and a new
264
258
zoom-to-fit camera system.
265
259
@@ -272,11 +266,12 @@ zoom-to-fit camera system.
272
266
![ Hyper Farmer logo] ( hyperfarmer.png )
273
267
274
268
The dubiously named [ Hyper Farmer] [ hyperfarmer-itch ] was made for the GMTK Game Jam
275
- using the Bevy engine. For some reason the player has to pick up all the hay from
269
+ using the Bevy engine. For some reason, the player has to pick up all the hay from
276
270
their fields using a giant laser slung between two tractors. Apart from the
277
- [ bevy_game_template] [ bevy_game_template ] , all the artwork, music and code was
271
+ [ bevy_game_template] [ bevy_game_template ] , all the artwork, music, and code was
278
272
made over about 24 hours. The game can be played in the
279
- [ browser] [ hyperfarmer-itch ] , and native builds are available on [ github releases] [ hyperfarmer ] .
273
+ [ browser] [ hyperfarmer-itch ] , and native builds are available
274
+ on [ github releases] [ hyperfarmer ] .
280
275
281
276
[ bevy_game_template ] : https://github.com/NiklasEi/bevy_game_template
282
277
[ hyperfarmer ] : https://github.com/will-hart/cloud-surfer
@@ -286,8 +281,8 @@ made over about 24 hours. The game can be played in the
286
281
287
282
[ ![ Way of Rhea on Steam] ( wor-dialogue.jpg )] [ wor ]
288
283
289
- [ Way of Rhea] [ wor ] is a picturesque puzzle platformer— without the platforming.
290
- Solve mind bending color puzzles, unlock new areas of a vibrant hub world, and
284
+ [ Way of Rhea] [ wor ] is a picturesque puzzle platformer- without the platforming.
285
+ Solve mind- bending color puzzles, unlock new areas of a vibrant hub world, and
291
286
talk to NPCs to unravel the mysteries of a world you left behind!
292
287
293
288
Way of Rhea is being produced by [ @masonremaley ] [ mason-remaley ] . Latest Way of
@@ -352,7 +347,7 @@ were recorded during the launch, and you can read about them in
352
347
[ blog #124 ] [ veloren-124 ] . At peak, 118 players were playing at the same
353
348
time during the launch.
354
349
355
- The plugins system recieved a tutorial about how to get started. Caves were
350
+ The plugins system received a tutorial about how to get started. Caves were
356
351
overhauled with lots of new content. Veloren has officially moved fully over to
357
352
wgpu, which you can read all about in [ blog #125 ] [ veloren-125 ] . Work has been
358
353
done on hot reloading for easier access of assets in game. Lots of new models
@@ -442,7 +437,7 @@ about reaching the delicious cupcake across your spaceship.
442
437
Made for the GMTK Game Jam.
443
438
444
439
> You play as a cute alien, who has a limited amount of steps.
445
- > He turns green when he can walk freely, but once he rans out of steps,
440
+ > He turns green when he can walk freely, but once he runs out of steps,
446
441
> he becomes red and can only push on crates.
447
442
> Luckily, some crates contain +1 or +2 steps for him,
448
443
> as long as he can push one into a laser.
@@ -534,17 +529,17 @@ rusty-editor updates:
534
529
535
530
![ 2D Sight Example] ( lineofsight.png )
536
531
537
- [ @basstabs ] published a tutorial which explains how to write a
532
+ [ @basstabs ] published a tutorial that explains how to write a
538
533
line of sight algorithm for 2D games in Rust without using trigonometry or
539
534
square roots. It includes vector diagrams and typeset math to explain the ideas
540
535
behind each stage of the algorithm, source code for each step, tests to verify
541
- accuracy of the methods, and suggestions for further improvements.
536
+ the accuracy of the methods, and suggestions for further improvements.
542
537
Additionally, the
543
538
[ repository] ( https://github.com/basstabs/2d-line-of-sight ) contains benchmarks
544
539
and a sample application written in [ ggez] ( https://crates.io/crates/ggez ) .
545
540
546
- _ Discussions: [ /r/rust_gamedev ] (
547
- https://www. reddit.com/r/rust\_gamedev/comments/nx79kq/ )_
541
+ _ Discussions:
542
+ [ /r/rust_gamedev ] ( https://reddit.com/r/rust\_ gamedev/comments/nx79kq/ ) _
548
543
549
544
[ lineofsight ] : https://basstabs.github.io/2d-line-of-sight/
550
545
[ @basstabs ] : https://github.com/basstabs
@@ -591,11 +586,12 @@ game development at different skill and experience levels.
591
586
### [ How to make plugins system with Rust and WebAssembly] [ devblog.arcana.rs ]
592
587
593
588
[ @zakarumych ] published an article about their experience creating
594
- fully safe plugins system using plugins compiled to WebAssembly.\
589
+ a fully safe plugins system using plugins compiled to WebAssembly.
595
590
It provides reasoning for choosing WASM in specific scenario
596
- and contains strategies for interacting with WASM modules embedded into application,\
591
+ and contains strategies for interacting with WASM modules embedded
592
+ into an application,
597
593
including dealing with dynamic memory of the module,
598
- string and array operations, function pointers etc.
594
+ string and array operations, function pointers, etc.
599
595
600
596
[ devblog.arcana.rs ] : https://devblog.arcana.rs/how-to-make-plugins-system-with-rust-and-webassembly
601
597
[ @zakarumych ] : https://github.com/zakarumych/
@@ -671,7 +667,7 @@ Graphite art contest_
671
667
672
668
Graphite ([ GitHub] [ graphite-repo ] , [ Discord] [ graphite-discord ] ,
673
669
[ Twitter] ( https://twitter.com/GraphiteEditor ) ) is an in-development vector and
674
- raster graphics editor built on a nondestructive node-based workflow.
670
+ raster graphics editor built on a non-destructive node-based workflow.
675
671
676
672
Since last newsletter, the editor has received the ability to select layers via
677
673
the layer panel and by clicking or dragging a box selection in the
@@ -686,7 +682,7 @@ the way for moving/scaling/rotating layers and the whole document within the
686
682
viewport.
687
683
688
684
[ Try it right now in your browser.] [ graphite-live-demo ] Graphite is making
689
- rapid progress towards becoming a nondestructive , procedural graphics editor
685
+ rapid progress towards becoming a non-destructive , procedural graphics editor
690
686
suitable of replacing traditional 2D DCC applications. Please
691
687
[ join the Discord] [ graphite-discord ] - and consider asking for a tour of the
692
688
code and how you can help!
@@ -704,7 +700,7 @@ _An depth image example_
704
700
[ texture_generator] by [ Orchaldir] is a library to generate textures,
705
701
and a library to use those textures to render tilemaps.
706
702
707
- This month the v0.5 version was release . Some of the updates:
703
+ This month the v0.5 version was released . Some of the updates:
708
704
709
705
- The editor was switched to [ Iced] .
710
706
- Layered textures.
@@ -750,9 +746,9 @@ implementation as well as helpful resources for developers.
750
746
backroll-rs features an added abstraction for the transportation layer and
751
747
also provides a bevy plugin, [ bevy-backroll] . GGRS replaces the
752
748
C-style callback API of GGPO with a simpler, more understandable control flow.
753
- The authors of both libraries recommend backroll-rs for developement ,
749
+ The authors of both libraries recommend backroll-rs for development ,
754
750
as it is currently more actively collaborated on.
755
- GGRS is recommended as a learning recource and entry point,
751
+ GGRS is recommended as a learning resource and entry point,
756
752
with a plethora of internal documentation and explanation.
757
753
758
754
The main requirement to make use of both presented libraries is determinism
@@ -819,10 +815,10 @@ time since the person who'd usually take responsibility for releasing a new vers
819
815
of glutin was unavailable, and no-one had the role of "back-up releaser".
820
816
[ @maroider ] has offered to fill this role for now.
821
817
822
- The upgrade to winit 0.25.0 brings with it a slew of bufixes , a couple of new
818
+ The upgrade to winit 0.25.0 brings with it a slew of bugfixes , a couple of new
823
819
features, and a single breaking change to
824
- [ ` WindowBuilderExtMacOS::with_activation_policy ` ] , which has been replaced by
825
- [ ` EventLoopExtMacOS::set_activation_policy ` ] . For a full list of changes, refer
820
+ [ WindowBuilderExtMacOS::with_activation_policy] , which has been replaced by
821
+ [ EventLoopExtMacOS::set_activation_policy] . For a full list of changes, refer
826
822
to [ winit's changelog] .
827
823
828
824
The departure and disappearance of a couple of maintainers has left winit in need
@@ -842,8 +838,8 @@ any of the [other services] bridged with matrix.
842
838
[ glutin ] : https://github.com/rust-windowing/glutin
843
839
[ winit ] : https://github.com/rust-windowing/winit
844
840
[ @maroider ] : https://github.com/maroider
845
- [ ` WindowBuilderExtMacOS::with_activation_policy` ] : https://docs.rs/winit/0.24.0/x86_64-apple-darwin/winit/platform/macos/trait.WindowBuilderExtMacOS.html#tymethod.with_activation_policy
846
- [ ` EventLoopExtMacOS::set_activation_policy` ] : https://docs.rs/winit/0.25.0/x86_64-apple-darwin/winit/platform/macos/trait.EventLoopExtMacOS.html#tymethod.set_activation_policy
841
+ [ WindowBuilderExtMacOS::with_activation_policy ] : https://docs.rs/winit/0.24.0/x86_64-apple-darwin/winit/platform/macos/trait.WindowBuilderExtMacOS.html#tymethod.with_activation_policy
842
+ [ EventLoopExtMacOS::set_activation_policy ] : https://docs.rs/winit/0.25.0/x86_64-apple-darwin/winit/platform/macos/trait.EventLoopExtMacOS.html#tymethod.set_activation_policy
847
843
[ winit's changelog ] : https://github.com/rust-windowing/winit/blob/master/CHANGELOG.md#0250-2021-05-15
848
844
[ matrix ] : https://matrix.to/#/#Glutin:matrix.org
849
845
[ other services ] : https://github.com/rust-windowing/winit#contact-us
@@ -859,7 +855,8 @@ resizable panels, more powerful plots, and more.
859
855
860
856
You can try out egui in the [ online demo] .
861
857
862
- _ Discussions: [ /r/rust] ( https://www.reddit.com/r/rust/comments/o76y9x/announcing_egui_013_the_simple_gui_library/ ) _
858
+ _ Discussions:
859
+ [ /r/rust] ( https://reddit.com/r/rust/comments/o76y9x/announcing_egui_013 ) _
863
860
864
861
[ egui ] : https://github.com/emilk/egui
865
862
[ online demo ] : https://emilk.github.io/egui
@@ -906,25 +903,25 @@ Several example controllers are provided as well:
906
903
907
904
### [ wgpu] family re-union
908
905
909
- ![ wgpu family reunion] ( wgpu-family-reunion.svg )
906
+ ![ wgpu family reunion] ( wgpu-family-reunion.jpg )
910
907
911
908
[ wgpu] is a [ WebGPU] implementation in Rust. It is safe, efficient,
912
909
and portable: it can target both native and the Web.
913
910
914
- [ Family reunion] is by far the biggest change in ` wgpu ` project since
911
+ [ Family reunion] is by far the biggest change in wgpu project since
915
912
the inception. First, the Rust API of [ wgpu-rs] was moved to the main
916
913
[ wgpu] repository. Second, the whole base was relicensed under MIT/Apache2.
917
914
918
915
[ gfx-hal] - the Vulkan Portability-like graphics API abstraction -
919
- was detached from the project. Instead ` wgpu ` got its own in-house unsafe
916
+ was detached from the project. Instead, wgpu got its own in-house unsafe
920
917
abstraction called "wgpu-hal" developed within the [ wgpu] repository.
921
918
922
919
The team released [ wgpu-0.9] right before this transition, to give the new
923
920
graphics infrastructure more time to take shape. At the time of writing,
924
921
supported backends on the new HAL include Vulkan, Metal, and OpenGL ES3.
925
922
926
923
Finally, the testing infrastructure received a major upgrade. It started
927
- rendering the examples on the available adapters and compraring the results
924
+ rendering the examples on the available adapters and comparing the results
928
925
with reference images.
929
926
This includes automatic testing using software adapters on CI.
930
927
@@ -933,11 +930,11 @@ This includes automatic testing using software adapters on CI.
933
930
[ gfx-hal ] : https://github.com/gfx-rs/gfx
934
931
[ wgpu-0.9 ] : https://crates.io/crates/wgpu/0.9.0
935
932
[ Family reunion ] : https://github.com/gfx-rs/wgpu/milestone/9?closed=1
933
+ [ WebGPU ] : https://www.w3.org/TR/webgpu/
936
934
937
935
### [ rafx]
938
936
939
937
[ ![ Rafx Flythrough Demo] ( rafx-flythrough-demo.jpg )] [ rafx-youtube-video ]
940
-
941
938
_ A scene exported via blender with animated camera motion, [ watch the demo on youtube] [ rafx-youtube-video ] !_
942
939
943
940
[ Rafx] [ rafx ] is a multi-backend renderer that optionally integrates with the
@@ -968,7 +965,7 @@ community, even if they do not use rafx directly.
968
965
969
966
### [ egui-tetra]
970
967
971
- [ egui-tetra] ([ GitHub] [ egui-github) by [ @tesselode ] is a library
968
+ [ egui-tetra] ([ GitHub] [ egui-github ] ) by [ @tesselode ] is a library
972
969
that integrates [ egui] , an immediate mode GUI library,
973
970
with [ Tetra] , a 2D game framework.
974
971
@@ -992,18 +989,17 @@ _Discussions:
992
989
[ midir] to interact with the bevy game engine.
993
990
994
991
It started out with [ bevy_osc] as a
995
- proof-of-concept interfacing with
996
- [ nannou_osc]
992
+ proof-of-concept interfacing with [ nannou_osc]
997
993
and using other osc software to communicate with bevy.
998
994
Soon, realizing that nannou_osc is not that different
999
- how you interfaces with midi, bevy_midi was born.
995
+ from how you interface with midi, bevy_midi was born.
1000
996
1001
997
Here is one of the examples which you can use a midi controller
1002
998
to play piano with [ demo_audio] .
1003
999
1004
- The plugins is still in its infancy.
1000
+ The plugin is still in its infancy.
1005
1001
So it still has some performance issues, so
1006
- any feedback and contributions is highly appreciated.
1002
+ any feedback and contributions are highly appreciated.
1007
1003
1008
1004
[ bevy_midi ] : https://github.com/BlackPhlox/bevy_midi
1009
1005
[ bevy_osc ] : https://github.com/BlackPhlox/bevy_osc
@@ -1019,13 +1015,13 @@ any feedback and contributions is highly appreciated.
1019
1015
[ bevy_config_cam] by [ @BlackPhlox ]
1020
1016
is an all-in-one purpose camera/player controller for bevy.
1021
1017
1022
- With focus on plug-and-play,flexibility and ease of use, this bevy plugin is
1018
+ With focus on plug-and-play, flexibility and ease of use, this bevy plugin is
1023
1019
for anyone who is prototyping in 3D and doesn't want the hassle of programming
1024
- a player-controller from scratch.Instantly switch between camera modes such as
1020
+ a player-controller from scratch. Instantly switch between camera modes such as
1025
1021
Tracking to Topdown, Follow Behind, FPS and Free and more.
1026
1022
1027
- The plugins is very new.
1028
- So any feedback and contributions is highly appreciated.
1023
+ The plugin is very new.
1024
+ So any feedback and contributions are highly appreciated.
1029
1025
1030
1026
[ bevy_config_cam ] : https://github.com/BlackPhlox/bevy_config_cam
1031
1027
[ @BlackPhlox ] : https://github.com/BlackPhlox
@@ -1043,31 +1039,36 @@ improved a bit.
1043
1039
1044
1040
[ assets_manager ] : https://github.com/a1phyr/assets_manager
1045
1041
1046
- ## Popular Workgroup Issues in Github
1047
-
1048
- <!-- Up to 10 links to interesting issues -->
1049
-
1050
- ## Meeting Minutes
1051
-
1052
- <!-- Up to 10 most important notes + a link to the full details -->
1053
-
1054
- [ See all meeting issues] [ label_meeting ] including full text notes
1055
- or [ join the next meeting] [ join ] .
1056
-
1057
- [ label_meeting ] : https://github.com/rust-gamedev/wg/issues?q=label%3Ameeting
1058
-
1059
1042
## Requests for Contribution
1060
1043
1061
1044
<!-- Links to "good first issue"-labels or direct links to specific tasks -->
1062
1045
1063
- ## Jobs
1064
-
1065
- <!-- An optional section for new jobs related to Rust gamedev -->
1066
-
1067
- ## Bonus
1068
-
1069
- <!-- Bonus section to make the newsletter more interesting
1070
- and highlight events from the past. -->
1046
+ - [ winit's "difficulty: easy" issues] [ embark-open-issues ] ([ embark.rs] ).
1047
+ - [ Backroll-rs, a new networking library] [ backroll-rs ] .
1048
+ - [ Embark's open issues] [ embark-open-issues ] ([ embark.rs] ).
1049
+ - [ gfx-rs's "contributor-friendly" issues] [ gfx-issues ] .
1050
+ - [ luminance's "low hanging fruit" issues] [ luminance-fruits ] .
1051
+ - [ ggez's "good first issue" issues] [ ggez-issues ] .
1052
+ - [ Veloren's "beginner" issues] [ veloren-beginner ] .
1053
+ - [ Amethyst's "good first issue" issues] [ amethyst-issues ] .
1054
+ - [ A/B Street's "good first issue" issues] [ abstreet-issues ] .
1055
+ - [ Mun's "good first issue" issues] [ mun-issues ] .
1056
+ - [ SIMple Mechanic's good first issues] [ simm-issues ] .
1057
+ - [ Bevy's "good first issue" issues] [ bevy-issues ] .
1058
+
1059
+ [ winit-issues ] : https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
1060
+ [ backroll-rs ] : https://github.com/HouraiTeahouse/backroll-rs/issues
1061
+ [ embark.rs ] : https://embark.rs
1062
+ [ embark-open-issues ] : https://github.com/search?q=user:EmbarkStudios+state:open
1063
+ [ gfx-issues ] : https://github.com/gfx-rs/gfx/issues?q=is%3Aissue+is%3Aopen+label%3Acontributor-friendly
1064
+ [ luminance-fruits ] : https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
1065
+ [ ggez-issues ] : https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
1066
+ [ veloren-beginner ] : https://gitlab.com/veloren/veloren/issues?label_name=beginner
1067
+ [ amethyst-issues ] : https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
1068
+ [ abstreet-issues ] : https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
1069
+ [ mun-issues ] : https://github.com/mun-lang/mun/labels/good%20first%20issue
1070
+ [ simm-issues ] : https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
1071
+ [ bevy-issues ] : https://github.com/bevyengine/bevy/labels/good%20first%20issue
1071
1072
1072
1073
------
1073
1074
0 commit comments