diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..951e49ee1 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,3 @@ +[*.{md,mkdn}] +trim_trailing_whitespace = false +indent_style = space diff --git a/.github/create_newsletter_scaffold.sh b/.github/create_newsletter_scaffold.sh new file mode 100755 index 000000000..45184e856 --- /dev/null +++ b/.github/create_newsletter_scaffold.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +set -euo pipefail + +if [[ -z "${NEWSLETTER_MONTH}" ]]; then + echo "NEWSLETTER_MONTH is not set. Exiting..." + exit 1 +fi + +if [[ -z "${NEWSLETTER_YEAR}" ]]; then + echo "NEWSLETTER_YEAR is not set. Exiting..." + exit 1 +fi + +if [[ -z "${NEWSLETTER_COUNTER}" ]]; then + echo "NEWSLETTER_COUNTER is not set. Exiting..." + exit 1 +fi + +# NEWSLETTER_NEXT_MONTH_NUMBER +if [[ -z "${NEWSLETTER_NEXT_MONTH_NUMBER}" ]]; then + echo "NEWSLETTER_NEXT_MONTH_NUMBER is not set. Exiting..." + exit 1 +fi + +cp .github/newsletter-template.md index.md +sed -i "s/{{\s*NEWSLETTER_MONTH\s*}}/${NEWSLETTER_MONTH}/g" index.md +sed -i "s/{{\s*NEWSLETTER_YEAR\s*}}/${NEWSLETTER_YEAR}/g" index.md +sed -i "s/{{\s*NEWSLETTER_COUNTER\s*}}/${NEWSLETTER_COUNTER}/g" index.md +sed -i "s/{{\s*NEWSLETTER_COUNTER_NEXT\s*}}/$((NEWSLETTER_COUNTER + 1))/g" index.md +sed -i "s/{{\s*NEWSLETTER_NEXT_MONTH_NUMBER\s*}}/${NEWSLETTER_NEXT_MONTH_NUMBER}/g" index.md +# Create a dir in content/news with the counter with 3 digits as name +destination="content/news/$(printf "%03d" ${NEWSLETTER_COUNTER})" +mkdir -p $destination +mv index.md $destination/index.md +git status diff --git a/.github/newsletter-issue-template.md b/.github/newsletter-issue-template.md new file mode 100644 index 000000000..ec9566cd3 --- /dev/null +++ b/.github/newsletter-issue-template.md @@ -0,0 +1,165 @@ +--- +title: "Newsletter {{ env.NEWSLETTER_COUNTER}}: {{ env.NEWSLETTER_MONTH }} {{ env.NEWSLETTER_YEAR }}" +labels: coordination, help wanted +assignees: AngelOnFira, mamaicode, janhohenheim +--- + +**Editors:** @janhohenheim, @AngelOnFira, @mamaicode + +Another month has gone by, so it's time to put together the Rust Gamedev newsletter with {{ env.NEWSLETTER_MONTH }}'s news! + +## Current Schedule + +The deadline for all section PRs is the **28th of {{ env.NEWSLETTER_MONTH}}, {{ env.NEWSLETTER_YEAR }}**. Submissions after this date will be added to the next newsletter. +Our target release date is the **3rd of {{ env.NEWSLETTER_NEXT_MONTH }}, {{ env.NEWSLETTER_YEAR }}**. + +## Current Structure & Status + +Below is our current planned structure for the newsletter, and the status of each PR (which we'll try to keep updated). + +This is **not** an exhaustive list - if you have your own project that you want to write about, just make a comment on this issue and open a PR! + +### Game Updates + +None yet. Feel free to submit yours! + +### Learning Material Updates + +None yet. Feel free to submit yours! + +### Engine Updates + +None yet. Feel free to submit yours! + +### Tooling Updates + +None yet. Feel free to submit yours! + +### Library Updates + +None yet. Feel free to submit yours! + +### Other News + +None yet. Feel free to submit yours! + +### Discussions + +None yet. Feel free to submit yours! + +## Calls for Submissions + +### Social Media + +- [ ] Reddit +- [ ] Lemmy +- [ ] Mastodon +- [ ] Twitter/X +- [ ] Hacker News + +### Discord Servers + +- [ ] Rust GameDev +- [ ] Bevy +- [ ] Blue Engine +- [ ] Macroquad +- [ ] Fyrox +- [ ] LogLogGames (comfy engine) +- [ ] Spicy Lobster +- [ ] Rust Godot + +Let us know if you also want to receive monthly reminders on your Discord server! + +## Publishing Steps + +- [ ] Final review - by everyone +- [ ] Publish - by @janhohenheim +- [ ] Post together with next calls for submissions - by @janhohenheim +- [ ] Pin thread on social media - by @janhohenheim +- [ ] Add comment links - by @janhohenheim + +## How to Contribute + +If you want to help writing the newsletter: + +- **Read [CONTRIBUTING.md](https://github.com/rust-gamedev/rust-gamedev.github.io/blob/source/CONTRIBUTING.md?rgh-link-date=2023-09-12T16%3A17%3A34Z).** +- Choose one or more of the "🆓 **free**" sections listed below, and leave a comment letting us know you want to work on them. + - The links in brackets (like `[1](#), [2](#), [3](#)`) are suggestions of links to include in the section. Feel free to add more! + - The username listed next to the section (like `@janhohenheim?`) is a suggestion of who may want to pick up the work (usually the project's developer, or someone who has expressed interest in the past). + - You are not obligated to write a section if you're tagged or your project is listed! You're welcome to ask someone else to write the section, or to ask for your project to be excluded from this month's post. + - Extra sections not listed in the plan are welcomed - just leave a comment and open a PR! +- Write a short overview in the newsletter's Markdown file, making sure to follow the style guidelines (see below). +- Send a PR [_to the `source` branch_](https://github.com/rust-gamedev/rust-gamedev.github.io/tree/source) (example PR: [N15: A/B Street #336](https://github.com/rust-gamedev/rust-gamedev.github.io/pull/336)). +- Mention this issue in your PR's description to link it all together. + +## Style Guidelines + +The full style guide is in [CONTRIBUTING.md](https://github.com/rust-gamedev/rust-gamedev.github.io/blob/source/CONTRIBUTING.md?rgh-link-date=2023-09-12T16%3A17%3A34Z), +but here are the most important rules: + +- Write in third-person perspective. +- Each line must be 160 characters or less, for ease of reviewing/diffing. +- Only one image per section is allowed. + - The maximum size is 300kb for static images and 2.5mb for GIFs. + - The image should come before the text, and must have alt text for accessibility. + - Prefer static images to GIFs/videos, to keep the page load times down. + - To include a video, encode it as `H.264` in an `mp4` container and use + the `video_figure()` shortcode; videos autoplay in a loop (muted). +- Each section should be under 1000 characters, and under 6 paragraphs. + - This only applies to the rendered text, not the markup. +- Keep formatting minimal - no bold/italics/etc. +- Avoid long/nested bullet point lists - no changelogs! + +Please use these templates as a starting point: + +**Games/apps/libraries:** + +```md +### [Game name] + +{{ image_figure( + alt="image/GIF description", + src="image link", + caption="image caption") }} + +OR + +{{ video_figure( + type="video/mp4", + src="my-video.mp4", + caption="optional video caption") }} + +[Game name] ([GitHub], [Discord], [Twitter]) by [@nickname] +is... {short project description in one sentence}. + +{An overview of the recent updates with links to more details}. + +_Discussions: [/r/rust_gamedev](link), [Twitter](link), [etc](link)_ + +[Game name]: http://example.com +``` + +**Articles/blog posts/videos/etc:** + +```md +### [Article name] + +{{ image_figure( + alt="image/GIF description", + src="image link", + caption="image caption") }} + +OR + +{{ video_figure( + type="video/mp4", + src="my-video.mp4", + caption="optional video caption") }} + +[@nickname] published an [article] about... +{overview what the resource is about}. + +_Discussions: [/r/rust_gamedev](link), [Twiter](link), [etc](link)_ + +[Article name]: http://example.com +``` diff --git a/newsletter-template.md b/.github/newsletter-template.md similarity index 64% rename from newsletter-template.md rename to .github/newsletter-template.md index 72b9e9842..35158343f 100644 --- a/newsletter-template.md +++ b/.github/newsletter-template.md @@ -1,7 +1,7 @@ +++ -title = "This Month in Rust GameDev #{TODO} - {TODO} {TODO}" +title = "This Month in Rust GameDev #{{ NEWSLETTER_COUNTER }} - {{ NEWSLETTER_MONTH }} {{ NEWSLETTER_YEAR }}" transparent = true -date = TODO +date = {{ NEWSLETTER_YEAR }}-{{ NEWSLETTER_NEXT_MONTH_NUMBER }}-03 draft = true +++ @@ -9,7 +9,7 @@ draft = true -Welcome to the {TODO}th issue of the Rust GameDev Workgroup's +Welcome to the {{ NEWSLETTER_COUNTER }}th issue of the Rust GameDev Workgroup's monthly newsletter. [Rust] is a systems language pursuing the trifecta: safety, concurrency, and speed. @@ -35,13 +35,14 @@ Feel free to send PRs about your own projects! - [Learning Material Updates](#learning-material-updates) - [Tooling Updates](#tooling-updates) - [Library Updates](#library-updates) +- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github) - [Other News](#other-news) -- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github) - [Meeting Minutes](#meeting-minutes) - [Discussions](#discussions) - [Requests for Contribution](#requests-for-contribution) - [Jobs](#jobs) - [Bonus](#bonus) +- [Future news](#future-news) @@ -112,23 +122,38 @@ useful information --> +## Future news + + + +Editing this newsletter wouldn't be possible without [your contributions][news_current_prs]. +Thanks to everyone who helped us this month! + +If you want something mentioned in the next newsletter, [send us a pull request][pr]. + +You can also get an early look at pending issues for the [next newsletter][news_future_prs]. + +[news_current_prs]: https://github.com/rust-gamedev/rust-gamedev.github.io/pulls?q=is%3Apr+in%3Atitle+%27N{{ NEWSLETTER_COUNTER }}%27 +[news_future_prs]: https://github.com/rust-gamedev/rust-gamedev.github.io/pulls?q=is%3Apr+in%3Atitle+%27N{{ NEWSLETTER_COUNTER_NEXT }}%27 + ------ That's all news for today, thanks for reading! -Want something mentioned in the next newsletter? -[Send us a pull request][pr]. - -Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev] -or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news! +Also, subscribe to our socials if you want to receive fresh news! +- X/Twitter: [@rust_gamedev][@x_rust_gamedev] +- Mastodon: [@rust_gamedev][@mastodon_rust_gamedev] +- Reddit: [/r/rust_gamedev][/r/rust_gamedev] [/r/rust_gamedev]: https://reddit.com/r/rust_gamedev -[@rust_gamedev]: https://twitter.com/rust_gamedev +[@x_rust_gamedev]: https://twitter.com/rust_gamedev +[@mastodon_rust_gamedev]: https://mastodon.gamedev.place/@rust_gamedev diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2396bdd01..7035bdd57 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,7 +2,7 @@ name: Zola on: push: - branches: source + branches: main pull_request: jobs: @@ -10,24 +10,74 @@ jobs: runs-on: ubuntu-latest env: BASE_URL: https://github.com/getzola/zola/releases/download - VERS: v0.15.2 + VERS: v0.19.1 ARCH: x86_64-unknown-linux-gnu # https://github.com/crazy-max/ghaction-github-pages/issues/1#issuecomment-623202206 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Lint uses: avto-dev/markdown-lint@v1 with: args: '.' config: '.markdownlint.json' - name: Install Zola - run: curl -L ${BASE_URL}/${VERS}/zola-${VERS}-${ARCH}.tar.gz | tar -xz - - run: ./zola --version - - run: ./zola build - - name: Deploy - if: github.ref == 'refs/heads/source' - uses: crazy-max/ghaction-github-pages@v1 + run: | + curl -L ${BASE_URL}/${VERS}/zola-${VERS}-${ARCH}.tar.gz | tar -xz + echo "Zola version: $(./zola --version)" + - name: Zola build + run: ./zola build + - name: Upload GitHub Pages artifact + uses: actions/upload-pages-artifact@v3 with: - build_dir: public - target_branch: master + path: public + + links: + name: Check for Broken Links + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }} + - name: Get changed files + id: changed-files + # source: https://stackoverflow.com/a/74268200, added filtering for markdown files + run: | + if ${{ github.event_name == 'pull_request' }}; then + changed_files=$(git diff --name-only -r HEAD^1 HEAD -z | grep '\.md$' -zZ | xargs -0) + else + changed_files=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} -z | grep '\.md$' -zZ | xargs -0) + fi + echo "changed_files: $changed_files" + echo "changed_files=$changed_files" >> $GITHUB_OUTPUT + - name: Check links + uses: lycheeverse/lychee-action@v1.9.0 + if: ${{ steps.changed-files.outputs.changed_files != '' }} + with: + fail: true + args: >- + --verbose + --no-progress + --accept '100..=103,200..=299,300..=399' + --exclude '[^\w]todo[^\w]?' + --exclude 'https://(www\.|old\.)?reddit\.com' + --exclude 'https://www.patreon.com' + --exclude 'https://gamedev.social' + --exclude 'dev.epicgames.com' + --exclude-path 'assets/logo/readme.md' + ${{ steps.changed-files.outputs.changed_files }} + + pages: + needs: zola + permissions: + pages: write + id-token: write + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + if: format('refs/heads/{0}', github.event.repository.default_branch) == github.ref + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/create-newsletter.yaml b/.github/workflows/create-newsletter.yaml new file mode 100644 index 000000000..888db62aa --- /dev/null +++ b/.github/workflows/create-newsletter.yaml @@ -0,0 +1,45 @@ +name: Create Newsletter +on: + schedule: + # Run on the 3rd of every month at 9 am + - cron: "0 9 3 * *" + workflow_dispatch: + inputs: {} +permissions: + contents: write + issues: write + pull-requests: write +jobs: + create-newsletter: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + ref: main + - name: Set environment variables + run: | + echo "NEWSLETTER_MONTH=$(date +'%B')" >> $GITHUB_ENV + echo "NEWSLETTER_NEXT_MONTH=$(date -d' 1 month ' +'%B')" >> $GITHUB_ENV + echo "NEWSLETTER_NEXT_MONTH_NUMBER=$(date -d' 1 month ' +'%m')" >> $GITHUB_ENV + echo "NEWSLETTER_YEAR=$(date +'%Y')" >> $GITHUB_ENV + # take the amount of months since feb 2024 and add 50 + echo "NEWSLETTER_COUNTER=$(( ( ( $(date +'%Y') - 2024 ) * 12 + $(date +'%m') - 4 ) + 50 ))" >> $GITHUB_ENV + - name: Create newsletter scaffold + run: ./.github/create_newsletter_scaffold.sh + - name: Commit and create pull request + uses: peter-evans/create-pull-request@v3 + with: + commit-message: "Create newsletter N${{ env.NEWSLETTER_COUNTER }} for ${{ env.NEWSLETTER_MONTH }} ${{ env.NEWSLETTER_YEAR }}" + branch: "start-newsletter-${{ env.NEWSLETTER_COUNTER }}" + title: "Newsletter N${{ env.NEWSLETTER_COUNTER }} for ${{ env.NEWSLETTER_MONTH }} ${{ env.NEWSLETTER_YEAR }}" + body: "This PR adds the initial newsletter source file for ${{ env.NEWSLETTER_MONTH }} ${{ env.NEWSLETTER_YEAR }}." + assignees: | + AngelOnFira + janhohenheim + mamaicode + - name: Create tracking issue + uses: JasonEtco/create-an-issue@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + filename: .github/newsletter-issue-template.md diff --git a/.markdownlint.json b/.markdownlint.json index 196cbc370..2254eb4e0 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -1,12 +1,21 @@ { "line-length": { - "line_length": 80, + "line_length": 160, "code_blocks": false }, - "ul-style": { - "style": "dash" - }, - "no-trailing-punctuation": { - "punctuation": ".,;:。,;:" + "blanks-around-lists": false, + "blanks-around-headings": false, + "no-multiple-blanks": false, + "no-trailing-spaces": false, + "no-trailing-punctuation": false, + "no-hard-tabs": false, + "hr-style": false, + "strong-style": false, + "no-bare-urls": false, + "emphasis-style": false, + "no-inline-html": { + "allowed_elements": [ + "abbr" + ] } -} +} \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 769186e3f..ef174b4f2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,10 +2,13 @@ Thank you for contributing to the newsletter! 💖 -- [Writing Newsletter Sections](#writing-newsletter-sections) - - [Templates](#templates) - - [Style Guidelines](#style-guidelines) -- [Becoming an Editor](#becoming-an-editor) +- [Contributing Guide](#contributing-guide) + - [Writing Newsletter Sections](#writing-newsletter-sections) + - [Templates](#templates) + - [Games, Apps or Libraries](#games-apps-or-libraries) + - [Articles, Blog Posts or Videos](#articles-blog-posts-or-videos) + - [Style Guidelines](#style-guidelines) + - [Becoming an Editor](#becoming-an-editor) ## Writing Newsletter Sections @@ -53,8 +56,17 @@ your GitHub notifications for any further review comments from the editors. ```md ### [Game name] -![alt text](img) -_optional image label_ +{{ image_figure( + alt="image/GIF description", + src="image link", + caption="image caption") }} + +OR + +{{ video_figure( + type="video/mp4", + src="my-video.mp4", + caption="optional video caption") }} [Game name] ([GitHub], [Discord], [Twitter]) by [@nickname] is... {short project description in one sentence}. @@ -71,8 +83,17 @@ _Discussions: [/r/rust_gamedev](link), [Twitter](link), [etc](link)_ ```md ### [Article name] -![alt text](img) -_optional image label_ +{{ image_figure( + alt="image/GIF description", + src="image link", + caption="image caption") }} + +OR + +{{ video_figure( + type="video/mp4", + src="my-video.mp4", + caption="optional video caption") }} [@nickname] published an [article] about... {overview what the resource is about}. @@ -96,11 +117,13 @@ _Discussions: [/r/rust_gamedev](link), [Twitter](link), [etc](link)_ - Avoid having multiple/nested bullet points. - This guideline may be relaxed if your project has multiple parts that aren't independent enough for their own sections. -- Only include one image (<300kb) or GIF (<2.5mb). +- Only include one image (<300kb), GIF (<2.5mb) or video (<2.5mb). - Images should be placed before text, with an optional caption and mandatory alternate text for accessibility. - Unless essential to demonstrating your project, prefer static images - over GIFs, to keep the file size down. + over GIFs/videos, to keep the file size down. + - To include a video, encode it as `H.264` in an `mp4` container and use + the `video_figure()` shortcode; videos autoplay in a loop (muted). - Use singular 'they' if you’re not sure what someone's pronouns are. - If a project has been featured in previous newsletters, try to focus on what's new rather than repeating previous content. diff --git a/LICENSE-APACHE.txt b/LICENSE-APACHE.txt new file mode 100644 index 000000000..df5035b57 --- /dev/null +++ b/LICENSE-APACHE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2024 Rust GameDev Working Group + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/LICENSE-MIT.txt b/LICENSE-MIT.txt new file mode 100644 index 000000000..1375ceaa9 --- /dev/null +++ b/LICENSE-MIT.txt @@ -0,0 +1,7 @@ +Copyright 2024 Rust GameDev Working Group + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index f44bb0a7e..d15b1fb88 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ The site is built and deployed automatically from the repo (see To preview/experiment locally: -1) [Install Zola][zola-get]. Make sure to use 0.14.1, to match [our CI config][ci]! +1) [Install Zola][zola-get]. Make sure to use 0.19.1, to match [our CI config][ci]! 2) Run `zola serve --drafts` and open the link. [zola-get]: https://getzola.org/documentation/getting-started/installation @@ -23,9 +23,9 @@ To preview/experiment locally: This project is licensed under either of: -- Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or +- Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE.txt) or ) -- MIT license ([LICENSE-MIT](LICENSE-MIT) or +- MIT license ([LICENSE-MIT](LICENSE-MIT.txt) or ) With the exception of: diff --git a/assets/logo/readme.md b/assets/logo/readme.md new file mode 100644 index 000000000..94cca47c6 --- /dev/null +++ b/assets/logo/readme.md @@ -0,0 +1,12 @@ +# Logo + +The vectorized logo is a re-drawn version based on +[@shmutalov](https://github.com/shmutalov)'s [original, rasterized version](https://github.com/rust-gamedev/wg/issues/4). + +It incorporates the official [rust-logo-gear-only.svg](https://github.com/rust-lang/rust-artwork/blob/master/logo/rust-logo-gear-only.svg). + +## Exporting + +The various exported PNG's in [static](../static/) can be found in [rust-gamedev-logo-raw.svg](./rust-gamedev-logo-raw.svg) as individual (Inkscape) pages. + +After exporting be sure to run `svgo` on the exported SVG and `optipng` on the exported PNGs. diff --git a/assets/logo/rust-gamedev-logo-raw.svg b/assets/logo/rust-gamedev-logo-raw.svg new file mode 100644 index 000000000..12dec1bae --- /dev/null +++ b/assets/logo/rust-gamedev-logo-raw.svg @@ -0,0 +1,622 @@ + +Rust GameDev WG Making Rust a first-class choice for game development diff --git a/config.toml b/config.toml index 3096bb917..5fc7bd5cc 100644 --- a/config.toml +++ b/config.toml @@ -3,11 +3,12 @@ description = "Stay up to date with the progress and recent developments in the base_url = "https://gamedev.rs/" default_language = "en" compile_sass = true -generate_feed = true -feed_filename = "rss.xml" +generate_feeds = true +feed_filenames = ["rss.xml"] [markdown] highlight_code = true +smart_punctuation = true [extra] date_format = "%F" diff --git a/content/blog/2019-08-18-introducing-the-rust-game-development-working-group.md b/content/blog/2019-08-18-introducing-the-rust-game-development-working-group.md index e65c39259..847e8b2c1 100644 --- a/content/blog/2019-08-18-introducing-the-rust-game-development-working-group.md +++ b/content/blog/2019-08-18-introducing-the-rust-game-development-working-group.md @@ -47,7 +47,7 @@ we've already got several projects underway: ## How can I get involved? -Our main hub for co-ordination is our [Github repository](https://github.com/rust-gamedev/wg), +Our main hub for co-ordination is our [GitHub repository](https://github.com/rust-gamedev/wg), where you can (and should!) raise issues calling out your ideas, proposals or problems with the Rust gamedev ecosystem. We also have a `#wg-gamedev` channel on the [official Rust Discord server](https://discord.gg/j6QJsMd), diff --git a/content/blog/newsletter-changes/index.md b/content/blog/newsletter-changes/index.md new file mode 100644 index 000000000..32605c3b2 --- /dev/null +++ b/content/blog/newsletter-changes/index.md @@ -0,0 +1,65 @@ ++++ +title = "Newsletter Changes" +date = 2024-05-02 +transparent = true ++++ + +*Please fill out [this survey][survey] before skipping this section! More info below!* + +Hey everyone, it's been a while! As you've certainly noticed, the newsletter has +been on hiatus for some months. The reason was mostly maintainer burnout, which is +also why the newsletter of August 2023 was not published [until a few days +ago][august-news]. + +We're back now though! A couple of community members, Jan Hohenheim +([@janhohenheim]) and Thierry Berger ([@Vrixyz]), have led the revival of the +newsletter. This includes making changes requested by the community, and +improving sustainability for the long term. + +### Schedule Changes + +Thierry Berger ([@Vrixyz]), has come up with a new [monthly +schedule][monthly_schedule] that we will try out: + +- 3rd of the month: Newsletter starts. A call for submissions is made on social +media and community Discord servers interested in receiving it. At the same +time, last month's newsletter is published. +- 3rd to 28th of the month: submissions are collected and the newsletter is + written. +- 28th of the month: Submissions are closed. New submissions go into the next + month's newsletter. +- 3rd of the next month: The newsletter is published. Any submissions not edited +in time will be moved to the next month or removed entirely. + +This more strict schedule should help with the issue of late entries and reduce +the pressure of editing by having a dedicated time for it with no incoming +submissions. The goal is to be more consistent and reliable in our publishing +schedule. + +### Community Survey + +This restructuring is also a good time to improve the content of the newsletter. +We've got some community feedback on the [Rust GameDev Discord][Discord] already +and would like to hear more from you. It would be great if you could fill out +[this survey][survey] to let us know how we can improve the newsletter going +forward. The survey closes on the **28th of May 2024**. We will be evaluating +the [survey] results in an upcoming blog post, so stay tuned for that. + +### Future Steps + +Based on feedback we've already gotten, the steps for next months are: + +- Add an email subscription option to the newsletter +- Setup a system for how to edit entries that are not ready before the +newsletter ships. We are currently looking into either hiring a part-time +editor, using generative AI to add a few sentences where needed, or simply +removing these entries. + +That's all for now. Have fun reading! + +[august-news]: https://gamedev.rs/news/049/ +[@janhohenheim]: https://github.com/janhohenheim +[@Vrixyz]: https://github.com/Vrixyz +[monthly_schedule]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues/1417#issuecomment-1764534286 +[survey]: https://forms.gle/oeSb46twWsxRKYJe7 +[Discord]: https://discord.gg/game-development-in-rust-676678179678715904 diff --git a/content/blog/rust-gamedev-meetup-30/blue-engine.png b/content/blog/rust-gamedev-meetup-30/blue-engine.png new file mode 100644 index 000000000..2c5cb65b0 Binary files /dev/null and b/content/blog/rust-gamedev-meetup-30/blue-engine.png differ diff --git a/content/blog/rust-gamedev-meetup-30/cybergate.png b/content/blog/rust-gamedev-meetup-30/cybergate.png new file mode 100644 index 000000000..86f5ec350 Binary files /dev/null and b/content/blog/rust-gamedev-meetup-30/cybergate.png differ diff --git a/content/blog/rust-gamedev-meetup-30/gamedev-meetup.png b/content/blog/rust-gamedev-meetup-30/gamedev-meetup.png new file mode 100644 index 000000000..af9706bea Binary files /dev/null and b/content/blog/rust-gamedev-meetup-30/gamedev-meetup.png differ diff --git a/content/blog/rust-gamedev-meetup-30/index.md b/content/blog/rust-gamedev-meetup-30/index.md new file mode 100644 index 000000000..92114f01c --- /dev/null +++ b/content/blog/rust-gamedev-meetup-30/index.md @@ -0,0 +1,76 @@ ++++ +title = "Rust Gamedev Meetup 30" +date = 2023-09-23 +transparent = true +aliases = ["posts/gamedev-meetup-30"] ++++ + + + + + +![Rust Gamedev Meetup](gamedev-meetup.png) + +The 30th Rust Gamedev Meetup took place on September 23rd. You can watch the +recording of the meetup [here on YouTube][meetup-video]. The meetup will take +place on the Rust Gamedev [YouTube][youtube-stream] and [Twitch][twitch-stream]. +The meetups take place on the second Saturday of every month via the [Rust +Gamedev Discord server][rust-gamedev-discord] and are also [streamed on +Twitch][rust-gamedev-twitch]. + +[rust-gamedev-discord]: https://discord.gg/yNtPTb2 +[rust-gamedev-twitch]: https://twitch.tv/rustgamedev +[meetup-video]: https://www.youtube.com/watch?v=fAp_-Hp2gGo +[youtube-stream]: https://www.youtube.com/@RustGameDevelopment +[twitch-stream]: https://www.twitch.tv/RustGameDev + +## Talks + +### [Blue Engine] | [@ElhamAryanpur] + +![Blue engine](blue-engine.png) + +> Updates about the Blue Engine project and its 0.5.0 release. + +**Links:** + +- [Blue Engine GitHub repository] +- [Blue Engine Discord server] + +[@ElhamAryanpur]: https://github.com/ElhamAryanpur +[Blue Engine GitHub repository]: https://github.com/AryanpurTech/BlueEngine +[Blue Engine Discord server]: https://discord.gg/s7xsj9q + +### [Cybergate] | [@cybersoulK] + +![Cybergate](cybergate.png) + +> An overview of Cybergate, a multiplayer game being developed for native and +> browser play. + +**Links:** + +- [Cybergate Discord server] + +[@cybersoulK]: https://github.com/cybersoulK +[Cybergate Discord server]: https://discord.gg/R7DkHqw7zJ + +### [no_std: ?no_problem] | [@kpreid] + +![no_std: ?no_problem](no-std.png) + +> An introduction to making your Rust crates `no_std` compatible, and +> why you might want to do this. + +**Links:** + +- [YouTube Video] +- [Slides] + +[@kpreid]: https://github.com/kpreid +[YouTube Video]: https://www.youtube.com/watch?v=Oq-3bOBrpeo +[Slides]: https://docs.google.com/presentation/d/e/2PACX-1vTfI-IhBIjyz3vf1sGAQSw02xUuQaDuQ5N4KZRvIdblJrX0uf9ijarVx7gwpUNzhhPotTEqKbgFP0Qe/pub?start=false&slide=id.p + +[Blue Engine]: https://www.youtube.com/live/fAp_-Hp2gGo?si=3uhCXRBGEtJa9XY_&t=731 +[Cybergate]: https://www.youtube.com/live/fAp_-Hp2gGo?si=U8yNvON23EqAXz19&t=1581 +[no_std: ?no_problem]: https://www.youtube.com/live/fAp_-Hp2gGo?si=N_bzPJNx29XDhoyf&t=3010 diff --git a/content/blog/rust-gamedev-meetup-30/no-std.png b/content/blog/rust-gamedev-meetup-30/no-std.png new file mode 100644 index 000000000..bee974a64 Binary files /dev/null and b/content/blog/rust-gamedev-meetup-30/no-std.png differ diff --git a/content/blog/rust-gamedev-meetup-31/gamedev-meetup.png b/content/blog/rust-gamedev-meetup-31/gamedev-meetup.png new file mode 100644 index 000000000..af9706bea Binary files /dev/null and b/content/blog/rust-gamedev-meetup-31/gamedev-meetup.png differ diff --git a/content/blog/rust-gamedev-meetup-31/hardware.jpg b/content/blog/rust-gamedev-meetup-31/hardware.jpg new file mode 100644 index 000000000..a4afd4f4a Binary files /dev/null and b/content/blog/rust-gamedev-meetup-31/hardware.jpg differ diff --git a/content/blog/rust-gamedev-meetup-31/index.md b/content/blog/rust-gamedev-meetup-31/index.md new file mode 100644 index 000000000..feba3ba35 --- /dev/null +++ b/content/blog/rust-gamedev-meetup-31/index.md @@ -0,0 +1,68 @@ ++++ +title = "Rust Gamedev Meetup 31" +date = 2023-10-14 +transparent = true +aliases = ["posts/gamedev-meetup-31"] ++++ + + + + + +![Rust Gamedev Meetup](gamedev-meetup.png) + +The 31th Rust Gamedev Meetup took place on October 14th. You can watch the +recording of the meetup [here on YouTube][meetup-video]. The meetup will take +place on the Rust Gamedev [YouTube][youtube-stream] and [Twitch][twitch-stream]. +The meetups take place on the second Saturday of every month via the [Rust +Gamedev Discord server][rust-gamedev-discord] and are also [streamed on +Twitch][rust-gamedev-twitch]. + +[rust-gamedev-discord]: https://discord.gg/yNtPTb2 +[rust-gamedev-twitch]: https://twitch.tv/rustgamedev +[meetup-video]: https://www.youtube.com/watch?v=MadryxOwjb8 +[youtube-stream]: https://www.youtube.com/@RustGameDevelopment +[twitch-stream]: https://www.twitch.tv/RustGameDev + +## Talks + +### [Games, but no video: Embedded trinkets in Rust] | [@Noxim] + +![Hardware](hardware.jpg) + +> An overview of making games with constrained hardware + +- [Slides] +- [Hardware] +- [Firmware] +- [Rustc] +- [PAC + HAL] +- [Blog post][More details] + +[Slides]: https://docs.google.com/presentation/d/1LnxSBdzKOGLGbUAiyaZShYfjJYitCOkM8MzPNLfFEQc/edit?usp=sharing +[Hardware]: https://oshwlab.com/noxim/nxr-w-101-001_copy +[Firmware]: https://owo.codes/noxim/nxr-t202-bitfiddle +[Rustc]: https://github.com/noxime/rust/tree/rv32e-upstream +[PAC + HAL]: https://github.com/ch32-rs +[More details]: https://noxim.xyz/blog/rust-ch32v003/ +[Games, but no video: Embedded trinkets in Rust]: https://www.youtube.com/live/MadryxOwjb8?si=erY49m_5_HDFkrpf&t=694 +[@Noxim]: https://github.com/Noxime + +### [Tunnet] | [@puzzled_squid] + +![tunnet title](tunnet.jpg) + +> A short game where you design, build, and optimize +> a computer network in an underground complex + +- [itch.io page] +- [YouTube trailer] +- [Website] + +![tunnet title](tunnet-network.jpg) + +[itch.io page]: https://puzzled-squid.itch.io/tunnet +[YouTube trailer]: https://www.youtube.com/watch?v=6gxytilYoOM +[Website]: https://puzzledsquid.xyz/ +[Tunnet]: https://www.youtube.com/live/MadryxOwjb8?si=vZrhqUszuv9qvG9t&t=2878 +[@puzzled_squid]: https://github.com/puzzled-squid diff --git a/content/blog/rust-gamedev-meetup-31/tunnet-network.jpg b/content/blog/rust-gamedev-meetup-31/tunnet-network.jpg new file mode 100644 index 000000000..129c877f3 Binary files /dev/null and b/content/blog/rust-gamedev-meetup-31/tunnet-network.jpg differ diff --git a/content/blog/rust-gamedev-meetup-31/tunnet.jpg b/content/blog/rust-gamedev-meetup-31/tunnet.jpg new file mode 100644 index 000000000..569fc68ac Binary files /dev/null and b/content/blog/rust-gamedev-meetup-31/tunnet.jpg differ diff --git a/content/blog/rust-gamedev-meetup-32/blade.jpg b/content/blog/rust-gamedev-meetup-32/blade.jpg new file mode 100644 index 000000000..db06a1fb8 Binary files /dev/null and b/content/blog/rust-gamedev-meetup-32/blade.jpg differ diff --git a/content/blog/rust-gamedev-meetup-32/gamedev-meetup.png b/content/blog/rust-gamedev-meetup-32/gamedev-meetup.png new file mode 100644 index 000000000..af9706bea Binary files /dev/null and b/content/blog/rust-gamedev-meetup-32/gamedev-meetup.png differ diff --git a/content/blog/rust-gamedev-meetup-32/index.md b/content/blog/rust-gamedev-meetup-32/index.md new file mode 100644 index 000000000..4a33c8848 --- /dev/null +++ b/content/blog/rust-gamedev-meetup-32/index.md @@ -0,0 +1,101 @@ ++++ +title = "Rust Gamedev Meetup 32" +date = 2023-11-11 +transparent = true +aliases = ["posts/gamedev-meetup-32"] ++++ + + + + + +![Rust Gamedev Meetup](gamedev-meetup.png) + +The 32nd Rust Gamedev Meetup took place on November 11th. You can watch the +recording of the meetup [here on YouTube][meetup-video]. The meetup took +place on the Rust Gamedev [YouTube][youtube-stream] and [Twitch][twitch-stream]. +The meetups take place on the second Saturday of every month via the [Rust +Gamedev Discord server][rust-gamedev-discord] and are also [streamed on +Twitch][rust-gamedev-twitch]. + +[rust-gamedev-discord]: https://discord.gg/yNtPTb2 +[rust-gamedev-twitch]: https://twitch.tv/rustgamedev +[meetup-video]: https://www.youtube.com/watch?v=MadryxOwjb8 +[youtube-stream]: https://www.youtube.com/@RustGameDevelopment +[twitch-stream]: https://www.twitch.tv/RustGameDev + +## Talks + +### [Minewars][minewars-video] | [@inodentry] + +[![Minewars](minewars.jpg)][minewars-video] + +> An upcoming multiplayer minesweeper game. **[Video link][minewars-video]** + +**Links:** + +- GitHub + Sponsors: [@inodentry] +- Mastodon: [@iyes@mastodon.gamedev.place] +- Discord: [Minewars Discord server] +- Open source client: [Minewars GitHub] +- Public documentation: [Minewars Documentation] +- Open-source vs proprietary plans: [Minewars FOSS Plans] + +[@inodentry]: https://github.com/inodentry +[@iyes@mastodon.gamedev.place]: https://mastodon.gamedev.place/@iyes +[Minewars GitHub]: https://github.com/IyesGames/minewars +[Minewars Documentation]: https://iyes.games/minewars/book/ +[Minewars FOSS Plans]: https://iyes.games/minewars/book/foss.html +[minewars-video]: https://www.youtube.com/watch?v=Mb7Xv-Mu-G4 +[Minewars Discord server]: https://discord.gg/Caxfzjwxs5 + +### [Blade][blade-video] | [@Kvark] + +[![Blade](blade.jpg)][blade-video] + +> Sharp and simple graphics library **[Video link][blade-video]** + +**Links:** + +- GitHub repo: [Blade] + +[@Kvark]: https://github.com/kvark +[Blade]: https://github.com/kvark/blade +[blade-video]: https://youtu.be/Q5IUOvuXoC8 + +### [Jarl][jarl-video] | [@zaycev] | [Video link][jarl-video] + +[![Jarl](jarl.jpg)][jarl-video] + +> A fantasy colony simulator. **[Video link][jarl-video]** + +**Links:** + +- GitHub: [@zaycev] +- Website: [Jarl Game] +- Twitter: [@jarl_game] +- YouTube: [Jarl-Game-com] +- Discord: [Jarl Discord server] + +[@zaycev]: https://github.com/zaycev +[Jarl Game]: https://jarl-game.com/ +[@jarl_game]: https://twitter.com/jarl_game +[Jarl-Game-com]: https://www.youtube.com/@Jarl-Game-com +[Jarl Discord server]: https://discord.com/invite/Dcwemjyfbb +[jarl-video]: https://www.youtube.com/watch?v=Sv7jcyqThdM + +### [The Seeker][seeker-video] | [@inodentry], [@c12hz] | [Video link][seeker-video] + +[![Seeker](theseeker.jpg)][seeker-video] + +> A 2D platformer game. **[Video link][seeker-video]** + +**Links:** + +- Discord: [Seeker Discord server] +- GitHub: [@TheSeekerGame] + +[@c12hz]: https://github.com/c12hz +[Seeker Discord server]: https://discord.gg/b7YRzMFzBN +[@TheSeekerGame]: https://github.com/TheSeekerGame/TheSeeker +[seeker-video]: https://www.youtube.com/watch?v=EGIIKbnh-1M diff --git a/content/blog/rust-gamedev-meetup-32/jarl.jpg b/content/blog/rust-gamedev-meetup-32/jarl.jpg new file mode 100644 index 000000000..ef1c46591 Binary files /dev/null and b/content/blog/rust-gamedev-meetup-32/jarl.jpg differ diff --git a/content/blog/rust-gamedev-meetup-32/minewars.jpg b/content/blog/rust-gamedev-meetup-32/minewars.jpg new file mode 100644 index 000000000..f461e4081 Binary files /dev/null and b/content/blog/rust-gamedev-meetup-32/minewars.jpg differ diff --git a/content/blog/rust-gamedev-meetup-32/theseeker.jpg b/content/blog/rust-gamedev-meetup-32/theseeker.jpg new file mode 100644 index 000000000..c4c847fd5 Binary files /dev/null and b/content/blog/rust-gamedev-meetup-32/theseeker.jpg differ diff --git a/content/blog/rust-gamedev-meetup-33/blue-engine.png b/content/blog/rust-gamedev-meetup-33/blue-engine.png new file mode 100644 index 000000000..c24907b28 Binary files /dev/null and b/content/blog/rust-gamedev-meetup-33/blue-engine.png differ diff --git a/content/blog/rust-gamedev-meetup-33/bones.png b/content/blog/rust-gamedev-meetup-33/bones.png new file mode 100644 index 000000000..c25afb22c Binary files /dev/null and b/content/blog/rust-gamedev-meetup-33/bones.png differ diff --git a/content/blog/rust-gamedev-meetup-33/galaxion.png b/content/blog/rust-gamedev-meetup-33/galaxion.png new file mode 100644 index 000000000..525d45c72 Binary files /dev/null and b/content/blog/rust-gamedev-meetup-33/galaxion.png differ diff --git a/content/blog/rust-gamedev-meetup-33/gamedev-meetup.png b/content/blog/rust-gamedev-meetup-33/gamedev-meetup.png new file mode 100644 index 000000000..af9706bea Binary files /dev/null and b/content/blog/rust-gamedev-meetup-33/gamedev-meetup.png differ diff --git a/content/blog/rust-gamedev-meetup-33/index.md b/content/blog/rust-gamedev-meetup-33/index.md new file mode 100644 index 000000000..682b2438c --- /dev/null +++ b/content/blog/rust-gamedev-meetup-33/index.md @@ -0,0 +1,84 @@ ++++ +title = "Rust Gamedev Meetup 33" +date = 2023-12-09 +transparent = true +aliases = ["posts/gamedev-meetup-33"] ++++ + + + + + +![Rust Gamedev Meetup](gamedev-meetup.png) + +The 33rd Rust Gamedev Meetup took place on December 9th. You can watch the +recording of the meetup [here on YouTube][meetup-video]. The meetup took +place on the Rust Gamedev [YouTube][youtube-stream] and [Twitch][twitch-stream]. +The meetups take place on the second Saturday of every month via the [Rust +Gamedev Discord server][rust-gamedev-discord] and are also [streamed on +Twitch][rust-gamedev-twitch]. + +[rust-gamedev-discord]: https://discord.gg/yNtPTb2 +[rust-gamedev-twitch]: https://twitch.tv/rustgamedev +[meetup-video]: https://www.youtube.com/watch?v=eItRSKJGV1I +[youtube-stream]: https://www.youtube.com/@RustGameDevelopment +[twitch-stream]: https://www.twitch.tv/RustGameDev + +## Talks + +### [Blue Engine][blue-engine-video] | [@ElhamAryanpur] + +[![Blue Engine](blue-engine.png)][blue-engine-video] + +> Updates about community work for the Blue Engine, as well as future engine +> features coming up. + +**Links:** + +- [Blue Engine GitHub repository] +- [Blue Engine Discord server] + +[@ElhamAryanpur]: https://github.com/ElhamAryanpur +[blue-engine-video]: https://www.youtube.com/watch?v=7u9YrBOnTww +[Blue Engine GitHub repository]: https://github.com/AryanpurTech/BlueEngine +[Blue Engine Discord server]: https://discord.gg/s7xsj9q + +### [Galaxion Trade Wars][galaxion-trade-wars-video] | [@Syn-Nine] + +[![Galaxion Trade Wars](galaxion.png)][galaxion-trade-wars-video] + +> Space Trading Game made in Rust based on the Trade Wars 2002 BBS game. + +**Links:** + +- [Galaxion Trade Wars GitHub repository] +- [Syn-Nine Twitter] +- [Syn-Nine Website] + +[@Syn-Nine]: https://github.com/Syn-Nine +[galaxion-trade-wars-video]: https://www.youtube.com/watch?v=oNx5wqAsvXM +[Galaxion Trade Wars GitHub repository]: https://github.com/Syn-Nine/galaxion-trade-empire/ +[Syn-Nine Twitter]: https://twitter.com/Syn9Dev +[Syn-Nine Website]: https://syn9.thehideoutgames.com/ + +### [Bones Engine][bones-engine-video] | [@zicklag] + +[![Bones Engine](bones.png)][bones-engine-video] + +> A 'meta-engine' framework made to facilitate the development of moddable, +> multiplayer 2D games. + +**Links:** + +- [@zicklag] +- [Bone Engine GitHub repository] +- [Jumpy GitHub repository] +- [Jumpy's Migration to the Bones Framework] +- [Introducing Lua Scripting in Jumpy] + +[@zicklag]: https://github.com/zicklag +[bones-engine-video]: https://www.youtube.com/watch?v=bEyZubAx_oM +[Bone Engine GitHub repository]: https://github.com/fishfolk/bones +[Jumpy GitHub repository]: https://github.com/fishfolk/jumpy +[Jumpy's Migration to the Bones Framework]: https://fishfolk.org/blog/jumpy-migration-to-bones-framework/ +[Introducing Lua Scripting in Jumpy]: https://fishfolk.org/blog/introducing-lua-scripting-in-jumpy/ diff --git a/content/blog/survey-02/ai.png b/content/blog/survey-02/ai.png new file mode 100644 index 000000000..3388c8def Binary files /dev/null and b/content/blog/survey-02/ai.png differ diff --git a/content/blog/survey-02/ai_contributions.png b/content/blog/survey-02/ai_contributions.png new file mode 100644 index 000000000..ab09afa69 Binary files /dev/null and b/content/blog/survey-02/ai_contributions.png differ diff --git a/content/blog/survey-02/comment.png b/content/blog/survey-02/comment.png new file mode 100644 index 000000000..7d2355ead Binary files /dev/null and b/content/blog/survey-02/comment.png differ diff --git a/content/blog/survey-02/content_quantity.png b/content/blog/survey-02/content_quantity.png new file mode 100644 index 000000000..55e1489df Binary files /dev/null and b/content/blog/survey-02/content_quantity.png differ diff --git a/content/blog/survey-02/contributions copy.png b/content/blog/survey-02/contributions copy.png new file mode 100644 index 000000000..849c65bb8 Binary files /dev/null and b/content/blog/survey-02/contributions copy.png differ diff --git a/content/blog/survey-02/contributions.png b/content/blog/survey-02/contributions.png new file mode 100644 index 000000000..849c65bb8 Binary files /dev/null and b/content/blog/survey-02/contributions.png differ diff --git a/content/blog/survey-02/ease.png b/content/blog/survey-02/ease.png new file mode 100644 index 000000000..f8f2a6524 Binary files /dev/null and b/content/blog/survey-02/ease.png differ diff --git a/content/blog/survey-02/ease_contributions.png b/content/blog/survey-02/ease_contributions.png new file mode 100644 index 000000000..9a386555d Binary files /dev/null and b/content/blog/survey-02/ease_contributions.png differ diff --git a/content/blog/survey-02/excitement.png b/content/blog/survey-02/excitement.png new file mode 100644 index 000000000..4b2be800e Binary files /dev/null and b/content/blog/survey-02/excitement.png differ diff --git a/content/blog/survey-02/excitement_contributions.png b/content/blog/survey-02/excitement_contributions.png new file mode 100644 index 000000000..73f05498a Binary files /dev/null and b/content/blog/survey-02/excitement_contributions.png differ diff --git a/content/blog/survey-02/frequency.png b/content/blog/survey-02/frequency.png new file mode 100644 index 000000000..0a4fbc9dd Binary files /dev/null and b/content/blog/survey-02/frequency.png differ diff --git a/content/blog/survey-02/improve.png b/content/blog/survey-02/improve.png new file mode 100644 index 000000000..ff4eadb71 Binary files /dev/null and b/content/blog/survey-02/improve.png differ diff --git a/content/blog/survey-02/index.md b/content/blog/survey-02/index.md new file mode 100644 index 000000000..095abfcd1 --- /dev/null +++ b/content/blog/survey-02/index.md @@ -0,0 +1,214 @@ ++++ +title = "Newsletter Survey Results" +date = 2024-06-03 +transparent = true +draft = false ++++ + +Since we are [rebooting the newsletter](https://gamedev.rs/blog/newsletter-changes/), we wanted to know more about our readers. +52 of you filled out the survey last month. Thank you very much! + +The biggest takeaways are: +- People are generally excited about the newsletter +- The current frequency of the newsletter is good +- Readers do not want anything in the newsletter generated by AI +- Contributing to the newsletter could be easier. If you've got ideas on how to make this happen, please [let us know](https://github.com/rust-gamedev/rust-gamedev.github.io/issues/1519)! + +We will now go through the results in the same order as the questions were asked. The full analysis and data is open-sourced on [GitHub](https://github.com/janhohenheim/rust-gamedev-statistics/tree/main/jan-hohenheim-2024). + +## Excitement + +![Excitement barplot](excitement.png) + +On average, readers are excited about the newsletter. The mean excitement level is 3.6 out of 5, the median is 4. +Our 95% confidence interval is [3.32, 3.91] using a standard error of 0.15 (sd = 1.05, n = 52). + +These are fairly nice results. Anecdotally, we got a lot of messages about issues with the newsletter and how to improve it, +so we are happy to see that the excitement is still high. Still, the data shows that we have room for improvement. + +## Content Quantity + +![Content quantity barplot](content_quantity.png) + + +When asked about how to change the amount of content per newsletter, the majority of readers (58%) voted to leave the amount as-is or don't care. +On the other hand, this means nearly half of the readers would change something about the content quantity. +17% voted for "less content; keep only the most important news" and 25% for "more content; add sections for minor news". +These two options are luckily not mutually exclusive. +One option we could implement is to have a new section for "minor news" where we don't go into detail, +and a section for "miscellaneous links" where we only list some links without any commentary. + +## Newsletter Frequency + +![Newsletter frequency barplot](frequency.png) + +73% of readers are either happy with the current frequency or don't care. A minority of 21% would like the newsletter to become quarterly. +Arguments we've heard for this are that a lower frequency would allow editors to improve the quality that goes into each newsletter. +Counterarguments include that a lower frequency would make the newsletter less timely. +Things like calls for playtesters or job offers would be less useful if they were only sent out every three months. + +## AI + +![AI barplot](ai.png) + +This question was a catalyst for a lot of discussion on [Discord]. + +If we interpret the answers as a scale of 1-5, where 1 is "not okay at all" and 5 is "I love it", the mean answer was 2.25, the median 2. +Notably, the mode is tied at 1 and 2. The 95% confidence interval is [1.89, 2.61] using a standard error of 0.18 (sd = 1.30, n = 52). +People are generally against using an LLM to generate summaries. 79.2% of readers would prefer not to use AI. + +Viewed from another angle: while a majority of readers (65%) are at least okay with AI-generated summaries, +a significant minority (35%) are not okay at all with this proposal. +These include very active members of the community and +contributors who have announced that they would no longer want their content to be included in the newsletter if AI was used. + +The reasons people gave for not wanting AI-generated summaries were varied. +Among these were: +- Solidarity with the large number of creatives who recently lost their jobs due to AI-generated content, +inside and outside the game development industry. +- Concerns about the quality of AI-generated summaries. +- Skepticism about AI-generated summaries saving time if they still need to be edited by hand. + +## Tone + +![Tone barplot](tone.png) + +A significant majority of readers (86.5%) are happy with the current tone of the newsletter, with a minority of 11.5% wanting a less formal tone. +While votes for the latter did not reach a majority, the written feedback we got included quite a few requests for more "personality" in the newsletter. + +## Contributions + +![Contributions barplot](contributions.png) + +The majority of readers (61.5%) have not yet contributed to the newsletter and 26.9% have contributed 2-5 times. +Only 3.8% contributed exactly once, while the rest (7.7%) are heavy contributors, helping us out more than five times. + +While it might seem weird that more people contributed 2-5 times than exactly once, +keep in mind that the former is the sum of people who contributed twice, thrice, four times, and five times. +The reason we binned these together is that we are interested in the following categories: +- Pure readers +- People who contributed once and then stopped +- People who contributed a few times +- People who are regular contributors + +We are happy to see that people who contributed once seem to continue contributing in the future. + +## Ease + +![Ease barplot](ease.png) + +The mean ease of contributing is 3.0, and the median is 3. The 95% confidence interval is [2.5, 3.6] using a standard error of 0.26 (sd = 1.26, n = 23). + +Readers generally feel neutral about the ease of contributing to the newsletter. + +We can do better here, but we are not sure yet how. +We'd love to hear your ideas on [GitHub](https://github.com/rust-gamedev/rust-gamedev.github.io/issues/1519) or on [Discord] (ping @janhohenheim). + +## Keeping up with the newsletter + +![Keeping up barplot](informed.png) + +This was a multiple-choice question. The most popular source of information about the newsletter is RSS (27.5%). +If we add the choices for the official [Rust GameDev Discord server][Discord] (21.7%) and other Discord servers (11.6%), +Discord in general becomes the leading source of information (33.3%), taking up nearly exactly a third of all votes. + +We can see the shift from X / Twitter to Mastodon reported by many OSS communities in our readers as well. +Lemmy is not looking popular as an alternative to Reddit yet, with no reader reporting it as a source of information. + +The "Email" option in the survey is meant for people who have set up some kind of email alerts manually. + +Per written feedback, a lot of people want to see proper email subscriptions implemented. While this was a goal for this month, +we have not managed to implement it yet. +We will try to [get this done](https://github.com/rust-gamedev/rust-gamedev.github.io/issues/24) for the next newsletter. + +## What is going well + +![What is going well wordcloud](like.png) + +This was a free-text question. The above is a word cloud of the answers with some obvious words like "game" or "newsletter" removed. +Note that the inclusion of the word "AI" is misleading, as it was only mentioned in answers that read similar to +"I like that we don't use AI, please don't use LLMs". + +Going through the feedback by hand, common things readers enjoy about the newsletter are: +- A good mix of content +- Very open to contributions +- Small-scale games are featured, not just success stories or technical articles + +## What needs to be improved + +![What needs to be improved wordcloud](improve.png) + +Another free-text question. The feedback here is fairly diverse. The most common complaints we already mentioned in previous sections are: +- Add an email subscription +- Improve the ease of contributing + +Additionally, many people feel like the "Games" section reads more like an advertisement than an article aimed at other game developers. + +Among the more unique suggestions were: +- Conduct interviews +- Have a stronger sense of personality in the writing +- Make the newsletter more consistent in timing and quantity +- Have more editors to not overburden the current ones +- Have some more clarity of purpose + + +## Comments + +![Comments wordcloud](comment.png) + +This last free-text question was meant for any additional comments readers might have. +The word cloud above is dominated by one sentence: "Thank you for your work". Thank you very very much for your kind words! +We are working on this newsletter in our free time because we love the community and Rust game development, so reading this means a lot to us. + +## Correlations + +We were interested in how the responses to some questions correlated with how much people had already contributed to the newsletter. +Long story short: it seems like there is no significant correlation between how much people contributed and how they answered the other questions. + +Let's look at the correlations in turn now. +Note that all the following plots are jittered to make the data more readable. + + +### Excitement By Contributions + +![Excitement correlation](excitement_contributions.png) + +We hypothesized that people who contributed more to the newsletter would be more excited about it. +We found no evidence for this (the p-value of a Jonckheere-Terpstra test for increasing trend is 0.986). +Based on the plot above, we then hypothesized that the opposite might be true, namely that frequent contributors are less excited about the newsletter. +This actually might be the case (p-value is 0.021), but do not take this as a strong result. +It is a posthoc hypothesis and the resulting p-value is not very low considering the number of tests we run in this analysis. +For these reasons, we do not consider this result to be significant. + +### Feelings About AI By Contributions + +![AI correlation](ai_contributions.png) + +We hypothesized that there would be a correlation between how much people contributed to the newsletter and how they felt about AI-generated summaries. +We found no evidence for this (the p-value of a Jonckheere-Terpstra test for a two-sided alternative is 0.57). + +### Ease of Contributing By Contributions + +![Ease correlation](ease_contributions.png) + +We hypothesized that there would be a correlation between how much people contributed to the newsletter and how easily they found it to contribute. + +We found no evidence for this (the p-value of a Jonckheere-Terpstra test for a two-sided alternative is 0.25). + +## Conclusion + +All in all, we are happy with the results of the survey. +It seems like our readers are generally happy with the newsletter, and have good ideas on how to improve it. +We will discuss how to implement these ideas in the future and keep you updated on our progress. + +If you are interested in helping us out, we are always looking for new editors and contributors. Just leave us a message on [Discord] or [GitHub]. + +Again, thank you very much for your feedback. Rebooting the newsletter was a big ordeal for us, +and we are happy to see such an active interest in the community. We hope that we can continue to provide you with a newsletter you enjoy. + +Until next time! + +~ The Rust GameDev Newsletter Team, and Jan Hohenheim in particular + +[Discord]: https://discord.gg/yNtPTb2 +[GitHub]: https://github.com/rust-gamedev/rust-gamedev.github.io diff --git a/content/blog/survey-02/informed.png b/content/blog/survey-02/informed.png new file mode 100644 index 000000000..3616d4a7a Binary files /dev/null and b/content/blog/survey-02/informed.png differ diff --git a/content/blog/survey-02/like.png b/content/blog/survey-02/like.png new file mode 100644 index 000000000..d17610ac1 Binary files /dev/null and b/content/blog/survey-02/like.png differ diff --git a/content/blog/survey-02/tone.png b/content/blog/survey-02/tone.png new file mode 100644 index 000000000..6a4c4b6dd Binary files /dev/null and b/content/blog/survey-02/tone.png differ diff --git a/content/news/001/index.md b/content/news/001/index.md index f0d53f4a2..d4bc25734 100644 --- a/content/news/001/index.md +++ b/content/news/001/index.md @@ -115,8 +115,11 @@ Also, check out ### Way of Rhea [Trailer][rhea trailer] and [Steam Wishlist][rhea steam] Announced -[![Part of the trailer](way-of-rhea.gif)][rhea trailer] -_click on the GIF to see [the full trailer][rhea trailer]_ +{{ image_figure( + alt="Part of the trailer" + src="way-of-rhea.gif" + caption="click on the GIF to see [the full trailer](https://youtube.com/watch?v=VIzqlI-gbAY)", + link="https://youtube.com/watch?v=VIzqlI-gbAY") }} [A new trailer][rhea trailer] and the [Steam wishlist][rhea steam] were published for "Way of Rhea" by [Anthropic Studios]. @@ -464,7 +467,7 @@ Special section for other news (up to 15) in a one-liner format: [Alex Butler]: https://twitter.com/bigabgames [roboinstructus 1.0]: https://reddit.com/r/rust/comments/cdw1ct/robo_instructus_is_out_now_programming_puzzle -## Popular Workgroup Issues in Github +## Popular Workgroup Issues in GitHub @@ -520,8 +523,11 @@ by [Michael Fairley] was released: > Clear a path to get to the hole, eat some eggs along the way, > and make sure to press all the buttons. -[![Part of A snake's Tail's trailer](a-snakes-tail.gif)][snake trailer] -_click on the GIF to see [the full release trailer][snake trailer]_ +{{ image_figure( + alt="Part of A snake's Tail's trailer" + src="a-snakes-tail.gif" + caption="click on the GIF to see [the full release trailer](https://www.youtube.com/watch?v=23pQmEuueNw)", + link="https://www.youtube.com/watch?v=23pQmEuueNw") }} A few posts about the game and how it was developed: diff --git a/content/news/002/index.md b/content/news/002/index.md index e6601dc3f..3b75a4a87 100644 --- a/content/news/002/index.md +++ b/content/news/002/index.md @@ -461,11 +461,11 @@ _Discussions: ![Live2D Piston demo](live2d-cubism.png) -- ["Github Actions CI with Rust and SDL2"] - +- ["GitHub Actions CI with Rust and SDL2"] - [Alexandru Ene] wrote a post about CI with [github actions] for [their hobby game project][after-hours] that uses Rust and SDL2. - ![Github Actions with SDL2 screencast demo](github_actions_ci.gif) + ![GitHub Actions with SDL2 screencast demo](github_actions_ci.gif) - [@phaazon] released [luminance] 0.33 that [brings geometry instancing support](https://reddit.com/r/rust/comments/d0us73/announcement_luminance033); @@ -527,7 +527,7 @@ but I'm too tired to this atm and it will be rendered correctly anyway. --> [Alexandru Ene]: https://twitter.com/_AlexEne_ -["Github Actions CI with Rust and SDL2"]: https://alexene.dev/2019/09/04/Github-actions-CI-rust-SDL2.html +["GitHub Actions CI with Rust and SDL2"]: https://alexene.dev/2019/09/04/Github-actions-CI-rust-SDL2.html [github actions]: https://github.com/features/actions [after-hours]: https://alexene.dev/2019/01/15/After-hours-game-development.html [Xprite]: https://pickitup247.com/xprite.html @@ -568,7 +568,7 @@ but I'm too tired to this atm and it will be rendered correctly anyway. [imgui-inspect]: https://github.com/aclysma/imgui-inspect [minimum]: https://github.com/aclysma/minimum -## Popular Workgroup Issues in Github +## Popular Workgroup Issues in GitHub diff --git a/content/news/003/index.md b/content/news/003/index.md index b6ab52045..74851e5c5 100644 --- a/content/news/003/index.md +++ b/content/news/003/index.md @@ -523,8 +523,10 @@ Also, see this GameDev WG tracker/complaint issue: ### [RLSL][rlsl]: a Rust to SPIR-V Compiler -![RLSL code sample](rlsl-example.png) -_a simple fragment shader that renders a red circle (temporary syntax)_ +{{ image_figure( + alt="RLSL code sample" + src="rlsl-example.png" + caption="a simple fragment shader that renders a red circle (temporary syntax)") }} This month, [@MaikKlein_DEV] gave a talk at [The Khronos Group](https://www.khronos.org)'s meetup in Munich @@ -557,8 +559,10 @@ _Discussions: ### [gfx-rs v0.4][gfx-v0-4] -![sailor screenshot: vector terrain map and some basic UI](sailor.png) -_a screenshot from [Yatekii/sailor] - a wgpu-based sailing navigation application_ +{{ image_figure( + alt="sailor screenshot: vector terrain map and some basic UI" + src="sailor.png" + caption="a screenshot from [Yatekii/sailor](https://github.com/Yatekii/sailor) - a wgpu-based sailing navigation application") }} [gfx-rs v0.4 was released](https://reddit.com/r/rust/comments/dm89t2/gfxhal_version_04_release): major changes were described in [the last blog post](https://gfx-rs.github.io/2019/10/01/update.html), @@ -683,8 +687,11 @@ _Discussions: ### [cyclone-physics-rs] -[![cyclone physics demo](cyclone-physics-demo.gif)][cyclone-video-demo] -_a little demo of "particle" simulation_ +{{ image_figure( + alt="cyclone physics demo", + src="cyclone-physics-demo.gif", + caption='a little demo of "particle" simulation', + link="https://twitter.com/heyrutvik/status/1180072669250834432") }} [cyclone-physics-rs] by [@heyrutvik] a new WIP game physics engine based on the ["Game Physics Engine Development" book][cyclone-physics-book]. @@ -793,7 +800,7 @@ _Discussions: [Amethyst organization]: https://github.com/amethyst [@_AndreaCatania]: https://twitter.com/_AndreaCatania -## Popular Workgroup Issues in Github +## Popular Workgroup Issues in GitHub diff --git a/content/news/004/index.md b/content/news/004/index.md index d8d959bc3..e97bf85aa 100644 --- a/content/news/004/index.md +++ b/content/news/004/index.md @@ -201,8 +201,11 @@ about the implementation of a drop table system to handle monster loot. ### [Recall Singularity: November Progress][recall-s-nov-text] -[![Demo of the basic ship collision](recall-sing.gif)][recall-s-nov-video] -_Demo of the basic ship collision._ +{{ image_figure( + alt="Demo of the basic ship collision" + src="recall-sing.gif" + caption="Demo of the basic ship collision.", + link="https://youtube.com/watch?v=AoPSAoqmTCk") }} [Tom Leys] is working on a "The Recall Singularity" game about designing autonomous factory ships and stations @@ -721,7 +724,7 @@ Check out the [online Demo][rust-nes-demo]. [Blaine Price]: https://blaineprice.me [@mvlabat]: https://github.com/mvlabat -## Popular Workgroup Issues in Github +## Popular Workgroup Issues in GitHub @@ -777,8 +780,11 @@ and highlight events from the past. --> Just an interesting Rust gamedev link from the past. :) -[![Pascal Penguin logo](penguin.png)][penguin-video] -_click to see the [release trailer][penguin-video]_ +{{ image_figure( + alt="Pascal Penguin logo" + src="penguin.png" + caption="click to see the [release trailer](https://youtube.com/watch?v=EgFr73AUwps)", + link="https://youtube.com/watch?v=EgFr73AUwps") }} ["Adventures of Pascal Penguin"][penguin-about] by [Matthew Michelotti](http://luduminis.com) diff --git a/content/news/005/index.md b/content/news/005/index.md index 3146d799d..25e14d6d6 100644 --- a/content/news/005/index.md +++ b/content/news/005/index.md @@ -258,8 +258,11 @@ _Discussions: ### [Garden Devlog: December][garden-dec] -[![Playing with dirt](garden.gif)][garden-video] -_new smooth soil editing demo_ +{{ image_figure( + alt="Playing with dirt" + src="garden.gif" + caption="new smooth soil editing demo", + link="https://youtube.com/watch?v=xU93FGrk1d8") }} [Garden][garden] is an upcoming game centered around growing realistic plants. @@ -802,7 +805,7 @@ Here're some of the Rust news from it: [inside-rust]: https://medium.com/embarkstudios/inside-rust-at-embark-b82c06d1d9f4 [cargo-about]: https://github.com/embarkstudios/cargo-about -## Popular Workgroup Issues in Github +## Popular Workgroup Issues in GitHub @@ -855,8 +858,11 @@ and highlight events from the past. --> Just an interesting Rust gamedev link from the past. :) -[![Modulator video](modulator_youtube.gif)][modulator-video] -_click to see [the tutorial video][modulator-video]_ +{{ image_figure( + alt="Modulator video" + src="modulator_youtube.gif" + caption="click to see [the tutorial video][modulator-video]", + link="modulator-video") }} In the November of 2018, [@AndreaPessino] (Founder/CTO of [Ready At Dawn] Studios) diff --git a/content/news/006/index.md b/content/news/006/index.md index 0b62ad87f..1c06e7994 100644 --- a/content/news/006/index.md +++ b/content/news/006/index.md @@ -838,8 +838,10 @@ Btw, [@resinten] continues working on a luminance-based game: ### [SPIR-Q][spir-q] v0.4.1 -![Example walking an entry point of a SPIR-V file](spir-q.png) -_Example walking an entry point of a SPIR-V file_ +{{ image_figure( + alt="Example walking an entry point of a SPIR-V file" + src="spir-q.png" + caption="Example walking an entry point of a SPIR-V file") }} [SPIR-Q][spir-q] is a lightweight [SPIR-V] query library. This month v0.2..v0.4.1 versions were released: @@ -962,7 +964,7 @@ _Discussions: [nestur]: https://github.com/spieglt/nestur -## Popular Workgroup Issues in Github +## Popular Workgroup Issues in GitHub diff --git a/content/news/007/index.md b/content/news/007/index.md index 2c4c7e8e5..3d168d99a 100644 --- a/content/news/007/index.md +++ b/content/news/007/index.md @@ -177,8 +177,10 @@ This month an alpha version was published on itch: [check it out here][colony-it ### [Veloren][veloren] -![Rolling mountain landscape](veloren1.png) -_Rolling mountain landscape_ +{{ image_figure( + alt="Rolling mountain landscape" + src="veloren1.png" + caption="Rolling mountain landscape") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -214,8 +216,11 @@ Here is the February changelog: - Added music system ``` -[![veloren development](veloren3.gif)](https://youtube.com/watch?v=1ldHQfxCT24) -_1 year of Veloren development. Click for the full video!_ +{{ image_figure( + alt="veloren development" + src="veloren3.gif" + caption="1 year of Veloren development. Click for the full video!" + link="https://youtube.com/watch?v=1ldHQfxCT24") }} You can read more about some specific topics: @@ -243,8 +248,11 @@ February's full weekly devlogs: "This Week In Veloren...": ### [Oxidator][oxidator] -[![Gameplay demo: two giant tank armies clashing](oxidator-play.gif)][oxidator-video-play] -_gameplay demo (35000 units)_ +{{ image_figure( + alt="Gameplay demo: two giant tank armies clashing" + src="oxidator-play.gif" + caption="gameplay demo (35000 units)", + link="https://streamable.com/499j0") }} [Oxidator][oxidator] by [@Ruddle] is a real-time strategy game/engine written with Rust and WebGPU. @@ -270,11 +278,17 @@ Some of the current features: - 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_ +{{ image_figure( + alt="Unit editor demo: move agent's parts" + src="oxidator-unit-editor.gif" + caption="Demo of the unit editor", + link="https://streamable.com/ywr44") }} -[![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_ +{{ image_figure( + alt="Map editor demo: use pencil tool to instantly create a lake and mountains" + src="oxidator-map-editor.gif" + caption="Demo of the map editor", + link="https://github.com/Ruddle/oxidator/blob/be4863e74/etc/map_editor.gif") }} [oxidator]: https://github.com/Ruddle/oxidator [@Ruddle]: https://github.com/Ruddle @@ -485,9 +499,11 @@ Tetra itself also received two small updates recently: ### [Akigi][akigi] -![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._ +{{ image_figure( + alt="High detail terrain chunk with PRR" + src="akigi.png" + caption="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. @@ -590,8 +606,10 @@ Check them out in the [latest winter devlog][grumpy_visitors]. ### [Make China Great Again][china-great] -![cities, planes and keys](china.png) -_Turn back planes to the port, by clicking right keys to the virus beat._ +{{ image_figure( + alt="cities, planes and keys" + src="china.png" + caption="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]. @@ -633,8 +651,10 @@ dependency updates, bugfixes and performance optimizations. ### [Recall Singularity: February Progress][recall-s-feb] -![Harvesting and refining some Gold](recall-singularity.png) -_Harvesting and refining some Gold._ +{{ image_figure( + alt="Harvesting and refining some Gold" + src="recall-singularity.png" + caption="Harvesting and refining some Gold.") }} [Tom Leys] is working on a "The Recall Singularity" game about designing autonomous factory ships and stations. @@ -905,8 +925,10 @@ A showcase game is [being developed](https://github.com/lcnr/akari) with crow. ### miniquad: ["Rust 2D Engine 2020 Roadmap"][fedor-road] -![mainloop async/await experiment in macroquad](miniquad-sample.png) -_mainloop async/await experiment in macroquad_ +{{ image_figure( + alt="mainloop async/await experiment in macroquad" + src="miniquad-sample.png" + caption="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. @@ -1160,7 +1182,7 @@ It uses vulkan and skia for rendering. [neovide]: https://github.com/Kethku/neovide -## Popular Workgroup Issues in Github +## Popular Workgroup Issues in GitHub diff --git a/content/news/008/index.md b/content/news/008/index.md index 417f9993d..0af92e25e 100644 --- a/content/news/008/index.md +++ b/content/news/008/index.md @@ -334,8 +334,10 @@ Some of this month's updates: ### [Veloren][veloren] -![LoD](veloren1.png) -_Work on Level of Detail_ +{{ image_figure( + alt="LoD" + src="veloren1.png" + caption="Work on Level of Detail") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -433,8 +435,10 @@ Main updates: ### gfx-rs and wgpu news -![Deeper game](deeper.png) -_[deeper] uses wgpu for rendering_ +{{ image_figure( + alt="Deeper game" + src="deeper.png" + caption="[deeper](https://github.com/arnfaldur/deeper) uses wgpu for rendering") }} [gfx-hal-0.5](https://github.com/gfx-rs/gfx/) was released! Improvements done in March: @@ -517,8 +521,10 @@ Some of this month's updates: ### [Nannou v0.13][nannou-post] -![Daily Sketch 0114 by Mactuitui](nannou.png) -_Daily Sketch 0114 by Mactuitui_ +{{ image_figure( + alt="Daily Sketch 0114 by Mactuitui" + src="nannou.png" + caption="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. @@ -760,7 +766,7 @@ Full documentation is available at the [rectangle-pack docs.rs section][rectangl [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 +## Popular Workgroup Issues in GitHub diff --git a/content/news/009/index.md b/content/news/009/index.md index 648a2a32a..a3bb90147 100644 --- a/content/news/009/index.md +++ b/content/news/009/index.md @@ -247,8 +247,10 @@ Follow [@seratonik] on Twitter for updates. ### [Akigi][akigi] -![shadows demo](akigi-shadows.jpeg) -_new shadows_ +{{ image_figure( + alt="shadows demo" + src="akigi-shadows.jpeg" + caption="new shadows") }} > [Akigi][akigi] is a multiplayer online world where humans > aren't the only intelligent animals. @@ -479,8 +481,10 @@ Here's a roundup of some of them: ### [Veloren][veloren] -![Buildings](veloren1.png) -_Early procedural building generation_ +{{ image_figure( + alt="Buildings" + src="veloren1.png" + caption="Early procedural building generation") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -517,8 +521,10 @@ Here is the April changelog: - You can start the game by pressing "enter" from the character selection menu ``` -![Hanging out](veloren2.png) -_Early procedural building generation_ +{{ image_figure( + alt="Hanging out" + src="veloren2.png" + caption="Early procedural building generation") }} You can read more about some specific topics from April: @@ -632,9 +638,11 @@ explaining why they've chosen Rust for their project's backend. ### [Symmetric Matrices & Triangle Numbers][matrices-post] -![an example of a multi-layered game level](rhea-player-orb.jpeg) -_The pink orb should not collide with the player, -but it should collide with the ground._ +{{ image_figure( + alt="an example of a multi-layered game level" + src="rhea-player-orb.jpeg" + caption="The pink orb should not collide with the player, + but it should collide with the ground.") }} [Anthropic Studios][anthropic] has [shared a post][matrices-post] about implementing a layer system to ["Way of Rhea"'s][rhea] physics engine @@ -738,8 +746,10 @@ and additional information about contributing are available on the [github repos ### `gfx-rs` and `wgpu` News -![hectic screenshot: graveyard and vampires](hectic.png) -_[hectic-rs] - Rust/wgpu/specs re-write of hectic by [@expenses]_ +{{ image_figure( + alt="hectic screenshot: graveyard and vampires" + src="hectic.png" + caption="[hectic-rs](https://github.com/expenses/hectic-rs) - Rust/wgpu/specs re-write of hectic by [@expenses](https://github.com/expenses)") }} wgpu-0.5 release happened! See the [changelog][wgpu-0-5]. It's based on `gfx-hal-0.5` (which was covered in the [March newsletter][gfx-march]), @@ -883,8 +893,10 @@ in an eternally sprawling office complex. ### [miniquad] -![miniquad logo](miniquad_logo.png) -_`miniquad` project got a logo_ +{{ image_figure( + alt="miniquad logo" + src="miniquad_logo.png" + caption="`miniquad` project got a logo") }} [miniquad] is a safe and cross-platform rendering library focused on portability and low-end platforms support. @@ -1075,7 +1087,7 @@ _Discussions: [Godot]: https://godotengine.org @@ -1124,8 +1136,10 @@ and highlight events from the past. --> Just an interesting Rust gamedev link from the past. :) -![example](valora-example.jpeg) -_"dead end" by turnage, 2019_ +{{ image_figure( + alt="example" + src="valora-example.jpeg" + caption=""dead end" by turnage, 2019") }} A few months ago a generative art library ["valora"][valora-src] was released by [@turnage]. diff --git a/content/news/010/index.md b/content/news/010/index.md index 49237a5f1..241bfb18f 100644 --- a/content/news/010/index.md +++ b/content/news/010/index.md @@ -30,7 +30,7 @@ Table of contents: - [Game Updates](#game-updates) - [Learning Material Updates](#learning-material-updates) - [Library & Tooling Updates](#library-tooling-updates) -- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github) +- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github) - [Meeting Minutes](#meeting-minutes) - [Requests for Contribution](#requests-for-contribution) - [Jobs](#jobs) @@ -64,8 +64,10 @@ If needed, a section can be split into subsections with a "------" delimiter. ### [Veloren][veloren] -![Buildings](veloren1.png) -_The new repo banner_ +{{ image_figure( + alt="Buildings" + src="veloren1.png" + caption="The new repo banner") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -79,8 +81,11 @@ release as well. Veloren also now has an [Open Collective account][veloren-opencollective], and you can donate towards our infrastructure costs. GamingOnLinux [wrote an article][gamingonlinux] on Veloren's development. -[![0.6 release trailer](veloren_trailer.gif)](https://www.youtube.com/watch?v=kjDFVgWYMd4) -_0.6 release trailer. Click for the full video!_ +{{ image_figure( + alt="0.6 release trailer" + src="veloren_trailer.gif" + caption="0.6 release trailer. Click for the full video!" + link="https://www.youtube.com/watch?v=kjDFVgWYMd4") }} Here is the May changelog: @@ -113,8 +118,10 @@ of 0.7, and what they wanted to achieve: > clashing together. I want to be able to add people to my combat party and > interact with the game UI to do this. -![Welcome to Veloren](veloren2.png) -_Welcome to Veloren! From the 0.6 release party_ +{{ image_figure( + alt="Welcome to Veloren" + src="veloren2.png" + caption="Welcome to Veloren! From the 0.6 release party") }} You can read more about some specific topics from May: @@ -213,8 +220,11 @@ Some of the updates: ### [Sandbox] -[![Sandbox gameplay demo](sandbox.jpeg)](https://streamable.com/0bhbol#) -_click to see a gameplay demo_ +{{ image_figure( + alt="Sandbox gameplay demo" + src="sandbox.jpeg" + caption="click to see a gameplay demo" + link="https://streamable.com/0bhbol#") }} [Sandbox] is a falling sand game by JMS55 that provides a variety of fun particle types to place, and then you get to watch the resulting interactions! @@ -320,8 +330,11 @@ Follow [@seratonik] on Twitter for updates. ### [Crate Before Attack][cratebeforeattack-site] -[![screenshot: decision tree and goal distance map in the background](crate_before_attack.png)][cratebeforeattack-site] -_Decision tree and goal distance map in the background_ +{{ image_figure( + alt="screenshot: decision tree and goal distance map in the background" + src="crate_before_attack.png" + caption="Decision tree and goal distance map in the background", + link="https://cratebeforeattack.com") }} [Crate Before Attack][cratebeforeattack-site] by [koalefant (@CrateAttack)][@CrateAttack] is a realtime/turn-based multiplayer game where frogs combat their friends @@ -377,7 +390,7 @@ Dig Escape is a simple puzzle game written in Rust. You can play it in the browser [here][digescape-game]. The developer has released [some videos][digescape-progress-video] about the development of the game. They also [did a review][digescape-rust-review] on what it was like working with Rust for -the first time. Be sure to check out the [Github repo][digescape-github]. +the first time. Be sure to check out the [GitHub repo][digescape-github]. [digescape-game]: https://tantandev.itch.io/digescape [digescape-progress-video]: https://www.youtube.com/watch?v=q6-f63vZW8Y @@ -386,8 +399,10 @@ the first time. Be sure to check out the [Github repo][digescape-github]. ### [Akigi][akigi] -![cat model](akigi1.png) -_Completed cat model with rigging_ +{{ image_figure( + alt="cat model" + src="akigi1.png" + caption="Completed cat model with rigging") }} > [Akigi][akigi] is a magical multiplayer online world where humans aren't the > only intelligent animals. Akigi is a solo project, and the developer hopes to @@ -420,8 +435,10 @@ Full devlogs: ### Nox Futura: Rust Edition -![worldgen menu](nox-f.png) -_Worldgen menu_ +{{ image_figure( + alt="worldgen menu" + src="nox-f.png" + caption="Worldgen menu") }} [Herbert Wolverson][thebracket] (the author of [bracket-lib] and [the Rust Roguelike Tutorial][rl-book]) @@ -639,8 +656,11 @@ _Discussions: ### NodeFX -[![NodeFX](nodefx.png)][NodeFXTweet] -_Click the image to see the animated version_ +{{ image_figure( + alt="NodeFX" + src="nodefx.png" + caption="Click the image to see the animated version", + link="https://twitter.com/MrVallentin/status/1256805858022998016") }} Project "NodeFX" by [Christian Vallentin (@MrVallentin)][@MrVallentin] is an unnamed node-based tool for creating GLSL shaders in real-time, @@ -964,7 +984,7 @@ Robo Instructus][otf-font-robo]. [gdnative-release]: https://twitter.com/toast_dev/status/1267071886040555520 [@toast_dev]: https://twitter.com/toast_dev -## Popular Workgroup Issues in Github +## Popular Workgroup Issues in GitHub diff --git a/content/news/011/index.md b/content/news/011/index.md index 81fb9bffb..7bb64bd71 100644 --- a/content/news/011/index.md +++ b/content/news/011/index.md @@ -31,7 +31,7 @@ Table of contents: - [Game Updates](#game-updates) - [Learning Material Updates](#learning-material-updates) - [Library & Tooling Updates](#library-tooling-updates) -- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github) +- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github) - [Meeting Minutes](#meeting-minutes) - [Requests for Contribution](#requests-for-contribution) - [Bonus](#bonus) @@ -93,8 +93,11 @@ Also, participants are encouraged to ### [Way of Rhea][rhea-site] -[![Way of Rhea Trailer](way-of-rhea.jpeg)][rhea-trailer] -_Click to see the latest version of the game's trailer_ +{{ image_figure( + alt="Way of Rhea Trailer" + src="way-of-rhea.jpeg" + caption="Click to see the latest version of the game's trailer", + link="https://youtube.com/watch?v=eVrbZss_B3g") }} [Way of Rhea][rhea-site] ([steam][rhea-steam]) is an upcoming puzzle platformer that takes place in a world @@ -129,8 +132,10 @@ or [subscribe to its newsletter][rhea-newsletter]. ### [A/B Street][abstreet] - Adjust Traffic Patterns in Real Cities -![Measuring the effects of changes](abstreet-evaluating-impacts.gif) -_Measuring the effects of some changes_ +{{ image_figure( + alt="Measuring the effects of changes" + src="abstreet-evaluating-impacts.gif" + caption="Measuring the effects of some changes") }} [A/B Street][abstreet] is a traffic simulation game exploring how small changes to roads affect cyclists, transit users, pedestrians, and drivers. @@ -160,8 +165,11 @@ A/B Street uses a [custom GUI library][ezgui], leveraging `glium`, `usvg`, and ### [Crate Before Attack][cba-site] -[![In-game visual scripting prototype](crate_before_attack.gif)][cba-youtube-scripting] -_In-game visual scripting prototype_ +{{ image_figure( + alt="In-game visual scripting prototype" + src="crate_before_attack.gif" + caption="In-game visual scripting prototype", + link="https://youtu.be/LLAc9_cOR9o") }} [Crate Before Attack][cba-site] by [koalefant (@CrateAttack)][@CrateAttack] is a skill-based grappling hook multiplayer game where frogs combat their friends @@ -211,8 +219,10 @@ Some of the updates from [the June devlog][garden-devlog]: ### [Veloren][veloren] -![Animation improvements](veloren-wolf.gif) -_Animation improvements_ +{{ image_figure( + alt="Animation improvements" + src="veloren-wolf.gif" + caption="Animation improvements") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -281,8 +291,10 @@ Also, check out [a talk about open source and Veloren][veloren-talk]: ### [Zero to Game][zerotoga.me] -![ships with greater thrust explode](zerotogame-destruction.gif) -_The initial destruction prototype applied across different thrust levels_ +{{ image_figure( + alt="ships with greater thrust explode" + src="zerotogame-destruction.gif" + caption="The initial destruction prototype applied across different thrust levels") }} [Zero to Game][zerotoga.me] is a project that documents the creation of an independent space game from zero. @@ -329,7 +341,7 @@ without any Javascript (besides a small shim). It can be played online [here][pont-online]! The system architecture is described in a [blog post][pont-blog] -and the source is available [on Github][pont-source] +and the source is available [on GitHub][pont-source] _Discussions: [/r/rust](https://www.reddit.com/r/rust/comments/gu1bq5/pont_a_board_game_in_rust_webassembly/), @@ -379,8 +391,10 @@ Web, Mac, Linux, Windows (untested) & possible even iOS & Android. ### [Animal Chess][AnimalChess] -![Part of the game map](animal-chess.jpeg) -_Part of the game map_ +{{ image_figure( + alt="Part of the game map" + src="animal-chess.jpeg" + caption="Part of the game map") }} [Animal Fight Chess][AnimalChess] (斗兽棋, "Doe Show Chee") by [@netcan] is a Rust implementation of a popular Chinese game. @@ -463,8 +477,11 @@ Two devlogs were released this month: ### [Weegames][weegames-itch] -[![Weegames](weegames.jpg)][weegames-video] -_Click to see [a demo video][weegames-video]_ +{{ image_figure( + alt="Weegames" + src="weegames.jpg" + caption="Click to see [a demo video](https://youtube.com/watch?v=A_GqhZ_7EIw)", + link="https://youtube.com/watch?v=A_GqhZ_7EIw") }} [Weegames][weegames-itch] is a fast-paced minigame collection. There are 23 odd games all made using free images and sounds. @@ -502,8 +519,11 @@ The demo's source code [could be found here][hypervis]. ### [Boids in Rust][rboids-post-1] -[![Boids demo](rboids-video.jpeg)][rboids-video] -_Click to watch [the video demo][rboids-video]_ +{{ image_figure( + alt="Boids demo" + src="rboids-video.jpeg" + caption="Click to watch [the video demo](https://drive.google.com/file/d/1ri4x-jCX8SA9oX8OqDIKtXhYIrEKlGjO/view)", + link="https://drive.google.com/file/d/1ri4x-jCX8SA9oX8OqDIKtXhYIrEKlGjO/view") }} [@twitu] has published a three-part blog series about simulating a group of virtual agents (boids) @@ -624,8 +644,10 @@ seemed like now is the time to address such issues in the API. ### [This Month in Mun][mun-june] -![Language Server Diagnostics in action](mun-languageserver.gif) -_Mun language server diagnostics in action_ +{{ image_figure( + alt="Language Server Diagnostics in action" + src="mun-languageserver.gif" + caption="Mun language server diagnostics in action") }} [Mun] is a scripting language for gamedev focused on quick iteration times that is written in Rust. @@ -658,7 +680,7 @@ different projects. A reference guide is also [available][glisp-reference] as well as [API documentation][glisp-docsrs] for integration into Rust. The crate has had its [initial release][glisp-cratesio], a roadmap and ways -to contribute are available on GameLisp's [Github Respository][glisp-github]. +to contribute are available on GameLisp's [GitHub Respository][glisp-github]. [gamelisp]: https://gamelisp.rs/ [glisp-playground]: https://gamelisp.rs/playground/ @@ -902,7 +924,7 @@ that allows you to play classic Nintendo Entertainment System games in the brows [gc-nes-src]: https://github.com/GarettCooper/gc_nes_emulator [garettcooper.com]: https://garettcooper.com/ -## Popular Workgroup Issues in Github +## Popular Workgroup Issues in GitHub diff --git a/content/news/012/index.md b/content/news/012/index.md index e1e79143f..bd2b863b6 100644 --- a/content/news/012/index.md +++ b/content/news/012/index.md @@ -64,8 +64,11 @@ If needed, a section can be split into subsections with a "------" delimiter. ### [ochre][4k-post] - 4K Intro -[![Youtube preview: mountains & spheres](4k-into-youtube.jpeg)][4k-video] -_Click to [watch the demo on Youtube][4k-video]._ +{{ image_figure( + alt="Youtube preview: mountains & spheres" + src="4k-into-youtube.jpeg" + caption="Click to [watch the demo on Youtube](https://youtube.com/watch?v=SIkkYRQ07tU).", + link="https://youtube.com/watch?v=SIkkYRQ07tU") }} Jani Peltonen has recently released a [4K intro][4k-src] which is completely written in Rust and GLSL @@ -116,8 +119,11 @@ _Discussions: ### [Crate Before Attack][cba-site] -[![Golf Club in Crate Before Attack](crate-before-attack.gif)][cba-site] -_A new weapon: the Golf Club_ +{{ image_figure( + alt="Golf Club in Crate Before Attack" + src="crate-before-attack.gif" + caption="A new weapon: the Golf Club", + link="https://cratebeforeattack.com") }} [Crate Before Attack][cba-site] by [koalefant (@CrateAttack)][@CrateAttack] is a skill-based grappling hook multiplayer game where frogs combat their friends @@ -471,8 +477,11 @@ The game is in an early stage of development, ### [On FPS Game Progress \#2][on-fps-game-2] -[![fps-game-screenshot](fps-game-2.jpeg)][on-fps-game-2-youtube] -_Click to watch [footage from the game's current state][on-fps-game-2-youtube]._ +{{ image_figure( + alt="fps-game-screenshot" + src="fps-game-2.jpeg" + caption="Click to watch [footage from the game's current state](https://youtu.be/NIJNgr9zeXk).", + link="https://youtu.be/NIJNgr9zeXk") }} On this update, [@pingFromHeaven] talks about the lighting implementation that sets the tone for the game, how Rust is good at shortening the debugging @@ -509,8 +518,10 @@ Some of the recent updates: ### [Veloren][veloren] -![Sunrise](veloren-sunrise.gif) -_Sunrise_ +{{ image_figure( + alt="Sunrise" + src="veloren-sunrise.gif" + caption="Sunrise") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -524,8 +535,10 @@ fast quadruped movement. Particle systems are being implemented and optimized. A crafting GUI has been added. Translations have stabilized significantly, and there is a framework for translators to know what needs to be done. -![Fire particles](veloren-fire.gif) -_Progress on the particle system_ +{{ image_figure( + alt="Fire particles" + src="veloren-fire.gif" + caption="Progress on the particle system") }} You can read more about some specific topics from July: @@ -549,8 +562,10 @@ In August, 0.7 will be released. Work will continue on castle and cave generation. The inaugural episode of the Rust Game Dev podcast will be released, which features an interview by Veloren developers. -![Quadrupeds](veloren-quadrupeds.png) -_Quadruped overhaul_ +{{ image_figure( + alt="Quadrupeds" + src="veloren-quadrupeds.png" + caption="Quadruped overhaul") }} [veloren]: https://veloren.net @@ -599,8 +614,11 @@ read the book at [sokoban.iolivia.me][sokoban_book]. ### [Make Pong with Rust][tantan-video] -[![youtube preview](video-pong-tutorial.jpeg)][tantan-video] -_Click to [watch the tutorial][tantan-video]._ +{{ image_figure( + alt="youtube preview" + src="video-pong-tutorial.jpeg" + caption="Click to [watch the tutorial][tantan-video].", + link="tantan-video") }} [TanTan] released a [video tutorial][tantan-video] that guides you through all the step of making a pong game in Rust @@ -638,8 +656,11 @@ The full article is available [here][dod]. ### ["Rust'N'Games" Talk][rust-n-games] -[![youtube preview: a slide with Tower Rangers game](rust-n-games-youtube.jpeg)][rust-n-games] -_Click to [watch the talk][rust-n-games]._ +{{ image_figure( + alt="youtube preview: a slide with Tower Rangers game" + src="rust-n-games-youtube.jpeg" + caption="Click to [watch the talk](https://youtu.be/0Bj-5C2Zfqs?t=1404).", + link="https://youtu.be/0Bj-5C2Zfqs?t=1404") }} During the recent ["Rust and Tell"][rust-n-tell] online event [Stephan @extrawurst Dilly][@extrawurst] gave a ["Rust'N'Games" talk][rust-n-games] @@ -810,8 +831,10 @@ Linux, macOS and Windows! ### [wgpu][wgpu-site] -![procgen dynamic "grass field"](tuitui-grass-field.jpeg) -_[@MacTuitui]'s everyday [nannou] experiment #1274_ +{{ image_figure( + alt='procgen dynamic "grass field"' + src="tuitui-grass-field.jpeg" + caption="[@MacTuitui](https://twitter.com/MacTuitui)'s everyday [nannou](https://nannou.cc) experiment #1274") }} The work is ongoing to validate all the incoming commands and guarantee API safety. Special thanks to [@GabrielMajeri] for helping to convert assertions @@ -931,8 +954,11 @@ You can follow progress on [GitHub][graphene] or on [Twitter][apoorvaj]. ### Vulkan Renderer (Name TBD) -[![Vulkan renderer on iOS prototype](vulkan-renderer-prototype.jpeg)][vulkan-renderer-prototype-video] -_Click to watch [the video demo][vulkan-renderer-prototype-video] running on iOS._ +{{ image_figure( + alt="Vulkan renderer on iOS prototype" + src="vulkan-renderer-prototype.jpeg" + caption="Click to watch [the video demo][vulkan-renderer-prototype-video] running on iOS.", + link="vulkan-renderer-prototype-video") }} [@aclysma] published a [new vulkan-based renderer][renderer-prototype] that uses [atelier-assets] to load 3D scenes exported from blender. @@ -1014,7 +1040,7 @@ You can watch a [video of Rust interpreter running Fizzbuzz][langcraft-video]: [Langcraft]: https://github.com/SuperTails/langcraft [langcraft-video]: https://youtube.com/watch?v=Cx0w5Wn9pPU - + ## Meeting Minutes @@ -1089,8 +1115,11 @@ and highlight events from the past. --> Just an interesting Rust gamedev link from the past. :) -[![youtube preview](shar-youtube.jpeg)][shar-trailer] -_Click to watch [SHAR's Greenlight trailer][shar-trailer]_ +{{ image_figure( + alt="youtube preview" + src="shar-youtube.jpeg" + caption="Click to watch [SHAR's Greenlight trailer][shar-trailer]", + link="shar-trailer") }} [SHAR][shar-itch] (Russian "Шар" - ball) by [@fedor_games] (author of [miniquad]/[macroquad]) is a 3rd-person online action game that aims to create unique experience diff --git a/content/news/013/index.md b/content/news/013/index.md index 85a677516..822545c21 100644 --- a/content/news/013/index.md +++ b/content/news/013/index.md @@ -31,7 +31,7 @@ Table of contents: - [Game Updates](#game-updates) - [Learning Material Updates](#learning-material-updates) - [Library & Tooling Updates](#library-tooling-updates) -- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github) +- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github) - [Meeting Minutes](#meeting-minutes) - [Requests for Contribution](#requests-for-contribution) @@ -113,8 +113,11 @@ for you to listen and subscribe: ### [Crate Before Attack][cba-site] -[![Camera debugging in Crate Before Attack](crate-before-attack.jpeg)][cba-site] -_Debugging camera motion: highlighted areas are points of interest_ +{{ image_figure( + alt="Camera debugging in Crate Before Attack" + src="crate-before-attack.jpeg" + caption="Debugging camera motion: highlighted areas are points of interest", + link="https://cratebeforeattack.com") }} [Crate Before Attack][cba-site] by [koalefant (@CrateAttack)][@CrateAttack] is a skill-based multiplayer game where frogs combat their friends @@ -144,8 +147,10 @@ More details are in [August DevLog-entry][cba-august-update]. ### [Veloren][veloren] -![Landscape](veloren-landscape1.jpeg) -_Landscape with new LoD and lighting_ +{{ image_figure( + alt="Landscape" + src="veloren-landscape1.jpeg" + caption="Landscape with new LoD and lighting") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -163,8 +168,10 @@ UX front. Animations for movement and combat were added and improved. Work continued on particle systems, which have been added to Veloren in places like campfires, fireworks, and weapons. -![Healing sceptre](veloren-sceptre.gif) -_Healing sceptre with the new particle system_ +{{ image_figure( + alt="Healing sceptre" + src="veloren-sceptre.gif" + caption="Healing sceptre with the new particle system") }} You can read more about some specific topics from August: @@ -262,8 +269,11 @@ It can be played in the browser or downloaded at [itch.io][Cary]. ### [Way of Rhea] -[![Anthropic's virtual booth at Play NYC](way-of-rhea-play-nyc.png)][Way of Rhea] -_Anthropic's virtual booth at [Play NYC]_ +{{ image_figure( + alt="Anthropic's virtual booth at Play NYC" + src="way-of-rhea-play-nyc.png" + caption="Anthropic's virtual booth at [Play NYC](https://www.play-nyc.com/)", + link="https://store.steampowered.com/app/1110620/Way_of_Rhea/") }} [Way of Rhea] is a puzzle platformer that takes place in a world where you can only interact with items that match your current color. @@ -351,8 +361,11 @@ Chillscapes is written using an early-in-development 2d engine, ### [Dwarf Seeks Fortune][dsf-github] -[![Dwarf Seeks Fortune](dwarf_seeks_fortune.png)][dsf-github] -_Collect all keys to unlock the door to the next level_ +{{ image_figure( + alt="Dwarf Seeks Fortune" + src="dwarf_seeks_fortune.png" + caption="Collect all keys to unlock the door to the next level", + link="https://github.com/amethyst/dwarf_seeks_fortune") }} [Dwarf Seeks Fortune][dsf-github] is a puzzle-platformer made with the Amethyst game engine. Its developer, Jazarro, has partnered with the Amethyst organization @@ -396,8 +409,11 @@ Full devlogs: ### [SIMple Physics][simple-physics-site] -[![SIMple Mechanics wave preset](simple-physics-wave.gif)][simple-physics-gifs] -_One of SIMple Mechanic's Lua presets, a colorful wave of bouncing circles_ +{{ image_figure( + alt="SIMple Mechanics wave preset" + src="simple-physics-wave.gif" + caption="One of SIMple Mechanic's Lua presets, a colorful wave of bouncing circles", + link="https://mkhan45.github.io/SIMple-Physics/posts/Gifs/") }} [SIMple Physics][simple-physics-site] by [@mkhan45] is a set of educational physics simulators meant to help students and teachers conduct labs without expensive equipment @@ -443,8 +459,11 @@ work with graphics in Rust using [SDL2][sdl2] library. ### [Beginning Game Development with Amethyst][rustconf-talk-video] -[![youtube preview](rustconf-amethyst-talk.png)][rustconf-talk-video] -_Click to [watch the talk][rustconf-talk-video]_ +{{ image_figure( + alt="youtube preview" + src="rustconf-amethyst-talk.png" + caption="Click to [watch the talk](https://www.youtube.com/watch?v=GFi_EdS_s_c)", + link="https://www.youtube.com/watch?v=GFi_EdS_s_c") }} Getting started with Rust + gamedev can be intimidating. At [RustConf 2020][rust-conf-2020], [Micah Tigley] gave a talk about their experience @@ -515,8 +534,10 @@ game development are planned. ### [ecs_bench_suite] -![Summary results table](ecs-bench.png) -_The full benchmark report is available [here][ecs_report]_ +{{ image_figure( + alt="Summary results table" + src="ecs-bench.png" + caption="The full benchmark report is available [here](https://rust-gamedev.github.io/ecs_bench_suite/target/criterion/report/index.html)") }} This month [@TomGillen] (author of the [Legion][legion] ECS) released [ecs_bench_suite] - a suite of benchmarks designed to test and compare @@ -759,8 +780,10 @@ also built. ### [gfx-rs][gfx-repo] and [wgpu][wgpu-site] -![wgpu-rs water](wgpu-water.gif) -_wgpu-rs's [water example][wgpu-water]_ +{{ image_figure( + alt="wgpu-rs water" + src="wgpu-water.gif" + caption="wgpu-rs's [water example](https://github.com/gfx-rs/wgpu-rs/tree/master/examples/water)") }} gfx-rs project and wgpu ecosystem have observed the release of 0.6 versions! 🎉 @@ -900,7 +923,7 @@ These last few weeks have been big for the Bevy project: - Rapier, a new pure-rust physics engine, released an [official Bevy plugin][bevy-rapier]. - Thanks to the generosity of individuals and companies, they quickly met - their first two funding goals on @cart's [Github Sponsors page][bevy-spnsors]: + their first two funding goals on @cart's [GitHub Sponsors page][bevy-spnsors]: "sustainable development" and "@cart makes minimum wage working on Bevy". - Bevy received a glowing review from the Amethyst Engine team and they agreed to collaborate in certain areas. @@ -1171,8 +1194,11 @@ The collected profile data can be viewed ingame with [imgui-rs]. ### [Optick][optick] Profiler -[![A screenshot from the video](optick-video.jpg)][optic-video] -_Click to watch a [video tutorial / features overview][optic-video]_ +{{ image_figure( + alt="A screenshot from the video" + src="optick-video.jpg" + caption="Click to watch a [video tutorial / features overview](https://youtube.com/watch?v=p57TV5342fo)", + link="https://youtube.com/watch?v=p57TV5342fo") }} [Optick][optick] by [@bombomby] is a lightweight C++ profiler for games that provides access for all the necessary tools required for @@ -1253,7 +1279,7 @@ Amongst them: [football-manager]: https://en.wikipedia.org/wiki/Football_Manager [Football Manager Tools]: https://github.com/Stromberg90/football-manager-tools -## Popular Workgroup Issues in Github +## Popular Workgroup Issues in GitHub - [rust-gamedev/wg](https://github.com/rust-gamedev/wg): - [#89 "Moving ecs_bench to GDWG"](https://github.com/rust-gamedev/wg/issues/89); diff --git a/content/news/014/index.md b/content/news/014/index.md index ffd2a544a..b34c86bba 100644 --- a/content/news/014/index.md +++ b/content/news/014/index.md @@ -30,7 +30,7 @@ Table of contents: - [Game Updates](#game-updates) - [Learning Material Updates](#learning-material-updates) - [Library & Tooling Updates](#library-tooling-updates) -- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github) +- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github) - [Requests for Contribution](#requests-for-contribution) diff --git a/content/news/016/index.md b/content/news/016/index.md index 0942022b5..0b7c57d10 100644 --- a/content/news/016/index.md +++ b/content/news/016/index.md @@ -35,7 +35,7 @@ Table of contents: - [Game Updates](#game-updates) - [Learning Material Updates](#learning-material-updates) - [Library & Tooling Updates](#library-tooling-updates) -- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github) +- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github) - [Requests for Contribution](#requests-for-contribution) diff --git a/content/news/017/index.md b/content/news/017/index.md index 86b38a51c..7d9240fe3 100644 --- a/content/news/017/index.md +++ b/content/news/017/index.md @@ -34,7 +34,7 @@ Table of contents: - [Game Updates](#game-updates) - [Learning Material Updates](#learning-material-updates) - [Library & Tooling Updates](#library-tooling-updates) -- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github) +- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github) - [Requests for Contribution](#requests-for-contribution) diff --git a/content/news/018/index.md b/content/news/018/index.md index ddbe2e0d7..bb8243516 100644 --- a/content/news/018/index.md +++ b/content/news/018/index.md @@ -35,7 +35,7 @@ Table of contents: - [Learning Material Updates](#learning-material-updates) - [Engine Updates](#engine-updates) - [Library & Tooling Updates](#library-tooling-updates) -- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github) +- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github) - [Requests for Contribution](#requests-for-contribution) diff --git a/content/news/019/index.md b/content/news/019/index.md index fa2aa10f6..687358873 100644 --- a/content/news/019/index.md +++ b/content/news/019/index.md @@ -33,7 +33,7 @@ Table of contents: - [Learning Material Updates](#learning-material-updates) - [Engine Updates](#engine-updates) - [Library & Tooling Updates](#library-tooling-updates) -- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github) +- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github) - [Requests for Contribution](#requests-for-contribution) diff --git a/content/news/020/index.md b/content/news/020/index.md index 84ea7b82b..4fcc925cf 100644 --- a/content/news/020/index.md +++ b/content/news/020/index.md @@ -162,8 +162,10 @@ Some of the recent updates: ### [Aladin Lite] -![Mars with a RdBu colormap](aladin_lite_mars_RdBu_cm.gif) -_Mars heightmap with a RdBu colormap rendered with Aladin Lite v3_ +{{ image_figure( + alt="Mars with a RdBu colormap" + src="aladin_lite_mars_RdBu_cm.gif" + caption="Mars heightmap with a RdBu colormap rendered with Aladin Lite v3") }} [Aladin Lite] is a spatial image survey visualizer developed by the [Astronomical Observatory of Strasbourg] in France. Since its first release in 2013, @@ -191,8 +193,10 @@ on the project's github. ### [Portal Explorer][portal-explorer] -!["Portal in portal" scene](portal-explorer.png) -_"Portal in portal" scene_ +{{ image_figure( + alt='"Portal in portal" scene' + src="portal-explorer.png" + caption='"Portal in portal" scene') }} [Portal Explorer][portal-explorer] by [@optozorax][optozorax-twitter] is a web visualizator of mind-blowing portals. @@ -213,8 +217,10 @@ interface is [egui][egui-git]. ### [Name Needed][name-needed] -![Wandering agents hauling items around and digging](name-needed.gif) -_Agents wandering around, hauling items and digging blocks_ +{{ image_figure( + alt="Wandering agents hauling items around and digging" + src="name-needed.gif" + caption="Agents wandering around, hauling items and digging blocks") }} [Name Needed][name-needed] by [@DomWilliams0][domwilliams-github] is a one man effort to produce an open source, intuitive and high performance Dwarf @@ -237,8 +243,10 @@ which so far include: ### [Orbital Decay][orbital-decay] -![Orbital Decay](orbital-decay.gif) -_Orbital Decay gameplay_ +{{ image_figure( + alt="Orbital Decay" + src="orbital-decay.gif" + caption="Orbital Decay gameplay") }} [Orbital Decay][orbital-decay] by [@stevebob] is an [open-source][orbital-decay-source] turn-based tactical roguelike with a focus @@ -309,8 +317,11 @@ at [Rust Meetup Linz on April 22][rust-linz]. ### [Bounty Bros.][bounty_bros] -[![bounty-bros-character-on-map](bounty_bros.png)][bounty_bros_webgame] -_Click the image to play the game in your browser!_ +{{ image_figure( + alt="bounty-bros-character-on-map" + src="bounty_bros.png" + caption="Click the image to play the game in your browser!", + link="https://skipngo.katharostech.com/?asset_url=https://bounty-bros.skipngo.katharostech.com/") }} [Bounty Bros.][bounty_bros] is a prototype game similar to the old Legend of Zelda® games developed by [Katharos Technology][katharostech] as a testing @@ -391,8 +402,11 @@ the project's internals. ### Stellary 2 -[![Stellary 2 Anti-Missile Laser](stellary2-centered-view.gif)][stellary2-ppcv-tweet] -_▶️ Click to [watch the full video][stellary2-ppcv-tweet]_ +{{ image_figure( + alt="Stellary 2 Anti-Missile Laser" + src="stellary2-centered-view.gif" + caption="▶️ Click to [watch the full video](https://twitter.com/CoffeJunkStudio/status/1378719827347509249)", + link="https://twitter.com/CoffeJunkStudio/status/1378719827347509249") }} Stellary 2 by [@CoffeJunkStudio][coffe-junk-studio] is a 3D real-time space shooter in which the player has to control his spaceship to colonize each planet @@ -473,8 +487,10 @@ of the 1990 [Gameboy platformer][gargoyle-wiki] built using [wgpu]. ### [Fishgame][fishgame] -![Fishgame](fishgame.gif) -_Game footage with the new weapon._ +{{ image_figure( + alt="Fishgame" + src="fishgame.gif" + caption="Game footage with the new weapon.") }} [Fishgame][fishgame] [(web build)][fishgame-itch] is an online multiplayer game, created in a collaboration between [Nakama][nakama], an open-source scalable @@ -493,8 +509,10 @@ This month: ### [Veloren][veloren] -![Airship](veloren.jpg) -_Waiting for the airship to land_ +{{ image_figure( + alt="Airship" + src="veloren.jpg" + caption="Waiting for the airship to land") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -527,8 +545,11 @@ March's full weekly devlogs: "This Week In Veloren...": ### [Theta Wave] -[![Enemy Formations](theta-wave.gif)][Theta Wave] -_Enemies can now be easily spawned in formations_ +{{ image_figure( + alt="Enemy Formations" + src="theta-wave.gif" + caption="Enemies can now be easily spawned in formations", + link="https://github.com/amethyst/theta-wave") }} [Theta Wave] is an open-source space shooter game by developers [@micah_tigley] and [@carlosupina]. It is one of the showcase games for the [Amethyst Engine]. In @@ -580,8 +601,11 @@ Updates: ### [Station Iapetus] -[![Station Iapetus Youtube](station-iapetus-youtube.png)][si-youtube] -_Click on the iamge to see the gameplay video on YouTube_ +{{ image_figure( + alt="Station Iapetus Youtube" + src="station-iapetus-youtube.png" + caption="Click on the iamge to see the gameplay video on YouTube", + link="https://youtube.com/watch?v=O_ETjSkVBME") }} [Station Iapetus][Station Iapetus] by [@mrDIMAS] is a 3rd person shooter on the prison Iapetus near the Saturn. @@ -749,8 +773,10 @@ the recent engine updates: ### [Oxygengine v0.16.0][oxygengine-git] -![Oxygengine + RAUI integration](oxygengine-raui-integration.gif) -_Integration of RAUI (UI/UX) crate with Oxygengine game engine_ +{{ image_figure( + alt="Oxygengine + RAUI integration", + src="oxygengine-raui-integration.gif", + caption="Integration of RAUI (UI/UX) crate with Oxygengine game engine") }} [Oxygengine][oxygengine-git] by [@PsichiX][psichix-twitter] is the hottest HTML5 + WASM game engine for games written in Rust with web-sys. @@ -776,8 +802,10 @@ one highly modular toolset. ### [Bevy v0.5][bevy-blog] -![PBR material example](bevy_pbr.png) -_Material grid with varying PBR properties_ +{{ image_figure( + alt="PBR material example" + src="bevy_pbr.png" + caption="Material grid with varying PBR properties") }} [Bevy][bevy] is a refreshingly simple data-driven game engine built in Rust. It is [free and open source][bevy-git] forever! @@ -861,8 +889,10 @@ The repository includes a GitHub workflow for Linux, MacOS, and Windows builds ### [Reverse-Engineering NES Tetris to Add Hard Drop][tetris-hard-drop] -![NES Tetris with Hard Drop and Ghost Piece](tetris-hard-drop.gif) -_NES Tetris with Hard Drop and Ghost Piece_ +{{ image_figure( + alt="NES Tetris with Hard Drop and Ghost Piece" + src="tetris-hard-drop.gif" + caption="NES Tetris with Hard Drop and Ghost Piece") }} A [blog post][tetris-hard-drop] describing the process of reverse-engineering the rendering and input-handling logic in the NES version of Tetris, and using @@ -1135,8 +1165,10 @@ SMAA S2x likely to be added depending on interest. ### [wgpu] -![voxel bunny on wgpu](wgpu-conservative-bunny.png) -_Voxel Bunny rendering with conservative rasterization_ +{{ image_figure( + alt="voxel bunny on wgpu" + src="wgpu-conservative-bunny.png" + caption="Voxel Bunny rendering with conservative rasterization") }} [wgpu] is a [WebGPU] implementation in Rust. It is safe, efficient, and portable: can target both native (Vulkan/D3D/Metal) and the Web. @@ -1168,9 +1200,11 @@ _Discussions: ### [rust-gpu v0.3][rust-gpu-v0-3] -![A Sci-Fi helmet model](grr-gltf.jpg) -_The Khronos Sci-Fi helmet model in a [glTF model viewer][grr-gltf] -created by [@msiglreith] using rust-gpu_ +{{ image_figure( + alt="A Sci-Fi helmet model" + src="grr-gltf.jpg" + caption="The Khronos Sci-Fi helmet model in a [glTF model viewer](https://github.com/msiglreith/grr-gltf) +created by [@msiglreith](https://github.com/msiglreith) using rust-gpu") }} [rust-gpu] is a new codegen backend by Embark Studios for Rust, aimed at making Rust a first class language for writing GPU shaders! @@ -1200,8 +1234,10 @@ _Discussions: ### [rafx] -![rafx tilemap rendering](rafx-tilemap-rendering.png) -_Rafx rendering an example tilemap from [LDTK level editor][rafx-ldtk]_ +{{ image_figure( + alt="rafx tilemap rendering" + src="rafx-tilemap-rendering.png" + caption="Rafx rendering an example tilemap from [LDTK level editor](https://ldtk.io)") }} Rafx is a multi-backend renderer that optionally integrates with the [distill][rafx-distill] asset pipeline. This month, a fourth layer @@ -1266,8 +1302,10 @@ can get glimpses of its development by following the author on [Twitter][h3r2tic ### [Bevy Retro][bevy_retro] -![pixel-perfect-collision-demo](bevy_retro.gif) -_Pixel-perfect collision [example][bevy_retro_collision_example]_ +{{ image_figure( + alt="pixel-perfect-collision-demo" + src="bevy_retro.gif" + caption="Pixel-perfect collision [example](https://github.com/katharostech/bevy_retro/tree/master/examples#collisions)") }} [Bevy Retro][bevy_retro] is a new [Bevy] plugin designed for making pixel-perfect games. @@ -1299,8 +1337,10 @@ Feel free to discuss the project and provide feedback ### [RAUI v0.28.1][raui-git] -![RAUI + Tetra TODO app](raui-tetra-todo-app-material-ui.gif) -_RAUI + Tetra TODO app demo_ +{{ image_figure( + alt="RAUI + Tetra TODO app" + src="raui-tetra-todo-app-material-ui.gif" + caption="RAUI + Tetra TODO app demo") }} [RAUI][raui-git] by [@PsichiX][psichix-twitter] is a Renderer Agnostic User Interface crate that is based on declarative mode UI composition similar to @@ -1324,8 +1364,10 @@ This month's updates: ### [egui-macroquad] -![Code example of usage of this library.](egui-macroquad.png) -_Code example of usage of this library._ +{{ image_figure( + alt="Code example of usage of this library." + src="egui-macroquad.png" + caption="Code example of usage of this library.") }} [egui-macroquad] is a small library to use [egui][egui-git] inside of [macroquad][macroquad-git]. It consists only of two functions. @@ -1385,8 +1427,10 @@ cleanup, tweaks, optimization, and finally packaging the GUI up. ### [Bitmapflow] -![Bitmapflow interpolating a walking mech animation](bitmapflow.gif) -_Bitmapflow interpolating a walking mech animation_ +{{ image_figure( + alt="Bitmapflow interpolating a walking mech animation" + src="bitmapflow.gif" + caption="Bitmapflow interpolating a walking mech animation") }} Bitmapflow ([GitHub][Bitmapflow-GitHub]) by [@bauxitedev] is a tool to help you generate [inbetweens] for animated sprites. In other words, it makes your @@ -1420,9 +1464,10 @@ _Discussions: [/r/rust_gamedev][Bitmapflow-Reddit]_ ### [Graphite][graphite-repo] -!["Graphite" drawn using the circles and rectangles of the new tool drawing system](graphite-tool-system-progress.png) -_"Graphite" drawn using the circles and rectangles of the new tool drawing -system_ +{{ image_figure( + alt='"Graphite" drawn using the circles and rectangles of the new tool drawing system' + src="graphite-tool-system-progress.png" + caption='"Graphite" drawn using the circles and rectangles of the new tool drawing system') }} Graphite ([GitHub][graphite-repo], [Discord][graphite-discord], [Twitter](https://twitter.com/GraphiteEditor)) is an in-progress vector and diff --git a/content/news/021/index.md b/content/news/021/index.md index 8ad32733e..84236eeb4 100644 --- a/content/news/021/index.md +++ b/content/news/021/index.md @@ -100,8 +100,11 @@ _Discussions: ### [LD48: Micronaut][micronaut-itch] -[![GIF showing Micronaut's primary level recursion mechanic](micronaut.gif)][micronaut-itch] -_Micronaut features a deep recursive level layout_ +{{ image_figure( + alt="GIF showing Micronaut's primary level recursion mechanic" + src="micronaut.gif" + caption="Micronaut features a deep recursive level layout", + link="https://healthire.itch.io/micronaut") }} Micronaut is a small puzzle platformer by [@Healthire] made in 48 hours for the Ludum Dare 48 Compo. Run and jump your way through a recursive level layout to @@ -216,8 +219,10 @@ if you want to try it out. ### [The Process] -![Animated image showcasing the test map in The Process](the_process.gif) -_The new test map in The Process_ +{{ image_figure( + alt="Animated image showcasing the test map in The Process" + src="the_process.gif" + caption="The new test map in The Process") }} [The Process] by @setzer22 is an upcoming game about factory building, process management and carrot production, built @@ -269,8 +274,11 @@ Recent updates include: ### [Taipo][taipo-itch] -[![Screenshot of Taipo showing a variety of towers and enemies](taipo.png)][taipo-itch] -_Click the image to play the game in your desktop browser!_ +{{ image_figure( + alt="Screenshot of Taipo showing a variety of towers and enemies" + src="taipo.png" + caption="Click the image to play the game in your desktop browser!", + link="https://euclidean-whale.itch.io/taipo") }} Taipo ([itch.io][taipo-itch], [GitHub][taipo-github]) by [@rparrett] is a Tower Defense game that's controlled solely by typing words and phrases. @@ -341,8 +349,10 @@ Rhea developments: ### [Veloren][veloren] -![Airship](veloren.jpg) -_A mist rolling over the land_ +{{ image_figure( + alt="Airship" + src="veloren.jpg" + caption="A mist rolling over the land") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -402,8 +412,11 @@ _Discussions: ### [Theta Wave] -[![Enemy Formations](theta-wave.gif)][Theta Wave] -_Mobs may now be spawned in predefined formations_ +{{ image_figure( + alt="Enemy Formations" + src="theta-wave.gif" + caption="Mobs may now be spawned in predefined formations", + link="https://github.com/amethyst/theta-wave") }} [Theta Wave] is an open-source space shooter game by developers [@micah_tigley] and [@carlosupina]. It is one of the showcase games for the [Amethyst Engine]. In @@ -482,8 +495,10 @@ framework - additions are welcomed! ### [Oxygengine v0.19.1][oxygengine-git] -![Oxygengine UI splash screen](oxygengine-ui-splash-screen.gif) -_Making splash screens in Oxygengine with RAUI_ +{{ image_figure( + alt="Oxygengine UI splash screen" + src="oxygengine-ui-splash-screen.gif" + caption="Making splash screens in Oxygengine with RAUI") }} [Oxygengine][oxygengine-git] by [@PsichiX][psichix-twitter] is the hottest HTML5 + WASM game engine for games written in Rust with web-sys. @@ -524,8 +539,10 @@ the recent engine updates: ### [Arcana] -![arcana](tanks.gif) -_A demo Arcana game_ +{{ image_figure( + alt="arcana" + src="tanks.gif" + caption="A demo Arcana game") }} [Arcana] is a new game engine built with focus on ease of use without compromising on level of control. @@ -610,8 +627,11 @@ The water & transition shader is open source and can be found ### [Rust Linz: Learning Rust with Game Development][rust-linz] -[![Rust Linz talk screenshot](rust-linz.png)][rust-linz] -_Click on the image to watch the talk_ +{{ image_figure( + alt="Rust Linz talk screenshot" + src="rust-linz.png" + caption="Click on the image to watch the talk", + link="https://www.youtube.com/watch?v=79GyLlXAk-0") }} As part of April's Rust Linz meetup, [Herbert Wolverson][rust-linz-hw] gave a talk about using game development as a means of learning @@ -627,8 +647,11 @@ posted on the [author's twitter][rust-linz-coupon]. ### [Rust LA Meetup: Happiness in Rust][rust-la] -[![Rust LA talk screenshot](rust-la.png)][rust-la] -_Click on the image to watch the talk_ +{{ image_figure( + alt="Rust LA talk screenshot" + src="rust-la.png" + caption="Click on the image to watch the talk", + link="https://www.youtube.com/watch?v=TJ3w-pZ7FMI") }} As part of April's Rust LA meetup, [Andrea Pessino][rad-andrea] from [Ready at Dawn][rad] gave a talk examining how to increase Rust adoption @@ -721,8 +744,10 @@ _Discussions: [/r/rust], [Twitter]_ ### [opensubdiv-petite] -![Low poly car model](opensubdiv-petite.jpg) -_Low poly car with three levels of Catmull-Clark subdivision applied._ +{{ image_figure( + alt="Low poly car model" + src="opensubdiv-petite.jpg" + caption="Low poly car with three levels of Catmull-Clark subdivision applied.") }} [Opensubdiv-petite] is a high level, selective, oxidized wrapper around Pixar’s [OpenSubdiv] [sudivison surface] meshing and evaluation library. OpenSubdiv allows @@ -864,9 +889,11 @@ It has never been easier to add an in-game flamegraph profiler to your game! ### [rafx] -[![Rafx WebGL 1.0 Demo](rafx-webgl1-demo.png)][rafx-webgl-demo] -_Rafx WebGL 1.0 support, [click for live demo][rafx-webgl-demo]!_ - +{{ image_figure( + alt="Rafx WebGL 1.0 Demo" + src="rafx-webgl1-demo.png" + caption="Rafx WebGL 1.0 support, [click for live demo](https://aclysma.github.io/rafx/demo-web/index.html)!", + link="[rafx-webgl-demo](https://aclysma.github.io/rafx/demo-web/index.html)") }} Rafx is a multi-backend renderer that optionally integrates with the [distill][rafx-distill] asset pipeline. This month, frustum culling and a new OpenGL ES 2.0/WebGL 1.0 backend were added. @@ -891,8 +918,10 @@ or browser ([~98% web coverage][rafx-webgl-caniuse].) ### [RAUI v0.34.0][raui-git] -![RAUI Scroll Box](raui-scroll-box.gif) -_RAUI Scroll Box_ +{{ image_figure( + alt="RAUI Scroll Box" + src="raui-scroll-box.gif" + caption="RAUI Scroll Box") }} [RAUI][raui-git] by [@PsichiX][psichix-twitter] is a Renderer Agnostic User Interface crate that is based on declarative mode UI composition similar to @@ -912,8 +941,10 @@ This month's changes include: ### [Graphite][graphite-repo] -![Ferris drawn in Graphite using the new drawing tools - Art credit: Uriopass](graphite-ferris.png) -_Ferris drawn in Graphite using the new drawing tools - Art credit: Uriopass_ +{{ image_figure( + alt="Ferris drawn in Graphite using the new drawing tools - Art credit: Uriopass" + src="graphite-ferris.png" + caption="Ferris drawn in Graphite using the new drawing tools - Art credit: Uriopass") }} Graphite ([GitHub][graphite-repo], [Discord][graphite-discord], [Twitter](https://twitter.com/GraphiteEditor)) is an in-progress vector and @@ -962,8 +993,10 @@ GUI. ### [chip-8-rs] -![Screenshot of Pong with debugger](chip-8-rs.jpg) -_Debugging Pong_ +{{ image_figure( + alt="Screenshot of Pong with debugger" + src="chip-8-rs.jpg" + caption="Debugging Pong") }} [Chip-8-rs][chip-8-rs] by @jonathanmurray is a CHIP-8 emulator with some basic debugging functionality. diff --git a/content/news/022/index.md b/content/news/022/index.md index b015d1b43..43dcab00e 100644 --- a/content/news/022/index.md +++ b/content/news/022/index.md @@ -70,8 +70,10 @@ working on in a future meetup, fill out [this form][gamedev-meetup-form]. ### Flesh -![flesh preview](flesh.gif) -_a new enemy_ +{{ image_figure( + alt="flesh preview" + src="flesh.gif" + caption="a new enemy") }} Flesh by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation and organic/fleshy theme. It is implemented using [Tetra]. This month's updates @@ -86,7 +88,10 @@ include: ### [Veloren][veloren] -![Airship](veloren.jpg) _The beginning of an exciting journey_ +{{ image_figure( + alt="Airship" + src="veloren.jpg" + caption="The beginning of an exciting journey") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -137,8 +142,10 @@ multiple turn lanes, U-turns, and stop signs much better. ### [The Process] -![Animated image showing a small factory in the middle of the game island](the_process.gif) -_This factory has never looked livelier!_ +{{ image_figure( + alt="Animated image showing a small factory in the middle of the game island" + src="the_process.gif" + caption="This factory has never looked livelier!") }} [The Process] by @setzer22 is an upcoming game about factory building, process management and carrot production, built with Rust using the Godot game engine! @@ -200,8 +207,11 @@ if you want to try it out. ### [Bounty Bros.][bounty_bros] -[![bounty-bros-title-screen](bounty-bros.png)][bounty_bros_webgame] -_Click the image to play the game in your browser!_ +{{ image_figure( + alt="bounty-bros-title-screen" + src="bounty-bros.png" + caption="Click the image to play the game in your browser!", + link="https://katharostech.github.io/skipngo_pre-releases/refs/tags/pre-release-1/?asset_url=https://katharostech.github.io/bounty-bros_pre-releases/1") }} [Bounty Bros.][bounty_bros] is a prototype game, similar to the old Legend of Zelda® games, developed by [Katharos Technology][katharostech] as a testing @@ -319,8 +329,11 @@ _Discussions: ### [Theta Wave] -[![Blast Repeller](theta-wave.gif)][Theta Wave] -_The Blast Repeller item pushes blasts away from the player_ +{{ image_figure( + alt="Blast Repeller" + src="theta-wave.gif" + caption="The Blast Repeller item pushes blasts away from the player", + link="https://github.com/amethyst/theta-wave") }} [Theta Wave] is an open-source space shooter game by developers [@micah_tigley] and [@carlosupina]. It is one of the showcase games for the [Amethyst Engine]. In @@ -525,8 +538,10 @@ _Discussion: [Twitter][2048-bevy-twitter]_ ### [Graphite][graphite-repo] -![Piet Mondrian's artwork replicated in Graphite using the new color picker](graphite-piet.png) -_Piet Mondrian's artwork replicated in Graphite using the new color picker_ +{{ image_figure( + alt="Piet Mondrian's artwork replicated in Graphite using the new color picker" + src="graphite-piet.png" + caption="Piet Mondrian's artwork replicated in Graphite using the new color picker") }} Graphite ([GitHub][graphite-repo], [Discord][graphite-discord], [Twitter](https://twitter.com/GraphiteEditor)) is an in-development vector and @@ -624,8 +639,10 @@ done by [naga], roughly 4x as fast as the C++ alternative ### [rafx] -![Rafx Wireframe Demo](rafx-wireframe-demo.jpg) -_Demo with wireframes enabled_ +{{ image_figure( + alt="Rafx Wireframe Demo" + src="rafx-wireframe-demo.jpg" + caption="Demo with wireframes enabled") }} Rafx is a multi-backend renderer that optionally integrates with the [distill][rafx-distill] asset pipeline. @@ -654,8 +671,10 @@ instead of imgui. ### [Bevy Retro][bevy_retro] -![ui-example](bevy-retro.gif) -_Bevy Retro UI example_ +{{ image_figure( + alt="ui-example" + src="bevy-retro.gif" + caption="Bevy Retro UI example") }} [Bevy Retro][bevy_retro] is a [Bevy] plugin designed for making pixel-perfect games as easily as possible. @@ -685,8 +704,10 @@ You can ask questions or give feedback for Bevy Retro ### [Texture Generator] -![A tilemap with procedural textures](texture-generator.png) -_A preview to version 0.5 with furniture_ +{{ image_figure( + alt="A tilemap with procedural textures" + src="texture-generator.png" + caption="A preview to version 0.5 with furniture") }} [Texture Generator] by [Orchaldir] is a library to generate textures, and a library to use those textures to render tilemaps. @@ -774,8 +795,10 @@ F-reps can also be sliced into polylines/vectors or bitmaps – e.g. for derivin ### [nvtx-rs] -![A screenshot of NVIDIA NSight Systems with only one sections measured](nvtx.png) -_Watching the profile in NVIDIA NSight Systems_ +{{ image_figure( + alt="A screenshot of NVIDIA NSight Systems with only one sections measured" + src="nvtx.png" + caption="Watching the profile in NVIDIA NSight Systems") }} NVIDIA® Tools Extension SDK (NVTX) is a C-based API for annotating events, code ranges, and resources in your applications. diff --git a/content/news/023/index.md b/content/news/023/index.md index d8dc3794a..075f3fee4 100644 --- a/content/news/023/index.md +++ b/content/news/023/index.md @@ -175,9 +175,11 @@ telnet protocols, and TLS connections to name a few. ### [The Hat Chooses the Wizard][hatchooseswizard] -![Level 1-4 of the game "The Hat Chooses the Wizard" running on a Game Boy -Advance](hatchooseswizard.jpg) -_Runs on real hardware!_ +{{ image_figure( + alt='Level 1-4 of the game "The Hat Chooses the Wizard" running on a Game Boy +Advance' + src="hatchooseswizard.jpg" + caption="Runs on real hardware!") }} The Hat Chooses the Wizard is a 2D platformer for the Game Boy Advance. @@ -202,10 +204,12 @@ feedback is welcome. ### [Themengi] -![User highlighting objects in the game world and parsing the phrase +{{ image_figure( + alt='User highlighting objects in the game world and parsing the phrase "dang puru rupuu kythengi" into the action "open", object "door", and mods -"red" and "left".](themengi.gif) -_Demonstration of natural language parser with temporary words and grammar._ +"red" and "left".' + src="themengi.gif" + caption="Demonstration of natural language parser with temporary words and grammar.") }} [Themengi] ([Discord][themengi-discord], [Twitter][themengi-twitter]) is a puzzle adventure game where you learn an alien language, @@ -225,8 +229,11 @@ outline shader in the Bevy render pipeline. ### [Dango] -[![Dango bouncing and jumping around](dango.gif)][Dango] -_Cute rice dumplings_ +{{ image_figure( + alt="Dango bouncing and jumping around" + src="dango.gif" + caption="Cute rice dumplings", + link="http://ernestwong.nz/dango-tribute/server/") }} [Dango] ([GitHub][dango-github]) is a little multiplayer blob physics sandbox made by [@ErnWong] as a tribute to the [Dango Daikazoku][dango-daikazoku] from @@ -321,8 +328,10 @@ downloadable Windows version. ### Flesh -![flesh preview](flesh.gif) -_demo build_ +{{ image_figure( + alt="flesh preview" + src="flesh.gif" + caption="demo build") }} Flesh by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation and organic/fleshy theme. It is implemented using [Tetra]. This month, an internal @@ -335,7 +344,10 @@ demo build was released, with a development journal available on ### [Veloren][veloren] -![Cave run](veloren.png) _Turns out the cave wasn't empty_ +{{ image_figure( + alt="Cave run" + src="veloren.png" + caption="Turns out the cave wasn't empty") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -387,8 +399,10 @@ scoreboard, increasing fall speed, game over, JUICE. ### [The Process] -![The new terrain editor in The Process](the_process.gif) -_Building the world, one voxel at a time_ +{{ image_figure( + alt="The new terrain editor in The Process" + src="the_process.gif" + caption="Building the world, one voxel at a time") }} [The Process] by @setzer22 is an upcoming game about factory building, process management, and carrot production, @@ -625,7 +639,7 @@ currently features a fully functional finite automaton editor and simulator, and many other models, editing features and simulations are planned. You can check out a [live WASM demo here][Sugarcubes], -or the [source code on Github][Sugarcubes source]. +or the [source code on GitHub][Sugarcubes source]. [Sugarcubes]: https://henryksloan.github.io/sugarcubes/ [Sugarcubes source]: https://github.com/henryksloan/sugarcubes @@ -633,8 +647,10 @@ or the [source code on Github][Sugarcubes source]. ### [Rusty Slider] -![Rusty Slider code block example](rustyslider.png) -_Supports syntax highlighting of code blocks_ +{{ image_figure( + alt="Rusty Slider code block example" + src="rustyslider.png" + caption="Supports syntax highlighting of code blocks") }} [Rusty Slider] by [@ollej] is a markdown slideshow viewer written with macroquad. @@ -661,9 +677,11 @@ demo purposes, to show actual results of commands. ### [Graphite][graphite-repo] -![Geometric cherry tree](graphite-cherry-tree.png) -_Geometric cherry tree artwork by BillyDM, winner of last month's first -Graphite art contest_ +{{ image_figure( + alt="Geometric cherry tree" + src="graphite-cherry-tree.png" + caption="Geometric cherry tree artwork by BillyDM, winner of last month's first +Graphite art contest") }} Graphite ([GitHub][graphite-repo], [Discord][graphite-discord], [Twitter](https://twitter.com/GraphiteEditor)) is an in-development vector and @@ -694,8 +712,10 @@ code and how you can help! ### [texture_generator] v0.5 -![A black&white top-down image of some building](texture_generator.png) -_An depth image example_ +{{ image_figure( + alt="A black&white top-down image of some building" + src="texture_generator.png" + caption="An depth image example") }} [texture_generator] by [Orchaldir] is a library to generate textures, and a library to use those textures to render tilemaps. @@ -726,9 +746,11 @@ _Discussions: [GGRS]([crates.io](https://crates.io/crates/ggrs)) by [@g_schup] are pure Rust implementations of the [GGPO] rollback networking library. -![Evo Moment 37](rollback.jpg) -_[Evo Moment 37](https://www.youtube.com/watch?v=JzS96auqau0): -Only offline or with rollback!_ +{{ image_figure( + alt="Evo Moment 37" + src="rollback.jpg" + caption="[Evo Moment 37](https://www.youtube.com/watch?v=JzS96auqau0): +Only offline or with rollback!") }} Rollback networking is a peer-to-peer network technique designed to hide network latency in fast-paced games with precise inputs. Traditional techniques @@ -771,8 +793,11 @@ check out the [GGPO Developers Discord]! ### [CrystalOrb] -[![CrystalOrb demo animation](crystalorb.gif)][crystalorb-demo] -_Interactive [demo][crystalorb-demo] that uses the [Rapier] physics engine._ +{{ image_figure( + alt="CrystalOrb demo animation" + src="crystalorb.gif" + caption="Interactive [demo](https://ernestwong.nz/crystalorb/demo) that uses the [Rapier](https://rapier.rs) physics engine.", + link="https://ernestwong.nz/crystalorb/demo") }} [CrystalOrb] by [@ErnWong] is a new networking library that aims to help fast-paced client-server games synchronize their game state across multiple @@ -801,8 +826,10 @@ There is an [interactive demo][crystalorb-demo] of CrystalOrb that features the ### [glutin] (and [winit]) -![Animated image showing a window that is opened with a spinning cursor on top](winit-bug-1.gif) -_This cursor may be waiting [in vain], but your patience shall be rewarded._ +{{ image_figure( + alt="Animated image showing a window that is opened with a spinning cursor on top" + src="winit-bug-1.gif" + caption="This cursor may be waiting [in vain], but your patience shall be rewarded.") }} [glutin] is a low-level library for OpenGL context creation, written in pure Rust. [glutin] uses and re-exports [winit], which handles window creation and management, @@ -934,8 +961,11 @@ This includes automatic testing using software adapters on CI. ### [rafx] -[![Rafx Flythrough Demo](rafx-flythrough-demo.jpg)][rafx-youtube-video] -_A scene exported via blender with animated camera motion, [watch the demo on youtube][rafx-youtube-video]!_ +{{ image_figure( + alt="Rafx Flythrough Demo" + src="rafx-flythrough-demo.jpg" + caption="A scene exported via blender with animated camera motion, [watch the demo on youtube](https://www.youtube.com/watch?v=HlJsgbGyl0I)!", + link="https://www.youtube.com/watch?v=HlJsgbGyl0I") }} [Rafx][rafx] is a multi-backend renderer that optionally integrates with the [distill][rafx-distill] asset pipeline. diff --git a/content/news/024/index.md b/content/news/024/index.md index c5ae10139..fb22ab7d5 100644 --- a/content/news/024/index.md +++ b/content/news/024/index.md @@ -82,7 +82,10 @@ out [this form][gamedev-meetup-form]. ### [Veloren][veloren] -![Llama ride](veloren.png) _Out for a llama ride_ +{{ image_figure( + alt="Llama ride" + src="veloren.png" + caption="Out for a llama ride") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -147,8 +150,10 @@ if you'll be there! ### [Shroom Kingdom][shroom-kingdom] -![Shroom Kingdom Asset Extractor](shroom-kingdom.gif) -_Extracting the game assets_ +{{ image_figure( + alt="Shroom Kingdom Asset Extractor" + src="shroom-kingdom.gif" + caption="Extracting the game assets") }} Shroom Kingdom ([GitHub][shrm-github], [Discord][shrm-discord], [Twitter][shrm-twitter]) is an upcoming play-to-earn video game built with web technologies @@ -186,8 +191,10 @@ Next steps include developing a Proof of Concept. ### [Wicked Potions][wicked_potions] -![Screenshot of the game](wicked_potions.png) -_Match ingredients to brew wicked potions_ +{{ image_figure( + alt="Screenshot of the game" + src="wicked_potions.png" + caption="Match ingredients to brew wicked potions") }} [Wicked Potions][wicked_potions] is a match-three game developed by [@nikl_me] and [jennifervphan] for the [Bored Pixels Jam 8][bored-pixels-jam-8]. @@ -209,8 +216,10 @@ and story a bit more. ### [The Process] -![Showcase image for the new inventory UI in The Process](the_process.gif) -_The godot_egui backend powering a new inventory UI for The Process_ +{{ image_figure( + alt="Showcase image for the new inventory UI in The Process" + src="the_process.gif" + caption="The godot_egui backend powering a new inventory UI for The Process") }} [The Process] by @setzer22 is an upcoming game about factory building, process management, and carrot production, @@ -293,8 +302,11 @@ Changes and improvements from the last month: ### [Theta Wave] -[![Amethyst to Bevy](theta-wave.gif)][Bevy Theta Wave] -_Left: Theta Wave with Amethyst, Right: Theta Wave with Bevy (so far)_ +{{ image_figure( + alt="Amethyst to Bevy" + src="theta-wave.gif" + caption="Left: Theta Wave with Amethyst, Right: Theta Wave with Bevy (so far)", + link="https://github.com/thetawavegame/thetawave") }} [Theta Wave] is an open-source space shooter game by developers [@micah_tigley] and [@carlosupina]. It is one of the showcase games for the [Amethyst Engine]. In @@ -315,8 +327,11 @@ the port [here][Bevy Port Issue]. ### [Bounty Bros.][bounty_bros] -[![bounty-bros-title-screen](bounty-bros.jpg)][bounty_bros_webgame] -_Click the image to play the game in your browser!_ +{{ image_figure( + alt="bounty-bros-title-screen" + src="bounty-bros.jpg" + caption="Click the image to play the game in your browser!", + link="https://katharostech.github.io/skipngo_pre-releases/refs/tags/pre-release-2/?asset_url=https://katharostech.github.io/bounty-bros_pre-releases/2") }} [Bounty Bros.][bounty_bros] is a prototype, top-down adventure game, developed by [Katharos Technology][katharostech] as a testing ground for a future @@ -380,8 +395,10 @@ issue](https://github.com/ggez/ggez/issues/875). ### [Macroquad] -![Zemeroth running on Android](macroquad.jpg) -_A Macroquad game ([Zemeroth](#zemeroth)) running on Android!_ +{{ image_figure( + alt="Zemeroth running on Android" + src="macroquad.jpg" + caption="A Macroquad game ([Zemeroth](#zemeroth)) running on Android!") }} [Macroquad] is a cross-platform game framework, inspired heavily by Raylib. @@ -465,8 +482,11 @@ animated sprites. ### [Writing an RPG using rg3d][writing-an-rpg-using-rg3d] -[![rg3d RPG screenshot](rg3d.jpg)][rg3d-video] -_[Click here][rg3d-video] to see a video of the character controller in action!_ +{{ image_figure( + alt="rg3d RPG screenshot" + src="rg3d.jpg" + caption="[Click here](https://www.youtube.com/watch?v=l2ZbDpoIdqk) to see a video of the character controller in action!", + link="https://www.youtube.com/watch?v=l2ZbDpoIdqk") }} Dimitry Stepanov (aka @mrDIMAS) published a [tutorial series][writing-an-rpg-using-rg3d] about @@ -481,8 +501,10 @@ it's still a great way to learn the basics of rg3d and Rust gamedev in general! ### [Graphite][graphite-repo] -![Graphite logo](graphite_scream.png) -_A recreation of "The Scream" in Graphite by Norgate_ +{{ image_figure( + alt="Graphite logo" + src="graphite_scream.png" + caption="A recreation of "The Scream" in Graphite by Norgate") }} Graphite ([GitHub][graphite-repo], [Discord][graphite-discord], [Twitter](https://twitter.com/GraphiteEditor)) is an in-development vector and @@ -639,8 +661,10 @@ now features a [tutorial] and full game [examples] for every type of session. ### [Bevy Retrograde][bevy_retrograde] -![physics example](./bevy-retrograde.gif) -_Bevy Retrograde Physics Map example_ +{{ image_figure( + alt="physics example" + src="bevy-retrograde.gif" + caption="Bevy Retrograde Physics Map example") }} [Bevy Retrograde][bevy_retrograde] (formerly Bevy Retro) is a [Bevy] plugin designed for making pixel-perfect games as easily as possible. diff --git a/content/news/025/index.md b/content/news/025/index.md index 126ed8408..a6ca90674 100644 --- a/content/news/025/index.md +++ b/content/news/025/index.md @@ -33,7 +33,7 @@ Feel free to send PRs about your own projects! - [Engine Updates](#engine-updates) - [Tooling Updates](#tooling-updates) - [Library Updates](#library-updates) -- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github) +- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github) - [Requests for Contribution](#requests-for-contribution) diff --git a/content/news/026/index.md b/content/news/026/index.md index 63f9d0efb..6d2d73dca 100644 --- a/content/news/026/index.md +++ b/content/news/026/index.md @@ -37,7 +37,7 @@ Feel free to send PRs about your own projects! - [Engine Updates](#engine-updates) - [Tooling Updates](#tooling-updates) - [Library Updates](#library-updates) -- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github) +- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github) - [Requests for Contribution](#requests-for-contribution) - [Discussions](#discussions) @@ -166,14 +166,17 @@ _Discussions: [Twitter][bitgun-inventory]_ The Windows version of the game has been rewritten to use Macroquad, so now the web and downloadable versions of the game share the same codebase. Development for the web version has moved to the -[Weegames Github][weegames-github] repository. +[Weegames GitHub][weegames-github] repository. [weegames-itch]: https://yeahross.itch.io/weegames [weegames-github]: https://github.com/yeahross0/weegames ### [Veloren][veloren] -![An odd structure in the woods](veloren.jpg) _An odd structure in the woods_ +{{ image_figure( + alt="An odd structure in the woods" + src="veloren.jpg" + caption="An odd structure in the woods") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -211,8 +214,10 @@ September's full weekly devlogs: "This Week In Veloren...": ### [Harvest Hero Origins][hho] @ PAX West 2021 -![hho @ pax](hho_pax.jpg) -_Gemdrop Games booth at PAX West 2021_ +{{ image_figure( + alt="hho @ pax" + src="hho_pax.jpg" + caption="Gemdrop Games booth at PAX West 2021") }} [Harvest Hero Origins][hho] ([Discord](https://discord.gg/CJRbxQn3d9), @@ -323,8 +328,10 @@ at [Idu's Discord server's #demo-download channel][idu-discord]! ### [Antorum Online] -![Some players fishing at the beach](antorum.jpg) -_It's a good day for fishing..._ +{{ image_figure( + alt="Some players fishing at the beach" + src="antorum.jpg" + caption="It's a good day for fishing...") }} [Antorum Online] is a micro-multiplayer online role-playing game by [@dooskington]. The game server is written in Rust, and the official client is being developed @@ -433,8 +440,10 @@ As the godot-rust community keeps growing, the project can now be found ### [Emerald] -![hotreload](emd_texture_hotreload.gif) -_Built in texture hot reloading, just call `emd.loader().hotreload()`_ +{{ image_figure( + alt="hotreload" + src="emd_texture_hotreload.gif" + caption="Built in texture hot reloading, just call `emd.loader().hotreload()`") }} [Emerald] by [@bombfuse][bombfuse_twi] is a 2D game engine focused on being super portable and easy-to-use. @@ -462,8 +471,10 @@ fork and PR! ### [Starframe] -![physically-connected groups of primitives are framed with rectangles](starframe-islands.jpeg) -_Grouping bodies into disjoint "islands"_ +{{ image_figure( + alt="physically-connected groups of primitives are framed with rectangles" + src="starframe-islands.jpeg" + caption='Grouping bodies into disjoint "islands"') }} [Starframe] by [@molentum] is a work-in-progress game engine for physics-y sidescrolling 2D games. @@ -486,9 +497,11 @@ More details to be shown soonish! ### [Arcana] -![two synchronized views on tanks players-controlled tanks shooting each other -](arcana-tanks-multiplayer.gif) -_Two clients connected to the same server_ +{{ image_figure( + alt="two synchronized views on tanks players-controlled tanks shooting each other +" + src="arcana-tanks-multiplayer.gif" + caption="Two clients connected to the same server") }} [Arcana] is ECS based game engine focused on simplicity and performance. @@ -515,8 +528,11 @@ out-of-the-box atm, but stability improvements are expected next month. ### [rg3d] v0.23 -[![rg3d 0.23 feature highlights video](rg3d_video.jpg)][rg3d_0_23_video] -_A feature highlights [video][rg3d_0_23_video]_ +{{ image_figure( + alt="rg3d 0.23 feature highlights video" + src="rg3d_video.jpg" + caption="A feature highlights [video](https://youtube.com/watch?v=3tOdwmRWLKw)", + link="https://youtube.com/watch?v=3tOdwmRWLKw") }} [rg3d] ([Discord][rg3d_discord], [Twitter][rg3d_twitter], [Patreon][rg3d_patreon]) is a game engine that aims to be easy to use and provide a large @@ -545,8 +561,10 @@ _Discussions: [/r/rust](https://reddit.com/r/rust/comments/pnhbe4/media_rg3d_023 ### [Rust RPG Toolkit][rpg_rk] -![A dialogue window](capstone.png) -_[Capstone] - a WIP game that uses Rust RPG Toolkit_ +{{ image_figure( + alt="A dialogue window" + src="capstone.png" + caption="[Capstone](https://www.reddit.com/r/rust_gamedev/comments/paz35s/capstone) - a WIP game that uses Rust RPG Toolkit") }} [Rust RPG Toolkit][rpg_rk] by [@olefasting] is an engine for creating highly customizable and user modable action 2D action RPG's using Rust amd JSON. @@ -625,8 +643,10 @@ It supports modifying PC saves as well as decrypted PS4 saves ### [wgpu] -![Deno with wgpu crown](deno-wgpu.png) -_deno-wgpu_ +{{ image_figure( + alt="Deno with wgpu crown" + src="deno-wgpu.png" + caption="deno-wgpu") }} [wgpu] is a cross-platform, safe, pure-rust graphics API that runs natively on Vulkan, Metal, D3D12, D3D11, and OpenGLES; and on top of WebGPU on wasm. @@ -760,8 +780,10 @@ ktx2 writing support will come a future release. ### [rend3][rend3-github] -![rend3 sci-fi base scene](rend3-scifi.jpg) -_rend3 rendering a complex scene_ +{{ image_figure( + alt="rend3 sci-fi base scene" + src="rend3-scifi.jpg" + caption="rend3 rendering a complex scene") }} rend3 is a new 3D rendering library that focuses on having an easy to user interface without sacrificing performance or customizability. @@ -798,8 +820,10 @@ the new APIs, including the new Tables API. ### [Emergent AI][emergent-git] -![Utility AI](emergent-ai.gif) -_Example of game behavior using Utility AI_ +{{ image_figure( + alt="Utility AI" + src="emergent-ai.gif" + caption="Example of game behavior using Utility AI") }} [Emergent AI][emergent-git] by [@PsichiX][psichix-twitter] is a new crate designed to provide modern AI solutions for games written in Rust. Its highly modularized @@ -869,8 +893,10 @@ _Discussions: ### [KAS] GUI v0.10 -![a window with many widgets and tabs](kas-demo.gif) -_Widget gallery demo_ +{{ image_figure( + alt="a window with many widgets and tabs" + src="kas-demo.gif" + caption="Widget gallery demo") }} [KAS] by [@dhardy] is a general-purpose retained UI toolkit. This month v0.10 was released: @@ -893,7 +919,7 @@ _Discussions: [/r/rust](https://reddit.com/r/rust/comments/pjlb92/kas_gui_v010)_ [KAS]: https://github.com/kas-gui/kas [@dhardy]: https://github.com/dhardy -## Popular Workgroup Issues in Github +## Popular Workgroup Issues in GitHub diff --git a/content/news/027/index.md b/content/news/027/index.md index a3769c6b5..cc6efb8a0 100644 --- a/content/news/027/index.md +++ b/content/news/027/index.md @@ -107,8 +107,10 @@ Early Access release on Steam is expected in mid 2022. ### [The Process] -![An animated gif showing an engineer shooting rockets](the_process.gif) -_Firing Carrockets™!_ +{{ image_figure( + alt="An animated gif showing an engineer shooting rockets" + src="the_process.gif" + caption="Firing Carrockets™!") }} [The Process] by @setzer22 is an upcoming game about factory building, process management, and carrot production, built with Rust using the Godot game engine! @@ -172,8 +174,10 @@ is available [here][chaos-theory-src] and ### [Me And My Unicycle] -![Me And My Unicycle screenshot](me_and_my_unicycle_cover.png) -_Can you handle this unstable ride?_ +{{ image_figure( + alt="Me And My Unicycle screenshot" + src="me_and_my_unicycle_cover.png" + caption="Can you handle this unstable ride?") }} [Me And My Unicycle] is a 2D physics game by [@nikl_me] submitted to Ludum Dare 49. It is build with [Bevy] and [the code can be found on GitHub][mamu-source]. @@ -273,8 +277,10 @@ The developer have also written a blog post: ### [Graph Game] -![image/gameplay of the game: circle and triangles](graph_game.gif) -_Navigating the graph map can be stressful_ +{{ image_figure( + alt="image/gameplay of the game: circle and triangles" + src="graph_game.gif" + caption="Navigating the graph map can be stressful") }} [Graph Game] ([GitHub][graph-game-github]) uses [Bevy](https://bevyengine.org/) as its engine. You can play it from your @@ -323,8 +329,10 @@ You can stay up to date on the latest developments of Way of Rhea by ### [PaddlePunks][paddlepunks-itch] -![Animated gameplay that looks like pong mixed with an anime fighting game](paddlepunks-gameplay.gif) -_A round between a player and the AI set to Hard_ +{{ image_figure( + alt="Animated gameplay that looks like pong mixed with an anime fighting game" + src="paddlepunks-gameplay.gif" + caption="A round between a player and the AI set to Hard") }} PaddlePunks is a versus tennis game by [Felix Windström][paddlepunks-twitter] with a diverse cast of characters and playstyles and online play with rollback @@ -342,8 +350,10 @@ players. Updates are also posted to [Twitter][paddlepunks-twitter]. ### [Veloren][veloren] -![An early-morning sunrise](veloren.jpg) -_An early-morning sunrise_ +{{ image_figure( + alt="An early-morning sunrise" + src="veloren.jpg" + caption="An early-morning sunrise") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -441,8 +451,11 @@ For more details, see the [changelog][tetra-changelog]. ### [GameDev Mini Symposium][gms-talk] -[![An early-morning sunrise](gms-talk.png)][gms-talk] -_Click the image to watch the talk_ +{{ image_figure( + alt="An early-morning sunrise" + src="gms-talk.png" + caption="Click the image to watch the talk", + link="https://www.youtube.com/watch?v=OzUsPi4kHes") }} Back in September, the University of Glasgow's GameLab held a 'GameDev Mini Symposium' online. One of the featured speakers was @@ -487,8 +500,10 @@ or [GitHub][spv]. ### [wgpu]-0.11 release -![bevy webgl2 via wgpu](bevy-webgl2.png) -_experimental Bevy branch running on WebGL2 via wgpu_ +{{ image_figure( + alt="bevy webgl2 via wgpu" + src="bevy-webgl2.png" + caption="experimental Bevy branch running on WebGL2 via wgpu") }} The team is happy to announce the release of wgpu-0.11 and naga-0.7. Details can be found on the [gfx-rs blog]. The most exciting feature @@ -506,8 +521,10 @@ and the history of processing shaders with Rust. ### [rend3]-0.2 Release -![rend3-scifi](rend3-scifi.jpg) -_Improved shadows and rendering with rend3 0.2_ +{{ image_figure( + alt="rend3-scifi" + src="rend3-scifi.jpg" + caption="Improved shadows and rendering with rend3 0.2") }} rend3 is a 3D rendering library that focuses on having an easy to use interface without sacrificing performance or customizability. diff --git a/content/news/028/index.md b/content/news/028/index.md index 425ede7a6..f7ad574d6 100644 --- a/content/news/028/index.md +++ b/content/news/028/index.md @@ -79,8 +79,10 @@ working on at the next meetup on [December 11th][rust-meetup-dec-time], fill out ### Flesh -![flesh preview](flesh.gif) -_The melee weapon in action_ +{{ image_figure( + alt="flesh preview" + src="flesh.gif" + caption="The melee weapon in action") }} [Flesh] by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation and an organic/fleshy theme. It is implemented using [Tetra]. This month's updates @@ -95,8 +97,10 @@ include: ### [One-Click Ninja] -![Screenshot of One-Click Ninja](one-click-ninja.png) -_Screenshot of One-Click Ninja_ +{{ image_figure( + alt="Screenshot of One-Click Ninja" + src="one-click-ninja.png" + caption="Screenshot of One-Click Ninja") }} One-Click Ninja is a rhythm game made in 10 days for [1-Button Jam 2021], written in Rust using the [Bevy] engine. @@ -148,8 +152,10 @@ tunnel full of spiders and other enemies! They also worked on a ### [Halloween Mahjong Solitaire][mahjong-github] -![Halloween Mahjong Solitaire screenshot](mahjong-screenshot.png) -_Screenshot of Halloween Mahjong Solitaire_ +{{ image_figure( + alt="Halloween Mahjong Solitaire screenshot" + src="mahjong-screenshot.png" + caption="Screenshot of Halloween Mahjong Solitaire") }} Halloween Mahjong Solitaire ([GitHub][mahjong-github]) by [@Syn-Nine][synnine-twitter] is a game created for the [Game Developers @@ -193,8 +199,10 @@ You can follow the development of Country Slice on ### [Veloren][veloren] -![Travelling merchant](veloren.jpg) -_A merchant paused in their travels_ +{{ image_figure( + alt="Travelling merchant" + src="veloren.jpg" + caption="A merchant paused in their travels") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -234,8 +242,11 @@ November's full weekly devlogs: "This Week In Veloren...": ### [BENDYWORM] -![An animation of a platformer where the entire world bends around -you](bendyworm.gif) _Watch out! The entire world bends around you!_ +{{ image_figure( + alt="An animation of a platformer where the entire world bends around +you" + src="bendyworm.gif" + caption="Watch out! The entire world bends around you!") }} BENDYWORM ([GitHub][BENDYWORM-github], [Twitter][BENDYWORM-twitter]) by [@bauxitedev][BENDYWORM-bauxitedev] is a platformer with a twist: the entire @@ -347,10 +358,13 @@ _Discussions: ### [PaddlePunks][paddlepunks-itch] -![Pong, but one of the characters rewinds time to figure out which of the other -player's ballusions is actually real](paddlepunks-rewind.gif) _One of the -characters can spend super meter to rewind time, this is strong but pretty -situational._ +{{ image_figure( + alt="Pong, but one of the characters rewinds time to figure out which of the other + player's ballusions is actually real" + src="paddlepunks-rewind.gif" + caption="One of the + characters can spend super meter to rewind time, this is strong but pretty + situational.") }} PaddlePunks is a versus tennis game by [Felix Windström][paddlepunks-twitter] with a diverse cast of characters and playstyles and online play with rollback @@ -524,8 +538,10 @@ to write compute shaders in a "real language". ### [Rust Roguelike Tutorial][rl-tut] -![ascii map and ui](rl-tut.jpg) -_A nasty demon monster at the exit to Abyss_ +{{ image_figure( + alt="ascii map and ui" + src="rl-tut.jpg" + caption="A nasty demon monster at the exit to Abyss") }} [The Roguelike Tutorial][rl-tut] by [@herberticus] got a [new 75th (!) chapter][rl-tut-new] that shows how to generate a chaotic Voronoi-based city @@ -543,8 +559,10 @@ portal. ### [Hands-on Rust][hor] -![A screenshot of a game in a browser](hor-bonus.jpg) -_A Dungeon Crawler running in a browser_ +{{ image_figure( + alt="A screenshot of a game in a browser" + src="hor-bonus.jpg" + caption="A Dungeon Crawler running in a browser") }} Another update from [@herberticus] is a bonus article for the [Hands-on Rust][hor] book: ["Run Your Rust Games in a Browser"][hor-bonus] that guides the @@ -636,8 +654,11 @@ Discord][graphite-discord] and get involved! ### [Solid Editor][solid] -[![youtube preview: modelling tree's branches using ball as a cursor](solid-editor.jpg)][solid-video] -_A [demo video][solid-video] of using the editor_ +{{ image_figure( + alt="youtube preview: modelling tree's branches using ball as a cursor" + src="solid-editor.jpg" + caption="A [demo video][solid-video] of using the editor", + link="https://youtube.com/watch?v=GuVM3W9Pfdg") }} [Solid Editor][solid] is [Solid Engine][solid-engine]'s custom-built voxel graphics editor. It is designed to be a key part of the engine's asset pipeline, diff --git a/content/news/029/index.md b/content/news/029/index.md index a7d72a992..23e9dd691 100644 --- a/content/news/029/index.md +++ b/content/news/029/index.md @@ -80,8 +80,10 @@ Twitch][rust-gamedev-twitch]. ### [Tet-Rust][tetrust-github] -![Tet-Rust screenshot](tet-rust-1-sm.gif) -_Screenshot of Tet-Rust_ +{{ image_figure( + alt="Tet-Rust screenshot" + src="tet-rust-1-sm.gif" + caption="Screenshot of Tet-Rust") }} Tet-Rust ([GitHub][tetrust-github]) by [@Syn-Nine][synnine-twitter] is a mini game based on the famous falling puzzle @@ -98,8 +100,10 @@ that use this framework. ### The Beast of Monte Carlo -![The Beast of Monte Carlo Screenshot](bomc-shots.png) -_Screenshot of The Beast of Monte Carlo_ +{{ image_figure( + alt="The Beast of Monte Carlo Screenshot" + src="bomc-shots.png" + caption="Screenshot of The Beast of Monte Carlo") }} The Beast of Monte Carlo by [@Syn-Nine][synnine-twitter] is a mini role-playing game in development to help work out new features for Syn9's @@ -163,8 +167,10 @@ it gives us a glimpse into 3 different bioms, bosses, enemies and more. ### [Veloren][veloren] -![Winter in a town](veloren.jpg) -_A peaceful winter night_ +{{ image_figure( + alt="Winter in a town" + src="veloren.jpg" + caption="A peaceful winter night") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -342,8 +348,10 @@ Main highlights of the latest [@dooskington's devlog][antorum-post]: ### [Rusty Engine 3.0] -![An example Rusty Engine game](rusty_engine3.png) -_The "Road Race" game prototype running under Rusty Engine 3.0_ +{{ image_figure( + alt="An example Rusty Engine game" + src="rusty_engine3.png" + caption="The "Road Race" game prototype running under Rusty Engine 3.0") }} [Rusty Engine] by [Nathan Stocks] is a game engine built on top of Bevy for people who are learning Rust. @@ -553,8 +561,10 @@ use of assets_manager with ggez engine! ### [wgpu]-0.12 release -![albedo pathtracer](wgpu-pathtracer.png) -_experimental pathtracer on wgpu from @llamajestic_ +{{ image_figure( + alt="albedo pathtracer" + src="wgpu-pathtracer.png" + caption="experimental pathtracer on wgpu from @llamajestic") }} The team concluded 2021 with the release of wgpu-0.12 and naga-0.8. Details can be found on the [gfx-rs blog] and [wgpu reddit discussion]. diff --git a/content/news/030/index.md b/content/news/030/index.md index 3501900e4..653eefaa5 100644 --- a/content/news/030/index.md +++ b/content/news/030/index.md @@ -83,8 +83,10 @@ Twitch][rust-gamedev-twitch]. ### Flesh -![flesh preview](flesh.gif) -_the second level's background + new enemy_ +{{ image_figure( + alt="flesh preview" + src="flesh.gif" + caption="the second level's background + new enemy") }} [Flesh] by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation and an organic/fleshy theme. It is implemented using [Tetra]. This month's updates @@ -99,8 +101,10 @@ include: ### [Rusty Vangers] -![Rust engine powering original game](vangers-integrated.jpg) -_Rusty Vangers engine in action within the original game_ +{{ image_figure( + alt="Rust engine powering original game" + src="vangers-integrated.jpg" + caption="Rusty Vangers engine in action within the original game") }} [Rusty Vangers] by [@kvark] is a modern re-implementation of the original [Vangers] game from the last century. @@ -158,8 +162,10 @@ or joining [their Discord][wor-discord]. ### [Garden of the Centaur][centaur-github] -![Garden of the Centaur screenshot](centaur-screenshot.png) -_Screenshot of Garden of the Centaur_ +{{ image_figure( + alt="Garden of the Centaur screenshot" + src="centaur-screenshot.png" + caption="Screenshot of Garden of the Centaur") }} Garden of the Centaur ([GitHub][centaur-github]) by [@Syn-Nine][synnine-twitter] is an action-puzzle mini game where you navigate a @@ -197,8 +203,10 @@ The latest version includes: ### [Veloren][veloren] -![Bright lantern](veloren.jpg) -_A light to keep the night away_ +{{ image_figure( + alt="Bright lantern" + src="veloren.jpg" + caption="A light to keep the night away") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -392,8 +400,10 @@ a sizable list! ([#845][gd-845]) ### [Rusty Engine 4.0] -![An example Rusty Engine game](rusty_engine4.png) -_The updated collider visualization (white outlines) in Rusty Engine 4.0_ +{{ image_figure( + alt="An example Rusty Engine game" + src="rusty_engine4.png" + caption="The updated collider visualization (white outlines) in Rusty Engine 4.0") }} [Rusty Engine] by [Nathan Stocks] is a game engine built on top of Bevy for people who are learning Rust. @@ -416,8 +426,10 @@ _Discussions: ### [Bevy v0.6][bevy-blog] -![bevy bistro night](bevy_bistro_night.jpg) -_The Lumberyard Bistro scene rendered in the new Bevy Renderer._ +{{ image_figure( + alt="bevy bistro night" + src="bevy_bistro_night.jpg" + caption="The Lumberyard Bistro scene rendered in the new Bevy Renderer.") }} [Bevy][bevy] is a refreshingly simple data-driven game engine built in Rust. It is [free and open source][bevy-git] forever! @@ -457,8 +469,10 @@ _Discussions: ### [`three-d` 0.10][three-d] -![three-d example of environment lighting](three-d.jpg) -_Environment lighting example_ +{{ image_figure( + alt="three-d example of environment lighting" + src="three-d.jpg" + caption="Environment lighting example") }} [`three-d`][three-d] is a 2D/3D renderer targeting both desktop and web @@ -544,7 +558,7 @@ You can read it [here][rflb-post]. [![AH scanner workflow](ah-scanner.png)][trimoq-post] -Trimoq ([Github][trimoq-github], [Twitter][trimoq-twitter]) wrote [a blog +Trimoq ([GitHub][trimoq-github], [Twitter][trimoq-twitter]) wrote [a blog post][trimoq-post] about writing a game client for a popular MMORPG. It focuses on some negative parts of Rust and its ecosystem. There are three key takeaways from this post: @@ -680,8 +694,11 @@ and handles chords! ### [rafx] -[![Rafx Screenshot](rafx-screenshot.jpg)][rafx-youtube-video] -_Sci-fi base demo scene, [watch TAA demo on youtube][rafx-youtube-video]!_ +{{ image_figure( + alt="Rafx Screenshot" + src="rafx-screenshot.jpg" + caption="Sci-fi base demo scene, [watch TAA demo on youtube](https://www.youtube.com/watch?v=iWYpX7RGUSA)!", + link="https://www.youtube.com/watch?v=iWYpX7RGUSA") }} [Rafx][rafx] is a multi-backend renderer that optionally integrates with the [distill][rafx-distill] asset pipeline. @@ -790,8 +807,10 @@ _Discussions: ### [Bevy Smud][bevy-smud] -![Bevy Smud screenshot](bevy-smud.png) -_A bevy drawn with Bevy Smud_ +{{ image_figure( + alt="Bevy Smud screenshot" + src="bevy-smud.png" + caption="A bevy drawn with Bevy Smud") }} [Bevy Smud][bevy-smud] is a new [Bevy][bevy-smud-bevy] plugin for drawing 2D shapes using signed distance fields. diff --git a/content/news/031/index.md b/content/news/031/index.md index b2e279d8a..02eb8744d 100644 --- a/content/news/031/index.md +++ b/content/news/031/index.md @@ -105,7 +105,7 @@ Twitch][rust-gamedev-twitch]. The Rust Gamedev Working Group is working on a showcase of games made in Rust! If you're interested in submitting your own footage, fill out [this form][showcase-form]. You can also read more about the process of creating the -showcase in the [showcase discussion on Github][showcase-discussion]. The +showcase in the [showcase discussion on GitHub][showcase-discussion]. The deadline for submissions has been extended until the 19th of March 2022. Hope to see your game in there! @@ -116,10 +116,11 @@ see your game in there! ### [Name Needed][name-needed] -![The player orders a selection of blocks to be broken, and a brick wall to be -built.](name-needed.gif) -_The player orders a selection of blocks to be broken, and a brick wall to be -built._ +{{ image_figure( + alt="The player orders a selection of blocks to be broken, and a brick wall to be built." + src="name-needed.gif" + caption="The player orders a selection of blocks to be broken, and a brick wall to be built.") }} + [Name Needed][name-needed] by [@DomWilliams0][domwilliams-github] is a one-man effort to produce an open source, intuitive, and high-performance Dwarf @@ -141,8 +142,10 @@ superb `async`/`await` support, which is documented in the most recent devlog. ### [This is Fine Sokoban][sokoban-github] -![This is Fine Sokoban screenshot](sokoban_screenshot.gif) -_Screenshot of This is Fine Sokoban_ +{{ image_figure( + alt="This is Fine Sokoban screenshot" + src="sokoban_screenshot.gif" + caption="Screenshot of This is Fine Sokoban") }} This is Fine Sokoban ([GitHub][sokoban-github]) by [@Syn-Nine][synnine-twitter] is a Sokoban game inspired by the This is Fine @@ -236,8 +239,10 @@ check out its gameplay on [youtube][youtube-molecoole], or on the Steam page. ### [Veloren][veloren] -![Gnarling looking out over a fort](veloren.jpg) -_Looking out over the Gnarling fort_ +{{ image_figure( + alt="Gnarling looking out over a fort" + src="veloren.jpg" + caption="Looking out over the Gnarling fort") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -284,7 +289,7 @@ February's full weekly devlogs: "This Week In Veloren...": [![dims screenshot](dims.jpg)][DIMS-first-look] -@jfnoren ([Twitter][@jfnoren-twitter], [Github][@jfnoren-github]) posted a +@jfnoren ([Twitter][@jfnoren-twitter], [GitHub][@jfnoren-github]) posted a [video][DIMS-first-look] about a first look into their engine, DIMS. DIMS allows you to create open worlds, script gameplay, and mess around with physics. DIMS has been in the works for several months, but you can now sign up for early @@ -303,8 +308,10 @@ _Discussions: [Reddit][DIMS-reddit-discussion], [Twitter][DIMS-twitter-discussio ### [Bevy Minesweeper] -![screenshot](bevy_minesweeper.png) -_Demo Screenshot_ +{{ image_figure( + alt="screenshot" + src="bevy_minesweeper.png" + caption="Demo Screenshot") }} [@ManevilleF] published a 12 step [course][Bevy Minesweeper] on how to make a simple 2D Minesweeper using [bevy][bevy] 0.6. @@ -345,7 +352,7 @@ process: ### [Actor Pattern with Async Rust] -@Sorokya ([Twitter][sorokya-twitter], [Github][sorokya-github]) [published a blog +@Sorokya ([Twitter][sorokya-twitter], [GitHub][sorokya-github]) [published a blog post][Actor Pattern with Async Rust] about how they improved their game server by switching over to an actor pattern approach. This method allowed the server to be refactored to be more modular and cleaner. @@ -356,8 +363,10 @@ to be refactored to be more modular and cleaner. ### [Godot-Rust to Android without Android Studio][godot-rust-to-android] -![working godot-rust on an android phone](godot-rust-android-via-windows.jpg) -_Proof of concept Godot app running on Android_ +{{ image_figure( + alt="working godot-rust on an android phone" + src="godot-rust-android-via-windows.jpg" + caption="Proof of concept Godot app running on Android") }} [@coffeecodechem] published a [blog post][godot-rust-to-android] on how to export godot-rust as an Android APK on Windows without using Android Studio. It diff --git a/content/news/032/index.md b/content/news/032/index.md index 41a86aef9..8c9396c8e 100644 --- a/content/news/032/index.md +++ b/content/news/032/index.md @@ -164,7 +164,7 @@ Mechaburro, giving them an unfair advantage. A postmortem devlog detailing the process of making the game during the jam can be found [here][mechaburro-postmortem], a trailer for the game is [viewable on YouTube][mechaburro-youtube] and the source code for the game -is available [on Github][mechaburro-github]. +is available [on GitHub][mechaburro-github]. [mechaburro-itchio]: https://ramirezmike2.itch.io/quien-es-el-mechaburro [mechaburro-github]: https://github.com/ramirezmike/quien_es_el_mechaburro @@ -201,7 +201,7 @@ and added great code documentation (including a flow diagram demonstrating the game state changes). The game code is licensed under MIT or Apache-2 and is [available on -Github][warlocks-gambit-github]. +GitHub][warlocks-gambit-github]. [warlocks-gambit-itchio]: https://gibonus.itch.io/warlocks-gambit [warlocks-gambit-github]: https://github.com/team-plover/warlocks-gambit @@ -225,8 +225,10 @@ The source for this game is available on [GitHub][cnw-source]. ### [V-Racer][vracer-github] -![VRacer screenshot](vracer_screenshot.gif) -_Screenshot of V-Racer_ +{{ image_figure( + alt="VRacer screenshot" + src="vracer_screenshot.gif" + caption="Screenshot of V-Racer") }} V-Racer ([GitHub][vracer-github]) by [@Syn-Nine][synnine-twitter] is a retro @@ -266,8 +268,10 @@ in the new [Spring Fever expansion][spring-fever]! ### [Veloren][veloren] -![Veloren on the Steam Deck](veloren-steamdeck.jpg) -_Veloren on the Steam Deck!_ +{{ image_figure( + alt="Veloren on the Steam Deck" + src="veloren-steamdeck.jpg" + caption="Veloren on the Steam Deck!") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -275,9 +279,9 @@ Fortress and Cube World. In March, Veloren was tested on the SteamDeck, which you can read about in detail in [the weekly devblog][veloren-steamdeck-section]. Lots of work was done with Airshipper, Veloren's launcher, including some bug fixes, but mainly the -switch to Github Releases as the download backend. This will make game updates +switch to GitHub Releases as the download backend. This will make game updates significantly faster and more reliable for players. Work is also being done to -make use of Github's HTTP range requests to do partial patches where possible. +make use of GitHub's HTTP range requests to do partial patches where possible. Audio work was done to improve swimming sounds playing unevenly, and more sounds to gliding. @@ -446,7 +450,7 @@ Tetra, as [the developer has decided to move onto other projects][tetra-retro]. ![Bevy video series title](bevy-video-series.jpg) Matthew Bryant ([Youtube][matthew-bryant-youtube], -[Github][matthew-bryant-github]) has been working on a video series on using +[GitHub][matthew-bryant-github]) has been working on a video series on using Bevy to create a Pokemon-style RPG, and just released four episodes. The goal is to show and explain all the core features of Bevy while creating a real game over ten 10-15 minute videos, currently releasing once per week. There is also diff --git a/content/news/033/index.md b/content/news/033/index.md index b42745b30..8beb70774 100644 --- a/content/news/033/index.md +++ b/content/news/033/index.md @@ -149,8 +149,10 @@ joining [their Discord][wor-discord]. ### BITGUN -![BITGUN gameplay](bitgun-release-optimized.gif) -_BITGUN gameplay_ +{{ image_figure( + alt="BITGUN gameplay" + src="bitgun-release-optimized.gif" + caption="BITGUN gameplay") }} [BITGUN] ([Discord], [Twitter]) by [@darth] and [@shosanna] is an action roguelite zombie shooter with difficult and satisfying combat you can learn and @@ -181,8 +183,10 @@ _Discussion: [/r/rust](https://www.reddit.com/r/rust/comments/uepde7/after_worki ### [Veloren][veloren] -![Riding at night](veloren.jpg) -_Out for a ride at night_ +{{ image_figure( + alt="Riding at night" + src="veloren.jpg" + caption="Out for a ride at night") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -278,8 +282,10 @@ _Discussions: [/r/rust_gamedev][ees-reddit]_ ### [Bevy v0.7][bevy-blog] -![bevy mushroom](bevy_mushroom.jpg) -_Creative Commons 'Stylized mushrooms' scene by QumoDone rendered in Bevy._ +{{ image_figure( + alt="bevy mushroom" + src="bevy_mushroom.jpg" + caption="Creative Commons 'Stylized mushrooms' scene by QumoDone rendered in Bevy.") }} [Bevy][bevy] is a refreshingly simple data-driven game engine built in Rust. It is [free and open source][bevy-git] forever! @@ -331,8 +337,10 @@ _Discussions: ### Dims -![dims foliage](dims.jpg) -_Foliage rendering in Dims_ +{{ image_figure( + alt="dims foliage" + src="dims.jpg" + caption="Foliage rendering in Dims") }} Dims is an open-world creation platform. @@ -359,8 +367,10 @@ _Discussions: ### [Eldiron] -![Eldiron Image](eldiron_screen.png) -_Behavior Nodes of Eldiron_ +{{ image_figure( + alt="Eldiron Image" + src="eldiron_screen.png" + caption="Behavior Nodes of Eldiron") }} [Eldiron] ([GitHub][eldiron-github], [Discord][eldiron-discord], [Twitter][eldiron-twitter]) by [@markusmoenig] is a creator for classic role @@ -390,9 +400,10 @@ the classical Ultima series. ### [Hotham][hotham] -![Hotham Image](hotham.png) -_Screenshot from The Station, an upcoming space station simulation game, built -with Hotham_ +{{ image_figure( + alt="Hotham Image" + src="hotham.png" + caption="Screenshot from The Station, an upcoming space station simulation game, built with Hotham") }} [Hotham][hotham] is a game engine for standalone VR devices, trying to make VR development just a little bit less painful. @@ -452,7 +463,7 @@ _Discussions: [r/rust_gamedev][why-article]_ ![devlog logo](brontefy-me.jpg) -@hedgein ([Github][hedgein-github], [Twitch][hedgein-twitch]) started a devlog +@hedgein ([GitHub][hedgein-github], [Twitch][hedgein-twitch]) started a devlog series called Brontefy Me. This series walks through the development of games in the [Bevy engine][bevy]. There are two episodes released so far. The [first episode][brontefy-me-episode-1] focuses on getting up and running with the diff --git a/content/news/034/index.md b/content/news/034/index.md index 66127c8af..4a8bfbc5c 100644 --- a/content/news/034/index.md +++ b/content/news/034/index.md @@ -38,7 +38,7 @@ Feel free to send PRs about your own projects! - [Tooling Updates](#tooling-updates) - [Library Updates](#library-updates) - [Other News](#other-news) -- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github) +- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github) - [Discussions](#discussions) - [Requests for Contribution](#requests-for-contribution) - [Jobs](#jobs) @@ -127,7 +127,7 @@ provide a more detailed look: [Ferris dancing][raymarch-twitter-dance]. Once the model is finished, it will be published under a permissive license on -[Github][raymarch-github], so you can use it in your 3D game, +[GitHub][raymarch-github], so you can use it in your 3D game, rendering demo, v-tuber avatar, you name it! If you have any feedback feel free to share on [Discord][raymarch-gamedev-discord]. @@ -290,8 +290,10 @@ is over, you can still find the ### [Veloren][veloren] -![Flying down a mountain](veloren.jpg) -_A glorious flight to distant lands_ +{{ image_figure( + alt="Flying down a mountain" + src="veloren.jpg" + caption="A glorious flight to distant lands") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -347,8 +349,11 @@ The source code of the game is [available on GitHub][hug-src]. ### [Combine&Conquer][cnc-logs] -[![Preview: a factory](cnc-preview.png)][cnc-video] -_[Connect factories on different planets via spaceships][cnc-video]_ +{{ image_figure( + alt="Preview: a factory" + src="cnc-preview.png" + caption="[Connect factories on different planets via spaceships](https://reddit.com/r/IndieDev/comments/uxcc7v/connect_different_planets)", + link="https://reddit.com/r/IndieDev/comments/uxcc7v/connect_different_planets") }} [Combine&Conquer][cnc-itch] by [Martin Buck][@I3ck] is a WIP strategy game about automation similar to Satisfactory or Factorio. @@ -825,7 +830,7 @@ that showcases bevy-pigeon and carrier-pigeon. [pigeon-bong]: https://github.com/MitchellMarinoDev/bong [@MitchellMarinoDev]: https://github.com/MitchellMarinoDev -## Popular Workgroup Issues in Github +## Popular Workgroup Issues in GitHub diff --git a/content/news/035/index.md b/content/news/035/index.md index 520593002..e912e5e85 100644 --- a/content/news/035/index.md +++ b/content/news/035/index.md @@ -123,8 +123,10 @@ form][gamedev-meetup-form]. ### [Rusty Jam 2][rusty-jam-ann] -![Aaron: a drawing of a humanoid fox](aaron.png) -_Aaron, [the mascot of the jam][rusty-jam-ann]_ +{{ image_figure( + alt="Aaron: a drawing of a humanoid fox" + src="aaron.png" + caption="Aaron, [the mascot of the jam](https://gamedev.rs/blog/rustyjam-02)") }} The [second Rusty Jam][rusty-jam-ann] just ended! [17 games][rusty-jam-entries] were completed and submitted @@ -252,8 +254,10 @@ announced in this newsletter. ### vetovoima -![vetovoima gravity manipulation GIF](vetovoima.gif) -_vetovoima gravity manipulation_ +{{ image_figure( + alt="vetovoima gravity manipulation GIF" + src="vetovoima.gif" + caption="vetovoima gravity manipulation") }} [vetovoima][vetovoima_itch] by [@MatiasKlemola][vetovoima_twitter] is an arcade game where you control gravity! @@ -329,8 +333,10 @@ network games. ### [Veloren][veloren] -![Gliding above a forest](veloren.jpg) -_A glider ride above the woods at night_ +{{ image_figure( + alt="Gliding above a forest" + src="veloren.jpg" + caption="A glider ride above the woods at night") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. diff --git a/content/news/036/index.md b/content/news/036/index.md index c3b587173..b547b200a 100644 --- a/content/news/036/index.md +++ b/content/news/036/index.md @@ -205,8 +205,10 @@ Other recent updates: ### Flesh -![flesh preview](flesh.gif) -_3rd area_ +{{ image_figure( + alt="flesh preview" + src="flesh.gif" + caption="3rd area") }} [Flesh] by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation and an organic/fleshy theme. It is implemented using [Tetra]. This month's updates @@ -225,9 +227,10 @@ include: ### [CyberGate][cybergate-yt] -![hundreds of colliding colored balls in the air](cybergate.jpg) -_The server and clients are able to smoothly handle -over a thousand balls rained from above_ +{{ image_figure( + alt="hundreds of colliding colored balls in the air" + src="cybergate.jpg" + caption="The server and clients are able to smoothly handle over a thousand balls rained from above") }} CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]) by CyberSoul is a new multiplayer project that aims at procedurally generating distinct @@ -268,7 +271,7 @@ and increasing the total number of bots you can control. Bots can also use antennas to store resources. Interested in contributing? Head over to the -[Github discussion page][botnet_ideas] and suggest some ideas! +[GitHub discussion page][botnet_ideas] and suggest some ideas! [Botnet]: https://github.com/JMS55/botnet [botnet_ideas]: https://github.com/JMS55/botnet/discussions/categories/ideas @@ -312,8 +315,10 @@ platform/country/OS, player feedback, reviews & game updates. ### [Simon Arcade] -![Simon arcade gameplay with arrows and buttons in different colors](simon.gif) -_a Simon Arcade gameplay with cheats enabled_ +{{ image_figure( + alt="Simon arcade gameplay with arrows and buttons in different colors" + src="simon.gif" + caption="a Simon Arcade gameplay with cheats enabled") }} Based on [Simon (Original)], made with [Bevy], the goal of this game is to push buttons in the correct order, @@ -330,8 +335,10 @@ and was showcased at [RustConf Portland] on August 5th 2022. ### [Veloren][veloren] -![Gliding above a forest](veloren.jpg) -_New cave systems to explore_ +{{ image_figure( + alt="Gliding above a forest" + src="veloren.jpg" + caption="New cave systems to explore") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -364,8 +371,10 @@ July's full weekly devlogs: "This Week In Veloren...": ### [Agma] -![an animated black-colored character runs around and attacks anoter one](agma.gif) -_Moving around_ +{{ image_figure( + alt="an animated black-colored character runs around and attacks anoter one" + src="agma.gif" + caption="Moving around") }} [Agma] by [@TuckerBMorgan] is a 3D game built in the [Storm Engine] that is based on games like Lost Ark and Diablo. The author has been writing about their experience @@ -380,8 +389,10 @@ and a custom-skinned mesh renderer to maximize what the author could learn. ### [Combine&Conquer][cnc-logs] -![zoomin gout from individual tiles to the whole space system](cnc.gif) -_Seamless transition between planet and space views_ +{{ image_figure( + alt="zoomin gout from individual tiles to the whole space system" + src="cnc.gif" + caption="Seamless transition between planet and space views") }} [Combine&Conquer][cnc-itch] by [Martin Buck][@I3ck] is a WIP strategy game about automation similar to Satisfactory or Factorio. @@ -423,9 +434,10 @@ coding game "Life Code": ### [Bevy v0.8][bevy-blog] -![bevy terrain](bevy_terrain.jpg) -_Bevy-shaped mountains in a Bevy-based Witcher 3 terrain texturing tool built by -rmemr_ +{{ image_figure( + alt="bevy terrain" + src="bevy_terrain.jpg" + caption="Bevy-shaped mountains in a Bevy-based Witcher 3 terrain texturing tool built by rmemr") }} [Bevy][bevy] is a refreshingly simple data-driven game engine built in Rust. It is [free and open source][bevy-git] forever! @@ -538,10 +550,12 @@ Nevertheless, several improvements have been integrated to godot-rust since ### [Gamercade] -![Gamercade preview](gamercade.gif) -_WASM 3d CPU Rendering On a 2d Fantasy Console?_ +{{ image_figure( + alt="Gamercade preview" + src="gamercade.gif" + caption="WASM 3d CPU Rendering On a 2d Fantasy Console?") }} -[Gamercade] ([Discord][Gamercade-Discord], [Github][Gamercade-Github]) +[Gamercade] ([Discord][Gamercade-Discord], [GitHub][Gamercade-GitHub]) by @RobDavenport is a WASM-powered fantasy console focused on building multiplayer neo-retro games. @@ -562,7 +576,7 @@ palettes with up to 64 colors each. The community around the project is small, but is looking to expand. Come on over to the [subreddit][Gamercade-Subreddit], or hang out and chat on [Discord][Gamercade-Discord], where the developers interact with members -and post updates daily. The project is newly [open source][Gamercade-Github] +and post updates daily. The project is newly [open source][Gamercade-GitHub] and looking for contributors, suggestions, as well as awesome game demos. _Discussions: @@ -573,14 +587,16 @@ _Discussions: [Gamercade-Console]: https://github.com/gamercade-io/gamercade_console [Gamercade-Editor]: https://github.com/gamercade-io/gamercade_editor [Gamercade-Discord]: https://discord.gg/Qafv2Fpt5j -[Gamercade-Github]: https://github.com/gamercade-io +[Gamercade-GitHub]: https://github.com/gamercade-io ## Learning Material Updates ### [Sand Fall With Compute Shaders in Rust][sandfall-tutorial] -![sandfall_8k](draw_sand.gif) -_Drawing Sand_ +{{ image_figure( + alt="sandfall_8k" + src="draw_sand.gif" + caption="Drawing Sand") }} [@hakolao] published a [tutorial][sandfall-tutorial] about creating [cellular automata][wiki-cgol] sand fall simulations with compute shaders. @@ -618,8 +634,11 @@ crate to do breadth-first, Dijkstra's, and A* search. It links to the ### [Creating Mountains From Planes with Vertex Shaders and Bevy][chrisbiscardi-vid1] -[![vertex shaders example](creating-mountains-from-planes-with-vertex-shaders-and-bevy.png)][chrisbiscardi-vid1] -_Creating mountains from planes with vertex shaders and Bevy_ +{{ image_figure( + alt="vertex shaders example" + src="creating-mountains-from-planes-with-vertex-shaders-and-bevy.png" + caption="Creating mountains from planes with vertex shaders and Bevy", + link="https://youtube.com/watch?v=85uJc81SQZ4") }} [@chrisbiscardi] published a [video][chrisbiscardi-vid1] about using the new Material shader APIs in Bevy 0.8 to transform the @@ -632,8 +651,11 @@ _Discussions: [Twitter](https://twitter.com/chrisbiscardi/status/154908959997193 ### [What's in a wgsl fragment shader? ft Bevy][chrisbiscardi-vid2] -[![vertex shaders example](whats-in-a-wgsl-fragment-shader-with-bevy.png)][chrisbiscardi-vid2] -_What's in a wgsl fragment shader? ft Bevy_ +{{ image_figure( + alt="vertex shaders example" + src="whats-in-a-wgsl-fragment-shader-with-bevy.png" + caption="What's in a wgsl fragment shader? ft Bevy", + link="https://youtube.com/watch?v=SOOOc9-joVo") }} [@chrisbiscardi] published a [video][chrisbiscardi-vid2] that introduces the new Material APIs in Bevy 0.8. It covers AsBindGroup, @@ -700,8 +722,10 @@ _Discussions: ### [NES Bundler][nes-bundler] -![NES Bundler running Data Man with GUI showing](nes-bundler.png) -_NES Bundler in action_ +{{ image_figure( + alt="NES Bundler running Data Man with GUI showing" + src="nes-bundler.png" + caption="NES Bundler in action") }} [NES Bundler][nes-bundler] is a NES ROM packaging tool by [@tedsteen]. Did you make a NES-game but none of your friends own a Nintendo? Don't worry. @@ -897,8 +921,10 @@ _Discussions: [/r/rust](https://reddit.com/r/rust/comments/vwdxim/announcing_lyo ### [Renet] -![3D capsles shooting red dots at each other](renet_bevy_demo.gif) -_Demo using renet and bevy_ +{{ image_figure( + alt="3D capsles shooting red dots at each other" + src="renet_bevy_demo.gif" + caption="Demo using renet and bevy") }} [Renet] by [@lucaspoffo] is a network library to create games with the Server-Client architecture. @@ -924,8 +950,10 @@ Renet comes with [bevy_renet], a plugin for the Bevy engine, and also with ### [miniquad] -![miniquad fileopen](miniquad_gl2.gif) -_VirtualBox, gl2 as the only GPU acceleration available_ +{{ image_figure( + alt="miniquad fileopen" + src="miniquad_gl2.gif" + caption="VirtualBox, gl2 as the only GPU acceleration available") }} [miniquad] is a safe and cross-platform rendering library focused on portability and low-end platform support. @@ -943,8 +971,10 @@ next in line. ### [bevy_mod_fbx] -![A model using a PBR shader featuring roughness and metalicness texture maps](bevy_fbx_maya_pbr.jpg) -_model courtesy of [Samuel Rosario], rendered in bevy_ +{{ image_figure( + alt="A model using a PBR shader featuring roughness and metalicness texture maps" + src="bevy_fbx_maya_pbr.jpg" + caption="model courtesy of [Samuel Rosario](https://www.artstation.com/artwork/bKJ0EE), rendered in bevy") }} [bevy_mod_fbx] is a pre-alpha library to load FBX (Autodesk Filmbox) files into [bevy] 0.8, based on [fbxcel-dom]. @@ -982,7 +1012,7 @@ in a single seamless piece of rust code. It offers: - [examples using wgpu][shame-examples]! A Discord channel for questions/feedback is linked in the -[Github readme][shame]. +[GitHub readme][shame]. ### [bonsai-bt] -![A behavior tree visualization that starts with a "root" node and branches -into leafs like "run" and "get in cover"](bonsai.png) -_A visualization of a simple NPC behavior tree_ +{{ image_figure( + alt='A behavior tree visualization that starts with a "root" node and branches +into leafs like "run" and "get in cover"' + src="bonsai.png" + caption="A visualization of a simple NPC behavior tree") }} [bonsai-bt] by [@Sollimann] is a Rust implementation of behavior trees. diff --git a/content/news/037/index.md b/content/news/037/index.md index e3872a947..c1d5c4353 100644 --- a/content/news/037/index.md +++ b/content/news/037/index.md @@ -108,7 +108,7 @@ Sir Hoardalot, and you, as his resourcesful Loot Goblin are going to keep his backpack in order! Craft potions and weapons to strengthen the hero, and help kill the evil Ogre Necromancer. -The source code for the game is available [on Github][loot-goblin-source]. +The source code for the game is available [on GitHub][loot-goblin-source]. [loot-goblin]: https://park-dev.itch.io/loot-goblin [loot-goblin-source]: https://github.com/vanGeck/bevy-jam-2 @@ -221,8 +221,10 @@ refactoring tool based on the ### [CyberGate][cybergate-yt] -![browser udp technology](cybergate.jpg) -_The new browser version works exactly like the native version_ +{{ image_figure( + alt="browser udp technology" + src="cybergate.jpg" + caption="The new browser version works exactly like the native version") }} CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]) by CyberSoul is a new multiplayer project that aims at procedurally generating distinct @@ -248,8 +250,10 @@ _Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/x60n9 ### [Rusty Aquarium] -![Rusty Aquarium visualization](rustyaquarium.gif) -_Visualize data as a fish tank with Rusty Aquarium_ +{{ image_figure( + alt="Rusty Aquarium visualization" + src="rustyaquarium.gif" + caption="Visualize data as a fish tank with Rusty Aquarium") }} [Rusty Aquarium] by [@ollej] is a data visualization tool as a virtual fish tank written in Rust and Macroquad. Different data points control how many @@ -277,8 +281,10 @@ files now contain binaries for input data generation. ### [Infinite Bunner] -![Infinite Bunner](infinitebunner.gif) -_Port of the Infinite Bunner game to Rust and Macroquad_ +{{ image_figure( + alt="Infinite Bunner" + src="infinitebunner.gif" + caption="Port of the Infinite Bunner game to Rust and Macroquad") }} [Infinite Bunner] is a game from the book [Code the Classics vol 1] that has been ported by [@ollej] to Rust and Macroquad from Python and PyGame Zero. @@ -319,8 +325,10 @@ tuned by following the [newsletter][country-slice-newsletter]! ### [Math It] -![Promotional image of the Math It game](math_it.png) -_Promotional image of the Math It game_ +{{ image_figure( + alt="Promotional image of the Math It game" + src="math_it.png" + caption="Promotional image of the Math It game") }} [Math It] was made with [Bevy] for the [Bevy Jam 2]. @@ -333,8 +341,10 @@ to the target number and compete with others on a global leaderboard. ### [Veloren][veloren] -![A cave with lava](veloren.jpg) -_A barrier of lava_ +{{ image_figure( + alt="A cave with lava" + src="veloren.jpg" + caption="A barrier of lava") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -408,10 +418,12 @@ or browse through the [open issues][runty8-open-issues]. ### [Gamercade] -![Gamercade preview](gamercade.gif) -_Preview of the Audio Editor in Action_ +{{ image_figure( + alt="Gamercade preview" + src="gamercade.gif" + caption="Preview of the Audio Editor in Action") }} -[Gamercade] ([Discord][Gamercade-Discord], [Github][Gamercade-Github]) +[Gamercade] ([Discord][Gamercade-Discord], [GitHub][Gamercade-GitHub]) by @RobDavenport is a WASM-powered fantasy console focused on building multiplayer neo-retro games. @@ -434,12 +446,12 @@ note. Come hang out and chat on [Discord][Gamercade-Discord], where the developers interact with members and post updates daily. The project is -[open source][Gamercade-Github] and looking for contributors, suggestions, +[open source][Gamercade-GitHub] and looking for contributors, suggestions, as well as awesome game demos. [Gamercade]: https://gamercade.io [Gamercade-Discord]: https://discord.gg/Qafv2Fpt5j -[Gamercade-Github]: https://github.com/gamercade-io/gamercade_console +[Gamercade-GitHub]: https://github.com/gamercade-io/gamercade_console [Gamercade-Video]: https://youtube.com/watch?v=cRsOvefap_U ## Tooling Updates @@ -501,8 +513,10 @@ and libraries, e.g. bevy, egui, and [nannou]. ### [bevy_kira_audio] -![Configuring a sound when playing it](bevy_kira_audio_settings.png) -_Configuring a sound when playing it_ +{{ image_figure( + alt="Configuring a sound when playing it" + src="bevy_kira_audio_settings.png" + caption="Configuring a sound when playing it") }} [bevy_kira_audio] by [@nikl_me] is an alternative audio plugin for the [Bevy] game engine. It uses [Kira] as its audio library and aims to integrate @@ -522,8 +536,10 @@ tweens to most operations. ### [bevy_asset_loader] -![Configuration of a loading state](loading_state.png) -_Configuration of a loading state_ +{{ image_figure( + alt="Configuration of a loading state" + src="loading_state.png" + caption="Configuration of a loading state") }} [bevy_asset_loader] by [@nikl_me] is a plugin for [Bevy] apps aiming to improve a common pattern for asset-loading. The boilerplate required to set up diff --git a/content/news/038/index.md b/content/news/038/index.md index 8cd4d212e..bba06e2fe 100644 --- a/content/news/038/index.md +++ b/content/news/038/index.md @@ -35,7 +35,7 @@ Feel free to send PRs about your own projects! - [Tooling Updates](#tooling-updates) - [Library Updates](#library-updates) - [Other News](#other-news) -- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github) +- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github) - [Discussions](#discussions) - [Requests for Contribution](#requests-for-contribution) - [Bonus](#bonus) @@ -83,8 +83,10 @@ Twitch][rust-gamedev-twitch]. ### [CyberGate][cybergate-yt] -![building and fighting](cybergate.gif) -_building shelter and fighting a colony of red monsters_ +{{ image_figure( + alt="building and fighting" + src="cybergate.gif" + caption="building shelter and fighting a colony of red monsters") }} CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]) by CyberSoul is an attempt to use artificial intelligence to build diverse universe experiences @@ -112,8 +114,10 @@ _Discussions: [/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/x ### [Graviton][graviton-website] -![Graviton](graviton.png) -_Take a little break to relax and draw some sand art_ +{{ image_figure( + alt="Graviton" + src="graviton.png" + caption="Take a little break to relax and draw some sand art") }} [Graviton](https://www.gravitongame.art/) by [@hakolao](https://github.com/hakolao) @@ -130,8 +134,10 @@ _Discussions: [/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/x ### Flesh -![flesh preview](flesh.gif) -_4th area_ +{{ image_figure( + alt="flesh preview" + src="flesh.gif" + caption="4th area") }} [Flesh] by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation and an organic/fleshy theme. It is implemented using [Tetra]. This month's updates @@ -146,8 +152,10 @@ include: ### Thetawave -![thetawave-boss](thetawave.gif) -_First boss in progress_ +{{ image_figure( + alt="thetawave-boss" + src="thetawave.gif" + caption="First boss in progress") }} Thetawave is a physics based, cosmic horror themed space shooter by [@carlosupina]. @@ -203,8 +211,10 @@ goes into more depth about calling Rust code from C# in Unity. ### [eo.rs][eo-rs-website] -![npcs talking](eo-rs.PNG) -_NPCs chatting in the game world_ +{{ image_figure( + alt="npcs talking" + src="eo-rs.PNG" + caption="NPCs chatting in the game world") }} [eo-rs][eo-rs-website] by [@sorokya](https://github.com/sorokya) is a development library and game server for the MMORPG @@ -244,8 +254,10 @@ tuned by following the [newsletter][country-slice-newsletter]! ### [Veloren][veloren] -![Riding into the sunset](veloren.jpg) -_Riding into the sunset_ +{{ image_figure( + alt="Riding into the sunset" + src="veloren.jpg" + caption="Riding into the sunset") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -273,8 +285,10 @@ Septembers's full weekly devlogs: "This Week In Veloren...": ### [Subfuse][subfuse] -![Escape the hotel](subfuse.png) -_Escape the hotel_ +{{ image_figure( + alt="Escape the hotel" + src="subfuse.png" + caption="Escape the hotel") }} [Subfuse][subfuse] is a short 1st person puzzle/escape game made for [Bevy Jam #2][bevy-jam-2] with an accompanying [postmortem][subfuse-postmortem] @@ -288,9 +302,11 @@ that goes into some detail about the process of making the game. ### [godot-rust][gd-github] -![godot-rust new export syntax](godot-rust-export.png) -_The new `#[method]` syntax, which replaces existing `#[export]` and allows omitting -the base parameter._ +{{ image_figure( + alt="godot-rust new export syntax" + src="godot-rust-export.png" + caption="The new `#[method]` syntax, which replaces existing `#[export]` and allows omitting +the base parameter.") }} godot-rust ([GitHub][gd-github], [Discord][gd-discord], [Twitter][gd-twitter]) is a Rust library that provides bindings for the Godot engine. @@ -318,10 +334,12 @@ bugs and missing features, you can give it a try very soon! ### [Gamercade] -![Gamercade preview](gamercade.gif) -_Gamercade Sprite Animations_ +{{ image_figure( + alt="Gamercade preview" + src="gamercade.gif" + caption="Gamercade Sprite Animations") }} -[Gamercade] ([Discord][Gamercade-Discord], [Github][Gamercade-Github]) +[Gamercade] ([Discord][Gamercade-Discord], [GitHub][Gamercade-GitHub]) by @RobDavenport is a WASM-powered fantasy console focused on building multiplayer neo-retro games. @@ -344,12 +362,12 @@ stereo sound support, and much more. Come hang out and chat on [Discord][Gamercade-Discord], where the developers interact with members and post updates daily. The project is -[open source][Gamercade-Github] and looking for contributors, suggestions, +[open source][Gamercade-GitHub] and looking for contributors, suggestions, as well as your awesome game creations. [Gamercade]: https://gamercade.io [Gamercade-Discord]: https://discord.gg/Qafv2Fpt5j -[Gamercade-Github]: https://github.com/gamercade-io/gamercade_console +[Gamercade-GitHub]: https://github.com/gamercade-io/gamercade_console [Gamercade-Release]: https://gamercade.io/blog/gamercade-0-1-0 ### [Dims][dims-website] @@ -463,8 +481,10 @@ for further details. ### bevy_oddio -![an example using bevy_oddio](change_pitch_bevy_oddio_example.png) -_an example using bevy_oddio_ +{{ image_figure( + alt="an example using bevy_oddio" + src="change_pitch_bevy_oddio_example.png" + caption="an example using bevy_oddio") }} [bevy_oddio] by [@harudagondi] is an audio plugin for the [Bevy] game engine that uses the [oddio] library. @@ -493,8 +513,10 @@ The above screen shows an example of controlling a custom made audio source ### [Particular] -![showcase using the demo](particular.gif) -_Showcase using the [demo]_ +{{ image_figure( + alt="showcase using the demo" + src="particular.gif" + caption="Showcase using the [demo](https://canleskis.github.io/bevy-particular-demo/)") }} [Particular] by [@Canleskis] is a library allowing for simulations of N-body gravitational interaction of particles. It aims to be simple @@ -545,8 +567,10 @@ other types of browser's images as well (like `HtmlCanvasElement`). ### [Polyanya] -![example of pathfinding](polyanya.gif) -_Navigating through a mesh in the online [demo][polyanya-demo]_ +{{ image_figure( + alt="example of pathfinding" + src="polyanya.gif" + caption="Navigating through a mesh in the online [demo](https://vleue.github.io/bevy_pathmesh/)") }} [Polyanya] by [@FrancoisMockers] is a library implementing [Polyanya][polyanya-paper], a Compromise-free Pathfinding algorithm on a @@ -562,7 +586,7 @@ available in WASM. Next area of work will be around navigation mesh editing. [polyanya-demo]: https://vleue.github.io/bevy_pathmesh/ [@FrancoisMockers]: https://twitter.com/FrancoisMockers -## Popular Workgroup Issues in Github +## Popular Workgroup Issues in GitHub diff --git a/content/news/039/index.md b/content/news/039/index.md index cc76670a3..716ca6c52 100644 --- a/content/news/039/index.md +++ b/content/news/039/index.md @@ -106,8 +106,10 @@ _Discussions: [Submission page](https://ldjam.com/events/ludum-dare/51/miam)_ ### [Jumpy] -![Online Game Fish Selection Screen](jumpy.png) -_Online Game Fish Selection Screen_ +{{ image_figure( + alt="Online Game Fish Selection Screen" + src="jumpy.png" + caption="Online Game Fish Selection Screen") }} [Jumpy] ([GitHub][Jumpy], [Discord][jumpy_discord], [Twitter][jumpy_twitter]) by [Spicy Lobster][spicy_lobster] is a pixel-style, tactical 2D shooter with a fishy @@ -143,8 +145,10 @@ _Discussions: [GitHub][jumpy_discussions], [Twitter][jumpy_twitter]_ ### [CyberGate][cybergate-yt] -![State Syncronization](cybergate.gif) -_The health bar that is closer updates more frequently_ +{{ image_figure( + alt="State Syncronization" + src="cybergate.gif" + caption="The health bar that is closer updates more frequently") }} CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]) by CyberSoul is an attempt to use artificial intelligence to build diverse universe experiences @@ -168,9 +172,10 @@ Recent updates: ### Digital Extinction -![selection circles & health bars in Digital -Extinction](digital-extinction.jpeg) _selection circles & health bars in Digital -Extinction_ +{{ image_figure( + alt="selection circles & health bars in Digital Extinction" + src="digital-extinction.jpeg" + caption="selection circles & health bars in Digital Extinction") }} [Digital Extinction] ([GitHub][de-github], [Discord][de-discord], [Reddit][de-reddit]) by [@Indy2222] is a 3D real-time strategy game made with @@ -202,7 +207,7 @@ A more detailed update summary is available [here][de-newsletter]. ![Skeleton](skeleton.png) -[ThousandthStar] ([Github](https://github.com/ThousandthStar/multiplayer_game)) +[ThousandthStar] ([GitHub](https://github.com/ThousandthStar/multiplayer_game)) is creating a simple turn-based strategy game using the Bevy game engine. It's a small side project he's been building in his spare time. @@ -274,8 +279,10 @@ it hit version 0.28 which added new functionality and improved existing: ### [miniquad] -![ios-miniquad](ios_zemeroth.png) -_[zemeroth](github.com/ozkriff/zemeroth/) on the iOS simulator_ +{{ image_figure( + alt="ios-miniquad" + src="ios_zemeroth.png" + caption="[zemeroth](https://github.com/ozkriff/zemeroth/) on the iOS simulator") }} [miniquad] is a pure Rust, cross-platform graphics library. @@ -571,7 +578,7 @@ release as part of the upgrade to the imminent Bevy 0.9 release. ### [`seldom_state`] -`seldom_state` by [Seldom] ([Github][seldom-github]) is a component-based +`seldom_state` by [Seldom] ([GitHub][seldom-github]) is a component-based state machine plugin for Bevy. It's useful for AI, player state, animation, and other entities that occupy varying states. diff --git a/content/news/040/index.md b/content/news/040/index.md index b120758a1..689252d97 100644 --- a/content/news/040/index.md +++ b/content/news/040/index.md @@ -36,7 +36,7 @@ Feel free to send PRs about your own projects! - [Tooling Updates](#tooling-updates) - [Library Updates](#library-updates) - [Other News](#other-news) -- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github) +- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github) - [Discussions](#discussions) - [Requests for Contribution](#requests-for-contribution) - [Jobs](#jobs) @@ -87,8 +87,10 @@ If you would like to speak at the next meetup, please ### [Jumpy] -![Swords, Crates, Grenades, & Mines](jumpy.png) -_Jumpy Items: Swords, Crates, Grenades, & Mines_ +{{ image_figure( + alt="Swords, Crates, Grenades, & Mines" + src="jumpy.png" + caption="Jumpy Items: Swords, Crates, Grenades, & Mines") }} [Jumpy] ([GitHub][Jumpy], [Discord][jumpy_discord], [Twitter][jumpy_twitter]) by [Spicy Lobster][spicy_lobster] is a pixel-style, tactical 2D shooter with a fishy @@ -126,8 +128,10 @@ just around the corner! ### [CyberGate][cybergate-yt] -![At the Abyss](cybergate.png) -_The abyss is the deepest, hardest level, filled with monsters of all sizes and strength_ +{{ image_figure( + alt="At the Abyss" + src="cybergate.png" + caption="The abyss is the deepest, hardest level, filled with monsters of all sizes and strength") }} CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]) by CyberSoul is an ambitious endeavor to create an immersive universe experience with the power of @@ -186,8 +190,10 @@ _Discussions: ### Digital Extinction -![laser trail in Digital Extinction](digital-extinction.jpeg) -_Laser trail in Digital Extinction_ +{{ image_figure( + alt="laser trail in Digital Extinction" + src="digital-extinction.jpeg" + caption="Laser trail in Digital Extinction") }} [Digital Extinction] ([GitHub][de-github], [Discord][de-discord], [Reddit][de-reddit]) by [@Indy2222] is a 3D real-time strategy game made with @@ -303,13 +309,15 @@ There was one dev log published this month: ### [8bit Duels] -![UI preview](8bd-ui-prev.png) -_UI preview_ +{{ image_figure( + alt="UI preview" + src="8bd-ui-prev.png" + caption="UI preview") }} [@ThousandthStar] is creating an 8bit themed multiplayer game. It's a turn-based strategy game and is currently under development. This month, the [blog][8bit-blog] got moved from [dev.to][8bit-dev.to] to ThousandthStar's own -blog on Github. +blog on GitHub. The game is soon getting a UI, and more packets need to be implemented before the game is ready to play. ThousandthStar is excited for the game to be @@ -331,8 +339,10 @@ _Discussion: [r/rust_gamedev][8bit-r/rust_gamedev]_ ### [Veloren][veloren] -![A riverside](veloren.jpeg) -_Reflections on the river_ +{{ image_figure( + alt="A riverside" + src="veloren.jpeg" + caption="Reflections on the river") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -585,7 +595,7 @@ at [Embark Studios][embark]. ### [Boytacean][boytacean] -Boytacean ([Github][boytacean], [Working Emulator][boytacean-web]) +Boytacean ([GitHub][boytacean], [Working Emulator][boytacean-web]) by [@joamag] is a Game Boy emulator written in Rust with both Native (using SDL) and Web (using WebAssembly) frontends that has been created as a learning experiment to better understand both Rust capabilities and @@ -690,8 +700,10 @@ _Discussions: ### [Bevy Sequential Actions] -![Bevy sequential actions simple demo](sequential_actions.gif) -_An entity with a queue of repeating actions._ +{{ image_figure( + alt="Bevy sequential actions simple demo" + src="sequential_actions.gif" + caption="An entity with a queue of repeating actions.") }} `bevy-sequential-actions` ([GitHub][seq-actions-gh], [docs.rs][seq-actions-docs]) is a simple helper library for the [Bevy][bevy] game engine. @@ -833,9 +845,11 @@ You can check the [demos] online and read more about the changes on the [changel ### [Bevy Hikari] v0.3 -![bevy-hikari screenshot](bevy-hikari-n40.jpeg) -_Direct lighting, emissive lighting and indirect global illumination under 4x -temporal upscaling._ +{{ image_figure( + alt="bevy-hikari screenshot" + src="bevy-hikari-n40.jpeg" + caption="Direct lighting, emissive lighting and indirect global illumination under 4x +temporal upscaling.") }} `bevy-hikari` ([crates.io][hikari-crates], [docs.rs][hikari-docs], [GitHub][hikari-github]), a path tracing renderer for [Bevy], is now compatible @@ -853,8 +867,10 @@ affordable for median end devices. ### [Bevy Vfx Bag] -![Bevy vfx bag gif](underwater.gif) -_A composite effect applied to Bevy's 3D shapes example._ +{{ image_figure( + alt="Bevy vfx bag gif" + src="underwater.gif" + caption="A composite effect applied to Bevy's 3D shapes example.") }} `bevy-vfx-bag` ([GitHub][bevy-vfx-bag-gh], [docs.rs][bevy-vfx-bag-docs]) is a visual effects library for the [Bevy][bevy] game engine. @@ -940,8 +956,10 @@ There's also [a book][kayak-book] that covers the basic concepts; ### [Iced] v0.5 -![A design demo application showcasing widgets and theming capabilities](iced-cosmic.png) -_System76's COSMIC desktop software_ +{{ image_figure( + alt="A design demo application showcasing widgets and theming capabilities" + src="iced-cosmic.png" + caption="System76's COSMIC desktop software") }} [Iced] is an experimental cross-platform GUI library focused on simplicity and type-safety, inspired by Elm. @@ -1064,7 +1082,7 @@ _Discussions: [/r/rust](https://reddit.com/r/rust/comments/yr0oe8/iced_0_5)_ [@alice-i-cecile]: https://github.com/alice-i-cecile [leafwing_input_playback]: https://github.com/Leafwing-Studios/leafwing_input_playback -## Popular Workgroup Issues in Github +## Popular Workgroup Issues in GitHub diff --git a/content/news/041/index.md b/content/news/041/index.md index 777f9bc2f..88a0c2284 100644 --- a/content/news/041/index.md +++ b/content/news/041/index.md @@ -136,8 +136,10 @@ _Discussions: ### Digital Extinction -![laser trail in Digital Extinction](digital-extinction.jpeg) -_Laser trail in Digital Extinction_ +{{ image_figure( + alt="laser trail in Digital Extinction" + src="digital-extinction.jpeg" + caption="Laser trail in Digital Extinction") }} [Digital Extinction] ([GitHub][de-github], [Discord][de-discord], [Reddit][de-reddit]) by [@Indy2222] is a 3D real-time strategy game made with @@ -167,8 +169,10 @@ A more detailed update summary is available [here][de-update-03]. ### [Open Combat][OpenCombat_website] -![Real time tactical 2nd world war game](open_combat.png) -_Game now includes vehicle (T-26) and shelling FX_ +{{ image_figure( + alt="Real time tactical 2nd world war game" + src="open_combat.png" + caption="Game now includes vehicle (T-26) and shelling FX") }} Open Combat ([Website][OpenCombat_website], @@ -209,8 +213,10 @@ into lovable dioramas. Wishlist on [Steam][Tiny Glade]! ### [Temple Knight] -![Shooting automatons in Temple Knight](temple-knight.jpg) -_Shooting automatons in Temple Knight_ +{{ image_figure( + alt="Shooting automatons in Temple Knight" + src="temple-knight.jpg" + caption="Shooting automatons in Temple Knight") }} Temple Knight ([Itch.io][tk-itch], [Twitter][tk-twitter]) by [@nilaysavant] is a 3D FPS game developed using [Bevy]. @@ -282,11 +288,13 @@ implemented. ### [8bit Duels] -![Kraken](8bd_kraken.png) -_The newly added Kraken_ +{{ image_figure( + alt="Kraken" + src="8bd_kraken.png" + caption="The newly added Kraken") }} [@ThousandthStar] is creating 8bit Duels -([Discord][8bit-discord], [Github][8bit-github]), +([Discord][8bit-discord], [GitHub][8bit-github]), an 8bit style turn-based multiplayer strategy game. Last month, an artist joined ThousandthStar to create art for the game. @@ -307,8 +315,10 @@ The full devlog for this month can be found [here][8bit-log5]. ### [Flesh] -![flesh preview](flesh.gif) -_more blood_ +{{ image_figure( + alt="flesh preview" + src="flesh.gif" + caption="more blood") }} [Flesh] by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation and an organic/fleshy theme. It is implemented using [Tetra]. This month's updates @@ -325,8 +335,10 @@ include: ### Pirate Annihilation -![Pirate annihilation game view](pirate_annihilation_n41.png) -_Pirate annihilation game view, asset pack by [Kenney](https://twitter.com/KenneyNL)_ +{{ image_figure( + alt="Pirate annihilation game view" + src="pirate_annihilation_n41.png" + caption="Pirate annihilation game view, asset pack by [Kenney](https://twitter.com/KenneyNL)") }} Pirate Annihilation ([GitHub][pirate_annihilation_repo], [Twitter][indiedevcasts_twitter]) by [indiedevcasts][indiedevcasts_www] ([@theredfish]) is a last-man-standing game @@ -344,8 +356,10 @@ now defined. ### [Veloren][veloren] -![A wendigo at night](veloren.jpg) -_A fearsome wendigo encounter_ +{{ image_figure( + alt="A wendigo at night" + src="veloren.jpg" + caption="A fearsome wendigo encounter") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -374,8 +388,10 @@ December's full weekly devlogs: "This Week In Veloren...": ### [Thetawave] -![repeater boss](repeater_boss.gif) -_First boss enemy in Thetawave_ +{{ image_figure( + alt="repeater boss" + src="repeater_boss.gif" + caption="First boss enemy in Thetawave") }} Thetawave is an open-source, roguelite, physics-based, space shooter game made with [Bevy] and [Rapier]. @@ -391,8 +407,10 @@ regular updates about the game. ### [Jumpy] -![Swords, Crates, Grenades, & Mines](jumpy.png) -_Jumpy Items: Swords, Crates, Grenades, & Mines_ +{{ image_figure( + alt="Swords, Crates, Grenades, & Mines" + src="jumpy.png" + caption="Jumpy Items: Swords, Crates, Grenades, & Mines") }} [Jumpy] ([GitHub][Jumpy], [Discord][jumpy_discord], [Twitter][jumpy_twitter]) by [Spicy Lobster][spicy_lobster] is a pixel-style, tactical 2D shooter with a fishy @@ -639,8 +657,10 @@ The final source code [is available on GitHub][clicker-src]. ### [Graphite][graphite-website] [ -![Graphite logo](graphite-vector-demo.png) -_Video: 3-minute timelapse of a vector art piece illustrated in Graphite_ +{{ image_figure( + alt="Graphite logo" + src="graphite-vector-demo.png" + caption="Video: 3-minute timelapse of a vector art piece illustrated in Graphite") }} ][graphite-vector-demo] Graphite ([website][graphite-website], [GitHub][graphite-repo], @@ -734,8 +754,10 @@ The author also made a basic example [here][bevy-rpg-example]. ### [lpcg][lpcg_crate] -![character sprite generator](lpcg.png) -_A new library which generates character sprites_ +{{ image_figure( + alt="character sprite generator" + src="lpcg.png" + caption="A new library which generates character sprites") }} lpcg ([Crates.io][lpcg_crate], [GitHub][lpcg_github]) by [bux][bux] is a library which generates character sprites, @@ -747,8 +769,10 @@ based on assets from the [Liberated Pixel Cup][lpc]. ### [egui_dnd] -![egui_dnd in action](egui_dnd.gif) -_A [showcase](https://lucasmerlin.github.io/egui_dnd/) of egui_dnd_ +{{ image_figure( + alt="egui_dnd in action" + src="egui_dnd.gif" + caption="A [showcase](https://lucasmerlin.github.io/egui_dnd/) of egui_dnd") }} [egui_dnd] ([github][egui_dnd_github], [crates.io][egui_dnd_crates_io]) by [@lucasmerlin] is a new drag and drop sorting crate for egui. While egui itself includes some drag @@ -818,9 +842,10 @@ the main improvements are: ### [rust-gpu v0.4.0][rust-gpu-release] -![a screenshot: spherical characters doing stuff](rust-gpu.jpg) -_Embark's [Creative Playground][embark-creative-playground], -which uses rust-gpu and raytracing_ +{{ image_figure( + alt="a screenshot: spherical characters doing stuff" + src="rust-gpu.jpg" + caption="Embark's [Creative Playground](https://twitter.com/createplayremix), which uses rust-gpu and raytracing") }} [Rust-gpu][rust-gpu] ([Discord][rust-gpu-discord]) allows you to write your GPU shaders in the Rust language. diff --git a/content/news/042/index.md b/content/news/042/index.md index 7623f68a1..d4ee86481 100644 --- a/content/news/042/index.md +++ b/content/news/042/index.md @@ -113,8 +113,10 @@ Twitch][rust-gamedev-twitch]. ### Digital Extinction -![Building Placement in Digital Extinction](digital-extinction.jpeg) -_Building Placement in Digital Extinction_ +{{ image_figure( + alt="Building Placement in Digital Extinction" + src="digital-extinction.jpeg" + caption="Building Placement in Digital Extinction") }} [Digital Extinction] ([GitHub][de-github], [Discord][de-discord], [Reddit][de-reddit]) by [@Indy2222] is a 3D real-time strategy game made with @@ -156,9 +158,11 @@ A more detailed update summary is available [here][de-update-04]. ### [Cargo Space] -![Screenshot of p2p multiplayer in Cargo Space: One instance running on windows -and one in Chrome](cargo-space-cross-platform.png) -_Cross-platform p2p multiplayer in Cargo Space_ +{{ image_figure( + alt="Screenshot of p2p multiplayer in Cargo Space: One instance running on windows +and one in Chrome" + src="cargo-space-cross-platform.png" + caption="Cross-platform p2p multiplayer in Cargo Space") }} [Cargo Space] ([Discord][cargospace_discord]) by [@johanhelsing][johanhelsing_mastodon] is a co-op 2d space game where you build @@ -195,8 +199,10 @@ made with [`bevy_ggrs`][bevy_ggrs]. ### [Idu][idu-itch] -![Screenshot of a tree emerging from a cave in Idu](idu-newsletter.jpg) -_Screenshot of a tree emerging from a cave in Idu_ +{{ image_figure( + alt="Screenshot of a tree emerging from a cave in Idu" + src="idu-newsletter.jpg" + caption="Screenshot of a tree emerging from a cave in Idu") }} [Idu][idu-itch] ([Discord][idu_discord]) Idu is a strategic sandbox game about growing plants that wish to reclaim nature, developed by [Elina @@ -223,8 +229,10 @@ Read more and download the newest demo from [Idu's page on itch.io][idu-itch]. ### [Veloren][veloren] -![A river with flora and fauna](veloren.jpg) -_A serene river with new reflections_ +{{ image_figure( + alt="A river with flora and fauna" + src="veloren.jpg" + caption="A serene river with new reflections") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -330,11 +338,11 @@ node graph compositing engine. New features from January's [sprint 22][graphite-sprint-22]: -- _Picture This:_ Imported images are now part of the node graph. The new _Image +- Picture this: Imported images are now part of the node graph. The new _Image Frame_ node converts bitmap data into a vector rectangle holding the image. This paves the way for other vector data like shapes and text to soon be converted into nodes and composited alongside images. -- _Instant Iterations:_ Incremental graph compilation avoids recompiling the +- Instant iterations: Incremental graph compilation avoids recompiling the whole graph each time an edit is made or a value changes. This makes iteration faster and enables caching of intermediate computations for faster rendering. @@ -395,8 +403,11 @@ _Discussions: [Mastodon][zkat-mastodon-ann]_ ### [RustySynth] -[![Waveform displayed on a screen](rustysynth-yt.png) -_Video: an example of realtime MIDI synthesis with RustySynth on rust-sfml_][rustysynth-video] +{{ image_figure( + alt="Waveform displayed on a screen" + src="rustysynth-yt.png" + caption="Video: an example of realtime MIDI synthesis with RustySynth on rust-sfml", + link="https://www.youtube.com/watch?v=o9rPTJIPmVk") }} [RustySynth] is a SoundFont MIDI synthesizer written in pure Rust. The purpose of this library is to provide MIDI music playback functionality for any Rust @@ -438,9 +449,11 @@ would be very appreciated. ### [torchbearer] -![Torchbearer in action](torchbearer.png) -_An exemple of torchbearer in action, demonstrating both pathfinding and field -of view_ +{{ image_figure( + alt="Torchbearer in action" + src="torchbearer.png" + caption="An exemple of torchbearer in action, demonstrating both pathfinding and field +of view") }} [torchbearer] by [@redwarp] is a library that provides a set of tools to find your path in a grid-based dungeon. Specifically, it provides a quick @@ -487,8 +500,10 @@ _Discussions: [Mastodon][cargospace_cross_platform_video]_ ### [miniquad] -![miniquad ios](miniquad_metal.gif) -_Miniquad/macroquad examples rendered by Metal API_ +{{ image_figure( + alt="miniquad ios" + src="miniquad_metal.gif" + caption="Miniquad/macroquad examples rendered by Metal API") }} [miniquad] is a safe and cross-platform rendering library focused on portability and low-end platform support. diff --git a/content/news/043/index.md b/content/news/043/index.md index 0721b7f43..c7f93c9a7 100644 --- a/content/news/043/index.md +++ b/content/news/043/index.md @@ -111,8 +111,10 @@ The game is written using a custom engine: [Geng][geng]. ### [Tunnet][tunnet-itch] -![Tunnet screenshot: low poly models, blocky terrain, FPS view with a drill in hands](tunnet.jpg) -_Tunnels and computer networks_ +{{ image_figure( + alt="Tunnet screenshot: low poly models, blocky terrain, FPS view with a drill in hands" + src="tunnet.jpg" + caption="Tunnels and computer networks") }} Tunnet ([Steam][tunnet-steam], [Itch.io][tunnet-itch]) by [@puzzled\_squid][puzzled_squid] is a small puzzle/exploration game where you @@ -130,8 +132,10 @@ been published on the [project page][tunnet-itch]. ### [Open Combat][OpenCombat_website] -![Debug window: terrain tiles, units, and paths](open_combat.png) -_Game now includes live debug window_ +{{ image_figure( + alt="Debug window: terrain tiles, units, and paths" + src="open_combat.png" + caption="Game now includes live debug window") }} Open Combat ([Website][OpenCombat_website], [GitHub][OpenCombat_github], [Discord][OpenCombat_discord]) is a real time tactical game @@ -215,8 +219,10 @@ post][cargospace_devlog_5]. ### [CyberGate][cybergate-yt] -![Many creatures flying and casting shadows](cybergate.gif) -_Many creatures flying and casting shadows_ +{{ image_figure( + alt="Many creatures flying and casting shadows" + src="cybergate.gif" + caption="Many creatures flying and casting shadows") }} CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]) is an ambitious multiplayer project from CyberSoul, currently in development. @@ -293,8 +299,10 @@ and realistic physics. ### [Veloren][veloren] -![A cyclops attack](veloren.jpg) -_A cyclops attack_ +{{ image_figure( + alt="A cyclops attack" + src="veloren.jpg" + caption="A cyclops attack") }} [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World. @@ -496,8 +504,10 @@ and changing the speed of `SoundEffect`. ### [Fyrox][fyrox] -![a hi-tech soldier model blending between 5 animations](fyrox-blend-space.gif) -_Blend space demo_ +{{ image_figure( + alt="a hi-tech soldier model blending between 5 animations" + src="fyrox-blend-space.gif" + caption="Blend space demo") }} [Fyrox][fyrox] ([GitHub][fyrox-src], [Discord][fyrox-dis], [Twitter][fyrox-twi]) is a game engine that aims to be easy to use and provide a large set @@ -580,7 +590,7 @@ and adding sound. ![Image editor screenshot](sprite_pixel_art_editor.png) A sprite and pixel art editor made with egui and macroquad is being -developed by @yds12 ([Github][yds-github], [Mastodon][yds-mastodon]). +developed by @yds12 ([GitHub][yds-github], [Mastodon][yds-mastodon]). The project is already usable, but has not been made public yet. Current features are: @@ -640,8 +650,11 @@ designs with #MadeWithGraphite on Twitter. ### [rerun.io][rerun] -[![egui app with lots of complex widgets, 2D and 3D views, etc](rerun.jpg)][rerun-video] -_[Click to see Rerun's latest demo video][rerun-video]_ +{{ image_figure( + alt="egui app with lots of complex widgets, 2D and 3D views, etc" + src="rerun.jpg" + caption="[Click to see Rerun's latest demo video](https://youtube.com/watch?v=8ZpvOagRt-o)" + link="https://youtube.com/watch?v=8ZpvOagRt-o") }} [Rerun] ([Discord][rerun-discord]) lets you log images, point clouds and other visual data as easy as you would log text. @@ -693,8 +706,10 @@ _Discussions: [Twitter](https://twitter.com/ManevilleF/status/162515929249085440 ### [nanoshredder] -![nanoshredder demo: windows with shader code and result behind](nanoshredder.gif) -_macroquad's shadertoy example with metal/glsl preview_ +{{ image_figure( + alt="nanoshredder demo: windows with shader code and result behind" + src="nanoshredder.gif" + caption="macroquad's shadertoy example with metal/glsl preview") }} [Nanoshredder] is an experimental fork of [makepad's shader-compiler][makepad-shader-compiler]. @@ -762,8 +777,10 @@ blink-alloc, only on `allocator-api2`. ### [pecs] -![pecs example, same as in the README](pecs.png) -_Promise chaining example_ +{{ image_figure( + alt="pecs example, same as in the README" + src="pecs.png" + caption="Promise chaining example") }} In the ECS environment, you can't use the standard async/await approach, which can make implementing asynchronous logic painful. @@ -806,8 +823,10 @@ This month [seldom_state] 0.4 has been released: ### [warbler_grass] -![preview of a grass chunk](warbler_grass_preview.png) -_A bevy crate for grass rendering_ +{{ image_figure( + alt="preview of a grass chunk" + src="warbler_grass_preview.png" + caption="A bevy crate for grass rendering") }} [warbler_grass] is a new experimental [Bevy] plugin. The goal is to provide an ergonomic, but performant way @@ -835,8 +854,10 @@ for more details, check out our [release notes]. ### [Cvars] -![cvars used in the RustCycles game - showcasing a console for the Fyrox engine](cvars.png) -_Cvars and the Fyrox in-game console as used in RustCycles_ +{{ image_figure( + alt="cvars used in the RustCycles game - showcasing a console for the Fyrox engine" + src="cvars.png" + caption="Cvars and the Fyrox in-game console as used in RustCycles") }} [Cvars] ([GitHub][cvars-github], [Discord][cvars-discord]) by [@martin-t] are a simple way to store settings you want to change at runtime diff --git a/content/news/044/8bit-duels-game.png b/content/news/044/8bit-duels-game.png new file mode 100644 index 000000000..189e93ace Binary files /dev/null and b/content/news/044/8bit-duels-game.png differ diff --git a/content/news/044/OpenCombat_HUD.png b/content/news/044/OpenCombat_HUD.png new file mode 100644 index 000000000..75d317351 Binary files /dev/null and b/content/news/044/OpenCombat_HUD.png differ diff --git a/content/news/044/TheGrimsey-Editor.gif b/content/news/044/TheGrimsey-Editor.gif new file mode 100644 index 000000000..4ff66345a Binary files /dev/null and b/content/news/044/TheGrimsey-Editor.gif differ diff --git a/content/news/044/battle-bots-simulator.jpg b/content/news/044/battle-bots-simulator.jpg new file mode 100644 index 000000000..91aa9e11d Binary files /dev/null and b/content/news/044/battle-bots-simulator.jpg differ diff --git a/content/news/044/battle-city.png b/content/news/044/battle-city.png new file mode 100644 index 000000000..b0e120bb3 Binary files /dev/null and b/content/news/044/battle-city.png differ diff --git a/content/news/044/bevy-depth-prepass.jpg b/content/news/044/bevy-depth-prepass.jpg new file mode 100644 index 000000000..d8d9e7315 Binary files /dev/null and b/content/news/044/bevy-depth-prepass.jpg differ diff --git a/content/news/044/bevy-rust-gpu-hot-rebuild.gif b/content/news/044/bevy-rust-gpu-hot-rebuild.gif new file mode 100644 index 000000000..8da557cf4 Binary files /dev/null and b/content/news/044/bevy-rust-gpu-hot-rebuild.gif differ diff --git a/content/news/044/bevy_ruins.jpg b/content/news/044/bevy_ruins.jpg new file mode 100644 index 000000000..500c50e38 Binary files /dev/null and b/content/news/044/bevy_ruins.jpg differ diff --git a/content/news/044/bevy_text_mode.png b/content/news/044/bevy_text_mode.png new file mode 100644 index 000000000..f967a7543 Binary files /dev/null and b/content/news/044/bevy_text_mode.png differ diff --git a/content/news/044/boat-journey-screenshot.png b/content/news/044/boat-journey-screenshot.png new file mode 100644 index 000000000..3745845d1 Binary files /dev/null and b/content/news/044/boat-journey-screenshot.png differ diff --git a/content/news/044/cargo-space-invite.png b/content/news/044/cargo-space-invite.png new file mode 100644 index 000000000..4e96e348c Binary files /dev/null and b/content/news/044/cargo-space-invite.png differ diff --git a/content/news/044/cybergate.gif b/content/news/044/cybergate.gif new file mode 100644 index 000000000..858a823af Binary files /dev/null and b/content/news/044/cybergate.gif differ diff --git a/content/news/044/digital-extinction.jpeg b/content/news/044/digital-extinction.jpeg new file mode 100644 index 000000000..6ceb68ccd Binary files /dev/null and b/content/news/044/digital-extinction.jpeg differ diff --git a/content/news/044/foxes.jpg b/content/news/044/foxes.jpg new file mode 100644 index 000000000..11044c066 Binary files /dev/null and b/content/news/044/foxes.jpg differ diff --git a/content/news/044/foxtrot.gif b/content/news/044/foxtrot.gif new file mode 100644 index 000000000..ab8686eab Binary files /dev/null and b/content/news/044/foxtrot.gif differ diff --git a/content/news/044/fyrox-yt-preview.jpg b/content/news/044/fyrox-yt-preview.jpg new file mode 100644 index 000000000..062873c6c Binary files /dev/null and b/content/news/044/fyrox-yt-preview.jpg differ diff --git a/content/news/044/gamedev-meetup.png b/content/news/044/gamedev-meetup.png new file mode 100644 index 000000000..af9706bea Binary files /dev/null and b/content/news/044/gamedev-meetup.png differ diff --git a/content/news/044/graphite-artwork-valley-of-spires.png b/content/news/044/graphite-artwork-valley-of-spires.png new file mode 100644 index 000000000..5f4a97a00 Binary files /dev/null and b/content/news/044/graphite-artwork-valley-of-spires.png differ diff --git a/content/news/044/hotline_rdg44.jpg b/content/news/044/hotline_rdg44.jpg new file mode 100644 index 000000000..1aa12d796 Binary files /dev/null and b/content/news/044/hotline_rdg44.jpg differ diff --git a/content/news/044/index.md b/content/news/044/index.md index e6b827953..bf2a92b11 100644 --- a/content/news/044/index.md +++ b/content/news/044/index.md @@ -1,8 +1,8 @@ +++ title = "This Month in Rust GameDev #44 - March 2023" transparent = true -date = 2023-04-05 -draft = true +date = 2023-04-30 +draft = false +++ @@ -36,11 +36,8 @@ Feel free to send PRs about your own projects! - [Tooling Updates](#tooling-updates) - [Library Updates](#library-updates) - [Other News](#other-news) -- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github) - [Discussions](#discussions) - [Requests for Contribution](#requests-for-contribution) -- [Jobs](#jobs) -- [Bonus](#bonus) +bevy_matchbox provides ergonomic usage with Bevy. Severely cutting down on the +boiler-plate needed. + +The tutorial series on [how to make a p2p web game with Bevy, GGRS and +Matchbox][extreme_bevy] was also updated to the latest versions of all three +libraries. + +Read more about all the new features in the [0.6 release post][matchbox-0.6]. + +_Discussions: +[/r/rust](https://reddit.com/r/rust/comments/127ssuv/announcing_matchbox_06_painless_peertopeer_webrtc), +[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/127suhc/matchbox_06_released_painless_peertopeer_webrtc), +[/r/bevy](https://reddit.com/r/bevy/comments/127sn3o/announcing_matchbox_06_and_a_new_bevy_matchbox), +[Mastodon](https://mastodon.social/@johanhelsing/110119122081173196)_ + +[extreme_bevy]: https://johanhelsing.studio/posts/extreme-bevy +[Matchbox]: https://github.com/johanhelsing/matchbox +[matchbox-0.6]: https://johanhelsing.studio/posts/matchbox-0-6 + +### [Bevy Rust-GPU] + +{{ image_figure( + alt="hot-rebuild" + src="bevy-rust-gpu-hot-rebuild.gif" + caption="Hot-rebuilding a rust-gpu shader from a bevy app") }} + +[Bevy Rust-GPU] by [@Shfty] +is a suite of crates encoding a practical [rust-gpu] workflow for [bevy]. + +The latest release brings new GPU interop traits, shader macro robustness, +and compatibility with [bevy] 0.10 and [rust-gpu] 0.6. +Further development continues apace, with major improvements to the SPIR-V +interchange pipeline, shader compilation machinery, and support code already merged. + +The project is still in development, and presently relies on custom forks +of the associated crates. However, various PRs have been filed upstream +to build out a robust interchange between them, with the hope of mainline compatibility +\- and a corresponding crates.io release - sometime in the future. + +In particular, [@eddyb] deserves special thanks for his work on the [rust-gpu] side, +which has enabled and informed many of the improvements tabled for the next release, +and greatly accelerated the process of making Rust a viable shading language +for users of Bevy and WGPU. + +_Discussion: [/r/bevy](https://reddit.com/r/bevy/comments/11hrnmz/bevy_rustgpu_joins_the_fray)_ + +[Bevy Rust-GPU]: https://github.com/bevy-rust-gpu +[rust-gpu]: https://github.com/EmbarkStudios/rust-gpu +[@Shfty]: https://github.com/Shfty +[@eddyb]: https://github.com/eddyb + +### [rust-gpu-sdf] + +{{ image_figure( + alt="3d-distance-field" + src="rust-gpu-sdf.gif" + caption="An implicit surface defined compositionally, raymarched, and shaded entirely in Rust") }} + +Announcing [rust-gpu-sdf], by [@Shfty]; a no-std signed distance field library +designed for use on both CPU and GPU. + +[Signed distance fields][sdf-wiki] are a powerful computational tool +that allows a surface to be represented by a function from position to distance. +This has [intuitive applications][raymarchingdf] in various domains such as rendering, +collision, meshing, and volume modeling, providing the means to represent analytically +smooth geometry, dynamic morphing (as pictured), and various other effects +that would traditionally require specialized tools to model. + +[rust-gpu-sdf] aims to enumerate this domain to the fullest extent allowed +by Rust's type system, lifting its traditionally monolithic implementation style +into a set of intuitive composable operators, and leveraging a natural synergy +with functional programming to provide powerful compositional tools. + +Contrary to its working title, [rust-gpu-sdf] is actually [rust-gpu]-agnostic, +so can be used anywhere Rust can; +it's presently named as such due to being built as the primary consumer of [bevy-rust-gpu], +with a view to providing a performant and compositional way to compile SDFs +into SPIR-V for rendering on the GPU. + +It's presently in a heavy-development prerelease state, so watch this space! + +[rust-gpu-sdf]: https://github.com/bevy-rust-gpu/rust-gpu-sdf +[bevy-rust-gpu]: https://github.com/bevy-rust-gpu +[sdf-wiki]: https://en.wikipedia.org/wiki/Signed_distance_function +[raymarchingdf]: https://iquilezles.org/articles/raymarchingdf + +### [Pixelate Mesh][pixelate-mesh-ann] + +![Differently pixelated foxes](foxes.jpg) + +Jan Hohenheim ([@janhohenheim]) recently published a new crate called [pixelate_mesh]. +It is a Bevy plugin that provides a Pixelate component that one can add to any +entity holding a mesh or a scene, which it will then pixelate without any post-processing. +The idea is to recreate the effect seen in [Prodeus]. + +[pixelate_mesh]: https://github.com/janhohenheim/pixelate_mesh +[pixelate-mesh-ann]: https://reddit.com/r/bevy/comments/11qenq3/pixelate_mesh +[Prodeus]: https://youtube.com/watch?v=Vb-hPYOIwMw ## Other News +- Other game updates: + - [Combine&Conquer v0.5][cnc-05] brings multi cursor support, + the ability to turn structures on/off, + and a view that shows your factory’s production stats. + - [bevy-rust-wasm-experiments] is a small video game with Bevy that compiles + both to desktop and WASM and showcases how you can get input + from your smartphone's accelerometer. + - [vustnexus] is a side-scroller about surviving and defeating the infect + of the Vust Swarm! + - [The Beat Of Space][beat-space] is a space-themed rhythm game + built with [macroquad]. + - [Pirate Annihilation posted the second YouTube devlog][prite-ann] + about the switch from 2D to 3D, hexagonal map, and new camera. +- Other learning material updates: + - [PhaestusFox posted more YouTube videos][PhaestusFox] about Bevy. + - [s0lly shared a video on creating transparent windows using Bevy][tut-transp-window]. + - [An article about creating a Snake game][tut-wasm-snake] + for the browser with WASM and Rust. + - [@whoisryosuke released a tutorial][whoisryosuke-tut-egui] + on getting started with egui in Rust. +- Other engine updates: + - [Tetra v0.8][tetra-v0-8] brings a bunch of small API improvements + and bugfixes. The engine is still in maintainence-only mode though. +- Other tooling updates: + - [@Setzer22 shared a demo][blackjack-vid] of how smooth subdivision works + in the Blackjack editor. + - [Epic Asset Manager][epic-am] is an unofficial client to install Unreal Engine, + download and manage purchased assets, projects, plugins and games + from the Epic Games Store. + - Asahi Linux (Linux distro for Apple Silicon Macs) + [uses Rust in their Vulkan drivers][asahi-vulkan]. + - [forerunner] is a WIP storytelling platform for composing Souls-like Action-RPGs + using the cloud infrastructure and Pixar's USD as the core parts. +- Other library updates: + - [winit-block-on] is an adaptor that allows one to easily block on futures + using winit as a reactor. + - [tinyaudio][tinyaudio-ann] is a cross-platform, easy-to-use, + low-level audio output library from the creator of the Fyrox engine. + - [faer v0.5][faer-v05] brings a new SVD module, which implements the singular + value decomposition for real matrices + - [Bevy Hanabi v0.6][hanabi-v06] brings a new property-based architecture for + more control at runtime and also an optimized GPU buffer + with Attribute-based particle layout. + +[cnc-05]: https://buckmartin.de/combine-and-conquer/2023-03-08-v0.5.0.html +[bevy-rust-wasm-experiments]: https://reddit.com/r/bevy/comments/11o5pve/bevy_wasm_and_accelerometer +[vustnexus]: https://twitter.com/SethMadDev/status/1631357764495630336 +[beat-space]: https://reddit.com/r/rust_gamedev/comments/11kcgcj/beat_of_space +[macroquad]: https://github.com/not-fl3/macroquad +[prite-ann]: https://youtube.com/watch?v=udR3kzrDnAc +[PhaestusFox]: https://youtube.com/@PhaestusFox/videos +[tut-transp-window]: https://youtube.com/watch?v=gymEcIAi_J8 +[tut-wasm-snake]: https://medium.com/comsystoreply/creating-a-small-game-with-webassembly-and-rust-20c6945efa1d +[whoisryosuke-tut-egui]: https://whoisryosuke.com/blog/2023/getting-started-with-egui-in-rust +[tetra-v0-8]: https://twitter.com/17cupsofcoffee/status/1636706157568962563 +[blackjack-vid]: https://mastodon.gamedev.place/@Setzer22/110011331330540420 +[epic-am]: https://github.com/AchetaGames/Epic-Asset-Manager +[asahi-vulkan]: https://reddit.com/r/rust/comments/11wosur/vulkan_on_asahi_linux +[forerunner]: https://dev.to/heavyrain266/forerunner-a-storytelling-platform-for-composing-souls-like-action-rpgs-4p9k +[winit-block-on]: https://github.com/notgull/winit-block-on +[tinyaudio-ann]: https://reddit.com/r/rust/comments/11rei24/ann_tinyaudio +[faer-v05]: https://reddit.com/r/rust/comments/122823y/faer_v05 +[hanabi-v06]: https://twitter.com/djeedai/status/1634129348746772481 + ## Discussions -## Requests for Contribution +- /r/rust_gamedev: + - ["My unsorted and unsolicited thoughts on Rust for game development"][red-unsolicited] + - ["Is WGPU actually a good idea yet?"][red-is-wgpu] - +[red-unsolicited]: https://reddit.com/r/rust_gamedev/comments/125myuf/my_thoughts_on_rust_for_gamedev +[red-is-wgpu]: https://reddit.com/r/rust_gamedev/comments/11f3rjq/is_wgpu_actually_a_good_idea -## Jobs +## Requests for Contribution - + -## Bonus +- ['Are We Game Yet?' wants to know about projects/games/resources that + aren't listed yet][awgy]. +- [Graphite is looking for contributors][graphite-contribute] to help build the + new node graph and 2D rendering systems. +- [winit's "difficulty: easy" issues][winit-issues]. +- [Backroll-rs, a new networking library][backroll-rs]. +- [Embark's open issues][embark-open-issues] ([embark.rs]). +- [wgpu's "help wanted" issues][wgpu-issues]. +- [luminance's "low hanging fruit" issues][luminance-fruits]. +- [ggez's "good first issue" issues][ggez-issues]. +- [Veloren's "beginner" issues][veloren-beginner]. +- [A/B Street's "good first issue" issues][abstreet-issues]. +- [Mun's "good first issue" issues][mun-issues]. +- [SIMple Mechanic's good first issues][simm-issues]. +- [Bevy's "good first issue" issues][bevy-issues]. +- [Ambient's "good first issue" issues][ambient-issues]. - +[awgy]: https://github.com/rust-gamedev/arewegameyet#contribute +[graphite-contribute]: https://graphite.rs/contribute +[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22 +[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues +[embark.rs]: https://embark.rs +[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open +[wgpu-issues]: https://github.com/gfx-rs/wgpu/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 +[abstreet-issues]: https://github.com/a-b-street/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 +[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue +[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue +[ambient-issues]: https://github.com/AmbientRun/Ambient/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22 ------ @@ -112,13 +1220,11 @@ Want something mentioned in the next newsletter? Also, 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/news/044/infinilands.gif b/content/news/044/infinilands.gif new file mode 100644 index 000000000..92727c4d7 Binary files /dev/null and b/content/news/044/infinilands.gif differ diff --git a/content/news/044/jumpy.gif b/content/news/044/jumpy.gif new file mode 100644 index 000000000..0b027c49f Binary files /dev/null and b/content/news/044/jumpy.gif differ diff --git a/content/news/044/logic-projects-thumbnail.png b/content/news/044/logic-projects-thumbnail.png new file mode 100644 index 000000000..aea6ce8db Binary files /dev/null and b/content/news/044/logic-projects-thumbnail.png differ diff --git a/content/news/044/maginet.gif b/content/news/044/maginet.gif new file mode 100644 index 000000000..6f8bc9d6f Binary files /dev/null and b/content/news/044/maginet.gif differ diff --git a/content/news/044/matchbox.png b/content/news/044/matchbox.png new file mode 100644 index 000000000..281505769 Binary files /dev/null and b/content/news/044/matchbox.png differ diff --git a/content/news/044/nes-programming-in-rust-cover.jpg b/content/news/044/nes-programming-in-rust-cover.jpg new file mode 100644 index 000000000..20d269d5d Binary files /dev/null and b/content/news/044/nes-programming-in-rust-cover.jpg differ diff --git a/content/news/044/orlop.png b/content/news/044/orlop.png new file mode 100644 index 000000000..897b125f4 Binary files /dev/null and b/content/news/044/orlop.png differ diff --git a/content/news/044/r_place_render.jpg b/content/news/044/r_place_render.jpg new file mode 100644 index 000000000..20e1b26e6 Binary files /dev/null and b/content/news/044/r_place_render.jpg differ diff --git a/content/news/044/rerun.gif b/content/news/044/rerun.gif new file mode 100644 index 000000000..c5a0eaba0 Binary files /dev/null and b/content/news/044/rerun.gif differ diff --git a/content/news/044/ruffle-text.jpg b/content/news/044/ruffle-text.jpg new file mode 100644 index 000000000..9abc9e12e Binary files /dev/null and b/content/news/044/ruffle-text.jpg differ diff --git a/content/news/044/rust-gpu-sdf.gif b/content/news/044/rust-gpu-sdf.gif new file mode 100644 index 000000000..3332e14c1 Binary files /dev/null and b/content/news/044/rust-gpu-sdf.gif differ diff --git a/content/news/044/screen-ball.png b/content/news/044/screen-ball.png new file mode 100644 index 000000000..bfffaf29d Binary files /dev/null and b/content/news/044/screen-ball.png differ diff --git a/content/news/044/shifting_chamber.png b/content/news/044/shifting_chamber.png new file mode 100644 index 000000000..f33e09a7b Binary files /dev/null and b/content/news/044/shifting_chamber.png differ diff --git a/content/news/044/tarsila.png b/content/news/044/tarsila.png new file mode 100644 index 000000000..c345b239d Binary files /dev/null and b/content/news/044/tarsila.png differ diff --git a/content/news/044/tiger.png b/content/news/044/tiger.png new file mode 100644 index 000000000..b874eb31e Binary files /dev/null and b/content/news/044/tiger.png differ diff --git a/content/news/044/tiny-glade.gif b/content/news/044/tiny-glade.gif new file mode 100644 index 000000000..cf163412a Binary files /dev/null and b/content/news/044/tiny-glade.gif differ diff --git a/content/news/044/tunnet.jpg b/content/news/044/tunnet.jpg new file mode 100644 index 000000000..f8e1d8ba9 Binary files /dev/null and b/content/news/044/tunnet.jpg differ diff --git a/content/news/044/veloren.jpg b/content/news/044/veloren.jpg new file mode 100644 index 000000000..ca1a9cc04 Binary files /dev/null and b/content/news/044/veloren.jpg differ diff --git a/content/news/044/wor-capsule.jpg b/content/news/044/wor-capsule.jpg new file mode 100644 index 000000000..22529982d Binary files /dev/null and b/content/news/044/wor-capsule.jpg differ diff --git a/content/news/044/zombie-demo-game.png b/content/news/044/zombie-demo-game.png new file mode 100644 index 000000000..9263cc5fd Binary files /dev/null and b/content/news/044/zombie-demo-game.png differ diff --git a/content/news/045/ambient.gif b/content/news/045/ambient.gif new file mode 100644 index 000000000..65f307088 Binary files /dev/null and b/content/news/045/ambient.gif differ diff --git a/content/news/045/backpack.jpg b/content/news/045/backpack.jpg new file mode 100644 index 000000000..8da75fe34 Binary files /dev/null and b/content/news/045/backpack.jpg differ diff --git a/content/news/045/bevy-tdd.png b/content/news/045/bevy-tdd.png new file mode 100644 index 000000000..be872d23b Binary files /dev/null and b/content/news/045/bevy-tdd.png differ diff --git a/content/news/045/bevy_github_actions.png b/content/news/045/bevy_github_actions.png new file mode 100644 index 000000000..c8bc8bd63 Binary files /dev/null and b/content/news/045/bevy_github_actions.png differ diff --git a/content/news/045/bevy_roguelike.gif b/content/news/045/bevy_roguelike.gif new file mode 100644 index 000000000..8fce6da8a Binary files /dev/null and b/content/news/045/bevy_roguelike.gif differ diff --git a/content/news/045/bevyjam3.jpg b/content/news/045/bevyjam3.jpg new file mode 100644 index 000000000..7a46b6f24 Binary files /dev/null and b/content/news/045/bevyjam3.jpg differ diff --git a/content/news/045/cybergate.jpg b/content/news/045/cybergate.jpg new file mode 100644 index 000000000..0f377be95 Binary files /dev/null and b/content/news/045/cybergate.jpg differ diff --git a/content/news/045/explore_gol_drawing.gif b/content/news/045/explore_gol_drawing.gif new file mode 100644 index 000000000..2933a4b8e Binary files /dev/null and b/content/news/045/explore_gol_drawing.gif differ diff --git a/content/news/045/flappy-bird-ai.png b/content/news/045/flappy-bird-ai.png new file mode 100644 index 000000000..44902211f Binary files /dev/null and b/content/news/045/flappy-bird-ai.png differ diff --git a/content/news/045/football.jpg b/content/news/045/football.jpg new file mode 100644 index 000000000..0c0ed9422 Binary files /dev/null and b/content/news/045/football.jpg differ diff --git a/content/news/045/gamedev-meetup.png b/content/news/045/gamedev-meetup.png new file mode 100644 index 000000000..af9706bea Binary files /dev/null and b/content/news/045/gamedev-meetup.png differ diff --git a/content/news/045/godot-rust-gdext.png b/content/news/045/godot-rust-gdext.png new file mode 100644 index 000000000..3c3110bee Binary files /dev/null and b/content/news/045/godot-rust-gdext.png differ diff --git a/content/news/045/graphite.png b/content/news/045/graphite.png new file mode 100644 index 000000000..e05688259 Binary files /dev/null and b/content/news/045/graphite.png differ diff --git a/content/news/045/hydrof.jpg b/content/news/045/hydrof.jpg new file mode 100644 index 000000000..c5a5285b7 Binary files /dev/null and b/content/news/045/hydrof.jpg differ diff --git a/content/news/045/idu.jpeg b/content/news/045/idu.jpeg new file mode 100644 index 000000000..67cdb5ed9 Binary files /dev/null and b/content/news/045/idu.jpeg differ diff --git a/content/news/045/imagemaniac.jpg b/content/news/045/imagemaniac.jpg new file mode 100644 index 000000000..a629233e0 Binary files /dev/null and b/content/news/045/imagemaniac.jpg differ diff --git a/content/news/045/index.md b/content/news/045/index.md new file mode 100644 index 000000000..76897ae2d --- /dev/null +++ b/content/news/045/index.md @@ -0,0 +1,882 @@ ++++ +title = "This Month in Rust GameDev #45 - April 2023" +transparent = true +date = 2023-05-31 +draft = false ++++ + + + + + +Welcome to the 45th 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] + +You can follow the newsletter creation process +by watching [the coordination issues][coordination]. +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 +[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination + +- [Announcements](#announcements) +- [Game Updates](#game-updates) +- [Engine Updates](#engine-updates) +- [Learning Material Updates](#learning-material-updates) +- [Tooling Updates](#tooling-updates) +- [Library Updates](#library-updates) +- [Other News](#other-news) +- [Discussions](#discussions) +- [Requests for Contribution](#requests-for-contribution) + + + +## Announcements + +### Rust GameDev Meetup + +![Gamedev meetup poster](gamedev-meetup.png) + +The 26th Rust Gamedev Meetup took place in March. You can watch the recording +of the meetup [here on Youtube][gamedev-meetup-video]. +The meetups take place on the second Saturday of every month via the [Rust +Gamedev Discord server][rust-gamedev-discord] and are also [streamed on +Twitch][rust-gamedev-twitch]. + +[gamedev-meetup-video]: https://youtube.com/watch?v=Vq60NvWy8Io +[rust-gamedev-discord]: https://discord.gg/yNtPTb2 +[rust-gamedev-twitch]: https://twitch.tv/rustgamedev + +### [Bevy Jam 3 Results][bevy-jam-results] + +![list of winners](bevyjam3.jpg) + +Voting on the [Bevy Jam 3][bevy-jam] has finished! It was a +week-long event, where the goal was to make a game in +[Bevy Engine][bevy-engine], the free and open-source game engine +built in Rust. The theme was 'Side Effects'. + +- 1: [LinkSider](https://kuviman.itch.io/linksider) + by kuviman, daivy, shadow-crusherz +- 2: [Neon Breach: Tower Defence](https://louisnivrat.itch.io/neon-breach-tower-defence) + by louisNivrat +- 3: [Battle for Rattoria](https://jabuwu.itch.io/battle-for-rattoria) by jabuwu + +The jam had a solid turnout with 353 participants, 78 submissions, and 2,158 ratings! +A lot of the submissions have a web build so it's easy to try them out yourself. + +The [full results can be found on itch.io][bevy-jam-results]. + +[bevy-jam]: https://itch.io/jam/bevy-jam-3 +[bevy-jam-results]: https://itch.io/jam/bevy-jam-3/results +[bevy-engine]: https://bevyengine.org/ + +### [Rusty Jam 3][rustyjam3-itch] + +Another Rusty Jam starts on May 21st! + +It's a great chance to try out some new Rusty tech, form a team of like-minded rustaceans, +and feel what a full cycle of making a game in Rust feels like in miniature! + +This jam focuses more on using Rust than anything else. +That means you aren't restricted on your design, music, or graphics, +as long as you use Rust to make it! + +The optional-to-use theme for the jam is going to be announced +in [the jam's Discord][rustyjam3-dis] and pinned in the community section. +While you're waiting for the theme, you can start looking for a team +in the looking-for-team Discord channel. +If you want solo though, that's fine too. + +[rustyjam3-itch]: https://itch.io/jam/rusty-jam-3 +[rustyjam3-dis]: https://discord.gg/8dUQJFFmxG + +## Game Updates + +### [CyberGate][cybergate-yt] + +{{ image_figure( + alt="hundreds of npcs smoothly interpolating" + src="cybergate.jpg" + caption="hundreds of npcs smoothly interpolating") }} + +CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]), +an ambitious multiplayer project in development by CyberSoul, +aims to invite players into a constantly evolving universe. +Harnessing the power of procedural generation and artificial intelligence, +this work-in-progress aspires to provide an engaging experience +that emphasizes exploration and discovery across its diverse worlds. + +The latest updates to CyberGate include: + +- Networking Interpolation version 2: + increased reliability over frame rate changes, + improved accuracy of object motion and detail by ~20%, + and objects update 12-45 milliseconds faster. +- Server compilation was drastically simplified (100x faster). +- Improved browser server process, to have more consistent behavior. +- Improved mouse lock on browsers. +- Simplified code related to state synchronization. +- Significant gameplay changes and bug fixes. + +They are currently working on universe generation alghorithms for version 8.0. +Participate [by joining the Discord server][cybergate-dis]. + +[cybergate-yt]: https://youtube.com/channel/UClrsOso3Xk2vBWqcsHC3Z4Q +[cybergate-dis]: https://discord.gg/R7DkHqw7zJ + +### [Jumpy] + +{{ image_figure( + alt="Online Matchmaking Menu Page" + src="jumpy.png" + caption="Online Matchmaking") }} + +[Jumpy] ([GitHub][Jumpy], [Discord][jumpy_discord], [Twitter][jumpy_twitter]) by +[Spicy Lobster][spicy_lobster] is a pixel-style, tactical 2D shooter with a fishy +theme. + +In the last month, Jumpy released [v0.7.0][jumpy_v0.7.0] with support for online +and LAN network games! Networking has been a long time coming, with many +architecture decisions being made specifically with networking in mind. While +network performance may still need to be tweaked, and there are still some bugs +to fix, the proof-of-concept was a success. You can start matches on your local +network, or online, with no configuration necessary! + +The Fish Folk game series has a [pre-launch page up on Kickstarter][jumpy_ks], +expected to go public in mid-May. + +[Jumpy]: https://github.com/fishfolks/jumpy +[jumpy_v0.7.0]: https://github.com/fishfolk/jumpy/releases/tag/v0.7.0 +[jumpy_twitter]: https://twitter.com/spicylobsterfam +[jumpy_discord]: https://discord.gg/4smxjcheE5 +[spicy_lobster]: https://spicylobster.itch.io +[jumpy_ks]: https://www.kickstarter.com/projects/erlendsh/fish-folk + +### [Thetawave][thetawave-itch] + +![thetawave-gameplay](thetawave.gif) + +Thetawave is an open-source, physics based, space shooter game. +This month, Thetawave 0.1.0 was [released][thetawave-release]. +The main features of this update were: + +- local multiplayer, +- a second character, +- many sprite adjustments, +- and many gameplay tweaks from in-person playtesting with + the [thetawave arcade cabinet][thetawave-arcade]. + +The easiest way to play the most up to date version of Thetawave +on your machine is to download it through the +[Spicy Launcher][spicy-launcher]. Otherwise, you can play the game in your +browser on the [itch.io page][thetawave-itch]. + +Feel free to reach out in the #thetawave channel in +the [Spicy Lobster discord server][spicy-discord] if you are +interested in contributing. + +[thetawave-itch]: https://metalmancy.itch.io/thetawave +[thetawave-release]: https://github.com/thetawavegame/thetawave/releases/tag/v0.1.0 +[thetawave-arcade]: https://twitter.com/carlosupina/status/1650200385485774850 +[spicy-launcher]: https://github.com/spicylobstergames/SpicyLauncher/releases/tag/v0.3.0 +[spicy-discord]: https://discord.gg/52WCcgJkcE + +### [Way of Rhea][wor] + +[![Steam Puzzle Fest April 24 - May 1 Way of Rhea](wor-puzzle-fest.jpg)][wor] + +[Way of Rhea][wor] is a puzzle game with hard puzzles and forgiving +mechanics being produced by [@masonremaley] in a custom Rust engine. +You can support development by [checking out the free demo and wishlisting on Steam][wor] +or [signing up for the mailing list][wor-mail]! + +Recent updates: + +- Time controls (pause, play, fastforward) +- Staves switch in place so that crabs don't inadvertently move them when cycling +- Increased drag on various physics objects to prevent bouncing over targets +- Increased staff throw velocity to make it easier to throw staves off ledges +- Improved interactive hover visuals on staves +- Fixed bug where you could take objects from the crab while he's riding the elevator +- Fixed edge cases around saving on load screens +- Fixed edge cases with sleep system and pausing +- More flexible save points in crab puzzles (save points can now conditionally + trigger only when a crab is present) +- More work on end game + +Also, Way of Rhea was part of the [Steam Puzzle Fest][wor-puzzle-fest]! + +[@masonremaley]: https://twitter.com/masonremaley +[wor]: https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n45 +[wor-mail]: https://anthropicstudios.com/newsletter/signup/tech +[wor-puzzle-fest]: https://store.steampowered.com/category/puzzle_matching + +### [l1t] + +![game title in ascii art as a game's level](l1t.png) + +[l1t] by [@alex-laycalvert] is a WIP terminal game about +shooting lasers and lighting statues to solve puzzles. + +In each level, you have to configure mirrors, lasers, and other items +to light up all the statues while avoiding any mishaps like shooting +yourself with a laser beam. + +There's only 4 core levels right now but in addition to adding more +the developer is working on a repository system where web servers +can host level files and users can subscribe to them. + +_Discussions: [/r/rust](https://reddit.com/r/rust/comments/12yzet7/l1t)_ + +[l1t]: https://github.com/alex-laycalvert/l1t +[@alex-laycalvert]: https://aldevelop.com + +### [Maginet] + +![new menu screenshot](maginet.png) + +[Maginet] by [Evrim] is a fast-paced turn-based strategy game +with local/versus-ai/online play on PC/mobile +where two guilds of mages battle each other. + +[This month's updates][maginet-log] include: + +- New mage and board sprites from [@MrmoTarius]. +- New main menu that brings the ability to switch between loadout modes. +- Better AI heuristics for evaluating the board. +- Better health UI. + +The developers are looking for feedback from testers. + +[Evrim]: https://twitter.com/evrimzone +[Maginet]: https://evrimzone.itch.io/maginet +[@MrmoTarius]: https://twitter.com/MrmoTarius +[maginet-log]: https://evrimzone.itch.io/maginet/devlog/519667/grand-ceremony-for-the-beta + +### [Idu][idu-itch] + +![tree branches on top of water](idu.jpeg) + +[Idu][idu-itch] ([Discord][idu_discord]) is a strategic sandbox game about growing +plants that wish to reclaim nature, developed by [Elina Shakhnovich][eli_mastodon] +and [Johann Tael][johann_mastodon] featuring a bespoke Vulkan-based engine in Rust. + +This month [a new demo was released][idu-new-demo]: + +- New inventory and interaction system. +- Office file cabinets for keeping things tidy. +- Converters convert signals from nearby flowers into colorful blocks. + +[idu_discord]: https://discord.gg/MeGauteMj3 +[eli_mastodon]: https://mastodon.gamedev.place/@eli +[johann_mastodon]: https://mastodon.gamedev.place/@johann +[idu-itch]: https://epcc.itch.io/idu +[idu-new-demo]: https://epcc.itch.io/idu/devlog/513652/demo-version-10-flower-tuned-antennas + +### [Tiny Glade] + +{{ image_figure( + alt="three small windows are merged into one bigger one" + src="tglade.gif" + caption="Demo of the gothic windows system") }} + +[Tiny Glade] ([Twitter][tglade-twi], [Youtube][tglade-yt]) is a small relaxing game +about doodling castles. + +[This month's updates][tglade-post] include: + +- More brick colors. +- New gothic windows style. +- Ability to merge windows together into a bigger one. +- New arch algorithm that works better for rough terrain. +- The project's beta testing should start this summer + and the release should happen somewhere in 2024. + +[Tiny Glade]: https://store.steampowered.com/app/2198150/Tiny_Glade +[tglade-twi]: https://twitter.com/PounceLight +[tglade-yt]: https://youtube.com/@pouncelight +[tglade-post]: https://store.steampowered.com/news/app/2198150?emclan=103582791472800070&emgid=3682298662732600151 + +### [Hydrofoil Generation][hgs] + +![NYX awards banners on top from a screenshot from the game](hydrof.jpg) + +[Hydrofoil Generation][hgs] +([Steam][hgs_steam], [Facebook][hgs_facebook], [Discord][hgs_discord]) +is a realistic sailing/foiling inshore simulator in development for PC/Steam +that puts you in the driving seat of modern competitive sailing +that is available in Early Access on Steam. + +[This month's updates][hgs_allnews] include: + +- A brand new location to test your hydrofoil skills: [Bermuda][hgs_video]. +- An improved protocol for line crossing detection is now implemented, + which means that Hydrofoil Generation is now even more fair and accurate. +- Also, [the game won][hgs_award] two Silver awards for the PC Game: + Racing and Simulation category. + +[hgs]: https://hydrofoil-generation.com +[hgs_facebook]: https://facebook.com/HydrofoilGenerationSailing/ +[hgs_discord]: https://discord.gg/DtKgt2duAy/ +[hgs_steam]: https://store.steampowered.com/app/1448820/Hydrofoil_Generation +[hgs_award]: https://store.steampowered.com/news/app/1448820/view/3723957592121893508 +[hgs_allnews]: https://steamcommunity.com/app/1448820/allnews +[hgs_video]: https://youtube.com/watch?v=qUggXlUfflY + +## Engine Updates + +### [Ambient][ambient-github] + +{{ image_figure( + alt="a set of cool and mostly physics-centered demos" + src="ambient.gif" + caption="A 10-second preview of what's possible with Ambient 0.2") }} + +[Ambient 0.2][ambient-blog] is now out after two months of development. +Ambient is an open-source runtime for building high-performance multiplayer +games and 3D applications powered by WebAssembly, Rust and WebGPU. Projects +consist of assets and logic built around the currently Rust-only Ambient API, +and these projects can be loaded by any compatible runtime running on any +platform. + +This release brings a few major features, including basic support for playing +sounds, being able to run WASM on the client (in addition to the server), and +automatic proxying of servers by the Ambient Proxy. This allows anyone with +the URL to connect to a server, without having to worry about port forwarding. + +Finally, Ambient UI can now be used from guest code. Combined with networking +and ECS, this unlocks an exciting new capability: multiplayer UI! The blog post +walks through the creation of a basic multiplayer beat sequencer using these +features. + +Check out [the GitHub][ambient-github] to get started with building for/or +on Ambient yourself, or chat with the developers and other explorers on +[the Discord][ambient-discord]. + +_Discussion: [/r/rust][ambient-reddit], [Hacker News][ambient-hn]_ + +[ambient-github]: https://github.com/AmbientRun/Ambient +[ambient-blog]: https://www.ambient.run/post/ambient-0-2 +[ambient-reddit]: https://reddit.com/r/rust/comments/138ii11/ambient_02 +[ambient-hn]: https://news.ycombinator.com/item?id=35828165 +[ambient-discord]: https://discord.gg/ambient + +### [godot-rust][gd-github] + +![godot-rust GDExtension logo](godot-rust-gdext.png) + +The Godot 4 binding for Rust, also known as [gdext][gd-gdext], now features +[a reworked website][gd-website]. The site acts as a hub to all the relevant +resources and community platforms. It also hosts auto-generated API docs +from `cargo doc`, for latest snapshots and active pull requests. + +On the library side, April has brought [lots of improvements][gd-pulse] +regarding engine interaction, notably: + +- FFI bugfixes ([#234][gd-234], [#249][gd-249], [#250][gd-250]) +- Class constants and notifications ([#219][gd-219], [#223][gd-223]) +- `Callable` support ([#231][gd-231]) +- Initial threading experiments ([#212][gd-212]) + +For the near future, the plan is to iron out the new website and CI, as well +as some QoL improvements such as better compile times. + +[gd-github]: https://github.com/godot-rust +[gd-gdext]: https://github.com/godot-rust/gdext +[gd-website]: https://godot-rust.github.io +[gd-pulse]: https://github.com/godot-rust/gdextension/pulse/monthly +[gd-212]: https://github.com/godot-rust/gdextension/issues/212 +[gd-219]: https://github.com/godot-rust/gdextension/issues/219 +[gd-223]: https://github.com/godot-rust/gdextension/issues/223 +[gd-231]: https://github.com/godot-rust/gdextension/issues/231 +[gd-234]: https://github.com/godot-rust/gdextension/issues/234 +[gd-250]: https://github.com/godot-rust/gdextension/issues/250 +[gd-249]: https://github.com/godot-rust/gdextension/issues/249 + +## Learning Material Updates + +### [Bevy <3 GitHub Actions][bevy-github-actions-blog] + +![bevy logo](bevy_github_actions.png) + +[Piotr Siuszko][piotr-siuszko] wrote [a blog post][bevy-github-actions-blog] +explaining how to automate building and publishing game written with Bevy +to GitHub Pages using GitHub Actions. + +[piotr-siuszko]: https://mastodon.gamedev.place/@MevLyshkin +[bevy-github-actions-blog]: https://mevlyshkin.com/blog/bevy-github-actions + +### [Exploring Bevy's Game Of Life Example][exploring-gol-blog] + +{{ image_figure( + alt="red dots or black bg" + src="explore_gol_drawing.gif" + caption="Game of Life Simulation") }} + +[Yendor][yendor] published [a mini-tutorial series][exploring-gol-blog] +exploring compute shaders in Bevy using their [Game of Life example][bevy-gol] +and adding some new features to it: camera controller, wrapping simulation, and +drawing on the simulation. + +[yendor]: https://github.com/lecoqjacob +[exploring-gol-blog]: https://lecoqjacob.github.io/bevy_shader_playground/bevy_gol_example/index.html +[bevy-gol]: https://github.com/bevyengine/bevy/blob/main/examples/shader/compute_shader_game_of_life.rs + +### [Test-Driven Development in Rust Game Development with Bevy][bevy-tdd] + +![TDD in Rust game dev with bevy](bevy-tdd.png) + +[Edgardo Carreras writes about his experience][bevy-tdd] with Test-Driven Development +while developing a game engine in Rust using Bevy. TDD is an iterative software +development approach that involves writing automated tests before writing the code. +In the article, Edgardo explains the benefits of TDD and how it can help in game +development. He also shares his testing process, including how he used Bevy's ECS +architecture to write tests for his game engine. + +_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/12bnzin/bevy_tdd)_ + +[bevy-tdd]: https://edgardocarreras.com/blog/tdd-in-rust-game-engine-bevy + +### [Bevy Roguelike Tutorial][bevy-roguelike-blog] + +![a couple characters moving around and interacting](bevy_roguelike.gif) + +[@maciekglowka][bevy-roguelike-mastodon] started a blog series on creating a +roguelike game using Bevy Engine. +There are currently seven parts, focusing mostly on setting up a basic +game architecture. The topics discussed so far include: separating logic from +graphics in the ECS; designing a turn-based game loop; command pattern +for the unit actions. + +The first part of the series can be found [here][bevy-roguelike-blog]. + +_Discussions: +[/r/roguelikedev](https://reddit.com/r/roguelikedev/comments/12rvj30/creating_a_roguelike_in_bevy)_ + +[bevy-roguelike-mastodon]: https://mastodon.gamedev.place/@maciekglowka +[bevy-roguelike-blog]: https://maciejglowka.com/blog/bevy-roguelike-tutorial-devlog-part-1 + +### [PhaestusFox's Bevy Videos][@PhaestusFox] + +![phaestusfox youtube](phaestusfox.png) + +[@PhaestusFox] released a bunch of new Bevy tutorials +on Youtube about all things Bevy. +Level up your game dev skills with PhaestusFox's tutorials and learn more from +very basic how-to's to more complex full tutorials like how to make a platformer +in Bevy. + +[@PhaestusFox]: https://youtube.com/@PhaestusFox + +### [Katamari for the BevyJam3][katamari-gamejam-blog] + +![Katamari gif](katamari.gif) + +[Ryosuke][whoisryosuke] recently participated in a Bevy game jam. +Ryosuke's goal was to create a game inspired by Katamari Damacy, an old +PlayStation 2 game. In the game, a prince rollsup objects to make planet +sized balls. +Ryosuke shares their [learning process][katamari-gamejam-blog] of the almost-finished +Katamari clone running on Windows. They cover topics like the physics library and +how they created the user interface using a tool egui. +It is also suggested to have some basic knowledge of Bevy game engine +before you dive into the article. + +[whoisryosuke]: https://mastodon.gamedev.place/@whoisryosuke +[katamari-gamejam-blog]: https://whoisryosuke.com/blog/2023/making-katamari-for-bevy-game-jam + +### [3D MIDI Piano Using Bevy][3dpiano-blog] + +![3D Midi Piano](piano.gif) + +[Ryosuke][whoisryosuke] has also recently published [a tutorial][3dpiano-blog] +on how to create a 3D MIDI piano visualizer app using the +Bevry game engine in Rust. They shared their learning experience, including +reading MIDI input with Rust and integrating it with the game engine. + +[3dpiano-blog]: https://whoisryosuke.com/blog/2023/3d-midi-piano-using-rust-and-bevy + +### [DOOM maps to SVG to laser cutter][svg-cutter-blog] + +![Blender result with colored vertical layers](laser-cutter.png) + +[Theor][theor-author] became interested in the data format of the classic game Doom +and decided to write Rust code to extract its maps and convert them into vector +graphics for laser cutting. +Theor's [blog post][svg-cutter-blog] explores Doom specifics, geometry, writing SVG, +rendering and triangulation. + +_Discussions: [/r/rust](https://reddit.com/r/rust/comments/12mlsfj/lasercut_doom)_ + +[svg-cutter-blog]: https://theor.xyz/doom-maps-laser-cut/ +[theor-author]: https://github.com/theor + +### [Making a Strategy Game][sergiorodrigo-tut] + +![strategy game bevy console](strategy-game.png) + +[Sergio Rodrigo Royo][sergiorodrigo] started [a new series][sergiorodrigo-tut] about +creating a 2D turn-based strategy game in Rust. In this tutorials one will learn +how to's such as: adding differents units, sound effects, providing multiplayer support, +and designing a simple UI. + +[sergiorodrigo]: https://srodrigoroyo.com/about/ +[sergiorodrigo-tut]: https://srodrigoroyo.com/game-development-in-rust-strategy-game-1 + +### [Rendering Football Data in 3D][3d-football-rs] + +![3d football](football.jpg) + +[UnravelSports][unravelsports] recently presented their [latest project][3d-football-rs]. +The project is a proof-of-concept to show football data in 3D and the ultimate goal +is to utilize this feature to animate body-pose data and potentially connect it +to a VR in the future. + +Check out a recent [PySport talk][football-talk] for more in-depth info. + +[3d-football-rs]: https://github.com/UnravelSports/rs-football-3d +[unravelsports]: https://unravelsports.github.io/ +[football-talk]: https://youtube.com/watch?v=VwatoPOKIl8 + +### [AI learns to play flappy bird][flappy-bird-ai] + +![Flappy bird](flappy-bird-ai.png) + +[bones-ai][bones-ai-github] recently shared [their project][flappy-bird-ai], +which is a neuro-evolution simulation of an AI playing popular game Flappy Bird. + +In the [youtube video][flappybird-youtube-link] 1000 AI agents are released into +the game environment of Flappy Bird with the goal of learning how to survive and +stay alive for as long as possible. + +[bones-ai-github]:https://github.com/bones-ai +[flappy-bird-ai]: https://github.com/bones-ai/rust-flappy-bird-ai +[flappybird-youtube-link]: https://www.youtube.com/watch?v=Ea_N1CJwMR8 + +## Tooling Updates + +### [Rustracer][rustracer] + +[![Youtube screenshot: demo with a couple of cars inside a box]( +rustracer.jpg)][rustracer-0.2.0 demo] + +Rustracer, a PBR [glTF 2.0][glrf-2-0] renderer based on Vulkan ray-tracing. +It can render (almost) any glTF 2.0 scene by pure path tracing +at an interactive speed. +Compared with rasterization-based glTF renderers, Rustracer needs some +(scene-dependent) time for sample accumulation in exchange for global illumination. + +On top of that, the control panel provides a rich set of viewing options +and debugging utilities. + +It also can serve as a glTF viewer or a reference renderer. + +The code base itself is a learning resource for [Ash] (Vulkan bindings in Rust), +hardware ray tracing and glTF processing in Rust. + +[rustracer]: https://github.com/KaminariOS/rustracer +[rustracer-0.2.0 demo]: https://youtube.com/playlist?list=PLD1H28onwV_kdxp1ajUL6riK_dNzMAXGj +[Ash]: https://github.com/ash-rs/ash +[glrf-2-0]: https://www.khronos.org/gltf + +### [Luminol][luminol] + +![tile map editor and other tool windows like command event editor](luminol.png) + +[Luminol][luminol] by [@speak2erase] and [@somedevfox] is a remake +of the RPG Maker editor, based mostly off of [RPG Maker XP][RMXP] +(aka RMXP), with the intent of creating a more modern, feature rich, +and open source version of RMXP. + +RGSS, RMXP's runtime, has already been open sourced thanks to [mkxp]. +However, despite several attempts, no one has fully remade the editor. +There are [some tools][r48] out there that cover some of its functionality, +but none are user friendly, nor feature complete. + +RGSS is actually quite enjoyable to use. The actual editor though - not so much: +dated and often unintuitive UI, extensibility issues, +binary format that is allergic to source control, +and arbitrary limits that never existed in previous versions. +Luminol was born out of sheer frustration from dealing with these issues - +and hopes to fix them! + +Luminol's key differences: + +- Completely GPU accelerated (RMXP is software rendered). +- Edit multiple maps at the same time. +- Multiple data formats. +- Edit encrypted archives (rgssad). +- Open-source. +- Better user experience overall. + +Luminol is currently looking for contributors: +[there is a lot to be done][luminol-issues]. +If you'd like to help contribute, please reach out to [@speak2erase]! + +[luminol]: https://github.com/Astrabit-ST/Luminol +[luminol-issues]: https://github.com/Astrabit-ST/Luminol/issues +[@speak2erase]: https://github.com/Speak2Erase +[@somedevfox]: https://github.com/somedevfox +[RMXP]: https://store.steampowered.com/app/235900/RPG_Maker_XP +[mkxp]: https://github.com/Ancurio/mkxp +[r48]: https://github.com/20kdc/gabien-app-r48 + +### [Graphite][graphite-website] + +![Graphite logo](graphite.png) + +Graphite ([website][graphite-website], [GitHub][graphite-repo], +[Discord][graphite-discord], [Twitter][graphite-twitter]) is a free, +in-development raster and vector 2D graphics editor based around a Rust-powered +node graph compositing engine. + +April's [sprint 25][graphite-sprint-25] developments: + +- Brushing up: The new Brush tool makes it possible to paint raster-based art. +- Writing down: A refactor of the Text tool integrates typographic content in + the node graph. Finally, all artwork types are node-based. +- Showing true colors: Node graph compositing now uses linear, not gamma, + color. Key new color adjustment nodes are added. +- Laying the groundwork: Further engineering work prepares the node graph + language for GPU execution. And development continues toward in-graph layer + stack compositing. + +As always, new contributors are cordially invited to +[get involved][graphite-contribute] and take on +[approachable issues][graphite-approachable-issues] with help from the +project's friendly and supportive developer community on Discord. + +[Open Graphite][graphite-editor] in your browser and start creating! + +[graphite-website]: https://graphite.rs +[graphite-repo]: https://github.com/GraphiteEditor/Graphite +[graphite-discord]: https://discord.graphite.rs +[graphite-twitter]: https://twitter.com/GraphiteEditor +[graphite-sprint-25]: https://github.com/GraphiteEditor/Graphite/milestone/25 +[graphite-approachable-issues]: https://github.com/GraphiteEditor/Graphite/labels/Good%20First%20Issue +[graphite-editor]: https://editor.graphite.rs + +### [Image Maniac][im] + +![many images opened in one window](imagemaniac.jpg) + +[Image Maniac][im] is a cross-platform image viewer designed for game developers +and other creative professionals. The project's features include: + +- Infinite canvas for drag-n-dropping many images onto the main window, + and view them all in a single, unified workspace. +- Quick RGBA channel switching using number keys is usefil for + game developers who work with textures and materials. +- Broad format support including PNG, JPG, BMP, DDS, TGA, KTX2, and HDR. +- Focus on performance even with large files and multiple image at once. + +_Discussions: [/r/rust](https://reddit.com/r/rust/comments/133ruqi/image_maniac)_ + +[im]: https://github.com/AllenDang/img_maniac + +## Library Updates + +### [Backpack] + +{{ image_figure( + alt='left part is "crab simulator" game where the player gains an item +right part is "clash of crabs" where player is able to use the item' + src="backpack.jpg" + caption="Minimalist schema for sharing items in different games") }} + +[Backpack] is an inventory system to share items between different games, +for example: + +- Raise a crab in Crab Simulator, +- Make it fight in Crab Shooter, +- Cook it in Crab Cook... +- Gain a crab skin in your favorite game! + +[Backpack] is in a pre-MVP state: a tech prototype is working. + +The project is not affiliated or related to Blockchain/NFTs: +it uses a PostgreSQL DB to store users, games and items. +Authentication is done via email/password, +third party authentication via OAuth will be a future goal. +An Authenticated user can create apps and add item definitions to these. +Other users can get an independent instance of that item and modify its data. + +The next project milestone is +2 minimalist interconnected games released by the end of 2023. + +[Backpack]: https://github.com/Vrixyz/backpack + +## Other News + + + +- Other game updates: + - [Combine&Conquer v0.5.2][cnc-052] brings + significant graphical improvements. + - exocave - an FPS about exploring a subterranean world - + [got a grappling hook][exocave] to ease the movement through caverns and chasms. + - [Railroad Scheduler] is a game about planning routes and scheduling + for a set of trains. + - [Stellar Cortex's first devlog is out][s-cortex-log]: + it talks about foundational systems that should allow space based commerce. + - [Logic RPG][lrpg] got two vlogs: [about CI and docs][lrpg-1] and + [post processing, 3D conversions, and physics][lrpg-2]. + - [Elttob released a couple vlogs][stockholm] about their voxel game Stockholm. + - [Digital Extinction's recent updates][de] include unit manufacturing, + shadows, and multiplayer. +- Other engine updates: + - [ggez is looking for new maintainers][ggez-maintain]. +- Other learning material updates + - [@PsichiX posted a tutorial][intuicio] on building your own + scripting solution with Intuicio. +- Other tooling updates: + - [ironboy] by @nicolas-siplis is a high accuracy GameBoy emulator + written in Rust and available in the browser via WASM. +- Other library updates: + - [Strolle][strolle] is an experimental real-time renderer that supports + global illumination. + - [blend v0.8][blend] brings better support for Blender primitives + and API improvements. + - [lox] is a library for creating, generating, processing, + and analyzing polygon meshes. + - [bitcode] is a games-oriented bitwise encoder/decoder which attempts + to shrink the serialized size without sacrificing speed. + - [virtual_joystick] provides virtual joystick UI widgets for Bevy projects. + - [faer v0.7][faer-07] and [v0.8 releases][faer-08] bring + better SIMD operations support for non native types + and overall performance improvements. + - [egui_graphs] provides an interactive graph visualization widget powered + by egui and petgraph. + - [Alkahest][alkahest] is a schema-based serialization library + that features infallible serialization, zero-overhead serialization of sequences, + lazy deserialization and supports wide variety of formulas. + - [wgpu v0.16][wgpu-v016] brings a bunch of changes to sync with latest spec, + improved APIs, and lots of bugfixes. + - [the png create][png] got an ultrafast compression mode \- + up to 4x faster decompression. + +[cnc-052]: https://buckmartin.de/combine-and-conquer/2023-04-05-v0.5.2.html +[exocave]: https://cragwind.itch.io/exocave/devlog/516142/grappling-hook +[Railroad Scheduler]: https://coffejunkstudio.itch.io/railroad-scheduler +[s-cortex-log]: https://bentley.codes/stellar-cortex/foundations-of-a-space-based-economy +[lrpg]: https://logicprojects.itch.io/logic-rpg +[lrpg-1]: https://youtube.com/watch?v=a9LZYozNChg +[lrpg-2]: https://youtube.com/watch?v=SmqQ_Is9QX8 +[stockholm]: https://youtube.com/playlist?list=PLsFMLV-H_GYt8KzbJnzrapNkUNtRcBB2n +[de]: https://mgn.cz/blog +[ggez-maintain]: https://github.com/ggez/ggez/issues/1188 + +[intuicio]: https://psichix.github.io/Intuicio/tutorial/index.html + +[ironboy]: https://reddit.com/r/rust/comments/12qj2ty/ironboy + +[strolle]: https://reddit.com/r/rust/comments/12u4ovi/strolle +[blend]: https://github.com/lukebitts/blend/blob/master/CHANGELOG.md#blend-08 +[lox]: https://reddit.com/r/rust/comments/12teoxi/lox_a_fast_polygon_mesh_library +[bitcode]: https://reddit.com/r/rust/comments/12nw1pc/bitcode_format +[virtual_joystick]: https://github.com/SergioRibera/virtual_joystick +[faer-07]: https://reddit.com/r/rust/comments/12estz9/faer_07 +[faer-08]: https://reddit.com/r/rust/comments/12tw26r/faer_08 +[egui_graphs]: https://github.com/blitzarx1/egui_graphs +[alkahest]: https://reddit.com/r/rust_gamedev/comments/12auz7o/alkahest_02 +[wgpu-v016]:https://github.com/gfx-rs/wgpu/releases/tag/v0.16.0 +[png]: https://reddit.com/r/rust/comments/12ks0ka/png_crate_gets_an_ultrafast_compression + +## Discussions + + + +- /r/rust_gamedev: + - ["Well, we're a little more game"][red-little-more] + - ["Really frustrated"][red-runt] + +[red-little-more]: https://reddit.com/r/rust_gamedev/comments/12mppwb/well_were_a_little_more_game +[red-runt]: https://reddit.com/r/rust_gamedev/comments/1302512/really_frustrated + +## Requests for Contribution + + + +- ['Are We Game Yet?' wants to know about projects/games/resources that + aren't listed yet][awgy]. +- [Graphite is looking for contributors][graphite-contribute] to help build the + new node graph and 2D rendering systems. +- [winit's "difficulty: easy" issues][winit-issues]. +- [Backroll-rs, a new networking library][backroll-rs]. +- [Embark's open issues][embark-open-issues] ([embark.rs]). +- [wgpu's "help wanted" issues][wgpu-issues]. +- [luminance's "low hanging fruit" issues][luminance-fruits]. +- [ggez's "good first issue" issues][ggez-issues]. +- [Veloren's "beginner" issues][veloren-beginner]. +- [A/B Street's "good first issue" issues][abstreet-issues]. +- [Mun's "good first issue" issues][mun-issues]. +- [SIMple Mechanic's good first issues][simm-issues]. +- [Bevy's "good first issue" issues][bevy-issues]. +- [Ambient's "good first issue" issues][ambient-issues]. + +[awgy]: https://github.com/rust-gamedev/arewegameyet#contribute +[graphite-contribute]: https://graphite.rs/contribute +[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22 +[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues +[embark.rs]: https://embark.rs +[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open +[wgpu-issues]: https://github.com/gfx-rs/wgpu/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 +[abstreet-issues]: https://github.com/a-b-street/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 +[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue +[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue +[ambient-issues]: https://github.com/AmbientRun/Ambient/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22 + +------ + +That's all news for today, thanks for reading! + +Want something mentioned in the next newsletter? +[Send us a pull request][pr]. + +Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev] +or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news! + +**Discuss this post on**: +[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/13xh0q7/this_month_in_rust_gamedev_45_april_2023), +[Mastodon](https://mastodon.gamedev.place/@rust_gamedev/110469105162579330), +[Twitter](https://twitter.com/rust_gamedev/status/1664256969408913411), +[Discord](https://discord.gg/yNtPTb2). + +[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev +[@rust_gamedev]: https://twitter.com/rust_gamedev diff --git a/content/news/045/intuicio-intro.png b/content/news/045/intuicio-intro.png new file mode 100644 index 000000000..e46c7b477 Binary files /dev/null and b/content/news/045/intuicio-intro.png differ diff --git a/content/news/045/jumpy.png b/content/news/045/jumpy.png new file mode 100644 index 000000000..a8833be52 Binary files /dev/null and b/content/news/045/jumpy.png differ diff --git a/content/news/045/katamari.gif b/content/news/045/katamari.gif new file mode 100644 index 000000000..a6dbce7e7 Binary files /dev/null and b/content/news/045/katamari.gif differ diff --git a/content/news/045/l1t.png b/content/news/045/l1t.png new file mode 100644 index 000000000..96e99b854 Binary files /dev/null and b/content/news/045/l1t.png differ diff --git a/content/news/045/laser-cutter.png b/content/news/045/laser-cutter.png new file mode 100644 index 000000000..05a3f4376 Binary files /dev/null and b/content/news/045/laser-cutter.png differ diff --git a/content/news/045/luminol.png b/content/news/045/luminol.png new file mode 100644 index 000000000..507e2978a Binary files /dev/null and b/content/news/045/luminol.png differ diff --git a/content/news/045/maginet.png b/content/news/045/maginet.png new file mode 100644 index 000000000..0343f925e Binary files /dev/null and b/content/news/045/maginet.png differ diff --git a/content/news/045/phaestusfox.png b/content/news/045/phaestusfox.png new file mode 100644 index 000000000..4c6c90b62 Binary files /dev/null and b/content/news/045/phaestusfox.png differ diff --git a/content/news/045/piano.gif b/content/news/045/piano.gif new file mode 100644 index 000000000..1dec5cd04 Binary files /dev/null and b/content/news/045/piano.gif differ diff --git a/content/news/045/railroad-scheduler.png b/content/news/045/railroad-scheduler.png new file mode 100644 index 000000000..2806f594e Binary files /dev/null and b/content/news/045/railroad-scheduler.png differ diff --git a/content/news/045/rustracer.jpg b/content/news/045/rustracer.jpg new file mode 100644 index 000000000..62f2e1166 Binary files /dev/null and b/content/news/045/rustracer.jpg differ diff --git a/content/news/045/strategy-game.png b/content/news/045/strategy-game.png new file mode 100644 index 000000000..77b4b0d38 Binary files /dev/null and b/content/news/045/strategy-game.png differ diff --git a/content/news/045/tglade.gif b/content/news/045/tglade.gif new file mode 100644 index 000000000..18d67df45 Binary files /dev/null and b/content/news/045/tglade.gif differ diff --git a/content/news/045/thetawave.gif b/content/news/045/thetawave.gif new file mode 100644 index 000000000..6e0087867 Binary files /dev/null and b/content/news/045/thetawave.gif differ diff --git a/content/news/045/wor-puzzle-fest.jpg b/content/news/045/wor-puzzle-fest.jpg new file mode 100644 index 000000000..88b210287 Binary files /dev/null and b/content/news/045/wor-puzzle-fest.jpg differ diff --git a/content/news/046/bevy-garage.jpg b/content/news/046/bevy-garage.jpg new file mode 100644 index 000000000..20cc448df Binary files /dev/null and b/content/news/046/bevy-garage.jpg differ diff --git a/content/news/046/bevy-platformer-tut.png b/content/news/046/bevy-platformer-tut.png new file mode 100644 index 000000000..970e3b4f1 Binary files /dev/null and b/content/news/046/bevy-platformer-tut.png differ diff --git a/content/news/046/blit.png b/content/news/046/blit.png new file mode 100644 index 000000000..75f123990 Binary files /dev/null and b/content/news/046/blit.png differ diff --git a/content/news/046/dashmore.jpg b/content/news/046/dashmore.jpg new file mode 100644 index 000000000..93f24a7e5 Binary files /dev/null and b/content/news/046/dashmore.jpg differ diff --git a/content/news/046/digital-extinction.jpeg b/content/news/046/digital-extinction.jpeg new file mode 100644 index 000000000..6ceb68ccd Binary files /dev/null and b/content/news/046/digital-extinction.jpeg differ diff --git a/content/news/046/escape-ai.png b/content/news/046/escape-ai.png new file mode 100644 index 000000000..910ec19ab Binary files /dev/null and b/content/news/046/escape-ai.png differ diff --git a/content/news/046/find_ferris.png b/content/news/046/find_ferris.png new file mode 100644 index 000000000..b92076690 Binary files /dev/null and b/content/news/046/find_ferris.png differ diff --git a/content/news/046/folk-funded.png b/content/news/046/folk-funded.png new file mode 100644 index 000000000..ef4777383 Binary files /dev/null and b/content/news/046/folk-funded.png differ diff --git a/content/news/046/hotline.png b/content/news/046/hotline.png new file mode 100644 index 000000000..1f8030589 Binary files /dev/null and b/content/news/046/hotline.png differ diff --git a/content/news/046/index.md b/content/news/046/index.md new file mode 100644 index 000000000..bfc194042 --- /dev/null +++ b/content/news/046/index.md @@ -0,0 +1,785 @@ ++++ +title = "This Month in Rust GameDev #46 - May 2023" +transparent = true +date = 2023-06-30 +draft = false ++++ + + + + + +Welcome to the 46th 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] + +You can follow the newsletter creation process +by watching [the coordination issues][coordination]. +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 +[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination + +- [Announcements](#announcements) +- [Game Updates](#game-updates) +- [Engine Updates](#engine-updates) +- [Learning Material Updates](#learning-material-updates) +- [Tooling Updates](#tooling-updates) +- [Library Updates](#library-updates) +- [Other News](#other-news) +- [Discussions](#discussions) +- [Requests for Contribution](#requests-for-contribution) + + + +## Announcements + +### [Rusty Jam \#3][rj3] + +{{ image_figure( + alt="find ferris screenshot: a cart with sweets, ferris, flowers, etc" + src="find_ferris.png" + caption="Find Ferris") }} + +[Rusty Jam \#3][rj3] ran from May 21st 2023 to May 29th 2023 and the theme was +"Hidden in plain sight". +The jam had a few but high-quality and awesome games. + +Here're the winners: + +- 🥇 [Find Ferris](https://kuviman.itch.io/find-ferris) by kuviman. +- 🥈 [Tug of Orb](https://anders429.itch.io/tug-of-orb) by anders429. +- 🥉 [The Veiled Path](https://jebik.itch.io/the-veiled-path) by Jebik. + +We wish all the participants good luck in their future endeavors! +The RustyJam will be back, so stay tuned on +[the Rusty Jam Discord][rj-dis] for future updates! + +[rj3]: https://itch.io/jam/rusty-jam-3 +[rj-dis]: https://discord.gg/jZtz6y9gCJ + +### [Rust GameDev Meetup \#27][meetup-video] + +[![youtube preview: "rerun fir gamedev" slide](meetup.jpg)][meetup-video] + +The 27th Rust Gamedev Meetup took place in May. You can watch the recording +of the meetup [here on Youtube][meetup-video]. + +The schedule: + +- Rusty Jam 3 by [@ElhamAryanpur] +- Blue Engine by [@ElhamAryanpur] +- Rerun by [@wumpf] +- Graphite by [@Keavon] + +The meetups take place on the second Saturday of every month via the [Rust +Gamedev Discord server][rust-gamedev-discord] and are also [streamed on +Twitch][rust-gamedev-twitch]. + +[meetup-video]: https://youtube.com/watch?v=WQ3ncBe9srM +[rust-gamedev-discord]: https://discord.gg/yNtPTb2 +[rust-gamedev-twitch]: https://twitch.tv/rustgamedev +[@ElhamAryanpur]: https://github.com/ElhamAryanpur +[@wumpf]: https://github.com/wumpf +[@Keavon]: https://github.com/Keavon + +## Game Updates + +### Digital Extinction + +{{ image_figure( + alt="Building Placement in Digital Extinction" + src="digital-extinction.jpeg" + caption="Building Placement in Digital Extinction") }} + +[Digital Extinction] ([GitHub][de-github], [Discord][de-discord], +[Reddit][de-reddit]) by [@Indy2222] is a 3D real-time strategy game made with +[Bevy]. + +The most notable updates are: + +- poles at unit manufacturing delivery locations for selected factories, +- pausing unit manufacturing when the spawn location is occupied, +- [IME][ime] support for text boxes, +- a lot of progress on multiplayer networking, +- [logging][de-logging] to file and other logging improvements. + +Support for multiplayer is a technologically complex problem to solve and it is +the last major missing feature before the [proof-of-concept][de-poc] version +can be released. Therefore, a lot of effort currently goes in this direction. + +The game is slowly gaining traction in the development community. +Check out our new [contributors here][de-contributors]. + +See [gameplay][de-video] screen recordings on YouTube. + +More detailed monthly updates are available [here (May)][de-update-07] and +[here (June)][de-update-08]. + +[Digital Extinction]: https://de-game.org +[de-github]: https://github.com/DigitalExtinction/Game +[de-discord]: https://discord.gg/vHMFuCWGSX +[de-reddit]: https://reddit.com/r/DigitalExtinction +[Bevy]: https://bevyengine.org +[ime]: https://en.wikipedia.org/wiki/Input_method +[de-logging]: https://docs.de-game.org/logging/ +[de-poc]: https://github.com/DigitalExtinction/Game/milestone/1 +[de-video]: https://youtu.be/_ibNMDgIQDE +[de-contributors]: https://github.com/DigitalExtinction/Game/graphs/contributors +[de-update-07]: https://mgn.cz/blog/de07/ +[de-update-08]: https://mgn.cz/blog/de08/ +[@Indy2222]: https://github.com/Indy2222 + +### [Tunnet][tunnet-itch] + +{{ image_figure( + alt="Tunnet screenshot: robots queueing outside nightclub" + src="tunnet.jpg" + caption="Connecting the DJ set to the network") }} + +Tunnet ([Steam][tunnet-steam], [Itch.io][tunnet-itch]) is a short +puzzle/exploration game where the player digs tunnels and connects computers +together. + +As a network engineer, the player will also have to respond to security +incidents. +In May, this game mechanic has been illustrated in a [devlog][tunnet-post] and +a preview of the new [basic water simulation][tunnet-water] has been posted. + +[tunnet-itch]: https://puzzled-squid.itch.io/tunnet +[tunnet-steam]: https://store.steampowered.com/app/2286390/Tunnet +[tunnet-post]: https://puzzled-squid.itch.io/tunnet/devlog/532388/devlog-1-ghost-in-the-tunnels +[tunnet-water]: https://mastodon.gamedev.place/@puzzled_squid/110322440469696044 + +### [Fish Folk's Kickstarter][fish-ks] + +![happy fish, exploding bombs, "thank you!" written in the central explosion +and "just founded" in the bottom](folk-funded.png) + +This month [Fish Folk][fish-folk] ([itch.io][fish-itch], [Discord][fish-dis]) +has launched their [Kickstarter campaign][fish-ks] +that has [already reached its funding goal][fish-15k]! + +Even though the basic sum is collected, the campaign still continues +to get more funds for the stretch goals: + +> The plan for how to allocate funds that exceed our €15k goal is very simple: +> For every additional €1,000 pledged to our campaign, +> we will prototype another fishy game archetype for our evergrowing bundle. +> Once our funding run concludes we will poll our backers on which game(s) +> you would like us to prioritize. + +_Discussions: [/r/rust](https://reddit.com/r/rust/comments/13qkcv9/fish_ks)_ + +[fish-ks]: https://kickstarter.com/projects/erlendsh/fish-folk +[fish-15k]: https://kickstarter.com/projects/erlendsh/fish-folk/posts/3821869 +[fish-folk]: https://fishfolk.org/games/jumpy +[fish-dis]: https://discord.gg/4smxjcheE5 +[fish-itch]: https://spicylobster.itch.io + +### [Escape Room AI][escape-ai] + +{{ image_figure( + alt="top-down view on the game world: wallks, traps, enemies, doors, etc" + src="escape-ai.png" + caption="AI trying to escape a room") }} + +[escape-ai] by [@bones-ai] is a Rust-based implementation of a genetic algorithm +and reinforcement learning simulation. +Its purpose is to train an AI named Zoe to escape a room it's enclosed in. +The simulation is built using the Macroquad library. + +The [YouTube video][escape-video] demonstrates 1000 AI bots learning +how to escape five rooms of increasing difficulty. + +_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/13dstir/ai_escape)_ + +[escape-ai]: https://github.com/bones-ai/rust-escape-ai +[@bones-ai]: https://twitter.com/BonesaiDev +[escape-video]: https://youtube.com/watch?v=OeojCLDKaJU + +### [MEANWHILE IN SECTOR 80][ms80] + +[![MS80 Weekly Update Number One](ms80.jpg)][ms80-vlog] + +[MEANWHILE IN SECTOR 80][ms80] ([Discord][shg-dis], [mailing list][shg-news]) +by [Second Half Games][shg-site] is an upcoming third person +action-engineering space game. + +Second Half Games released the [first update video][ms80-vlog] for the game. +It includes an introduction to the studio, an overview of the game, and some of +the recent progress towards the first public demo. + +[shg-site]: https://secondhalf.games +[shg-news]: https://dashboard.mailerlite.com/forms/402073/85466601232532545/share +[shg-dis]: https://discord.gg/A9GHQGNhJX +[ms80]: https://ms80.space +[ms80-vlog]: https://youtube.com/watch?v=bgmySx_tv1s + +### [Tiny Glade] + +![editing of windows on a cute cottage](tglade-windows.gif) + +[Tiny Glade] ([Twitter][tglade-twi]) +is a small relaxing game about doodling castles. + +[This month][tglade-post] was all about turning previous experiments +into reality. +The coloring and window prototypes are now proper features, +have dedicated UI, and play well with other building tools. + +The devs have also been [toying with][tglade-gi] real-time global illumination +that could run on potato graphics cards. + +[Tiny Glade]: https://store.steampowered.com/app/2198150/Tiny_Glade +[tglade-twi]: https://twitter.com/PounceLight +[tglade-post]: https://store.steampowered.com/news/app/2198150/view/3714952295473339216?l=english +[tglade-gi]: https://twitter.com/h3r2tic/status/1663264361144565765 + +### [Turtle Time][tt-devlog] + +![game screenshot: pixel art tile graphics](turtle-time.png) + +Turtle Time by [@mikeder] is a WIP p2p multiplayer turtle game +being made using Bevy, [ggrs], and [matchbox]. + +This month [the first devlog][tt-devlog] was released: + +- Quickly starting a project using [bevy_game_template]. +- Converting single player systems to multiplayer ones. +- Determinism, random spawns, and timers. + +[tt-devlog]: https://mikeder.net/blog/turtletime-devlog-1 +[@mikeder]: https://mikeder.net +[bevy_game_template]: https://github.com/NiklasEi/bevy_game_template +[ggrs]: https://github.com/gschup/ggrs +[matchbox]: https://github.com/johanhelsing/matchbox + +### [DAshmoRE][dashmore] + +![instructions screen: game controls instructions](dashmore.jpg) + +[DAshmoRE][dashmore] is a fast-paced arcade mobile game written using Bevy. + +> Get ready for a fast-paced and challenging arcade game +> where the only way to move is by skillfully dashing past enemies. +> With a single tap, you must navigate through a maze of enemies +> that move at different speeds and patterns. +> Can you master the art of dashing and achieve the highest score? +> Test your skills and reflexes in this thrilling arcade game. + +The game's features include: + +- Single-tap controls and WASM build suited for playing on mobile phones. +- Power-ups like player repellent forcefields and slow-motion abilities. +- Integrated highscore system. + +_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/13al7qu/dashmore)_ + +[dashmore]: https://hopfenherrscher.itch.io/dashmore + +### [NANOVOID][nv-steam] + +{{ image_figure( + alt="one big space ship shooting lots of missles at another" + src="nanovoid.gif" + caption="Missiles targeting individual parts on enemy ships") }} + +[NANOVOID][nv-steam] by [LogLogGames] is a WIP 2D tactical space shooter +that puts you in command of your own modular spaceship: +engage in intense, physics-driven battles, strategize with ship customization, +and outsmart your enemies. + +This month [the first devlog][nv:log1] was released +and it mostly was dedicated to experiments with Lua scripting. + +Other updates include: + +- [A simple PID controller][nv-twi1] for rotating the ship. +- [The SFX for thrusters is now filtered][nv-twi2] based on the desired force. +- On-hit SFX and explosions [are starting to feel satisfying][nv-twi3]. +- Parts of the ship [can now be individually inspected][nv-twi4] with pinnable UI. +- Missiles targeting individual parts on enemy ships [with some more UI tweaks][nv-twi5]. + +_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/13rgj9t/nanovoid_1)_ + +[LogLogGames]: https://loglog.games +[nv-steam]: https://store.steampowered.com/app/2326430/NANOVOID +[nv:log1]: https://loglog.games/blog/nanovoid-devlog-1 +[nv-twi1]: https://twitter.com/LogLogGames/status/1659202148616523778 +[nv-twi2]: https://twitter.com/LogLogGames/status/1660062551651041281 +[nv-twi3]: https://twitter.com/LogLogGames/status/1660683311755165697 +[nv-twi4]: https://twitter.com/LogLogGames/status/1663134570634461190 +[nv-twi5]: https://twitter.com/LogLogGames/status/1663667145018953729 + +### [Bevy Garage][garage-gh] + +[![YouTube preview: a track with a racing car on it +and Alexi in the corner of the screen](bevy-garage.jpg)][garage-vid1] + +[Bevy Garage][garage-gh] by [@alexichepura] is +a game-like car simulation playground +built with Bevy, rapier, and dfdx neural network. + +Alexi released two introductory videos about the project: + +- [The main video][garage-vid1] that walks through the project. +- Deep Q-Learning car training [for 1 hour][garage-vid2]. + +You can also try out the WASM version of the simulation +[here][garage-web]. + +[garage-gh]: https://github.com/alexichepura/bevy_garage +[garage-web]: https://alexi.chepura.space/bevy-garage +[garage-vid1]: https://youtu.be/f6PcaTX58J4 +[garage-vid2]: https://youtu.be/A2JMPIWGXBsf +[@alexichepura]: https://mastodon.social/@alexichepura + +## Engine Updates + +### [stereokit-rs][sk-rs] + +![Demo of drawing with your hands in 3D space](stereokit.gif) + +[stereokit-rs][sk-rs] ([Discord][sk-dis]) are bindings to [StereoKit][sk] - an easy-to-use +Mixed Realty engine, designed for creating VR, AR, and XR experiences. +While StereoKit is primarily intended to be used from C#, +all core functionality is implemented in native code, +and a C compatible header file is also available and +was used to create Rust bindings. + +StereoKit's features include: + +- Wide platform support: HoloLens 2, Oculus Quest, Windows Mixed Reality, + Oculus Desktop, SteamVR, Varjo, Monado (Linux), + and eventually everywhere OpenXR is. +- Mixed Reality inputs like hands and eyes are trivial to access. +- Easy and powerful UI and interactions. +- Lots of model and texture formats are supported out of the box. +- Flexible shader/material system with built-in PBR. +- Performance-by-default instanced render pipeline. +- Flat screen MR simulator with input emulation for easy development. +- Runtime asset loading and cross-platform file picking. +- Physics. + +You can use [a cargo-generate template][sk-template] for a quick start +and the devs invite to join [their Discord server][sk-dis] +if you have any questions. + +_Discussions: [/r/rust](https://reddit.com/r/rust/comments/138ywxv/intro_stereokit)_ + +[sk]: https://stereokit.net +[sk-rs]: https://github.com/MalekiRe/stereokit-rs +[sk-template]: https://github.com/MalekiRe/stereokit-template +[sk-dis]: https://discord.com/invite/jtZpfS7nyK + +### [hotline][hotline-gh] + +![screenshots from hotline's tests](hotline.png) + +[hotline][hotline-gh] ([Blog][hotline-blog], [Twitter][hotline-twi], [Twitch][hotline-twitch]) +is a modern, high-performance, hot-reload graphics engine that +aims to provide low-level access to modern +graphics API features, while at the same time providing high-level ergonomic +optimizations. + +[The recent updates][hotline-devlog] include: + +- Tests of graphics functionality and lots of new examples, +- GPU Resources cleanup improvements, +- explicit API fore resource heaps, +- better bindless and bindful rendering models, +- GPU-driven ECS experiments. + +[hotline-gh]: https://github.com/polymonster/hotline +[hotline-blog]: https://www.polymonster.co.uk +[hotline-twi]: https://twitter.com/polymonster +[hotline-twitch]: https://twitch.tv/polymonstr +[hotline-devlog]: https://www.polymonster.co.uk/blog/building-new-engine-4 + +## Learning Material Updates + +### [Building a Platformer with Bevy \#1][bevy-platformer-tut] + +![a scheme showing an agent jumping from pillar to pillar](bevy-platformer-tut.png) + +[@affanshahid] published [the first part of a new tutorial series][bevy-platformer-tut] +on building a simple 2D platformer using Bevy. +The series is aimed at newcomers to the world of +game development and explores common game development concepts. + +_Discussions: [/r/rust](https://reddit.com/r/rust/comments/134d2i0/learning_gamedev_w_rust)_ + +[bevy-platformer-tut]: https://affanshahid.dev/posts/learning-game-dev-bevy-1 +[@affanshahid]: https://github.com/affanshahid + +### [Game Development In Rust: Making A Strategy Game][rust-strategy-game-tut-1] + +{{ image_figure( + alt="Game Development In Rust: Making A Strategy Game" + src="strategy-game.png" + caption="Game Development In Rust: Making A Strategy Game") }} + +[@srodrigo] published the first three parts of a +[strategy game in Bevy series][rust-strategy-game-tut-1]. The series is aimed at +developers with some experience in Rust who want to dive into game development. + +- [The first part][rust-strategy-game-tut-1] focuses on the basic concepts to + create a battlefield for the battles to come. +- [The second part][rust-strategy-game-tut-2] adds the first unit type. +- [The third part][rust-strategy-game-tut-3] adds more unit types to create more + compelling teams. + +[rust-strategy-game-tut-1]: https://srodrigoroyo.com/game-development-in-rust-strategy-game-1/ +[rust-strategy-game-tut-2]: https://srodrigoroyo.com/game-development-in-rust-strategy-game-2/ +[rust-strategy-game-tut-3]: https://srodrigoroyo.com/game-development-in-rust-strategy-game-3/ +[@srodrigo]: https://github.com/srodrigo + +### [How to Migrate Your Bevy Projects with (Semi-)Automation][bevy-migrate] + +![Logos with ast-grep and bevy](migrate-bevy.png) + +[@HerringtonDarkholme] published an [article][bevy-migrate] +about how to make Bevy migration easier by using git, cargo and [ast-grep]. +The article uses the utility AI library [big-brain] as an example +to illustrate bumping the Bevy version from 0.9 to 0.10 +and covers four big steps: making a clean git branch, +updating the dependencies, running fix commands, and fixing failing tests. +By using semi-automation tools, you can migrate your Bevy projects +with less hassle and more confidence. + +_Discussions: +[/r/rust](https://reddit.com/r/rust/comments/13m4crf/semi_automated_migration_bevy)_ + +[bevy-migrate]: https://betterprogramming.pub/migrating-bevy-can-be-easier-with-semi-automation-here-is-how-1f6e21858e79 +[@HerringtonDarkholme]: https://github.com/HerringtonDarkholme +[ast-grep]: https://github.com/ast-grep/ast-grep +[big-brain]: https://github.com/zkat/big-brain + +## Tooling Updates + +### [Spicy Launcher] + +![demo: switching between Jumpy/Punchy and choosing a verion](spicylauncher.gif) + +[Spicy Launcher] by [@orhun] is a cross-platform launcher +for playing [Spicy Lobster] games. +Supports both command-line and [Tauri]-based graphical interface. + +Currently supported games: [Fish Folk: Jumpy], [Fish Folk: Punchy], +and recently added [Thetawave]. + +Planned features include auto updating games and mods management. + +[Spicy Launcher]: https://github.com/spicylobstergames/SpicyLauncher +[Spicy Lobster]: https://github.com/spicylobstergames +[Fish Folk: Jumpy]: https://github.com/fishfolks/jumpy +[Fish Folk: Punchy]: https://github.com/fishfolks/punchy +[Thetawave]: https://github.com/thetawavegame/thetawave +[@orhun]: https://github.com/orhun +[Tauri]: https://tauri.app + +### [Rerun][rerun] + +![Rerun showing 3D object detections in a 2D view](rerun3d2d.gif) + +[Rerun][rerun] ([Discord][rerun-dis], [GitHub][rerun-gh]) +is an open-source SDK for logging complex visual data paired with a visualizer +for exploring that data over time. While its primary focus is on robotics and +computer vision, it can be useful for all kinds of +rapid prototyping & algorithm development. + +Rerun was shown at the Rust GameDev meetup, +watch the recording [here][rerun-meetup-vid]. + +[v0.6.0][rerun-v0-6-0] is out now! A few of the biggest highlights: + +- You can now show 3D objects in 2D views connected by Pinhole transforms. +- You can quickly view images and meshes with `rerun mesh.obj image.png`. +- The correct to install the rerun binary is now `cargo install rerun-cli`. +- native_viewer is now an opt-in feature of the rerun library, + leading to faster compilation times. +- SDK log calls are now batched on the wire, saving CPU time and bandwidth. +- [Experimental WebGPU support][rerun-wgpu]. + +There's a growing community on [Discord][rerun-dis] +waiting for you to join in case you have any questions, +comments or just want to follow the latest development. +The [GitHub project][rerun-gh] is MIT/Apache +licensed and open to contribute for everyone, +be it with suggestions, bugs or PRs. + +[rerun]: https://rerun.io +[rerun-dis]: https://discord.gg/npTFxYR9 +[rerun-gh]: https://github.com/rerun-io/rerun +[rerun-meetup-vid]: https://youtube.com/watch?v=dVk_kZ9VSDA +[rerun-v0-6-0]: https://github.com/rerun-io/rerun/releases/tag/v0.6.0 +[rerun-wgpu]: https://app.rerun.io/webgpu/index.html + +### [Smashline][smashline] + +[Smashline][smashline] is plugin and a Rust crate aimed at enhancing Smash modding, +more specifically focusing on script mods. Its main purpose is to enable +the replacement of different types of scripts found in Super Smash Bros. Ultimate, +while also offering additional utilities for creating what is known as "code mods" +within the modding community. + +The [Smashline wiki][wiki] provides comprehensive explanations of its core features. + +[smashline]: https://github.com/blu-dev/smashline +[wiki]: https://github.com/blu-dev/smashline/wiki + +### [Ruffle][ruffle] + +![Ruffle dekstop app](ruffle.png) + +[Ruffle] is an open-source Flash Player emulator written in Rust. +It brings Flash Player back to life, running smoothly on all modern systems +and web browsers. + +[This month's updates][ruffle-post] include: + +- Bunch of new fan-favorite AS3 (ActionScript 3)games are now playable. +- Many graphics drawing methods have been fixed and implemented. +- XML support has progressed. +- AS2 (ActionScript 2) has seen progress as well: + Additional XML methods have been implemented. +- The Ruffle desktop app now has an interface. +- Built-in save manager has been added. +- FLV support in progress, Flash content with external video files will be + supported soon. + +[ruffle]: https://ruffle.rs/ +[ruffle-post]: https://ruffle.rs/blog/2023/05/29/progress-report.html + +## Library Updates + +### [blit] + +![blit example: blitting the full sprite](blit.png) + +[blit] is a GPL licensed library for quickly blitting 2D images on a pixel buffer. +After a long stale period development has resumed quite a bit +in the last couple of months. + +The previous big release, [v0.7.0][blit-0-7], saw a big improvement in performance +and API ergonomics. It also introduced interactive WebAssembly examples +[which can be seen here][blit-web-show]. + +The latest big release, [v0.8.0][blit-0-8], is a complete rewrite of the quite old +and admittendly outdated API. A focus has been put on both ergonomics and performance. +There's now many ways of drawing a subsection, tiling, masking and creating +repeating slices of an image on a pixel buffer. + +[blit]: https://github.com/tversteeg/blit +[blit-0-7]: https://github.com/tversteeg/blit/releases/tag/v0.7.0 +[blit-0-8]: https://github.com/tversteeg/blit/releases/tag/v0.8.0 +[blit-web-show]: https://tversteeg.nl/blit/showcase + +### [seldom_state] + +[seldom_state] is a Bevy plugin that adds a `StateMachine` component that you +can add to your entities. The state machine will change the entity's components +based on states, triggers, and transitions that you define. It's useful +for player controllers, animations, simple AI, etc. + +This month, [seldom_state] 0.6 was released: + +- Triggers don't need to be registered! +- MachineState and Trigger no longer require Reflect. +- StateMachine's trans_builder accepts the current state in the closure, so + you have dataflow between states! +- You may add and remove state components manually. +- More versatile on_enter and on_exit events. +- Trigger combinators `not`, `and`, and `or`. +- Transitions have priority in the order they are added. +- You can use EventReader, Local, etc in your triggers! +- Added an `EventTrigger` that triggers on an event. +- StateMachine's set_trans_logging sets whether to log state transitions +- [And more][changelog]! + +Thanks to [Sera] for coauthoring this update! + +[seldom_state]: https://github.com/Seldom-SE/seldom_state +[Sera]: https://github.com/deifactor +[changelog]: https://github.com/Seldom-SE/seldom_state/blob/main/CHANGELOG.md#06-2023-05-07 + +### [Kira] + +[Kira] ([GitHub]) by [@tesselode] is a backend-agnostic library to create +expressive audio for games. + +Kira v0.8 adds support for spatial audio, global modulation sources for +easier and more powerful parameter tweening, compressor and EQ effects, +and more powerful playback and loop region settings. + +_Discussions: +[/r/rust](https://reddit.com/r/rust/comments/13p7x9o/kira_v08)_ + +[Kira]: https://crates.io/crates/kira +[@tesselode]: https://twitter.com/tesselode +[GitHub]: https://github.com/tesselode/kira + +## Other News + + + +- Other game updates: + - [Maginet will soon get a level editor][maginet] with in-editor play support. + - [@NullableEngineer released a vlog][nullable-mmo] about implementing + the first iteration of the network server for their WIP MMO. + - [Idu got a new water system][idu] that is a lot faster to and easier to render. +- Other engine updates: + - [godot-rust got a new website][godot-rust] with latest API docs + and direct links to learning resources and community platforms. + - [Bevy will get WebGPU support][bevy-wgpu] in the next - v0.11 - release. +- Other learning material updates: + - [@PhaestusFox] has posted Bevy-related tutorial videos: + [Herbal-Alchemy 1.4 Update](https://youtube.com/watch?v=MSsuR_6MqwE) + and ["How to make a view cube in Bevy"](https://youtube.com/watch?v=HpAu1LpYNpM). +- Other library updates: + - [grid] is a simple library that provides an easy to use and fast + 2D grid data structure. + - [hexx] v0.6 brings a bunch of new algorithms for hexagonal maps + and overall API improvements. + - [faer] 0.9 brings the non hermitian eigenvalue decomposition + for real and complex matrices and also comes with the release of [qd], + a library for extended precision floating point arithmetic + with faer compatibility. + - [quinn] v0.10 introduces MTU discovery, updates to the latest version + of rustls, improves platform support, and introduces a variety + of new features, performance improvements, and bugfixes + - [funutd] is a 3D procedural texture library running on the CPU that features + different tiling modes, an endless supply of proc-generated self-describing + volumetric textures, Palette generation with Okhsv and Okhsl color spaces, + and an interactive texture explorer. + - [bevy_diagnostics_explorer] is a plugin allowing to visualize diagnostics + (tracing spans) in VSCode. + - [pxo] is a library for working with [Pixelorama] files. + - [frug] is a simple graphics library that was announced this month + along with [some docs][frug_book]. + - [egui] v0.22 brings support for application icons on Windows and Mac, + better dark/light mode detection, and error reporting on the web. + - [egui_tiles] is a tiling layout engine for egui with drag-and-drop and resizing. + +[maginet]: https://twitter.com/evrimzone/status/1658908555582341120 +[nullable-mmo]: https://youtube.com/watch?v=rHM-4vj3uyY +[idu]: https://mastodon.gamedev.place/@johann/110440559190280054 +[godot-rust]: https://mastodon.gamedev.place/@GodotRust/110367270830037001 +[bevy-wgpu]: https://reddit.com/r/rust/comments/13lb0h8/bevy_webgpu +[@PhaestusFox]: https://youtube.com/@PhaestusFox +[grid]: https://reddit.com/r/rust/comments/134l6mk/grid_v0_10 +[hexx]: https://github.com/ManevilleF/hexx/releases/tag/0.6.0 +[faer]: https://reddit.com/r/rust/comments/13ggs7k/faer_09 +[qd]: https://lib.rs/qd +[quinn]: https://github.com/quinn-rs/quinn/releases/tag/0.10.0 +[funutd]: https://github.com/SamiPerttu/funutd +[bevy_diagnostics_explorer]: https://github.com/zaycev/bevy-diagnostics-explorer +[pxo]: https://github.com/appybara13/pxo +[Pixelorama]: https://github.com/Orama-Interactive/Pixelorama +[frug]: https://reddit.com/r/rust/comments/13im07r/introducing_frug +[frug_book]: https://santyarellano.github.io/frug_book +[egui]: https://reddit.com/r/rust/comments/13px5zb/egui_022 +[egui_tiles]: https://github.com/rerun-io/egui_tiles + +## Discussions + + + +- /r/rust: + - ["How does Bevy manage to be so loose with signatures?"][red-bevy-loose] +- /r/rust_gamedev: + - ["Is bevy the best option for a Rust based game engine?"][red-bevy-best] + - ["We're not quite game yet"][red-not-game] + +[red-bevy-loose]: https://reddit.com/r/rust/comments/13rcz4v/how_bevy_so_loose +[red-bevy-best]: https://reddit.com/r/rust_gamedev/comments/13wteyb/is_bevy_best +[red-not-game]: https://reddit.com/r/rust_gamedev/comments/13qt6rq/were_not_quite_game_yet + +## Requests for Contribution + + + +- [bevy_mod_scripting is looking for maintainers][bevy_mod_scripting-help]. +- ['Are We Game Yet?' wants to know about projects/games/resources that + aren't listed yet][awgy]. +- [Graphite is looking for contributors][graphite-contribute] to help build the + new node graph and 2D rendering systems. +- [winit's "difficulty: easy" issues][winit-issues]. +- [Backroll-rs, a new networking library][backroll-rs]. +- [Embark's open issues][embark-open-issues] ([embark.rs]). +- [wgpu's "help wanted" issues][wgpu-issues]. +- [luminance's "low hanging fruit" issues][luminance-fruits]. +- [ggez's "good first issue" issues][ggez-issues]. +- [Veloren's "beginner" issues][veloren-beginner]. +- [A/B Street's "good first issue" issues][abstreet-issues]. +- [Mun's "good first issue" issues][mun-issues]. +- [SIMple Mechanic's good first issues][simm-issues]. +- [Bevy's "good first issue" issues][bevy-issues]. +- [Ambient's "good first issue" issues][ambient-issues]. + +[bevy_mod_scripting-help]: https://github.com/makspll/bevy_mod_scripting/issues/48 +[awgy]: https://github.com/rust-gamedev/arewegameyet#contribute +[graphite-contribute]: https://graphite.rs/contribute +[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22 +[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues +[embark.rs]: https://embark.rs +[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open +[wgpu-issues]: https://github.com/gfx-rs/wgpu/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 +[abstreet-issues]: https://github.com/a-b-street/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 +[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue +[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue +[ambient-issues]: https://github.com/AmbientRun/Ambient/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22 + +------ + +That's all news for today, thanks for reading! + +Want something mentioned in the next newsletter? +[Send us a pull request][pr]. + +Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev] +or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news! + +**Discuss this post on**: +[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/14o566f/rust_gamedev_46), +[Mastodon](https://mastodon.gamedev.place/@rust_gamedev/110640765829636039), +[Twitter](https://twitter.com/rust_gamedev/status/1675242617917829122), +[Discord](https://discord.gg/yNtPTb2). + +[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev +[@rust_gamedev]: https://twitter.com/rust_gamedev diff --git a/content/news/046/meetup.jpg b/content/news/046/meetup.jpg new file mode 100644 index 000000000..593ee36f3 Binary files /dev/null and b/content/news/046/meetup.jpg differ diff --git a/content/news/046/migrate-bevy.png b/content/news/046/migrate-bevy.png new file mode 100644 index 000000000..cad65c781 Binary files /dev/null and b/content/news/046/migrate-bevy.png differ diff --git a/content/news/046/ms80.jpg b/content/news/046/ms80.jpg new file mode 100644 index 000000000..080872a6c Binary files /dev/null and b/content/news/046/ms80.jpg differ diff --git a/content/news/046/nanovoid.gif b/content/news/046/nanovoid.gif new file mode 100644 index 000000000..42b7e79cf Binary files /dev/null and b/content/news/046/nanovoid.gif differ diff --git a/content/news/046/rerun3d2d.gif b/content/news/046/rerun3d2d.gif new file mode 100644 index 000000000..388d20abb Binary files /dev/null and b/content/news/046/rerun3d2d.gif differ diff --git a/content/news/046/ruffle.png b/content/news/046/ruffle.png new file mode 100644 index 000000000..8630528e2 Binary files /dev/null and b/content/news/046/ruffle.png differ diff --git a/content/news/046/spicylauncher.gif b/content/news/046/spicylauncher.gif new file mode 100644 index 000000000..2bc634234 Binary files /dev/null and b/content/news/046/spicylauncher.gif differ diff --git a/content/news/046/stereokit.gif b/content/news/046/stereokit.gif new file mode 100644 index 000000000..43df96e85 Binary files /dev/null and b/content/news/046/stereokit.gif differ diff --git a/content/news/046/strategy-game.png b/content/news/046/strategy-game.png new file mode 100644 index 000000000..54988a371 Binary files /dev/null and b/content/news/046/strategy-game.png differ diff --git a/content/news/046/tglade-windows.gif b/content/news/046/tglade-windows.gif new file mode 100644 index 000000000..f9965ce98 Binary files /dev/null and b/content/news/046/tglade-windows.gif differ diff --git a/content/news/046/tglade.gif b/content/news/046/tglade.gif new file mode 100644 index 000000000..f9965ce98 Binary files /dev/null and b/content/news/046/tglade.gif differ diff --git a/content/news/046/tunnet.jpg b/content/news/046/tunnet.jpg new file mode 100644 index 000000000..18103dfb2 Binary files /dev/null and b/content/news/046/tunnet.jpg differ diff --git a/content/news/046/turtle-time.png b/content/news/046/turtle-time.png new file mode 100644 index 000000000..b671df903 Binary files /dev/null and b/content/news/046/turtle-time.png differ diff --git a/content/news/047/ambient-trees.jpg b/content/news/047/ambient-trees.jpg new file mode 100644 index 000000000..267283a21 Binary files /dev/null and b/content/news/047/ambient-trees.jpg differ diff --git a/content/news/047/bevy-rendering-demystified.png b/content/news/047/bevy-rendering-demystified.png new file mode 100644 index 000000000..7fdddaf94 Binary files /dev/null and b/content/news/047/bevy-rendering-demystified.png differ diff --git a/content/news/047/boytacean.gif b/content/news/047/boytacean.gif new file mode 100644 index 000000000..5c4ebb2bc Binary files /dev/null and b/content/news/047/boytacean.gif differ diff --git a/content/news/047/digital-extinction.jpeg b/content/news/047/digital-extinction.jpeg new file mode 100644 index 000000000..6ceb68ccd Binary files /dev/null and b/content/news/047/digital-extinction.jpeg differ diff --git a/content/news/047/flesh.gif b/content/news/047/flesh.gif new file mode 100644 index 000000000..71cad516b Binary files /dev/null and b/content/news/047/flesh.gif differ diff --git a/content/news/047/godot-rust-gdextension.png b/content/news/047/godot-rust-gdextension.png new file mode 100644 index 000000000..3c3110bee Binary files /dev/null and b/content/news/047/godot-rust-gdextension.png differ diff --git a/content/news/047/index.md b/content/news/047/index.md new file mode 100644 index 000000000..55ee93062 --- /dev/null +++ b/content/news/047/index.md @@ -0,0 +1,512 @@ ++++ +title = "This Month in Rust GameDev #47 - June 2023" +transparent = true +date = 2023-08-01 +draft = false ++++ + + + + + +Welcome to the 47th 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] + +You can follow the newsletter creation process +by watching [the coordination issues][coordination]. +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 +[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination + +- [Announcements](#announcements) +- [Game Updates](#game-updates) +- [Engine Updates](#engine-updates) +- [Learning Material Updates](#learning-material-updates) +- [Tooling Updates](#tooling-updates) +- [Library Updates](#library-updates) +- [Other News](#other-news) + + + +## Announcements + +### [Rust GameDev Meetup \#27][meetup-video] + +[![youtube preview: "blade tasks" slide](meetup.jpg)][meetup-video] + +The 28th Rust Gamedev Meetup took place in June. You can watch the recording +of the meetup [here on Youtube][meetup-video]. + +The schedule: + +- Blade by [@kvark] +- Graphite by [@Keavon] +- Digital Extinction by [@Indy2222] +- Bevy Jam \#3 Games by [@AngelOnFira] + +The meetups take place on the second Saturday of every month via the [Rust +Gamedev Discord server][rust-gamedev-discord] and are also [streamed on +Twitch][rust-gamedev-twitch]. + +[meetup-video]: https://youtube.com/watch?v=1DiA3OYqvqU +[rust-gamedev-discord]: https://discord.gg/yNtPTb2 +[rust-gamedev-twitch]: https://twitch.tv/rustgamedev +[@AngelOnFira]: https://github.com/AngelOnFira +[@kvark]: https://github.com/kvark +[@Indy2222]: https://github.com/Indy2222/ +[@Keavon]: https://github.com/Keavon + +## Game Updates + +### [Flesh] + +{{ image_figure( + alt="flesh preview" + src="flesh.gif" + caption="Intro") }} + +[Flesh] by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation, +an organic/fleshy theme and a unique story. It is implemented using [Tetra]. +The game's development has finished and will be released soon. The last update +before release includes: + +- Intro/Ending/End credits animation. +- Add a variant version of Conway's Game of Life as background. +- Improve effect in the gameplay with distortion shaders. +- Update the demo build with improved graphics and performance. + +[Flesh]: https://store.steampowered.com/app/1660850/Flesh/ +[@im_oab]: https://twitter.com/im_oab +[Tetra]: https://github.com/17cupsofcoffee/tetra + +### [Space Frontiers] + +{{ image_figure( + alt="In-game screenshot of a real-time render of a modular gridmap-based spaceship interior" + src="spacefrontiers.png" + caption="Render achieved with dynamic point lights.") }} + +[Space Frontiers] ([GitHub], [Discord], [Twitter], [Reddit], [Steam Group]) +by [Starwolves] is an online moddable sci-fi action RPG community game +simulating space (and spaceships) in 3D. + +By the end of last year, the client was made with Godot. Shortly after that the +decision was made to replace the Godot project with a [Bevy Engine] client. + +Rust and Bevy are now used for both server and client. +There are a lot of advantages such as sharing libraries and neat code replication, +reducing code overhead. +In fact, both the server and client are now developed in [the same virtual workspace]. + +The client includes a new camera perspective from top-down isometric to 1st person. +A new 3D dynamic gridmap framework has been successfully implemented in ECS. +The prototype includes an in-game map editing tool with the ability to export to +file. +Inspired by the videogame "System Shock". +There is a recently uploaded [showcase video]. + +The project is commercial, [open-source] and has a proprietary license. +There is a milestone for a license change to free open-source. + +[Starwolves.io Bulletin Board] was launched half a year ago. +There are 25~ registrants left that can receive a permanent unique forum group/title. + +_Discussions: [StarWolves.io Bulletin Board]_ + +[Starwolves.io Bulletin Board]: https://starwolves.io +[Starwolves]: https://starwolves.io +[Bevy Engine]: https://bevyengine.org/ +[Space Frontiers]: https://github.com/starwolves/space +[GitHub]: https://github.com/starwolves/space +[open-source]: https://github.com/starwolves/space +[the same virtual workspace]: https://github.com/starwolves/space +[Steam Group]: https://steamcommunity.com/groups/starwolvescommunity +[Discord]: https://discord.gg/yYpMun9CTT +[Twitter]: https://twitter.com/starwolvesstar +[Reddit]: https://reddit.com/u/StarwolvesStar +[showcase video]: https://youtu.be/Qr_in7tUxAM + +### Digital Extinction + +{{ image_figure( + alt="Building Placement in Digital Extinction" + src="digital-extinction.jpeg" + caption="Building Placement in Digital Extinction") }} + +[Digital Extinction] ([GitHub][de-github], [Discord][de-discord], +[Reddit][de-reddit]) by [@Indy2222] is a 3D real-time strategy game made with +[Bevy]. + +The most notable updates are: + +- nightly versions are automatically built and published on + [de-game.org][de-web] and elsewhere, +- significant progress has been made on multiplayer and networking, +- animated arrows on terrain are displayed for selected factories, indicating + the path from the units' spawn points to their delivery locations, +- semi-transparent square markers are drawn on the terrain around selected + buildings, +- health bars are briefly displayed above units and buildings when they take + damage or their health changes, +- the implementation and design of the “Energy” have started to take shape, +- the head-up display (HUD) shows the total battery charge and the number of + selected units and buildings, +- the main theme song plays in a loop, the volume of the music can be configured, +- the aspect ratio of the minimap matches that of the game map, +- the option to invert camera zooming has been added to the configuration, +- the [documentation][de-docs] has been converted to mdBook. + +See [gameplay][de-video] screen recordings on YouTube. + +A more detailed July update is available [here][de-update-09]. + +[Digital Extinction]: https://de-game.org +[de-github]: https://github.com/DigitalExtinction/Game +[de-discord]: https://discord.gg/vHMFuCWGSX +[de-reddit]: https://reddit.com/r/DigitalExtinction +[@Indy2222]: https://github.com/Indy2222 +[Bevy]: https://bevyengine.org +[de-web]: https://de-game.org/ +[de-docs]: https://docs.de-game.org/ +[de-video]: https://youtu.be/aRk65kyIEes +[de-update-09]: https://mgn.cz/blog/de09/ + +### Tribes + +![Tribes preview](tribes.jpg) + +Tribes (working title) by [@uvizhe] is a turn-based strategy game about +tribes of hunters and gatherers. It's being developed using Bevy. + +The [first devlog] introduces the game, outlines its current state and +future plans, accompanied by some thoughts from the developer. + +_Discussions: +[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/14aturs/im_working_on_tribes_turnbased_strategy_game/), +[Twitter](https://twitter.com/uvizhe/status/1669664504198705156), +[Mastodon](https://mstdn.social/@uvizhe/110553604146429627)_ + +[@uvizhe]: https://github.com/uvizhe +[first devlog]: https://uvizhe.im/posts/tribes-p1/ + +### [Way of Rhea][wor] + +[![Way of Rhea](wor.jpg)][wor] + +[Way of Rhea][wor] is a puzzle game with hard puzzles but forgiving +mechanics being produced by [@masonremaley] in a custom Rust engine. +You can support development by [checking out the free demo and wishlisting on Steam][wor] +or [signing up for the mailing list][wor-mail]! + +Recent updates: + +- Puzzle design and layout complete! +- Continued work on polish, working towards a closed beta +- Work continued on native [Linux & Steam Deck port][wor-linux], the port is + unfinished but playable +- Increased staff throw velocity to make it easier to throw staves off ledges +- Various performance improvements (separate spatial hash for interactive objects) +- Way of Rhea will be part of the [Cerebral Puzzle Showcase][wor-showcase] + August 3rd-7th! + +[@masonremaley]: https://twitter.com/masonremaley +[wor]: https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n47 +[wor-mail]: https://anthropicstudios.com/newsletter/signup/tech +[wor-linux]: https://twitter.com/AnthropicSt/status/1683955327711211520 +[wor-showcase]: https://www.cerebralpuzzleshowcase.com/ + +### [Veloren][veloren] + +{{ image_figure( + alt="Veloren visual comparison" + src="veloren.jpg" + caption="Veloren over the years") }} + +[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf +Fortress and Cube World. + +In June, Veloren prepared for an upcoming release coming in July. Work included +various fixes, charms, one-way walls, ip address anonymization in logs, the +addition of the frost gigas boss in game, savanna hut updates, plant creatures, +cyclops, and much more. + +Ongoing work is happening on ship movement, pet commands, Terracotta ruins, +dwarven quarry, coastal towns, clifftown rework, and axe skills. Work is +happening to add physics interactions that increase your height as you're +gliding. This includes thermal and ridge lifts. + +June's full weekly devlogs: "This Week In Veloren...": [#211][veloren-211], [#212][veloren-212]. + +[veloren]: https://veloren.net +[veloren-211]: https://veloren.net/devblog-211 +[veloren-212]: https://veloren.net/devblog-212 + +## Engine Updates + +### [macroquad] + +{{ image_figure( + alt="macroquad" + src="macroquad_0_4.gif" + caption="Macroquad examples rendered by Metal API") }} + +Macroquad got ported to miniquad-0.4, supporting Metal on Mac and IOS. + +On the surface all the macroquad API stayed exactly the same, but with +`use macroquad::miniquad::*` being such a breaking change - major version +number was bumped. Major version bump made possible to fix a few +long-lasting issues, check the [full changelog][macroquad_changelog] +for all the changes. + +[macroquad]: https://github.com/not-fl3/macroquad +[macroquad_changelog]: https://macroquad.rs/articles/macroquad-0-4/ + +### [godot-rust][gd-github] + +![godot-rust GDExtension logo](godot-rust-gdextension.png) + +In the last few weeks of gdext development, the [GDExtension +API][gd-gdextension] breaks in Godot's recently released [4.1 +version][gd-godot4-1]. Migration is mostly done, several FFI bugs have been +addressed on the way. + +The godot-rust book now [has a "Hello World" tutorial][gd-tutorial] + guides on +compatibility and selecting Godot version. + +Noteworthy features: + +- Vector swizzling +- Signals with parameters +- Rust-native APIs for Rect2, Aabb, and Plane +- ToVariant/FromVariant derives +- Godot native structures + +[gd-github]: https://github.com/godot-rust +[gd-gdextension]: https://github.com/godot-rust/gdextension +[gd-tutorial]: https://godot-rust.github.io/book/gdext +[gd-godot4-1]: https://godotengine.org/article/godot-4-1-is-here/ + +## Learning Material Updates + +### Bevy Rendering Demystified + +![Bevy Rendering Demystified Thumbnail](bevy-rendering-demystified.png) + +[@logicprojects] published a [video][Bevy Rendering Demystified] covering the +details of Bevy's rendering systems. Specifically, he covered the engine's +internal implementation of UI Rendering to show how data flows from the ECS +world down to the final wgpu draw calls. + +[@logicprojects]: https://www.youtube.com/@logicprojects + +[Bevy Rendering Demystified]: https://youtu.be/5oKEPZ6LbNE + +### Procedural Trees in Ambient + +![Procedural tree in Ambient](ambient-trees.jpg) + +[@mebyz] authored a set of articles "building mmo-ready procedural trees using +Ambient engine". The three ([1][ambient-trees-1], [2][ambient-trees-2], +[3][ambient-trees-3]) posts cover a week's worth of explorations into simple +pseudo-random procedural ecosystem generation (trees, mushrooms, etc) +system/strategy for Ambient. + +[@mebyz]: https://github.com/mebyz +[ambient-trees-1]: https://medium.com/@emmanuel.botros/webgpu-wasm-rust-building-mmo-ready-procedural-trees-using-ambient-engine-part-1-2359225b592 +[ambient-trees-2]: https://medium.com/@emmanuel.botros/webgpu-wasm-rust-building-mmo-ready-procedural-trees-using-ambient-engine-part-2-60ccce4c6adc +[ambient-trees-3]: https://medium.com/@emmanuel.botros/webgpu-wasm-rust-building-mmo-ready-procedural-trees-using-ambient-engine-part-3-5a217ecdcabe + +## Tooling Updates + +### [Rerun][rerun] + +[Rerun][rerun] ([Discord][rerun-dis], [GitHub][rerun-gh]) is an open-source SDK +for logging complex visual data paired with a visualizer for exploring that data +over time. While its primary focus is on robotics and computer vision, it can be +useful for all kinds of rapid prototyping & algorithm development. + +[v0.7.0][rerun-v0-7-0] is out now, but it turned out a little bit smaller: + +A few of the biggest highlights: + +- Much more powerful transformation logging + - any affine transforms works now! + - supports many more formats and shows them in the viewer as-is +- Better color mapping range detection for images and tensors +- Add support for motion JPEG via the new jpeg_quality parameter to log_image +- Many small improvements to samples & documentation + +There's a growing community on [Discord][rerun-dis] waiting for you to join in +case you have any questions, comments or just want to follow the latest +development. The [GitHub project][rerun-gh] is MIT/Apache licensed and open to +contribute for everyone, be it with suggestions, bugs or PRs. + +[rerun]: https://rerun.io +[rerun-dis]: https://discord.gg/npTFxYR9 +[rerun-gh]: https://github.com/rerun-io/rerun +[rerun-v0-7-0]: https://github.com/rerun-io/rerun/releases/tag/v0.7.0 + +## Library Updates + +### [posh] + +![Example code written with posh, simplified from the hello triangle +example](posh.jpg) + +[`posh`][posh] is a crate that seamlessly integrates a graphics library with an +embedded functional shading language. It is a proof of concept that aims to +demonstrate that graphics programming can be both type-safe and ergonomic. + +With `posh`, shaders are written in plain Rust (with some caveats). Procedural +macros are only required for defining custom vertex and uniform types. + +The core component of `posh` is the `Program` type, which acts as a +bridge between the shading language and the graphics library. This type +represents a compiled shader and serves as the entry point for draw calls. By +explicitly carrying the types `U` (uniform interface), `V` (vertex shader +interface), and `F` (fragment shader interface), `posh` enables static +verification, ensuring that the data provided in draw calls matches the shader's +signature. + +For simplicity, `posh` currently targets OpenGL ES 3.0. Although it is an +experimental project, its authors hope to inspire the community to further +explore how static typing can elegantly bridge the gap between host code and +shader code. + +For more details, check out the [examples][posh-examples] or the authors' [blog +post][posh-blog]. + +[posh]: https://github.com/leod/posh +[posh-examples]: https://github.com/leod/posh/tree/main/examples +[posh-blog]: https://leod.github.io/rust/gamedev/posh/2023/06/04/posh.html + +### [Boytacean][boytacean] + +![Boytacean preview](boytacean.gif) + +[Boytacean][boytacean] by [@joamag] is a web-based Game Boy Color emulator (and +library) written in Rust. + +Major features include: + +- Full Game Boy and Game Boy Color emulation. +- Web (using WebAssembly) and SDL frontends. +- Ultra-fast performance. +- Accurate PPU emulation. +- Game Boy Printer emulation. +- and many others... + +[boytacean]: https://github.com/joamag/boytacean/ +[@joamag]: https://github.com/joamag + +## Other News + + +- Other game updates: + - [Idu][idu] is a game about growing simulated plants, recent updates + include addition of a GPU particle system. + - [Nanovoid][nanovoid] is a 2D tactical space shooter game, most recent features + have been added to the ship editor. + - [Cells][cells] is a singleplayer game inspired by [agar.io][agar]. + - [MS80][ms80] is a game about scavenging parts and creating things with them to + survive alien attacks. MS80 now does basic simulation of thermodynamics. + - [Maginet][maginet] updated their game interface and debuted the editor + update! + - [Combine And Conquer][caq] new release fixes issues with item rendering. + - [rust-drive-ai][rust-drive-ai] is a self driving AI simulation game built in + span of 30 days that uses the Bevy engine. In addition, under the hood the cars + are controlled using neural networks and trained by a genetic algorithm. + - [The Station][station] is a brand new NASA-punk survival game. + - [Turtletime][turtletime] is a multiplayer competitive turtle game built using + the Bevy and Matchbox. + - [Tiny Glade][tinyglade] updated path detailing. + - [Fish Folk][fishfolk] is collection of arcade style multiplayer games where + you dive deep in the ocean! +- Other learning material updates: + - [Game Dev Graphics][gamedevgraphics] posted a series of 3D graphics tutorials + in Rust from scratch. + - [Maciej Główka][maciej glowka] brings updates for map generation to his [Bevy + roguelike tutorial][bevyrogueliketutorial]. + - [Learning Game Dev][learninggamedev] brings a third edition to their tutorials + with building a platformer with Bevy. +- Other engine updates: + - [Bitang][bitang] is a new framework for demoscene productions. +- Other library updates: + - [miniquad][miniquad] now supports GL2/Metal. + - [gecs][gecs] is a new compile-time generated ECS library. + - [nv-flip][nv-flip] library helps you visualize human-noticeable differences + between rendered images. + +[idu]: https://epcc.itch.io/idu +[nanovoid]: https://store.steampowered.com/app/2326430/NANOVOID/ +[cells]: https://github.com/psincf/Cells +[agar]: https://agar.io/ +[ms80]: https://ms80.space/ +[maginet]: https://evrimzone.itch.io/maginet +[caq]: https://martinbucksoftware.itch.io/combine-and-conquer +[rust-drive-ai]: https://github.com/bones-ai/rust-drive-ai +[station]: https://www.youtube.com/watch?v=fecn1qPNu3c +[turtletime]: https://github.com/mikeder/turtletime +[tinyglade]: https://pouncelight.games/tiny-glade/ +[fishfolk]: https://www.kickstarter.com/projects/erlendsh/fish-folk/posts/3841752 +[gamedevgraphics]: https://www.youtube.com/watch?v=Hqi8QREXwrE +[maciej glowka]: https://maciejglowka.com/contact/ +[bevyrogueliketutorial]: https://maciejglowka.com/blog/bevy-roguelike-tutorial-devlog-part-10-room-placement/ +[learninggamedev]: https://affanshahid.dev/posts/learning-game-dev-bevy-3/ +[bitang]: https://github.com/aedm/bitang +[miniquad]: https://github.com/not-fl3/miniquad +[gecs]: https://docs.rs/gecs/latest/gecs/ +[nv-flip]: https://github.com/gfx-rs/nv-flip-rs + +------ + +That's all news for today, thanks for reading! + +Want something mentioned in the next newsletter? +[Send us a pull request][pr]. + +Also, 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/news/047/macroquad_0_4.gif b/content/news/047/macroquad_0_4.gif new file mode 100644 index 000000000..5dc085514 Binary files /dev/null and b/content/news/047/macroquad_0_4.gif differ diff --git a/content/news/047/meetup.jpg b/content/news/047/meetup.jpg new file mode 100644 index 000000000..53b2a39be Binary files /dev/null and b/content/news/047/meetup.jpg differ diff --git a/content/news/047/posh.jpg b/content/news/047/posh.jpg new file mode 100644 index 000000000..37bcd7241 Binary files /dev/null and b/content/news/047/posh.jpg differ diff --git a/content/news/047/spacefrontiers.png b/content/news/047/spacefrontiers.png new file mode 100644 index 000000000..710abc6e8 Binary files /dev/null and b/content/news/047/spacefrontiers.png differ diff --git a/content/news/047/tribes.jpg b/content/news/047/tribes.jpg new file mode 100644 index 000000000..babe393e1 Binary files /dev/null and b/content/news/047/tribes.jpg differ diff --git a/content/news/047/veloren.jpg b/content/news/047/veloren.jpg new file mode 100644 index 000000000..7c405bd4d Binary files /dev/null and b/content/news/047/veloren.jpg differ diff --git a/content/news/047/wor.jpg b/content/news/047/wor.jpg new file mode 100644 index 000000000..138a6c427 Binary files /dev/null and b/content/news/047/wor.jpg differ diff --git a/content/news/048/8bit-duels-game.png b/content/news/048/8bit-duels-game.png new file mode 100644 index 000000000..26f0642ef Binary files /dev/null and b/content/news/048/8bit-duels-game.png differ diff --git a/content/news/048/backend-gpu.png b/content/news/048/backend-gpu.png new file mode 100644 index 000000000..f7fd4acb7 Binary files /dev/null and b/content/news/048/backend-gpu.png differ diff --git a/content/news/048/bevy-ants-simulation.png b/content/news/048/bevy-ants-simulation.png new file mode 100644 index 000000000..43232d55a Binary files /dev/null and b/content/news/048/bevy-ants-simulation.png differ diff --git a/content/news/048/bevy_ssao.jpg b/content/news/048/bevy_ssao.jpg new file mode 100644 index 000000000..2a07c50b0 Binary files /dev/null and b/content/news/048/bevy_ssao.jpg differ diff --git a/content/news/048/bevy_xpbd.gif b/content/news/048/bevy_xpbd.gif new file mode 100644 index 000000000..f0709a0ee Binary files /dev/null and b/content/news/048/bevy_xpbd.gif differ diff --git a/content/news/048/cargo_space.png b/content/news/048/cargo_space.png new file mode 100644 index 000000000..357f2598a Binary files /dev/null and b/content/news/048/cargo_space.png differ diff --git a/content/news/048/colony.png b/content/news/048/colony.png new file mode 100644 index 000000000..c57f32db3 Binary files /dev/null and b/content/news/048/colony.png differ diff --git a/content/news/048/cybergate.jpg b/content/news/048/cybergate.jpg new file mode 100644 index 000000000..306c7686b Binary files /dev/null and b/content/news/048/cybergate.jpg differ diff --git a/content/news/048/flesh.jpg b/content/news/048/flesh.jpg new file mode 100644 index 000000000..64e22ba9b Binary files /dev/null and b/content/news/048/flesh.jpg differ diff --git a/content/news/048/flesh.png b/content/news/048/flesh.png new file mode 100644 index 000000000..3fcc44362 Binary files /dev/null and b/content/news/048/flesh.png differ diff --git a/content/news/048/fyrox-camera.gif b/content/news/048/fyrox-camera.gif new file mode 100644 index 000000000..1938661dc Binary files /dev/null and b/content/news/048/fyrox-camera.gif differ diff --git a/content/news/048/gltf-ibl-sampler.jpeg b/content/news/048/gltf-ibl-sampler.jpeg new file mode 100644 index 000000000..db1ea0a64 Binary files /dev/null and b/content/news/048/gltf-ibl-sampler.jpeg differ diff --git a/content/news/048/hacker.png b/content/news/048/hacker.png new file mode 100644 index 000000000..956b3d0c5 Binary files /dev/null and b/content/news/048/hacker.png differ diff --git a/content/news/048/hanabi.gif b/content/news/048/hanabi.gif new file mode 100644 index 000000000..83374e7d6 Binary files /dev/null and b/content/news/048/hanabi.gif differ diff --git a/content/news/048/iced-incremental.png b/content/news/048/iced-incremental.png new file mode 100644 index 000000000..3ebeb1c49 Binary files /dev/null and b/content/news/048/iced-incremental.png differ diff --git a/content/news/048/idu.jpg b/content/news/048/idu.jpg new file mode 100644 index 000000000..292bee9b0 Binary files /dev/null and b/content/news/048/idu.jpg differ diff --git a/content/news/048/index.md b/content/news/048/index.md new file mode 100644 index 000000000..d556a2141 --- /dev/null +++ b/content/news/048/index.md @@ -0,0 +1,866 @@ ++++ +title = "This Month in Rust GameDev #48 - July 2023" +transparent = true +date = 2023-08-31 +draft = false ++++ + + + + + +Welcome to the 48th 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] + +You can follow the newsletter creation process +by watching [the coordination issues][coordination]. +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 +[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination + +- [Announcements](#announcements) +- [Game Updates](#game-updates) +- [Engine Updates](#engine-updates) +- [Learning Material Updates](#learning-material-updates) +- [Tooling Updates](#tooling-updates) +- [Library Updates](#library-updates) +- [Other News](#other-news) +- [Discussions](#discussions) +- [Requests for Contribution](#requests-for-contribution) + + + +## Announcements + +### [Rust GameDev Meetup \#29][meetup-video] + +[![YouTube preview: "Blade: Advanced Pipeline" slide +showing a texture diagram](meetup.jpg)][meetup-video] + +The 29th Rust Gamedev Meetup took place in July. +You can watch the recording of the meetup [here on YouTube][meetup-video]. +The schedule: + +- [Blade](https://youtu.be/47wamZL5IFw?t=10m15s) by [@kvark] +- [Graphite](https://youtu.be/47wamZL5IFw?t=32m48s) by [@Keavon] +- [Veloren](https://youtu.be/47wamZL5IFw?t=41m27s) by [@AngelOnFira] + +The meetups take place on the second Saturday of every month +via the [Rust Gamedev Discord server][rust-gamedev-discord] +and are also [streamed on Twitch][rust-gamedev-twitch]. + +[rust-gamedev-discord]: https://discord.gg/yNtPTb2 +[rust-gamedev-twitch]: https://twitch.tv/rustgamedev +[meetup-video]: https://youtu.be/47wamZL5IFw +[@kvark]: https://github.com/kvark +[@Keavon]: https://github.com/Keavon +[@AngelOnFira]: https://github.com/AngelOnFira + +## Game Updates + +### [Colony] + +![tiled map with lots of grass and trees, some resources +and a couple of named pawns](colony.png) + +[Colony] by [@ryankopf] is a colony simulator game built with Bevy that +is open source and is in a pre-alpha stage. Similar to other colony simulator games +like Dwarf Fortress or Rimworld, there are units that have their own traits and +can be instructed to perform tasks like farming and chopping trees. + +You can have your units build things, farm stuff, and explore, and the game is soon +to be moving onto adding more content and UI, as core features are being completed. + +_Discussions: [/r/rust](https://reddit.com/r/rust/comments/14p1fiw/colony_sim)_ + +[Colony]: https://github.com/ryankopf/colony +[@ryankopf]: https://github.com/ryankopf + +### [Open Combat][OpenCombat_website] + +{{ image_figure( + alt="OpenCombat completed HUD" + src="opencombat.jpg" + caption="Game HUD is now more complete") }} + +Open Combat ([Website][OpenCombat_website], [GitHub][OpenCombat_github], +[Discord][OpenCombat_discord]) is a real-time tactical game +which takes place during the 2nd World War. + +Some major changes this month: + +- HUD has been filled with a minimap and squad information. +- Multiple issues about zoom and move on map have been fixed. +- A high-definition map has been created. + +Some fixes and improvements have to be done, but the devs are near +to publishing the official demo of the game! + +[OpenCombat_website]: https://opencombat.bux.fr +[OpenCombat_github]: https://github.com/buxx/OpenCombat +[OpenCombat_discord]: https://discord.gg/6P2vtFh2Px + +### [CyberGate][cybergate-yt] + +{{ image_figure( + alt="Universal quic server" + src="cybergate.jpg" + caption="The browser uses webtransport (Left), the native uses quinn (Right)") }} + +CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]), +CyberSoul is developing an ambitious multiplayer project, +utilizing procedural generation and AI to offer a dynamic universe. + +The latest updates to CyberGate include: + +- Implemented a Webtransport Client and a universal quic server. +- A custom game launcher that is reliable and efficient. +- Universal mechanism to save, load, and upgrade the game world from disk. +- Optimized multithreaded evolution algorithms for generating universes. +- Created an accessible editor for fine-tuning component values. + +Participate in Testing and Engage with CyberSoul: [on Discord][cybergate-dis]. + +[cybergate-yt]: https://youtube.com/channel/UClrsOso3Xk2vBWqcsHC3Z4Q +[cybergate-dis]: https://discord.gg/R7DkHqw7zJ + +### [Way of Rhea][wor] + +[![Way of Rhea on SteamDeck](wor-steamdeck.jpg)][wor] + +[Way of Rhea][wor] is a puzzle game with hard puzzles but forgiving +mechanics being produced by [@masonremaley] in a custom Rust engine. +You can support development by [checking out the free demo and wishlisting on Steam][wor] +or [signing up for the mailing list][wor-mail]! + +Recent updates: + +- Way of Rhea now natively supports Linux, and Steam Deck! Mason released a + [writeup on the port here][wor-linux]. +- Way of Rhea was part of the [Cerebral Puzzle Showcase][wor-showcase]. +- Crash handling was improved, and the build process was simplified (necessary + for post-release support). + A fix was landed to [backtrace-rs][wor-backtrace-rs] as part of the + improved crash handling. +- Time controls were released as part of the updated demo. + +[@masonremaley]: https://twitter.com/masonremaley +[wor]: https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n48 +[wor-mail]: https://anthropicstudios.com/newsletter/signup/tech +[wor-showcase]: https://cerebralpuzzleshowcase.com +[wor-linux]: https://anthropicstudios.com/2023/08/21/way-of-rhea-linux +[wor-backtrace-rs]: https://github.com/rust-lang/backtrace-rs/pull/553 + +### [tiny-snake.rs] + +![tiny-snake.rs running in the terminal](tiny_snake.gif) + +[tiny-snake.rs] by [@Rodrigodd] is a terminal snake game, with a minimal binary +size. + +The entire game is implemented in a single file of pure Rust code, with zero +dependencies. All interactions with the system are done through raw syscalls +(so it only runs on Linux, sorry) and the program is completely panic-free +(panic handling increases the binary size by almost 4KiB). + +The game can be compiled using a single `rustc` command, and the resulting +binary is only 2760 bytes. + +_Discussions: [/r/rust](https://reddit.com/r/rust/comments/15d89s5/tinysnakers)_ + +[tiny-snake.rs]: https://github.com/Rodrigodd/tiny-snake.rs +[@Rodrigodd]: https://github.com/Rodrigodd + +### [8bit Duels][8bit-gh] + +![Screenshot featuring the new enemiy: the crow](8bit-duels-game.png) + +[8bit Duels][8bit-gh] ([Discord][8bit-dis]) is a turn-based strategy game made +by [@ThousandthStar]. It has been in development for the past year, +and the release is right around the corner! +A new blog post along with a release Youtube video is coming soon +on [this channel][8bit-yt]. + +This month's update includes a completely remade user interface. +The [devlog][8bit-devlog] covers the change from the [bevy_ui] crate +to [belly], which provides a nice HTML-like syntax for building the UI. +The last devlog post will address the re-implemented UI and the new troop: the Crow! + +The Crow, as seen in the screenshot above, is a hooded bird assassin with two daggers. +It can attack twice per turn, dealing 2 damage each time. The Crow is the last of +the five 8bit Duels characters. + +[@ThousandthStar]: https://github.com/ThousandthStar +[8bit-gh]: https://github.com/ThousandthStar/8bit-duels +[8bit-dis]: https://discord.com/invite/NbBcF4bGU5 +[8bit-yt]: https://youtube.com/channel/UCllwuaF9ac8sNni8v03GomQ +[8bit-devlog]: https://thousandthstar.github.io/posts/8bd/8bd-part7 +[bevy_ui]: https://lib.rs/bevy_ui +[belly]: https://github.com/jkb0o/belly + +### [Ant Colony Simulation][antsim] + +![lots of glowing particles (aka ants) moving to the destination](bevy-ants-simulation.png) + +[Ant Colony Simulation][antsim] depicts an ant colony where the ants +have a simple task: to find food and bring it back to the colony. +To achieve this goal, they use signals called pheromones. +These pheromone signals guide the ants to the food source and back to their colony. + +[@BonesaiDev][bonesai-yt] released a couple of videos about the project: + +- [An overall explanation][antsim-vid-expl] of how it works. +- [A timelapse][antsim-vid-timelapse] of ant colony at 5x speed. +- [2D Bloom showcase timelapse][antsim-vid-timelapse-bloom] with 1k ants. + +The project is written using Bevy. +You can find the source code [on GitHub][antsim]. + +Follow [@BonesaiDev on Twitter][bonesai-twi] or on [YouTube][bonesai-yt] +to receive future updates about this and their other AI simulation projects. + +[antsim]: https://github.com/bones-ai/rust-ants-colony-simulation +[antsim-vid-expl]: https://youtu.be/98pUSZAM_7M +[antsim-vid-timelapse]: https://youtu.be/5xdfTJBMnwI +[antsim-vid-timelapse-bloom]: https://youtu.be/Z4IRY_LKtt8 +[bonesai-twi]: https://twitter.com/BonesaiDev +[bonesai-yt]: https://youtube.com/@bonesai-dev + +### [Cargo Space] + +![Screenshot of an astronaut in front of stars and two galaxies](cargo_space.png) + +[Cargo Space] ([Discord][cargospace_discord]) by +[@johanhelsing][johanhelsing_mastodon] is a co-op 2d space game where you build +a ship and fly it through space looking for new parts, fighting pirates and the +environment. + +This months development was all about making endless procedurally generated +parallaxing space backgrounds, choosing an appropriate rng crate, and making the +implementation seedable and cross-platform deterministic. + +Johan's [devlog entry][cargospace_devlog_7] explains all this in detail, as well +as how distant parallax can be an immersive replacement for ui and minimaps. + +[Cargo Space]: https://helsing.studio/cargospace +[johanhelsing_mastodon]: https://mastodon.social/@johanhelsing +[cargospace_discord]: https://discord.gg/ye9UDNvqQD +[cargospace_devlog_7]: https://johanhelsing.studio/posts/cargo-space-devlog-7 + +### [Veloren][veloren] + +{{ image_figure( + alt="Veloren visual comparison" + src="veloren.jpg" + caption="The 0.15 release party map") }} + +[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf +Fortress and Cube World. + +In July, Veloren released version 0.15! You can read about the release in the +[0.15 blog post][veloren-0-15], and watch the [release party +trailer][veloren-0-15-trailer]. Here are some of the changes in this release: + +- The first world boss, the 'frost giga': seek him out if you dare! +- A new dungeon: Adlet caves. +- Airships can now be used by players. +- Enemy loot is now shared between players. +- A reputation system: if you commit crimes, NPCs will remember it! +- Improved AI: NPCs will talk to players and each other about events in the + world. +- Much richer world simulation: NPCs will migrate and pass on rumours. +- You can now choose your character's starting town. +- A durability and repair system. +- Improved accessibility, performance, bug fixes, and much, much more! + +Work over July includes TCP receive buffer increase, spawn tab completion, loot +changes, translation updates, dwarven quarry ⛏️ (still inactive in game), +coastal town, desert city fixes, CI optimization, and shorter item count texts. +Work is going on to add a web-based translation tool for Veloren. + +July's full weekly devlogs: "This Week In Veloren...": [#213][veloren-213], [#214][veloren-214]. + +[veloren]: https://veloren.net +[veloren-0-15]: https://veloren.net/release-0-15 +[veloren-213]: https://veloren.net/devblog-213 +[veloren-214]: https://veloren.net/devblog-214 +[veloren-0-15-trailer]: https://youtube.com/watch?v=weIK41W3tX0 + +### [Idu][idu-itch] + +![concrete islands, some dirts, water, lots of vines](idu.jpg) + +[Idu][idu-itch] ([Discord][idu_discord]) is a strategic sandbox game about growing +plants that wish to reclaim nature, developed by [Elina Shakhnovich][eli_mastodon] +and [Johann Tael][johann_mastodon] featuring a bespoke Vulkan-based engine in Rust. + +This month [a new demo was released][idu-new-demo]: + +- New water mechanics: instantly fill large pools + and build channels to transport water. +- A climbing plant. +- A new particle system for special effects. +- Swimming and improved climbing out of water. +- Configurable keybindings. + +[idu-itch]: https://epcc.itch.io/idu +[idu_discord]: https://discord.gg/MeGauteMj3 +[eli_mastodon]: https://mastodon.gamedev.place/@eli +[johann_mastodon]: https://mastodon.gamedev.place/@johann +[idu-new-demo]: https://epcc.itch.io/idu/devlog/565550/demo-version-11-vines-swimming-and-magic + +### [MEANWHILE IN SECTOR 80][ms80] + +[![YouTube preview: weapon bench](mis80.jpg)][ms80-vid] + +[MEANWHILE IN SECTOR 80][ms80] ([Discord][shg-dis], [mailing list][shg-news]) +by [Second Half Games][shg-site] is an upcoming third-person +action-engineering space game. + +This month the third update was released, you can [watch][ms80-vid] +or [read it][ms80-text]. Highlights: + +- New engineering system allows inspecting objects around the player, + modifying your equipment using workbenches, + and adding wires between sockets located on different pieces of equipment. +- Improved physics simulation that now features heat radiation and incandescence. + +[shg-site]: https://secondhalf.games +[shg-news]: https://dashboard.mailerlite.com/forms/402073/85466601232532545/share +[shg-dis]: https://discord.gg/A9GHQGNhJX +[ms80]: https://ms80.space +[ms80-text]: https://secondhalf.games/news/2023-07-05-ms80-update-3 +[ms80-vid]: https://youtube.com/watch?v=0wRXX-dRFr + +### [Space Kitty][kitty] + +![GIF from the trailer: 2d space arcade gameplay](kitty.gif) + +[Space Kitty][kitty] by [@ghashy] is a platformer +about a Kitty floating in space in search of crackers. + +> Somewhere in the distant space there are lots of tasty crackers floating around. +> In search of this highly valuable resource there are +> two competing parties - the DOGS and the KITTY. +> One can never say when the contest had begun, but it's clear that to this day +> there is a game for the title of the Great Cracker Collector. +> Every time the cracker is taken the lucky one emits a signal to the base +> about his achievement. +> The KITTY - highly responsible and intelligent creature - always +> sends the exact amount of collected treasures, +> while the DOGS rely on their feelings. +> Some of them truly believe that they got multiple crackers at a time, +> some just can't count, and about honesty of the others one can only guess... + +The source code of the game can be found [on GitHub][kitty-gh]. + +_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/14vormz/spacekitty)_ + +[kitty]: https://ghashy.itch.io/space-kitty +[kitty-gh]: https://github.com/ghashy/Space-Kitty +[@ghashy]: https://ghashy.itch.io + +### [Flesh][flesh] + +![Screenshot of the Steam page](flesh.jpg) + +[Flesh] by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation, +an organic/fleshy theme and a unique story. It is implemented using [Tetra]. + +After almost three years of development, it's finally [out on Steam][flesh]! + +> Dive into a surreal journey as you devour a ship and battle peculiar creatures +> in this 2D side-scrolling bullet hell shmup. +> Unleash your skills, dodge relentless barrages, and uncover hidden mysteries +> in a hand-drawn world of flesh and gore. + +The demo version was also updated, so consider trying the project out yourself. + +_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/15g1aw1/flesh_steam)_ + +[flesh]: https://store.steampowered.com/app/1660850/Flesh +[Tetra]: https://github.com/17cupsofcoffee/tetra +[@im_oab]: https://twitter.com/im_oab + +### [HackeRPG] + +![Screenshot of a level up window asking the player +if they want new GPU, VRM or register](hacker.png) + +[HackeRPG] is a WIP action game where you play as a developer +who needs to fight viruses and bugs with coding in real-time. +The game's features include controlling your character using coding +and expanding your toolset by programming your own functions, variables and daemons. + +[Recent updates][hackerpg-post] include: + +- The first playable prototype is now avalable on itch.io. +- Sound effects. +- Input autocomplete. +- New enemies. + +[Here's a YouTube video][hackerpg-vid] that showcases the current gameplay. + +[HackeRPG]: https://fellow-pablo.itch.io/hackerpg +[hackerpg-vid]: https://youtube.com/watch?v=ZIwcFl0wyx8 +[hackerpg-post]: https://fellow-pablo.itch.io/hackerpg/devlog/563473/002-build + +## Engine Updates + +### [Bevy v0.11][bevy_news] + +![bevy ssao](bevy_ssao.jpg) + +[Bevy][bevy_engine] is a refreshingly simple data-driven game engine built in Rust. +It is [free and open-source][bevy_repo] forever! + +Bevy 0.11 brought many incredible new features. +You can check out the [full release blog post here][bevy_news], +but here are some highlights: + +- [Screen Space Ambient Occlusion (SSAO)](https://bevyengine.org/news/bevy-0-11/#screen-space-ambient-occlusion) +- [Temporal Anti-Aliasing (TAA)](https://bevyengine.org/news/bevy-0-11/#temporal-anti-aliasing) +- [Morph Targets](https://bevyengine.org/news/bevy-0-11/#morph-targets) +- [Robust Contrast Adaptive Sharpening (RCAS)](https://bevyengine.org/news/bevy-0-11/#robust-contrast-adaptive-sharpening) +- [WebGPU Support](https://bevyengine.org/news/bevy-0-11/#webgpu-support) +- [Improved Shader Imports](https://bevyengine.org/news/bevy-0-11/#improved-shader-imports) +- [Parallax Mapping](https://bevyengine.org/news/bevy-0-11/#parallax-mapping) +- [Skyboxes](https://bevyengine.org/news/bevy-0-11/#skyboxes) +- [Schedule-First ECS APIs](https://bevyengine.org/news/bevy-0-11/#schedule-first-ecs-apis) +- [Gizmos](https://bevyengine.org/news/bevy-0-11/#gizmos) +- [ECS Audio APIs](https://bevyengine.org/news/bevy-0-11/#ecs-audio-apis) +- [UI Borders](https://bevyengine.org/news/bevy-0-11/#ui-node-borders) +- [Grid UI Layout](https://bevyengine.org/news/bevy-0-11/#grid-ui-layout) +- [UI Performance Improvements](https://bevyengine.org/news/bevy-0-11/#faster-ui-render-batching) + +_Discussions: +[/r/rust](https://reddit.com/r/rust/comments/14v77m5/bevy_011), +[Hacker News](https://news.ycombinator.com/item?id=36657970), +[Twitter](https://twitter.com/BevyEngine/status/1678122584976797697), +[Mastodon](https://mastodon.social/@bevy/110685755721601977)_ + +[bevy_engine]: https://bevyengine.org +[bevy_news]: https://bevyengine.org/news/bevy-0-11 +[bevy_repo]: https://github.com/bevyengine/bevy + +### [Fyrox][fyrox] + +![GIF showing focusing camera on object in the editor](fyrox-camera.gif) + +[Fyrox][fyrox] ([GitHub][fyrox-src], [Discord][fyrox-dis], [Twitter][fyrox-twi]) +is a game engine that aims to be easy to use and provide a large set +of out-of-the-box features. + +This month [Fyrox v0.31 was released][fyrox-v0-31]. Highlights include: + +- A huge bunch of editor improvements like + the ability to create custom editor plugins, + ability to open multiple scenes, + saving/loading docking manager layout, + and a separate panel for camera preview. +- Inverter node for AI behaviour trees. +- 9-slice image widget. +- Lots of [API docs][fyrox-docs] and [the book][fyrox-book] improvements, + mostly related to UI stuff. + +_Discussions: [/r/rust](https://reddit.com/r/rust/comments/156pq0g/fyrox_0_31)_ + +[fyrox]: https://fyrox.rs +[fyrox-src]: https://github.com/FyroxEngine/Fyrox +[fyrox-dis]: https://discord.com/invite/xENF5Uh +[fyrox-twi]: https://twitter.com/DmitryNStepanov +[fyrox-v0-31]: https://fyrox.rs/blog/post/fyrox-game-engine-0-31 +[fyrox-book]: https://fyrox-book.github.io +[fyrox-docs]: https://docs.rs/fyrox + +## Learning Material Updates + +### Mobile Development with Bevy + +[@Nikl][nikl] spent some time developing a mobile game using Bevy and +documented findings on his [blog][nikls-blog]. [The first post][android-bevy-post] +contains notes on general project setup and some Android specific solutions. + +GitHub workflows were created for automatic builds. +[A guide on how to set up an iOS workflow][ios-workflow] was released at +the end of July. + +[nikl]: https://mastodon.online/@nikl_me +[nikls-blog]: https://nikl.me +[android-bevy-post]: https://nikl.me/blog/2023/notes_on_android_development_using_bevy +[ios-workflow]: https://nikl.me/blog/2023/github_workflow_to_publish_ios_app + +### [Gentle Intro to GPUs for Backend Devs Pt1][backend-gpu] + +![Diagram of WGPU stack from the article](backend-gpu.png) + +[Vladimir Zaytsev][@xyzw_io] released [the first part][backend-gpu] +of a series about introducing backend engineers to GPU programming: + +> In this series of articles, I would like to offer a gentle and popular +> introduction to GPU programming specifically tailored for engineers. +> Whether you’re new to GPU programming or simply want to expand your knowledge, +> we’ve got you covered. +> I’ll explain the fundamentals of GPU programming in a way +> that’s easy to grasp if you’re more accustomed to working with backend services. + +The first part gives a high-level introduction into GPU compute landscape +and walks a reader through a toy GPU program written with wgpu. + +[backend-gpu]: https://xyzw.io/posts/backend-gpu-p1 +[@xyzw_io]: https://twitter.com/xyzw_io + +## Tooling Updates + +### [Rerun][rerun] + +![Rerun showing a large 3D point cloud](rerun.png) + +[Rerun][rerun] ([Discord][rerun-dis], [GitHub][rerun-gh]) is an open-source SDK +for logging complex visual data paired with a visualizer for exploring that data +over time. While its primary focus is on robotics and computer vision, it can be +useful for all kinds of rapid prototyping & algorithm development. + +[v0.8.0][rerun-v0-8-0] and subsequently [v0.8.1][rerun-v0-8-1] are out now! + +A few of the biggest highlights: + +- Pinhole logging is now easier to use in many cases. +- The visualizer can now show coordinate arrows for all affine transforms + within the view. +- Users that build their own Viewer applications can now add fully custom Space Views. +- New optional flush_timeout specifies how long Rerun will wait if a TCP stream + is disconnected during a flush. +- The `RecordingStream` now offers a stateful time API, similar to the Python APIs +- Defaults to 8ms long microbatches instead of 50ms. This makes the default behavior + more suitable for use-cases like real-time video feeds. +- The web viewer now incremental loads .rrd files when streaming over HTTP. #2412 + +There's a growing community on [Discord][rerun-dis] waiting for you to join in +case you have any questions, comments or just want to follow the latest +development. The [GitHub project][rerun-gh] is MIT/Apache licensed and open to +contribute for everyone, be it with suggestions, bugs or PRs. + +[rerun]: https://rerun.io +[rerun-dis]: https://discord.gg/npTFxYR9 +[rerun-gh]: https://github.com/rerun-io/rerun +[rerun-v0-8-0]: https://github.com/rerun-io/rerun/releases/tag/0.8.0 +[rerun-v0-8-1]: https://github.com/rerun-io/rerun/releases/tag/0.8.1 + +### [glTF IBL Sampler UI][gltf-ibl-sampler-egui] + +![UI with field for input file and separate panels +for different output parts](gltf-ibl-sampler.jpeg) + +[glTF IBL Sampler UI][gltf-ibl-sampler-egui] by [@pcwalton] is +an artist-friendly egui frontend that wraps [glTF IBL Sampler][gltf-ibl-sampler] +to generate cubemap skyboxes from panoramas. + +It provides an easy way to generate skyboxes for use in Bevy and other new game engines +that use the modern KTX2 format as their native texture format. +By default, the panorama is split up into base color, diffuse, and specular parts, +with the mipmap levels corresponding to different roughness values of the material. + +[@pcwalton]: https://twitter.com/pcwalton +[gltf-ibl-sampler-egui]: https://github.com/pcwalton/gltf-ibl-sampler-egui +[gltf-ibl-sampler]: https://github.com/KhronosGroup/glTF-IBL-Sampler + +## Library Updates + +### [bevy_xpbd] + +{{ image_figure( + alt="Balls held by string swinging and hitting each other in a Newton's cradle" + src="bevy_xpbd.gif" + caption="Newton's cradle simulated using bevy_xpbd") }} + +[bevy_xpbd] by [@Jondolf] is a 2D and 3D physics engine based on +Extended Position Based Dynamics for the Bevy game engine. +It uses Bevy's Entity Component System (ECS) directly for the simulation data +and logic, which makes the design and API feel better integrated into Bevy while +avoiding the overhead associated with copying lots of data to a separate data +structure like in many other physics engines such as bevy_rapier. + +In mid-July, bevy_xpbd 0.2 was released, featuring: + +- Spatial queries (ray casting, shape casting, point projection, intersection tests); +- Bevy 0.11 support; +- Improved scheduling; +- Velocity damping; +- Gravity scale; +- Locking translational and rotational axes; + +and much more. You can find more details in the +[release post][bevy-xpbd-post] and [changelog][bevy-xpbd-changelog]. + +A lot of work was also done during the rest of July. The physics debug renderer +was improved, collision stability issues were significantly reduced, external +impulses were added, and Bevy's own `Transform`s can now be used directly +for moving bodies. The narrow phase part of collision detection was also +refactored into a separate plugin, which makes multithreading and several +upcoming features much easier to implement while also improving modularity. + +_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/14zr5i5/bevy_xpbd_02)_ + +[bevy_xpbd]: https://github.com/Jondolf/bevy_xpbd +[@Jondolf]: https://github.com/Jondolf +[bevy-xpbd-post]: https://joonaa.dev/blog/03/bevy-xpbd-0-2-0 +[bevy-xpbd-changelog]: https://github.com/Jondolf/bevy_xpbd/releases/tag/v0.2.0 + +### [Sparsey] + +[Sparsey] by [@LechintanTudor] is a fast and flexible Entity Component System +based on sparse sets. + +The latest release, v0.11.0, improves the performance of adding and removing +components from entities and adds new functions for running systems that only +borrow data from one of World, Resources or SyncResources. + +[Sparsey]: https://github.com/LechintanTudor/sparsey +[@LechintanTudor]: https://github.com/LechintanTudor + +### [Hanabi] + +{{ image_figure( + alt="Glowing particles circling and raising up" + src="hanabi.gif" + caption="Hanabi effect entirely simulated on GPU thanks to the new Expression API of v0.7") }} + +The [Hanabi] library ([GitHub][hanabi-github], [docs.rs][hanabi-docs]) is a +modern VFX library for the [Bevy game engine][bevy]. It focuses on scale to produce +stunning visual effects (VFX) in real time, offloading most of the work to +the GPU (compute shaders), with minimal CPU intervention. The design is inspired +by modern particle systems found in other industry-leading game engines. + +This month, [Hanabi] saw its biggest release so far. +Version 0.7 of Hanabi not only brings support for Bevy 0.11, +but also adds a whole new Expression API +to provide a new level of customizing for VFX authors. +With expressions, developers can combine simple building blocks +like simulation parameters (`time`, `delta_time`), +effect properties (user-defined variables controlled from CPU), +and math operators (`add`, `mul`, `cos`, ...), +to directly modify each attribute of a particle (position, velocity, ...) +and form complex behaviors with complete control. +The expression API complements and extends the existing `Modifier`-based workflow +to achieve even more complex effects. + +This release also marks a major stepping stone +toward the ability to build a visual editor (node graph) +to build and tweak visual effects in real time. + +Other changes include the ability to set a screen-space size for particles, +and a new `KillSphereModifier` to confine particles +to the inside or the outside of a sphere. +See the [CHANGELOG][hanabi-changelog] for all details. + +[Hanabi]: https://crates.io/crates/bevy_hanabi +[hanabi-github]: https://github.com/djeedai/bevy_hanabi +[hanabi-docs]: https://github.com/djeedai/bevy_hanabi +[bevy]: https://bevyengine.org +[hanabi-changelog]: https://github.com/djeedai/bevy_hanabi/blob/v0.7.0/CHANGELOG.md + +### [Iced][iced] + +{{ image_figure( + alt="olf primitives gradually fade out and damaged regions +are marked with red rectangles" + src="iced-incremental.png" + caption="Visualisation of damaged regions during the incremental rendering") }} + +[Iced][iced] is a Rust GUI library focused on simplicity and type safety. + +[Iced v0.10][iced-v0-10] is a huge release that brings a lot of updates. +Some highlights: + +- Huge improvements to the text handling strategy + thanks to the adoption of [cosmic-text]. +- A new CPU-only software renderer based on [tiny-skia]. +- Runtime renderer fallback. +- Configurable LineHeight support for text widgets. +- Nested overlays. +- Backend-specific primitives. +- Offscreen rendering & screenshots. +- Gradients for backgrounds. +- ComboBox widget. + +_Discussions: [/r/rust](https://reddit.com/r/rust/comments/15e82lr/iced_0_10)_ + +[iced]: https://iced.rs +[iced-v0-10]: https://github.com/iced-rs/iced/releases/tag/0.10.0 +[cosmic-text]: https://github.com/pop-os/cosmic-text +[tiny-skia]: https://github.com/RazrFalcon/tiny-skia + +## Other News + + + +- Other game updates: + - [Robo Instructus][robo-steam] was released 4 year ago \- + [Alex Butler shared an article][robo-post] about game's updates, stats, + and user feedback from the last year. + - [snaked] by [@kuviman] is a reversed snake game where you play as food. + - [@Syn9Dev] shared a couple of updates about their retro JRPG: + [battle inventory](https://twitter.com/Syn9Dev/status/1676082920182755332) + and [cave bugs enemies](https://twitter.com/Syn9Dev/status/1676969827980935172). + - [Sulis] v1.0 [was released this month][sulis-1]. + - [@martin-t resumed developemnt of RecWars][recwars]. + - [Vladimir Zaytsev posted a video][colonysim] of his WIP colony sim + showcasing the early progress on construction mechanics. + - [mochia.net] is a virtual pet site inspired by Neopets, + with a backend written in Rust. + - [@dobkeratops shared an update on their WIP shooter game][rusty-shooter] + featuring lighting tweaks and vehicle turrets. + - [Maginet][maginet] added an undo button and preparing for Steam release. + - [PatchGames started working on a new city building game][patchgames-vid]. +- Other engine updates: + - [godot-rs now supports Godot 4.1][godot-rs-4-1]. + - [ggez v0.9][ggez-v0-9] mostly brings slight API tweaks and bugfixes. + The devs also shared their plans for ggez v10: 3d support, async asset loading, + and coroutines. +- Other learning material updates: + - [GitGhillie shared an article][blender-bevy-ed] about using Blender + as a level editor for Bevy. + - [PhaestusFox released more Bevy tutorials on YouTube][@PhaestusFox]: + mostly about Bevy v0.11, Bevy's UI plugins, and Rapier integration. +- Other tooling updates: + - [Internet Archive expands its Flash support using Ruffle.][ruffle] +- Other library updates: + - [bevy_vello] is a Bevy plugin that provides rendering support for [lottie] + animations and SVGs on Bevy using [Vello] and [Velato]. + - [hexx v0.8][hexx-0-8] release adds a hexmod representation and resolution system. + - [cuicui_layout] is a dumb layout algorithm you can rely on, + built for and with Bevy. + - [renet v0.0.13][renet] slightly improves the API and brings a couple of bugfixes. + +[robo-steam]: https://store.steampowered.com/app/1032170/Robo_Instructus +[robo-post]: https://blog.roboinstruct.us/2023/07/16/4-years-old.html +[snaked]: https://kuviman.itch.io/snaked +[@kuviman ]: https://github.com/kuviman +[@Syn9Dev]: https://twitter.com/Syn9Dev +[sulis]: https://sulisgame.com +[sulis-1]: https://github.com/Grokmoo/sulis/releases/tag/1.0.0 +[colonysim]: https://reddit.com/r/rust_gamedev/comments/14t8xgw/colonysim +[recwars]: https://reddit.com/r/rust_gamedev/comments/1548teg/resumed_recwars +[mochia.net]: https://reddit.com/r/rust/comments/15c0j97/a_virtual_pet_site +[rusty-shooter]: https://reddit.com/r/rust_gamedev/comments/14wsnhx/rust_shooter_update +[maginet]: https://twitter.com/evrimzone/status/1681302065069559812 +[patchgames-vid]: https://twitter.com/PatchGamesStdio/status/1677369018225680397 + +[godot-rs-4-1]: https://mastodon.gamedev.place/@GodotRust/110669301088668526 +[ggez-v0-9]: https://reddit.com/r/rust_gamedev/comments/14v6x3z/ggez_news_0_9 + +[blender-bevy-ed]: https://itch.io/blog/564971/blender-to-bevy-workflow-physics-props +[@PhaestusFox]: https://youtube.com/@PhaestusFox + +[ruffle]: https://reddit.com/r/rust/comments/14zvk2l/internet_archive_expands_flash_support + +[bevy_vello]: https://github.com/vectorgameexperts/bevy_vello +[lottie]: https://lottiefiles.com/what-is-lottie +[Vello]: https://github.com/linebender/vello +[Velato]: https://github.com/linebender/velato +[cuicui_layout]: https://github.com/nicopap/cuicui_layout +[renet]: https://github.com/lucaspoffo/renet/releases/tag/0.0.13 +[hexx-0-8]: https://github.com/ManevilleF/hexx/releases/tag/0.8.0 + +## Discussions + + + +- /r/rust_gamedev: + - ["Data Oriented architectures other than ECS?"][red-dod-no-ecs] + +[red-dod-no-ecs]: https://reddit.com/r/rust_gamedev/comments/159zfye/data_oriented_architectures_other_than_ecs + +## Requests for Contribution + + + +- [bevy_mod_scripting is looking for maintainers][bevy_mod_scripting-help]. +- ['Are We Game Yet?' wants to know about projects/games/resources that + aren't listed yet][awgy]. +- [Graphite is looking for contributors][graphite-contribute] to help build the + new node graph and 2D rendering systems. +- [winit's "difficulty: easy" issues][winit-issues]. +- [Backroll-rs, a new networking library][backroll-rs]. +- [Embark's open issues][embark-open-issues] ([embark.rs]). +- [wgpu's "help wanted" issues][wgpu-issues]. +- [luminance's "low hanging fruit" issues][luminance-fruits]. +- [ggez's "good first issue" issues][ggez-issues]. +- [Veloren's "beginner" issues][veloren-beginner]. +- [A/B Street's "good first issue" issues][abstreet-issues]. +- [Mun's "good first issue" issues][mun-issues]. +- [SIMple Mechanic's good first issues][simm-issues]. +- [Bevy's "good first issue" issues][bevy-issues]. +- [Ambient's "good first issue" issues][ambient-issues]. + +[bevy_mod_scripting-help]: https://github.com/makspll/bevy_mod_scripting/issues/48 +[awgy]: https://github.com/rust-gamedev/arewegameyet#contribute +[graphite-contribute]: https://graphite.rs/contribute +[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22 +[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues +[embark.rs]: https://embark.rs +[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open +[wgpu-issues]: https://github.com/gfx-rs/wgpu/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 +[abstreet-issues]: https://github.com/a-b-street/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 +[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue +[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue +[ambient-issues]: https://github.com/AmbientRun/Ambient/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22 + +------ + +That's all news for today, thanks for reading! + +Want something mentioned in the next newsletter? +[Send us a pull request][pr]. + +Also, 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/news/048/kitty.gif b/content/news/048/kitty.gif new file mode 100644 index 000000000..fc168b636 Binary files /dev/null and b/content/news/048/kitty.gif differ diff --git a/content/news/048/meetup.jpg b/content/news/048/meetup.jpg new file mode 100644 index 000000000..8c4e21c19 Binary files /dev/null and b/content/news/048/meetup.jpg differ diff --git a/content/news/048/mis80.jpg b/content/news/048/mis80.jpg new file mode 100644 index 000000000..9065ec270 Binary files /dev/null and b/content/news/048/mis80.jpg differ diff --git a/content/news/048/opencombat.jpg b/content/news/048/opencombat.jpg new file mode 100644 index 000000000..a6db782f3 Binary files /dev/null and b/content/news/048/opencombat.jpg differ diff --git a/content/news/048/rerun.png b/content/news/048/rerun.png new file mode 100644 index 000000000..1235c325c Binary files /dev/null and b/content/news/048/rerun.png differ diff --git a/content/news/048/tiny_snake.gif b/content/news/048/tiny_snake.gif new file mode 100644 index 000000000..a6737e090 Binary files /dev/null and b/content/news/048/tiny_snake.gif differ diff --git a/content/news/048/veloren.jpg b/content/news/048/veloren.jpg new file mode 100644 index 000000000..f60f4d504 Binary files /dev/null and b/content/news/048/veloren.jpg differ diff --git a/content/news/048/wor-steamdeck.jpg b/content/news/048/wor-steamdeck.jpg new file mode 100644 index 000000000..2d4796b6a Binary files /dev/null and b/content/news/048/wor-steamdeck.jpg differ diff --git a/content/news/049/arsmilitaris.png b/content/news/049/arsmilitaris.png new file mode 100644 index 000000000..219a7bdf7 Binary files /dev/null and b/content/news/049/arsmilitaris.png differ diff --git a/content/news/049/cybergate.gif b/content/news/049/cybergate.gif new file mode 100644 index 000000000..a2c4c0b68 Binary files /dev/null and b/content/news/049/cybergate.gif differ diff --git a/content/news/049/graviton.gif b/content/news/049/graviton.gif new file mode 100644 index 000000000..45a4a0bb3 Binary files /dev/null and b/content/news/049/graviton.gif differ diff --git a/content/news/049/index.md b/content/news/049/index.md new file mode 100644 index 000000000..2b09912d1 --- /dev/null +++ b/content/news/049/index.md @@ -0,0 +1,406 @@ ++++ +title = "This Month in Rust GameDev #49 - August 2023" +transparent = true +date = 2023-11-16 +draft = false ++++ + + + + + +Welcome to the 49th 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] + +You can follow the newsletter creation process +by watching [the coordination issues][coordination]. +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 +[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination + +- [Announcements](#announcements) +- [Game Updates](#game-updates) +- [Engine Updates](#engine-updates) +- [Learning Material Updates](#learning-material-updates) +- [Tooling Updates](#tooling-updates) +- [Library Updates](#library-updates) +- [Other News](#other-news) + + + +## Announcements + +It's been a while, huh? This newsletter is coming to you with a delay because +the project cost too much maintainer burden and was put on hold for a while. +Since then, we have had some restructuring and are back now, starting this month! +The exact details will be part of April's newsletter, scheduled for release on May 3rd (just 5 days from now!) +See you all then! + +## Game Updates + +### [Graviton - The Great Sand Simulator][graviton-steam] + +![Graviton Sand Simulator Image](graviton.gif) + +[Graviton - The Great Sand Simulator][graviton-website] +([Discord][graviton-discord], [Youtube][graviton-youtube]) +by [@hakolao] is a falling sand simulator in which you can define +your own interactive sand rules. + +Continuing the developer's exploration into GPU sand simulation +the app has been recently taken to another level with a complete rewrite. +Now, with some [training][graviton-docs], +you can program your own rules for the sand. +Many example sands are provided from acid and blood to the classic +Game of Life. + +Recent updates include: + +- Customizable sand with programmable rules. +- [Shape & Mirror Draw Modes][graviton-youtube-mirror]. +- New UI, graphics and render modes. +- Gif and Image export. +- Image import. + +You can support the development by purchasing or wishlisting on +[Steam][graviton-steam]. + +[@hakolao]: https://github.com/hakolao +[graviton-discord]: https://discord.gg/3MyPaDagsd +[graviton-youtube]: https://youtube.com/watch?v=X_O90KyEt8o +[graviton-steam]: http://s.team/a/2137280 +[graviton-website]: https://www.gravitongame.art/ +[graviton-docs]: https://docs.gravitongame.art/Tutorial +[graviton-youtube-mirror]: https://youtube.com/watch?v=cOPy4Shqn8U + +### [Tunnet][tunnet-itch] + +![Tunnet screenshot showcasing the recent visual enhancements](tunnet.jpg) + +Tunnet ([Steam][tunnet-steam], [itch.io][tunnet-itch]) is an upcoming short +puzzle/exploration game about digging tunnels and building computer networks. + +In August, [a new version of the demo build has been released][tunnet-post]. +Here are the most notable updates: + +- The game is now better optimized to run smoothly on the Steam Deck. +- Some of the textures have been revamped and are now slightly more detailed. +- The animations of the character portraits have been improved. +- Several minor quality-of-life improvements like the ability to sprint have + been made. +- A basic egui-based crash reporter will now be displayed when the game process + ends unexpectedly. + +[tunnet-itch]: https://puzzled-squid.itch.io/tunnet +[tunnet-steam]: https://store.steampowered.com/app/2286390/Tunnet +[tunnet-post]: https://puzzled-squid.itch.io/tunnet/devlog/580255/devlog-2-optimizations + +### [Oort] + +{{ image_figure( + alt="Asteroids-like vector graphics with ships and missiles +made out of simple geometric forms" + src="oort.png" + caption="A fleet of ships") }} + +[Oort] ([GitHub][oort-gh], [Discord][oort-dis]) by [@rlane] is a programming +game where you write Rust code to control spaceships in combat against other +players. Your code needs to manage the thrusters, guns, missiles, comms, and +radar of each ship in your fleet. There's a series of tutorials where you can +solve key problems one by one, such as leading moving targets or missile +guidance. The game runs in your browser via WebAssembly. + +Oort has started running weekly tournaments and the AIs have gotten more and more +sophisticated each time. Check out this recent [tournament writeup][oort-tournament] +where the top players discuss their strategies. + +_Discussions: [r/rust](https://reddit.com/r/rust/comments/167qyn0/oort)_ + +[Oort]: https://oort.rs +[oort-gh]: https://github.com/rlane/oort3 +[oort-dis]: https://discord.gg/vYyu9EhkKH +[@rlane]: https://github.com/rlane +[oort-tournament]: https://github.com/rlane/oort3/wiki/Tournament-Writeup-2023%E2%80%9009%E2%80%9011 + +### [Tiny Glade] + +![A vibrant fantasy castle in a lush forest glade](tinyglade.jpg) + +[Tiny Glade] ([Twitter][tglade-twi]) +is a small relaxing game about doodling castles. + +This month, Tiny Glade was featured in the +[Future Games Show August Showcase][tglade-fgs] with an exclusive new trailer. + +The [trailer and a number of accompanying screenshots][tglade-post] demonstrate +recent changes in the game, and especially show off the new global illumination +and [dynamic time passage][tglade-tod]. + +[Tiny Glade]: https://store.steampowered.com/app/2198150/Tiny_Glade +[tglade-twi]: https://twitter.com/PounceLight +[tglade-post]: https://store.steampowered.com/news/app/2198150/view/3673302243803533512 +[tglade-fgs]: https://www.gamesradar.com/tiny-glade-fgs-gamescom-2023/ +[tglade-tod]: https://twitter.com/h3r2tic/status/1694442717252661448 + +### [Veloren][veloren] + +{{ image_figure( + alt="Veloren a group of friends" + src="veloren.jpg" + caption="A group of friends") }} + +[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf +Fortress and Cube World. + +In August, Veloren saw a network library update, new locations in the character +selection screen, the implementation of a new portal graphic, and numerous +translation updates. Moreover, improvements were made to the airship fixes, loot +balancing, and group chat issues. There have also been upgrades to the +dependency, a README update, and tweaks to the buff death message. + +Ongoing projects currently in the works include the addition of Phoenix +abilities, NPC arenas, frost Giga attacks, compasses, and a banking storage +system. Other upcoming updates include an enhancement to the windmills, CI +scripts, saving window size, the selection of a single-player world, the +addition of lava material, and improvements to the weather network protocol. +Work is also ongoing on ship movement, pet commands, Terracotta ruins, dwarven +quarry, coastal towns, clifftown rework, and axe skills. They are also planning +to implement physics interactions that increase your height when gliding, +including the introduction of thermal and ridgelines. + +August's full weekly devlogs: "This Week In Veloren...": [#216][veloren-216]. + +[veloren]: https://veloren.net +[veloren-216]: https://veloren.net/devblog-216 + +### [CyberGate][cybergate-yt] + +{{ image_figure( + alt="GIF of a player attacking a spherical enemy: one window is active, + the other shows the same view but a menu overlay on top" + src="cybergate.gif" + caption="Two client windows controlling the same pawn simultaneously.") }} + +CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]), +CyberSoul is developing an ambitious multiplayer project, +utilizing procedural generation and AI to offer a dynamic universe. + +Tech Progress: + +- Complete game framework overhaul. +- Addressed engine limitations. +- Upgraded game tools and utilities. +- Introduced Cosmos APIs for universe management. +- Redesigned privacy mechanisms. +- New character authentication system. +- Persistent player data. +- Player Accounts: Login, Register, Verify, Guests. + +Also, this month's gameplay changes include +characters remaining active despite a client's closure +and saved player inventory, achievements, and settings. + +[cybergate-yt]: https://youtube.com/channel/UClrsOso3Xk2vBWqcsHC3Z4Q +[cybergate-dis]: https://discord.gg/R7DkHqw7zJ + +## Engine Updates + +### [goku] + +[goku] ([Discord][goku-dis]) by [@ladroid] is a new 2D Rust game engine +backed by SDL2. It's currently compatible with Windows and WASM +and features [multi-language (Spa, Fra, Ger, Jpn) docs][goku-docs]. + +Quick Peek: + +- Sprite sheets loading and animation support. +- Basic particle effects. +- Point, spot, and ambient lights. +- UI layer with ready widgets like buttons, checkboxes, and sliders. +- Audio support backed by SDL2 Mixer. +- Gamepad input support. +- Tile system and JSON format for describing scenes. +- Built-in support for parallax backgrounds. +- Simple timing and frame management utils. +- Behavior tree AIs. + +_Discussions: [/r/rust](https://reddit.com/r/rust/comments/165luwu/intro_goku)_ + +[goku]: https://github.com/ladroid/goku +[@ladroid]: https://github.com/ladroid +[goku-docs]: https://lados-organization.gitbook.io/goku +[goku-dis]: https://discord.gg/9TAMqdRyED + +## Learning Material Updates + +### [Failing to build P2P Multiplayer Pong with Bevy][chrisbiscardi-vid1] + +[![multiplayer-pong](multiplayer-pong-fail.jpg)][chrisbiscardi-vid1] + +[@chrisbiscardi] published a [video][chrisbiscardi-vid1] covering +P2P multiplayer games with rollback networking and physics. +This video dives into what makes it difficult and what parts +work out of the box before identifying better potential paths to take in the future. + +_Discussions: [Mastodon](https://hachyderm.io/@chrisbiscardi/110934091254135119)_ + +[chrisbiscardi-vid1]: https://youtube.com/watch?v=wpx9qhKEuP8 +[@chrisbiscardi]: https://twitter.com/chrisbiscardi + +### Mobile Development with Bevy + +[@Nikl][nikl] published two blog posts on the topic of mobile development +using Bevy. [The first post][mobile-bevy-post] concentrates on getting +builds ready for the Apple and Google App stores. It outlines how to +use the tool [x-build][x-build] to create Android App bundles and some +required changes to get iOS builds accepted by the App store. + +[A second post][android-workflow] documents how to set up and configure +a GitHub workflow to automate releases of a Bevy application to the +Google Play Store. + +[nikl]: https://mastodon.online/@nikl_me +[x-build]: https://github.com/rust-mobile/xbuild/ +[mobile-bevy-post]: https://nikl.me/blog/2023/notes_on_mobile_development_with_bevy_2 +[android-workflow]: https://nikl.me/blog/2023/github_workflow_to_publish_android_app + +## Tooling Updates + +### [Space editor][space_editor] + +![Space editor window with opened level](space_editor.png) + +[Space editor][space_editor] is an editor designed for Bevy engine +that simplifies level and object template creation. Here are its key features: + +- Intuitive UI is built on top of bevy-inspector-egui and egui-gizmo + to easy objects manipulate. +- It supports the bevy_xpbd physics library, + making customizing collider positions faster than ever. +- Run your levels directly from the editor. + This enables quick and efficient development iteration. +- Save your levels and object templates in the standard Bevy scene format + and spawn in game with just one line of code. +- Many custom structures that allow you to customize saved scenes + equally conveniently, both via gui and directly editing the saved text file. + +The [Github project][space_editor] is free for use +and open to contributions from everyone, be it with suggestions, bugs or PRs. + +[space_editor]: https://github.com/rewin123/space_editor + +## Library Updates + +### [Dexterous Developer][dexterous_developer] + +[Dexterous Developer][dexterous_developer] by [@lee-orr] +is an experimental hot-reload system for the [Bevy] game engine. +Features: + +- Define the reloadable areas of your game explicitly \- which can include + systems, components, and resources (with some limitations). +- Reset resources to a default or pre-determined value upon reload. +- Serialize/deserialize your reloadable resources & components, allowing you to + evolve their schemas so long as they are compatible with the de-serializer. +- Mark entities to get removed on hot reload. +- Run systems after hot-reload. +- Create functions to set up & tear down upon either entering/exiting a state + or on hot reload. +- Only includes any hot reload capacity in your build + when you explicitly enable it - such as by using the CLI launcher. +- Cross-platform/cross-device hot reload - run a "hot reload server" + on a dev environment, and execute the application elsewhere. + +The library is quite new and currently known issues include: +mobile/WASM support and the need to pre-define events & states. + +[dexterous_developer]: https://github.com/lee-orr/dexterous_developer +[@lee-orr]: https://github.com/lee-orr +[Bevy]: https://bevyengine.org + +### [nanogltf] + +{{ image_figure( + alt='The "DamagedHelmet" sample model' + src="nanogltf-helmet.gif" + caption="nanogltf+miniquad glTF viewer") }} + +[nanogltf] by [@not-fl3] is a minimalist [nanoserde]-based [glTF][gltf] +parser library that can load most of the glTF's [sample models][gltf-models] +and fairly complex Blender exported scenes. + +> Macroquad used to be notoriously bad at 3d. nanogltf is a part of a big +> macroquad overhaul with a goal to make it suitable for, at least, +> simple low-poly 3d games. + +nanogltf comes with a a GL2+/Metal glTF miniquad-based +[viewer example][nanogltf-view]. + +[nanogltf]: https://github.com/not-fl3/nanogltf +[nanogltf-view]: https://github.com/not-fl3/nanogltf/tree/master/examples/viewer +[nanoserde]: https://reddit.com/r/rust/comments/hfru5a/nanoserde_cut_50s_of_build_time +[@not-fl3]: https://github.com/not-fl3 +[gltf-models]: https://github.com/KhronosGroup/glTF-Sample-Models +[glTF]: https://khronos.org/gltf + +## Other News + + + +- Other game updates: + - [Tribes][tribes-devlog] got multiplayer support, new art and economics rework. + +[tribes-devlog]: https://uvizhe.im/posts/tribes-p2 + +------ + +That's all news for today, thanks for reading! + +Want something mentioned in the next newsletter? +[Send us a pull request][pr]. + +Also, 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/news/049/multiplayer-pong-fail.jpg b/content/news/049/multiplayer-pong-fail.jpg new file mode 100644 index 000000000..ba6bcf68f Binary files /dev/null and b/content/news/049/multiplayer-pong-fail.jpg differ diff --git a/content/news/049/nanogltf-helmet.gif b/content/news/049/nanogltf-helmet.gif new file mode 100644 index 000000000..ce2cde432 Binary files /dev/null and b/content/news/049/nanogltf-helmet.gif differ diff --git a/content/news/049/oort.png b/content/news/049/oort.png new file mode 100644 index 000000000..b892287ad Binary files /dev/null and b/content/news/049/oort.png differ diff --git a/content/news/049/space_editor.png b/content/news/049/space_editor.png new file mode 100644 index 000000000..9027b49dc Binary files /dev/null and b/content/news/049/space_editor.png differ diff --git a/content/news/049/tinyglade.jpg b/content/news/049/tinyglade.jpg new file mode 100644 index 000000000..5a0e08768 Binary files /dev/null and b/content/news/049/tinyglade.jpg differ diff --git a/content/news/049/tunnet.jpg b/content/news/049/tunnet.jpg new file mode 100644 index 000000000..59b69335d Binary files /dev/null and b/content/news/049/tunnet.jpg differ diff --git a/content/news/049/veloren.jpg b/content/news/049/veloren.jpg new file mode 100644 index 000000000..8a42567a7 Binary files /dev/null and b/content/news/049/veloren.jpg differ diff --git a/content/news/050/OpenCombat202404.jpg b/content/news/050/OpenCombat202404.jpg new file mode 100644 index 000000000..dca23f61e Binary files /dev/null and b/content/news/050/OpenCombat202404.jpg differ diff --git a/content/news/050/index.md b/content/news/050/index.md new file mode 100644 index 000000000..177824dca --- /dev/null +++ b/content/news/050/index.md @@ -0,0 +1,371 @@ ++++ +title = "This Month in Rust GameDev #50 - April 2024" +transparent = true +date = 2024-05-03 +draft = false ++++ + + + + + +Welcome to the 50th 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] + +You can follow the newsletter creation process +by watching [the coordination issues][coordination]. +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 +[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination + +- [Announcements](#announcements) +- [Game Updates](#game-updates) +- [Engine Updates](#engine-updates) +- [Learning Material Updates](#learning-material-updates) +- [Library Updates](#library-updates) +- [Other News](#other-news) +- [Discussions](#discussions) + +## Announcements + +*Please fill out [this survey][survey] before skipping this section! More info below!* + +Hey everyone, it's been a while! As you've certainly noticed, the newsletter has +been on hiatus for a while. The reason was mostly maintainer burnout, which is also +why the newsletter of August 2023 was not published [until a few days +ago][august-news]. + +We're back now though! A couple of community members, Jan Hohenheim +([@janhohenheim]) and Thierry Berger ([@Vrixyz]), have led the revival of the +newsletter. This includes making changes requested by the community, and +improving sustainability for the long term. + +You can read more about the changes being made in [this blog +post][newsletter-changes-blog]. + +### Community Survey + +This restructuring is also a good time to improve the content of the newsletter. +We've got some community feedback on the [Rust GameDev Discord][Discord] already +and would like to hear more from you. It would be great if you could fill out +[this survey][survey] to let us know how we can improve the newsletter going +forward. The survey closes on the **28th of May**. We will be evaluating the +[survey] results in an upcoming blog post, so stay tuned for that. + +That's all for now. Have fun reading! + +[august-news]: https://gamedev.rs/news/049/ +[newsletter-changes-blog]: https://gamedev.rs/blog/newsletter-changes/ +[@janhohenheim]: https://github.com/janhohenheim +[@Vrixyz]: https://github.com/Vrixyz +[survey]: https://forms.gle/oeSb46twWsxRKYJe7 +[Discord]: https://discord.gg/game-development-in-rust-676678179678715904 + +## Game Updates + +### [Way of Rhea][wor] + +[![Way of Rhea](wor.jpg)][wor-trailer] + +[Way of Rhea][wor] just got a release date: it will be coming to Steam on +**May 20th, 2024**! + +Way of Rhea ([Steam](https://store.steampowered.com/app/1110620/Way_of_Rhea/)) is a color-based puzzle game with difficult puzzles, but forgiving +mechanics being developed by [@masonremaley] in a custom Rust engine. + +You can support development by [wishlisting Way of Rhea on Steam][wor], or +[signing up for the mailing list][wor-mail]. + +Recently, a [closed beta][wor-closed-beta] began. All characters now have voices, and various [speedrunning features][wor-speedrun] were added. +Older CPUs are [now supported][wor-avx]. +Secrets were made harder, and an [in-game achievement UI][wor-achievements] was created. + +For the full changelog, see the [release notes][wor-release-notes]. + +[@masonremaley]: https://twitter.com/masonremaley +[wor]: https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n50 +[wor-trailer]: https://youtu.be/vFsO436r2Pw +[wor-closed-beta]: https://store.steampowered.com/news/app/1110620/view/7665759271877780609 +[wor-speedrun]: https://clan.cloudflare.steamstatic.com/images//35599024/6ee82d4e0105f073082c83626e37933e682b5936.png +[wor-mail]: https://anthropicstudios.com/newsletter/signup/tech +[wor-release-notes]: https://store.steampowered.com/news/app/1110620 +[wor-avx]: https://store.steampowered.com/news/app/1110620/view/4118050466869150657 +[wor-achievements]: https://clan.cloudflare.steamstatic.com/images//35599024/573f81c1ebce54d9efedcd693fcbe684a5629c7f.png + +### [sm64jsarchive][sm64jsarchive] + +![Super Mario 64 JavaScript Archive](sm64jsarchive.jpg) + +[SM64JSARCHIVE][sm64jsarchive] is an actively maintained fork of [sm64js]: a decompilation project of Super Mario 64 to JavaScript. +Additional sidenote: The MMO servers are not always running for sm64jsarchive. + +The backend server, which is written in Rust, +is now live at + +A successful stress test for the MMO feature was run on April 10th. + +[sm64jsarchive]: https://sm64jsarchive.com +[sm64js]: https://github.com/sm64js/sm64js/tree/MMO + +### [Open Combat][OpenCombat_website] + +{{ image_figure( + alt="OpenCombat: demo available soon" + src="OpenCombat202404.jpg" + caption="Official demo available soon") }} + +Open Combat ([GitHub][OpenCombat_github], [Discord][OpenCombat_discord]) is a real-time tactical game +which takes place during World War II. + +The basic game logic and HUD are now complete, +and the high-definition map for the demo is finished. + +Some things are missing, like high-definition assets for soldiers or minimal AI for opponents. +But the [demo is playable][OpenCombat_release] and the team would love to hear your feedback! + +[OpenCombat_website]: https://opencombat.bux.fr/ +[OpenCombat_github]: https://github.com/buxx/OpenCombat +[OpenCombat_discord]: https://discord.gg/6P2vtFh2Px +[OpenCombat_release]: https://github.com/buxx/OpenCombat/releases + +### [Times of Progress][times-of-progress-steam] + +![Times of Progress: an isometric city builder game set during the industrial revolution](times_of_progress.jpg) + +Times of Progress ([Steam][times-of-progress-steam], [Twitter/X][times-of-progress-twitter], [Mastodon][times-of-progress-mastodon]) +is an upcoming city builder game set during the industrial revolution. + +In April, they added lots of UI widgets and improved performance by refactoring the orders system. + +The demo is not available yet but interested players can sign up for the upcoming closed beta by joining the [newsletter][times-of-progress-newsletter]. + +[times-of-progress-steam]: https://store.steampowered.com/app/2628450/Times_of_Progress/ +[times-of-progress-newsletter]: https://subscribepage.io/pressingthumbs +[times-of-progress-twitter]: https://twitter.com/ElmoSampedro +[times-of-progress-mastodon]: https://mastodon.online/@elmowilk + +### Monk Tower + +![Monk Tower Screen shot](monk_tower.png) + +Monk Tower ([itch.io][monk-tower-itch], [Google Play][monk-tower-play], [Github][monk-tower-github]) +is a tiny coffee-break roguelike game, intended for short runs (ca. 15mins). + +The gameplay is quite distilled and revolves mostly around resource management. +The player has limited inventory capacity and the weapons get damaged +after each use. There are 20 randomly generated levels to beat. + +It is available on desktop (Windows / Linux), Android, and Web (mobile friendly). +The game's source code also comes with a custom WGPU-based 2D framework. + +_Discussions: ([/r/roguelikes][monk-tower-reddit])_ + +[monk-tower-itch]: https://maciekglowka.itch.io/monk-tower +[monk-tower-play]: https://play.google.com/store/apps/details?id=com.maciejglowka.monk_tower +[monk-tower-github]: https://github.com/maciekglowka/tower-rl +[monk-tower-reddit]: https://www.reddit.com/r/roguelikes/comments/1butvew/monk_tower_a_coffeebreak_roguelike_google_play/ + +### You are Merlin + +![You are Merlin screenshot](you-are-merlin.png) + +You are Merlin ([Web Game][you-are-merlin-web], [GitHub - Rust/CLI][you-are-merlin-github], [GitHub - WASM][you-are-merlin-www-github]) by [@hseager](https://github.com/hseager) +is a text adventure game that compiles to both CLI and WebAssembly. + +This initial version features a main quest, side quests, items, and a boss fight. +Players can choose their favourite visual theme such as Zelda, Warcraft, and Fallout. The web version also supports mobile devices. + +Although fairly simple, this first version provides a good foundation for building more features in later updates. + +_Discussions: ([/r/rust_gamedev][you-are-merlin-reddit-post])_ + +[you-are-merlin-web]: https://hseager.github.io/you-are-merlin-www/ +[you-are-merlin-github]: https://github.com/hseager/you-are-merlin +[you-are-merlin-www-github]: https://github.com/hseager/you-are-merlin-www +[you-are-merlin-reddit-post]: https://www.reddit.com/r/rust_gamedev/comments/1c9k1kb/you_are_merlin_a_text_adventure_game/ + +### [Jumpy] + +{{ image_figure( + alt="Machine Gun and Periscope" + src="jumpy.png" + caption="Jumpy: Machine gun and Periscope") }} + +[Jumpy] ([GitHub][Jumpy], [Discord][jumpy_discord], [Twitter][jumpy_twitter]) by +[Spicy Lobster][spicy_lobster] is a pixel-style, tactical 2D shooter with a fishy +theme. + +This month the base functionalities of round scoring and map transitions have been implemented. +New weapons such as the Blunderbuss, Periscope, and Machine Gun are ready for fish-on-fish combat. + +Jumpy is now featuring corpse physics and a "ragdoll" button to send your Fish [flopping about][jumpy_ragdoll]. + +On the treasure map for the near future is improving UX and new player experience, +polish and improvements on match scoring / round transitions, and more awesome weapons. + +_Discussions: [GitHub][jumpy_discussions], [Twitter][jumpy_twitter]_ + +[Jumpy]: https://github.com/fishfolks/jumpy +[jumpy_ragdoll]: https://github.com/fishfolk/jumpy/pull/932 +[jumpy_discussions]: https://github.com/fishfolks/jumpy/discussions +[jumpy_twitter]: https://twitter.com/spicylobsterfam +[jumpy_discord]: https://discord.gg/4smxjcheE5 +[spicy_lobster]: https://spicylobster.itch.io/ + +## Engine Updates + +### Bottomless-Pit 0.3 + +![The Bottomles-Pit Logo. A small hole in the ground with cat ears and text saying bottomless-pit](https://eggshark.dev/images/bplogo.png) + +Bottomless-Pit is a 2d game engine written with WGPU that has been around for a year, which can be found on [crates.io][Bottomless-Pit_cratesio] and [GitHub][Bottomless-Pit_github]. +Very recently a 2d camera was added as well as WASM and web support. +Current development is being focused on stability and QoL changes like texture sampling options and improved input. +You can check out several [engine examples on the web][Bottomless-Pit_Website]. +Since the engine is in its infancy, its developer calls for developers to use it and give the engine some feedback. + +Current features are: + +- Custom Shader Support +- Basic rendering +- Text rendering +- Input and window event handling + +[Bottomless-Pit_Website]: https://eggshark.dev/bp-examples +[Bottomless-Pit_cratesio]: https://crates.io/crates/bottomless-pit +[Bottomless-Pit_github]: https://github.com/EggShark/bottomless-pit + +## Learning Material Updates + +### Building games for Android with Rust + +[@maciekglowka] has recently shared some thoughts [on their blog][android-games-blog] about building Rust games +for Android. Rather than a step-by-step guide, it is a collection +of issues one can possibly encounter when targeting Android. + +Topics mentioned: + +- 'Window' creation (via winit) +- Android app's lifecycle vs. the WGPU surface creation +- User data storage +- System UI hiding via jni and Android API +- Building AAB files to meet Google Play requirements + +[android-games-blog]: https://maciejglowka.com/blog/building-games-for-android-with-rust/ +[@maciekglowka]: https://github.com/maciekglowka + +### Bevy: A case study in ergonomic Rust + +[Chris Biscardi][chris-yt] was at RustNation UK recently and gave talk on Bevy's +Rusty ergonomics titled [Bevy: A case study in ergonomic Rust][case-study-video]. +In their own words: + +> There are at least two, if not three, talks worth of material around how Bevy +> progressively discloses complexity across multiple "stacks" of APIs; and the +> work done so far is very impressive in terms of how it all fits together, +> especially as a large-and-growing OSS project. + +[chris-yt]: https://www.youtube.com/c/chrisbiscardi +[case-study-video]: https://www.youtube.com/watch?v=CnoDOc6ML0Y + +### Reactivity in Bevy: From the Bottom Up + +[Talin][talin] wrote a three-part series on ["Reactivity in Bevy: From the Bottom Up"][reactivity-blog], +which describes the workings of `bevy_reactor`, an experimental, work-in-progress framework for doing reactive programming within Bevy. + +[reactivity-blog]: https://machinewords.hashnode.dev/reactivity-in-bevy-from-the-bottom-up-part-1 +[talin]: https://dreamertalin.medium.com/ + +## Library Updates + +### Jolt Bindings + +[Lucian Greathouse][lucien] has published their [Jolt][jolt] bindings for Rust. Jolt is a C++ physics engine you might know from its use in Horizon: Forbidden West. +Lucian has previously worked on [JoltC][joltc], a C API for Jolt, which this project uses in the background. + +The bindings work can be found on the [just-rust GitHub repo][jolt-rust] GitHub repository and come in two flavors: +- `joltc-sys`: Unsafe bindings to the C API +- `rolt`: Ergonomic and safe Rust API + +[lucien]: https://lpg.space/ +[jolt]: https://github.com/jrouwe/JoltPhysics +[jolt-rust]: https://github.com/SecondHalfGames/jolt-rust +[joltc]: https://github.com/SecondHalfGames/JoltC + +### Hexx 0.17 + +Hexx, the popular crate for hexagonal tools, [has released version 0.17](https://github.com/ManevilleF/hexx/releases/tag/0.17.0). +This release has a strong focus on performance: +- Large performance improvement on various computations like rings and wedges +- Add support for optimized storage for hexagonal and rhombus-shaped maps +- Added support for rectiline path + +And utility: +- Added a 13th example showcasing all natively supported shapes +- Removed confusing items + +### [Lightyear 0.13][lightyear_website] + +[lightyear_website] is a comprehensive networking library for bevy to make multiplayer games. +It comes with multiple types of transports (WebTransport, WebSocket, UDP, etc.) +and supports replication techniques like client-side prediction, server interpolation, interest management, and more! +Check out the [examples][lightyear_examples]! + +The latest release, [0.13][lightyear_release], brings two big new features: +- **Steam support**: you can now use the Steamworks SDK as your transport layer, which lets you use the Valve network! +Note that lightyear supports running multiple transports in parallel, so it's possible to have cross-play between Steam and non-Steam users. +- **Listen-server mode**: it is now possible to run a server and a client in the same process/bevy app. +This can be useful to avoid the costs of a dedicated server, or to have a similar codebase between singleplayer and multiplayer. + +[Example (with 300ms of latency)](https://github.com/cBournhonesque/lightyear/assets/8112632/ee547c32-1f14-4bdc-9e6d-67f900af84d0) + +[lightyear_website]: https://github.com/cBournhonesque/lightyear +[lightyear_release]: https://github.com/cBournhonesque/lightyear/releases/tag/0.13.0 +[lightyear_examples]: https://github.com/cBournhonesque/lightyear/tree/main/examples + +## Other News + +- Alice I. Cecile of the Bevy Foundation would like to collect community feedback +on game development in Rust. Please fill out [her survey](https://forms.gle/kLzv5Ww3U8dLGUHU8)! + +## Discussions + +LogLog games has published a [very well-written blog post](https://loglog.games/blog/leaving-rust-gamedev/) about their reasons to leave Rust gamedev. +It talks about shortcomings in Rust as a language in general and as a game development tool in particular. +Some insights into the limitations of ECS are also provided. Some interesting community discussions have been sparked by this post: + +- [Hacker News](https://news.ycombinator.com/item?id=40172033) +- [/r/gamedev](https://www.reddit.com/r/gamedev/comments/1ceipzc/leaving_rust_gamedev_after_3_years_blog_post_by/) +- [/r/rust](https://www.reddit.com/r/rust/comments/1cdqdsi/lessons_learned_after_3_years_of_fulltime_rust/) + +------ + +That's all news for today, thanks for reading! + +Want something mentioned in the next newsletter? +[Send us a pull request][pr]. + +Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev] +or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news! + +**Discuss this post on**: +[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/1cja5v8/this_month_in_rust_gamedev_april_edition_released/), +[rust@lemmy.ml](https://lemmy.ml/post/15196466), +[Hacker News](https://news.ycombinator.com/item?id=40248347), +[Mastodon](https://mastodon.gamedev.place/@rust_gamedev/112377678490780983), +[Twitter](https://twitter.com/rust_gamedev/status/1786406704629829935), +[Discord](https://discord.gg/yNtPTb2). + +[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev +[@rust_gamedev]: https://twitter.com/rust_gamedev diff --git a/content/news/050/jumpy.png b/content/news/050/jumpy.png new file mode 100644 index 000000000..263760128 Binary files /dev/null and b/content/news/050/jumpy.png differ diff --git a/content/news/050/monk_tower.png b/content/news/050/monk_tower.png new file mode 100644 index 000000000..a801a728d Binary files /dev/null and b/content/news/050/monk_tower.png differ diff --git a/content/news/050/sm64jsarchive.jpg b/content/news/050/sm64jsarchive.jpg new file mode 100644 index 000000000..d9a687de1 Binary files /dev/null and b/content/news/050/sm64jsarchive.jpg differ diff --git a/content/news/050/times_of_progress.jpg b/content/news/050/times_of_progress.jpg new file mode 100644 index 000000000..c13c0a229 Binary files /dev/null and b/content/news/050/times_of_progress.jpg differ diff --git a/content/news/050/wor.jpg b/content/news/050/wor.jpg new file mode 100644 index 000000000..05c2cda4f Binary files /dev/null and b/content/news/050/wor.jpg differ diff --git a/content/news/050/you-are-merlin.png b/content/news/050/you-are-merlin.png new file mode 100644 index 000000000..9cb2cc5e6 Binary files /dev/null and b/content/news/050/you-are-merlin.png differ diff --git a/content/news/051/bevy_rep.jpg b/content/news/051/bevy_rep.jpg new file mode 100644 index 000000000..23d4cdc87 Binary files /dev/null and b/content/news/051/bevy_rep.jpg differ diff --git a/content/news/051/bevy_rustunit_meetup_3.jpg b/content/news/051/bevy_rustunit_meetup_3.jpg new file mode 100644 index 000000000..209a51e64 Binary files /dev/null and b/content/news/051/bevy_rustunit_meetup_3.jpg differ diff --git a/content/news/051/bevy_rustunit_meetup_4.jpg b/content/news/051/bevy_rustunit_meetup_4.jpg new file mode 100644 index 000000000..781f9872a Binary files /dev/null and b/content/news/051/bevy_rustunit_meetup_4.jpg differ diff --git a/content/news/051/cybergate.gif b/content/news/051/cybergate.gif new file mode 100644 index 000000000..0dd78502f Binary files /dev/null and b/content/news/051/cybergate.gif differ diff --git a/content/news/051/fyrox-editor.png b/content/news/051/fyrox-editor.png new file mode 100644 index 000000000..20a9f4366 Binary files /dev/null and b/content/news/051/fyrox-editor.png differ diff --git a/content/news/051/index.md b/content/news/051/index.md new file mode 100644 index 000000000..454399959 --- /dev/null +++ b/content/news/051/index.md @@ -0,0 +1,386 @@ ++++ +title = "This Month in Rust GameDev #51 - May 2024" +transparent = true +date = 2024-06-05 +draft = false ++++ + + + + + +Welcome to the 51st 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] + +You can follow the newsletter creation process +by watching [the coordination issues][coordination]. +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 +[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination + +- [Announcements](#announcements) +- [Game Updates](#game-updates) +- [Engine Updates](#engine-updates) +- [Learning Material Updates](#learning-material-updates) +- [Tooling Updates](#tooling-updates) +- [Other News](#other-news) +- [Misc. Links](#misc-links) + + + +## Announcements + +### Survey Results + +Last month, we asked you to fill out a survey to help us improve the rebooted newsletter. Thanks to 52 of you, we've got [some data][survey-data] now! +We analyzed the results in [this blog post][survey_results]. The biggest takeaways are: +- People are generally excited about the newsletter +- The current frequency of the newsletter is good +- Readers do not want anything in the newsletter generated by AI +- Contributing to the newsletter could be easier. If you've got ideas on how to make this happen, please [let us know](https://github.com/rust-gamedev/rust-gamedev.github.io/issues/1519)! + +You can visit the [blog post][survey_results] to see the full results and some nice plots. +We will discuss how to act on this feedback next month and keep you updated on the changes we make. + +Thanks to everyone who participated! + +[survey-data]: https://github.com/janhohenheim/rust-gamedev-statistics/tree/main/jan-hohenheim-2024 +[survey_results]: + +### Email Subscription + +Last month, we announced that we would add an email subscription option to the newsletter. +Unfortunately, we did not manage to implement this in time for this issue. +He will [work on this feature](https://github.com/rust-gamedev/rust-gamedev.github.io/issues/24) for the next month, and we hope to have it ready for you then. + +## Game Updates + +### [Way of Rhea][wor] + +{{ image_figure( + alt="Way of Rhea" + src="wor.jpg" + caption="Way of Rhea: a puzzle game. Available on Steam." + link="https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n51") }} + +[Way of Rhea][wor] released on May 20th as part of the +[Cerebral Puzzle Showcase][wor-cps]! + +[![Way of Rhea](wor-animated.gif)][wor] + +Way of Rhea is a color-based puzzle game with difficult puzzles, but +forgiving mechanics developed by [Mason Remaley] in a custom Rust engine. + +You can support development by [purchasing Way of Rhea on Steam][wor], or +[signing up for the mailing list][wor-mail] to hear about future games. + +[Mason Remaley]: https://masonremaley.com/ +[wor]: https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n51 +[wor-mail]: https://anthropicstudios.com/newsletter/signup/tech +[wor-cps]: https://www.cerebralpuzzleshowcase.com/ + +### [Untitled Pixel Wizard Game][pixel-wizards] + +{{ image_figure( + alt="A target being destroyed by a rudimentary flame thrower spell" + src="untitled-pixel-wizards-game.gif" + caption="A deadly foe meets its end.", + link="https://slowrush.dev") }} + +[Untitled Pixel Wizard Game][pixel-wizards] is a local-multiplayer [Noita]-like platformer about +killing baddies using spells powered by pixel physics. + +Over the last few months, the falling sand simulation learned to play (somewhat) nicely with Rapier +rigid bodies; see [Bridging Physics Worlds][pixel-wizards-bridging-physics-worlds] and subsequent updates. + +This month: + +- [Tilemapping via LDTK][pixel-wizards-tilemapping]: levels got just a tiny bit prettier. +- [Level Progression][pixel-wizards-levels]: players learn to die, and levels link together. +- [Target Practice][pixel-wizards-targets]: the first "enemy" was added to the game. + +[pixel-wizards]: https://slowrush.dev +[Noita]: https://store.steampowered.com/app/881100/Noita/ +[pixel-wizards-bridging-physics-worlds]: https://www.slowrush.dev/news/bridging-physics-worlds/ +[pixel-wizards-targets]: https://www.slowrush.dev/news/target-practice/ +[pixel-wizards-arch]: https://www.slowrush.dev/news/architectural-questions/ +[pixel-wizards-levels]: https://www.slowrush.dev/news/level-progression/ +[pixel-wizards-tilemapping]: https://www.slowrush.dev/news/tilemapping/ +[Leaving Rust game dev after 3 years]: https://loglog.games/blog/leaving-rust-gamedev/ + +### [mirr/orb] + +{{ image_figure( + alt="mirr/orb" + src="mirrorb.png" + caption="A typical level and its UI") }} + +[mirr/orb] by [syn9] +is a puzzle game about bouncing lasers off mirrors to activate orbs. + +The game was created in 9 days using syn9's Rust mini game framework [mgfw] and released on May 27th. + +This release contains 110 levels which pull from 870 available puzzle layouts. + +[mirr/orb]: https://syn9dev.itch.io/mirrorb +[syn9]: https://twitter.com/Syn9Dev +[mgfw]: https://github.com/Syn-Nine/mgfw + +### [CyberGate Playground][cybergate-shorts] + +{{ image_figure( + alt="Improved Hammer Destruction" + src="cybergate.gif" + caption="Shooting a Hammer against a Floating Wall and Destroying part of it") }} + +CyberGate Playground is a multiplayer browser game where players claim territory +by painting the environment in their color, with the goal of overpowering opponents. + +The past few months' updates include: +- Flying with butterfly-like mechanics +- [Fusion Upgrade:][cybergate-fuse] Combine hammers, balls, and dice to multiply their powers +- Hammer destruction made more challenging and interesting, with upgrades enabling deeper wall penetration +- Improved strength and weight system, and calculate their impact on character movement and abilities +- Added an 'Owned Upgrades' menu using `yakui` crate, giving a neat overview of all acquired upgrades +- Many other UI / gameplay improvements based on player feedback + +Rust's ownership and strongly typed features played a crucial role in allowing the gameplay code to scale +to more complex and detailed mechanics while retaining correct, clean, and bug-free code. + +CyberGate Playground is a passion project. +If you're interested in the game's progress, join the [Discord server][cybergate-discord]. + +[cybergate-shorts]: https://youtube.com/@cyber-gate/shorts +[cybergate-discord]: https://discord.gg/P3D8weeQ7Z +[cybergate-fuse]: https://www.youtube.com/shorts/ewnZ6VVSYMM + +## Engine Updates + +### Macroquad Newsletter + +{{ image_figure( + alt="quad-gl" + src="twiq_3d_helmet.gif" + caption='"Basic" 3d rendering (gltf helmet)') }} + +[@Fedor](https://github.com/not-fl3/), creator of [*Quad], a game engine written in Rust, is starting a ["This week in Quads"](https://macroquad.rs/twiq) newsletter. + +This month overall polish, developer experience, performance optimization, and basic 3d visualization have been worked on. + +[*Quad]: https://www.patreon.com/posts/on-buses-and-101117631 + +### [Fyrox 0.34][fyrox-release] + +{{ image_figure( + alt="Fyrox editor" + src="fyrox-editor.png" + caption="The improved Fyrox editor UI") }} + +[Fyrox] got a huge update this month. For those who don't know, Fyrox is a game engine written in Rust that is especially notable for sporting a Unity-like editor. + +[This release][fyrox-release] includes code hot reloading, project exporter, assets preview generation, UI prefabs, GLTF support, static and dynamic batching, +keyboard navigation, animation support for UI, editor style and usability improvements, and many more. + +[Fyrox]: https://fyrox.rs +[fyrox-release]: https://fyrox.rs/blog/post/fyrox-game-engine-0-34/ + +### Bevy 0.14 WIP + +{{ image_figure( + alt="Bevy repeated textures" + src="bevy_rep.jpg" + caption="One of the upcoming features in Bevy 0.14 is easier texture repetition for GLTF objects") }} + +The 0.14 release of [Bevy] nears completion, but the team is still working on detailed +release notes and the migration guide. If you want to help, you can grab one of the [open documentation issues][bevy-docs-issues]. + +[Bevy]: https://bevyengine.org/ +[bevy-docs-issues]: https://github.com/bevyengine/bevy-website/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3AA-Release-Notes + +## Learning Material Updates + +### Xkcd Machine + +{{ image_figure( + alt="XKCD Machine" + src="xkcd_machine.gif" + caption="A small part of the XKCD Machine") }} + +Chromakode released a detailed [blog post][xkcd_machine_blogpost] about their implementation of [xkcd "Machine"][xcd_machine_playable]. + +Machine is written in React/Typescript, and uses [Rapier][xkcd_rapier]: a physics engine written in Rust. + +[xkcd_machine_blogpost]: https://chromakode.com/post/xkcd-machine/ +[xcd_machine_playable]: https://xkcd.com/2916/ +[xkcd_rapier]: https://rapier.rs/ + +## Tooling Updates + +### [Rusty Playdate] + +{{ image_figure( + alt="The Playdate console" + src="playdate.png" + caption="The Playdate console") }} + +[Rusty Playdate] ([GitHub][Rusty Playdate], [Mastodon][Rusty Playdate Masto]) by [@boozook](https://github.com/boozook) +is the large set of crates with bindings, cargo-plugin, and toolset for the full cycle of creating games for the [Playdate handheld console][playdate]. +This is a fairly new console reminiscent of a GameBoy with a crank handle geared towards indie games. + +The current release sports the following notable improvements: +- Partial Lua scripting support +- Support for devices connected to macOS via USB hub +- Stabilize packaging on Windows enough to add automatic tests +- Stabilization for various parts of the API + +_Discussions: [GitHub][Rusty Playdate Gh-disc], [Matrix][Rusty Playdate Matrix]._ + +[Rusty Playdate]: https://github.com/boozook/playdate +[Rusty Playdate Gh-disc]: https://github.com/boozook/playdate/discussions +[Rusty Playdate Masto]: https://gamedev.social/@playdaters +[Rusty Playdate Matrix]: https://matrix.to/#/#playdate.rs:matrix.org +[playdate]: https://play.date/ + +## Other News + + + +### Bevy rustunit meetup #3 + +{{ image_figure( + alt="Bevy meetup YouTube extract" + src="bevy_rustunit_meetup_3.jpg" + caption="Bevy meetup YouTube extract, showing its 3 participants.") }} + +[Rustunit][rustunit] has hosted its 3rd unofficial online [Bevy Engine][bevy] meetup on April 19th with the following topics: +- Intro / Code of Conduct +- Julian - Animating 3D Characters with Bevy +- Niklas - Learnings from a Bevy game template + +Check out [the recording][rustunit_bevy_meetup_3_youtube] +and join [the meetup group][rustunit_bevy_meetup_event] to get notified of future events. + +[rustunit_bevy_meetup_3_youtube]: https://www.youtube.com/watch?v=Fyr1ud1OIpU + +### Bevy rustunit meetup #4 + +{{ image_figure( + alt="Bevy meetup YouTube extract" + src="bevy_rustunit_meetup_4.jpg" + caption="Bevy meetup YouTube extract, showing its 4 participants.") }} + +[Rustunit][rustunit] has hosted its 4th unofficial online [Bevy Engine][bevy] meetup on May 24th with the following topics: +- Francois - Catching Rendering Regressions on all Platforms +- Lorenz - Hooking into the Bevy Rendering Pipeline +- Jos - Recreating Townscaper using Rust & Bevy + +Check out [the recording][rustunit_bevy_meetup_4_youtube] +and join [the meetup group][rustunit_bevy_meetup_event] to get notified of future events. + +[rustunit_bevy_meetup_4_youtube]: https://www.youtube.com/watch?v=rnE_nINEs2M +[rustunit]: https://rustunit.com/ +[rustunit_bevy_meetup_event]: https://www.meetup.com/bevy-game-development/ + + +### RustNL + +[RustNL][rustnl_main_website] happened May 7. & 8. in Delft, Netherlands. + +While the conference was not specific to game development, +organizers contacted rust game development communities +to showcase games developed in Rust between talks, +which you can [watch on YouTube][rustnl_games_youtube]. + +Special mention to the following talks, relevant to game development: +- [Let's Build High-Performance Rust UI][rustnl_kevin_boos_talk] by Kevin Boos +- [A Research Project on Rust User Interface Architecture][rustnl_xilem_talk] by Ralph Levien about [Xilem][rustnl_xilem_intro] +- [(Th)Rust for Space: Initial momentum][rustnl_michael_melchiore_talk] by Michaël Melchiore, who gave a shout-out to [Bevy Engine][rustnl_bevy_engine]. + +[rustnl_main_website]: https://2024.rustnl.org/ +[rustnl_games_youtube]: https://www.youtube.com/watch?v=XLefuzE-ABU&t=7583s +[rustnl_xilem_talk]: https://www.youtube.com/watch?v=521NfGf7AR0&t=19308s +[rustnl_xilem_intro]: https://raphlinus.github.io/rust/gui/2022/05/07/ui-architecture.html +[rustnl_kevin_boos_talk]: https://www.youtube.com/watch?v=521NfGf7AR0&t=2928s +[rustnl_michael_melchiore_talk]: https://www.youtube.com/watch?v=XLefuzE-ABU&t=3898s +[rustnl_bevy_engine]:https://bevyengine.org/ + +## Misc. Links + +### New libraries + +- [egui_ratatui](https://github.com/gold-silver-copper/egui_ratatui): A ratatui backend that is also an egui widget. +Deploy on the web with WASM or ship natively with Bevy, macroquad, or eframe +- [bevy_ratatui_render](https://github.com/cxreiff/bevy_ratatui_render): A Bevy plugin for rendering your game to the terminal using ratatui +- [bevy_light_2d](https://github.com/jgayfer/bevy_light_2d): General purpose 2D lighting for the Bevy game engine + +### Library Updates + +- [Kira 0.9](https://github.com/tesselode/kira/releases/tag/v0.9.0): Library for expressive game audio +- [Quinn 0.11.2](https://github.com/quinn-rs/quinn/releases/tag/0.11.2): Async-friendly QUIC implementation in Rust +- [rolt and jolt-sys 0.3.1](https://github.com/SecondHalfGames/jolt-rust/blob/main/CHANGELOG.md#v030): Rust bindings to Jolt Physics +- [Hanabi 0.11](https://github.com/djeedai/bevy_hanabi/blob/v0.11.0/CHANGELOG.md): A GPU particle system plugin for the Bevy game engine + +### Blog Posts + +- [Architectural Ruminations][pixel-wizards-arch]: reflections on using Rust for game development, + prompted by LogLog Games's [Leaving Rust game dev after 3 years] + +### Videos + +- [The Secret Behind Photorealistic And Stylized Graphics](https://www.youtube.com/watch?v=KkOkx0FiHDA): +Explaining the rendering techniques behind photorealistic and stylized graphics +- [GDC: Tunes of the Kingdom](https://www.youtube.com/watch?v=N-dPDsLTrTE): Evolving physics and sounds for ‘The Legend of Zelda: Tears of the Kingdom’ + +------ + +That's all news for today, thanks for reading! + +Want something mentioned in the next newsletter? +[Send us a pull request][pr]. + +Also, subscribe to our socials if you want to receive fresh news! +- X/Twitter: [@rust_gamedev][@x_rust_gamedev] +- Mastodon: [@rust_gamedev][@mastodon_rust_gamedev] +- Reddit: [/r/rust_gamedev][/r/rust_gamedev] + +**Discuss this post on**: +[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/1d8we3t/this_month_in_rust_gamedev_may_edition_released/), +[Lemmy](https://lemmy.world/post/16213742), +[Mastodon](https://mastodon.gamedev.place/@rust_gamedev/112565328837537528), +[X / Twitter](https://x.com/rust_gamedev/status/1798415636999307416), +[Discord](https://discord.gg/yNtPTb2). + +[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev +[@x_rust_gamedev]: https://twitter.com/rust_gamedev +[@mastodon_rust_gamedev]: https://mastodon.gamedev.place/@rust_gamedev diff --git a/content/news/051/mirrorb.png b/content/news/051/mirrorb.png new file mode 100644 index 000000000..0b3923e66 Binary files /dev/null and b/content/news/051/mirrorb.png differ diff --git a/content/news/051/playdate.png b/content/news/051/playdate.png new file mode 100644 index 000000000..62b7d033a Binary files /dev/null and b/content/news/051/playdate.png differ diff --git a/content/news/051/twiq_3d_helmet.gif b/content/news/051/twiq_3d_helmet.gif new file mode 100644 index 000000000..f4a704f22 Binary files /dev/null and b/content/news/051/twiq_3d_helmet.gif differ diff --git a/content/news/051/untitled-pixel-wizards-game.gif b/content/news/051/untitled-pixel-wizards-game.gif new file mode 100644 index 000000000..06c2c98d6 Binary files /dev/null and b/content/news/051/untitled-pixel-wizards-game.gif differ diff --git a/content/news/051/wor-animated.gif b/content/news/051/wor-animated.gif new file mode 100644 index 000000000..4c624bba9 Binary files /dev/null and b/content/news/051/wor-animated.gif differ diff --git a/content/news/051/wor.jpg b/content/news/051/wor.jpg new file mode 100644 index 000000000..0f23547bd Binary files /dev/null and b/content/news/051/wor.jpg differ diff --git a/content/news/051/xkcd_machine.gif b/content/news/051/xkcd_machine.gif new file mode 100644 index 000000000..2085a4422 Binary files /dev/null and b/content/news/051/xkcd_machine.gif differ diff --git a/content/news/052/berdicles.jpg b/content/news/052/berdicles.jpg new file mode 100644 index 000000000..af0928d3b Binary files /dev/null and b/content/news/052/berdicles.jpg differ diff --git a/content/news/052/bevy_hanabi_trails.gif b/content/news/052/bevy_hanabi_trails.gif new file mode 100644 index 000000000..c2ca9aedf Binary files /dev/null and b/content/news/052/bevy_hanabi_trails.gif differ diff --git a/content/news/052/bevy_light_2d.gif b/content/news/052/bevy_light_2d.gif new file mode 100644 index 000000000..ca0e65fd5 Binary files /dev/null and b/content/news/052/bevy_light_2d.gif differ diff --git a/content/news/052/bevypunk.jpg b/content/news/052/bevypunk.jpg new file mode 100644 index 000000000..5793c47e1 Binary files /dev/null and b/content/news/052/bevypunk.jpg differ diff --git a/content/news/052/egui_ratatui.jpg b/content/news/052/egui_ratatui.jpg new file mode 100644 index 000000000..3e11e66c4 Binary files /dev/null and b/content/news/052/egui_ratatui.jpg differ diff --git a/content/news/052/godot-rust.jpg b/content/news/052/godot-rust.jpg new file mode 100644 index 000000000..7cf0cd82d Binary files /dev/null and b/content/news/052/godot-rust.jpg differ diff --git a/content/news/052/gunbug.jpg b/content/news/052/gunbug.jpg new file mode 100644 index 000000000..075cc4a70 Binary files /dev/null and b/content/news/052/gunbug.jpg differ diff --git a/content/news/052/haalka.mp4 b/content/news/052/haalka.mp4 new file mode 100644 index 000000000..16000db7a Binary files /dev/null and b/content/news/052/haalka.mp4 differ diff --git a/content/news/052/index.md b/content/news/052/index.md new file mode 100644 index 000000000..f9ff6e576 --- /dev/null +++ b/content/news/052/index.md @@ -0,0 +1,538 @@ ++++ +title = "This Month in Rust GameDev #52 - June 2024" +transparent = true +date = 2024-07-03 +draft = false ++++ + + + + + +Welcome to the 52th 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] + +You can follow the newsletter creation process +by watching [the coordination issues][coordination]. +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 +[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination + +- [Announcements](#announcements) +- [Game Updates](#game-updates) +- [Engine Updates](#engine-updates) +- [Learning Material Updates](#learning-material-updates) +- [Tooling Updates](#tooling-updates) +- [Library Updates](#library-updates) +- [Interviews](#interviews) +- [Blog Posts](#blog-posts) +- [Jobs](#jobs) +- [Engine Newsletters](#engine-newsletters) +- [Future News](#future-news) + + + +## Announcements + +For years, our readers have asked for a way to subscribe to this newsletter by email. This again came up in our [recent survey][survey]. +We're happy to announce that this feature is now available! When you visit our [homepage], +you can now scroll down and find an email subscription form. +We'll send you an email whenever a new post is published, which currently is once per month. + +The emails are currently sent from [gamedev-rs@proton.me](mailto:gamedev-rs@proton.me). +We will switch this to an actual @gamedev.rs address in the future. Please tell us if you encounter any issues with the emails. + +[survey]: https://gamedev.rs/blog/survey-02/ +[homepage]: https://gamedev.rs/ + +## Game Updates + +### [Untitled Pixel Wizards Game][pixel-wizards] + +{{ video_figure( + type="video/mp4", + src="untitled-pixel-wizards-game.mp4", + caption="Enemies now perceive, pursue, and attack... and occasionally get burned to death.") }} + +[Untitled Pixel Wizards Game][pixel-wizards] is a local-multiplayer [Noita]-like platformer about +killing baddies using spells powered by pixel physics. This month was focused on juicing up said baddies: + +- [Pew Pew Pew][pixel-wizards-update-1]: baddies learned to shoot at players. +- [Hot Pursuit][pixel-wizards-update-2]: baddies also learned to chase players! (They're real smart.) +- [Status Update][pixel-wizards-update-3]: physically-simulated pixels learn to burn & poison players & baddies. +- [Ragdolls][pixel-wizards-update-4]: corpses of dead baddies learn to tumble around all realistic-like. +- [Fiddling with Fire][pixel-wizards-update-5]: the fire mechanic figures out how to better burn baddies. + +[pixel-wizards]: https://slowrush.dev +[Noita]: https://store.steampowered.com/app/881100/Noita/ +[pixel-wizards-update-1]: https://www.slowrush.dev/news/pew-pew/ +[pixel-wizards-update-2]: https://www.slowrush.dev/news/hot-pursuit/ +[pixel-wizards-update-3]: https://www.slowrush.dev/news/status-update/ +[pixel-wizards-update-4]: https://www.slowrush.dev/news/ragdolls/ +[pixel-wizards-update-5]: https://www.slowrush.dev/news/fiddling-with-fire/ + + +### [Way of Rhea][wor] + +{{ image_figure( + alt="Way of Rhea" + src="wor.jpg" + caption="Way of Rhea: a puzzle game. Available on Steam and 20% off for the Steam Summer Sale!", + link="https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n52") }} + +Way of Rhea ([Steam][wor], [Newsletter][wor-mail]) is a color-based puzzle game with difficult puzzles, but +forgiving mechanics developed by [Mason Remaley] in a custom Rust engine. Since its release in May, +Mason has fixed many bugs and implemented quality-of-life improvements. + +They recently conducted an [AMA on /r/rust_gamedev][ama] about their experience +developing and shipping a game after six years in Rust. +They then curated the questions and answers into a [blog post][wor-ama]. +It includes questions about Rust, libraries, experiences writing a custom game engine, and game development in general. + +[Mason Remaley]: https://masonremaley.com/ +[wor]: https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n52 +[wor-mail]: https://anthropicstudios.com/newsletter/signup/tech +[ama]: https://www.reddit.com/r/rust_gamedev/comments/1cwqcfl/i_spent_6_years_developing_a_puzzle_game_in_rust/ +[wor-ama]: https://gamesbymason.com/2024/06/01/wor-ama/ + +### [Gunbug][gunbug] + +{{ image_figure( + alt="Gunbugs shooting at a bunch of eggplants" + src="gunbug.jpg" + link="https://store.steampowered.com/app/2946990?utm_source=this_month_in_rust") }} + +Gunbug is a 2D online co-op horde survival shoot'em up game. + +It focuses on shooting lots of enemies with lots of guns. It can be played +solo or with up to 10 players. + +It is built with [Bevy] and uses [bevy_rapier] for ray casting, +[bevy_kira_audio] for audio, and [renet] for networking. +The iOS and macOS versions are built with [xbuild]. + +You can wishlist the game on [Steam][gunbug]. Playtests start in the upcoming months. +iOS and Android builds already work, but store pages don't exist yet. + +[gunbug]: https://store.steampowered.com/app/2946990?utm_source=this_month_in_rust +[xbuild]: https://github.com/rust-mobile/xbuild +[Bevy]: https://bevyengine.org +[bevy_rapier]: https://github.com/dimforge/bevy_rapier +[bevy_kira_audio]: https://github.com/NiklasEi/bevy_kira_audio +[renet]: https://github.com/lucaspoffo/renet + +## Engine Updates + +### [godot-rust] + +![godot-rust logo](godot-rust.jpg) + +godot-rust ([GitHub][gd-github], [Discord][gd-discord], [Mastodon][gd-mastodon], [Twitter][gd-twitter]) by [@Bromeon] +provides Rust bindings for the [Godot engine](https://godotengine.org/). + +After quite a bit of development on GitHub, the Godot 4 bindings are now available on [crates.io](https://crates.io/crates/godot) -- +you can immediately get started using +`cargo add godot`. Furthermore, the GDExtension API level can now be specified with a Cargo feature, e.g. `api-4-1`. + +The `ScriptInstance` API has matured a lot over the past months. This feature allows users to write Godot scripts in Rust, which can be +attached to nodes (just like GDScript). Scripts allow for quickly attaching/detaching functionality in a scene. + +The overall API has seen several consistency improvements: reorganized modules, `self`/`&self` receivers on geometric types, +easier element access for `Array`/`Dictionary`/`Packed*Array`. The library has also benefited from Rust's +[`#[diagnostic::on_unimplemented]`][gd-diagnostic] to improve user-facing error messages. + +_Discussions: +[/r/rust](https://www.reddit.com/r/rust/comments/1dnmjtl/godotrust_now_on_cratesio_with_the_godot_crate/), +[Mastodon](https://mastodon.gamedev.place/@GodotRust/112673330814149117), +[X](https://x.com/GodotRust/status/1805327592222081482)_ + +_See also the [devlog article][gd-dev-june]._ + +[@Bromeon]: https://github.com/Bromeon +[gd-dev-june]: https://godot-rust.github.io/dev/june-2024-update +[gd-diagnostic]: https://blog.rust-lang.org/2024/05/02/Rust-1.78.0.html#diagnostic-attributes +[gd-discord]: https://discord.gg/aKUCJ8rJsc +[gd-github]: https://github.com/godot-rust/gdext +[gd-mastodon]: https://mastodon.gamedev.place/@GodotRust +[gd-twitter]: https://twitter.com/GodotRust +[godot-rust]: https://godot-rust.github.io + +### [Bevy 0.14 Release Candidate][bevy-0.14-rc] + +{{ image_figure( + alt="Sharp Screen-Space Reflections in Bevy 0.14" + src="ssr.jpg") }} + +The Bevy game engine is gearing up to release version 0.14. +The (probably) last release candidate is out now and ready for testing. +If you want to help out, +check out the [draft release notes][bevy-0.14-rc] and the [draft migration guide][bevy-0.14-rc-migration] and report any issues you find. + +[bevy-0.14-rc]: https://bevyengine.org/news/draft-bevy-0-14/ +[bevy-0.14-rc-migration]: https://bevyengine.org/learn/migration-guides/0-13-to-0-14/ + +## Learning Material Updates + +### [Bevy Cheatbook][bevy-cheatbook] + +The community-beloved unofficial [Bevy Cheatbook][bevy-cheatbook] by Ida "Iyes" is a collection of Bevy tutorials, recipes and advanced documentation. +The cheatbook is currently in the process of being updated to Bevy 0.14 and now features the following new chapters: +- [Transform Interpolation/Extrapolation](https://bevy-cheatbook.github.io/cookbook/smooth-movement.html): + How to get smooth-looking movement on-screen for things you simulate in FixedUpdate +- [Internal Parallelism](https://bevy-cheatbook.github.io/programming/par-iter.html): + Multithreading within a Bevy system +- [One-Shot Systems](https://bevy-cheatbook.github.io/programming/one-shot-systems.html): + Systems that you run on-demand, not in a schedule +- [Background Computation](https://bevy-cheatbook.github.io/fundamentals/async-compute.html): + How to do processing that may span multiple frame updates and not hold up the game's framerate with long CPU work. + +[bevy-cheatbook]: https://bevy-cheatbook.github.io/ + +### [Game development in Rust with Macroquad][macro-learning] + +Olle Wreede of [Agical][agical] published a [complete guide][macro-learning] on +how to develop a classic 2D shoot 'em up game using the game library +Macroquad and the Rust programming language. + +It covers everything from a simple Hello World Macroquad application to adding graphics, audio, a shader, a graphical menu, +and how to release the game on multiple platforms. + +[agical]: https://www.agical.se/ +[macro-learning]: + +### Other learning materials + +- [Using tracing to profile a Bevy project](https://rornic.com/posts/using-tracing-to-profile-a-bevy-project/) +- [Bevycation of Brackeys First Game in Godot Tutorial](https://github.com/Occuros/bevycation_brackeys_first-game-in-godot): + A Bevy version of Brackeys' ["How to make a Video Game - Godot Beginner Tutorial"](https://www.youtube.com/watch?v=LOhfqjmasi0) + +## Tooling Updates + +### [Rusty Playdate 0.5][Rusty Playdate] + +{{ image_figure( + alt="The Playdate console" + src="../051/playdate.png") }} + +[Rusty Playdate] ([GitHub][Rusty Playdate], [Mastodon][Rusty Playdate Masto]) by [@boozook](https://github.com/boozook) +is a large set of crates and tools for the full cycle of creating games for the [Playdate handheld console][playdate]. + +A big part of the Rusty Playdate project is the [`cargo-playdate`][cargo-playdate gh] tool that functions as a build system. +It works as a cargo-plugin as well as a standalone, and does several things: +- It manages the compilation of your program, +- builds assets for the crate and its dependencies, +- generates a manifest, +- and assembles it all into a bundle that runs on the device or a simulator. + +In this month `cargo-playdate` v0.5 has been [released][Rusty Playdate Release] and received massive refactoring, bugfixes and new features: + +- support for [cargo's auto-targets][cargo-target-auto-discovery], i.e. targets such as `bin` or `example` that aren't declared in the Cargo.toml +- [target-specific package-info][pdb-pdxinfo-override] is inherited from the main package-info +- `package.metadata.playdate.options` is inherited from the `workspace.metadata` +- incremental builds now work as expected + + +The register decoder in the [`pd-symbolize-crashlog`][playdate-symbolize-v0.2.0] was also updated. +It now properly decodes all available registers such as +PSR, +CFSR, and +HSFR. + +_Discussions: [GitHub][Rusty Playdate Gh-discuss], [Matrix][Rusty Playdate Matrix]._ + +[playdate-symbolize-v0.2.0]: https://crates.io/crates/playdate-symbolize/0.2.0 +[cargo-target-auto-discovery]: https://doc.rust-lang.org/cargo/reference/cargo-targets.html#target-auto-discovery +[pdb-pdxinfo-override]: https://github.com/boozook/playdate/blob/main/support/build/README.md#target-specific-package-info "More about target-specific package-info" +[cargo-playdate gh]: https://github.com/boozook/playdate/tree/main/cargo "cargo-playdate tool is a part of 'Rusty Playdate' project" +[Rusty Playdate Release]: https://github.com/boozook/playdate/releases/tag/2024.06.18 "Release from June 18, 2024" +[Rusty Playdate]: https://github.com/boozook/playdate +[Rusty Playdate Gh-discuss]: https://github.com/boozook/playdate/discussions +[Rusty Playdate Masto]: https://gamedev.social/@playdaters +[Rusty Playdate Matrix]: https://matrix.to/#/#playdate.rs:matrix.org +[playdate]: https://play.date/ "Playdate is a fairly new console reminiscent of a GameBoy with a crank handle geared towards indie games." + + +## Library Updates + +### [egui_ratatui][egui_ratatui] + +{{ image_figure( + alt="egui_ratatui running in Bevy" + src="egui_ratatui.jpg") }} + +[egui_ratatui][egui_ratatui] by [gold-silver-copper][gold] is an [egui][egui] widget that is also a [ratatui][ratatui] backend. +It allows you to create Terminal User Interfaces (TUIs) inside egui. +You can try out the [web demo][erat_web] to see it in action. + +The current release is the product of months of iteration, and is now "stable". +It is Wasm compatible and engine agnostic: use it in Bevy, *Quad, eframe, pixels, etc. + +`egui_ratatui` is currently being used for the development of a game and +educational software at a startup with no issues so far. + +[egui_ratatui]: https://github.com/gold-silver-copper/egui_ratatui +[gold]: https://github.com/gold-silver-copper +[ratatui]: https://github.com/ratatui-org/ratatui +[egui]: https://github.com/emilk/egui +[erat_web]: https://gold-silver-copper.github.io/ + +### [FMOD-oxide][fmod-oxide] + +FMOD-oxide brings safe rust bindings to the FMOD sound engine. +This crate tries to be as rusty and low-cost as possible, without comprimising on any APIs. +Certain APIs, such as loading banks from a pointer, are marked as unsafe, but are still available for use. + +[fmod-oxide]: https://crates.io/crates/fmod-oxide + +### [Bevy Lunex][bevy-lunex] + +{{ image_figure( + alt="Bevypunk: a recreation of Cyberpunk 2077's UI made with Lunex" + src="bevypunk.jpg") }} + +Lunex is a path based retained layout engine for Bevy entities, built around vanilla Bevy ECS. +It gives you the ability to make your own custom UI using regular ECS like every other part of your app. +Notably, this includes world-space 3D UI! + +The above screenshot is from the [Bevypunk UI Web Demo][bevypunk], which includes a main menu and a character creation screen. + +You can get started by reading the [bevy_lunex book][bevy-lunex-book]. + +[bevy-lunex]: https://github.com/bytestring-net/bevy_lunex +[bevy-lunex-book]: https://bytestring-net.github.io/bevy_lunex/ +[bevypunk]: https://idedary.itch.io/bevypunk + +### [haalka] + +{{ video_figure(type="video/mp4", src="haalka.mp4", caption="A Minecraft-like UI made with haalka") }} + +হালকা: _in bengali, haalka means "light" (e.g. not heavy) and can also be used to mean "easy"_ + +Haalka is an ergonomic reactivity library powered by the [FRP](https://en.wikipedia.org/wiki/Functional_reactive_programming) signals of [futures-signals](https://github.com/Pauan/rust-signals). +It is a port of the web UI libraries [MoonZoon](https://github.com/MoonZoon/MoonZoon) and [Dominator](https://github.com/Pauan/rust-dominator) +and offers the same signal semantics as a thin layer on top of bevy_ui. + +While haalka is primarily targeted at UI and provides high level UI abstractions as such, +its core abstraction can be used to manage signals-powered reactivity for any entity, not just bevy_ui nodes. + +[haalka]: https://github.com/databasedav/haalka + +### [bevy_light_2d][bevy_light_2d] + +{{ image_figure( + alt="A candle shining 2D light" + src="bevy_light_2d.gif" + caption="A candle shining 2D light") }} + +bevy_light_2d is a new general purpose 2D lighting for the Bevy game engine. +Designed to be simple to use, yet expressive enough to fit a variety of needs. Features include: + +- Component driven design +- Configurable point lights +- Camera-specific ambient light +- Single-camera rendering + +[bevy_light_2d]: https://github.com/jgayfer/bevy_light_2d + +### [bevy_hanabi][bevy_hanabi] 0.11 + +{{ image_figure( + alt="Trails in Hanabi" + src="bevy_hanabi_trails.gif" + caption="Trails in Hanabi") }} + +Hanabi is a GPU particle system plugin for the Bevy game engine. +The most notable new feature in [bevy_hanabi 0.11][bevy_hanabi] is support for trails and ribbons. + +[bevy_hanabi]: https://github.com/djeedai/bevy_hanabi + +### [berdicles][berdicles] + +{{ image_figure( + alt="A fountain of particles" + src="berdicles.jpg" + caption="A fountain of particles") }} + +berdicles is an expressive CPU particle system for the Bevy engine. Features include: + +- Instancing based CPU particles. +- Expressive non-physics based particle traits. +- Familiar setup with Bevy's native Material and Mesh. +- Particles as emitters. +- Mesh based particle trails. +- Particle events that spawn other particles. +- Billboard particles. + +[berdicles]: https://github.com/mintlu8/berdicles + +### Other Library Updates and Releases + +- [glam 0.28]: `glam` is a foundational crate when it comes to math in general in Rust. + For example, its types are directly visible in the `Vec` types Bevy consumes and re-exports, like `Vec3`. + v0.28 brings AArch64 NEON SIMD support as well as a couple smaller breaking changes. +- [gdext-coroutines]: Run Rust coroutines in Godot 4.2+ (through GDExtension), inspired on Unity's Coroutines design. +- [FunDSP 0.18]: FunDSP is an audio DSP ([digital signal processing](https://en.wikipedia.org/wiki/Digital_signal_processing)) + library for audio processing and synthesis. This release is a rewrite that adds no_std and SIMD support. + +[glam 0.28]: https://github.com/bitshifter/glam-rs +[gdext-coroutines]: https://github.com/Houtamelo/gdext_coroutines +[FunDSP 0.18]: https://github.com/SamiPerttu/fundsp + +## Interviews + +### [Metalmancy @ OpenSauce][metalmancy_interview] + +{{ image_figure( + alt="Arcade cabinet close up" + src="metalmancy_interview.jpg") }} + +[Metalmancy][metalmancy_website] are creating custom and configurable arcade machines. Their flagship game [Thetawave] is coded in Rust. + +Hyelim of [Framework][framework_website] interviewed Carlo and Joanna on their games +and arcade machines at [OpenSauce][opensauce_website]. + +[metalmancy_interview]: https://www.youtube.com/watch?v=qUIAnZ0cvvo&t=291s +[metalmancy_website]: https://www.micronote.tech/ +[framework_website]: https://frame.work +[opensauce_website]: https://opensauce.com/ +[Thetawave]: https://store.steampowered.com/app/2427510/Thetawave + +### [Tiny Glade Developers Discuss Bevy, Proceduralism, Publishers & Cozy Games][tiny-glade-interview] + +{{ image_figure( + alt="An idyllic scenery made in Tidy Glade" + src="tiny-glade.jpg") }} + +To celebrate the release of Tiny Glade's [demo version][tiny-glade-steam], Pounce Light's Anastasia Opara and +Tomasz Stachowiak have joined 80 Level [in an interview][tiny-glade-interview] to discuss the game's history, proceduralism, +Bevy, Rust, self-publishing, and the "cozy games" genre. + + +[tiny-glade-interview]: https://80.lv/articles/exclusive-tiny-glade-developers-discuss-bevy-proceduralism-publishers-cozy-games +[tiny-glade-steam]: https://store.steampowered.com/app/2198150/Tiny_Glade/ + + + +## Blog Posts + +### [Dioxus Labs + "High-level Rust"][dioxus-post] + +[This post][dioxus-post] by the founder of [Dioxus Labs][dioxus-labs] is a direct response to +the recently published ["Leaving Rust gamedev after 3 years"][leaving-post] by LogLogGames. +If you've missed the original post, it has made its rounds as a well-written critique of Rust's gamedev ecosystem and shortcomings +inherent to the language itself. + +[Dioxus Labs + "High-level Rust"][dioxus-post] is a detailed response to the original post, outlining concrete steps to improve the situation +and signaling the author's readiness to fund the development of features they see as necessary for the ecosystem to thrive. + +_Discussions: [lobste.rs](https://lobste.rs/s/dsqumn/dioxus_labs_high_level_rust), +[/r/rust](https://www.reddit.com/r/rust/comments/1dkzzn5/dioxus_labs_highlevel_rust/), +[Hacker News](https://news.ycombinator.com/item?id=40766805)_ + +[dioxus-post]: https://dioxus.notion.site/Dioxus-Labs-High-level-Rust-5fe1f1c9c8334815ad488410d948f05e +[dioxus-labs]: https://dioxuslabs.com/ +[leaving-post]: https://loglog.games/blog/leaving-rust-gamedev/ + +### Virtual Geometry in Bevy 0.14 + +{{ image_figure( + alt="The Stanford bunny split into meshlets" + src="meshlets.jpg" + caption="The Stanford bunny split into meshlets") }} + +Ever wondered how [Unreal 5's Nanite][nanite] works under the hood? +Jasmine, who reimplemented the virtual geometry technology for Bevy's upcoming 0.14 release, +wrote a [post][meshlets-post] explaining the concepts and the nitty-gritty details of the implementation. +The post is very technical in nature, so if you've never heard of this technology before, +they recommend you first watch Brian Karis' SIGGRAPH 2021 lecture [A Deep Dive into Nanite Virtualized Geometry][nanite-talk] ([slides][nanite-slides]). + +[nanite]: https://dev.epicgames.com/documentation/en-us/unreal-engine/nanite-virtualized-geometry-in-unreal-engine +[meshlets-post]: https://jms55.github.io/posts/2024-06-09-virtual-geometry-bevy-0-14/ +[nanite-talk]: https://www.youtube.com/watch?v=eviSykqSUUw +[nanite-slides]: https://advances.realtimerendering.com/s2021/Karis_Nanite_SIGGRAPH_Advances_2021_final.pdf + +## Jobs + +Ubisoft Montreal is searching for an [online Rust programmer][ubisoft-job] +for an unannounced project. + +[ubisoft-job]: https://www.ubisoft.com/en-us/company/careers/search/743999993500090-programmer-online-unannounced-project + +## Engine Newsletters + +- This Week In Bevy + - [Tiny Glade, VJ performances, and 2d lighting](https://thisweekinbevy.com/issue/2024-06-03-tiny-glade-vj-performances-and-2d-lighting) + - [Bevy 0.14-rc.2, Powerglove, and Soup!](https://thisweekinbevy.com/issue/2024-06-10-bevy-014-rc2-powerglove-and-soup) + - [Meshlets, Stable Interpolation, and Generalized ECS Reactivity with Observers!](https://thisweekinbevy.com/issue/2024-06-17-meshlets-stable-interpolation-and-generalized-ecs-reactivity-with-observers) + - [Water, Global Illumination, and UI toolkits](https://thisweekinbevy.com/issue/2024-06-24-water-global-illumination-and-ui-toolkits) +- This Week In Quads + - [`blocking_event_loop` on ios opengl/metal, Docker article, and libxkbcommon on NixOS](https://macroquad.rs/twiq/week5/) + +## Future News + + + +Editing this newsletter wouldn't be possible without [your contributions][news_current_prs]. +Thanks to everyone who helped us this month! + +If you want something mentioned in the next newsletter, [send us a pull request][pr]. + +You can also get an early look at pending issues for the [next newsletter][news_future_prs]. + +[news_current_prs]: https://github.com/rust-gamedev/rust-gamedev.github.io/pulls?q=is%3Apr+in%3Atitle+%27N52%27 +[news_future_prs]: https://github.com/rust-gamedev/rust-gamedev.github.io/pulls?q=is%3Apr+in%3Atitle+%27N53%27 + +------ + +That's all news for today, thanks for reading! + +Also, subscribe to our socials if you want to receive fresh news! +- X/Twitter: [@rust_gamedev][@x_rust_gamedev] +- Mastodon: [@rust_gamedev][@mastodon_rust_gamedev] +- Reddit: [/r/rust_gamedev][/r/rust_gamedev] + + +**Discuss this post on**: +[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/1dudvrk/this_month_in_rust_gamedev_june_edition_released/), +[Lemmy](https://lemmy.world/post/17176132), +[Mastodon](https://mastodon.gamedev.place/@rust_gamedev/112722731870962460), +[X/Twitter](hhttps://x.com/rust_gamedev/status/1808489666426851340), +[Hacker News](https://news.ycombinator.com/item?id=40865690), +[Discord](https://discord.gg/yNtPTb2). + +[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev +[@x_rust_gamedev]: https://twitter.com/rust_gamedev +[@mastodon_rust_gamedev]: https://mastodon.gamedev.place/@rust_gamedev diff --git a/content/news/052/meshlets.jpg b/content/news/052/meshlets.jpg new file mode 100644 index 000000000..04659ac73 Binary files /dev/null and b/content/news/052/meshlets.jpg differ diff --git a/content/news/052/metalmancy_interview.jpg b/content/news/052/metalmancy_interview.jpg new file mode 100644 index 000000000..98361d12e Binary files /dev/null and b/content/news/052/metalmancy_interview.jpg differ diff --git a/content/news/052/ssr.jpg b/content/news/052/ssr.jpg new file mode 100644 index 000000000..be7913609 Binary files /dev/null and b/content/news/052/ssr.jpg differ diff --git a/content/news/052/tiny-glade.jpg b/content/news/052/tiny-glade.jpg new file mode 100644 index 000000000..62f8a4eec Binary files /dev/null and b/content/news/052/tiny-glade.jpg differ diff --git a/content/news/052/untitled-pixel-wizards-game.mp4 b/content/news/052/untitled-pixel-wizards-game.mp4 new file mode 100644 index 000000000..e4b8cced7 Binary files /dev/null and b/content/news/052/untitled-pixel-wizards-game.mp4 differ diff --git a/content/news/052/wor.jpg b/content/news/052/wor.jpg new file mode 100644 index 000000000..acb2bbd16 Binary files /dev/null and b/content/news/052/wor.jpg differ diff --git a/content/news/053/chuot.png b/content/news/053/chuot.png new file mode 100644 index 000000000..41c566571 Binary files /dev/null and b/content/news/053/chuot.png differ diff --git a/content/news/053/dos-tilers.jpg b/content/news/053/dos-tilers.jpg new file mode 100644 index 000000000..e7f42ab84 Binary files /dev/null and b/content/news/053/dos-tilers.jpg differ diff --git a/content/news/053/godot_rapier.mp4 b/content/news/053/godot_rapier.mp4 new file mode 100644 index 000000000..12dd90036 Binary files /dev/null and b/content/news/053/godot_rapier.mp4 differ diff --git a/content/news/053/index.md b/content/news/053/index.md new file mode 100644 index 000000000..1789dcfe6 --- /dev/null +++ b/content/news/053/index.md @@ -0,0 +1,247 @@ ++++ +title = "This Month in Rust GameDev #53 - July 2024" +transparent = true +date = 2024-08-03 +draft = true ++++ + + + + + +Welcome to the 53th 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] + +You can follow the newsletter creation process +by watching [the coordination issues][coordination]. +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 +[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination + +- [Announcements](#announcements) +- [Game Updates](#game-updates) +- [Engine Updates](#engine-updates) +- [Learning Material Updates](#learning-material-updates) +- [Tooling Updates](#tooling-updates) +- [Library Updates](#library-updates) +- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github) +- [Other News](#other-news) +- [Meeting Minutes](#meeting-minutes) +- [Discussions](#discussions) +- [Requests for Contribution](#requests-for-contribution) +- [Jobs](#jobs) +- [Bonus](#bonus) +- [Future news](#future-news) + + + +## Announcements + +## Game Updates + +### [Tilers (DOS game)][dos-tilers] + +{{ image_figure( + alt="Screenshot from Tilers", + src="dos-tilers.jpg", + caption="Shuffled tiles of a photograph in Tilers. One of the tiles is being moved horizontally.") }} + +Tilers ([GitHub][dos-tilers-gh]) by [@E_net4] +is an open source tile permutation puzzle game, +based on the classic [15 puzzle][wiki15]. +It was developed specifically for MS-DOS machines, +by combining a nightly Rust compiler with +the [DJGPP toolchain][djgpp] and the custom object converter [elf2djgpp]. + +A playable version on the browser (using an emulator) +is available on GitHub and [itch.io][dos-tilers]. +The game was also submitted to the [DOS Games July 2024 Jam][dosjam]. + +[dos-tilers-gh]: https://github.com/Enet4/dos-tilers +[@E_net4]: https://hachyderm.io/@E_net4 +[wiki15]: https://en.wikipedia.org/wiki/15_puzzle +[djgpp]: https://www.delorie.com/djgpp/ +[dos-tilers]: https://e-net4.itch.io/dos-tilers +[elf2djgpp]: https://github.com/cknave/elf2djgpp +[dosjam]: https://itch.io/jam/dos-games-july-2024-jam + +## Engine Updates + +### [Chuột][chuot-website] + +{{ image_figure( + alt="Bunnymark example", + src="chuot.png", + caption="[Bunnymark example](https://tversteeg.nl/chuot/examples/bunnymark/)") }} + +Chuột ([Website][chuot-website], [GitHub][chuot-github]) by [@tversteeg] +is an AGPL licensed game engine for 2D pixel-art games. + +The main goal of the Chuột (Vietnamese for mouse) game engine is to make it easy to create and deploy small FOSS games. +The license has been chosen to foster an open community of game development. + +The Chuột game engine is standing on the shoulders of giants of the Rust ecosystem, +such as [winit] for window handling and [wgpu] for drawing graphics. + +Recently, [version 0.2][chuot-0.2] has been released, which includes a big rewrite +of the internal system and simplifying a lot of the API. +Many rough and inconsistent parts have been cleaned up and renamed, +resulting in quite a lot of breaking changes. +This mainly happened because the developer was still finding a proper direction for the engine. +Asset loading has been improved, especially asset hot-reloading, +which is now also enabled by defining an external asset source. + +_Check out the [web examples][chuot-examples]!_ + +[chuot-website]: https://tversteeg.nl/chuot +[chuot-github]: https://github.com/tversteeg/chuot +[chuot-0.2]: https://github.com/tversteeg/chuot/releases/tag/chuot-v0.2.0 +[chuot-examples]: https://tversteeg.nl/chuot/examples +[winit]: https://docs.rs/winit +[wgpu]: https://docs.rs/wgpu +[@tversteeg]: https://github.com/tversteeg + +## Learning Material Updates + +## Tooling Updates + +## Library Updates + +### Godot Rapier: Rewrite it in Rust + +{{ video_figure( + type="video/mp4", + alt="Godot + Rapier logo make up the 'Godot Rapier' logo ; a few balls fall on it, showing off soft physics.", + src="godot_rapier.mp4", + caption="Godot Rapier showcase") }} + +[Godot Rapier][godot_rapier_github] written by [@Ughuuu](https://github.com/Ughuuu) +is a physics plugin for [Godot][godot] that uses [Rapier][rapier], a popular +physics engine written in Rust. + +Godot Rapier was originally written in C++, +and is now in the final stage of being completely rewritten in Rust. + +Its author wrote [an article on Reddit][godot_rapier_reddit] +about their experience with the rewrite. +Note that in the meantime the web exports have been fixed. + +Godot Rapier's website was adopted as a Rapier subdomain at +[https://godot.rapier.rs/](https://godot.rapier.rs/). +There you can also find a [progress overview](https://godot.rapier.rs/docs/progress). + +[rapier]: https://rapier.rs/ +[godot_rapier_github]: https://github.com/appsinacup/godot-rapier-physics +[godot_rapier_reddit]: https://www.reddit.com/r/godot/comments/1dtoufn/rewriting_godots_physics_server_in_rust/ +[godot]: https://godotengine.org/ + +## Popular Workgroup Issues in GitHub + + + +## Other News + + + +## 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 + +## Discussions + + + +## Requests for Contribution + + + +## Jobs + + + +## Bonus + + + +## Future news + + + +Editing this newsletter wouldn't be possible without [your contributions][news_current_prs]. +Thanks to everyone who helped us this month! + +If you want something mentioned in the next newsletter, [send us a pull request][pr]. + +You can also get an early look at pending issues for the [next newsletter][news_future_prs]. + +[news_current_prs]: https://github.com/rust-gamedev/rust-gamedev.github.io/pulls?q=is%3Apr+in%3Atitle+%27N53%27 +[news_future_prs]: https://github.com/rust-gamedev/rust-gamedev.github.io/pulls?q=is%3Apr+in%3Atitle+%27N54%27 + +------ + +That's all news for today, thanks for reading! + +Also, subscribe to our socials if you want to receive fresh news! +- X/Twitter: [@rust_gamedev][@x_rust_gamedev] +- Mastodon: [@rust_gamedev][@mastodon_rust_gamedev] +- Reddit: [/r/rust_gamedev][/r/rust_gamedev] + + + +[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev +[@x_rust_gamedev]: https://twitter.com/rust_gamedev +[@mastodon_rust_gamedev]: https://mastodon.gamedev.place/@rust_gamedev diff --git a/sass/_extra.scss b/sass/_extra.scss index edcba50a6..2f4ebe628 100644 --- a/sass/_extra.scss +++ b/sass/_extra.scss @@ -10,7 +10,7 @@ li { margin: 15px 0; } -pre > code { +pre>code { // To avoid grey background on code blocks. background-color: inherit; } @@ -83,14 +83,24 @@ h6:hover .anchor { visibility: visible; } -.post-content p img { +.post-content p img, +.post-content figure img, +.post-content figure video { display: block; box-sizing: border-box; - margin: 16px auto; padding: 8px; border: 1px solid #e8e8e8; } +.post-content p img { + margin: 16px auto; +} + +.post-content figure img, +.post-content figure video { + margin: 0 auto; +} + .post-link { display: inline-block; } @@ -99,14 +109,26 @@ h6:hover .anchor { margin-bottom: 0; } -a.btn { +input, +button { + font-size: inherit; +} + +input { + min-width: 0; // Allow the input to shrink on small devices. +} + +a.btn, +// Trick to increase the specificity and win against rules such as a:visited +.btn { text-decoration: none; border-radius: 3px; font-weight: 600; - border: 1px solid transparent; + border: none; box-sizing: border-box; display: inline-block; padding: 0.4em 2em; + transition: background-color 125ms; background-color: $brand-color; color: $background-color; @@ -114,15 +136,67 @@ a.btn { &:hover { color: lighten($background-color, 10); - border-color: $brand-color; + background-color: lighten($brand-color, 5); + } + + &:active { + background-color: darken($brand-color, 5); } } -// A hack for image captions. -// See https://stackoverflow.com/questions/19331362/using-an-image-caption-in-markdown-jekyll -img + em, -a:first-child + em:last-child { +input[type=email] { + border-radius: 3px; + border: 1px solid $brand-color; + box-sizing: border-box; + padding: .4em; +} + +figcaption { display: block; text-align: center; - color: $grey-color; + color: #595959; + font-size: inherit; + margin-top: .5em; +} + +video { + max-width: 100%; +} + +.email-form { + display: grid; + margin-top: $spacing-unit; + grid-template-columns: auto auto; + justify-content: center; + gap: .6em 1em; + background-color: color-mix(in oklab, $brand-color 20%, #fff); + padding: $spacing-unit * .5; + align-items: center; + border-radius: 3px; + + .email-form__icon { + width: 5em; + height: 5em; + --icon-stroke-color: #{$brand-color}; + --icon-fill-color: rgba(255, 255, 255, .4); + } + + .email-form__description { + max-width: 18em; + } + + .email-form__input { + grid-column: 1 / 3; + } +} + +.email-input { + display: grid; + grid-template-columns: repeat(2, auto); + gap: 5px; + + label { + grid-column: 1 / 3; + font-size: .8em; + } } diff --git a/static/.well-known/atproto-did b/static/.well-known/atproto-did new file mode 100644 index 000000000..8049e9f03 --- /dev/null +++ b/static/.well-known/atproto-did @@ -0,0 +1 @@ +did:plc:kih2m3ettp3ybik33kypdwl4 diff --git a/static/android-chrome-192x192.png b/static/android-chrome-192x192.png index c32084eb5..0c1b39955 100644 Binary files a/static/android-chrome-192x192.png and b/static/android-chrome-192x192.png differ diff --git a/static/android-chrome-512x512.png b/static/android-chrome-512x512.png index 531c29991..8639e26c1 100644 Binary files a/static/android-chrome-512x512.png and b/static/android-chrome-512x512.png differ diff --git a/static/apple-touch-icon.png b/static/apple-touch-icon.png index 8f274d46b..daca5869a 100644 Binary files a/static/apple-touch-icon.png and b/static/apple-touch-icon.png differ diff --git a/static/favicon-16x16.png b/static/favicon-16x16.png index d677e8868..b0df4cc5a 100644 Binary files a/static/favicon-16x16.png and b/static/favicon-16x16.png differ diff --git a/static/favicon-32x32.png b/static/favicon-32x32.png index 6fca9d487..6f1e619ba 100644 Binary files a/static/favicon-32x32.png and b/static/favicon-32x32.png differ diff --git a/static/favicon.svg b/static/favicon.svg new file mode 100644 index 000000000..cb5b5b1f6 --- /dev/null +++ b/static/favicon.svg @@ -0,0 +1 @@ + diff --git a/static/intro-icons.svg b/static/intro-icons.svg index 1cdf37b2a..dbbbe1470 100644 --- a/static/intro-icons.svg +++ b/static/intro-icons.svg @@ -56,4 +56,20 @@ - \ No newline at end of file + + + + + + + + + + + + + + + + + diff --git a/static/logo.png b/static/logo.png deleted file mode 100644 index a123932ac..000000000 Binary files a/static/logo.png and /dev/null differ diff --git a/static/logo.svg b/static/logo.svg new file mode 100644 index 000000000..e5b3b15dc --- /dev/null +++ b/static/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/logo_small.png b/static/logo_small.png deleted file mode 100644 index 701c24ec6..000000000 Binary files a/static/logo_small.png and /dev/null differ diff --git a/static/social-card.png b/static/social-card.png new file mode 100644 index 000000000..de5469d84 Binary files /dev/null and b/static/social-card.png differ diff --git a/templates/includes/email_signup.html b/templates/includes/email_signup.html new file mode 100644 index 000000000..66cd0797a --- /dev/null +++ b/templates/includes/email_signup.html @@ -0,0 +1,22 @@ +
+ +
+ \ No newline at end of file diff --git a/templates/includes/header.html b/templates/includes/header.html index 921ea339e..537f71ca4 100644 --- a/templates/includes/header.html +++ b/templates/includes/header.html @@ -1,7 +1,7 @@