Skip to content

Commit d983184

Browse files
authored
Newsletter 11 (#200)
* Newsletter 11: Add Göld * Newsletter 11: Add GC NES Emu * Newsletter 11: Add safe_arch * Newsletter 11: Add WG issues * Newsletter 11: Add bonus * Newsletter 11: Move nanoserde inside macroquad * Newsletter 11 * Newsletter 11: whitespace fix * CI: checkout v2 * Newsletter 11: Remove empty Jobs section * Newsletter 11: NES: Fix typo * Newsletter 11: Add Lokathor link * Newsletter 11: typos
1 parent 3b0a69a commit d983184

File tree

5 files changed

+129
-44
lines changed

5 files changed

+129
-44
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
# https://github.com/marketplace/actions/github-pages#warning-limitation
1313
GITHUB_PAT: ${{ secrets.GITHUB_PAT }}
1414
steps:
15-
- uses: actions/checkout@v1
15+
- uses: actions/checkout@v2
1616
- name: Lint
1717
uses: avto-dev/markdown-lint@v1
1818
with:
223 KB
Loading
381 KB
Loading

content/posts/newsletter-011/index.md

Lines changed: 128 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
+++
22
title = "This Month in Rust GameDev #11 - June 2020"
3-
date = 2020-07-01
3+
date = 2020-07-07
44
transparent = true
5-
draft = true
65
+++
76

87
Welcome 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
8482
Also, 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])
102100
is an upcoming puzzle platformer that takes place in a world
103101
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
105103
in 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.
449447
are 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
579577
nightly and a cargo subcommand.
580578

581579
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,
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
586584
rust-friendly library.
587585

588586
Rather than patching LLVM or rustc, the rust-psp team has also merged a
@@ -613,7 +611,7 @@ change from 0.8.
613611

614612
In 0.9 the `Vec3` type was changed from being a 128 byte SIMD vector type to a
615613
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
617615
if `Vec3` was used in a context where the size or alignment mattered, such as in
618616
FFI 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
622620
there for users who want the performance benefits of the SIMD implementation.
623621

624622
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
626624
that users needed a `Vec3` that was just 12 bytes.
627625

628626
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.
640638
[Mun] is a scripting language for gamedev focused on quick iteration times
641639
that 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
644642
has been on fixing several issues found by community members, improving the
645643
overall 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
664662
efficient garbage collector that runs every frame instead of freezing a thread.
665663

666664
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].
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)
739727
with channels for all the quad-family projects:
740728
miniquad, 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+
742742
megaui is macroquad's imgui-like UI system.
743743
Recently, megaui got decent input widgets: input fields, editboxes, and sliders.
744744
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)
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

902970
Just 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

906991
That's all news for today, thanks for reading!
18 KB
Loading

0 commit comments

Comments
 (0)