Skip to content

Files

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Latest commit

4385afa · Mar 4, 2020

History

History
646 lines (442 loc) · 26.2 KB

File metadata and controls

646 lines (442 loc) · 26.2 KB

+++ title = "This Month in Rust GameDev #7 - February 2020" draft = true +++

Welcome to the seventh issue of the Rust GameDev Workgroup’s monthly newsletter.

Rust is a systems language pursuing the trifecta: safety, concurrency, and speed. These goals are well-aligned with game development.

We hope to build an inviting ecosystem for anyone wishing to use Rust in their development process! Want to get involved? Join the Rust GameDev working group!

Want something mentioned in the next newsletter? Send us a pull request. Feel free to send PRs about your own projects!

Thanks cloud: Amethyst, ggez, gfx-rs, specs, serde and many other projects

The results of the Rust GameDev ecosystem survey were published.

After an unfortunate delay, we can finally present the results. We received a whopping 403 responses! This trove of valuable feedback will inform the WG's roadmap for 2020.

Discussions: /r/rust, /r/rust_gamedev

Are We Game Yet? is a website cataloguing the Rust gamedev ecosystem, with hundreds of links to crates, games and helpful resources.

Are We Game Yet? homepage

This month, it received some major updates:

  • All of the site's data files have been unified into a consistent TOML schema, making it easier to add new links.
  • Categories have been added for games and resources, and you can now add an item to multiple categories without duplicating the data.
  • Page load times have been reduced (especially on the homepage).
  • The styling has been improved to make the site look better on mobile, and to resolve some accessibility issues.

Ownership was also recently transferred across to the gamedev working group, to allow for more people to help with maintainance.

There's never been a better time to add your projects to the site, so please come and contribute!

Invitation widget: 243 members total, 98 online

A new Discord server dedicated to Rust GameDev was started by @dasifefe this month: invitation link.

Besides talking about Rust, it's a place that could be used to show your work-in-progress, art (visual or audio), discuss game design, etc.


Also, in case you didn't know, there is a quite active "games-and-graphics" channel on the community-run Discord server.

Tallin's old town

@logicsoup - one of the developers behind Garden - is planning to organize the first (and hopefully one of many) Rust Hack'n'Learn meetup in Tallinn in March.

If you're interested, follow @RustTallinn - more details will be announced soon.

Game Updates

Rusty Shooter is a Quake3-like first person shooter written in Rust using rg3d engine.

Rusty Shooter in-game screenshot

Small gameplay video (work-in-progress): Rusty Shooter game

Features:

  • Common FPS elements: bots, items, weapons.
  • Single game mode - deathmatch.
  • More or less modern graphics (shadows, deferred shading, particle systems etc.)
  • Fully animated bots using animation blending state machines.
  • Single map - something like legendary Q3DM6.
  • Path finding using navmesh
  • Save/load functionality
  • GUI: main menu, options, HUD, leader board (using rg3d-ui library)
  • Binaural sound (using rg3d-sound library)

Spider NPCs

Antorum is a multiplayer RPG where players build their characters and fight against the growing threats on the isle. The game server is authoritative and written in Rust, while the client is written in Unity/C#.

This month, the focus was on the cooking skill. This includes recipies and cookware. Players will need a cooking appliance, such as a stove or campfire to cook some Chonkrat Stew inside a pot. A heavy refactor to the interaction system had to be made, as well as changes to networking. Check out @dooskington's devlog here:

Everpuzzle is a Tetris Attack like action-puzzle game written in Rust.

Everpuzzle preview

Everpuzzle aims to become a similar game like Tetris Attack and expand on its concepts. The project was recently rewritten with minimal dependencies to achieve small compile times and gain more control over the underlying engine architecture. In the past Everpuzzle was using Amethyst with ECS, however there were some issues that made development difficult. Everpuzzle's big goals are AI, Multiplayer and different Game modes.

Big changes coming in version 0.2, full list here:

  • Gamepad support (singleplayer)
  • Multiple grids
  • AI Bot
  • Better Randomization of blocks
  • Combos / Chains - with Highlighting
  • Better animations

Latest releases

Everpuzzle rewrite - Code Walkthrough (code outdated)

