Noah fecbc4f23d | ||
---|---|---|
embedding | ||
license | ||
README.md | ||
go.mod |
README.md
Doodle++
Package dpp provides proprietary add-in code for Sketchy Maze for official releases of the game only.
Features
Doodle++ adds the following to the game:
- License registration support for shareware vs. full versions.
- The JWT public signing key and registration functions.
- Level signing support (enabling shareware users to play levels with embedded doodads if they are signed).
- Ability to load levels which embed custom doodads inside.
- Ability to "publish" custom levels (save them with doodads embedded inside).
In the future, Doodle++ also provides:
- Online services support to browse/share custom content in-game.
Building
From a fresh clone of the Doodle engine, run the bootstrap.py script and answer "Y" when asked to use SSH to clone dependency repos.
This will clone the dpp repo (this one) and its existence in your project will result in Sketchy Maze being built with the dpp tag and this code will be loaded.
External users who download Doodle from source will not have SSH keys to clone, so bootstrap.py will only download dependencies via https and not get the dpp package added.
Migration Tasks
Existing code from the doodle repo should be moved into dpp and abstracted from the Doodle engine by interfaces etc.
To Do:
- Add a
dpp
Go build tag.- balance/flag_dpp.go and flag_foss.go sets an easy balance.DPP boolean for the game to check the tag at runtime.
- bootstrap.py script to clone dpp when using SSH. (needs testing)
- Makefile to automatically set
-tags="dpp"
on Go build/run commands when deps/dpp exists. - Makefile to provide
make run-free
,make build-free
andmake dist-free
to force a tagless build for testing.
- Consolidate version strings for user display.
- FOSS builds say "v1.2.3 (open source)"
- DPP builds say "v1.2.3 (shareware)" for unregistered
- Or "v1.2.3 (registered)" if registered.
- doodads.LoadFromEmbeddable(): how the game may load a doodad from a level's filesystem.
- Move the meat of the implementation into dpp package, put behind build tag.
- Level publishing
- Move UI windows to live only in dpp package.
- windows/license_key.go
- Help->Register menu hidden behind balance.DPP check.
- Move license package into dpp (IsRegistered, level signing support)