Skip to content

Newsletter 11 #200

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Jul 7, 2020
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
# https://github.com/marketplace/actions/github-pages#warning-limitation
GITHUB_PAT: ${{ secrets.GITHUB_PAT }}
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v2
- name: Lint
uses: avto-dev/markdown-lint@v1
with:
Expand Down
Binary file added content/posts/newsletter-011/ecs-talk.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/posts/newsletter-011/goeld.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
149 changes: 117 additions & 32 deletions content/posts/newsletter-011/index.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
+++
title = "This Month in Rust GameDev #11 - June 2020"
date = 2020-07-01
date = 2020-07-07
transparent = true
draft = true
+++

Welcome to the eleventh issue of the Rust GameDev Workgroup’s
Expand Down Expand Up @@ -34,7 +33,6 @@ Table of contents:
- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github)
- [Meeting Minutes](#meeting-minutes)
- [Requests for Contribution](#requests-for-contribution)
- [Jobs](#jobs)
- [Bonus](#bonus)

<!--
Expand Down Expand Up @@ -677,6 +675,19 @@ to contribute are available on GameLisp's [Github Respository][glisp-github].
[glisp-cratesio]: https://crates.io/crates/glsp/
[glisp-github]: https://github.com/fleabitdev/glsp/

### [safe_arch] v0.5

[safe_arch] is a crate by [@lokathor] that safely exposes
CPU arch intrinsics via `#[cfg()]`.
This month v0.4 and v0.5 versions were released.
The main improvements are:

- 256 bit supports
- Almost all the API was reworked for better naming consistency

[safe_arch]: https://github.com/Lokathor/safe_arch
[@lokathor]: https://twitter.com/lokathor

### [yaks]

[yaks] is a minimalistic framework for automatic multithreading
Expand Down Expand Up @@ -705,29 +716,6 @@ written with the framework on platforms without threading - notably, web.
[`hecs`]: https://crates.io/crates/hecs
[Rayon]: https://crates.io/crates/rayon

### [nanoserde]

[nanoserde] by [@fedor_games] is a fork of makepad-tinyserde
with syn/quote/proc_macro2 dependencies removed.

It attempts to solve a serde's problems of long clean compilation time,
increased incremental build time, and build artifacts size.
nanoserde may be useful when the whole game has less than a minute
clean build time and spending ~40s on serde is unreasonable.

```text
> cargo tree
nanoserde v0.1.0 (/../nanoserde)
└── nanoserde-derive v0.1.0 (/../nanoserde/derive)
```

Some benchmarks and tiled map deserializing example
[could be fould here][nanoserde-bench].

[nanoserde]: https://github.com/not-fl3/nanoserde/
[@fedor_games]: https://twitter.com/fedor_games
[nanoserde-bench]: https://github.com/not-fl3/nanoserde-bench

### [macroquad]

[macroquad] by [@fedor_games] is cross-platform
Expand All @@ -739,6 +727,18 @@ The project now has [a Discord community server](https://discord.gg/WfEp6ut)
with channels for all the quad-family projects:
miniquad, macroquad, good-web-game, and nanoserde.

Also, two new examples came from the awesome macroquad community:

- "snake" - try it [in the browser][mq-snake-web] ([source][mq-snake])

[![snake demo](macroquad_snake.gif)][mq-snake-web]

- "asteroids" - try it [in the browser][mq-asteroids-web] ([source][mq-asteroids])

[![asteroids](macroquad_asteroids.gif)][mq-asteroids-web]

------

megaui is macroquad's imgui-like UI system.
Recently, megaui got decent input widgets: input fields, editboxes, and sliders.
All of them support copy-pasting back and forth from the browser.
Expand All @@ -747,22 +747,33 @@ Check out [the web demo](https://not-fl3.github.io/miniquad-samples/ui.html)

![ui](macroquad_ui.gif)

Also, two new examples came from the awesome macroquad community:
------

- "snake" - try it [in the browser][mq-snake-web] ([source][mq-snake])
[nanoserde] by [@fedor_games] is a fork of makepad-tinyserde
with syn/quote/proc_macro2 dependencies removed.
It attempts to solve a serde's problems of long clean compilation time,
increased incremental build time, and build artifacts size.
nanoserde may be useful when the whole game has less than a minute
clean build time and spending ~40s on serde is unreasonable.

[![snake demo](macroquad_snake.gif)][mq-snake-web]
```text
> cargo tree
nanoserde v0.1.0 (/../nanoserde)
└── nanoserde-derive v0.1.0 (/../nanoserde/derive)
```

- "asteroids" - try it [in the browser][mq-asteroids-web] ([source][mq-asteroids])

[![asteroids](macroquad_asteroids.gif)][mq-asteroids-web]
Some benchmarks and tiled map deserializing example
[could be fould here][nanoserde-bench].

[macroquad]: https://github.com/not-fl3/macroquad
[miniquad]: https://github.com/not-fl3/miniquad
[mq-snake]: https://github.com/not-fl3/macroquad/blob/master/examples/snake.rs
[mq-asteroids]: https://github.com/not-fl3/macroquad/blob/master/examples/asteroids.rs
[mq-snake-web]: https://not-fl3.github.io/miniquad-samples/snake.html
[mq-asteroids-web]: https://not-fl3.github.io/miniquad-samples/asteroids.html
[nanoserde]: https://github.com/not-fl3/nanoserde/
[@fedor_games]: https://twitter.com/fedor_games
[nanoserde-bench]: https://github.com/not-fl3/nanoserde-bench

### [Tetra 0.4][tetra-040]

Expand Down Expand Up @@ -804,6 +815,30 @@ More information can be found on [Twitter][@MrVallentin].
[nodefx-sdf2]: https://twitter.com/MrVallentin/status/1276609598699581442
[nodefx-sdf3]: https://twitter.com/MrVallentin/status/1276961197645008896

### [Göld][goeld]

![Chumtoad](goeld.jpg)

[Göld][goeld] is a WIP game engine for hacking together 3D games using old tech.
It uses wgpu-rs and is based on the simple mental model of PyGame or Löve,
but for Goldsrc/Quake-era tech.

The ultimate goal of the project is to have a simple engine which can do
basically everything that many simplistic 3D games will need,
without making an attempt at being too general.

Current features:

- Quake 2 maps loading (although not Quake/Goldsrc maps yet)
and rendering with proper BSP culling and frustrum culling.
- Loading and rendering of HL1 models.
- Simple dynamic lighting system.

[goeld]: https://github.com/Vurich/goeld

_Discussions:
[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/gwqbxl/been_working_on_a_webgpurust_reimplementation)_

### [Arsenal Game Engine][arsenal]

[Arsenal] is the concept for a 2D and 3D game engine that is fully integrated
Expand Down Expand Up @@ -854,10 +889,42 @@ The goal of the project is to be able to compose images without using the mouse.
[vimnail-git]: https://github.com/TanTanDev/vimnail
[vimnail-video]: https://youtu.be/2cSY43OcuZc

### [GC NES Emulator][gc-nes]

[![screenshot of the web version: main area, scaling settings and drag-n-drop area](nes-emu.png)][gc-nes]

This month [Garett Cooper][garettcooper.com] released [GC NES Emulator][gc-nes]
that allows you to play classic Nintendo Entertainment System games in the browser.

> The core of the GC NES Emulator is implemented in the Rust programming language,
> which supports Web Assembly as a compilation target.
> With a WASM version of the emulator, I've written a javascript wrapper
> that takes the frame rendered with the Rust code
> and displays it on an HTML 5 canvas.
> At present, this is done completely synchronously,
> though I would like to move it into a worker at some point in the future

[The source code is available here][gc-nes-src].

[gc-nes]: https://garettcooper.com/#/nes-emulator
[gc-nes-src]: https://github.com/GarettCooper/gc_nes_emulator
[garettcooper.com]: https://garettcooper.com/

## Popular Workgroup Issues in Github

<!-- Up to 10 links to interesting issues -->

- [rust-gamedev/wg](https://github.com/rust-gamedev/wg):
- [#51 "Using wasm-bindgen for games"](https://github.com/rust-gamedev/wg/issues/51);
- [#75 "Standardised API for sharing thread pools"](https://github.com/rust-gamedev/wg/issues/75);
- [#77 "Can we contribute to OpenXR to get Keyboard/Mouse support to be official?"](https://github.com/rust-gamedev/wg/issues/77);
- [rust-gamedev/rust-gamedev.github.io](https://github.com/rust-gamedev/rust-gamedev.github.io):
- [#30 "CI: Add markdownlint checks"](https://github.com/rust-gamedev/rust-gamedev.github.io/issues/30);
- [rust-gamedev/arewegameyet](https://github.com/rust-gamedev/arewegameyet):
- [#95 "How do we remove crates?"](https://github.com/rust-gamedev/arewegameyet/issues/95);
- [#289 "Netlify previews for PRs?"](https://github.com/rust-gamedev/arewegameyet/issues/289);
- [#320 "A different section for gamejam games?"](https://github.com/rust-gamedev/arewegameyet/issues/320);

## Meeting Minutes

<!-- Up to 10 most important notes + a link to the full details -->
Expand All @@ -871,6 +938,7 @@ or [join the next meeting][join].

<!-- Links to "good first issue"-labels or direct links to specific tasks -->

- [gl-rs is seeking new maintainers](https://github.com/brendanzab/gl-rs/issues/524);
- [Embark's open issues][embark-open-issues] ([embark.rs]);
- [winit's "Good first issue" and “help wanted” issues][winit-issues];
- [gfx-rs's "contributor-friendly" issues][gfx-issues];
Expand Down Expand Up @@ -901,6 +969,23 @@ and highlight events from the past. -->

Just an interesting Rust gamedev link from the past. :)

[![a screenshot of the first slide](ecs-talk.png)][ecs-talk-video]

During RustConf 2018, Catherine West gave a keynote talk
"Using Rust For Game Development" that introduced a lot of people
to the concept of ECS and is now considered a classic.
You can [watch the recording here][ecs-talk-video] ([slides][ecs-talk-slides]).

A few months later [an extended text version was released][ecs-talk-post].

_Discussions:
[/r/rust](https://www.reddit.com/r/rust/comments/9dwqa4/rustconf_2018_closing_keynote),
[/r/programming](https://reddit.com/r/programming/comments/9dwq73/rustconf_2018_closing_keynote)_

[ecs-talk-video]: https://youtube.com/watch?v=aKLntZcp27M
[ecs-talk-post]: https://kyren.github.io/2018/09/14/rustconf-talk.html
[ecs-talk-slides]: https://kyren.github.io/rustconf_2018_slides/index.html

------

That's all news for today, thanks for reading!
Expand Down
Binary file added content/posts/newsletter-011/nes-emu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.