https://github.com/jolav/roguelike-tutorial
The complete roguelike Tutorial from r/roguelikedev (2020 Go + BearLibTerminal, unfinished), (2024 Vanilla Javascript, finished), (2024 JS + Go + WASM, proof of concept)
https://github.com/jolav/roguelike-tutorial
bearlibterminal go go-wasm golang javascript roguelike roguelike-tutorial roguelikedev vanilla-javascript wasm webassembly-demo
Last synced: 5 months ago
JSON representation
The complete roguelike Tutorial from r/roguelikedev (2020 Go + BearLibTerminal, unfinished), (2024 Vanilla Javascript, finished), (2024 JS + Go + WASM, proof of concept)
- Host: GitHub
- URL: https://github.com/jolav/roguelike-tutorial
- Owner: jolav
- License: bsd-3-clause
- Created: 2020-05-06T16:13:07.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-08-20T13:59:15.000Z (8 months ago)
- Last Synced: 2024-08-20T16:02:57.789Z (8 months ago)
- Topics: bearlibterminal, go, go-wasm, golang, javascript, roguelike, roguelike-tutorial, roguelikedev, vanilla-javascript, wasm, webassembly-demo
- Language: JavaScript
- Homepage:
- Size: 4.06 MB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-golang-repositories - roguelike-tutorial
README
# Complete Roguelike Tutorial from r/roguelikedev

1. [Go + BearLibTerminal (incomplete)](#go-bearlibterminal)
2. [Javascript (full playable version)](#javascript)
3. [JS + Go WebAssembly (proof of concept)](#go-wasm)# **Go-BearLibTerminal**
## CURRENT STATUS GIF
Part 4 + DIRECTIONAL FOV

## CONTROLS
↑ Go Ahead
↓ Go Back
← Turn Left
→ Turn Right
ALT + ← Strafe Left
ALT + → Strafe Right## Compilation on Linux
>1. Install [Go](https://golang.org/dl/)
>2. Download [BearLibTerminal](http://foo.wyrd.name/en:bearlibterminal#download)
>3. Put libBearLibTerminal.so into /usr/lib
>4. Move BearLibTerminal.go and BearLibterminal.h into roguelike-tutorial/bearlibterminal
>5. `go mod init roguelike`. Now you can import library using go modules `import (blt "roguelike/bearlibterminal)`
>6. `go build -ldflags="-X 'main.releaseDate=$(date -u +%F_%T)'"`## Cross Compile on Linux for Windows
>1. `apt install gcc-mingw-w64-x86-64 gcc-multilib`
>2. Put windows BearLibTerminal.dll and BearLibTerminal.lib into /usr/x86_64-w64-mingw32/lib
>3. `GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc go build -ldflags="-X 'main.when=$(date -u +%F_%T)'" -o roguelike.exe`## Distribution
#### LINUX
Package in the same folder
- roguelike binary
- libBearLibTerminal.so
- start.sh which contains `LD_LIBRARY_PATH="$(dirname "$0")" "$(dirname "$0")/roguelike"`
- assets folderenter the folder and execute `./start`
`
#### WINDOWSPackage in the same folder
- roguelike.exe
- BearLibTerminal.dll
- assets folderenter the folder and double click roguelike.exe
# **Javascript**
## **[Play Online](https://roguelike-tutorial-javascript.netlify.app/)**
## CONTROLS
NUMPAD
"1" -> DOWNLEFT
"2" -> DOWN
"3" -> DOWNRIGHT
"4" -> LEFT
"5" -> SKIP
"6" -> RIGHT
"7" -> UPLEFT
"8" -> UP
"9" -> UPRIGHTKEYBOARD
"b" -> DOWNLEFT
"j" -> DOWN
"n" -> DOWNRIGHT
"h" -> LEFT
"t" -> SKIP
"l" -> RIGHT
"y" -> UPLEFT
"k" -> UP
"u" -> UPRIGHTKEYBOARD
"q" -> LOOT
"1" -> EAT
"3" -> HEAL
"f" -> FIRE
"r" -> SELECT# **Go-Wasm**
Proof of concept:
- JS for canvas rendering
- Go + WebAssembly for logic## **[See Online](https://roguelike-tutorial-go-wasm.netlify.app/)**