doodle/Building.md
Noah Petherbridge af67b20d9b Initial WebAssembly Build Target
* Initial WebAssembly build target for Doodle in the wasm/ folder.
* Add a new render.Engine implementation, lib/render/canvas that uses
  the HTML 5 Canvas API instead of SDL2 for the WebAssembly target.
  * Ported the basic DrawLine(), DrawBox() etc. functions from SDL2 to
    Canvas context2d API.
  * Fonts are handled with CSS embedded fonts named after the font
    filename and defined in wasm/index.html
* `make wasm` builds the WASM program, and `make wasm-serve` runs a dev
  Go server that hosts the WASM file for development. The server also
  watches the dev tree for *.go files and rebuilds the WASM binary
  automatically on change.
* This build "basically" runs the game. UI and fonts all work and mouse
  movements and clicks are detected. No wallpaper support yet or texture
  caching (which will crash the game as soon as you click and draw a
  pixel in your map!)
2019-06-26 18:40:40 -07:00

3.6 KiB

Building Doodle

Fonts

The fonts/ folder is git-ignored. The app currently uses font files here named:

  • DejaVuSans.ttf for sans-serif font.
  • DejaVuSans-Bold.ttf for bold sans-serif font.
  • DejaVuSansMono.ttf for monospace font.

These are the open source DejaVu Sans [Mono] fonts, so copy them in from your /usr/share/fonts/dejavu folder or provide alternative fonts.

mkdir fonts
cp /usr/share/fonts/dejavu/{DejaVuSans.ttf,DejaVuSans-Bold.ttf,DejaVuSansMono.ttf} fonts/

Makefile

Makefile commands for Linux:

  • make setup: install Go dependencies and set up the build environment
  • make build: build the Doodle and Doodad binaries to the bin/ folder.
  • make build-free: build the shareware binaries to the bin/ folder. See Build Tags below.
  • make build-debug: build a debug binary (not release-mode) to the bin/ folder. See Build Tags below.
  • make wasm: build the WebAssembly output
  • make wasm-serve: build the WASM output and then run the server.
  • make run: run a local dev build of Doodle in debug mode
  • make guitest: run a local dev build in the GUITest scene
  • make test: run the test suite
  • make dist: produce a zipped release tarball and zip file for your current environment and output into the dist/ folder.
  • make docker: run all the Dockerfiles from the docker/ folder to produce dist builds for Debian, Fedora and Ubuntu. You may also run these builds individually:
    • make docker.ubuntu
    • make docker.debian
    • make docker.fedora
  • make clean: clean all build artifacts

Build Tags

shareware

Files ending with _free.go are for the shareware release as opposed to _paid.go for the full version.

Builds the game in the free shareware release mode.

Run make build-free to build the shareware binary.

Shareware releases of the game have the following changes compared to the default (release) mode:

  • No access to the Doodad Editor scene in-game (soft toggle)

developer

Files ending with _developer.go are for the developer build as opposed to _release.go for the public version.

Developer builds support extra features over the standard release version:

  • Ability to write the JSON file format for Levels and Doodads.

Run make build-debug to build a developer version of the program.

Linux

Dependencies are Go, SDL2 and SDL2_ttf:

# Fedora
sudo dnf -y install golang SDL2-devel SDL2_ttf-devel

# Ubuntu and Debian
sudo apt -y install golang libsdl2-dev libsdl2-ttf-dev

Windows Cross-Compile from Linux

Install the Mingw C compiler:

# Fedora
sudo dnf -y install mingw64-gcc  # for 64-bit
sudo dnf -y install mingw32-gcc  # for 32-bit

# Arch Linux
pacman -S mingw-w64

Download the SDL2 Mingw development libraries here and SDL2_TTF from here.

Extract each and copy their library folder into the mingw path.

# e.g. /usr/x86_64-w64-mingw32 is usually the correct path, verify on e.g.
# Fedora with `rpm -ql mingw64-filesystem`
tar -xzvf SDL2_ttf-devel-2.0.15-mingw.tar.gz
cd SDL_ttf-2.0.15
sudo cp -r x86_64-w64-mingw32 /usr

Make and set permissions for Go to download the standard library for Windows:

mkdir /usr/lib/golang/pkg/windows_amd64
chown your_username /usr/lib/golang/pkg/windows_amd64

And run make mingw to build the Windows binary.

Windows DLLs

For the .exe to run it will need SDL2.dll and such.

# SDL2.dll and SDL2_ttf.dll
cp /usr/x86_64-w64-mingw32/bin/SDL*.dll bin/

SDL2_ttf requires libfreetype, you can get its DLL here: https://github.com/ubawurinna/freetype-windows-binaries