Skip to content

euhmeuh/wasm-adventure

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wasm-adventure

My adventure into the marvelous world of Web Assembly

Demo

Try the live version here: https://euhmeuh.github.io/wasm-adventure/

How to compile and play

  • Run ./make
  • Open index.html in your favorite (Web Assembly compatible) browser

How to generate wat (WebAssemblyText) code from Racket

  • Run racket src/game.rkt > build/game.wat

How to compile wat to wasm manually (you need the wat2wasm toolkit)

  • Run wat2wasm build/game.wat -o build/game.wasm

Motivations

Is it possible (and enjoyable) to write a game directly in web assembly's text format?
Eventually, would it be cool to generate wat from Scheme code using the Racket lang system?

Lisp Game Jam 2018

This is an entry for the 2018 edition of the Lisp Game Jam

Discoveries so far

  • Wasm has two text formats: linear (stack machine) and S-expression style
  • Writing directly in Wasm is tedious after a while (very verbose)
  • I can use Racket to write my own DSL (Domain Specific Language) in order to program in a higher level language
  • I can implement recurrent patterns into higher level procedures (see for)
  • I can name constants and implement helpers (see mem)
  • I can draw to a screen by using javascript's Uint8Array and pushing data to a canvas
  • I can make a game?