8000 Merge branch 'source' into source · ErnWong/rust-gamedev.github.io@df63d9f · GitHub
[go: up one dir, main page]

Skip to content

Commit df63d9f

Browse files
authored
Merge branch 'source' into source
2 parents 45e4089 + 0a04388 commit df63d9f

File tree

9 files changed

+230
-15
lines changed

9 files changed

+230
-15
lines changed

content/news/023/battleship.gif

364 KB
Loading

content/news/023/blightmud.png

258 KB
Loading

content/news/023/egregoria.jpg

289 KB
Loading

content/news/023/hatchooseswizard.jpg

45.8 KB
Loading

content/news/023/index.md

Lines changed: 230 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,31 @@ If needed, a section can be split into subsections with a "------" delimiter.
6464

6565
## Game Updates
6666

67+
### [Egregoria]
68+
69+
![Egregoria in 3D](egregoria.jpg)
70+
71+
[Egregoria] ([GitHub][Egregoria], [Discord][egregoria-discord])
72+
by [@Uriopass]
73+
is a simulation oriented city builder that tries
74+
to replicate modern society as well as possible.
75+
76+
It recently upgraded from a 2D top-down view to a
77+
3D third-person camera as seen in the screenshot above.
78+
79+
Elevated roads and bridges are now possible, allowing to build
80+
[complex highway interchanges][highway-screenshot].
81+
82+
Some technical details around the renderer with more screenshots,
83+
along with an architectural overview of the project can be read in the
84+
[9th devlog][egregoria-blog-post].
85+
86+
[Egregoria]: https://github.com/Uriopass/Egregoria
87+
[@Uriopass]: https://github.com/Uriopass
88+
[egregoria-blog-post]: https://douady.paris/blog/egregoria_9.html
89+
[egregoria-discord]: https://discord.gg/CAaZhUJ
90+
[highway-screenshot]: http://douady.paris/blog/img/blog_9/interchange.jpg
91+
6792
### [Open Combat][opencombat]
6893

