diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 814851e2b..4639ed471 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest env: BASE_URL: https://github.com/getzola/zola/releases/download - VERS: v0.9.0 + VERS: v0.10.1 ARCH: x86_64-unknown-linux-gnu # https://github.com/marketplace/actions/github-pages#warning-limitation GITHUB_PAT: ${{ secrets.GITHUB_PAT }} diff --git a/content/posts/newsletter-007/crow-akari.png b/content/posts/newsletter-007/crow-akari.png new file mode 100644 index 000000000..d15fd65f9 Binary files /dev/null and b/content/posts/newsletter-007/crow-akari.png differ diff --git a/content/posts/newsletter-007/index.md b/content/posts/newsletter-007/index.md index 6686c1685..b073ef370 100644 --- a/content/posts/newsletter-007/index.md +++ b/content/posts/newsletter-007/index.md @@ -1,10 +1,12 @@ +++ title = "This Month in Rust GameDev #7 - February 2020" -draft = true +date = 2020-03-05 +++ + + Welcome to the seventh issue of the Rust GameDev Workgroup’s monthly newsletter. @@ -68,20 +70,26 @@ _Discussions: ## [Are We Game Yet?][awgy] Updates -[Are We Game Yet?][awgy] is a website cataloguing the Rust gamedev ecosystem, with hundreds of links to crates, games and helpful resources. +[Are We Game Yet?][awgy] is a website cataloguing the Rust gamedev ecosystem, +with hundreds of links to crates, games and helpful resources. [![Are We Game Yet? homepage](awgy.png)][awgy] 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. +- 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][awgy-wg], to allow for more people to help with maintainance. +[Ownership was also recently transferred across to the gamedev working group][awgy-wg], +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][awgy-contribute]! +There's never been a better time to add your projects to the site, +so [please come and contribute][awgy-contribute]! [awgy]: https://arewegameyet.com/ [awgy-wg]: https://github.com/rust-gamedev/arewegameyet/issues/210 @@ -113,82 +121,258 @@ channel on the [community-run Discord server][discord-community-invitation]. [@logicsoup] - one of the developers behind [Garden][garden] - [is planning to organize][tallinn-ann] the first (and hopefully one of many) -Rust Hack'n'Learn meetup in Tallinn in March. +Rust Hack'n'Learn meetup in Tallinn on March 13. + +> A Hack'N'Learn is an event where we get together and work on personal +> (or open-source) projects on our own computers. -If you're interested, follow [@RustTallinn] - more details will be announced soon. +If you're interested, visit **[tallinn.rs]** and follow [@RustTallinn]. [tallinn-ann]: https://twitter.com/logicsoup/status/1224404367723454478 [@RustTallinn]: https://twitter.com/RustTallinn [@logicsoup]: https://twitter.com/logicsoup +[tallinn.rs]: https://tallinn.rs/events/2020-03-hacknlearn/ ## Game Updates ### [Rusty Shooter][rusty-shooter] -[Rusty Shooter][rusty-shooter] is a Quake3-like first person shooter written in Rust using [rg3d engine][rg3d-engine]. - ![Rusty Shooter in-game screenshot](rusty-shooter-in-game.jpg) -Small gameplay video (work-in-progress): -[![Rusty Shooter game](rusty-shooter-youtube.PNG)][rusty-shooter-video] +[Rusty Shooter][rusty-shooter] is a Quake3-like first-person shooter +written in Rust using [rg3d engine][rg3d-engine]. 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][rg3d-ui]) -- Binaural sound (using [rg3d-sound library][rg3d-sound]) +- 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][rg3d-ui]); +- Binaural sound (using [rg3d-sound library][rg3d-sound]). + +Small gameplay video (work-in-progress): +[![Rusty Shooter game](rusty-shooter-youtube.PNG)][rusty-shooter-video] [rg3d-engine]: https://github.com/mrDIMAS/rg3d [rg3d-ui]: https://github.com/mrDIMAS/rg3d-ui [rg3d-sound]: https://github.com/mrDIMAS/rg3d-sound [rusty-shooter]: https://github.com/mrDIMAS/rusty-shooter -[rusty-shooter-video]: https://www.youtube.com/watch?v=UDn8ymyXPcI +[rusty-shooter-video]: https://youtube.com/watch?v=UDn8ymyXPcI -### [Antorum] +### [Colony Genesis][colony-itch] -![Spider NPCs](antorum.jpg) +![itch.io page: ASCII art logo with an ant, game features, video and screenshots](colony-genesis.png) -[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#. +[Native Systems] is working on "Colony Genesis" - +an ant colony sandbox game with ASCII graphics. -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: +> Establish a new colony and help it grow or let it develop on its own. -- [#18 "Cooking"](https://dooskington.com/dev-log/18) +This month an alpha version was published on itch: [check it out here][colony-itch]. -[antorum]: https://dooskington.com -[@dooskington]: https://twitter.com/dooskington +[colony-itch]: https://nativesystems.itch.io/colony +[Native Systems]: https://nativesystems.rs -### [Everpuzzle] +### [Veloren][veloren] -[Everpuzzle] is a Tetris Attack like action-puzzle game written in Rust. +![Rolling mountain landscape](veloren1.png) + +^ _Rolling mountain landscape_ + +[Veloren][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: + +```text +- 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 +- Translation 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](veloren3.gif)](https://youtube.com/watch?v=1ldHQfxCT24) + +^ _1 year of Veloren development. Click for the full video!_ + +You can read more about some specific topics: + +- [0.5 Release](https://veloren.net/devblog-53#0-5-release) +- [0.6 Intro Meeting](https://veloren.net/devblog-54#0-6-intro-meeting) +- [Settlements](https://veloren.net/devblog-54#settlements) +- [Mac Builds](https://veloren.net/devblog-55#the-mac-build-situation-by-angelonfira) +- [Achievements](https://veloren.net/devblog-55#achievement-implementation-by-thedip) +- [Persistence](https://veloren.net/devblog-56#persistence-by-angelonfira) + +![Hanging out](veloren2.png) + +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](https://veloren.net/devblog-53), +[#54](https://veloren.net/devblog-54), +[#55](https://veloren.net/devblog-55), +[#56](https://veloren.net/devblog-56). + +[veloren]: https://veloren.net + +### [Oxidator][oxidator] + +[![Gameplay demo: two giant tank armies clashing](oxidator-play.gif)][oxidator-video-play] + +^ _gameplay demo (35000 units)_ + +[Oxidator][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](oxidator-unit-editor.gif)][oxidator-video-unit-editor] + +^ _Demo of the unit editor_ + +[![Map editor demo: use pencil tool to instantly create a lake and mountains](oxidator-map-editor.gif)][oxidator-video-map-editor] + +^ _Demo of the map editor_ + +[oxidator]: https://github.com/Ruddle/oxidator +[@Ruddle]: https://github.com/Ruddle +[oxidator-video-play]: https://streamable.com/499j0 +[oxidator-video-unit-editor]: https://streamable.com/ywr44 +[oxidator-video-map-editor]: https://github.com/Ruddle/oxidator/blob/be4863e74/etc/map_editor.gif + +### [Univer City v1.0 and Open Source Release][univer-1-0-opensource] + +[![logo](univer-logo.jpg)][univer-steam] + +[UniverCity][univer-steam] 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][univer-1-0-opensource] +along with [releasing the game's sources under GPL-3][univer-source]. + +> This update _marks the end of development for now_ +> and adds in some basic workshop support. + +![Demo: builing a classroom](univer-city-demo.gif) + +> 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](https://reddit.com/r/rust/comments/f5fiii/univercity_open_source_release_university)_ + +[univer-1-0-opensource]: https://steamcommunity.com/gid/103582791461907043/announcements/detail/1694978169192631655 +[univer-steam]: https://store.steampowered.com/app/808160/UniverCity +[univer-source]: https://github.com/Thinkofname/UniverCity + +### [Everpuzzle] ![Everpuzzle preview](everpuzzle-020-preview.gif) -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. +[Everpuzzle] is a Tetris Attack like action-puzzle game written in Rust. + +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](https://github.com/Skytrias/everpuzzle/blob/master/CHANGELOG.md): -* Gamepad support (singleplayer) -* Multiple grids -* AI Bot -* Better Randomization of blocks -* Combos / Chains - with Highlighting -* Better animations -[Latest releases](https://github.com/Skytrias/everpuzzle/releases) +- Gamepad support (singleplayer) +- Multiple grids +- AI Bot +- Better Randomization of blocks +- Combos / Chains - with Highlighting +- Better animations -[Everpuzzle rewrite - Code Walkthrough (code outdated)](https://www.youtube.com/watch?v=qA2zcaUVRKY) +[Latest releases](https://github.com/Skytrias/everpuzzle/releases). + +Video: [Everpuzzle rewrite - Code Walkthrough (code outdated)](https://youtube.com/watch?v=qA2zcaUVRKY). [Everpuzzle]: https://github.com/Skytrias/everpuzzle +### [Antorum] + +![Spider NPCs](antorum.jpg) + +[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 cooking skill. This includes recipes 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 te full devlog: [#18 "Cooking"](https://dooskington.com/dev-log/18). + +[antorum]: https://dooskington.com +[@dooskington]: https://twitter.com/dooskington + ### [Scale] ![Traffic lights](scale.png) @@ -196,7 +380,7 @@ Big changes coming in version 0.2, full list [here](https://github.com/Skytrias/ [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 +In February, the Inspector for specs entities was mostly finished and the traffic simulation made great progress. A second [blog post][scale-blog-post] was released about it. @@ -223,7 +407,7 @@ 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][ultimate-scale-post]. +[Reddit comment][ultimate-scale-post]. Regularly, videos are posted on their [youtube channel][ultimate-scale-youtube-channel] showing different machines made in game such as an [extensible counter modulo 10][ultimate-scale-video-1] @@ -242,33 +426,62 @@ _Discussions: [ultimate-scale]: https://github.com/leod/ultimate-scale [ultimate-scale-video-1]: https://youtu.be/zmKRJAF4xcI [ultimate-scale-video-2]: https://youtu.be/IM3BRM_MZrE -[ultimate-scale-post]: https://www.reddit.com/r/rust_gamedev/comments/f3cll6/ultimate_scale_counting_modulo_three/fhhu5ol/ -[ultimate-scale-youtube-channel]: https://www.youtube.com/channel/UChSw7WP2i0GIw61FIeTeGsA +[ultimate-scale-post]: https://reddit.com/r/rust_gamedev/comments/f3cll6/ultimate_scale_counting_modulo_three/fhhu5ol +[ultimate-scale-youtube-channel]: https://youtube.com/channel/UChSw7WP2i0GIw61FIeTeGsA ### [Tennis Academy Dash][tennis-academy-dash] ![release](dash.gif) -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. +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]. +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]. [tennis-academy-dash]: https://iolivia.itch.io/tennis-academy-dash -### [Lonely Star][lonely-star] +### [Dwarf World][dwarf-world] + +[![New site with links to Twitter, Discord, and Twich](dwarf-world.png)][dwarf-world] -> *Space is a lonely place, but at least you've got the music to keep you company.* +[Alexandru Ene] is working on a dwarf colony management game "Dwarf World". + +This month, the project got an official site: [dwarf.world][dwarf-world]. -[Lonely Star][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. +Also, check out development streams: +every Sunday at 19:30 PM GMT [on Twitch][dwarf-twitch]. -It was developed by [17cupsofcoffee][17cupsofcoffee], using the [Tetra][tetra] 2D game framework, for [Weekly Game Jam #135](weekly-game-jam-135). +[Alexandru Ene]: https://alexene.dev +[dwarf-world]: https://dwarf.world +[dwarf-twitch]: https://twitch.tv/nomad_pixel + +### [Lonely Star][lonely-star] [![Lonely Star screenshot](lonely-star.png)][lonely-star] +> _Space is a lonely place, but at least you've got the music to keep you company._ + +[Lonely Star][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][17cupsofcoffee], +using the [Tetra][tetra] 2D game framework, +for [Weekly Game Jam #135](weekly-game-jam-135). + +------ + Tetra itself also received two small updates recently: -* [Version 0.3.2 was released][tetra-0.3.2], with bugfixes and some tools for simple AABB collision detection. -* [The Pong tutorial was updated with a new chapter][tetra-pong], showing how to use Tetra's graphics and input APIs. +- [Version 0.3.2 was released][tetra-0.3.2], + with bugfixes and some tools for simple AABB collision detection. +- [The Pong tutorial was updated with a new chapter][tetra-pong], + showing how to use Tetra's graphics and input APIs. [lonely-star]: https://17cupsofcoffee.itch.io/lonely-star [17cupsofcoffee]: https://twitter.com/17cupsofcoffee @@ -281,11 +494,14 @@ Tetra itself also received two small updates recently: ![High detail terrain chunk with PRR](akigi.png) -> Sampling a heightmap in the vertex shader and also computing the normal, tangent and bitangent vectors in the vertex shader. +^ _Sampling a heightmap in the vertex shader and also computing the normal, +tangent and bitangent vectors in the vertex shader._ [Akigi][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. +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: @@ -316,107 +532,12 @@ network play][designing_network_play]. [designing_network_play]: https://azriel.im/will/2020/02/29/designing-network-play/ [will_network_play]: will_network_play.png -### [Oxidator][oxidator] - -[![Gameplay demo: two giant tank armies clashing](oxidator-play.gif)][oxidator-video-play] - -^ _gameplay demo (35000 units)_ - -[Oxidator][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](oxidator-unit-editor.gif)][oxidator-video-unit-editor] - -^ _Demo of the unit editor_ - -[![Map editor demo: use pencil tool to instantly create a lake and mountains](oxidator-map-editor.gif)][oxidator-video-map-editor] - -^ _Demo of the map editor_ - -[oxidator]: https://github.com/Ruddle/oxidator -[@Ruddle]: https://github.com/Ruddle -[oxidator-video-play]: https://streamable.com/499j0 -[oxidator-video-unit-editor]: https://streamable.com/ywr44 -[oxidator-video-map-editor]: https://github.com/Ruddle/oxidator/blob/be4863e74/etc/map_editor.gif - -### [Univer City v1.0 and Open Source Release][univer-1-0-opensource] - -[![logo](univer-logo.jpg)][univer-steam] - -[UniverCity][univer-steam] 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][univer-1-0-opensource] -along with [releasing the game's sources under GPL-3][univer-source]. - -> This update _marks the end of development for now_ -> and adds in some basic workshop support. - -![Demo: builing a classroom](univer-city-demo.gif) - -> 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](https://reddit.com/r/rust/comments/f5fiii/univercity_open_source_release_university)_ - -[univer-1-0-opensource]: https://steamcommunity.com/gid/103582791461907043/announcements/detail/1694978169192631655 -[univer-steam]: https://store.steampowered.com/app/808160/UniverCity -[univer-source]: https://github.com/Thinkofname/UniverCity - -### [Dwarf World][dwarf-world] - -[![New site with links to Twitter, Discord, and Twich](dwarf-world.png)][dwarf-world] - -[Alexandru Ene] is working on a dwarf colony management game "Dwarf World". - -This month, the project got an official site: [dwarf.world][dwarf-world]. - -Also, check out development streams: -every Sunday at 19:30 PM GMT [on Twitch][dwarf-twitch]. - -[Alexandru Ene]: https://alexene.dev -[dwarf-world]: https://dwarf.world -[dwarf-twitch]: https://twitch.tv/nomad_pixel - ### [Way of Rhea's New Trailer][rhea-steam] [![logo](way-of-rhea.jpg)][rhea-steam] -[Way of Rhea][rhea-steam] is an upcoming puzzle platformer that takes place in a world -where you can only interact with objects that match your current color. +[Way of Rhea][rhea-steam] 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][rhea-steam]. @@ -446,7 +567,7 @@ WIP Box2D physics game prototype: were posted by [@logicsoup]. Some of the updates: -- 🌘 Physically based shading +- 🌘 Physically-based shading - 🕹 3D model loading and texturing for richer environments - 💦 Soil moisture content - 🌠 Alpha mipmapping @@ -456,84 +577,16 @@ Some of the updates: [garden-jan]: https://cyberplant.xyz/posts/january [garden-feb]: https://cyberplant.xyz/posts/february -### [Colony Genesis][colony-itch] - -![itch.io page: ASCII art logo with an ant, game features, video and screenshots](colony-genesis.png) - -[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][colony-itch]. - -[colony-itch]: https://nativesystems.itch.io/colony -[Native Systems]: https://nativesystems.rs - -### [Veloren][veloren] - -![Rolling mountain landscape](veloren1.png) - -> Rolling mountain landscape - -[Veloren][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: - -```text -- 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](veloren3.gif)](https://www.youtube.com/watch?v=1ldHQfxCT24) - -> 1 year of Veloren development. Click for the full video! - -You can read more about some specific topics: - -- [0.5 Release](https://veloren.net/devblog-53#0-5-release) -- [0.6 Intro Meeting](https://veloren.net/devblog-54#0-6-intro-meeting) -- [Settlements](https://veloren.net/devblog-54#settlements) -- [Mac Builds](https://veloren.net/devblog-55#the-mac-build-situation-by-angelonfira) -- [Achievements](https://veloren.net/devblog-55#achievement-implementation-by-thedip) -- [Persistence](https://veloren.net/devblog-56#persistence-by-angelonfira) - -![Hanging out](veloren2.png) - -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](https://veloren.net/devblog-53), -[#54](https://veloren.net/devblog-54), -[#55](https://veloren.net/devblog-55), -[#56](https://veloren.net/devblog-56). - -[veloren]: https://veloren.net - ### [Grumpy Visitors First Update. Winter Progress][grumpy_visitors] ![Magic missiles in Grumpy Visitors](grumpy_missiles.jpg) -Grumpy Visitors is a top-down 2D co-op action/arcade game highly inspired by Evil Invasion. It runs on Amethyst game engine. +Grumpy Visitors is a top-down 2D co-op action/arcade game +highly inspired by Evil Invasion. It runs on Amethyst game engine. + +This winter Grumpy Visitors received some updates +with the focus on graphics and UI: -This winter Grumpy Visitors received some updates with the focus on graphics and UI: - Repainting mage sprites with shaders - New missiles graphics - Monsters death animations @@ -547,7 +600,7 @@ Check them out in the [latest winter devlog][grumpy_visitors]. ![cities, planes and keys](china.png) -> Turn back planes to the port, by clicking right keys to the virus beat. +^ _Turn back planes to the port, by clicking right keys to the virus beat._ [Make China Great Again][china-great] ([source][china-great-src]) by [@PsichiX] is a GlobalGameJam game written using [Oxygengine]. @@ -639,23 +692,48 @@ about their "For the Quest" (working title) game project: [![Demonstration of interpolation](fyt-ggez.gif)][fyt-ggez] -[joetsoi] has written [a blog post][fyt-ggez], demonstrating how the concepts from the well-known '[Fix Your Timestep][fyt]' article can be applied when making games with Rust and GGEZ. +[joetsoi] has written [a blog post][fyt-ggez], demonstrating how the concepts +from the well-known '[Fix Your Timestep][fyt]' 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! +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! [joetsoi]: https://joetsoi.github.io [fyt-ggez]: https://joetsoi.github.io/fix-your-timestep-rust-ggez/ [fyt]: https://gafferongames.com/post/fix_your_timestep/ +### [This Month in RustSim #9 (Nov 2019 to Feb 2020)][rustsim-9] + +![Salva logo](logo_salva_full.svg) + +Main updates: + +> - New pressure resolution methods. +> - Viscosity, surface tension, and elasticity can now be simulated. +> - Ability to remove fluids/boundaries/collider couplings after their addition. +> - Ability to add particles to a fluid that has already been created. + +Watch a ["Salva 0.2: DFSPH, viscosity, surface tension, and elasticity"][rustsim-video] +demo video. + +[Read the full devlog here.][rustsim-9] + +_Discussions: +[/r/rust](https://reddit.com/r/rust/comments/fcyp7c/this_month_in_rustsim_9_november_february_2020)_ + +[rustsim-9]: https://rustsim.org/blog/2020/03/01/this-month-in-rustsim +[rustsim-video]: https://youtube.com/watch?v=NBoSEanWHE4 + ### savefile 0.6.1 -[savefile] is a serialization crate used to effortlessly serialize rust crates +[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. +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. +the savefile-derive crate produces a "`SaveFileError` not found" compiler error. For details, see the [github page][savefile-github] or the [savefile documentation]. @@ -687,6 +765,403 @@ For more details, please see the [`specs` changelog]. [specs]: https://crates.io/crates/specs [`specs` changelog]: https://github.com/amethyst/specs/blob/0.16.1/CHANGELOG.md#0161-2020-02-18 +### [Riven][riven] + +![Riot Games API logo: steampunk](riot-api.jpg) + +[riven] is a [Riot API][riot-api] library for Rust. + +> Riven handles rate limits and large requests with ease. +> Data structs and endpoints are automatically generated from the +> [Riot API Reference][riot-api-ref] ([Swagger][riot-swagger]). + +_Discussions: +[/r/rust](https://reddit.com/r/rust/comments/exj48k/riven_100_my_rust_lib_for_the_riot_games_league)_ + +[riven]: https://github.com/MingweiSamuel/Riven +[riot-api]: https://developer.riotgames.com/ +[riot-api-ref]: https://developer.riotgames.com/api-methods +[riot-swagger]: http://www.mingweisamuel.com/riotapi-schema/tool + +### [weasel] + +[weasel] by [@Trisfald] is a customizable battle system for turn-based games. + +- Simple way to define the combat's rules, + taking advantage of Rust's strong type system. +- Battle events are collected into a timeline to support save and restore, + replays, and more. +- Client/server architecture; all battle events are verified by the server. +- Minimal performance overhead. + +> The idea behind this crate is to provide a structured +> and safe framework to manage the game state. +> Users can create a battle and evolve it by applying events. +> Then, weasel takes care of keeping a historical timeline. +> It also help with serializing/deserializing save files +> or sharing and verifying events between clients and server. +> The game logic is defined through traits, which is nice because +> it can benefit from Rust's type system and compile time checks. + +Check out [examples][weasel-examples] to see how it works in practice. + +[weasel]: https://github.com/Trisfald/weasel +[weasel-examples]: https://github.com/Trisfald/weasel/tree/master/examples +[@Trisfald]: https://github.com/Trisfald + +### [Shipyard] v0.3 + +[Shipyard] is an ECS library built on top of sparse sets. + +Some of [the v0.3 updates][shipyard-v0-3-ann]: + +- There's now a [User guide][shipyard-guide] to explain what can be done + and how; +- No need to register components anymore, + storages are now automatically created when they are first accessed; +- !Send and !Sync components; +- Unique components; +- Components sorting; +- no_std support. + +[Shipyard]: https://crates.io/crates/shipyard +[shipyard-guide]: https://leudz.github.io/shipyard/book +[shipyard-v0-3-ann]: https://reddit.com/r/rust/comments/fbo8wf/shipyard_03_release + +### [image] v0.23 + +[image] crate provides basic imaging processing functions and methods +for converting to and from image formats. + +Check out [the release blog for 0.23][image-v0-23]! +It comes with improvements to error handling, +and the buffer and loading interfaces. + +[image]: https://github.com/image-rs/image +[image-v0-23]: https://blog.image-rs.org/2020/02/07/release-0.23.0.html + +### [superluminal-perf-rs] + +![Logo](superlumunal.png) + +[Superluminal][superluminal] is a next-generation CPU sampling profiler +for C/C++ on Windows +that has [recently got an official Rust support][superluminal-rust]. + +[![UI example](superluminal-app.png)](superluminal-app.png) + +------ + +Embark have recently open-sourced [superluminal-perf-rs] - +a small crate that integrates with Superluminal profiler on Windows. + +Example usage: + +```rust +superluminal_perf::begin_event("my-event"); +calc(); +superluminal_perf::end_event(); + +superluminal_perf::begin_event("my-event2"); +calc2(); +superluminal_perf::end_event(); +``` + +[superluminal]: https://superluminal.eu/ +[superluminal-perf-rs]: https://github.com/embarkStudios/superluminal-perf-rs +[superluminal-rust]: https://superluminal.eu/rust + +### Rust on [RG-300 Consoles][rg-300] + +[![Real-world demo of using Rust on RG-300](rg-300.jpeg)][rg-300-video] + +[@alexpdp7 shared their experience][rg-300-rust-ann] +of writing an interactive application in Rust +for the retro [RG-300][rg-300] console. + +> The process is complex for a lot of reasons: +> +> - Cross-compiling for MIPS is tough <...> +> - Graphics is done through the Linux framebuffer <...> +> - Sound uses old-style Linux OSS <...> +> +> It's a bit clunky, but it works! +> There are quite a few devices with very similar hardware +> this should work with. +> It should be possible to make simple games for such devices, +> which I find particularly motivating :) + +You can find a working example that does graphics, sound and controls +with some explanations at [alexpdp7/retrofw2-rust][retrofw2-rust]. + +[See it in action here.][rg-300-video] + +[rg-300-rust-ann]: https://reddit.com/r/rust_gamedev/comments/fabgof/wrote_a_rust_program_that_demonstrates_graphics +[rg-300]: https://retrogame300.com/products/retro-game-300 +[rg-300-video]: https://youtube.com/watch?v=Rtf8ZEVALjQ +[retrofw2-rust]: https://github.com/alexpdp7/retrofw2-rust + +### [crow] v0.3 + +[crow] is a pixel perfect 2D rendering engine based on OpenGL. +It is designed to be easy to use while still allowing +for nearly everything one might want while using pixel art. + +A showcase game is [being developed](https://github.com/lcnr/akari) with crow. + +![Akari WIP screenshot](crow-akari.png) + +[crow]: https://crates.io/crates/crow + +### miniquad: ["Rust 2D Engine 2020 Roadmap"][fedor-road] + +![mainloop async/await experiment in macroquad](miniquad-sample.png) + +^ _mainloop async/await experiment in macroquad_ + +[miniquad] by [@fedor_games] is a safe cross-platform rendering library +focused on portability and low-end platforms support. + +This month: + +- miniquad and related crates set up yearly goals: + ["Rust 2D Engine 2020 Roadmap"][fedor-road]; +- A first try on the higher-level engine design: [flappy bird.rs][macroquad-bird]; +- [miniquad was successfully built for Android][miniquad-android]. + +[miniquad]: https://github.com/not-fl3/miniquad +[@fedor_games]: https://twitter.com/fedor_games +[fedor-road]: https://patreon.com/posts/34230612 +[macroquad-bird]: https://github.com/not-fl3/macroquad/blob/126773535/examples/flappy_bird.rs +[miniquad-android]: https://twitter.com/fedor_games/status/1223602773532520448 + +### [luminance v0.39][luminance-v0-39-ann] + +[luminance] by [@phaazon] is a type-safe, type-level and stateless +graphics framework. + +This month [luminance v0.39 got released][luminance-v0-39-ann]. +Updates: + +- Remove the concept of layering in textures. + Textures’ layerings (i.e. either flat or arrayed) is now encoded directly + in the dimension of the texture. +- Add support for texture arrays. They can now be passed constructed + and passed as uniforms to shader programs. + +[@phaazon]: https://twitter.com/phaazon_ +[luminance]: https://github.com/phaazon/luminance-rs +[luminance-v0-39-ann]: https://reddit.com/r/rust/comments/fbe3l0/luminance039 + +### [glium] v0.26 + +[glium] is an elegant and safe OpenGL wrapper. + +It's no longer actively developed by its original author, +but maintenance is continued by the surrounding community. + +This month [glium v0.26 was released][glium-v0-26]: + +- Updated glutin to [version 0.23.0][glutin-v0-23]. +- Removal of some unsound code that rustc warns about. +- Report the precise shader stage in which a shader failed compilation. + +[glium]: https://github.com/glium/glium +[glium-v0-26]: https://github.com/glium/glium/blob/master/CHANGELOG.md#version-0260-2020-02-09 +[glutin-v0-23]: https://github.com/rust-windowing/glutin/blob/master/CHANGELOG.md#version-0230-2020-02-06 + +### [gfx] & [wgpu] + +![wgpu-rs logo](wgpu-logo.png) + +Here're some of the [gfx]/[wgpu] ecosystem February updates: + +- Check out a new ["Lear WGPU" tutorial][learn-wgpu]. + +- [@kvark] gave a "Building WebGPU with Rust" talk at FOSDEM. + [You can watch the recorded video here][kvark-talk]. + + [![A slide from the talk: "wgpu-rs project structure"](wgpu-talk.png)][kvark-talk] + +- [naga] is a new experimental shader translation library + for the needs of gfx-rs project and WebGPU. + It's meant to provide a safe and performant way + of converting to and from [SPIR-V][spir-v]. + +- The abovementioned [Oxidator][oxidator] RTS game is based on wgpu. + +- [nbodysim] is a realtime 3D N-Body-Simulation. + + ![Simple demo with two bodies](n-body-sim.gif) + +- [nannou] in an open-source creative-coding toolkit for Rust. + This month its graphics backend [was transitioned to wgpu][nannou-pr]. + + [![nannou demo](nannou.gif)][nannou-simple-draw] + +- [An extremely helpful `vertex_attr_array` macro was added to wgpu][wgpu-macro]. + +- After [the support for unstable WebIDL was added to wasm-bindgen][wasm-bindgen-pr] + the work on integrating web-sys into wgpu-rs has begun. + +[gfx]: https://github.com/gfx-rs/gfx +[wgpu]: https://github.com/gfx-rs/wgpu-rs +[wgpu-macro]: https://github.com/gfx-rs/wgpu-rs/pull/179 +[@kvark]: https://github.com/kvark +[kvark-talk]: https://fosdem.org/2020/schedule/event/rust_webgpu +[learn-wgpu]: https://sotrh.github.io/learn-wgpu +[nbodysim]: https://git.koesters.xyz/timo/nbodysim +[naga]: https://github.com/gfx-rs/naga +[spir-v]: https://en.wikipedia.org/wiki/Standard_Portable_Intermediate_Representation +[nannou]: https://github.com/nannou-org/nannou +[nannou-pr]: https://github.com/nannou-org/nannou/pull/452 +[nannou-simple-draw]: https://github.com/nannou-org/nannou/blob/9596fd31b/examples/simple_draw.rs +[wasm-bindgen-pr]: https://github.com/rustwasm/wasm-bindgen/pull/1997 + +### [tikan] + +[tikan] by [@siebencorgie] is a Rust/Vulkan based 3d engine that tries +to use high-resolution voxels to real-time ray-trace the final picture. + +This month a [new video was released][tikan-video] +to showcase new voxel renderer: + +[![youtube screenshot: glowing spheres](tikan-youtube.png)][tikan-video] + +[tikan]: https://gitlab.com/tendsinmende/tikan +[tikan-video]: https://youtu.be/98XdA3BpWZU +[@siebencorgie]: https://twitter.com/siebencorgie + +### [Patchwork] + +[Patchwork] is a convenient crate for drawing tiles from a tilesheet +using a 'SpriteBatch' with `ggez`. +It is an update to [the `Mosaic` crate by @Repnop][mosaic], +which is no longer maintained. + +[patchwork]: https://github.com/RedSquirrelsNut/patchwork +[mosaic]: https://github.com/repnop/mosaic + +### [KAS] GUI v0.3 + +![KAS widgets example](kas.png) + +[KAS], the tool**K**it **A**bstraction **S**ystem, is a general-purpose GUI toolkit. + +0.3 is a decent sized release, focussing primarily on drawing, themes and layouts. +Highlights include: + +- a new FlatTheme, +- many small visual improvements, +- access to medium-level and low-level drawing APIs for custom widgets, +- window size limits, +- and switchable themes and colour schemes. + +[KAS]: https://github.com/kas-gui/kas + +### [Pushrod][pushrod] v0.2.27: SDL2-based GUI + +![Layout example](pushrod-layout.png) + +[Pushrod][pushrod] by [@KenSuenobu] +is a Cross Platform UI Widget Library for Rust that uses SDL2 +and leans heavily towards the KISS principle. + +This month [0.2.27 was released][pushrod-0-2-27-ann]. +Some of the updates: + +- Improved documentation & examples; +- Tile Widget; +- Tab Bar Widget. + +[pushrod]: https://github.com/KenSuenobu/rust-pushrod +[@KenSuenobu]: https://github.com/KenSuenobu +[pushrod-0-2-27-ann]: https://reddit.com/r/rust/comments/f1fcya/pushrod_0227_sdl2based_gui + +### [Oxygengine][oxygengine] + +![Oxygengine logo](oxygengine-dark-logo.svg) + +This month [Oxygengine][oxygengine] got new version 0.7.0 with +[Visual Novel and Animation][oxygengine-vn-anim-ann] +modules that allows users to focus on making VN games easily, +with virtually no code needed to be written - +it is a groundbreaking start in developing a set of tools +for the professional game developers. + +> As few might notice, Oxygengine is starting to get more complex modules, +> there is a reason for that - this engine is made with one big goal in mind, +> which is: to became a tool used by professionals, +> giving easy way to make complex games easily, +> therefore the current milestone is about bringing a basic game editor +> with first game maker module along with blueprints-like visual scripting +> and animation tool - the most important tools for visual novel game designers! + +![Oxygengine Visual Novel Teaser](oxygengine-visual-novel-teaser.gif) + +You can find sources of the project that shows how to use these modules +in the [engine demo projects][oxygengine-vn-test-src]. + +Another thing that was shipped in last milestone was a module that allows +to make and run your game logic designed in Blueprint-like visual scripting. +Next milestone is focused on delivering a base for professional modular +game editor that will allow users to easily create a complex and animated +Visual Novel games using Visual Scripting - +game makers for another genres are currently in planning stage. + +[oxygengine]: https://github.com/PsichiX/Oxygengine +[oxygengine-vn-anim-ann]: https://reddit.com/r/rust_gamedev/comments/fd7kza/oxygengine_visual_novel_and_animation_modules_are +[oxygengine-vn-test-src]: https://github.com/PsichiX/Oxygengine/tree/master/demos/visual-novel-testbed + +### [bracket-lib (RLTK)][rltk_rs] & [Roguelike Tutorial][rl-book] + +![Different font makes the log easier to read](roguelike-tutorial.jpg) + +[The Roguelike Tutorial][rl-book] by [@blackfuture] +includes more than 70 chapters now and continues to grow! + +Some of February's updates: + +- C71: adds easy to use, colored, logging and an achievement counter system + to track your progress through the dungeon. +- C72: 2nd layer (VGA) for the log, refactors for batched draw calls. +- C73: Systems use Specs dispatch on native, and single-thread on WASM. + +[rl-book]: http://bfnightly.bracketproductions.com/rustbook +[@blackfuture]: https://patreon.com/blackfuture + +------ + +[bracket-lib][rltk_rs] (previously [rltk_rs]) by [@blackfuture] +is a Rust implementation of [C++ Roguelike Toolkit][rltk-cpp]. + +This month the project was renamed and split into many crates: + +> This is RLTK, renamed because it is increasingly finding +> usage outside of just Roguelikes. +> It's also been divided into a number of crates, +> to make it easy to pick-and-choose the features you need. +> +> - `rltk` crate wraps bracket-lib and re-exports +> in the `rltk::` and `rltk::prelude` namespace. +> This preserves compatibility with all existing RLTK projects. +> - `bracket-algorithm`-traits exposes the traits required +> for the various algorithm systems in other crates. +> - `bracket-color` is my RGB/HSV color management system. +> - `bracket-geometry` exposes various geometric primitives and helpers. +> Supports other crates. +> - `bracket-noise` is a port of Auburn's FastNoise to Rust. +> - `bracket-pathfinding` provides a high-performance +> A* (A-Star) pathing system, as well as Dijkstra maps. +> - `bracket-random` is a dice-oriented random number generator, +> including parsing of RPG-style dice strings such as 3d6+12. + +[Read the full announcement post here][bracket-lib-ann]. + +[rltk_rs]: https://github.com/thebracket/rltk_rs +[rltk-cpp]: https://github.com/thebracket/rltk +[bracket-lib-ann]: https://reddit.com/r/rust_gamedev/comments/fbdg7d/rltk_is_now_bracketlib + ### [Neovide][neovide] ![Neovide Animated Cursor Example](neovide-cursor.gif) @@ -700,6 +1175,16 @@ It uses vulkan and skia for rendering. +- [rust-gamedev/wg](https://github.com/rust-gamedev/wg): + - [#75 "Standardised API for sharing thread pools"](https://github.com/rust-gamedev/wg/issues/75); + - [#89 "Moving ecs_bench to GDWG"](https://github.com/rust-gamedev/wg/issues/89); + - [#90 "Rust on Consoles"](https://github.com/rust-gamedev/wg/issues/90); + - [#91 "Should the wg volunteer to maintain winapi?"](https://github.com/rust-gamedev/wg/issues/91); +- [rust-gamedev/arewegameyet](https://github.com/rust-gamedev/arewegameyet): + - [#100 "Categorise games"](https://github.com/rust-gamedev/arewegameyet/issues/100); + - [#252 "Split games and resources into categories"](https://github.com/rust-gamedev/arewegameyet/issues/252); + - [#261 "Make .rs domain primary?"](https://github.com/rust-gamedev/arewegameyet/issues/261); + ## Meeting Minutes @@ -743,6 +1228,28 @@ and highlight events from the past. --> Just an interesting Rust gamedev link from the past. :) +![A screenshot of the beginning of the game](not-cool.png) + +["It's Not Cool"][not-cool-itch] is a [LD42] turn-based strategy game +by [@Ratysz]. +It's based on the GGEZ game engine. + +> Assume role of the mayor of a small coastal city, caught +> in the middle of hilariously rapid global warming spurt. +> +> Build a freezer for the polar bears! + +[The source code can be found here][not-cool-src]. + +_Discussions: +[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/977dpc/my_ludum_dare_42_jam_entry_is_pure_rust), +[/r/rust](https://reddit.com/r/rust/comments/977g2t/my_ludum_dare_42_jam_entry_is_pure_rust)_ + +[not-cool-itch]: https://ratys.itch.io/its-not-cool +[not-cool-src]: https://github.com/Ratysz/ludumdare42 +[@Ratysz]: https://github.com/Ratysz +[LD42]: https://en.wikipedia.org/wiki/Ludum_Dare + ------ That's all news for today, thanks for reading! @@ -750,12 +1257,9 @@ That's all news for today, thanks for reading! Subscribe to [@rust_gamedev on Twitter][@rust_gamedev] or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news! - +[/r/rust](https://reddit.com/r/rust/comments/fe03sb/this_month_in_rust_gamedev_7_february_2020), +[twitter](https://twitter.com/rust_gamedev/status/1235645370350227456). [/r/rust_gamedev]: https://reddit.com/r/rust_gamedev [@rust_gamedev]: https://twitter.com/rust_gamedev diff --git a/content/posts/newsletter-007/kas.png b/content/posts/newsletter-007/kas.png new file mode 100644 index 000000000..66354901f Binary files /dev/null and b/content/posts/newsletter-007/kas.png differ diff --git a/content/posts/newsletter-007/logo_salva_full.svg b/content/posts/newsletter-007/logo_salva_full.svg new file mode 100644 index 000000000..fb342b28a --- /dev/null +++ b/content/posts/newsletter-007/logo_salva_full.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/posts/newsletter-007/miniquad-sample.png b/content/posts/newsletter-007/miniquad-sample.png new file mode 100644 index 000000000..24dacd9f1 Binary files /dev/null and b/content/posts/newsletter-007/miniquad-sample.png differ diff --git a/content/posts/newsletter-007/n-body-sim.gif b/content/posts/newsletter-007/n-body-sim.gif new file mode 100644 index 000000000..2c9750278 Binary files /dev/null and b/content/posts/newsletter-007/n-body-sim.gif differ diff --git a/content/posts/newsletter-007/nannou.gif b/content/posts/newsletter-007/nannou.gif new file mode 100644 index 000000000..789f55531 Binary files /dev/null and b/content/posts/newsletter-007/nannou.gif differ diff --git a/content/posts/newsletter-007/not-cool.png b/content/posts/newsletter-007/not-cool.png new file mode 100644 index 000000000..540a483c3 Binary files /dev/null and b/content/posts/newsletter-007/not-cool.png differ diff --git a/content/posts/newsletter-007/oxygengine-dark-logo.svg b/content/posts/newsletter-007/oxygengine-dark-logo.svg new file mode 100644 index 000000000..eaaae8e0d --- /dev/null +++ b/content/posts/newsletter-007/oxygengine-dark-logo.svg @@ -0,0 +1,26 @@ + + + + + +oxygen-core-dark + + + + + + + + + + + + + + + + + + + + diff --git a/content/posts/newsletter-007/oxygengine-visual-novel-teaser.gif b/content/posts/newsletter-007/oxygengine-visual-novel-teaser.gif new file mode 100644 index 000000000..f5f285638 Binary files /dev/null and b/content/posts/newsletter-007/oxygengine-visual-novel-teaser.gif differ diff --git a/content/posts/newsletter-007/pushrod-layout.png b/content/posts/newsletter-007/pushrod-layout.png new file mode 100644 index 000000000..678658149 Binary files /dev/null and b/content/posts/newsletter-007/pushrod-layout.png differ diff --git a/content/posts/newsletter-007/rg-300.jpeg b/content/posts/newsletter-007/rg-300.jpeg new file mode 100644 index 000000000..c3161704c Binary files /dev/null and b/content/posts/newsletter-007/rg-300.jpeg differ diff --git a/content/posts/newsletter-007/riot-api.jpg b/content/posts/newsletter-007/riot-api.jpg new file mode 100644 index 000000000..bf83a16b0 Binary files /dev/null and b/content/posts/newsletter-007/riot-api.jpg differ diff --git a/content/posts/newsletter-007/roguelike-tutorial.jpg b/content/posts/newsletter-007/roguelike-tutorial.jpg new file mode 100644 index 000000000..2280cc75f Binary files /dev/null and b/content/posts/newsletter-007/roguelike-tutorial.jpg differ diff --git a/content/posts/newsletter-007/superluminal-app.png b/content/posts/newsletter-007/superluminal-app.png new file mode 100644 index 000000000..3032f6d5a Binary files /dev/null and b/content/posts/newsletter-007/superluminal-app.png differ diff --git a/content/posts/newsletter-007/superlumunal.png b/content/posts/newsletter-007/superlumunal.png new file mode 100644 index 000000000..f2ed1fbeb Binary files /dev/null and b/content/posts/newsletter-007/superlumunal.png differ diff --git a/content/posts/newsletter-007/tikan-youtube.png b/content/posts/newsletter-007/tikan-youtube.png new file mode 100644 index 000000000..0c584176d Binary files /dev/null and b/content/posts/newsletter-007/tikan-youtube.png differ diff --git a/content/posts/newsletter-007/veloren3.gif b/content/posts/newsletter-007/veloren3.gif index 5e2b825f2..74e68a19b 100644 Binary files a/content/posts/newsletter-007/veloren3.gif and b/content/posts/newsletter-007/veloren3.gif differ diff --git a/content/posts/newsletter-007/wgpu-logo.png b/content/posts/newsletter-007/wgpu-logo.png new file mode 100644 index 000000000..baa93c525 Binary files /dev/null and b/content/posts/newsletter-007/wgpu-logo.png differ diff --git a/content/posts/newsletter-007/wgpu-talk.png b/content/posts/newsletter-007/wgpu-talk.png new file mode 100644 index 000000000..5374bb5f4 Binary files /dev/null and b/content/posts/newsletter-007/wgpu-talk.png differ diff --git a/content/posts/newsletter-008/akigi.png b/content/posts/newsletter-008/akigi.png new file mode 100644 index 000000000..fb7a73e53 Binary files /dev/null and b/content/posts/newsletter-008/akigi.png differ diff --git a/content/posts/newsletter-008/amethyst-logo.png b/content/posts/newsletter-008/amethyst-logo.png new file mode 100644 index 000000000..6d7116659 Binary files /dev/null and b/content/posts/newsletter-008/amethyst-logo.png differ diff --git a/content/posts/newsletter-008/ascension.gif b/content/posts/newsletter-008/ascension.gif new file mode 100644 index 000000000..64dde6f39 Binary files /dev/null and b/content/posts/newsletter-008/ascension.gif differ diff --git a/content/posts/newsletter-008/colony.png b/content/posts/newsletter-008/colony.png new file mode 100644 index 000000000..5bc94a75c Binary files /dev/null and b/content/posts/newsletter-008/colony.png differ diff --git a/content/posts/newsletter-008/const-tweaker.gif b/content/posts/newsletter-008/const-tweaker.gif new file mode 100644 index 000000000..4d385fa5c Binary files /dev/null and b/content/posts/newsletter-008/const-tweaker.gif differ diff --git a/content/posts/newsletter-008/cp437-demo.gif b/content/posts/newsletter-008/cp437-demo.gif new file mode 100644 index 000000000..cc3df8ee3 Binary files /dev/null and b/content/posts/newsletter-008/cp437-demo.gif differ diff --git a/content/posts/newsletter-008/dynamaze.png b/content/posts/newsletter-008/dynamaze.png new file mode 100644 index 000000000..3f05e8fe2 Binary files /dev/null and b/content/posts/newsletter-008/dynamaze.png differ diff --git a/content/posts/newsletter-008/forthequest.jpg b/content/posts/newsletter-008/forthequest.jpg new file mode 100644 index 000000000..0c2efe4f2 Binary files /dev/null and b/content/posts/newsletter-008/forthequest.jpg differ diff --git a/content/posts/newsletter-008/garden.gif b/content/posts/newsletter-008/garden.gif new file mode 100644 index 000000000..c645bec65 Binary files /dev/null and b/content/posts/newsletter-008/garden.gif differ diff --git a/content/posts/newsletter-008/helix-repair.png b/content/posts/newsletter-008/helix-repair.png new file mode 100644 index 000000000..65463e569 Binary files /dev/null and b/content/posts/newsletter-008/helix-repair.png differ diff --git a/content/posts/newsletter-008/index.md b/content/posts/newsletter-008/index.md new file mode 100644 index 000000000..04571b02c --- /dev/null +++ b/content/posts/newsletter-008/index.md @@ -0,0 +1,790 @@ ++++ +title = "This Month in Rust GameDev #8 - March 2020" +date = 2020-04-01 +draft = true ++++ + + + +Welcome to the eighth 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!][join] + +Want something mentioned in the next newsletter? +[Send us a pull request][pr]. +Feel free to send PRs about your own projects! + +[Rust]: https://rust-lang.org +[join]: https://github.com/rust-gamedev/wg#join-the-fun +[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io + + + +## [London _Virtual_ Talks - April 6 (GameDev Special)][ldn] + +![rust gamedev](ldn.png) + +> [Rust London][ldn-twitter] is happy to announce the April Game Dev Special. +> The purpose is to shine a light on all the amazing thing being done +> in the realm of Game Development using the Rust Programming Language, +> we will have 3 speakers demoing their projects and sharing their experiences. +> +> Speakers: Alex Ene, Olivia Ifirim, Phillipe Vinchon. + +[Here's a link for the livestream via Youtube][ldn-video], +it'll go live at 18:00 UTC. + +[ldn]: https://meetup.com/Rust-London-User-Group/events/269357779 +[ldn-twitter]: https://twitter.com/RustLdnUsers +[ldn-video]: https://youtube.com/channel/UCi7KGrwkwWuFQaTZW72Jzug + +## Spreading the Word + +If you're working on a project that heavily relies on some engine/framework, +consider informing its authors about your work: +as the community is growing it happens more and more that +frameworks/engines authors just don't know about users of their libs +(this note was requested by Icefox in relation to [GGEZ projects][ggez-projects]). + +[ggez-projects]: https://github.com/ggez/ggez/blob/master/docs/Projects.md + +## Game Updates + +### [DynaMaze][dynamaze] + +![DynaMaze promotional image](dynamaze.png) + +[DynaMaze][dynamaze] is an [open source][dynamaze-source] multiplayer +puzzle/strategy game written in Rust and compiled to WebAssembly, made by +[@boringcactus][]. Adjust the maze to build a path to your target and +keep the other players from getting to theirs. + +[dynamaze]: https://boringcactus.itch.io/dynamaze +[dynamaze-source]: https://github.com/boringcactus/dynamaze +[@boringcactus]: https://github.com/boringcactus + +### [Slime99][slime99] + +![Slime99](slime99.png) + +[Slime99][slime99] by [@stevebob][] is an [open source][slime99-source] +roguelike made for the [7 Day Roguelike 2020][7drl-2020] game jam. + +A traditional roguelike where the outcomes of attacking and defending are +pre-determined and visible. Gameplay revolves around fighting slimes, adding to +your sequence of combat outcomes, and using abilities to modify the order in +which combat outcomes occur. It’s set in a neon sewer! + +[slime99]: https://gridbugs.itch.io/slime99 +[slime99-source]: https://github.com/stevebob/slime99 +[@stevebob]: https://github.com/stevebob +[7drl-2020]: https://itch.io/jam/7drl-challenge-2020 + +### [Will][will] + +![Will main menu](will_main.png) + +[Will][will] is a 2.5D moddable action / adventure game. + +Highlights of [this month's update][will_blogpost] include: + +- Going [open source][will_source] +- Network play (early version) + +[will]: https://azriel.im/will +[will_blogpost]: https://azriel.im/will/2020/03/13/join-me/ +[will_source]: https://github.com/azriel91/autexousious + +### [Tennis Academy: Dash][tennis-academy-dash] + +![gameplay sample](tennis.gif) + +[@oliviff] released [Tennis Academy: Dash][tennis-academy-dash] +[v0.1.7][tennis-academy-v0-1-7]: + +- 👟 blue players are back +- 🎆 improved particle effects +- 🖼️ a few art fixes + +Also, [@oliviff continues to work on their Rust gamedev tutorial][oliviff-tut]. + +[@oliviff]: https://twitter.com/oliviff +[tennis-academy-dash]: https://iolivia.itch.io/tennis-academy-dash +[tennis-academy-v0-1-7]: https://twitter.com/oliviff/status/1243972292750819329 +[oliviff-tut]: https://twitter.com/oliviff/status/1238978081429299201 + +### For The Quest + +![For The Quest screenshot](forthequest.jpg) + +For The Quest is the working title for a game in early development by +[@seratonik][]. Written entirely in Rust and compiled to WebAssembly, +For The Quest is destined to become a MMORPG set in a post-apocalyptic +Earth where your goal is to band together into like-minded factions to +not only survive in this new world, but to unearth the cause of humanity's +downfall. + +For The Quest is currently undergoing engine development with a focus on +running smoothly in modern browsers using WebGL 2.0 before moving onto +native desktop ports. + +New developments in March: + +- Collision and Activation-Based Triggerable Entities (Able to load new areas) +- New overworld "sky light" directional lighting shaders in addition to + omni-directional point lighting for underground areas +- New Ice Cavern models and textures, establishing a hybrid pixel-art in 3D + style - mapping tool has been expanded to allow for rotating "tiles" to + build extensive environments in a simple text format for rapid prototyping +- Specular maps added to the engine and world for that extra shine +- Started refactoring the rendering pipeline to allow for screen-space effects + such as reflections and ambient occlusion + +Follow [@seratonik][] on Twitter for updates. + +[@seratonik]: https://twitter.com/seratonik + +### [Urban Gift][urban-gift]: Teaser Video + +[Urban Gift][urban-gift] is part detective game and part superhero simulator. +This month a teaser video was released: + +[![youtube preview](urban-gift-video.png)][urban-gift-video] + +Follow development updates on [Twitter][urban-gift]. + +[urban-gift]: https://twitter.com/UrbanGiftGame +[urban-gift-video]: https://youtu.be/1dMt8e9Dx3A + +### [Colony Genesis][colony-itch] + +![ASCII art logo with an ant](colony.png) + +[Native Systems] is working on "Colony Genesis" - +an ant colony sandbox game with ASCII graphics. + +This month v0.1.1 and v0.1.2 versions were released. Some of the updates: + +- Add color palette options to Settings including a modified palette for red-green color blindness +- Add lifecycles to more ant castes +- Nurse ants give food to larvae +- Nurse ants on the surface will return to the colony +- Fix for foragers getting stuck in dig state at colony entrance +- Updated pathfinding + +[colony-itch]: https://nativesystems.itch.io/colony +[Native Systems]: https://nativesystems.rs + +### [Ascension 2][ascension] + +![gameplay samble: moving platforms, projectiles, and changing gravity](ascension.gif) + +[Ascension 2][ascension] by [@outkine] is a simple gravity-based platformer. + +> Hop your way through bite sized levels while dodging spikes and turrets. +> Then, change the direction of gravity, and do it all again! + +[The source code is aviable here][ascension-src]. + +[ascension]: https://outkine.itch.io/ascension-2 +[ascension-src]: https://github.com/outkine/ascension-rust +[@outkine]: https://github.com/outkine + +### pGLOWrpg + +![Improved temperature map generation](pglowrpg.png) + +[@Roal_Yr] tweeted a bunch of updates about their "pGLOWrpg" project: + +- [Rivers erosion](https://twitter.com/Roal_Yr/status/1236003795265519616): + this will ensure no rivers flow upwards and the canyons + through the landmass are more smooth. +- [River segmentation and width increment](https://twitter.com/Roal_Yr/status/1242824451449856004). +- [Improved the temperature map generation](https://twitter.com/Roal_Yr/status/1236268367968964610). +- [Improved topography map rendering](https://twitter.com/Roal_Yr/status/1236366942094622721). + +[@Roal_Yr]: https://twitter.com/Roal_Yr + +### [Akigi][akigi] + +![game screenshot](akigi.png) + +> [Akigi][akigi] is a multiplayer online world where most believe that humans are inferior. + +Some of March's updates: + +- [Migration to specs is finished](https://devjournal.akigi.com/march-2020/058-2020-03-15.html). +- [Asset compilation rewrite](https://devjournal.akigi.com/march-2020/058-2020-03-15.html#asset-compilation-rewrite). +- [Deploying process update](https://devjournal.akigi.com/march-2020/059-2020-03-22.html). +- [Preparations for the initial alpha release is being done](https://devjournal.akigi.com/march-2020/060-2020-03-29.html). + +Full devlogs: +[#056](https://devjournal.akigi.com/march-2020/056-2020-03-01.html), +[#057](https://devjournal.akigi.com/march-2020/057-2020-03-08.html), +[#058](https://devjournal.akigi.com/march-2020/058-2020-03-15.html), +[#059](https://devjournal.akigi.com/march-2020/059-2020-03-22.html), +[#060](https://devjournal.akigi.com/march-2020/060-2020-03-29.html), + +[akigi]: https://akigi.com + +### [Sphere Game][sphere] + +![game screenshot: spheres!](sphere.png) + +In [Sphere Game][sphere] by [Coffé Junk Studio][coffe] +you control a sphere in a bowl-shaped 2D space: + +> Your goal is to hit the other spheres as hard as possible +> to shatter them into pieces! +> But take care; if you get hit too hard too often by other spheres, +> you will be smashed yourself! +> Avoiding them is challenging as the bent space keeps dragging you to the center. +> Can you destroy everything around you until you are the only one left? + +The game is a test for the studio's "Sphere Engine" engine +that is being implemented using Rust and Vulkan. + +[sphere]: https://coffejunkstudio.itch.io/spheregame +[coffe]: https://twitter.com/CoffeJunkStudio + +### [Helix Repair][helix] + +![game screenshot: DNA](helix-repair.png) + +[Helix Repair][helix] is another game by [Coffé Junk Studio][coffe] +written using the same engine. +Your task is to repair a broken DNA sequence +by replacing wrong nucleobases with the right ones. +You have 20 seconds: how many nucleobases can you repair with in that time? + +The game was developend within one weekend during +the Global Game Jam 2020, whose theme was "repair". + +[helix]: https://coffejunkstudio.itch.io/helix-repair + +### [Garden]: March Devlog + +[![demo preview](garden.gif)][garden-video] + +[Garden][garden] is an upcoming game centered around growing realistic plants. + +[March][garden-devlog] devlogs were posted. +Some of the updates: + +- Splashing sweat symbol water diffusion in the new soil; +- Herb improved leaf translucency; +- Joystickcollision detection, player movement; +- Artist palette debug tool for visualizing the forces + acting upon a game object and its other vectors. + +[garden]: https://epcc.itch.io/garden +[garden-devlog]: https://cyberplant.xyz/posts/march +[garden-video]: https://twitter.com/logicsoup/status/1246774418233348096 + +### [Zemeroth][zemeroth] + +![new icons and ability descriptions](zemeroth.jpeg) + +[Zemeroth][zemeroth] by [@ozkriff] is a minimalistic 2D turn-based tactical game. +Some of this month's updates: + +- [Some of the text buttons were replaced by icons][zemeroth-icons]. +- Ability descriptions. +- Popup screens and exit confirmation dialogs. +- New `zgui` widgets: ColoredRect, LayersLayout. +- Inactive buttons are either hidden or grayed-out now. +- The project [fully switched to `good-web-game`][zemeroth-gwg] + as the first step of migration to [miniquad]. + +[zemeroth]: https://github.com/ozkriff/zemeroth +[@ozkriff]: https://twitter.com/ozkriff +[miniquad]: https://github.com/not-fl3/miniquad +[zemeroth-icons]: https://twitter.com/ozkriff/status/1241718003470917635 +[zemeroth-gwg]: https://twitter.com/ozkriff/status/1244960610296696834 + +## Library & Tooling Updates + +### [bracket-lib] + +![lighing demo](cp437-demo.gif) + +[bracket-lib] (previously `rltk_rs`) by [@blackfuture] +is a Rust implementation of [C++ Roguelike Toolkit][rltk-cpp]. + +Some of this month's updates: + +- Input API. +- `bracket-color` now supports pallets and RGBA. +- The graphical (OpenGL, WASM, Amethyst) render targets now support alpha channel. +- Arbitrary clipping window on any layer. +- New `VirtualConsole` system. +- New functions for right-justifying printed text. +- Fonts and dimensions in a terminal layers can now be switched at run-time. +- New layer type that lets you specify gkyph position as a float. +- New sprite layer. +- Updated examples. + +[bracket-lib]: https://github.com/thebracket/bracket-lib +[@blackfuture]: https://patreon.com/blackfuture +[rltk-cpp]: https://github.com/thebracket/rltk + +### [This month in rustsim #10 (March 2020)][rustsim-10] + +![Simba logo](rustsim-simba.svg) + +Main updates: + +- [simba] - a crate that defines a set of traits for writing code + that can be generic with regard to the number + of lanes of the input numeric value. + Those traits are implemented by f32, u32, i16, bool + as well as SIMD types like f32x4, u32x8, i16x2, etc. +- benchmarks: + ["SIMD Array-of-Structures-of-Arrays in nalgebra and comparison with ultraviolet"][aosoa]. +- [alga] abstract algebra crate is switced to passive maintenance mode. + +[rustsim-10]: https://rustsim.org/blog/2020/04/01/this-month-in-rustsim +[simba]: https://crates.io/crates/simba +[alga]: https://github.com/rustsim/alga +[aosoa]: https://rustsim.org/blog/2020/03/23/simd-aosoa-in-nalgebra + +### gfx-rs and wgpu news + +[gfx-hal-0.5](https://github.com/gfx-rs/gfx/) was released! +Improvements done in March: + +- Debug markers. + Users are now able to debug-annotate parts of the rendered frame, + so that inspecting it in a GPU debugger is more enjoyable. +- The generic range parameters are removed in favor of simple structs. + This is a move towards simpler low-level API. +- Physical device features for NDC Y-flip and sampler mirror clamp are added. +- Physical device performance hints are introduced. + The first hint is for "base vertex/instance" support. +- `SmallVec` is removed from the API, it's reshaped + to avoid any heap allocations. + Previously, it had to touch the heap on multiple descriptor sets + or command buffers. +- DX12 got true support for read-only storage bindings. + This is one of the opt-in derivations from Vulkan that allow to better map + users logic to non-Vulkan backends, also used by WebGPU. +- Last but not the least, @zicklag + [has been fighting](https://github.com/gfx-rs/gfx/pull/3151) + with the OpenGL backend to align its API with the rest of the crowd, + armed with [surfman](https://github.com/pcwalton/surfman). + The fight is reading conclusion, and we are crossing fingers + to add OpenGL support to `wgpu-rs` as it lands. + +[wgpu](https://github.com/gfx-rs/wgpu) and +[wgpu-rs](https://github.com/gfx-rs/wgpu-rs) changes in March: + +- @grovesNL reached an epic milestone in the Web target + by showing the [first triangle][wgpu-web-triangle]. + Users will soon be able to seamlessly target the web + with their existing `wgpu-rs` applications. 🚀 +- `wgpu-types` crate is created to share types between the Web target + and the native one. +- @lachlansneff improved the _async_ story quite a bit, + we also converted more methods to be asynchronous. +- Debug labels support. +- Id management story for browsers with a GPU process + has been completely redesigned and now working well. +- All the objects are properly destroyed and GPU tracked if needed. +- Ability to provide a `Surface` so that the selected adapter can present to it. +- New "mailbox" present mode. + +Satellite projects: + +- [naga] - the new in-house shader translator has reached the milestone + of successfully loading a WGSL [boids example] + and generating a valid Metal source for it. 🎉 +- [metal-rs](https://github.com/gfx-rs/metal-rs) + has got a lot of contribution by @adamnemecek. + Indirect command encoding is particularly exciting! +- [gfx-extras](https://github.com/gfx-rs/gfx-extras) is + a new library that is forked from rendy-memory/descriptor. +- [gfx-ocean](https://github.com/gfx-rs/gfx-ocean) was moved + to gfx-rs organization and updated to gfx-hal-0.5. +- [gfx-portability](https://github.com/gfx-rs/portability) was also updated. + +[wgpu-web-triangle]: https://github.com/gfx-rs/wgpu-rs/pull/193#issuecomment-599156540 +[naga]: https://github.com/gfx-rs/naga +[boids example]: https://github.com/gfx-rs/naga/blob/thda1f6a4/test-data/boids.wgsl + +### [miniquad] + +![miniquad android](miniquad.gif) + +[miniquad] by [@fedor_games] is a safe cross-platform rendering library +focused on portability and low-end platforms support. +Some of this month's updates: + +- example project by @PonasKovas, + illustrating android and web platform dependent configuration: [mandelbrot]. +- first prototype for embedded debug frame introspection: [introspection]. + +[mandelbrot]: https://github.com/PonasKovas/miniquad-mandelbrot +[introspection]: https://twitter.com/fedor_games/status/1241616794114232321 +[miniquad]: https://github.com/not-fl3/miniquad +[@fedor_games]: https://twitter.com/fedor_games + +### [Nannou v0.13][nannou-post] + +![Daily Sketch 0114 by Mactuitui](nannou.png) + +^ _Daily Sketch 0114 by Mactuitui_ + +[Nannou][nannou] is a creative coding framework that aims to make it easy +for artists to express themselves with simple, fast, reliable code. + +This month [Nannou v0.13 was released][nannou-post]. +Some of the updates: + +- Migration to wgpu-rs. +- Nicer native macOS experience. +- Capturing Frames & Textures. + +Also check out lots of cool sketches from the community: +[\#nannou][nannou-twitter] tag on Twitter. + +[nannou]: https://nannou.cc +[nannou-post]: https://nannou.cc/posts/nannou_v0.13 +[nannou-twitter]: https://twitter.com/search?q=%23nannou&src=typed_query + +### [Quest Engine Part 2: Deploying a Rust App On Android][quest-part-2] + +![Oculus Quest](quest.jpg) + +The [second part][quest-part-2] of Nikita Krupitskas' +[blog series][quest-part-1] on developing a game engine for the Oculus Quest +has been posted. + +This part of the series describes how a simple Rust project can be built +for Android - useful even if you're not targeting the Oculus hardware! + +[quest-part-1]: https://krupitskas.github.io/posts/quest-dev-part-1/ +[quest-part-2]: https://krupitskas.github.io/posts/quest-dev-part-2/ + +### [const-tweaker] + +![const-tweaker UI](const-tweaker.gif) + +Thomas Versteeg has released a new crate called `const-tweaker`, which provides +a web UI that can be used to tweak `const` variables in a running application. +This can be used as a simpler alternative to embedded scripting languages or +hot-reloading in your games. + +_Discussions: [/r/rust](https://www.reddit.com/r/rust_gamedev/comments/fl7593/announcing_consttweaker_change_your_constants/)_ + +[const-tweaker]: https://github.com/tversteeg/const-tweaker + +### [assets_manager] + +a1phyr has created a crate called `assets_manager`, which provides a convienient way +to load and cache external resources. It abstracts over the filesystem logic, and +provides a variety of built-in loaders for common Serde formats (e.g. TOML, JSON). +Hot-reloading support is also planned in the future. + +_Discussions: [/r/rust](https://www.reddit.com/r/rust_gamedev/comments/foywc6/announcing_assets_manager_conveniently_load_store/)_ + +[assets_manager]: https://github.com/a1phyr/assets_manager + +### [netstack] v0.3.0 + +[netstack] is a batteries included networking crate for games. Requiring an +exchange of a secret and connection tokens. At the moment, UDP transport, +connection management, packet signaling, and packet acknowledgement are +features already implemented. Examples for getting started are provided +on the [crates.io page](netstack). + +Version 0.3.0 adds basic monitoring functionality along with traits `ClientMonitor` and +`ServerMonitor`. A work-in-progress prometheus exporter has also been added in this version. + +Issues and contibutions can be made to [Netstack's github repository](netstack-github). +Work in progress documentation is available on [Netstack's docs.rs](netstack-docs). + +[netstack]: https://crates.io/crates/netstack/0.3.0 +[netstack-github]: https://github.com/Vengarioth/netstack +[netstack-docs]: https://docs.rs/netstack/0.3.0/netstack/ + +### [three-d] v0.1 + +[three-d] is a renderer which targets both desktop (OpenGL) and web +(WebAssembly + WebGL2) which makes it possible to develop a 3D application on +desktop and easily deploy it on web. + +This month [three-d v0.1][three-d-v0-1] was released. +Main features: + +- Thin and low-level graphics abstraction layer which maps one-to-one with the + OpenGL/WebGL2 graphics APIs. +- Medium-level modular abstractions of common graphics concepts. +- Deferred renderer with high-level components. +- Default windows for easy setup. + +It is possible to build your own rendering features from low- or medium-level +components and combine with other high-level features, so you can already now +make some cool stuff. See for example these [examples][three-d-examples]. + +![Lighting example](three-d-lighting.png) + +![Spider example](three-d-spider.png) + +[three-d]: https://github.com/asny/three-d +[three-d-examples]: https://asny.github.io/three-d/ +[three-d-v0-1]: https://crates.io/crates/three-d + +### This Month in Mun + +[![Mun logo](mun-logo.png)][Mun] + +[Mun] is a scripting language for gamedev focused on quick iteration times +that is written in Rust. + +The Mun Team [announced][mun-february] that they have obtained a $15k grant +as part of the [MOSS Mission Partners][moss] track, to further develop hot +reloadable data structures. + +Their [March updates][mun-march] include: + +- marshalling of value structs; +- extern functions; +- garbage collector (defaults to mark&sweep); +- performance benchmarks; +- bugfixes and improved test coverage. + +[Mun]: https://mun-lang.org +[moss]: https://www.mozilla.org/en-US/moss/mission-partners +[mun-february]: https://mun-lang.org/blog/2020/03/10/this-month-february +[mun-march]: https://mun-lang.org/blog/2020/04/02/this-month-march + +### [Amethyst][amethyst] + +[![Amethyst logo](amethyst-logo.png)][amethyst] + +- [Ametyst 0.15.0 was released][amethyst_release]: + + - Better panic messages on `stable` Rust. + - Support for setting log levels from configuration. + - Text field rendering corrections. + - Target multiple overlapping UI entities with events. + +- [`specs`] is the underlying ECS that powers Amethyst but there's an +[ongoing prospect][amethyst_legion_rfc] of moving to [`legion`]. + [@csherratt] wrote an [excellent post][amethyst_specs_legion] comparing both + libraries. Also an [in-depth discussion][amethyst_ecs_discussion] about +archetypal and grouped ECS design took place on the forum. + + ![specs vs amethyst layout](specs-vs-legion.png) + +- [Atelier][amethyst_atelier] is an asset management and processing + framework for games. + Coupled with [`legion`], [@aclysma] and [@kabergstrom] built an + [editor prototype][amethyst_editor_prototype] demonstrating the following +capabilities: + + - Prefab loading, saving, and hot-reloading + - Entity creation / deletion + - Component addition / removal + - Undo and Redo + +Check out the [demo video][amethyst_editor_youtube] and +[forum discussion][amethyst_editor_forum]. + +- There is an [ongoing effort to bring WASM support to Amethyst][amethyst_wasm_effort]. + Check out the [contribution guide][amethyst_wasm_contribution_guide] +and [project board][amethyst_wasm_project_board] for current status. + +- [@ToferC] reviewed their experience using Amethyst to build a space combat game, + [Paladin][amethyst_review_paladin]. Check out the + [review on youtube][amethyst_review_youtube]. + +[@aclysma]: https://github.com/aclysma +[@csherratt]: https://github.com/csherratt +[@kabergstrom]: https://github.com/kabergstrom +[@ToferC]: https://github.com/ToferC +[`legion`]: https://github.com/TomGillen/legion +[`specs`]: https://github.com/amethyst/specs +[amethyst]: https://amethyst.rs +[amethyst_atelier]: https://github.com/amethyst/atelier-assets +[amethyst_ecs_discussion]: https://community.amethyst.rs/t/archetypal-vs-grouped-ecs-architectures-my-take/1344 +[amethyst_editor_forum]: https://community.amethyst.rs/t/atelier-legion-integration-demo/1352 +[amethyst_editor_prototype]: https://github.com/aclysma/atelier-legion-demo +[amethyst_editor_youtube]: https://youtube.com/watch?v=9Vwi29RuQBE +[amethyst_legion_rfc]: https://github.com/amethyst/rfcs/issues/22 +[amethyst_release]: https://amethyst.rs/posts/release-0-15-0 +[amethyst_review_paladin]: https://github.com/ToferC/paladin +[amethyst_review_youtube]: https://youtube.com/watch?v=avW2Nr6ak-o +[amethyst_specs_legion]: https://csherratt.github.io/blog/posts/specs-and-legion/ +[amethyst_wasm_contribution_guide]: https://github.com/amethyst/amethyst/tree/wasm/docs/CONTRIBUTING_WASM.md +[amethyst_wasm_effort]: https://community.amethyst.rs/t/wasm-effort/1336 +[amethyst_wasm_project_board]: https://github.com/amethyst/amethyst/projects/20 + +### [ash] v0.30 + +`ash` is lightweight wrapper around Vulkan. + +The latest version comes with support for Vulkan 1.2 and following extensions: +- VK_KHR_timeline_semaphore +- VK_KHR_ray_tracing +- VK_KHR_external_memory_fd + +[ash]: https://github.com/MaikKlein/ash + +### [Rectangle Pack](rectangle-pack-homepage) v0.1.5 + +`Rectangle Pack` is a Rust crate focused on rectangle packing: Laying out any smaller +number of rectangles inside any number of larger rectangles. The developer's use +for the library is in packing textures from texture atlases on the GPU, although +the library does not have any concept of texture, and can be used in any +context where rectangle packing may be needed. + +Version 0.1.5 adds implementation for error handling for RectanglePackError. + +A getting started guide is available on the [project's homepage](rectangle-pack-homepage). +Full documentation is available at the [rectangle-pack docs.rs section](rectangle-pack-docs). + +[rectangle-pack-homepage]: https://github.com/chinedufn/rectangle-pack +[rectangle-pack-docs]: https://crates.io/crates/rectangle-pack/0.1.5 + +## Popular Workgroup Issues in Github + + + +- [rust-gamedev/wg](https://github.com/rust-gamedev/wg): + - [#50 "Linking Time"](https://github.com/rust-gamedev/wg/issues/50); + - [#75 "Standardised API for sharing thread pools"](https://github.com/rust-gamedev/wg/issues/75); + - [#91 "Should the wg volunteer to maintain winapi?"](https://github.com/rust-gamedev/wg/issues/91); +- [rust-gamedev/arewegameyet](https://github.com/rust-gamedev/arewegameyet): + - [#289 "Netlify previews for PRs?"](https://github.com/rust-gamedev/arewegameyet/issues/289); + +## Meeting Minutes + + + +[See all meeting issues][label_meeting] including full text notes +or [join the next meeting][join]. + +[label_meeting]: https://github.com/rust-gamedev/wg/issues?q=label%3Ameeting + +## Requests for Contribution + + + +- [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]; +- [wgpu's "help wanted" issues][wgpu-help-wanted]; +- [luminance's "low hanging fruit" issues][luminance-fruits]; +- [ggez's "good first issue" issues][ggez-issues]; +- [Veloren's "beginner" issues][veloren-beginner]; +- [Amethyst's "good first issue" issues][amethyst-issues]; +- [A/B Street's "good first issue" issues][abstreet-issues]; +- [Mun's "good first issue" issues][mun-issues]; +- Anybody wants to work on the [GLSL front-end][naga-issue] in Naga? + One day, we'll be able to finally replace glsl-to-spirv, + which is used by a lot of graphics applications and is prone to issues. + +[embark.rs]: https://embark.rs +[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open +[winit-issues]: https://github.com/rust-windowing/winit/issues?utf8=✓&q=is%3Aissue+is%3Aopen+label%3A%22status%3A+help+wanted%22+label%3A%22Good+first+issue%22 +[gfx-issues]: https://github.com/gfx-rs/gfx/issues?q=is%3Aissue+is%3Aopen+label%3Acontributor-friendly +[wgpu-help-wanted]: https://github.com/gfx-rs/wgpu-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22 +[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22 +[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A +[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner +[amethyst-issues]: https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22 +[abstreet-issues]: https://github.com/dabreegster/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22 +[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue +[naga-issue]: https://github.com/gfx-rs/naga/issues/23 + +## Bonus + + + +Just an interesting Rust gamedev link from the past. :) + +![Robo Instructus logo](robo-logo.jpeg) + +On 2019.07.16 a puzzle game ["Robo Instructus"][robo-site] by [Alex Butler][bigabgames] +was released after two years of development: +[Steam][robo-steam]/[itch.io][robo-itch] (demo is available). + +> Salvage Engineer, you have a new assignment on a distant world... +> +> Robo Instructus is a puzzle game in which players manoeuvre a robot +> by issuing instructions via a simple programming language. +> As players progress through the game they unlock new functions +> to overcome new puzzles, each of which can be solved in multiple ways. +> The more you master the robot, the more elegant and powerful +> your solutions will be. +> +> Take the role of a Salvage Engineer sent across space. +> Use wits and tenacity to uncover the secrets of this isolated, frozen world. + +[![gameplay screenshot with jumping robot](robo-screenshot.jpg)][robo-video] + +Check out the [release trailer][robo-video]. + +The game is written using gfx-rs (pre-ll), winit, and opengl. +You can read more about its development in the [**awesome devlog**][robo-log] +that has lots of cool posts like +["Robo Instructus: Behind The Scenes"][robo-behind]. + +_Discussions: +[/r/rust](https://reddit.com/r/rust/comments/cdw1ct/robo_instructus_is_out_now_programming_puzzle)_ + +[bigabgames]: https://twitter.com/bigabgames +[robo-steam]: https://store.steampowered.com/app/1032170/Robo_Instructus +[robo-video]: https://youtube.com/watch?v=sIjaIxPp2_w +[robo-itch]: https://bigabgames.itch.io/robo-instructus +[robo-site]: https://www.roboinstruct.us +[robo-log]: https://blog.roboinstruct.us +[robo-behind]: https://blog.roboinstruct.us/2019/06/26/behind-the-scenes.html + +------ + +That's all news for today, thanks for reading! + +Subscribe to [@rust_gamedev on Twitter][@rust_gamedev] +or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news! + + + +[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev +[@rust_gamedev]: https://twitter.com/rust_gamedev diff --git a/content/posts/newsletter-008/ldn.png b/content/posts/newsletter-008/ldn.png new file mode 100644 index 000000000..fb38e1325 Binary files /dev/null and b/content/posts/newsletter-008/ldn.png differ diff --git a/content/posts/newsletter-008/miniquad.gif b/content/posts/newsletter-008/miniquad.gif new file mode 100644 index 000000000..8dff25ed8 Binary files /dev/null and b/content/posts/newsletter-008/miniquad.gif differ diff --git a/content/posts/newsletter-008/mun-logo.png b/content/posts/newsletter-008/mun-logo.png new file mode 100644 index 000000000..02295dc77 Binary files /dev/null and b/content/posts/newsletter-008/mun-logo.png differ diff --git a/content/posts/newsletter-008/nannou.png b/content/posts/newsletter-008/nannou.png new file mode 100644 index 000000000..0a6f12e7b Binary files /dev/null and b/content/posts/newsletter-008/nannou.png differ diff --git a/content/posts/newsletter-008/pglowrpg.png b/content/posts/newsletter-008/pglowrpg.png new file mode 100644 index 000000000..7df6316bd Binary files /dev/null and b/content/posts/newsletter-008/pglowrpg.png differ diff --git a/content/posts/newsletter-008/quest.jpg b/content/posts/newsletter-008/quest.jpg new file mode 100644 index 000000000..36d573876 Binary files /dev/null and b/content/posts/newsletter-008/quest.jpg differ diff --git a/content/posts/newsletter-008/robo-logo.jpeg b/content/posts/newsletter-008/robo-logo.jpeg new file mode 100644 index 000000000..b85b51b13 Binary files /dev/null and b/content/posts/newsletter-008/robo-logo.jpeg differ diff --git a/content/posts/newsletter-008/robo-screenshot.jpg b/content/posts/newsletter-008/robo-screenshot.jpg new file mode 100644 index 000000000..b25ac7163 Binary files /dev/null and b/content/posts/newsletter-008/robo-screenshot.jpg differ diff --git a/content/posts/newsletter-008/rustsim-simba.svg b/content/posts/newsletter-008/rustsim-simba.svg new file mode 100644 index 000000000..b24544836 --- /dev/null +++ b/content/posts/newsletter-008/rustsim-simba.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/content/posts/newsletter-008/slime99.png b/content/posts/newsletter-008/slime99.png new file mode 100644 index 000000000..0a204d05b Binary files /dev/null and b/content/posts/newsletter-008/slime99.png differ diff --git a/content/posts/newsletter-008/specs-vs-legion.png b/content/posts/newsletter-008/specs-vs-legion.png new file mode 100644 index 000000000..dc4b92f73 Binary files /dev/null and b/content/posts/newsletter-008/specs-vs-legion.png differ diff --git a/content/posts/newsletter-008/sphere.png b/content/posts/newsletter-008/sphere.png new file mode 100644 index 000000000..14f9a78de Binary files /dev/null and b/content/posts/newsletter-008/sphere.png differ diff --git a/content/posts/newsletter-008/tennis.gif b/content/posts/newsletter-008/tennis.gif new file mode 100644 index 000000000..a7fdc19be Binary files /dev/null and b/content/posts/newsletter-008/tennis.gif differ diff --git a/content/posts/newsletter-008/three-d-lighting.png b/content/posts/newsletter-008/three-d-lighting.png new file mode 100644 index 000000000..ba0838ba3 Binary files /dev/null and b/content/posts/newsletter-008/three-d-lighting.png differ diff --git a/content/posts/newsletter-008/three-d-spider.png b/content/posts/newsletter-008/three-d-spider.png new file mode 100644 index 000000000..de7c8ea2c Binary files /dev/null and b/content/posts/newsletter-008/three-d-spider.png differ diff --git a/content/posts/newsletter-008/urban-gift-video.png b/content/posts/newsletter-008/urban-gift-video.png new file mode 100644 index 000000000..5bd4803bf Binary files /dev/null and b/content/posts/newsletter-008/urban-gift-video.png differ diff --git a/content/posts/newsletter-008/will_main.png b/content/posts/newsletter-008/will_main.png new file mode 100644 index 000000000..988336701 Binary files /dev/null and b/content/posts/newsletter-008/will_main.png differ diff --git a/content/posts/newsletter-008/zemeroth.jpeg b/content/posts/newsletter-008/zemeroth.jpeg new file mode 100644 index 000000000..d0ac74f09 Binary files /dev/null and b/content/posts/newsletter-008/zemeroth.jpeg differ diff --git a/sass/_extra.scss b/sass/_extra.scss index 5e6786d1d..e35d8ad52 100644 --- a/sass/_extra.scss +++ b/sass/_extra.scss @@ -63,7 +63,8 @@ h6:hover .anchor { .post-content p img { display: block; + box-sizing: border-box; margin: 16px auto; padding: 8px; border: 1px solid #e8e8e8; -} \ No newline at end of file +}