wasm-snake
raw-wasm
wasm-snake | raw-wasm | |
---|---|---|
2 | 3 | |
7 | 419 | |
- | - | |
7.7 | 5.6 | |
2 months ago | 6 months ago | |
WebAssembly | WebAssembly | |
- | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
wasm-snake
-
Classic Snake in Direct WebAssembly Text
All of the game graphics, state and logic are written in WebAssembly Text. The host environment (Javascript) is responsible for:
Game tick loop
User input
Providing characters "0123456789GAMEOVER" byte data on game startup
Blitting the pixel buffer to the display with WebGL2
The game uses 3 virtual pages of memory (64kb each) for a total of 192kb. Within those exist the pixel buffer contents, the characters data and snake positions. For more detailed breakdown you can check src/snake.wat.
The memory is shared between WASM and JS. On each game tick, the pixel buffer region of the memory is transferred to a WebGL2 texture, uploaded to the GPU and blitted to the screen.
For more info you can refer to the repo - https://github.com/gnikoloff/wasm-snake
raw-wasm
- Web assembly book?
-
Smolnes: A NES Emulator In
Big fan of this author's work.
They have a Gameboy emulator written in C, which can be compiled to WASM and run in the browser.
https://github.com/binji/binjgb
I learned a lot from the code.
Also I love this project with a bunch of demos in hand-written WebAssembly Text (WAT) format, which is like low-level Lisp that works only with raw memory, numbers, and minimal syntax.
https://github.com/binji/raw-wasm
Then I discovered the same author is quite active in the WebAssembly ecosystem, including specs and tooling. Fascinating stuff!
https://github.com/WebAssembly/spec
https://github.com/WebAssembly/wabt
- Raw WebAssembly Demos
What are some alternatives?
binaryen - Optimizer and compiler/toolchain library for WebAssembly
xxhash-wasm - A WebAssembly implementation of xxHash
wasm2lua - wasm2lua: converting WASM into Lua
cpl-webassembly - Small WebAssembly exercise session for the KU Leuven course Comparative Progamming Languages
w2c2 - Translates WebAssembly modules to portable C
smolnes - NES emulator in <5000 bytes of C
binjnes - NES emulator implemented in C, that also runs in the browser
wasmi - WebAssembly (Wasm) interpreter.
Uno.Wasm.Bootstrap - A simple nuget package to run C# code in a WASM-compatible browser
owi - WebAssembly Swissknife
assemblyscript - A TypeScript-like language for WebAssembly.
spec - WebAssembly specification, reference interpreter, and test suite.