Skip to content

Newsletter 13: Piston #255

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 9 commits into from
Sep 7, 2020
Merged
Changes from 1 commit
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
84 changes: 84 additions & 0 deletions content/posts/newsletter-013/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,90 @@ If needed, a section can be split into subsections with a "------" delimiter.

## Library & Tooling Updates

### Piston

Piston is a modular game engine written in Rust.

A new [Discord channel](https://t.co/8YOj3auDr9?amp=1) has been set up
for the Piston project.

Piston consists of a core library "piston" which itself are composed of
smaller libraries for abstracting input, window and event loop.
This design helps reducing breaking changes in the ecosystem.

The core library `pistoncore-input` is now stabilized and reached 1.0!
This is the most important core abstraction, because it glues all
libraries that are not independent of the core.

------

Dyon is a rusty dynamically typed scripting language.
It is developed and maintained as part of the Piston project,
but can be used as a standalone library.

Dyon is designed from the bottom up to be a good gamedev scripting language for Rust.
It uses a lifetime checker instead of garbage collection, a mutability checker,
optional namespaces and ad-hoc types, named argument syntax,
4D vectors and HTML colors, plus a lot more features!

Recently, Dyon got better macro integration for native Rust types
using `#` as a prefix.

Here is an example of this feature is being tested in
an experimental offline 3D renderer (not open sourced):

```text
// Called by `set_simple(scene: _, sdf: _, id: _)`.
dyon_fn!{fn set_simple__scene_sdf_id(
scene: #&mut SimpleScene,
sdf: #&Sdf,
id: f64
) {
scene.sdfs[id as usize] = sdf.clone()
}}
```

To follow updates on Dyon, check out the subreddit
[/r/dyon](https://old.reddit.com/r/dyon/).

------

Piston-Graphics is a library for 2D graphics, written in Rust,
that works with multiple backends.

`Stencil::Increment` has been added and the ecosystem
has been updated to the latest version.

------

The research branch of the Piston project, AdvancedResearch,
has released a new ECS library [Nano-ECS](https://github.com/advancedresearch/nano_ecs).

This ECS design stores all components in a single array
and uses bit masks for enabling/disabling components.
An entity can have maximum 64 components and must be initalized
with all components it uses in the future.
Each entity has a slice into the array that stores all components.
The `World` object, `Component` and systems are generated using macros.

One research project with Nano-ECS is to prototype a UI framework
for Rust with a UI editor (not open sourced yet).
This project uses Piston-Graphics by default,
but can generate draw commands for processing by other 2D APIs.
It is also possible to override rendering of widgets for
custom looks with Piston-Graphics, which is often useful in gamedev.
Recently, this project has gotten to a place where
[tree-view interaction](https://tinyurl.com/y63f5xkv) is working.

[Piston Discord Channel]: https://t.co/8YOj3auDr9?amp=1
[/r/dyon]: https://old.reddit.com/r/dyon/
[@PistonDeveloper twitter)](https://twitter.com/PistonDeveloper)

[Piston]: https://github.com/pistondevelopers/piston
[Dyon]: https://github.com/pistondevelopers/dyon
[Piston-Graphics]: https://github.com/pistondevelopers/graphics
[Nano-ECS]: https://github.com/advancedresearch/nano_ecs

## Popular Workgroup Issues in Github

## Meeting Minutes
Expand Down