* 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!)
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 environmentmake build
: build the Doodle and Doodad binaries to thebin/
folder.make build-free
: build the shareware binaries to thebin/
folder. See Build Tags below.make build-debug
: build a debug binary (not release-mode) to thebin/
folder. See Build Tags below.make wasm
: build the WebAssembly outputmake wasm-serve
: build the WASM output and then run the server.make run
: run a local dev build of Doodle in debug modemake guitest
: run a local dev build in the GUITest scenemake test
: run the test suitemake dist
: produce a zipped release tarball and zip file for your current environment and output into thedist/
folder.make docker
: run all the Dockerfiles from thedocker/
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