Doodle++ proprietary add-on package for Sketchy Maze.
Go to file
Noah fecbc4f23d Doodle++ Initial Commit 2024-04-18 22:37:16 -07:00
embedding Doodle++ Initial Commit 2024-04-18 22:37:16 -07:00
license Doodle++ Initial Commit 2024-04-18 22:37:16 -07:00
README.md Doodle++ Initial Commit 2024-04-18 22:37:16 -07:00
go.mod Doodle++ Initial Commit 2024-04-18 22:37:16 -07:00

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 and make 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)