6994
![Open Combat logo](open_combat.jpg)
@@ -85,6 +110,97 @@ making of [video](https://youtube.com/watch?v=3TOEZ7krhvI) on YouTube.
85110

86111
[opencombat]: https://opencombat.bux.fr
87112

113+
### [Battleship.rs](https://github.com/deepu105/battleship-rs)
114+
115+
![Battleship gameplay](battleship.gif)
116+
117+
[Battleship.rs](https://github.com/deepu105/battleship-rs) by
118+
[Deepu](https://twitter.com/deepu105) is an open source Battleship game for
119+
the terminal built in Rust using the [tui-rs](https://github.com/fdehau/tui-rs)
120+
crate.
121+
122+
The game uses different ship shapes, unlike the traditional vertical/horizontal
123+
shapes, and has multiple game rules to choose from. There are two difficulty
124+
levels as well. The game is supported in Linux, Mac and Docker.
125+
126+
If you have docker installed, you can play the game instantly by running
127+
128+
```bash
129+
docker run --rm -it deepu105/battleship:main
130+
```
131+
132+
The next iteration would be to support a WebAssembly version of the same.
133+
134+
### [Blightmud][blightmud]
135+
136+
![Blightmud logo](blightmud.png)
137+
138+
[Blightmud][blightmud] ([Discord](https://discord.gg/qnxgUC5)) is a mud client
139+
for the terminal inspired by [tintin++][tintin] and [tinyfugue][tinyfugue]
140+
allowing users to connect and get immersed in the worlds offered by text based
141+
online multi user dungeons known as muds.
142+
143+
The project was birthed in April of 2020 and has come a long way since. It now
144+
offers granular scripting access using [lua][lua], plugin handling, built in
145+
text-to-speech (via [Speech dispatcher][speechd]), split view scrolling, modern
146+
telnet protocols and TLS connections to name a few.
147+
148+
[blightmud]: https://github.com/Blightmud/Blightmud
149+
[tintin]: https://tintin.mudhalla.net/
150+
[tinyfugue]: http://tinyfugue.sourceforge.net/
151+
[lua]: https://www.lua.org/
152+
[speechd]: https://freebsoft.org/speechd
153+
154+
### [The Hat Chooses the Wizard][hatchooseswizard]
155+
156+
![Level 1-4 of the game "The Hat Chooses the Wizard" running on a Game Boy
157+
Advance](hatchooseswizard.jpg)
158+
_Runs on real hardware!_
159+
160+
The Hat Chooses the Wizard is a 2D platformer for the Game Boy Advance.
161+
162+
It was made for this year's Game Maker's Toolkit (GMTK) game jam with the theme
163+
joined together and came in the top 25% of over 5800 entries. The game plays
164+
over 12 levels with the core mechanic being to throw your hat and then
165+
accelerate towards it. You can play it on a web based emulator embedded on the
166+
[itch][hatchooseswizard] page.
167+
168+
The game is written in pure Rust and uses [agb][agblibrary] to
169+
interface with the hardware. The library is designed to allow you to write games
170+
without needing a detailed understanding of the hardware while still giving full
171+
access to all of its capabilities. It is under active development with
172+
plenty more features on the way.
173+
174+
You can find the source code for the game [here][hatchooseswizardsource] and all
175+
feedback is welcome.
176+
177+
[hatchooseswizard]: https://lostimmortal.itch.io/the-hat-chooses-the-wizard
178+
[hatchooseswizardsource]: https://github.com/corwinkuiper/joinedtogether
179+
[agblibrary]: https://github.com/corwinkuiper/agb
180+
181+
### [Themengi]
182+
183+
![User highlighting objects in the game world and parsing the phrase
184+
"dang puru rupuu kythengi" into the action "open", object "door", and mods
185+
"red" and "left".](themengi.gif)
186+
_Demonstration of natural language parser with temporary words and grammar._
187+
188+
[Themengi] ([Discord][themengi-discord], [Twitter][themengi-twitter])
189+
is a puzzle adventure game where you learn an alien language,
190+
with completely unknown words and grammar, to navigate the world
191+
and find your way home.
192+
193+
This month the [first devlog][themengi-video] for
194+
Themengi was published, discussing its natural language parser using
195+
Head-Driven Phrase Structure Grammar, the choice to use Bevy, a texture
196+
upscaling technique for faithful pixel art rendering, and implementing an
197+
outline shader in the Bevy render pipeline.
198+
199+
[Themengi]: https://vgel.me/themengi
200+
[themengi-discord]: https://discord.gg/GpparbnXPC
201+
[themengi-twitter]: https://twitter.com/voooooogel
202+
[themengi-video]: https://youtube.com/watch?v=gtIphiK7tMs
203+
88204
### [Dango]
89205

90206
[![Dango bouncing and jumping around](dango.gif)][Dango]
@@ -111,26 +227,76 @@ other players to join using WebRTC.
111227

112228
## Learning Material Updates
113229

114-
## Library & Tooling Updates
230+
### [A Trig-less Line of Sight Algorithm for 2D Games][lineofsight]
115231

116-
### [erupt]
232+
![2D Sight Example](lineofsight.png)
117233

118-
![erupt logo](erupt.svg)
234+
[@basstabs] published a tutorial which explains how to write a
235+
line of sight algorithm for 2D games in Rust without using trigonometry or
236+
square roots. It includes vector diagrams and typeset math to explain the ideas
237+
behind each stage of the algorithm, source code for each step, tests to verify
238+
accuracy of the methods, and suggestions for further improvements.
239+
Additionally, the
240+
[repository](https://github.com/basstabs/2d-line-of-sight) contains benchmarks
241+
and a sample application written in [ggez](https://crates.io/crates/ggez).
119242

120-
[erupt] by [@Friz64] provides bindings to the Vulkan API.
243+
_Discussions: [/r/rust_gamedev](
244+
https://www.reddit.com/r/rust\_gamedev/comments/nx79kq/)_
121245

122-
Since being last mentioned in the newsletter shortly after its release, erupt
123-
has undergone significant development. The generator, erupt's heart, has been
124-
rewritten from scratch with the aim to improve maintainability. On top of that,
125-
many bugs were fixed, the function loader was rewritten and usability was
126-
improved while always keeping up to date with the latest Vulkan Headers as best
127-
as possible.
246+
[lineofsight]: https://basstabs.github.io/2d-line-of-sight/
247+
[@basstabs]: https://github.com/basstabs
128248

129-
The ecosystem has gained traction, with many people using the crate for their
130-
projects. Pure Rust Vulkan allocators with support for erupt have been released.
249+
## Library & Tooling Updates
131250

132-
[erupt]: https://gitlab.com/Friz64/erupt
133-
[@Friz64]: https://blog.friz64.de/about
251+
### [backroll-rs] and [GGRS]
252+
253+
[backroll-rs] ([Discord](https://discord.gg/VuZhs9V),
254+
[crates.io](https://crates.io/crates/backroll)) by [@james7132] and
255+
[GGRS]([crates.io](https://crates.io/crates/ggrs)) by [@g_schup] are pure
256+
Rust implementations of the [GGPO] rollback networking library.
257+
258+
![Evo Moment 37](rollback.jpg)
259+
_[Evo Moment 37](https://www.youtube.com/watch?v=JzS96auqau0):
260+
Only offline or with rollback!_
261+
262+
Rollback networking is a peer-to-peer network technique designed to hide
263+
network latency in fast-paced games with precise inputs. Traditional techniques
264+
account for network transmission time by delaying the game execution, resulting
265+
in a sluggish game-feel. Rollback uses input prediction and speculative
266+
execution instead. Upon receiving inputs from remote clients, resimulation of
267+
incorrect game states occurs. This allows for gameplay that "feels just
268+
like offline". The open source standard for rollback netcode [GGPO] is used
269+
in successful games like Skullgirls, Guilty Gear XX Accent Core +R or
270+
Fightcade. For further explanation about rollback,
271+
[click here](https://ki.infil.net/w02-netcode.html).
272+
273+
Two projects in Rust were independently created to provide a working
274+
implementation as well as helpful resources for developers.
275+
backroll-rs features an added abstraction for the transportation layer and
276+
also provides a bevy plugin, [bevy-backroll]. GGRS replaces the
277+
C-style callback API of GGPO with a simpler, more understandable control flow.
278+
The authors of both libraries recommend backroll-rs for developement,
279+
as it is currently more actively collaborated on.
280+
GGRS is recommended as a learning recource and entry point,
281+
with a plethora of internal documentation and explanation.
282+
283+
The main requirement to make use of both presented libraries is determinism
284+
in your game execution. Resimulation requires that the result of progressing
285+
the game state depending on the given inputs yield the exact same results
286+
every time. Additionally, you need to be able to load, save and progress
287+
your gamestate without rendering the outcome.
288+
289+
If you are interested in integrating rollback networking into your game or
290+
just want to chat with other rollback developers (not limited to Rust),
291+
check out the [GGPO Developers Discord]!
292+
293+
[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs
294+
[bevy-backroll]: https://github.com/HouraiTeahouse/backroll-rs/tree/main/bevy_backroll
295+
[GGPO Developers Discord]: https://discord.gg/8FKKhCRCCE
296+
[GGRS]: https://github.com/gschup/ggrs
297+
[GGPO]: https://www.ggpo.net/
298+
[@g_schup]: https://twitter.com/g_schup
299+
[@james7132]: https://twitter.com/james7132
134300

135301
### [CrystalOrb]
136302

@@ -160,7 +326,56 @@ There is an [interactive demo][crystalorb-demo] of CrystalOrb that features the
160326
[crystalorb-demo]: https://ernestwong.nz/crystalorb/demo
161327
[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs
162328
[GGRS]: https://github.com/gschup/ggrs
163-
[Rapier]: https://rapier.rs/
329+
[Rapier]: https://rapier.rs
330+
331+
### [erupt]
332+
333+
![erupt logo](erupt.svg)
334+
335+
[erupt] by [@Friz64] provides bindings to the Vulkan API.
336+
337+
Since being last mentioned in the newsletter shortly after its release, erupt
338+
has undergone significant development. The generator, erupt's heart, has been
339+
rewritten from scratch with the aim to improve maintainability. On top of that,
340+
many bugs were fixed, the function loader was rewritten and usability was
341+
improved while always keeping up to date with the latest Vulkan Headers as best
342+
as possible.
343+
344+
The ecosystem has gained traction, with many people using the crate for their
345+
projects. Pure Rust Vulkan allocators with support for erupt have been released.
346+
347+
[erupt]: https://gitlab.com/Friz64/erupt
348+
[@Friz64]: https://blog.friz64.de/about
349+
350+
### [wgpu] family re-union
351+
352+
![wgpu family reunion](wgpu-family-reunion.svg)
353+
354+
[wgpu] is a [WebGPU] implementation in Rust. It is safe, efficient,
355+
and portable: it can target both native and the Web.
356+
357+
[Family reunion] is by far the biggest change in `wgpu` project since
358+
the inception. First, the Rust API of [wgpu-rs] was moved to the main
359+
[wgpu] repository. Second, the whole base was relicensed under MIT/Apache2.
360+
361+
[gfx-hal] - the Vulkan Portability-like graphics API abstraction -
362+
was detached from the project. Instead `wgpu` got its own in-house unsafe
363+
abstraction called "wgpu-hal" developed within the [wgpu] repository.
364+
365+
The team released [wgpu-0.9] right before this transition, to give the new
366+
graphics infrastructure more time to take shape. At the time of writing,
367+
supported backends on the new HAL include Vulkan, Metal, and OpenGL ES3.
368+
369+
Finally, the testing infrastructure received a major upgrade. It started
370+
rendering the examples on the available adapters and compraring the results
371+
with reference images.
372+
This includes automatic testing using software adapters on CI.
373+
374+
[wgpu]: https://github.com/gfx-rs/wgpu
375+
[wgpu-rs]: https://github.com/gfx-rs/wgpu-rs
376+
[gfx-hal]: https://github.com/gfx-rs/gfx
377+
[wgpu-0.9]: https://crates.io/crates/wgpu/0.9.0
378+
[Family reunion]: https://github.com/gfx-rs/wgpu/milestone/9?closed=1
164379

165380
## Popular Workgroup Issues in Github
166381

content/news/023/lineofsight.png

87.6 KB
Loading

content/news/023/rollback.jpg

145 KB
Loading

content/news/023/themengi.gif

846 KB
Loading
78.3 KB
Loading

0 commit comments

Comments
 (0)
0