Traffic lights

Scale is a recent project about modern day society simulation from the bottom-up by Uriopass.

In february, the Inspector for specs entities was mostly finished and the traffic simulation made great progress. A second blog post was released about it.

A recent video also shows different traffic features such as traffic lights, stop signs and car AI working together.

Discussions: /r/rust_gamedev

Ultimate scale screenshot showing winds and blips

Ultimate Scale is a puzzle game in which you build increasingly large machines to solve increasingly difficult problems. The game consists of wind and blips. Wind propagates along pipes and causes blips to move. Blips, in turn, activate blocks.

Leod is currently working on the core design: How to make the game fun and what blocks to add. He posted about their thoughts and progress on a reddit comment. Regularly, videos are posted on their youtube channel showing different machines made in game such as an extensible counter modulo 10 and a buffer.

A custom 3D rendering pipeline based on glium called Rendology was developed for this project. A blog post talks about its design and relation to Ultimate Scale.

Discussions: /r/rust_gamedev

release

Tennis academy dash is a time management game where you are the manager of a tennis academy and you need to coordinate various players to play on your courts.

The game is still a work in progress, but the demo version has been uploaded to itch.io this month, so you can go ahead and check it out! Give it a go (the build is only for mac at the moment but other platforms coming soon) and drop a comment with any feedback on tennis-academy-dash.

Space is a lonely place, but at least you've got the music to keep you company.

Lonely Star is a side-scrolling infinite runner, with simple generative music. You collect orbs and fly through rings in order to play notes and stay alive.

It was developed by 17cupsofcoffee, using the Tetra 2D game framework, for Weekly Game Jam #135.

Lonely Star screenshot

Tetra itself also received two small updates recently:

High detail terrain chunk with PRR

Sampling a heightmap in the vertex shader and also computing the normal, tangent and bitangent vectors in the vertex shader.

Akigi is a multiplayer online world where most believe that humans are inferior.

This month saw a heavy focus on the web client. An alpha release is slated for April 9th, 2020. Lots of client refactoring was done, and experiments were run in the browser.

Some of February's updates:

February's full devlogs: #053, #054, #055,

Will Network Play Screenshot

Will is a 2.5D moddable action / adventure game.

This month Azriel wrote a post about how decisions were made when designing network play.

Gameplay demo: two giant tank armies clashing

^ gameplay demo (35000 units)

Oxidator by @Ruddle is a real-time strategy game/engine written with Rust and WebGPU. It's inspired by Total Annihilation, Supreme Commander, Spring Engine, and Zero-k.

The project's goal is to provide a modern, carefully crafted, minimal and highly constrained set of tools for players/designers to create mods without programming knowledge.

Some of the current features:

  • Simulation: working draft of flock behavior and collision detection, basic health and damage computation, construction and repair;
  • Rendering: basic display of a heightmap & 3D models (with instancing), fxaa, screen space reflections;
  • UI: select units (picking and rectangle selection), move & build orders;
  • Multiplayer: working PoC localhost tcp client/server;
  • Map editor: raise, lower, flatten, blur, noise pencil;
  • Unit editor: basic editor with joint & mesh selection and parameter editing (speed, turn rate, health, etc);

Unit editor demo: move agent's parts

^ Demo of the unit editor

Map editor demo: use pencil tool to instantly create a lake and mountains

^ Demo of the map editor

logo

UniverCity is an isometric university management game:

Manage your staff, professors and students and try and build the best UniverCity around! Build up your UniverCity solo or against friends and build many different types of classes whilst trying to ensure students get good grades, or maybe just try and build the best looking UniverCity.

This month, v1.0 was released on Steam along with releasing the game's sources under GPL-3.

This update marks the end of development for now and adds in some basic workshop support.

Demo: builing a classroom

The license is GPL-3 and the code is the same as the version released on Steam (the Steam version is built with the 'steam' feature enabled). Due to the GPL licensing the steamworks support is disabled by default which breaks things like the 'modding' menu and multiplayer.

The assets are not included with the release and will have to be copied from the game on Steam.

Discussions: /r/rust

New site with links to Twitter, Discord, and Twich

Alexandru Ene is working on a dwarf colony management game "Dwarf World".

