11+++ 
22title  = " This Month in Rust GameDev #11 - June 2020" 
3- date  = 2020-07-01  
3+ date  = 2020-07-07  
44transparent  = true 
5- draft  = true 
65+++ 
76
87Welcome to the eleventh issue of the Rust GameDev Workgroup’s
@@ -34,7 +33,6 @@ Table of contents:
3433-  [ Popular Workgroup Issues in Github] ( #popular-workgroup-issues-in-github ) 
3534-  [ Meeting Minutes] ( #meeting-minutes ) 
3635-  [ Requests for Contribution] ( #requests-for-contribution ) 
37- -  [ Jobs] ( #jobs ) 
3836-  [ Bonus] ( #bonus ) 
3937
4038<!-- 
@@ -78,8 +76,8 @@ The conditions are:
7876>  Submissions open to August 1st 2020.
7977> 
8078>  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.
8381
8482Also, participants are encouraged to
8583[ document the development process at the event's forum] [ legion-jam-forum ] .
@@ -101,7 +99,7 @@ Also, participants are encouraged to
10199[ Way of Rhea] [ rhea-site ]  ([ steam] [ rhea-steam ] )
102100is an upcoming puzzle platformer that takes place in a world
103101where 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
105103in Rust by [ Mason Remaley] [ @masonremaley ] . This month's updates:
106104
107105-  A demo was released as part of the
@@ -449,7 +447,7 @@ they plant flowers which gives them points.
449447are represented on your keyboard lights, instead of a computer screen.
450448
451449[ TanTan]  released a [ video] [ wooting_snake-video ] 
452- documenting the process making this project.
450+ documenting the process of  making this project.
453451
454452[ wooting_snake-git ] : https://github.com/TanTanDev/wooting_snake 
455453[ 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
579577nightly and a cargo subcommand.
580578
581579The 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,
584582(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
586584rust-friendly library.
587585
588586Rather than patching LLVM or rustc, the rust-psp team has also merged a
@@ -613,7 +611,7 @@ change from 0.8.
613611
614612In 0.9 the ` Vec3 `  type was changed from being a 128 byte SIMD vector type to a
615613tuple 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
617615if ` Vec3 `  was used in a context where the size or alignment mattered, such as in
618616FFI or as input to shaders, this could cause breakage.
619617
@@ -622,7 +620,7 @@ which is 16 byte aligned and thus 16 bytes in size.  The `Vec3A` type is still
622620there for users who want the performance benefits of the SIMD implementation.
623621
624622The 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
626624that users needed a ` Vec3 `  that was just 12 bytes.
627625
628626While 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.
640638[ Mun]  is a scripting language for gamedev focused on quick iteration times
641639that is written in Rust.
642640
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
644642has been on fixing several issues found by community members, improving the
645643overall quality of the code base and working towards the next release: Mun v0.3.
646644
@@ -660,7 +658,7 @@ Their [June updates][mun-june] include:
660658![ logo] ( glisp-logo.png ) 
661659
662660[ 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
664662efficient garbage collector that runs every frame instead of freezing a thread.
665663
666664GameLisp also provides [ a playground] [ glisp-playground ]  to experiment with
@@ -677,6 +675,19 @@ to contribute are available on GameLisp's [Github Respository][glisp-github].
677675[ glisp-cratesio ] : https://crates.io/crates/glsp/ 
678676[ glisp-github ] : https://github.com/fleabitdev/glsp/ 
679677
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+ 
680691### [ yaks]  
681692
682693[ yaks]  is a minimalistic framework for automatic multithreading
@@ -705,29 +716,6 @@ written with the framework on platforms without threading - notably, web.
705716[ `hecs` ] : https://crates.io/crates/hecs 
706717[ Rayon ] : https://crates.io/crates/rayon 
707718
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- 
731719### [ macroquad]  
732720
733721[ macroquad]  by [ @fedor_games]  is cross-platform
@@ -739,6 +727,18 @@ The project now has [a Discord community server](https://discord.gg/WfEp6ut)
739727with channels for all the quad-family projects:
740728miniquad, macroquad, good-web-game, and nanoserde.
741729
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+ 
742742megaui is macroquad's imgui-like UI system.
743743Recently, megaui got decent input widgets: input fields, editboxes, and sliders.
744744All 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)
747747
748748![ ui] ( macroquad_ui.gif ) 
749749
750- Also, two new examples came from the awesome macroquad community: 
750+ ------ 
751751
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.
753758
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+ ``` 
755764
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 ] .
759767
760768[ macroquad ] : https://github.com/not-fl3/macroquad 
761769[ miniquad ] : https://github.com/not-fl3/miniquad 
762770[ mq-snake ] : https://github.com/not-fl3/macroquad/blob/master/examples/snake.rs 
763771[ mq-asteroids ] : https://github.com/not-fl3/macroquad/blob/master/examples/asteroids.rs 
764772[ mq-snake-web ] : https://not-fl3.github.io/miniquad-samples/snake.html 
765773[ 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 
766777
767778### [ Tetra 0.4] [ tetra-040 ]  
768779
@@ -804,6 +815,30 @@ More information can be found on [Twitter][@MrVallentin].
804815[ nodefx-sdf2 ] : https://twitter.com/MrVallentin/status/1276609598699581442 
805816[ nodefx-sdf3 ] : https://twitter.com/MrVallentin/status/1276961197645008896 
806817
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+ 
807842### [ Arsenal Game Engine] [ arsenal ]  
808843
809844[ 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.
854889[ vimnail-git ] : https://github.com/TanTanDev/vimnail 
855890[ vimnail-video ] : https://youtu.be/2cSY43OcuZc 
856891
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+ 
857913## Popular Workgroup Issues in Github  
858914
859915<!--  Up to 10 links to interesting issues --> 
860916
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+ 
861928## Meeting Minutes  
862929
863930<!--  Up to 10 most important notes + a link to the full details --> 
@@ -871,6 +938,7 @@ or [join the next meeting][join].
871938
872939<!--  Links to "good first issue"-labels or direct links to specific tasks --> 
873940
941+ -  [ gl-rs is seeking new maintainers] ( https://github.com/brendanzab/gl-rs/issues/524 ) ;
874942-  [ Embark's open issues] [ embark-open-issues ]  ([ embark.rs] );
875943-  [ winit's "Good first issue" and “help wanted” issues] [ winit-issues ] ;
876944-  [ gfx-rs's "contributor-friendly" issues] [ gfx-issues ] ;
@@ -901,6 +969,23 @@ and highlight events from the past. -->
901969
902970Just an interesting Rust gamedev link from the past. :)
903971
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+ 
904989------ 
905990
906991That's all news for today, thanks for reading!
0 commit comments