8000 Merge branch 'source' into adding-rusteroids-n36 · filtoid/rust-gamedev.github.io@000b573 · GitHub
[go: up one dir, main page]

Skip to content

Commit 000b573

Browse files
authored
Merge branch 'source' into adding-rusteroids-n36
2 parents 9d3ea00 + 5c0cdf8 commit 000b573

13 files changed

+298
-0
lines changed

content/news/036/astar-search.png

72.3 KB
Loading

content/news/036/bevy_terrain.jpg

294 KB
Loading

content/news/036/botnet.png

21.9 KB
Loading
Loading

content/news/036/cybergate.jpg

161 KB
Loading

content/news/036/dims-concept-art.jpg

126 KB
Loading

content/news/036/index.md

Lines changed: 298 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,204 @@ include:
8888
[Tetra]: https://github.com/17cupsofcoffee/tetra
8989
[steamworks]: https://crates.io/crates/steamworks
9090

91+
### [CyberGate][cybergate-yt]
92+
93+
![hundreds of colliding colored balls in the air](entities.png)
94+
_The server and clients are able to smoothly handle
95+
over a thousand balls rained from above_
96+
97+
CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]) by CyberSoul
98+
is a new multiplayer project that aims at procedurally generating distinct
99+
universes and gameplay experiences. CyberGate is the name of the main world
100+
where universes can be created and accessed by quantum portals.
101+
102+
Recent updates:
103+
104+
- Bandwidth became 16 times smaller by implementing entity prioritization
105+
\+ other techniques.
106+
- Interpolation and Jitter prediction makes entities way smoother.
107+
- Automatic and Reliable Spawn and Despawn of entities.
108+
- Many other features and optimizations to do with rapier 3d physics,
109+
wgpu renderer and quinn (quic) protocol.
110+
111+
[Join the Discord server][cybergate-dis] to participate in tests.
112+
113+
_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/vy7vms/multiplayer_stress_test_1_million_balls)_
114+
115+
[cybergate-yt]: https://youtube.com/channel/UClrsOso3Xk2vBWqcsHC3Z4Q
116+
[cybergate-dis]: https://discord.gg/R7DkHqw7zJ
117+
118+
### [Botnet]
119+
120+
![botnet screenshot](botnet.png)
121+
122+
[Botnet] is an upcoming programming-based multiplayer game, where you write
123+
scripts (compiled to WebAssembly) to control robots. Coordinate your network
124+
of bots to gather resources, build new industry, and expand your control of
125+
the server!
126+
127+
This month was primarily spent on BotnetReplayViewer - a visual program to
128+
watch matches, and inspect entity data.
129+
130+
Additionally, the antenna structure was added. Building an antenna gives you
131+
control over the bay (room) it's in, letting you build additional structures,
132+
and increasing the total number of bots you can control. Bots can also use
133+
antennas to store resources.
134+
135+
Interested in contributing? Head over to the
136+
[github discussion page][botnet_ideas] and suggest some ideas!
137+
138+
[Botnet]: https://github.com/JMS55/botnet
139+
[botnet_ideas]: https://github.com/JMS55/botnet/discussions/categories/ideas
140+
141+
### [Re-Rolling!]
142+
143+
![Re-rolling gameplay](re-rolling_gameplay.png)
144+
145+
[Re-Rolling!] by [@mystalice](https://twitter.com/mystalice) is a top-down 2D
146+
survival shooter where you fight off a horde of rats using weapons you randomly
147+
rolled.
148+
149+
The game was created for [GMTK Jam 2022][rr_gmtk2022] in 48 hours and was
150+
heavily inspired by [20 Minutes Till Dawn][rr_20minutes].
151+
152+
Re-Rolling! was made with Bevy using heron for physics, bevy_egui for in-game
153+
UI, and a handful of other helpful crates and plugins. You can browse the source
154+
on [GitHub][rr_github].
155+
156+
[Re-Rolling!]: https://mystal.itch.io/re-rolling
157+
[rr_gmtk2022]: https://itch.io/jam/gmtk-jam-2022
158+
[rr_20minutes]: https://store.steampowered.com/app/1966900/20_Minutes_Till_Dawn/
159+
[rr_github]: https://github.com/mystal/re-rolling
160+
91161
## Engine Updates
92162

163+
### [Bevy v0.8][bevy-blog]
164+
165+
![bevy terrain](bevy_terrain.jpg)
166+
_Bevy-shaped mountains in a Bevy-based Witcher 3 terrain texturing tool built by
167+
rmemr_
168+
169+
[Bevy][bevy] is a refreshingly simple data-driven game engine built in Rust. It
170+
is [free and open source][bevy-git] forever!
171+
172+
Bevy 0.8 was a massive community effort. You can check out the [full release
173+
blog post here][bevy-blog], but here are some highlights:
174+
175+
- [New Material System][bevy-materials]
176+
- [Camera-driven Rendering][bevy-camera]
177+
- [Built-in Shader Modularization][bevy-shader-mod]
178+
- [Spot Lights][bevy-spotlights]
179+
- [Visibility Inheritance][bevy-visibility]
180+
- [Upgraded to wgpu 0.13][bevy-wgpu]
181+
- [Automatic Mesh Tangent Generation][bevy-tangent]
182+
- [Renderer Optimizations][bevy-render-opt]
183+
- [Scene Bundle][bevy-scene]
184+
- [Scripting / Modding Progress][bevy-scripting]
185+
- [ECS Query Ergonomics and Usability][bevy-ecs-ergo]
186+
- [ECS Internals Refactors][bevy-refactors]
187+
- [Reflection Improvements][bevy-reflect]
188+
- [Hierarchy Commands][bevy-hierarchy]
189+
- [Bevy UI Now Uses Taffy][bevy-taffy]
190+
191+
_Discussions:
192+
[/r/rust](https://www.reddit.com/r/rust/comments/wc0sqc/bevy_08/),
193+
[Hacker News](https://news.ycombinator.com/item?id=32287828),
194+
[Twitter](https://twitter.com/cart_cart/status/1553411157662187521)_
195+
196+
[bevy]: https://bevyengine.org
197+
[bevy-git]: https://github.com/bevyengine/bevy
198+
[bevy-blog]: https://bevyengine.org/news/bevy-0-8
199+
[bevy-materials]: https://bevyengine.org/news/bevy-0-8/#new-material-system
200+
[bevy-camera]: https://bevyengine.org/news/bevy-0-8/#camera-driven-rendering
201+
[bevy-spotlights]: https://bevyengine.org/news/bevy-0-8/#spotlights
202+
[bevy-visibility]: https://bevyengine.org/news/bevy-0-8/#visibility-inheritance
203+
[bevy-shader-mod]: https://bevyengine.org/news/bevy-0-8/#built-in-shader-modularization
204+
[bevy-wgpu]: https://bevyengine.org/news/bevy-0-8/#wgpu-0-13-new-wgsl-shader-syntax
205+
[bevy-tangent]: https://bevyengine.org/news/bevy-0-8/#automatic-mesh-tangent-generation
206+
[bevy-render-opt]: https://bevyengine.org/news/bevy-0-8/#render-phase-sorting-optimization
207+
[bevy-scene]: https://bevyengine.org/news/bevy-0-8/#scene-bundle
208+
[bevy-scripting]: https://bevyengine.org/news/bevy-0-8/#scripting-modding-progress-untyped-ecs-apis
209+
[bevy-ecs-ergo]: https://bevyengine.org/news/bevy-0-8/#query-intoiter
210+
[bevy-refactors]: https://bevyengine.org/news/bevy-0-8/#ecs-lifetimed-pointers
211+
[bevy-reflect]: https://bevyengine.org/news/bevy-0-8/#bevy-reflection-improvements
212+
[bevy-hierarchy]: https://bevyengine.org/news/bevy-0-8/#hierarchy-commands
213+
[bevy-taffy]: https://bevyengine.org/news/bevy-0-8/#taffy-migration-a-refreshed-ui-layout-library
214+
215+
### [Dims][dims-website]
216+
217+
![Concept art of a player creating a world in Dims](dims-concept-art.jpg)
218+
219+
[Dims][dims-website] ([Twitter][dims-twitter], [Discord][dims-discord],
220+
[YouTube][dims-youtube]) is a pre-alpha collaborative open-world
221+
creation platform.
222+
Users can hop in sessions and build a game together, allowing everyone
223+
to bring out their inner game-maker.
224+
225+
In July, development continued to make great strides. Some of the highlights
226+
include:
227+
228+
- Continued work on the audio system, including in-game graphs of attenuation
229+
and other audio-related functions
230+
- The introduction of an intent system that allows for user actions to be
231+
undone and replayed arbitrarily
232+
- A complete UI facelift using Material UI icons and a new design language
233+
- A new scripting system using WebAssembly + WASI and Rust as a guest language
234+
(look forward to an article on this soon!)
235+
- The beginnings of a shared asset database that lets you and your team easily
236+
share assets amongst each other and with other projects
237+
- Various infrastructural and rendering fixes, including more accurate PBR
238+
239+
Want to try Dims out for yourself? Come join the [Discord][dims-discord] to be
240+
notified of future public tests, see the latest features before everyone else,
241+
and to talk to the devs personally.
242+
243+
[dims-website]: https://dims.co
244+
[dims-twitter]: https://twitter.com/DimsWorlds
245+
[dims-discord]: https://discord.gg/Z5CAVmNE57
246+
[dims-youtube]: https://youtube.com/channel/UCR5gOwS7uSl0a0dl7MLQoqg
247+
93248
## Learning Material Updates
94249

250+
### Pathfinding in Rust
251+
252+
![Example of the results of doing an A* search from a start node to a goal node](astar-search.png)
253+
254+
[Pathfinding in Rust: A tutorial with examples](https://blog.logrocket.com/pathfinding-rust-tutorial-examples)
255+
is an article with examples of how to use the [`pathfinding`](https://crates.io/crates/pathfinding)
256+
crate to do breadth-first, Dijkstra's, and A* search. It links to the
257+
[gregstoll/rust-pathfinding](https://github.com/gregstoll/rust-pathfinding)
258+
repo which has working code for all of these.
259+
260+
### [Creating mountains from planes with vertex shaders and Bevy][chrisbiscardi-vid1]
261+
262+
[![vertex shaders example](creating-mountains-from-planes-with-vertex-shaders-and-bevy.png)][chrisbiscardi-vid1]
263+
_Creating mountains from planes with vertex shaders and Bevy_
264+
265+
[@chrisbiscardi] published a [video][chrisbiscardi-vid1]
266+
about using the new Material shader APIs in Bevy 0.8 to transform the
267+
vertex positions in a custom mesh plane using a vertex shader.
268+
269+
_Discussions: [Twitter](https://twitter.com/chrisbiscardi/status/1549089599971938304)_
270+
271+
[chrisbiscardi-vid1]: https://youtube.com/watch?v=85uJc81SQZ4
272+
[@chrisbiscardi]: https://twitter.com/chrisbiscardi
273+
274+
### [What's in a wgsl fragment shader? ft Bevy][chrisbiscardi-vid2]
275+
276+
[![vertex shaders example](creating-mountains-from-planes-with-vertex-shaders-and-bevy.png)][chrisbiscardi-vid2]
277+
_What's in a wgsl fragment shader? ft Bevy_
278+
279+
[@chrisbiscardi] published a [video][chrisbiscardi-vid2]
280+
that introduces the new Material APIs in Bevy 0.8. It covers AsBindGroup,
281+
uniforms, and using Perlin Noise in a fragment shader to render different
282+
colors onto a cube in a variety of ways.
283+
284+
_Discussions: [Twitter](https://twitter.com/chrisbiscardi/status/1546909993726726144)_
285+
286+
[chrisbiscardi-vid2]: https://youtube.com/watch?v=SOOOc9-joVo
287+
[@chrisbiscardi]: https://twitter.com/chrisbiscardi
288+
95289
### [Rusteroids][rusteroids-youtube-playlist]
96290

97291
![A screenshot of the latest Rusteroids tutorial](./rusteroids-screenshot-tutorial15.png)
@@ -117,6 +311,27 @@ Twitter!
117311

118312
## Tooling Updates
119313

314+
### [NES Bundler][nes-bundler]
315+
316+
![NES Bundler running Data Man with GUI showing](nes-bundler.png)
317+
_NES Bundler in action_
318+
319+
[NES Bundler][nes-bundler] by [@tedsteen].
320+
Did you make a NES-game but none of your friends own a Nintendo? Don't worry.
321+
Put your ROM and configuration in NES Bundler and build an executable for Mac,
322+
Windows or Linux. What you get is a single executable with
323+
324+
- Simple UI for settings
325+
- Re-mappable Keyboard and Gamepad input (you bundle your default mappings).
326+
- Save/Restore state
327+
- Netplay!
328+
329+
It's early days, but the key features are there and work is ongoing
330+
to make it more mature!
331+
332+
[nes-bundler]: https://github.com/tedsteen/nes-bundler
333+
[@tedsteen]: https://github.com/tedsteen
334+
120335
### [Blackjack]
121336

122337
![Blackjack: A procedural bridge being edited in real-time](blackjack.gif)
@@ -165,6 +380,89 @@ compiles but fails to access the intended component.
165380
[hecs]: https://github.com/Ralith/hecs
166381
[hecs-changelog]: https://github.com/Ralith/hecs/blob/master/CHANGELOG.md#080
167382

383+
### [bevy_mod_wanderlust]
384+
385+
[bevy_mod_wanderlust]
386+
([GitHub](https://github.com/PROMETHIA-27/bevy_mod_wanderlust)) by
387+
[@PROMETHIA-27] is a character controller plugin for Bevy engine.
388+
389+
Inspired by [this excellent video](https://www.youtube.com/watch?v=qdskE8PJy6Q),
390+
it is implemented on top of [Rapier physics](https://rapier.rs/) and highly
391+
customizable. Wanderlust includes a variety of settings to target many different
392+
character controller types, including 2D/3D platformers, spacecraft, and
393+
first/third person games.
394+
395+
[bevy_mod_wanderlust]: https://crates.io/crates/bevy_mod_wanderlust
396+
397+
### [Lyon]
398+
399+
![Variable width stroke in action](lyon.png)
400+
401+
[Lyon] ([GitHub](https://github.com/nical/lyon)) by [Nical](https://github.com/nical)
402+
is a collection of crates providing various 2D vector graphics utilities, including
403+
fast tessellation algorithms, easy to integrate in typical GPU accelerated rendering
404+
engines.
405+
406+
Lyon made its symbolic [`1.0.0` release](https://crates.io/crates/lyon/1.0.0)
407+
reflecting the stability of the project. Highlights in this release include:
408+
409+
- Initial support for variable line width in the stroke tessellator.
410+
- An efficient algorithm to query positions at given distances along a path.
411+
- Improved support for specifying custom endpoint attributes in paths and algorithms.
412+
- And more. You can read the [announcement blog post here](https://nical.github.io/posts/lyon-1-0.html).
413+
414+
_Discussions: [/r/rust](https://reddit.com/r/rust/comments/vwdxim/announcing_lyon_100),
415+
[Twitter](https://twitter.com/nicalsilva/status/1546424285442473987?s=20&t=S1fXSoh2zWHbfTImCGYpPQ)_
416+
417+
[Lyon]: https://github.com/nical/lyon
418+
419+
### [Renet]
420+
421+
![GIF of demo using renet and bevy](renet_bevy_demo.gif)
422+
*Demo using renet and bevy*
423+
424+
[Renet] by [@lucaspoffo] is a network library to create
425+
games with the Server-Client architecture.
426+
427+
Built on top of UDP, it has its own protocol to send and receive reliable messages
428+
more suited for fast-paced games than TCP. Some other features are:
429+
430+
- Connection management
431+
- Authentication and encrypted connections
432+
- Communication through multiple types of channels:
433+
- Reliable Ordered: guarantee ordering and delivery of all messages
434+
- Unreliable Unordered: no guarantee of delivery or ordering of messages
435+
- Block Reliable: for bigger messages, such as level initialization
436+
- Packet fragmentation and reassembly
437+
438+
Renet comes with [bevy_renet], a plugin for the Bevy engine, and also with
439+
[renet_visualizer], an egui interface to visualize network metrics.
440+
441+
[Renet]: https://github.com/lucaspoffo/renet
442+
[@lucaspoffo]: https://github.com/lucaspoffo
443+
[bevy_renet]: https://github.com/lucaspoffo/renet/tree/master/bevy_renet
444+
[renet_visualizer]: https://github.com/lucaspoffo/renet/tree/master/renet_visualizer
445+
446+
### [miniquad]
447+
448+
![miniquad fileopen](miniquad_gl2.gif)
449+
*VirtualBox, gl2 as the only GPU accelaration available*
450+
451+
[miniquad] is a safe and cross-platform rendering library
452+
focused on portability and low-end platform support.
453+
454+
This month [OpenGl 2.1/GLESv2][gl2pr] PR got merged, adding support for old
455+
android phones, virtual machines, and just old computers.
456+
457+
While the PR itself is quite small, it solved a very old design issue:
458+
[compatibilities proposal][mqcompat]. Fixing this issue opened the door for
459+
both lower-end backends, like gl1, and higher-level backends. Metal being the
460+
next in line.
461+
462+
[miniquad]: https://github.com/not-fl3/miniquad/
463+
[gl2pr]: https://github.com/not-fl3/miniquad/pull/305
464+
[mqcompat]: https://github.com/not-fl3/miniquad/pull/176
465+
168466
## Popular Workgroup Issues in Github
169467

170468
<!-- Up to 10 links to interesting issues -->

content/news/036/lyon.png

114 KB
Loading

content/news/036/miniquad_gl2.gif

2.16 MB
Loading

content/news/036/nes-bundler.png

197 KB
Loading

0 commit comments

Comments
 (0)
0