1
1
+++
2
2
title = " This Month in Rust GameDev #11 - June 2020"
3
- date = 2020-07-01
3
+ date = 2020-07-07
4
4
transparent = true
5
- draft = true
6
5
+++
7
6
8
7
Welcome to the eleventh issue of the Rust GameDev Workgroup’s
@@ -34,7 +33,6 @@ Table of contents:
34
33
- [ Popular Workgroup Issues in Github] ( #popular-workgroup-issues-in-github )
35
34
- [ Meeting Minutes] ( #meeting-minutes )
36
35
- [ Requests for Contribution] ( #requests-for-contribution )
37
- - [ Jobs] ( #jobs )
38
36
- [ Bonus] ( #bonus )
39
37
40
38
<!--
@@ -78,8 +76,8 @@ The conditions are:
78
76
> Submissions open to August 1st 2020.
79
77
>
80
78
> It can be RPG, strategic, arcade or else; multi or solo. What you want.
81
- > Just try to include a little bit history and culture taste.
82
- > Dont be afraid, it is not ranked.
79
+ > Just try to include a little bit of history and culture taste.
80
+ > Don't be afraid, it is not ranked.
83
81
84
82
Also, participants are encouraged to
85
83
[ document the development process at the event's forum] [ legion-jam-forum ] .
@@ -101,7 +99,7 @@ Also, participants are encouraged to
101
99
[ Way of Rhea] [ rhea-site ] ([ steam] [ rhea-steam ] )
102
100
is an upcoming puzzle platformer that takes place in a world
103
101
where you can only interact with objects that match your current color.
104
- It's being build in a custom engine, and custom scripting language both written
102
+ It's being built in a custom engine, and custom scripting language both written
105
103
in Rust by [ Mason Remaley] [ @masonremaley ] . This month's updates:
106
104
107
105
- A demo was released as part of the
@@ -449,7 +447,7 @@ they plant flowers which gives them points.
449
447
are represented on your keyboard lights, instead of a computer screen.
450
448
451
449
[ TanTan] released a [ video] [ wooting_snake-video ]
452
- documenting the process making this project.
450
+ documenting the process of making this project.
453
451
454
452
[ wooting_snake-git ] : https://github.com/TanTanDev/wooting_snake
455
453
[ wooting_snake-video ] : https://youtu.be/OhhscXz-60g
@@ -579,10 +577,10 @@ This project is a port and improvement of the unofficial C/C++ PSPSDK from
579
577
nightly and a cargo subcommand.
580
578
581
579
The psp crate provides a ` psp::sys ` submodule that houses the entire Sony PSP
582
- API. We are working to have theseinterfaces merged into the libc crate.
583
- The PSP unfortunately uses non-standard dynamic linking,
580
+ API. The authors are working to have these interfaces merged into the libc crate.
581
+ The PSP, unfortunately, uses non-standard dynamic linking,
584
582
(and some libraries are statically linked!), so function definitions
585
- marked extern are not enough. Eventually we will wrap this sys lib with a more
583
+ marked extern are not enough. Eventually, this sys lib will be wrapped with a more
586
584
rust-friendly library.
587
585
588
586
Rather than patching LLVM or rustc, the rust-psp team has also merged a
@@ -613,7 +611,7 @@ change from 0.8.
613
611
614
612
In 0.9 the ` Vec3 ` type was changed from being a 128 byte SIMD vector type to a
615
613
tuple of three floats. This changes the size of ` Vec3 ` from 16 bytes to 12 bytes
616
- and the alignment from 16 bytes to 4 bytes. This might not effect all users but
614
+ and the alignment from 16 bytes to 4 bytes. This might not affect all users but
617
615
if ` Vec3 ` was used in a context where the size or alignment mattered, such as in
618
616
FFI or as input to shaders, this could cause breakage.
619
617
@@ -622,7 +620,7 @@ which is 16 byte aligned and thus 16 bytes in size. The `Vec3A` type is still
622
620
there for users who want the performance benefits of the SIMD implementation.
623
621
624
622
The motivation for this change was that it is potentially surprising and
625
- confusing for new users that the ` Vec3 ` type was not 12 bytes. Also it's common
623
+ confusing for new users that the ` Vec3 ` type was not 12 bytes. Also, it's common
626
624
that users needed a ` Vec3 ` that was just 12 bytes.
627
625
628
626
While glam is reasonably stable it has not yet reached a 1.0 release so it
@@ -640,7 +638,7 @@ seemed like now is the time to address such issues in the API.
640
638
[ Mun] is a scripting language for gamedev focused on quick iteration times
641
639
that is written in Rust.
642
640
643
- After the dust of the [ Mun v0.2 release] [ mun-release ] settled, this month focus
641
+ After the dust of the [ Mun v0.2 release] [ mun-release ] settled, this month's focus
644
642
has been on fixing several issues found by community members, improving the
645
643
overall quality of the code base and working towards the next release: Mun v0.3.
646
644
@@ -660,7 +658,7 @@ Their [June updates][mun-june] include:
660
658
![ logo] ( glisp-logo.png )
661
659
662
660
[ GameLisp] (glisp) is a scripting language built for and in Rust and utilizes
663
- syntax from the LISP family of programming langauges . It provides a fast and
661
+ syntax from the LISP family of programming languages . It provides a fast and
664
662
efficient garbage collector that runs every frame instead of freezing a thread.
665
663
666
664
GameLisp also provides [ a playground] [ glisp-playground ] to experiment with
@@ -677,6 +675,19 @@ to contribute are available on GameLisp's [Github Respository][glisp-github].
677
675
[ glisp-cratesio ] : https://crates.io/crates/glsp/
678
676
[ glisp-github ] : https://github.com/fleabitdev/glsp/
679
677
678
+ ### [ safe_arch] v0.5
679
+
680
+ [ safe_arch] is a crate by [ @lokathor ] that safely exposes
681
+ CPU arch intrinsics via ` #[cfg()] ` .
682
+ This month v0.4 and v0.5 versions were released.
683
+ The main improvements are:
684
+
685
+ - 256 bit supports
686
+ - Almost all the API was reworked for better naming consistency
687
+
688
+ [ safe_arch ] : https://github.com/Lokathor/safe_arch
689
+ [ @lokathor ] : https://twitter.com/lokathor
690
+
680
691
### [ yaks]
681
692
682
693
[ yaks] is a minimalistic framework for automatic multithreading
@@ -705,29 +716,6 @@ written with the framework on platforms without threading - notably, web.
705
716
[ `hecs` ] : https://crates.io/crates/hecs
706
717
[ Rayon ] : https://crates.io/crates/rayon
707
718
708
- ### [ nanoserde]
709
-
710
- [ nanoserde] by [ @fedor_games] is a fork of makepad-tinyserde
711
- with syn/quote/proc_macro2 dependencies removed.
712
-
713
- It attempts to solve a serde's problems of long clean compilation time,
714
- increased incremental build time, and build artifacts size.
715
- nanoserde may be useful when the whole game has less than a minute
716
- clean build time and spending ~ 40s on serde is unreasonable.
717
-
718
- ``` text
719
- > cargo tree
720
- nanoserde v0.1.0 (/../nanoserde)
721
- └── nanoserde-derive v0.1.0 (/../nanoserde/derive)
722
- ```
723
-
724
- Some benchmarks and tiled map deserializing example
725
- [ could be fould here] [ nanoserde-bench ] .
726
-
727
- [ nanoserde ] : https://github.com/not-fl3/nanoserde/
728
- [ @fedor_games ] : https://twitter.com/fedor_games
729
- [ nanoserde-bench ] : https://github.com/not-fl3/nanoserde-bench
730
-
731
719
### [ macroquad]
732
720
733
721
[ macroquad] by [ @fedor_games] is cross-platform
@@ -739,6 +727,18 @@ The project now has [a Discord community server](https://discord.gg/WfEp6ut)
739
727
with channels for all the quad-family projects:
740
728
miniquad, macroquad, good-web-game, and nanoserde.
741
729
730
+ Also, two new examples came from the awesome macroquad community:
731
+
732
+ - "snake" - try it [ in the browser] [ mq-snake-web ] ([ source] [ mq-snake ] )
733
+
734
+ [ ![ snake demo] ( macroquad_snake.gif )] [ mq-snake-web ]
735
+
736
+ - "asteroids" - try it [ in the browser] [ mq-asteroids-web ] ([ source] [ mq-asteroids ] )
737
+
738
+ [ ![ asteroids] ( macroquad_asteroids.gif )] [ mq-asteroids-web ]
739
+
740
+ ------
741
+
742
742
megaui is macroquad's imgui-like UI system.
743
743
Recently, megaui got decent input widgets: input fields, editboxes, and sliders.
744
744
All of them support copy-pasting back and forth from the browser.
@@ -747,22 +747,33 @@ Check out [the web demo](https://not-fl3.github.io/miniquad-samples/ui.html)
747
747
748
748
![ ui] ( macroquad_ui.gif )
749
749
750
- Also, two new examples came from the awesome macroquad community:
750
+ ------
751
751
752
- - "snake" - try it [ in the browser] [ mq-snake-web ] ([ source] [ mq-snake ] )
752
+ [ nanoserde] by [ @fedor_games] is a fork of makepad-tinyserde
753
+ with syn/quote/proc_macro2 dependencies removed.
754
+ It attempts to solve a serde's problems of long clean compilation time,
755
+ increased incremental build time, and build artifacts size.
756
+ nanoserde may be useful when the whole game has less than a minute
757
+ clean build time and spending ~ 40s on serde is unreasonable.
753
758
754
- [ ![ snake demo] ( macroquad_snake.gif )] [ mq-snake-web ]
759
+ ``` text
760
+ > cargo tree
761
+ nanoserde v0.1.0 (/../nanoserde)
762
+ └── nanoserde-derive v0.1.0 (/../nanoserde/derive)
763
+ ```
755
764
756
- - "asteroids" - try it [ in the browser] [ mq-asteroids-web ] ([ source] [ mq-asteroids ] )
757
-
758
- [ ![ asteroids] ( macroquad_asteroids.gif )] [ mq-asteroids-web ]
765
+ Some benchmarks and tiled map deserializing example
766
+ [ could be found here] [ nanoserde-bench ] .
759
767
760
768
[ macroquad ] : https://github.com/not-fl3/macroquad
761
769
[ miniquad ] : https://github.com/not-fl3/miniquad
762
770
[ mq-snake ] : https://github.com/not-fl3/macroquad/blob/master/examples/snake.rs
763
771
[ mq-asteroids ] : https://github.com/not-fl3/macroquad/blob/master/examples/asteroids.rs
764
772
[ mq-snake-web ] : https://not-fl3.github.io/miniquad-samples/snake.html
765
773
[ mq-asteroids-web ] : https://not-fl3.github.io/miniquad-samples/asteroids.html
774
+ [ nanoserde ] : https://github.com/not-fl3/nanoserde/
775
+ [ @fedor_games ] : https://twitter.com/fedor_games
776
+ [ nanoserde-bench ] : https://github.com/not-fl3/nanoserde-bench
766
777
767
778
### [ Tetra 0.4] [ tetra-040 ]
768
779
@@ -804,6 +815,30 @@ More information can be found on [Twitter][@MrVallentin].
804
815
[ nodefx-sdf2 ] : https://twitter.com/MrVallentin/status/1276609598699581442
805
816
[ nodefx-sdf3 ] : https://twitter.com/MrVallentin/status/1276961197645008896
806
817
818
+ ### [ Göld] [ goeld ]
819
+
820
+ ![ Chumtoad] ( goeld.jpg )
821
+
822
+ [ Göld] [ goeld ] is a WIP game engine for hacking together 3D games using old tech.
823
+ It uses wgpu-rs and is based on the simple mental model of PyGame or Löve,
824
+ but for Goldsrc/Quake-era tech.
825
+
826
+ The ultimate goal of the project is to have a simple engine that can do
827
+ basically everything that many simplistic 3D games will need,
828
+ without making an attempt at being too general.
829
+
830
+ Current features:
831
+
832
+ - Quake 2 maps loading (although not Quake/Goldsrc maps yet)
833
+ and rendering with proper BSP culling and frustum culling.
834
+ - Loading and rendering of HL1 models.
835
+ - Simple dynamic lighting system.
836
+
837
+ [ goeld ] : https://github.com/Vurich/goeld
838
+
839
+ _ Discussions:
840
+ [ /r/rust_gamedev] ( https://reddit.com/r/rust_gamedev/comments/gwqbxl/been_working_on_a_webgpurust_reimplementation ) _
841
+
807
842
### [ Arsenal Game Engine] [ arsenal ]
808
843
809
844
[ Arsenal] is the concept for a 2D and 3D game engine that is fully integrated
@@ -854,10 +889,42 @@ The goal of the project is to be able to compose images without using the mouse.
854
889
[ vimnail-git ] : https://github.com/TanTanDev/vimnail
855
890
[ vimnail-video ] : https://youtu.be/2cSY43OcuZc
856
891
892
+ ### [ GC NES Emulator] [ gc-nes ]
893
+
894
+ [ ![ screenshot of the web version: main area, scaling settings and drag-n-drop area] ( nes-emu.png )] [ gc-nes ]
895
+
896
+ This month [ Garett Cooper] [ garettcooper.com ] released [ GC NES Emulator] [ gc-nes ]
897
+ that allows you to play classic Nintendo Entertainment System games in the browser.
898
+
899
+ > The core of the GC NES Emulator is implemented in the Rust programming language,
900
+ > which supports Web Assembly as a compilation target.
901
+ > With a WASM version of the emulator, I've written a javascript wrapper
902
+ > that takes the frame rendered with the Rust code
903
+ > and displays it on an HTML 5 canvas.
904
+ > At present, this is done completely synchronously,
905
+ > though I would like to move it into a worker at some point in the future
906
+
907
+ [ The source code is available here] [ gc-nes-src ] .
908
+
909
+ [ gc-nes ] : https://garettcooper.com/#/nes-emulator
910
+ [ gc-nes-src ] : https://github.com/GarettCooper/gc_nes_emulator
911
+ [ garettcooper.com ] : https://garettcooper.com/
912
+
857
913
## Popular Workgroup Issues in Github
858
914
859
915
<!-- Up to 10 links to interesting issues -->
860
916
917
+ - [ rust-gamedev/wg] ( https://github.com/rust-gamedev/wg ) :
918
+ - [ #51 "Using wasm-bindgen for games"] ( https://github.com/rust-gamedev/wg/issues/51 ) ;
919
+ - [ #75 "Standardised API for sharing thread pools"] ( https://github.com/rust-gamedev/wg/issues/75 ) ;
920
+ - [ #77 "Can we contribute to OpenXR to get Keyboard/Mouse support to be official?"] ( https://github.com/rust-gamedev/wg/issues/77 ) ;
921
+ - [ rust-gamedev/rust-gamedev.github.io] ( https://github.com/rust-gamedev/rust-gamedev.github.io ) :
922
+ - [ #30 "CI: Add markdownlint checks"] ( https://github.com/rust-gamedev/rust-gamedev.github.io/issues/30 ) ;
923
+ - [ rust-gamedev/arewegameyet] ( https://github.com/rust-gamedev/arewegameyet ) :
924
+ - [ #95 "How do we remove crates?"] ( https://github.com/rust-gamedev/arewegameyet/issues/95 ) ;
925
+ - [ #261 "Make .rs domain primary?"] ( https://github.com/rust-gamedev/arewegameyet/issues/261 ) ;
926
+ - [ #320 "A different section for gamejam games?"] ( https://github.com/rust-gamedev/arewegameyet/issues/320 ) ;
927
+
861
928
## Meeting Minutes
862
929
863
930
<!-- Up to 10 most important notes + a link to the full details -->
@@ -871,6 +938,7 @@ or [join the next meeting][join].
871
938
872
939
<!-- Links to "good first issue"-labels or direct links to specific tasks -->
873
940
941
+ - [ gl-rs is seeking new maintainers] ( https://github.com/brendanzab/gl-rs/issues/524 ) ;
874
942
- [ Embark's open issues] [ embark-open-issues ] ([ embark.rs] );
875
943
- [ winit's "Good first issue" and “help wanted” issues] [ winit-issues ] ;
876
944
- [ gfx-rs's "contributor-friendly" issues] [ gfx-issues ] ;
@@ -901,6 +969,23 @@ and highlight events from the past. -->
901
969
902
970
Just an interesting Rust gamedev link from the past. :)
903
971
972
+ [ ![ a screenshot of the first slide] ( ecs-talk.png )] [ ecs-talk-video ]
973
+
974
+ During RustConf 2018, Catherine West gave a keynote talk
975
+ "Using Rust For Game Development" that introduced a lot of people
976
+ to the concept of ECS and is now considered a classic.
977
+ You can [ watch the recording here] [ ecs-talk-video ] ([ slides] [ ecs-talk-slides ] ).
978
+
979
+ A few months later [ an extended text version was released] [ ecs-talk-post ] .
980
+
981
+ _ Discussions:
982
+ [ /r/rust] ( https://www.reddit.com/r/rust/comments/9dwqa4/rustconf_2018_closing_keynote ) ,
983
+ [ /r/programming] ( https://reddit.com/r/programming/comments/9dwq73/rustconf_2018_closing_keynote ) _
984
+
985
+ [ ecs-talk-video ] : https://youtube.com/watch?v=aKLntZcp27M
986
+ [ ecs-talk-post ] : https://kyren.github.io/2018/09/14/rustconf-talk.html
987
+ [ ecs-talk-slides ] : https://kyren.github.io/rustconf_2018_slides/index.html
988
+
904
989
------
905
990
906
991
That's all news for today, thanks for reading!
0 commit comments