1
1
+++
2
2
title = " This Month in Rust GameDev #15 - October 2020"
3
- date = 2020-11-03
3
+ date = 2020-11-09
4
4
transparent = true
5
- draft = true
6
5
+++
7
6
8
- <!-- Check the post with markdownlint-->
9
-
10
7
Welcome to the 15th issue of the Rust GameDev Workgroup's
11
8
monthly newsletter.
12
9
[ Rust] is a systems language pursuing the trifecta:
@@ -27,14 +24,13 @@ Feel free to send PRs about your own projects!
27
24
[ pr ] : https://github.com/rust-gamedev/rust-gamedev.github.io
28
25
[ coordination ] : https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
29
26
27
+ Table of contents:
28
+
30
29
- [ Game Updates] ( #game-updates )
31
30
- [ Learning Material Updates] ( #learning-material-updates )
32
31
- [ Library & Tooling Updates] ( #library-tooling-updates )
33
32
- [ Popular Workgroup Issues in Github] ( #popular-workgroup-issues-in-github )
34
- - [ Meeting Minutes] ( #meeting-minutes )
35
33
- [ Requests for Contribution] ( #requests-for-contribution )
36
- - [ Jobs] ( #jobs )
37
- - [ Bonus] ( #bonus )
38
34
39
35
<!--
40
36
Ideal section structure is:
@@ -112,7 +108,7 @@ tongues as grappling hooks.
112
108
113
109
A [ browser build] [ cba-play ] can be played online.
114
110
115
- Changes since last update:
111
+ Changes since the last update:
116
112
117
113
- Added a global leaderboard that visualizes Race and Training results in an
118
114
interactive histogram.
@@ -142,13 +138,13 @@ More details are in [September][cba-september-update] and
142
138
![ Egregoria roads at night] ( egregoria.jpg )
143
139
144
140
[ Egregoria] 's objective is to become a granular society simulation,
145
- filled with fully autonomous agents interacting with their world in real time.
141
+ filled with fully autonomous agents interacting with their world in real- time.
146
142
147
143
The [ 6th devlog] [ egregoria-blog-post ] was published. Updates include:
148
144
149
145
- Island generation.
150
146
- Day/night cycle.
151
- - Human AI via utilitary systems.
147
+ - Human AI via utility systems.
152
148
- Specs to [ legion 0.3] [ legion-github ] port.
153
149
154
150
See also [ the recent video] [ egregoria-video ] showcasing very basic AI.
@@ -288,7 +284,6 @@ Follow [@dmitrywithouti] on Twitter for updates.
288
284
289
285
[ sun_prison ] : https://github.com/ropewalker/sun_prison
290
286
[ bevy_sokoban ] : https://github.com/ropewalker/bevy_sokoban
291
- [ bevy ] : https://bevyengine.org
292
287
[ @dmitrywithouti ] : https://twitter.com/dmitrywithouti
293
288
[ sun_prison_twit_1 ] : https://twitter.com/dmitrywithouti/status/1309025584039768064
294
289
[ sun_prison_twit_2 ] : https://twitter.com/dmitrywithouti/status/1309982656260648960
@@ -355,23 +350,22 @@ if you are interested in playtesting, contact projectyawc(at)gmail.com.
355
350
356
351
![ Power Kick] ( power-kick-shot.png )
357
352
358
- [ Power Kick] is an one screen platform game inspired by similar old arcade games
353
+ [ Power Kick] is a one screen platform game inspired by similar old arcade games
359
354
like Bubble Bobble and SnowBros.
360
355
Your task is to hit the enemies till they get dizzy and then kick them out of
361
356
their misery to proceed to the next stage. The kicked enemies will hit the
362
357
colliding enemies with a possibility to create a chain reaction
363
358
(similar to the pushed snowball in SnowBros).
364
359
365
- The game have 20 stages and in stage 10 and 20 you will face a helicopter boss.
360
+ The game has 20 stages and in stage 10 and 20 you will face a helicopter boss.
366
361
367
362
Can be played solo on the web through WebAssembly or up to two players
368
363
in the downloadable version:
369
- first player with the keyboard and the second one with a joypad.
364
+ the first player with the keyboard and the second one with a joypad.
370
365
371
366
The development took around two weeks thanks to [ macroquad] and [ hecs] .
372
367
373
368
[ Power Kick ] : https://kakoeimon.itch.io/power-kick
374
- [ macroquad ] : https://github.com/not-fl3/macroquad
375
369
[ hecs ] : https://crates.io/crates/hecs
376
370
377
371
### [ rymd]
@@ -388,7 +382,6 @@ Development started at the end of October, recent additions include:
388
382
- Possibly the world's most nauseating physics driven camera.
389
383
- Too many particles.
390
384
391
- [ macroquad ] : https://github.com/not-fl3/macroquad
392
385
[ @_profan ] : https://twitter.com/_profan
393
386
[ rymd ] : https://profan.itch.io/rymd
394
387
@@ -409,7 +402,7 @@ For the past month the main focus of the development was on:
409
402
- Implementing world navigation system.
410
403
- Implementing rudimentary CLI graphics (for debugging and some future use).
411
404
412
- Main features of reported (pre-alpha) version are:
405
+ Main features of the reported (pre-alpha) version are:
413
406
414
407
- Ability to generate and explore one or many worlds (see previous news).
415
408
@@ -472,15 +465,15 @@ New features in the latest release include boss games and high scores.
472
465
[ Canon Collision] [ canon-collision ] by [ @rukai ] is an Undertale + Homestuck
473
466
fan-made platform fighter with powerful tools for modding.
474
467
475
- This month, he completed the abstractions needed for character specific logic.
468
+ This month, he completed the abstractions needed for character- specific logic.
476
469
Notable changes:
477
470
478
471
- [ toriel's fireball] ( https://twitter.com/thisIsRukai/status/1302250049972314112 )
479
472
- [ wobbly fireball shaders] ( https://twitter.com/thisIsRukai/status/1299311125285142529 )
480
473
- [ items that can be picked up and thrown] ( https://twitter.com/thisIsRukai/status/1297507398693736448 )
481
474
- [ character specific logic] ( https://twitter.com/thisIsRukai/status/1314872752642297856 )
482
475
483
- [ canon-collision ] :https://canoncollision.com
476
+ [ canon-collision ] : https://canoncollision.com
484
477
[ @rukai ] : https://twitter.com/thisIsRukai
485
478
486
479
### [ galaxy-sim.github.io]
@@ -515,7 +508,7 @@ Here are some of the games made with Rust:
515
508
> A multiplayer online sandbox game.
516
509
> Explore, craft, and try to escape the island
517
510
> (spoiler: you can not, you are stuck in a loop).
518
- > The world regenerates where you dont see.
511
+ > The world regenerates where you don't see.
519
512
520
513
Check out the devlog post:
521
514
[ "LudumDare 47 - The Island"] [ ld-island-post ] .
@@ -616,11 +609,10 @@ development for Entity-Component-Systems, Windowing and Event Loops, and WGPU.
616
609
tutorial for writing simple pixel graphics and 2d game development using
617
610
the [ pixels] crate (based on WGPU).
618
611
- [ Framebuffers, WGPU and Rust] ( https://nyxtom.dev/2020/10/08/framebuffers/ ) -
619
- an in depth analysis of high level graphics terminology and a full length
612
+ an in- depth analysis of high- level graphics terminology and a full length
620
613
tutorial for setting up the api and clearing the screen with WGPU.
621
614
622
615
[ @nyxtom ] : https://twitter.com/nyxtom
623
- [ hecs ] : https://github.com/Ralith/hecs
624
616
[ pixels ] : https://github.com/parasyte/pixels
625
617
626
618
### [ Creating a Snake Clone in Bevy]
@@ -644,7 +636,7 @@ Microsoft Flight Simulator 2020.
644
636
You can watch recordings here:
645
637
646
638
- [ Part 1] [ msfs-video-1 ] : bindgen, C ABIs, linkers, and more.
647
- - [ Part 2] [ msfs-video-2 ] : more high level concerns like API design
639
+ - [ Part 2] [ msfs-video-2 ] : more high- level concerns like API design
648
640
and making an idiomatic API.
649
641
650
642
Subscribe to [ @ryanlevick on Twitch] [ ryanlevick-twitch ] for future streams.
@@ -657,7 +649,7 @@ _Discussions:
657
649
[ msfs-video-1 ] : https://youtube.com/watch?v=jNNz4h3iIlw
658
650
[ msfs-video-2 ] : https://youtube.com/watch?v=ugiR9M16fwg
659
651
660
- ### [ How to: Rust + SDL2 + OpenGL on the web ] [ how-to-rust-sdl2-opengl-post ]
652
+ ### [ How to: Rust + SDL2 + OpenGL on the Web ] [ how-to-rust-sdl2-opengl-post ]
661
653
662
654
[ @Therocode ] published an [ article] [ how-to-rust-sdl2-opengl-post ] that
663
655
explains how to port games to the web using Emscripten.
@@ -706,7 +698,7 @@ or follow [@sajattack] on Twitter.
706
698
707
699
> ... I wrote the emu just for myself as a learning experience.
708
700
> So it's lacking in a lot of features you'd expect from one made
709
- > for others to use, and it's also not mobile friendly unfortunately
701
+ > for others to use, and it's also not mobile- friendly unfortunately
710
702
> (but I'll work on that soon).
711
703
> Still, it may be of some interest to someone here : D
712
704
@@ -747,7 +739,7 @@ It also features updates regarding:
747
739
### [ shared-arena]
748
740
749
741
[ shared-arena] by [ @0x5eb ] is a thread-safe & efficient memory pool.
750
- Memory pools are usefull for speeding up dynamic (de)allocation
742
+ Memory pools are useful for speeding up dynamic (de)allocation
751
743
of large amounts of data of the same size.
752
744
753
745
shared-arena provides three memory pools with different trade-offs:
@@ -775,7 +767,7 @@ There were a lot of additions in this update and a small breaking change.
775
767
- The return type of ` Vec4::truncate() ` was changed from ` Vec3A ` to ` Vec3 ` which
776
768
is a breaking change and thus the version jumped from 0.9 to 0.10.
777
769
- Vector swizzle functions similar to those found in [ GLSL] were added. Swizzle
778
- functions allow a vectors elements to be reordered. The result can be a vector
770
+ functions allow a vector's elements to be reordered. The result can be a vector
779
771
of a different size to the input. Swizzles are implemented with SIMD
780
772
instructions where possible, e.g. for the ` Vec4 ` type.
781
773
@@ -815,7 +807,7 @@ It consists of two crates:
815
807
- density-mesh-core - generates mesh from density map.
816
808
- density-mesh-image - generates density map from image.
817
809
818
- Typical use case would be to use two of them to create mesh from images
810
+ A typical use case would be to use two of them to create mesh from images
819
811
but in case you have your own image handler, you can stick to the core module
820
812
and produce density maps by yourself.
821
813
@@ -843,7 +835,7 @@ new features:
843
835
for deciding what pairs of colliders can touch;
844
836
- the ability to set the mass of rigid-bodies explicitly;
845
837
- linear and angular damping, to progressively slow down rigid-bodies;
846
- - the ability so attach some user-defined data (of type ` u128 ` ) to any
838
+ - the ability to attach some user-defined data (of type ` u128 ` ) to any
847
839
collider or rigid-body.
848
840
849
841
[ ![ Rapier features] ( rapier-demo.gif )] [ rapier-demo ]
@@ -852,7 +844,7 @@ The [bevy_rapier] plugin for the Bevy game engine has been updated to support
852
844
all the aforementioned features.
853
845
854
846
Finally, a [ continuous benchmarking] [ cont-bench ] infrastructure has been set
855
- up to make sure performances regressions can be detected early.
847
+ up to make sure performance regressions can be detected early.
856
848
857
849
[ Rapier ] : https://rapier.rs
858
850
[ rapier-october ] : https://www.dimforge.com/blog/2020/11/01/this-month-in-dimforge/
@@ -863,7 +855,7 @@ up to make sure performances regressions can be detected early.
863
855
### [ physme]
864
856
865
857
[ Physme] is not your typical physics engine. It doesn't exactly simulate
866
- real world physics and it never will. Instead it has only two goals:
858
+ real world physics and it never will. Instead, it has only two goals:
867
859
868
860
- To provide satisfying real-time dynamics for 2D and 3D games.
869
861
- To have a simple to use API.
@@ -883,7 +875,7 @@ The current feature set includes:
883
875
- Fixed, mechanical and spring joints
884
876
- Broad phase
885
877
886
- All of the above listed features are supported in both 2D and 3D.
878
+ All of the above- listed features are supported in both 2D and 3D.
887
879
888
880
[ physme ] : https://github.com/walterpie/physme
889
881
@@ -979,7 +971,7 @@ This month two big PRs got into the final review stage:
979
971
as usual, no third-party dependencies or C code involved;
980
972
Clean build time for Wayland examples are about 3s.
981
973
- [ The Metal backend PR] [ metal-pr ] showed good signs of life,
982
- [ quad] and [ offscreen] examples got successefully run on Metal.
974
+ [ quad] and [ offscreen] examples got successfully run on Metal.
983
975
984
976
[ miniquad ] : https://github.com/not-fl3/miniquad
985
977
[ wayland-pr ] : https://github.com/not-fl3/miniquad/pull/152
@@ -1005,13 +997,12 @@ Important things that got fixed:
1005
997
- Particle system was released:
1006
998
[ example] [ particles-src ] , [ web demo] [ particles-web-demo ] .
1007
999
1008
- And special shutout goes to [ donuts] game by [ @cedric-h ] - a simple game
1009
- made in couple of days, like a jam game.
1010
- It's a really good showcase of macroquad's approach on simple game code
1000
+ And special shoutout goes to [ donuts] game by [ @cedric-h ] - a simple game
1001
+ made in a couple of days, like a jam game.
1002
+ It's a really good showcase of macroquad's approach to simple game code
1011
1003
that allows hardcoding and hacks for empowering gameplay experiments.
1012
1004
1013
1005
[ macroquad ] : https://github.com/not-fl3/macroquad
1014
- [ miniquad ] : https://github.com/not-fl3/miniquad
1015
1006
[ macroquad-text-src ] : https://github.com/not-fl3/macroquad/blob/master/examples/text.rs
1016
1007
[ macroquad-text-web ] : https://not-fl3.github.io/miniquad-samples/macroquad_text.html
1017
1008
[ particles-src ] : https://github.com/not-fl3/macroquad/blob/master/particles/examples/particles.rs
@@ -1061,7 +1052,7 @@ This month, thanks to 59 contributors, 122 pull requests, and their
1061
1052
1062
1053
- Initial Android and iOS support
1063
1054
- Asset system improvements:
1064
- - Asset handle eeference counting
1055
+ - Asset handle reference counting
1065
1056
- Asset loaders can now load multiple assets
1066
1057
- Sub asset loading
1067
1058
- Asset dependencies
@@ -1146,7 +1137,7 @@ implementation of an Ogmo level parser.
1146
1137
1147
1138
This month, it was released onto crates.io for the first time, and a
1148
1139
[ full example] [ ogmo3-sample ] was added, showing how a simple project can be
1149
- loadedinto a game engine.
1140
+ loaded into a game engine.
1150
1141
1151
1142
[ ogmo3 ] : https://github.com/17cupsofcoffee/ogmo3
1152
1143
[ Ogmo Editor 3 ] : https://ogmo-editor-3.github.io/
@@ -1160,7 +1151,6 @@ loadedinto a game engine.
1160
1151
1161
1152
It features a renderer that uses Vulkan [ ray-tracing extension] supported
1162
1153
by NVidia RTX cards and future AMD cards.
1163
-
1164
1154
Screenshot above is rendered using [ DDGI] technique implemented exclusively
1165
1155
with Rust and GLSL for shaders.
1166
1156
In the whole scene there is only one directional light source - "sun" -
@@ -1183,7 +1173,6 @@ Contributions and feedback are always welcome.
1183
1173
[ Wilds ] : https://github.com/zakarumych/wilds
1184
1174
[ ray-tracing extension ] : https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_ray_tracing.html
1185
1175
[ DDGI ] : https://morgan3d.github.io/articles/2019-04-01-ddgi/
1186
- [ Hecs ] : https://lib.rs/crates/hecs
1187
1176
[ Goods ] : https://github.com/zakarumych/goods
1188
1177
[ ~~Shave more yaks~~ ] : https://github.com/zakarumych/gpu-alloc
1189
1178
[ Rapier ] : https://rapier.rs
@@ -1231,7 +1220,7 @@ _Discussions:
1231
1220
[ rustcord ] : https://github.com/Twister915/rustcord
1232
1221
[ @Twister915 ] : https://github.com/Twister915
1233
1222
1234
- ### Ajour - World of Warcraft Addon Manager
1223
+ ### [ Ajour] - World of Warcraft Addon Manager
1235
1224
1236
1225
[ ![ Ajour Banner] ( ajour-banner.jpg )] [ Ajour ]
1237
1226
@@ -1263,7 +1252,7 @@ includes Rust as part of its build system.
1263
1252
written in Rust as a gstreamer plugin to convert certain media encodings
1264
1253
from one format to another.
1265
1254
1266
- Doucmentation for building Proton is available on [ Github] [ Proton-Github ] .
1255
+ Documentation for building Proton is available on [ Github] [ Proton-Github ] .
1267
1256
Further documentation on Media Converter and its source code is available
1268
1257
on the module's [ repository] [ Proton-Media-Converter-Github ]
1269
1258
@@ -1288,7 +1277,7 @@ work, but for-loops, iterators, and match/switch aren't supported yet! That
1288
1277
means that while being technically usable, Rust GPU is far from being
1289
1278
production-ready.
1290
1279
1291
- Motivation behind the project:
1280
+ The motivation behind the project:
1292
1281
1293
1282
> Historically in games, GPU programming has been done through writing either
1294
1283
> HLSL, or to a lesser extent GLSL. These are simple programming languages that
@@ -1336,27 +1325,44 @@ _Discussions:
1336
1325
1337
1326
<!-- Up to 10 links to interesting issues -->
1338
1327
1339
- ## Meeting Minutes
1340
-
1341
- <!-- Up to 10 most important notes + a link to the full details -->
1342
-
1343
- [ See all meeting issues] [ label_meeting ] including full text notes
1344
- or [ join the next meeting] [ join ] .
1345
-
1346
- [ label_meeting ] : https://github.com/rust-gamedev/wg/issues?q=label%3Ameeting
1328
+ - [ rust-gamedev/rust-gamedev.github.io] ( https://github.com/rust-gamedev/rust-gamedev.github.io ) :
1329
+ - [ #269 "Proper style guide/contributing guidelines"] ( https://github.com/rust-gamedev/rust-gamedev.github.io/issues/269 ) ;
1330
+ - [ rust-gamedev/wg] ( https://github.com/rust-gamedev/wg ) :
1331
+ - [ #21 "Planning a survey for Rust game developers"] ( https://github.com/rust-gamedev/wg/issues/21 ) ;
1332
+ - [ #94 "raw-window-handle maintenance"] ( https://github.com/rust-gamedev/wg/issues/94 ) ;
1333
+ - [ rust-gamedev/ecs_bench_suite] ( https://github.com/rust-gamedev/ecs_bench_suite ) :
1334
+ - [ #14 "Also benchmark in debug mode"] ( https://github.com/rust-gamedev/ecs_bench_suite/issues/14 ) ;
1347
1335
1348
1336
## Requests for Contribution
1349
1337
1350
1338
<!-- Links to "good first issue"-labels or direct links to specific tasks -->
1351
1339
1352
- ## Jobs
1353
-
1354
- <!-- An optional section for new jobs related to Rust gamedev -->
1355
-
1356
- ## Bonus
1357
-
1358
- <!-- Bonus section to make the newsletter more interesting
1359
- and highlight events from the past. -->
1340
+ - [ Embark's open issues] [ embark-open-issues ] ([ embark.rs] ).
1341
+ - [ winit's "Good first issue" and “help wanted” issues] [ winit-issues ] .
1342
+ - [ gfx-rs's "contributor-friendly" issues] [ gfx-issues ] .
1343
+ - [ wgpu's "help wanted" issues] [ wgpu-help-wanted ] .
1344
+ - [ luminance's "low hanging fruit" issues] [ luminance-fruits ] .
1345
+ - [ ggez's "good first issue" issues] [ ggez-issues ] .
1346
+ - [ Veloren's "beginner" issues] [ veloren-beginner ] .
1347
+ - [ Amethyst's "good first issue" issues] [ amethyst-issues ] .
1348
+ - [ A/B Street's "good first issue" issues] [ abstreet-issues ] .
1349
+ - [ Mun's "good first issue" issues] [ mun-issues ] .
1350
+ - [ SIMple Mechanic's good first issues] [ simm-issues ] .
1351
+ - [ Bevy's "good first issue" issues] [ bevy-issues ] .
1352
+
1353
+ [ embark.rs ] : https://embark.rs
1354
+ [ embark-open-issues ] : https://github.com/search?q=user:EmbarkStudios+state:open
1355
+ [ winit-issues ] : https://github.com/rust-windowing/winit/issues?utf8=✓&q=is%3Aissue+is%3Aopen+label%3A%22status%3A+help+wanted%22+label%3A%22Good+first+issue%22
1356
+ [ gfx-issues ] : https://github.com/gfx-rs/gfx/issues?q=is%3Aissue+is%3Aopen+label%3Acontributor-friendly
1357
+ [ wgpu-help-wanted ] : https://github.com/gfx-rs/wgpu-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
1358
+ [ luminance-fruits ] : https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
1359
+ [ ggez-issues ] : https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
1360
+ [ veloren-beginner ] : https://gitlab.com/veloren/veloren/issues?label_name=beginner
1361
+ [ amethyst-issues ] : https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
1362
+ [ abstreet-issues ] : https://github.com/dabreegster/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
1363
+ [ mun-issues ] : https://github.com/mun-lang/mun/labels/good%20first%20issue
1364
+ [ simm-issues ] : https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
1365
+ [ bevy-issues ] : https://github.com/bevyengine/bevy/labels/good%20first%20issue
1360
1366
1361
1367
------
1362
1368
0 commit comments