This month, the project got an official site: dwarf.world.

Also, check out development streams: every Sunday at 19:30 PM GMT on Twitch.

logo

Way of Rhea is an upcoming puzzle platformer that takes place in a world where you can only interact with objects that match your current color.

This month, an updated trailer with new character art was released. Check it out on the game's Steam page.

Noodle Cat

Noodle game physics demo

@Fryer00 tweeted a bunch of updates about their WIP Box2D physics game prototype:

Garden: January and February Devlogs

pyramid generation demo

Garden is an upcoming game centered around growing realistic plants.

January and February devlogs were posted by @logicsoup. Some of the updates:

  • 🌘 Physically based shading
  • 🕹 3D model loading and texturing for richer environments
  • 💦 Soil moisture content
  • 🌠 Alpha mipmapping
  • and more info regarding some game mechanics as well

itch.io page: ASCII art logo with an ant, game features, video and screenshots

Native Systems is working on "Colony Genesis" - an ant colony sandbox game with ASCII graphics.

Establish a new colony and help it grow or let it develop on its own.

This month an alpha version was published on itch: check it out here.

Rolling mountain landscape

Rolling mountain landscape

Veloren is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World.

At the beginning of the month, the team met for a 0.6 intro meeting. It was decided that 0.6 would focus on things for the player to do, and hence will be called "The Content Update".

Research has been done on multiple areas this month. One domain is level of detail, which is allowing mountains off in the distance to be rendered much faster. Another domain is server persistence. Finding a way for the server to efficiently persist player information is a large part of what is needed for The Content Update.

Here is the February changelog:

- Fixed NPCs attacking the player forever after killing them
- Extend run sfx to small animals to prevent sneak attacks by geese
- Added sfx for wielding/unwielding weapons
- Added new orc hairstyles
- Added gamma setting
- Configurable fonts
- Tanslation status tracking
- Fixed /give_exp ignoring player argument
- Allow spawning individual pet species, not just generic body kinds
- Added daily Mac builds
- Removed highlighting of non-collectible sprites
- Added zoomable and rotatable minimap
- Added rotating orientation marker to main-map
- Brighter / higher contrast main-map
- Added music system

veloren development

1 year of Veloren development. Click for the full video!

You can read more about some specific topics:

Hanging out

In March, there will be a heavy focus on completing level of detail work as well as persistence. Modding support will be explored further. Player achievements will be merged into the game, and we will start looking at where more content can be added.

February's full weekly devlogs: "This Week In Veloren...": #53, #54, #55, #56.

Library & Tooling Updates

Demonstration of interpolation

joetsoi has written a blog post, demonstrating how the concepts from the well-known 'Fix Your Timestep' article can be applied when making games with Rust and GGEZ.

The examples are very well explained, and can easily be translated to other engines, so it's worth checking out even if you're not a GGEZ user!

savefile 0.6.1

savefile is a serialization crate used to effortlessly serialize rust crates and enums into a binary format. Anything implementing the Write trait can be serialized and deserialized. First class versioning support and introspection are some other features available.

Version 0.6.1 includes a fix and should be updated to if compilation using the savefile-derive crate produces a "SaveFileError not found" compiler error.

For details, see the github page or the savefile documentation.

specs 0.16

specs is an entity-component system (ECS) library, designed for high performance. This update increases the MSRV to 1.38 and removes the "nightly" feature.

In this version, the panic message has been improved to include the name of the type that is accessed on stable Rust, as well as suggestions for how to fix the issue. Prior to specs 0.16, retrieving a resource that had not been added to the World panics with an obscure "resource not found" message, and the "nightly" feature was necessary to discover what resource that is.

In addition, the Send and Sync trait constraints are removed from resources and Components when the "parallel" feature is disabled -- enabling types such as wasm_bindgen::JsValue to be used with non-parallel specs.

For more details, please see the specs changelog.

Popular Workgroup Issues in Github

Meeting Minutes

See all meeting issues including full text notes or join the next meeting.

Requests for Contribution

Bonus

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


That's all news for today, thanks for reading!

Subscribe to @rust_gamedev on Twitter or /r/rust_gamedev subreddit if you want to receive fresh news!