Coordination repository of the Game Development Working Group

Related tags

Game development wg
Overview

Rust Game Development Working Group 🕹️

The game development working group's main purpose is to make Rust a first-class option for game developers.

What are we doing?

At the very high level we have two main tasks:

  • To improve the experience of people using rust for game development. We want game developers to have a representation in the Rust project. We are a bridge between them and the Rust dev team.

  • Share knowledge and make game engine development more accessible for people that are not engine developers. We know it can be an intimidating and scary field when you're just starting out.

More details about our mission can be found in our charter.

How can you help

Let us know where the gaps currently are. If there are problems in the tooling, documentation crate ecosystem, or even the language, we would like to know about it.

If you have an idea, proposal or issue where you think the rust language or ecosystem needs to improve in order to make it a better option for game development open an issue on this repository. It will be discussed and triaged here.

If you're interested in learning more about our governance or becoming a member you can start here.

Join the fun!

Comments
  • The state of math libraries

    The state of math libraries

    The big math libraries are cgmath and nalgebra. Both of them have deal-breaking flaws for many, namely (imo):

    • cgmath has a weird, idiosyncratic design that simultaneously does too much and too little, and tries to shoehorn in genericism with complex traits that are difficult to internalize.
    • nalgebra stretches the type system so far that the documentation is nigh impossible to understand without extreme patience and a deep understanding of generics.

    As a result, several people have gone and made their own math libraries that try and solve those problems, which don't get adoption because the ecosystem hasn't grown up around them. I'd like this issue to house discussion on how exactly we can go about designing a library that addresses those issues, while developing enough consensus that we can potentially replace both of the current libraries.

    opened by Osspial 55
  • [Tracker] Better windowing/graphics inter-operation

    [Tracker] Better windowing/graphics inter-operation

    Update: Most work is done! Unfortunately this didn't help the GL API as much as it helped the newstyle APIs like Vulkan/Metal/gfx-hal/wgpu, but it was a good improvement.

    Windowing Side

    • [x] winit: raw-window-handle is supported as of 0.20.0-alpha3
    • [x] glutin: GL has problems in general with it, but glutin uses a new enough winit that it technically has the support.
    • [x] beryllium: Available in 0.1 series and via feature in 0.2 series
    • [ ] sdl2: Issue opened, https://github.com/Rust-SDL2/rust-sdl2/issues/910

    Graphical Side

    • [x] ash: Ash doesn't track the extensions enabled, so it can't actually use raw-window-handle to automatically do anything for you. You're just on your own, which is what you'd expect from a minimal bindings library.
    • [x] gfx-hal added in https://github.com/gfx-rs/gfx/pull/3038
    • [x] wgpu: Fixed in https://github.com/gfx-rs/wgpu-rs/pull/70
    • [x] glow: Updated to a new enough glutin in https://github.com/grovesNL/glow/commit/7a73cf9a258ec326fd378cc4388ce1bb926a808e, though the GL limits still apply.

    original issue post follows:

    gfx-hal (technically the Instance type in gfx-backend-foo for one of gl, vulkan, dx12, etc) takes a &Window, but all types actually secretly have their version number as part of their type so it takes a &Window-v0.19.0. That's fine and all except there's a new 0.20.0-alpha2 out and people are supposed to be trying out that new alpha but they can't draw a picture because it's the wrong version so you get a type mismatch error. We can hardly alpha test the library if we can't even draw a picture. The backends have a plan for what to do: ignore their winit integration, possibly disable the winit feature entirely, and then use the create_surface_from_THING version for whatever raw window thing you have. This is annoying, but you can do it. The gfx-backend-vulkan crate has support for xlib, xcb, wayland, and even an existing vulkan surface. Honestly, all that create_surface does with the &Window is look inside the Window for the raw window data (using the right platform specific extension trait), and then call one of the other constructors anyway.

    What we should do is cut out the whole middle step where gfx-hal has to know about the unstable winit crate, and we let it rely on a very stable interface that both winit and gfx-hal and other window libs and other graphical libs can all agree on.

    We'll call the crate raw-window-handle (bikeshed here). The crate only needs a single trait and a support enum for the return value of the single method on that trait:

    pub unsafe trait HasRawWindowHandle {
      fn raw_window_handle(&self) -> RawHandleData;
    }
    
    pub enum RawHandleData {
      Win32{ hwnd: *mut c_void},
      XLib{ display: *mut c_void, window: u64 },
      Cocoa{ .. } \
      // etc, one for each windowing system,
      // we prefer c_void and pointer casting instead of the "real" pointer
      // types when possible so that it builds easily on all platforms.
    }
    

    Then winit implements this for Window, and gfx-hal backends can write create_surface(win: &impl HasRawWindowHandle), and end users trying to get the two to talk to each other stop having to match their versions up quite so tightly. The raw-window-handle crate can just be one of those "0.1 crates that basically never updates because it does the job fine as is" like libc, perhaps to become 1.0 once we've really kicked the tires a bit., perhaps never to even bother with 1.0 at all.

    And that's something we could get done in just 1 month.

    opened by Lokathor 52
  • Meeting Agenda - 24 July 2019

    Meeting Agenda - 24 July 2019

    This is the place to propose new agenda items and things to discuss in the next meetings.

    Current agenda:

    • Discuss status on issues.

    Feel free to add subjects as a comment.

    If you can't make it to the meeting don't worry as there are no decisions made in meetings. It's just a place to discuss ideas, check status of various ongoing things and the only actions taken as a result of a meeting would be: opening a issue or clarifying something on an issue

    Meeting 
    opened by AlexEne 26
  • Meeting: Nov 27, 2019

    Meeting: Nov 27, 2019

    Action items:

    • [x] Give feedback on @TimDiekmann's allocator repository. (~@kabergstrom will champion~ Done by @wodann)
    • [x] Review and discuss state of input handling.
    • [x] Investigate possibility for standardising more core concepts
      • [x] thread pools (@Lokathor)
    • [x] Host AreWeGameYet and transfer domains (@ozkriff)
    • [x] minimal frame allocator with bump allocation and a reset function.
    Meeting 
    opened by Wodann 22
  • Meeting: October 2, 2019

    Meeting: October 2, 2019

    Action Items From Last Meeting

    • [ ] Discuss open wg PRs
    • [ ] Investigate more about Placement New (pre-rfc? rfc? where is the ecosystem at).
    • [ ] More chat about the state of rust audio libraries? Bindings to opens OpenAL, cpal latency issues (low-handing fruit?), the cpal/rodio workload split.
    • [ ] Rust on Mobile (CI, cargo integration, etc)
    • [ ] custom allocator followup (wg link)
    • [ ] Any movement on the ecosystem guide (@Wodann)
    • [ ] Improve issue tracker triage (smaller issues if possible, more labels about areas/skillsets, etc)
    • [ ] Ecosystem survey (if it's been published).
    Meeting 
    opened by Lokathor 18
  • Meeting: Jan 22

    Meeting: Jan 22

    From last meeting:

    • [ ] Helping the alloc-wg move forward with getting their experiments in front of more people (@Lokathor)
    • [ ] Discussing an update to the gamedev-wg charter so that it is more like the embedded-wg's charter (@Lokathor)

    Ongoing subjects of note:

    • [ ] gamedev survey?

    Post more agenda items here if you have them!

    Meeting 
    opened by Lokathor 16
  • Meeting: Nov 13, 2019

    Meeting: Nov 13, 2019

    Action Items From Last Week:

    • [ ] @kabergstrom: help gather more info about allocator use cases
    • [x] @kvark: ask granka about custom allocators progress (also generics?)
    • [ ] Debug performance (mostly generics)
    • [ ] AreWeGameYet status

    Post more topics to discuss!

    Meeting 
    opened by Lokathor 15
  • Meeting Agenda: September 4th, 2019

    Meeting Agenda: September 4th, 2019

    It's been 2 weeks time for another meeting.

    Same time as usual, same place as usual.

    I know it's late notice, but put agenda items here.


    EDIT: Proposed Topics:

    • @kvark: GL in raw-window-handle
    • @msiglreith: Memory management, including "placement new"
    • @msiglreith: Audio, (https://github.com/rust-gamedev/wg/issues/40)
    • @Wodann: Adopting rust in industry
    • @aclysma: How we should cope with the Known Issues List
    Meeting 
    opened by Lokathor 15
  • Meeting Agenda: September 18th, 2019

    Meeting Agenda: September 18th, 2019

    (Regular reminder, meetings are public on Google Hangouts, info is in the repo's readme)

    Action Items From Last Meeting

    • [x] Did we put last meeting's action items in this meeting's agenda?
    • [ ] Gather info/guidance around "placement new" language feature or possible workarounds.
    • [ ] Try working with something like MyType::new_here(&mut MaybeUninit<MyType>).
    • [ ] Investigate lower level sound API
    • [ ] Contact Ready At Dawn for more info about their Rist usage, possible closer collaboration.
    • [ ] Contact Embark Studios for more info about their Rist usage, possible closer collaboration.

    Agenda This Week

    • TBD, post here if you want something to get discussed.
    Meeting 
    opened by Lokathor 14
  • Add known_issues.md for tracking core language issues

    Add known_issues.md for tracking core language issues

    In today's meeting, we discussed maintaining a list of issues we'd like to raise to the core language team as a markdown file. (#38)

    I looked through the bugs in this repo and the embark repo and these are the ones that stood out to me.

    Rendered

    For discussion:

    • Anything to add/remove?
    • Is this the right level of detail for each issue?
    • Obligatory bikeshedding of filename, location, prose... :)
    opened by aclysma 14
  • Transfer ownership of arewegameyet to gamedev wg

    Transfer ownership of arewegameyet to gamedev wg

    I've created an issue on the arewegameyet repository to see if the owner would be interested in transferring ownership to this wg. The motivations for this are listed in that issue, and I'm posting this here as a tracker and to see if it's something the wg would be interested in.

    opened by fu5ha 13
  • Official Mastodon Account

    Official Mastodon Account

    As you may know, we have a Twitter account (that is mostly run by me) for making announcements and collecting all the cool rust gamedev stuff there into one feed - and I'd like to experiment with creating a similar "official" account on https://mastodon.gamedev.place Mastodon server. Seems like a bunch of rust gamedev folks&projects post to fediverse now so it should have enough content.

    Any thoughts or objections?

    opened by ozkriff 4
  • Possible sponsors

    Possible sponsors

    Rusty Jam(Game jam with games written in rust) co-host here. We recently got approached by a crypto company wanting this:

    We are currently looking for interesting partnerships with in order to bring more amazing builders into the blockchain space. Would you be interested to catch up on aa short call to see where we could collaborate? (and they did clarify that it's about Rusty Jam)

    I don't exactly know what they want from us, but I think it would be great if they're going to be ready to sponsor Rusty Jam #3 prizes. I have zero experience with prizes, but I think the prize should be something small but will still make them feel good thing, like maybe 100$ dollars. Bigger prize is going to turn the whole thing from light-hearted competiotion to a battlefiled.

    What do you think?

    opened by Voodlaz 4
  • Rust Game Ports maintenance

    Rust Game Ports maintenance

    I've had a chat with @erlend-sh, and a few topics came out.

    First: does anybody has any interest in maintaining the project? The task should be to review incoming PR.

    Second: should game library maintainers be collaborators (read permissions) on the project? The idea is that, along a repository maintainer, a second pair of eyes should be a game library maintainer.

    That'd be it. I can take care of the technical maintenance of the repo (README updates, CI, etc.), which I'll start shortly.

    opened by 64kramsystem 2
  • Adopting rust-game-ports for neutral examples

    Adopting rust-game-ports for neutral examples

    @64kramsystem is pretty far along with a project that I believe would make an excellent community-driven project for the GameDev WG.

    This would be in a similar vein as https://github.com/rust-gamedev/wg/issues/89, which arguably went quite well even though it’s not that actively updated; I like to think we collectively realized that speed is only one aspect of an ECS, and a rather small one at that once a baseline of performance has been established.

    rust-game-ports has a greater potential for ongoing development because ‘How do you made Game X in Engine Y’ is an ever-evolving question.

    From the rgp readme:

    The completed ports are:

    | Source | Game | Engine | | ------------------------------------ | :-------------: | :--------: | | Code the Classics Vol. 1 | Boing | ggez | | Code the Classics Vol. 1 | Cavern | Macroquad | | Hands-on Rust: Effective Learning... | Rusty Roguelike | Bevy (ECS) | | Code the Classics Vol. 1 | Soccer | Fyrox |

    I currently don't plan any further ports.

    What I’m suggesting is inviting the Rust gamedev community to add new example games to this repo, so the matrix of different games continues to expand. What we want is games like pong, boing, space invaders etc. to be implemented side-by-side in several engines. Engine devs are incentivized to lend a hand with these examples to make them representative of best practice.

    opened by erlend-sh 5
  • OpenGL Multi-Platform game from scratch

    OpenGL Multi-Platform game from scratch

    Hello guys & girls,

    2 years ago I've started a rust game, which is a clone of the good old SuperMorph for SNES. My goal was a 2D Game for Windows and Android, but mainly trying to build a Multi-Platform OpenGL based game from scratch.

    What makes this project interesting?

    • It's based on it's own engine, nearly implemented from scratch.
    • It seems it is one of the few solutions, working on android (by fixing winit & glutin bugs). Is this still a problem? I don't know.

    Why is not finished?

    • I'm no student anymore, real life caught up with me.
    • Work, Family, other stuff and less time make it hard to continue
    • Basic concepts are already implemented, main problem is level design.

    Where can I find the project? https://github.com/Kaiser1989/morph

    What should you/we do? I don't know. But I think it would be a shame if this project would die on my disk.

    Best regards

    opened by Kaiser1989 1
Owner
Rust game development working group
Working on making rust the default language choice for game development.
Rust game development working group
Solana Game Server is a decentralized game server running on Solana, designed for game developers

Solana Game Server* is the first decentralized Game Server (aka web3 game server) designed for game devs. (Think web3 SDK for game developers as a ser

Tardigrade Life Sciences, Inc 16 Dec 1, 2022
2d collision test for game-development in rust (with optional integration and example for bevy)

impacted 2d collision test for game-development in rust (with optional integration and example for bevy) This provides a low-level "narrow-phase" coll

Jonathan Cornaz 17 Nov 5, 2022
Rust SDK for working with RIS-Live real-time BGP data stream.

ris-live-rs Provides parsing functions for RIS-Live real-time BGP message stream JSON data. The main parsing function, parse_ris_live_message converts

BGPKIT 10 Oct 11, 2022
Helper functions and structs for working with 2D space in Bevy.

About Baffled by quaternions? Want to accelerate an object in 2D? Wish that there was a simple way to work with grids? Just want to know if two axis-a

Leafwing Studios 11 May 9, 2022
Victorem - easy UDP game server and client framework for creating simple 2D and 3D online game prototype in Rust.

Victorem Easy UDP game server and client framework for creating simple 2D and 3D online game prototype in Rust. Example Cargo.toml [dependencies] vict

Victor Winbringer 27 Jan 7, 2023
2-player game made with Rust and "ggez" engine, based on "Conway's Game of Life"

fight-for-your-life A 2-player game based on the "Conway's Game of Life", made with Rust and the game engine "ggez". Create shapes on the grid that wi

Petros 3 Oct 25, 2021
2d Endless Runner Game made with Bevy Game Engine

Cute-runner A 2d Endless Runner Game made with Bevy Game Engine. Table of contents Project Infos Usage Screenshots Disclaimer Project Infos Date: Sept

JoaoMarinho 2 Jul 15, 2022
A tetris game I wrote in rust using ncurses. I'm sure that there's a better way to write a tetris game, and the code may be sus, but it techinically works

rustetris A tetris game I wrote in rust using ncurses. I'm sure that there's a better way to write a tetris game, and the code may be sus, but it tech

Eric G 3 Oct 15, 2022
A game for the game jam "1-Button Jam 2021"

One click ninja A game for the game jam "1-Button Jam 2021" written in Rust with the Bevy engine. A rhythm game, where you play a soldier that can def

Alex Helfet 7 Apr 12, 2022
A game of snake written in Rust using the Bevy game engine, targeting WebGL2

Snake using the Bevy Game Engine Prerequisites cargo install cargo-make Build and serve WASM version Set your local ip address in Makefile.toml (loca

Michael Dorst 0 Dec 26, 2021
Wasm game of life - A Rust and WebAssembly tutorial implementing the Game of Life

wasm_game_of_life Conway's Game of Life in Rust and WebAssembly Contributing | Chat Built with ?? ?? by The Rust and WebAssembly Working Group About T

Rust and WebAssembly 236 Dec 24, 2022
My first attempt at game programming. This is a simple target shooting game built in macroquad.

sergio My first attempt at game programming. This is a simple target shooting game built in macroquad. Rules Hit a target to increase score by 1 Score

Laz 1 Jan 11, 2022
Conway's Game of Life implemented for Game Boy Advance in Rust

game-of-life An implementation of a Conway's Game of Life environment on GBA. The ultimate game should have two modes: Edit and Run mode which can be

Shane Snover 1 Feb 16, 2022
A game made in one week for the Bevy engine's first game jam

¿Quien es el MechaBurro? An entry for the first Bevy game jam following the theme of "Unfair Advantage." It was made in one week using the wonderful B

mike 20 Dec 23, 2022
A Client/Server game networking plugin using QUIC, for the Bevy game engine.

Bevy Quinnet A Client/Server game networking plugin using QUIC, for the Bevy game engine. Bevy Quinnet QUIC as a game networking protocol Features Roa

Gilles Henaux 65 Feb 20, 2023
Managed game servers, matchmaking, and DDoS mitigation that lets you focus on building your game

Managed game servers, matchmaking, and DDoS mitigation that lets you focus on building your game. Home - Docs - Twitter - Discord ?? Features Everythi

Rivet 58 Jun 25, 2023
This is the repository with the tutorials of Learning Rust series in @Leticia-maria Youtube channel

Rust Tutorials This repository contains the information of Learning Rust playlist in my youtube channel. Learning Rust(part. 1)! Installation on Ubunt

Letícia Maria Pequeno Madureira 10 May 24, 2022
The official command-line interface for the makedeb Package Repository

Mist This is the repository for Mist, the official helper for the makedeb Package Repository. Installation Users have a few options for installing Mis

makedeb 5 Aug 4, 2022
IDE for cross-platform software development

Diversity Space IDE for cross-platform software development | 日本語 | English | Русский | READMEの英語版とロシア語版はDeepl翻訳を使用して翻訳されています Английская и русская вер

latteS 0 Feb 23, 2022