2
2
title = " This Month in Rust GameDev #13 - August 2020"
3
3
date = 2020-09-07
4
4
transparent = true
5
- draft = true
6
5
+++
7
6
8
7
Welcome to the 13th issue of the Rust GameDev Workgroup’s
@@ -116,7 +115,7 @@ for you to listen and subscribe:
116
115
### [ Crate Before Attack] [ cba-site ]
117
116
118
117
[ ![ Camera debugging in Crate Before Attack] ( crate-before-attack.png )] [ cba-site ]
119
- _ Debugging camera motion: highlighted areas are points of interest. _
118
+ _ Debugging camera motion: highlighted areas are points of interest _
120
119
121
120
[ Crate Before Attack] [ cba-site ] by [ koalefant (@CrateAttack )] [ @CrateAttack ]
122
121
is a skill-based multiplayer game where frogs combat their friends
@@ -173,16 +172,18 @@ You can read more about some specific topics from August:
173
172
- [ Airshipper 0.4.0 Progress] ( https://veloren.net/devblog-79#airshipper-0-4-progress-by-songtronix )
174
173
- [ Animation and Movement Updates] ( https://veloren.net/devblog-79#animation-and-movement-updates-by-slipped )
175
174
- [ Particle Timing] ( https://veloren.net/devblog-80#particle-timing-by-lobster )
176
- - [ 0.7 Release Party Statistics] ( https://veloren.net/devblog-81#0-7-release-party-statistics )
177
- - [ 0.7 Release Party Kick Disaster] ( https://veloren.net/devblog-81#0-7-release-party-kick-disaster-by-xmac94x )
175
+ - 0.7 Release: [ Party Statistics] ( https://veloren.net/devblog-81#0-7-release-party-statistics )
176
+ and [ Kick Disaster] ( https://veloren.net/devblog-81#0-7-release-party-kick-disaster-by-xmac94x )
178
177
- [ Lighting and World Changes] ( https://veloren.net/devblog-81#sharp-s-lighting-and-world-changes-branch )
179
178
- [ 0.8 Intro Meeting] ( https://veloren.net/devblog-82#0-8-intro-meeting )
180
179
- [ Audio SFX] ( https://veloren.net/devblog-82#audio-with-ellinia )
181
180
- [ Photo Gallery] ( https://veloren.net/devblog-83#photo-gallery )
182
181
183
182
August's full weekly devlogs: "This Week In Veloren...":
184
- [ #79 ] ( https://veloren.net/devblog-79 ) , [ #80 ] ( https://veloren.net/devblog-80 ) ,
185
- [ #81 ] ( https://veloren.net/devblog-81 ) , [ #82 ] ( https://veloren.net/devblog-82 ) .
183
+ [ #79 ] ( https://veloren.net/devblog-79 ) ,
184
+ [ #80 ] ( https://veloren.net/devblog-80 ) ,
185
+ [ #81 ] ( https://veloren.net/devblog-81 ) ,
186
+ [ #82 ] ( https://veloren.net/devblog-82 ) ,
186
187
[ #83 ] ( https://veloren.net/devblog-83 ) .
187
188
188
189
In September, work on 0.8 will continue. Some large systems being worked on
@@ -229,7 +230,7 @@ Egregoria was previously known as Scale,
229
230
but was renamed to fit the theme better.
230
231
231
232
The [ 5th devlog] [ egregoria-blog-post ] was published, talking about
232
- the renaming, project managment , buildings and scripting.
233
+ the renaming, project management , buildings and scripting.
233
234
234
235
A [ Discord] [ egregoria-discord ] server was launched to discuss the project.
235
236
@@ -244,10 +245,10 @@ _Discussions:
244
245
245
246
[ ![ Dodging bullets and carrying Cary to temporary safety] ( cary_screenshot.png )] [ Cary ]
246
247
247
- In [ Cary] the player has to bring the titular character to the exit by carying
248
+ In [ Cary] the player has to bring the titular character to the exit by carrying
248
249
them or otherwise making sure they don't – nor the player themselves –
249
250
touch any of the traps.
250
- Easier said then done when you have limited stamina and Cary keeps running
251
+ Easier said than done when you have limited stamina and Cary keeps running
251
252
into spikes.
252
253
253
254
Made with hecs and wgpu (no framework), but uses WebGL on the web
@@ -352,7 +353,7 @@ Chillscapes is written using an early-in-development 2d engine,
352
353
### [ Dwarf Seeks Fortune] [ dsf-github ]
353
354
354
355
[ ![ Dwarf Seeks Fortune] ( dwarf_seeks_fortune.png )] [ dsf-github ]
355
- _ Collect all keys to unlock the door to the next level. _
356
+ _ Collect all keys to unlock the door to the next level _
356
357
357
358
[ Dwarf Seeks Fortune] [ dsf-github ] is a puzzle-platformer made with the Amethyst game
358
359
engine. Its developer, Jazarro, has partnered with the Amethyst organization
@@ -401,7 +402,7 @@ _One of SIMple Mechanic's Lua presets, a colorful wave of bouncing circles_
401
402
402
403
[ SIMple Physics] [ simple-physics-site ] by [ @mkhan45 ] is a set of educational physics
403
404
simulators meant to help students and teachers conduct labs without expensive equipment
404
- or in person classes. Each simulator uses serializeable graphs, object inspection,
405
+ or in person classes. Each simulator uses serializable graphs, object inspection,
405
406
Lua scripting, and a few other features to help students learn. Currently, there
406
407
is a simulator for mechanics/projectile motion and one for universal gravitation,
407
408
but the goal is to include one for electronics/magnetism and one for waves/optics.
@@ -444,19 +445,19 @@ work with graphics in Rust using [SDL2][sdl2] library.
444
445
### [ Beginning Game Development with Amethyst] [ rustconf-talk-video ]
445
446
446
447
[ ![ youtube preview] ( rustconf-amethyst-talk.png )] [ rustconf-talk-video ]
447
- _ Click to [ watch the talk] [ rustconf-talk-video ] . _
448
+ _ Click to [ watch the talk] [ rustconf-talk-video ] _
448
449
449
450
Getting started with Rust + gamedev can be intimidating. At
450
451
[ RustConf 2020] [ rust-conf-2020 ] , [ Micah Tigley] gave a talk about their experience
451
452
beginning game development using the [ Amethyst] [ amethyst-link ] game engine and
452
453
learning about ECS by implementing examples that aim to be accessible for
453
454
beginners.
454
455
455
- Supporting blog posts for talk:
456
+ Supporting blog posts for the talk:
456
457
457
- - [ Creating a Simple Spritesheet Animation with Amethyst] [ micah-blog-part1 ]
458
- - [ Running Animation] [ micah-blog-part2 ]
459
- - [ Camera Follow System] [ micah-blog-part3 ]
458
+ - [ " Creating a Simple Spritesheet Animation with Amethyst" ] [ micah-blog-part1 ]
459
+ - [ " Running Animation" ] [ micah-blog-part2 ]
460
+ - [ " Camera Follow System" ] [ micah-blog-part3 ]
460
461
461
462
The source code for the [ demo can be found here] [ micah-demo-src ] .
462
463
@@ -548,7 +549,7 @@ CPU version of PhysX, and often slightly faster than Box2D.
548
549
- joint constraints;
549
550
- optional serialization of the physics state;
550
551
- optional cross-platform determinism on IEEE-754 compliant targets;
551
- - optional explicit SIMD and parallelism.
552
+ - optional explicit SIMD and parallelism;
552
553
- JavaScript bindings with official NPM packages.
553
554
554
555
This new physics engine is developed by the recently created [ Dimforge]
@@ -571,7 +572,7 @@ _Discussions:
571
572
572
573
[ Jude3D] ( https://neocogi.com ) is a web based 3D sculpting application.
573
574
It's a WebAssembly application, written in C/C++ and compiled using Emscripten
574
- but after much thinking the authors decided to move the development to Rust!
575
+ but after much thinking, the authors decided to move the development to Rust!
575
576
576
577
Many problems arise when moving existing C/C++/WebAssembly code to Rust.
577
578
The two most important ones:
@@ -581,7 +582,7 @@ The two most important ones:
581
582
582
583
These led the authors to drop using Rust's std in favor to their own libs (` !#[no_std] ` ),
583
584
at least until the std library crates are split up accordingly and stabilized,
584
- for example the ` alloc ` crate.
585
+ for example, the ` alloc ` crate.
585
586
586
587
The good news is that they are
587
588
[ releasing most of the libraries as they make them as open source] [ neocogi-repo ] !
@@ -602,7 +603,7 @@ cute-c2 is a 2D collision detection library that has had its first release to
602
603
603
604
The library can detect collisions between circles, rectangles, capsules and
604
605
up to eight-sided convex polygons. There are also functions for manifold
605
- generation, the GJK algorithm and ray casting operations. There is an example
606
+ generation, the GJK algorithm, and ray casting operations. There is an example
606
607
program in the repository.
607
608
608
609
[ cute-c2 ] : https://crates.io/crates/c2
@@ -618,7 +619,7 @@ as well as per-vertex attributes.
618
619
619
620
All that's required to define a base shape are the initial vertices, triangles
620
621
based on the indices of the vertices in the initial vertices, and numbered
621
- edges. As long as the winding of the triangles remains consistend throughout
622
+ edges. As long as the winding of the triangles remains consistent throughout
622
623
the base mesh, all of the resulting triangles will retain that winding.
623
624
624
625
This library also provides a few interesting base shapes (which can be used alone
@@ -708,7 +709,7 @@ Some of the updates:
708
709
- Dynamically sized multi-binding support.
709
710
- Improved entrypoint debug printing.
710
711
- Better manifest merging method for pipeline construction.
711
- - Bugfixes and various small API improvments .
712
+ - Bugfixes and various small API improvements .
712
713
713
714
_ Discussions: [ /r/rust_gamedev] [ spirq-discussion ] _
714
715
@@ -799,11 +800,11 @@ See discussion at [/r/rust_gamedev][wgpu-instancing-reddit].
799
800
![ KAS text layout] ( kas-text-layout.png )
800
801
801
802
[ KAS] by [ @dhardy ] is a general purpose UI toolkit; its
802
- initial aim is "old school" desktop apps with good keyboard and touchscreen
803
+ initial aim is "old school" desktop apps with a good keyboard and touchscreen
803
804
support. Unlike many modern immediate-mode UIs, KAS's widgets retain state,
804
805
allowing minimal per-frame updates. KAS supports embedded WebGPU graphics now,
805
806
and will (eventually) support being embedded within other contexts (requiring
806
- only a supply of input events and implemention of some basic graphics routines).
807
+ only a supply of input events and implementation of some basic graphics routines).
807
808
808
809
KAS v0.5 switches to a new crate for text layout,
809
810
[ KAS-text] . KAS-text is a text layout
@@ -820,12 +821,14 @@ For more, see the article ["Why I created KAS-text"][kas-article].
820
821
821
822
### [ Egui]
822
823
824
+ ![ Egui] ( egui.png )
825
+
823
826
[ Egui] is a highly portable immediate mode GUI library in pure Rust.
824
827
Egui can be integrated anywhere you can paint textured triangles.
825
828
You can compile Egui to WASM and render it on a web page using [ egui_web]
826
829
or compile and run natively using [ egui_glium] .
827
830
828
- [ Click to run Egui web demo] ( https://emilk.github.io/egui/index.html )
831
+ Check out the [ Egui web demo] ( https://emilk.github.io/egui/index.html ) .
829
832
830
833
Example:
831
834
@@ -840,8 +843,6 @@ Window::new("Debug").show(ui.ctx(), |ui| {
840
843
});
841
844
```
842
845
843
- ![ Egui] ( egui.png )
844
-
845
846
_ Discussions:
846
847
[ /r/rust] ( https://reddit.com/r/rust/comments/hzwvsk/emigui_deserves_more_love ) _
847
848
@@ -968,9 +969,9 @@ While it is still under heavy development, a lot can be done already:
968
969
[ Tetra] is a simple 2D game framework, inspired by XNA and Raylib. This month,
969
970
versions [ 0.4.1] [ tetra-041 ] and [ 0.4.2] [ tetra-042 ] were released, featuring:
970
971
971
- - Improved Serde support
972
- - Various fixes and improvements to the built-in ` Camera ` type
973
- - Many documentation improvements, based on user feedback
972
+ - Improved Serde support;
973
+ - Various fixes and improvements to the built-in ` Camera ` type;
974
+ - Many documentation improvements, based on user feedback.
974
975
975
976
In addition, Tetra 0.5 is planned for release in early September. For more
976
977
information on the upcoming changes, see the [ changelog] [ tetra-changelog ] .
@@ -1049,7 +1050,7 @@ has released a new ECS library [Nano-ECS].
1049
1050
1050
1051
This ECS design stores all components in a single array
1051
1052
and uses bit masks for enabling/disabling components.
1052
- An entity can have maximum 64 components and must be initalized
1053
+ An entity can have maximum 64 components and must be initialized
1053
1054
with all components it uses in the future.
1054
1055
Each entity has a slice into the array that stores all components.
1055
1056
The ` World ` object, ` Component ` and systems are generated using macros.
0 commit comments