@origingame/create-game 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -2
- package/archetypes/README.md +99 -0
- package/archetypes/idle/.origin/setup +14 -0
- package/archetypes/idle/LICENSES.md +12 -0
- package/archetypes/idle/README.md +234 -0
- package/archetypes/idle/assets/audio/buy.wav +0 -0
- package/archetypes/idle/assets/audio/milestone.wav +0 -0
- package/archetypes/idle/assets/audio/nova.wav +0 -0
- package/archetypes/idle/assets/audio/orbit.wav +0 -0
- package/archetypes/idle/assets/audio/tap.wav +0 -0
- package/archetypes/idle/assets/audio/ui-close.ogt +9 -0
- package/archetypes/idle/assets/audio/ui-error.ogt +9 -0
- package/archetypes/idle/assets/audio/ui-open.ogt +9 -0
- package/archetypes/idle/assets/audio/ui-press.ogt +9 -0
- package/archetypes/idle/assets/audio/ui-success.ogt +9 -0
- package/archetypes/idle/assets/fonts/NotoSansSC-subset.ttf +0 -0
- package/archetypes/idle/assets/fonts/NotoSansSC-subset.ttf.ogt +10 -0
- package/archetypes/idle/assets/fonts/OFL.txt +93 -0
- package/archetypes/idle/assets/fx/drift.ogt +21 -0
- package/archetypes/idle/assets/fx/milestone.ogt +21 -0
- package/archetypes/idle/assets/fx/nova.ogt +22 -0
- package/archetypes/idle/assets/fx/stars.ogt +20 -0
- package/archetypes/idle/assets/fx/tap.ogt +23 -0
- package/archetypes/idle/assets/looks/idle.ogt +17 -0
- package/archetypes/idle/assets/skins/sparkorb/ChakraPetch-BoldItalic.ttf +0 -0
- package/archetypes/idle/assets/skins/sparkorb/ChakraPetch-BoldItalic.ttf.ogt +9 -0
- package/archetypes/idle/assets/skins/sparkorb/LICENSES.md +19 -0
- package/archetypes/idle/assets/skins/sparkorb/OFL.txt +95 -0
- package/archetypes/idle/assets/skins/sparkorb/Orbitron-Medium.ttf +0 -0
- package/archetypes/idle/assets/skins/sparkorb/Orbitron-Medium.ttf.ogt +9 -0
- package/archetypes/idle/assets/skins/sparkorb/Rajdhani-Bold.ttf +0 -0
- package/archetypes/idle/assets/skins/sparkorb/Rajdhani-Bold.ttf.ogt +9 -0
- package/archetypes/idle/assets/skins/sparkorb/atlas.png +0 -0
- package/archetypes/idle/assets/skins/sparkorb/atlas.png.ogt +7 -0
- package/archetypes/idle/assets/skins/sparkorb/icons.png +0 -0
- package/archetypes/idle/assets/skins/sparkorb/icons.png.ogt +7 -0
- package/archetypes/idle/assets/skins/sparkorb/skin.ogt +113 -0
- package/archetypes/idle/assets/sprites/glow.png +0 -0
- package/archetypes/idle/assets/sprites/glow.png.ogt +8 -0
- package/archetypes/idle/assets/sprites/mote-crystal.png +0 -0
- package/archetypes/idle/assets/sprites/mote-crystal.png.ogt +7 -0
- package/archetypes/idle/assets/sprites/mote-ember.png +0 -0
- package/archetypes/idle/assets/sprites/mote-ember.png.ogt +7 -0
- package/archetypes/idle/assets/sprites/mote-star.png +0 -0
- package/archetypes/idle/assets/sprites/mote-star.png.ogt +7 -0
- package/archetypes/idle/assets/sprites/mote-storm.png +0 -0
- package/archetypes/idle/assets/sprites/mote-storm.png.ogt +7 -0
- package/archetypes/idle/assets/sprites/orb.png +0 -0
- package/archetypes/idle/assets/sprites/orb.png.ogt +7 -0
- package/archetypes/idle/assets/sprites/spark.png +0 -0
- package/archetypes/idle/assets/sprites/spark.png.ogt +7 -0
- package/archetypes/idle/assets/strings/en.ogt +62 -0
- package/archetypes/idle/assets/strings/zh-CN.ogt +62 -0
- package/archetypes/idle/gitattributes +22 -0
- package/archetypes/idle/host.d.ts +46 -0
- package/archetypes/idle/package.json +18 -0
- package/archetypes/idle/project.ogt +14 -0
- package/archetypes/idle/references/metal/card.png +0 -0
- package/archetypes/idle/references/metal/orbit.png +0 -0
- package/archetypes/idle/references/metal/title.png +0 -0
- package/archetypes/idle/src/components.ts +139 -0
- package/archetypes/idle/src/main.ts +247 -0
- package/archetypes/idle/src/numbers.ts +126 -0
- package/archetypes/idle/src/systems.ts +340 -0
- package/archetypes/idle/src/ui.ts +412 -0
- package/archetypes/idle/tests/away.og.ts +42 -0
- package/archetypes/idle/tests/flow.og.ts +57 -0
- package/archetypes/idle/tests/frames.og.ts +33 -0
- package/archetypes/idle/tests/frames.ts +134 -0
- package/archetypes/idle/tests/lib.ts +74 -0
- package/archetypes/idle/tests/milestone.og.ts +32 -0
- package/archetypes/idle/tests/nova.og.ts +52 -0
- package/archetypes/idle/tests/offline.og.ts +60 -0
- package/archetypes/idle/tests/pad.og.ts +55 -0
- package/archetypes/idle/tests/pause.og.ts +68 -0
- package/archetypes/idle/tests/phone.og.ts +50 -0
- package/archetypes/idle/tests/replay.og.ts +28 -0
- package/archetypes/idle/tools/make-assets.py +448 -0
- package/archetypes/idle/tools/oglite.py +285 -0
- package/archetypes/idle/tsconfig.json +17 -0
- package/archetypes/match3/.origin/setup +14 -0
- package/archetypes/match3/LICENSES.md +7 -0
- package/archetypes/match3/README.md +205 -0
- package/archetypes/match3/assets/audio/cascade.wav +0 -0
- package/archetypes/match3/assets/audio/clear.wav +0 -0
- package/archetypes/match3/assets/audio/lost.wav +0 -0
- package/archetypes/match3/assets/audio/refused.wav +0 -0
- package/archetypes/match3/assets/audio/select.wav +0 -0
- package/archetypes/match3/assets/audio/swap.wav +0 -0
- package/archetypes/match3/assets/audio/won.wav +0 -0
- package/archetypes/match3/assets/fonts/OFL.txt +93 -0
- package/archetypes/match3/assets/fonts/ui.ttf +0 -0
- package/archetypes/match3/assets/fonts/ui.ttf.ogt +11 -0
- package/archetypes/match3/assets/scenes/main.ogt +24 -0
- package/archetypes/match3/assets/sprites/backdrop.png +0 -0
- package/archetypes/match3/assets/sprites/board.ogt +21 -0
- package/archetypes/match3/assets/sprites/cells.ogt +7 -0
- package/archetypes/match3/assets/sprites/cells.png +0 -0
- package/archetypes/match3/assets/sprites/cells.png.ogt +7 -0
- package/archetypes/match3/assets/sprites/gems.ogt +75 -0
- package/archetypes/match3/assets/sprites/gems.png +0 -0
- package/archetypes/match3/assets/sprites/panel.png +0 -0
- package/archetypes/match3/assets/sprites/ring.png +0 -0
- package/archetypes/match3/gitattributes +22 -0
- package/archetypes/match3/host.d.ts +46 -0
- package/archetypes/match3/package.json +18 -0
- package/archetypes/match3/project.ogt +18 -0
- package/archetypes/match3/references/metal/cascade.png +0 -0
- package/archetypes/match3/references/metal/clearing.png +0 -0
- package/archetypes/match3/references/metal/dealt.png +0 -0
- package/archetypes/match3/src/art.ts +54 -0
- package/archetypes/match3/src/board.ts +112 -0
- package/archetypes/match3/src/components.ts +95 -0
- package/archetypes/match3/src/layout.ts +25 -0
- package/archetypes/match3/src/main.ts +199 -0
- package/archetypes/match3/src/systems.ts +631 -0
- package/archetypes/match3/tests/drag.og.ts +31 -0
- package/archetypes/match3/tests/endings.og.ts +40 -0
- package/archetypes/match3/tests/frames.og.ts +49 -0
- package/archetypes/match3/tests/frames.ts +134 -0
- package/archetypes/match3/tests/hidpi.og.ts +41 -0
- package/archetypes/match3/tests/lib.ts +64 -0
- package/archetypes/match3/tests/replay.og.ts +28 -0
- package/archetypes/match3/tests/sounds.og.ts +50 -0
- package/archetypes/match3/tests/swap.og.ts +67 -0
- package/archetypes/match3/tools/make-assets.py +404 -0
- package/archetypes/match3/tools/oglite.py +285 -0
- package/archetypes/match3/tsconfig.json +17 -0
- package/archetypes/rhythm/.origin/setup +14 -0
- package/archetypes/rhythm/LICENSES.md +13 -0
- package/archetypes/rhythm/README.md +235 -0
- package/archetypes/rhythm/assets/audio/bass0.wav +0 -0
- package/archetypes/rhythm/assets/audio/bass1.wav +0 -0
- package/archetypes/rhythm/assets/audio/bass2.wav +0 -0
- package/archetypes/rhythm/assets/audio/bass3.wav +0 -0
- package/archetypes/rhythm/assets/audio/chords0.wav +0 -0
- package/archetypes/rhythm/assets/audio/chords1.wav +0 -0
- package/archetypes/rhythm/assets/audio/chords2.wav +0 -0
- package/archetypes/rhythm/assets/audio/chords3.wav +0 -0
- package/archetypes/rhythm/assets/audio/clear.wav +0 -0
- package/archetypes/rhythm/assets/audio/click.wav +0 -0
- package/archetypes/rhythm/assets/audio/drums.wav +0 -0
- package/archetypes/rhythm/assets/audio/fail.wav +0 -0
- package/archetypes/rhythm/assets/audio/leadA.wav +0 -0
- package/archetypes/rhythm/assets/audio/leadB.wav +0 -0
- package/archetypes/rhythm/assets/audio/miss.wav +0 -0
- package/archetypes/rhythm/assets/audio/tap0.wav +0 -0
- package/archetypes/rhythm/assets/audio/tap1.wav +0 -0
- package/archetypes/rhythm/assets/audio/tap2.wav +0 -0
- package/archetypes/rhythm/assets/audio/ui-close.ogt +9 -0
- package/archetypes/rhythm/assets/audio/ui-error.ogt +9 -0
- package/archetypes/rhythm/assets/audio/ui-open.ogt +9 -0
- package/archetypes/rhythm/assets/audio/ui-press.ogt +9 -0
- package/archetypes/rhythm/assets/audio/ui-success.ogt +9 -0
- package/archetypes/rhythm/assets/charts/neon-pulse.ogt +919 -0
- package/archetypes/rhythm/assets/fonts/NotoSansSC-subset.ttf +0 -0
- package/archetypes/rhythm/assets/fonts/NotoSansSC-subset.ttf.ogt +10 -0
- package/archetypes/rhythm/assets/fonts/OFL.txt +93 -0
- package/archetypes/rhythm/assets/fx/hit.ogt +22 -0
- package/archetypes/rhythm/assets/skins/lanebeat/ChakraPetch-Medium.ttf +0 -0
- package/archetypes/rhythm/assets/skins/lanebeat/ChakraPetch-Medium.ttf.ogt +9 -0
- package/archetypes/rhythm/assets/skins/lanebeat/JetBrainsMono-Regular.ttf +0 -0
- package/archetypes/rhythm/assets/skins/lanebeat/JetBrainsMono-Regular.ttf.ogt +9 -0
- package/archetypes/rhythm/assets/skins/lanebeat/LICENSES.md +17 -0
- package/archetypes/rhythm/assets/skins/lanebeat/OFL.txt +95 -0
- package/archetypes/rhythm/assets/skins/lanebeat/Orbitron-Bold.ttf +0 -0
- package/archetypes/rhythm/assets/skins/lanebeat/Orbitron-Bold.ttf.ogt +9 -0
- package/archetypes/rhythm/assets/skins/lanebeat/atlas.png +0 -0
- package/archetypes/rhythm/assets/skins/lanebeat/atlas.png.ogt +7 -0
- package/archetypes/rhythm/assets/skins/lanebeat/icons.png +0 -0
- package/archetypes/rhythm/assets/skins/lanebeat/icons.png.ogt +7 -0
- package/archetypes/rhythm/assets/skins/lanebeat/skin.ogt +110 -0
- package/archetypes/rhythm/assets/sprites/lane.png +0 -0
- package/archetypes/rhythm/assets/sprites/lane.png.ogt +7 -0
- package/archetypes/rhythm/assets/sprites/note.png +0 -0
- package/archetypes/rhythm/assets/sprites/note.png.ogt +7 -0
- package/archetypes/rhythm/assets/sprites/ring.png +0 -0
- package/archetypes/rhythm/assets/sprites/ring.png.ogt +7 -0
- package/archetypes/rhythm/assets/sprites/spark.png +0 -0
- package/archetypes/rhythm/assets/sprites/spark.png.ogt +7 -0
- package/archetypes/rhythm/assets/strings/en.ogt +61 -0
- package/archetypes/rhythm/assets/strings/zh-CN.ogt +61 -0
- package/archetypes/rhythm/gitattributes +22 -0
- package/archetypes/rhythm/host.d.ts +46 -0
- package/archetypes/rhythm/package.json +18 -0
- package/archetypes/rhythm/project.ogt +14 -0
- package/archetypes/rhythm/references/metal/highway.png +0 -0
- package/archetypes/rhythm/references/metal/results.png +0 -0
- package/archetypes/rhythm/references/metal/title.png +0 -0
- package/archetypes/rhythm/src/components.ts +147 -0
- package/archetypes/rhythm/src/main.ts +202 -0
- package/archetypes/rhythm/src/systems.ts +490 -0
- package/archetypes/rhythm/src/ui.ts +421 -0
- package/archetypes/rhythm/tests/band.og.ts +45 -0
- package/archetypes/rhythm/tests/calibrate.og.ts +49 -0
- package/archetypes/rhythm/tests/clear.og.ts +51 -0
- package/archetypes/rhythm/tests/fail.og.ts +40 -0
- package/archetypes/rhythm/tests/flow.og.ts +54 -0
- package/archetypes/rhythm/tests/frames.og.ts +35 -0
- package/archetypes/rhythm/tests/frames.ts +134 -0
- package/archetypes/rhythm/tests/lib.ts +123 -0
- package/archetypes/rhythm/tests/pad.og.ts +41 -0
- package/archetypes/rhythm/tests/pause.og.ts +77 -0
- package/archetypes/rhythm/tests/phone.og.ts +44 -0
- package/archetypes/rhythm/tests/replay.og.ts +27 -0
- package/archetypes/rhythm/tests/timing.og.ts +37 -0
- package/archetypes/rhythm/tools/make-assets.py +383 -0
- package/archetypes/rhythm/tools/oglite.py +285 -0
- package/archetypes/rhythm/tsconfig.json +17 -0
- package/archetypes/roguelike/.origin/setup +14 -0
- package/archetypes/roguelike/LICENSES.md +14 -0
- package/archetypes/roguelike/README.md +256 -0
- package/archetypes/roguelike/assets/ai/foe.ogt +28 -0
- package/archetypes/roguelike/assets/ai/guardian.ogt +26 -0
- package/archetypes/roguelike/assets/audio/bump.wav +0 -0
- package/archetypes/roguelike/assets/audio/drink.wav +0 -0
- package/archetypes/roguelike/assets/audio/fall.wav +0 -0
- package/archetypes/roguelike/assets/audio/hit.wav +0 -0
- package/archetypes/roguelike/assets/audio/hurt.wav +0 -0
- package/archetypes/roguelike/assets/audio/item.wav +0 -0
- package/archetypes/roguelike/assets/audio/kill.wav +0 -0
- package/archetypes/roguelike/assets/audio/pickup.wav +0 -0
- package/archetypes/roguelike/assets/audio/roar.wav +0 -0
- package/archetypes/roguelike/assets/audio/stairs.wav +0 -0
- package/archetypes/roguelike/assets/audio/step.ogt +9 -0
- package/archetypes/roguelike/assets/audio/telegraph.wav +0 -0
- package/archetypes/roguelike/assets/audio/tomb.wav +0 -0
- package/archetypes/roguelike/assets/audio/ui-close.ogt +9 -0
- package/archetypes/roguelike/assets/audio/ui-error.ogt +9 -0
- package/archetypes/roguelike/assets/audio/ui-open.ogt +9 -0
- package/archetypes/roguelike/assets/audio/ui-press.ogt +9 -0
- package/archetypes/roguelike/assets/audio/ui-success.ogt +9 -0
- package/archetypes/roguelike/assets/audio/won.wav +0 -0
- package/archetypes/roguelike/assets/fonts/NotoSansSC-subset.ttf +0 -0
- package/archetypes/roguelike/assets/fonts/NotoSansSC-subset.ttf.ogt +10 -0
- package/archetypes/roguelike/assets/fonts/OFL.txt +93 -0
- package/archetypes/roguelike/assets/maps/dive.ogt +106 -0
- package/archetypes/roguelike/assets/skins/lampdive/DotGothic16-Regular.ttf +0 -0
- package/archetypes/roguelike/assets/skins/lampdive/DotGothic16-Regular.ttf.ogt +9 -0
- package/archetypes/roguelike/assets/skins/lampdive/LICENSES.md +16 -0
- package/archetypes/roguelike/assets/skins/lampdive/OFL.txt +93 -0
- package/archetypes/roguelike/assets/skins/lampdive/atlas.png +0 -0
- package/archetypes/roguelike/assets/skins/lampdive/atlas.png.ogt +7 -0
- package/archetypes/roguelike/assets/skins/lampdive/icons.png +0 -0
- package/archetypes/roguelike/assets/skins/lampdive/icons.png.ogt +7 -0
- package/archetypes/roguelike/assets/skins/lampdive/skin.ogt +115 -0
- package/archetypes/roguelike/assets/sprites/dive.ogt +50 -0
- package/archetypes/roguelike/assets/sprites/dive.png +0 -0
- package/archetypes/roguelike/assets/sprites/dive.png.ogt +7 -0
- package/archetypes/roguelike/assets/sprites/glow.png +0 -0
- package/archetypes/roguelike/assets/sprites/glow.png.ogt +7 -0
- package/archetypes/roguelike/assets/strings/en.ogt +57 -0
- package/archetypes/roguelike/assets/strings/zh-CN.ogt +57 -0
- package/archetypes/roguelike/assets/tiles/tomb.ogt +31 -0
- package/archetypes/roguelike/assets/tiles/tomb.png +0 -0
- package/archetypes/roguelike/assets/tiles/tomb.png.ogt +7 -0
- package/archetypes/roguelike/gitattributes +22 -0
- package/archetypes/roguelike/host.d.ts +46 -0
- package/archetypes/roguelike/package.json +18 -0
- package/archetypes/roguelike/project.ogt +14 -0
- package/archetypes/roguelike/references/metal/dive.png +0 -0
- package/archetypes/roguelike/references/metal/over.png +0 -0
- package/archetypes/roguelike/references/metal/title.png +0 -0
- package/archetypes/roguelike/src/art.ts +23 -0
- package/archetypes/roguelike/src/components.ts +169 -0
- package/archetypes/roguelike/src/dive.ts +144 -0
- package/archetypes/roguelike/src/foes.ts +174 -0
- package/archetypes/roguelike/src/main.ts +258 -0
- package/archetypes/roguelike/src/systems.ts +620 -0
- package/archetypes/roguelike/src/ui.ts +350 -0
- package/archetypes/roguelike/tests/flow.og.ts +54 -0
- package/archetypes/roguelike/tests/foes.og.ts +45 -0
- package/archetypes/roguelike/tests/frames.og.ts +32 -0
- package/archetypes/roguelike/tests/frames.ts +134 -0
- package/archetypes/roguelike/tests/lib.ts +83 -0
- package/archetypes/roguelike/tests/lose.og.ts +44 -0
- package/archetypes/roguelike/tests/pad.og.ts +54 -0
- package/archetypes/roguelike/tests/pause.og.ts +59 -0
- package/archetypes/roguelike/tests/phone.og.ts +54 -0
- package/archetypes/roguelike/tests/replay.og.ts +24 -0
- package/archetypes/roguelike/tests/win.og.ts +60 -0
- package/archetypes/roguelike/tools/make-assets.py +518 -0
- package/archetypes/roguelike/tools/oglite.py +285 -0
- package/archetypes/roguelike/tsconfig.json +17 -0
- package/archetypes/runner/.origin/setup +14 -0
- package/archetypes/runner/LICENSES.md +10 -0
- package/archetypes/runner/README.md +225 -0
- package/archetypes/runner/assets/audio/coin.wav +0 -0
- package/archetypes/runner/assets/audio/crash.wav +0 -0
- package/archetypes/runner/assets/audio/hold.ogt +9 -0
- package/archetypes/runner/assets/audio/jump.wav +0 -0
- package/archetypes/runner/assets/audio/start.wav +0 -0
- package/archetypes/runner/assets/fonts/OFL.txt +93 -0
- package/archetypes/runner/assets/fonts/ui.ttf +0 -0
- package/archetypes/runner/assets/fonts/ui.ttf.ogt +11 -0
- package/archetypes/runner/assets/maps/far.ogt +25 -0
- package/archetypes/runner/assets/maps/near.ogt +25 -0
- package/archetypes/runner/assets/maps/roofs.ogt +19 -0
- package/archetypes/runner/assets/scenes/main.ogt +35 -0
- package/archetypes/runner/assets/sprites/coin.ogt +11 -0
- package/archetypes/runner/assets/sprites/coin.png +0 -0
- package/archetypes/runner/assets/sprites/coin.png.ogt +7 -0
- package/archetypes/runner/assets/sprites/courier.ogt +32 -0
- package/archetypes/runner/assets/sprites/courier.png +0 -0
- package/archetypes/runner/assets/sprites/courier.png.ogt +7 -0
- package/archetypes/runner/assets/sprites/props.ogt +21 -0
- package/archetypes/runner/assets/sprites/props.png +0 -0
- package/archetypes/runner/assets/sprites/props.png.ogt +7 -0
- package/archetypes/runner/assets/sprites/sky.png +0 -0
- package/archetypes/runner/assets/sprites/sky.png.ogt +7 -0
- package/archetypes/runner/assets/tiles/city.ogt +18 -0
- package/archetypes/runner/assets/tiles/city.png +0 -0
- package/archetypes/runner/assets/tiles/city.png.ogt +7 -0
- package/archetypes/runner/gitattributes +22 -0
- package/archetypes/runner/host.d.ts +46 -0
- package/archetypes/runner/package.json +18 -0
- package/archetypes/runner/project.ogt +18 -0
- package/archetypes/runner/references/metal/frames-coin.png +0 -0
- package/archetypes/runner/references/metal/frames-crash.png +0 -0
- package/archetypes/runner/references/metal/frames-title.png +0 -0
- package/archetypes/runner/src/art.ts +57 -0
- package/archetypes/runner/src/components.ts +94 -0
- package/archetypes/runner/src/main.ts +241 -0
- package/archetypes/runner/src/systems.ts +553 -0
- package/archetypes/runner/tests/coins.og.ts +30 -0
- package/archetypes/runner/tests/flow.og.ts +72 -0
- package/archetypes/runner/tests/frames.og.ts +37 -0
- package/archetypes/runner/tests/frames.ts +134 -0
- package/archetypes/runner/tests/jump.og.ts +44 -0
- package/archetypes/runner/tests/lib.ts +42 -0
- package/archetypes/runner/tests/records.og.ts +43 -0
- package/archetypes/runner/tests/replay.og.ts +36 -0
- package/archetypes/runner/tests/sounds.og.ts +43 -0
- package/archetypes/runner/tests/tune.og.ts +36 -0
- package/archetypes/runner/tools/make-assets.py +603 -0
- package/archetypes/runner/tools/oglite.py +285 -0
- package/archetypes/runner/tsconfig.json +17 -0
- package/archetypes/third-person/.origin/setup +14 -0
- package/archetypes/third-person/LICENSES.md +23 -0
- package/archetypes/third-person/README.md +249 -0
- package/archetypes/third-person/assets/ai/sentinel-east.ogt +69 -0
- package/archetypes/third-person/assets/ai/sentinel-north.ogt +69 -0
- package/archetypes/third-person/assets/ai/sentinel-west.ogt +69 -0
- package/archetypes/third-person/assets/anims/humanoid-clips.glb +0 -0
- package/archetypes/third-person/assets/audio/alarm.wav +0 -0
- package/archetypes/third-person/assets/audio/dawn.wav +0 -0
- package/archetypes/third-person/assets/audio/grab.wav +0 -0
- package/archetypes/third-person/assets/audio/ignite.wav +0 -0
- package/archetypes/third-person/assets/audio/jump.wav +0 -0
- package/archetypes/third-person/assets/audio/night.wav +0 -0
- package/archetypes/third-person/assets/audio/splash.wav +0 -0
- package/archetypes/third-person/assets/audio/step.ogt +9 -0
- package/archetypes/third-person/assets/audio/ui-close.ogt +9 -0
- package/archetypes/third-person/assets/audio/ui-error.ogt +9 -0
- package/archetypes/third-person/assets/audio/ui-open.ogt +9 -0
- package/archetypes/third-person/assets/audio/ui-press.ogt +9 -0
- package/archetypes/third-person/assets/audio/ui-success.ogt +9 -0
- package/archetypes/third-person/assets/audio/vale.wav +0 -0
- package/archetypes/third-person/assets/fonts/NotoSansSC-subset.ttf +0 -0
- package/archetypes/third-person/assets/fonts/NotoSansSC-subset.ttf.ogt +10 -0
- package/archetypes/third-person/assets/fonts/OFL.txt +93 -0
- package/archetypes/third-person/assets/fx/burst.ogt +25 -0
- package/archetypes/third-person/assets/fx/fire.ogt +24 -0
- package/archetypes/third-person/assets/fx/smoke.ogt +24 -0
- package/archetypes/third-person/assets/fx/splash.ogt +24 -0
- package/archetypes/third-person/assets/luts/teal-orange.cube +4917 -0
- package/archetypes/third-person/assets/models/stout.glb +0 -0
- package/archetypes/third-person/assets/models/strider.glb +0 -0
- package/archetypes/third-person/assets/models/strider.glb.ogt +9 -0
- package/archetypes/third-person/assets/nav/vale.ogt +43 -0
- package/archetypes/third-person/assets/rigs/strider.ogt +6 -0
- package/archetypes/third-person/assets/skins/ember/Cinzel-Bold.ttf +0 -0
- package/archetypes/third-person/assets/skins/ember/Cinzel-Bold.ttf.ogt +9 -0
- package/archetypes/third-person/assets/skins/ember/LICENSES.md +13 -0
- package/archetypes/third-person/assets/skins/ember/Newsreader-Medium.ttf +0 -0
- package/archetypes/third-person/assets/skins/ember/Newsreader-Medium.ttf.ogt +9 -0
- package/archetypes/third-person/assets/skins/ember/OFL.txt +94 -0
- package/archetypes/third-person/assets/skins/ember/atlas.png +0 -0
- package/archetypes/third-person/assets/skins/ember/atlas.png.ogt +7 -0
- package/archetypes/third-person/assets/skins/ember/icons.png +0 -0
- package/archetypes/third-person/assets/skins/ember/icons.png.ogt +7 -0
- package/archetypes/third-person/assets/skins/ember/skin.ogt +109 -0
- package/archetypes/third-person/assets/strings/en.ogt +47 -0
- package/archetypes/third-person/assets/strings/zh-CN.ogt +47 -0
- package/archetypes/third-person/assets/terrain/vale-control.png +0 -0
- package/archetypes/third-person/assets/terrain/vale.ogt +42 -0
- package/archetypes/third-person/assets/terrain/vale.png +0 -0
- package/archetypes/third-person/assets/textures/decals.png +0 -0
- package/archetypes/third-person/assets/textures/flame.png +0 -0
- package/archetypes/third-person/assets/textures/smoke.png +0 -0
- package/archetypes/third-person/assets/textures/spark.png +0 -0
- package/archetypes/third-person/assets/textures/terrain-grass.png +0 -0
- package/archetypes/third-person/assets/textures/terrain-path.png +0 -0
- package/archetypes/third-person/assets/textures/terrain-rock.png +0 -0
- package/archetypes/third-person/assets/textures/terrain-sand.png +0 -0
- package/archetypes/third-person/gitattributes +22 -0
- package/archetypes/third-person/host.d.ts +46 -0
- package/archetypes/third-person/package.json +18 -0
- package/archetypes/third-person/project.ogt +14 -0
- package/archetypes/third-person/references/metal/beacon.png +0 -0
- package/archetypes/third-person/references/metal/dawn.png +0 -0
- package/archetypes/third-person/references/metal/title.png +0 -0
- package/archetypes/third-person/references/webgl2/beacon.png +0 -0
- package/archetypes/third-person/src/anim.ts +87 -0
- package/archetypes/third-person/src/beacons.ts +80 -0
- package/archetypes/third-person/src/components.ts +148 -0
- package/archetypes/third-person/src/hero.ts +293 -0
- package/archetypes/third-person/src/main.ts +164 -0
- package/archetypes/third-person/src/sentinels.ts +159 -0
- package/archetypes/third-person/src/sound.ts +66 -0
- package/archetypes/third-person/src/ui.ts +451 -0
- package/archetypes/third-person/src/world.ts +212 -0
- package/archetypes/third-person/tests/flow.og.ts +70 -0
- package/archetypes/third-person/tests/frames.og.ts +35 -0
- package/archetypes/third-person/tests/frames.ts +134 -0
- package/archetypes/third-person/tests/hitstop.og.ts +26 -0
- package/archetypes/third-person/tests/lib.ts +87 -0
- package/archetypes/third-person/tests/lose.og.ts +44 -0
- package/archetypes/third-person/tests/pause.og.ts +64 -0
- package/archetypes/third-person/tests/phone.og.ts +65 -0
- package/archetypes/third-person/tests/replay.og.ts +32 -0
- package/archetypes/third-person/tests/restart.og.ts +28 -0
- package/archetypes/third-person/tests/sentinels.og.ts +48 -0
- package/archetypes/third-person/tests/win.og.ts +62 -0
- package/archetypes/third-person/tools/make-assets.py +353 -0
- package/archetypes/third-person/tools/oglite.py +285 -0
- package/archetypes/third-person/tsconfig.json +17 -0
- package/archetypes/topdown/.origin/setup +14 -0
- package/archetypes/topdown/LICENSES.md +10 -0
- package/archetypes/topdown/README.md +235 -0
- package/archetypes/topdown/assets/ai/slime.ogt +49 -0
- package/archetypes/topdown/assets/audio/coin.wav +0 -0
- package/archetypes/topdown/assets/audio/door.wav +0 -0
- package/archetypes/topdown/assets/audio/hit.wav +0 -0
- package/archetypes/topdown/assets/audio/hurt.wav +0 -0
- package/archetypes/topdown/assets/audio/key.wav +0 -0
- package/archetypes/topdown/assets/audio/step.ogt +9 -0
- package/archetypes/topdown/assets/fonts/OFL.txt +93 -0
- package/archetypes/topdown/assets/fonts/ui.ttf +0 -0
- package/archetypes/topdown/assets/fonts/ui.ttf.ogt +9 -0
- package/archetypes/topdown/assets/maps/tomb.tmj +2183 -0
- package/archetypes/topdown/assets/sprites/hero.ogt +58 -0
- package/archetypes/topdown/assets/sprites/hero.png +0 -0
- package/archetypes/topdown/assets/sprites/hero.png.ogt +7 -0
- package/archetypes/topdown/assets/sprites/items.ogt +15 -0
- package/archetypes/topdown/assets/sprites/items.png +0 -0
- package/archetypes/topdown/assets/sprites/items.png.ogt +7 -0
- package/archetypes/topdown/assets/sprites/slime.ogt +17 -0
- package/archetypes/topdown/assets/sprites/slime.png +0 -0
- package/archetypes/topdown/assets/sprites/slime.png.ogt +7 -0
- package/archetypes/topdown/assets/tiles/dungeon.ogt +65 -0
- package/archetypes/topdown/assets/tiles/dungeon.png +0 -0
- package/archetypes/topdown/assets/tiles/dungeon.png.ogt +7 -0
- package/archetypes/topdown/gitattributes +22 -0
- package/archetypes/topdown/host.d.ts +46 -0
- package/archetypes/topdown/package.json +18 -0
- package/archetypes/topdown/project.ogt +14 -0
- package/archetypes/topdown/references/metal/crit.png +0 -0
- package/archetypes/topdown/references/metal/dash.png +0 -0
- package/archetypes/topdown/references/metal/east.png +0 -0
- package/archetypes/topdown/references/metal/start.png +0 -0
- package/archetypes/topdown/src/art.ts +48 -0
- package/archetypes/topdown/src/components.ts +128 -0
- package/archetypes/topdown/src/main.ts +275 -0
- package/archetypes/topdown/src/systems.ts +503 -0
- package/archetypes/topdown/tests/ai.og.ts +64 -0
- package/archetypes/topdown/tests/combat.og.ts +72 -0
- package/archetypes/topdown/tests/door.og.ts +62 -0
- package/archetypes/topdown/tests/flee.og.ts +49 -0
- package/archetypes/topdown/tests/frames.og.ts +45 -0
- package/archetypes/topdown/tests/frames.ts +134 -0
- package/archetypes/topdown/tests/lib.ts +71 -0
- package/archetypes/topdown/tests/replay.og.ts +40 -0
- package/archetypes/topdown/tests/walk.og.ts +46 -0
- package/archetypes/topdown/tools/make-assets.py +623 -0
- package/archetypes/topdown/tools/oglite.py +285 -0
- package/archetypes/topdown/tsconfig.json +17 -0
- package/archetypes/tower-defense/.origin/setup +14 -0
- package/archetypes/tower-defense/LICENSES.md +15 -0
- package/archetypes/tower-defense/README.md +240 -0
- package/archetypes/tower-defense/assets/ai/plant.ogt +16 -0
- package/archetypes/tower-defense/assets/audio/clear.wav +0 -0
- package/archetypes/tower-defense/assets/audio/frost.wav +0 -0
- package/archetypes/tower-defense/assets/audio/leak.wav +0 -0
- package/archetypes/tower-defense/assets/audio/lost.wav +0 -0
- package/archetypes/tower-defense/assets/audio/night.wav +0 -0
- package/archetypes/tower-defense/assets/audio/plant.wav +0 -0
- package/archetypes/tower-defense/assets/audio/pop.wav +0 -0
- package/archetypes/tower-defense/assets/audio/thorn.wav +0 -0
- package/archetypes/tower-defense/assets/audio/ui-close.ogt +9 -0
- package/archetypes/tower-defense/assets/audio/ui-error.ogt +9 -0
- package/archetypes/tower-defense/assets/audio/ui-open.ogt +9 -0
- package/archetypes/tower-defense/assets/audio/ui-press.ogt +9 -0
- package/archetypes/tower-defense/assets/audio/ui-success.ogt +9 -0
- package/archetypes/tower-defense/assets/audio/wave.wav +0 -0
- package/archetypes/tower-defense/assets/audio/won.wav +0 -0
- package/archetypes/tower-defense/assets/fonts/NotoSansSC-subset.ttf +0 -0
- package/archetypes/tower-defense/assets/fonts/NotoSansSC-subset.ttf.ogt +10 -0
- package/archetypes/tower-defense/assets/fonts/OFL.txt +93 -0
- package/archetypes/tower-defense/assets/fx/fireflies.ogt +21 -0
- package/archetypes/tower-defense/assets/fx/pop.ogt +21 -0
- package/archetypes/tower-defense/assets/maps/garden.ogt +91 -0
- package/archetypes/tower-defense/assets/skins/pathguard/Fredoka-SemiBold.ttf +0 -0
- package/archetypes/tower-defense/assets/skins/pathguard/Fredoka-SemiBold.ttf.ogt +9 -0
- package/archetypes/tower-defense/assets/skins/pathguard/LICENSES.md +13 -0
- package/archetypes/tower-defense/assets/skins/pathguard/LilitaOne-Regular.ttf +0 -0
- package/archetypes/tower-defense/assets/skins/pathguard/LilitaOne-Regular.ttf.ogt +9 -0
- package/archetypes/tower-defense/assets/skins/pathguard/OFL.txt +94 -0
- package/archetypes/tower-defense/assets/skins/pathguard/atlas.png +0 -0
- package/archetypes/tower-defense/assets/skins/pathguard/atlas.png.ogt +7 -0
- package/archetypes/tower-defense/assets/skins/pathguard/icons.png +0 -0
- package/archetypes/tower-defense/assets/skins/pathguard/icons.png.ogt +7 -0
- package/archetypes/tower-defense/assets/skins/pathguard/skin.ogt +111 -0
- package/archetypes/tower-defense/assets/sprites/garden.ogt +66 -0
- package/archetypes/tower-defense/assets/sprites/garden.png +0 -0
- package/archetypes/tower-defense/assets/sprites/garden.png.ogt +7 -0
- package/archetypes/tower-defense/assets/sprites/glow.png +0 -0
- package/archetypes/tower-defense/assets/sprites/glow.png.ogt +7 -0
- package/archetypes/tower-defense/assets/sprites/ring.png +0 -0
- package/archetypes/tower-defense/assets/sprites/ring.png.ogt +7 -0
- package/archetypes/tower-defense/assets/sprites/spark.png +0 -0
- package/archetypes/tower-defense/assets/sprites/spark.png.ogt +7 -0
- package/archetypes/tower-defense/assets/strings/en.ogt +47 -0
- package/archetypes/tower-defense/assets/strings/zh-CN.ogt +47 -0
- package/archetypes/tower-defense/assets/tiles/garden.ogt +10 -0
- package/archetypes/tower-defense/assets/tiles/garden.png +0 -0
- package/archetypes/tower-defense/assets/tiles/garden.png.ogt +7 -0
- package/archetypes/tower-defense/gitattributes +22 -0
- package/archetypes/tower-defense/host.d.ts +46 -0
- package/archetypes/tower-defense/package.json +18 -0
- package/archetypes/tower-defense/project.ogt +14 -0
- package/archetypes/tower-defense/references/metal/end.png +0 -0
- package/archetypes/tower-defense/references/metal/title.png +0 -0
- package/archetypes/tower-defense/references/metal/wave.png +0 -0
- package/archetypes/tower-defense/src/art.ts +24 -0
- package/archetypes/tower-defense/src/components.ts +156 -0
- package/archetypes/tower-defense/src/main.ts +253 -0
- package/archetypes/tower-defense/src/systems.ts +658 -0
- package/archetypes/tower-defense/src/ui.ts +382 -0
- package/archetypes/tower-defense/tests/flow.og.ts +56 -0
- package/archetypes/tower-defense/tests/frames.og.ts +31 -0
- package/archetypes/tower-defense/tests/frames.ts +134 -0
- package/archetypes/tower-defense/tests/lib.ts +81 -0
- package/archetypes/tower-defense/tests/lose.og.ts +40 -0
- package/archetypes/tower-defense/tests/maze.og.ts +53 -0
- package/archetypes/tower-defense/tests/pad.og.ts +41 -0
- package/archetypes/tower-defense/tests/pause.og.ts +59 -0
- package/archetypes/tower-defense/tests/phone.og.ts +49 -0
- package/archetypes/tower-defense/tests/replay.og.ts +28 -0
- package/archetypes/tower-defense/tests/win.og.ts +58 -0
- package/archetypes/tower-defense/tools/make-assets.py +640 -0
- package/archetypes/tower-defense/tools/oglite.py +285 -0
- package/archetypes/tower-defense/tsconfig.json +17 -0
- package/bin/create.ts +496 -0
- package/looks/catalogue.json +1871 -0
- package/package.json +31 -4
- package/template/.origin/setup +14 -0
- package/template/LICENSES.md +23 -0
- package/template/README.md +37 -0
- package/template/assets/ai/guard.ogt +48 -0
- package/template/assets/audio/blip.wav +0 -0
- package/template/assets/audio/click.ogt +9 -0
- package/template/assets/fonts/NotoSansSC-Regular-subset.ttf +0 -0
- package/template/assets/fonts/NotoSansSC-Regular-subset.ttf.ogt +12 -0
- package/template/assets/fonts/OFL.txt +93 -0
- package/template/assets/looks/origin-game.ogt +12 -0
- package/template/assets/models/dropship.glb +0 -0
- package/template/assets/models/walker.glb +0 -0
- package/template/assets/nav/yard.ogt +27 -0
- package/template/assets/scenes/main.ogt +34 -0
- package/template/assets/strings/en.ogt +14 -0
- package/template/assets/textures/stone.png +0 -0
- package/template/assets/textures/stone_n.png +0 -0
- package/template/assets/textures/stone_n.png.ogt +7 -0
- package/template/gitattributes +22 -0
- package/template/package.json +18 -0
- package/template/project.ogt +25 -0
- package/template/src/main.ts +246 -0
- package/template/tests/guard.og.ts +67 -0
- package/template/tests/smoke.og.ts +43 -0
- package/template/tsconfig.json +17 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# Prepares this Game's cloud sandbox snapshot: Origin runs it once per
|
|
3
|
+
# snapshot build, in the checkout, without a terminal, for at most 20 minutes,
|
|
4
|
+
# and saves the result for new sandboxes of the Game. Keep it idempotent; it
|
|
5
|
+
# never receives credentials. Only ignored output is kept: node_modules/ and
|
|
6
|
+
# cooked/ (og cook is incremental, so a new sandbox starts cooked).
|
|
7
|
+
set -eu
|
|
8
|
+
if [ -f bun.lock ]; then bun install --frozen-lockfile; else bun install; fi
|
|
9
|
+
og="${ORIGIN_OG_BIN:-og}"
|
|
10
|
+
if ! command -v "$og" >/dev/null 2>&1; then
|
|
11
|
+
echo "no og on this executor class; the first og run cooks instead"
|
|
12
|
+
exit 0
|
|
13
|
+
fi
|
|
14
|
+
"$og" cook .
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Asset licences
|
|
2
|
+
|
|
3
|
+
| File | Licence | Origin |
|
|
4
|
+
|---|---|---|
|
|
5
|
+
| `assets/tiles/tomb.png`, `assets/tiles/*.ogt` | CC0 1.0 | self-made: the tomb's 16 px tileset (sixteen wall shapes, floor slabs, the stairs, the pedestal, two fog tiles) drawn texel by texel by `tools/make-assets.py` (standard library only, deterministic), with its tileset and import settings |
|
|
6
|
+
| `assets/maps/dive.ogt` | CC0 1.0 | self-made: the 28 × 20 floor every dive carves, same script |
|
|
7
|
+
| `assets/sprites/*.png`, `assets/sprites/*.ogt` | CC0 1.0 | self-made: the lamp-bearer, foes, finds and relic sheet and the lamp's glow, same script |
|
|
8
|
+
| `assets/ai/*.ogt` | CC0 1.0 | self-made: the foes' and the guardian's behaviours |
|
|
9
|
+
| `assets/audio/*.wav` | CC0 1.0 | self-made: synthesised tones and noise and the tomb's music loop, same script |
|
|
10
|
+
| `assets/audio/*.ogt` | CC0 1.0 | `og sfx` presets (click, select, back, error, levelup, and a footstep) that `og cook` synthesises, written by the same script |
|
|
11
|
+
| `assets/strings/*.ogt` | CC0 1.0 | self-made: the English and Chinese string tables |
|
|
12
|
+
| `assets/fonts/NotoSansSC-subset.ttf` | SIL Open Font License 1.1 (`assets/fonts/OFL.txt`) | Noto Sans SC Regular, subset to Latin-1 and the characters of `assets/strings/zh-CN.ogt` by the same script from the project template's `assets/fonts/NotoSansSC-Regular-subset.ttf` |
|
|
13
|
+
| `assets/skins/lampdive/*` | CC0 1.0 art, SIL OFL 1.1 fonts | the engine's pixel style pack (`templates/ui-kit/assets/skins/pixel`, `assets/skins/lampdive/LICENSES.md`) with this game's palette |
|
|
14
|
+
| `references/*/*.png` | CC0 1.0 | frames of this game recorded by `tests/frames.og.ts` |
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# Lamp Dive — the roguelike archetype (2D)
|
|
2
|
+
|
|
3
|
+
A lamp-bearer goes two floors down a tomb, one step a turn. Every dive is
|
|
4
|
+
new: the rooms, the corridors, the foes and the finds come from the dive's
|
|
5
|
+
seed. The lamp lights only so far and only what a straight line reaches;
|
|
6
|
+
what it lit before stays dimly remembered. Rats and skeletons hunt the
|
|
7
|
+
lamp; the moss-faced guardian waits by the relic on the second floor, and
|
|
8
|
+
its every third strike is charged. When the lamp goes out the dive is over
|
|
9
|
+
(no second chances): the summary, then a new dive from nothing.
|
|
10
|
+
|
|
11
|
+
提灯下潜:提灯人一回合一步,向下走两层墓穴。每次下潜都是新的:房间、走廊、敌人和物品都由这次下潜的种子生成。灯只照得到一定距离,也只照得到直线看得见的地方;照过的地方会暗暗记住。老鼠和骷髅会追着灯光而来;苔面守卫在第二层的遗物旁等着,每第三击都是蓄力重击。灯一灭,这次下潜就结束了(没有第二次机会):先看总结,再从头开始新的下潜。
|
|
12
|
+
|
|
13
|
+
This is a complete Origin Engine project: `og run .` plays it headless,
|
|
14
|
+
`og build .` makes the play page, `og test .` runs its playtests and
|
|
15
|
+
`og polish .` scores them. It rebuilds the platform's retired Discover
|
|
16
|
+
roguelike prototype on the engine: its premise (a short dive, one life,
|
|
17
|
+
procedural floors, a run summary) and none of its code or art.
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
og cook . # assets/ into cooked/ (og run and og build cook too)
|
|
21
|
+
og run . --headless --commands "0.3:dive:7;0.5:key_down:ArrowUp;0.53:key_up:ArrowUp;1:screenshot:dive.png;1.1:quit"
|
|
22
|
+
og test . # tests/*.og.ts through og run --headless --commands
|
|
23
|
+
og polish . # the playtests scored against og-taste and og-feel
|
|
24
|
+
og build . --publish # dist/: the play page as it ships
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## What it demonstrates, and the skills it exercises
|
|
28
|
+
|
|
29
|
+
- **Procedural floors from og.Rng** (og-core §2, §6): a floor's plan
|
|
30
|
+
(`src/dive.ts`: rooms placed without touching, L-shaped corridors, the
|
|
31
|
+
start, the stairs or the relic in the room farthest by walking distance,
|
|
32
|
+
foes and finds in the others) is a pure function of an `og.Rng` stream
|
|
33
|
+
forked with the dive's seed and the floor (`fork("dive-<seed>-floor-<n>")`),
|
|
34
|
+
so the three systems that need it compute the same plan and a dive
|
|
35
|
+
replays from its seed. Foes and Loot only fork, so they declare
|
|
36
|
+
`og.Rng` among their reads: a fork reads the seed and moves no stream. A new dive draws its seed from the world's
|
|
37
|
+
`og.Rng`.
|
|
38
|
+
- **Turns on a tilemap** (og-game §8): `assets/maps/dive.ogt` is all stone;
|
|
39
|
+
each floor is carved at run time with `og.tilemap.setTile` on its ground,
|
|
40
|
+
walls (an auto-tiled `bitmask16` terrain), decor and fog layers. A key
|
|
41
|
+
press is one turn: a step tweened over 0.09 s, a strike, a wait or a
|
|
42
|
+
draught; a press while the last action plays out waits for its turn.
|
|
43
|
+
- **Fog of war**: the `fog` layer lies over everything; when the lamp-bearer
|
|
44
|
+
moves, every cell within the lamp's reach that a line from it reaches
|
|
45
|
+
without crossing stone is cleared, cells lit before are dimmed, cells
|
|
46
|
+
never lit stay dark. Foes and finds show only on lit cells.
|
|
47
|
+
- **Monsters on behaviour trees** (og-ai §3, §4): `assets/ai/foe.ogt` (rats,
|
|
48
|
+
skeletons) and `assets/ai/guardian.ogt` run on `og.AiAgent` with
|
|
49
|
+
`og.Perception` occluded by the walls' colliders (`og.Tilemap`'s
|
|
50
|
+
`colliderLayers`); the trees check `Game.foesTurn`, `sees`,
|
|
51
|
+
`targetDistance` and `sinceSeen`, and act through the game's commands
|
|
52
|
+
(`src/foes.ts`): strike, hunt along an `og.nav.findPath` path on a grid
|
|
53
|
+
rebuilt per floor, roam, brace. Each foe acts once a turn.
|
|
54
|
+
- **Items, permadeath and a run summary**: potions, a blade, a ward, lamp
|
|
55
|
+
oil, coins and the relic; the lamp out ends the dive, the summary
|
|
56
|
+
(`og.ui.modal`) says how deep, how long, what fell, what was found and
|
|
57
|
+
what put the lamp out; Dive again starts from nothing.
|
|
58
|
+
- **Feel** (og-feel §3–§7): a strike is a lunge, a white flash, a squash,
|
|
59
|
+
the number rising, a 4-tick hit stop (6 on a high roll), trauma and a
|
|
60
|
+
kick toward the foe; a fall is a stretch to nothing; a hurt is a red
|
|
61
|
+
flash, a squash, the red number, a hit stop and a kick; the guardian
|
|
62
|
+
glows red and shows "!" the turn before a charged strike (twice the hit
|
|
63
|
+
stop and trauma); its fall and the lamp going out are heavier still.
|
|
64
|
+
- **Screens on og.ui with a skin** (og-ui §2–§6, og-taste §1–§7): the
|
|
65
|
+
engine's pixel pack recoloured as `assets/skins/lampdive` (the tomb's
|
|
66
|
+
violet panels, the lamp's amber as the one accent); the title over the
|
|
67
|
+
lamp-lit first room, the HUD as capsules in the corners (health meter,
|
|
68
|
+
strike, armour, gold, the floor, Pause), the draught button (it shakes
|
|
69
|
+
with the error sound when refused), Wait and an `og.ui.dpad` on a touch
|
|
70
|
+
screen, `og.ui.pauseMenu`, a settings dialog and the summary built from
|
|
71
|
+
widgets, a dissolve between screens (a fade with reduced motion).
|
|
72
|
+
- **Sound** (og-audio §1–§5): a voice per event (pitch-varied steps, hits,
|
|
73
|
+
pickups), the UI's sounds from `og sfx` presets, a 66 BPM tomb loop on
|
|
74
|
+
the music bus ducked under the effects and a reverb on the effects bus
|
|
75
|
+
(`og.AudioBusFx`).
|
|
76
|
+
- **Languages** (og-i18n §1–§5): every string is a key of
|
|
77
|
+
`assets/strings/en.ogt` and `zh-CN.ogt`; the Chinese font is Noto Sans SC
|
|
78
|
+
subset to exactly the table's characters.
|
|
79
|
+
- **The platform** (og-platform-sdk §1–§4): settings through
|
|
80
|
+
`loadSettings`/`saveSettings`; the dive record (`{dives, relics}`) read on
|
|
81
|
+
tick 0 and written at the revision read; a write refused as stale
|
|
82
|
+
(another device dived meanwhile) is read again and merged (the stored
|
|
83
|
+
counts plus what this device added) and written at the new revision; a
|
|
84
|
+
`dive.over` event.
|
|
85
|
+
|
|
86
|
+
`og polish .` (2026-10-19, og and the native addon built release from
|
|
87
|
+
this checkout): taste 99, feel 100, in
|
|
88
|
+
`tests/evidence/P2/archetypes/roguelike/` of the engine repository. With
|
|
89
|
+
the dev-profile og the gate builds, on a machine at load 30 to 50, the
|
|
90
|
+
same playtests' frame time p95 was 20 to 90 ms (median step 2 ms) and
|
|
91
|
+
feel 77–80: the p95 follows the machine's load, not the game
|
|
92
|
+
(`tests/evidence/P2/archetypes/frame-time.md`).
|
|
93
|
+
|
|
94
|
+
## Rules
|
|
95
|
+
|
|
96
|
+
- **A turn.** An arrow, WASD, the d-pad, the HUD's d-pad or a tap on the
|
|
97
|
+
next cell steps there; into a foe it strikes it; into stone it bumps (no
|
|
98
|
+
turn). Space (the pad's A, the HUD's Wait) waits; Q or 1 (the pad's X,
|
|
99
|
+
the HUD's Drink) drinks a draught (refused at full health or with the
|
|
100
|
+
flask empty, no turn). After every action but a bump or a refusal, each
|
|
101
|
+
foe takes one action. A held direction repeats after 14 ticks, then
|
|
102
|
+
every 7.
|
|
103
|
+
- **Strikes.** The lamp-bearer's strike is its attack (3) plus a die's 0
|
|
104
|
+
or 1. A foe's strike is its attack less the armour, at least 1.
|
|
105
|
+
|
|
106
|
+
| Foe | Health | Strike | Mind |
|
|
107
|
+
|---|---|---|---|
|
|
108
|
+
| Tomb rat | 5 | 1 | strikes beside the lamp, hunts it for 6 s after seeing it, else roams every turn |
|
|
109
|
+
| Skeleton | 9 | 2 | the same mind, roams every other turn |
|
|
110
|
+
| Moss-faced guardian | 18 | 3, charged 6 every third turn | strikes beside the lamp, closes in from 4 cells, else holds its ground; a charge not struck with is spent |
|
|
111
|
+
|
|
112
|
+
- **Finds.** A draught (+8 health), a blade (+1 strike), a ward (+1
|
|
113
|
+
armour), lamp oil (+1 reach), coins (5–15), the relic (the win).
|
|
114
|
+
- **The floors.** Floor 1's stairs, in the room farthest from the start,
|
|
115
|
+
go down (the foes left behind take no turn). Floor 2's relic stands in
|
|
116
|
+
its farthest room, the guardian before it.
|
|
117
|
+
- **The end.** The lamp out (health 0) or the relic taken ends the dive;
|
|
118
|
+
50 ticks later the summary. Nothing carries over to the next dive but the
|
|
119
|
+
record of dives and relics.
|
|
120
|
+
|
|
121
|
+
Everything is deterministic: the clock is the fixed tick, the plans come
|
|
122
|
+
from `og.Rng` streams, og.ai and og.nav are deterministic and in
|
|
123
|
+
snapshots, and `tests/replay.og.ts` replays a dive to the same hash.
|
|
124
|
+
|
|
125
|
+
## How it feels
|
|
126
|
+
|
|
127
|
+
| Moment | What happens | Where |
|
|
128
|
+
|---|---|---|
|
|
129
|
+
| a step | a 0.09 s quadOut tween, a pitch-varied footstep, the fog clearing | `Hero`, `Fog` |
|
|
130
|
+
| a bump | a squash against the stone, a dull thud, no turn | `Hero` |
|
|
131
|
+
| a strike | a lunge and back, the foe flashes white and squashes, the number in white (gold and bigger on a high roll), a 4–6-tick hit stop, trauma 0.15 (0.3 on the guardian), a kick | `Hero`, `Foes` |
|
|
132
|
+
| a foe felled | it stretches to nothing and fades, a chirp and a crunch (the guardian: a roar, a 12-tick hit stop, trauma 0.6) | `Foes` |
|
|
133
|
+
| a hurt | the foe lunges, the lamp-bearer flashes red and squashes, `-n` in red, a 3-tick hit stop (8 charged), trauma 0.25 (0.5), a kick | `strike` in `src/foes.ts` |
|
|
134
|
+
| a charge coming | the guardian tinted red, "!" rising over it, a double beep | `turnTaken` |
|
|
135
|
+
| a find | it rises and fades, its name in gold, a chime (an arpeggio for gear, a sip for a draught) | `Loot` |
|
|
136
|
+
| the stairs | `Floor 2` in gold, a punch, a falling rumble | `Hero` |
|
|
137
|
+
| the lamp out | a 16-tick hit stop, trauma 0.7, a falling tone; the summary after a beat | `strike` in `src/foes.ts`, `Ui` |
|
|
138
|
+
| the relic | a punch, a fanfare, the summary with a crown and a burst | `Loot`, `summary` |
|
|
139
|
+
|
|
140
|
+
## State
|
|
141
|
+
|
|
142
|
+
| Type | Kind | What it holds |
|
|
143
|
+
|---|---|---|
|
|
144
|
+
| `Game` | resource | the phase, the seed, the floor, the lamp-bearer's numbers and cell, the counts (turns, kills, hits, hurts, finds), the foes' turn, the queued action, the record, sound requests, the map, grid and mind handles, the lit and seen cells |
|
|
145
|
+
| `Tuning` | resource | the knobs below |
|
|
146
|
+
| `Prefs` | resource | the volumes, the language, reduced motion, the settings request |
|
|
147
|
+
| `Foes` | resource | where each foe stands (the Hero system reads it to strike what it walks into) |
|
|
148
|
+
| `Hero` | the lamp-bearer | steps, bumps |
|
|
149
|
+
| `Foe` | the 10 pooled foes | slot, kind, health, strike, cell, turns, the charge, the fall |
|
|
150
|
+
| `Loot` | the 12 pooled finds | slot, kind, coins, cell, the pickup |
|
|
151
|
+
| `Sfx` | one row per sound | its `Sound.*` bit, its plays |
|
|
152
|
+
|
|
153
|
+
## Systems (in tick order)
|
|
154
|
+
|
|
155
|
+
| System | Job |
|
|
156
|
+
|---|---|
|
|
157
|
+
| `og.systems.cameras` | the camera follows the lamp-bearer (`og.Follow2D`) |
|
|
158
|
+
| `Ui` | the screens, starting and ending dives, the camera's height for the surface, the buses, the platform's answers |
|
|
159
|
+
| `Hero` | carves a floor, draws the lamp's glow, the lamp-bearer's turn (step, strike, bump, wait, draught, stairs) |
|
|
160
|
+
| `Foes` | places a floor's foes, lands the lamp-bearer's strike, the falls, which foes the lamp shows, the charge's tint, the board; takes the foes' turn down once og.ai has thought with it |
|
|
161
|
+
| `Loot` | places a floor's finds, picks them up, shows the lit ones |
|
|
162
|
+
| `Fog` | what the lamp lights |
|
|
163
|
+
| `Voices` | plays each requested sound once |
|
|
164
|
+
|
|
165
|
+
og.ai runs before them (the foes' decisions, whose commands run before the
|
|
166
|
+
next tick).
|
|
167
|
+
|
|
168
|
+
## Tunables (`Tuning`)
|
|
169
|
+
|
|
170
|
+
| Field | Default | What it changes |
|
|
171
|
+
|---|---|---|
|
|
172
|
+
| `heroHp`, `heroAttack`, `potionHeal` | 20, 3, 8 | the lamp-bearer |
|
|
173
|
+
| `lamp` | 4.5 cells | how far the lamp lights |
|
|
174
|
+
| `ratHp`, `ratAttack` | 5, 1 | the rat |
|
|
175
|
+
| `skeletonHp`, `skeletonAttack` | 9, 2 | the skeleton |
|
|
176
|
+
| `guardianHp`, `guardianAttack` | 18, 3 | the guardian (charged: twice) |
|
|
177
|
+
| `sight` | 6 m | how far foes see |
|
|
178
|
+
| `stepTime` | 0.09 s | a step's tween; actions wait for it |
|
|
179
|
+
| `hitStop` | 4 ticks | a strike's hit stop |
|
|
180
|
+
|
|
181
|
+
## What a Maker changes first
|
|
182
|
+
|
|
183
|
+
1. **The floors**: `planFloor` in `src/dive.ts` (room sizes and count, what
|
|
184
|
+
goes in which room, how many foes on floor 2); more floors are `FLOORS`
|
|
185
|
+
in `src/ui.ts` and a branch in `planFloor`.
|
|
186
|
+
2. **The foes**: their numbers in `Tuning`, their minds in `assets/ai/`; a
|
|
187
|
+
new foe is a clip in `tools/make-assets.py`, a `FoeKind`, a `stats` case
|
|
188
|
+
and a mind.
|
|
189
|
+
3. **The finds**: `LootKind`, the `finds` lists in `planFloor`, a `take`
|
|
190
|
+
case.
|
|
191
|
+
4. **The look**: `assets/skins/lampdive/skin.ogt`'s palette and the art in
|
|
192
|
+
`tools/make-assets.py`, then `python3 tools/make-assets.py && og cook .`.
|
|
193
|
+
5. **Words**: `assets/strings/*.ogt`; a new Chinese string needs the
|
|
194
|
+
script run again to subset the font.
|
|
195
|
+
|
|
196
|
+
## Commands (for scripts and agents)
|
|
197
|
+
|
|
198
|
+
| Action | Does |
|
|
199
|
+
|---|---|
|
|
200
|
+
| `dive[:<seed>]` | starts a dive, as Dive does; with a seed, that dive |
|
|
201
|
+
| `descend` | goes down a floor now, as the stairs do |
|
|
202
|
+
| `warp:<x>:<y>` | puts the lamp-bearer on a cell (column, row from the top) |
|
|
203
|
+
| `hp:<n>` | sets the lamp-bearer's health |
|
|
204
|
+
| `give:<potion\|blade\|ward\|oil>` | a find, as picking it up gives it |
|
|
205
|
+
| `stale_record` | another device writes the dive record, so this one's next write is refused as stale and merged |
|
|
206
|
+
| `viewport:<desktop\|phone>` | lays the UI out for a phone in portrait (390 × 844 at 3×) |
|
|
207
|
+
| `language:<en\|zh-CN>` | switches the language |
|
|
208
|
+
| `strike`, `hunt`, `roam`, `brace` `:<foe>` | the foes' behaviour commands (og.ai sends them) |
|
|
209
|
+
| core actions | `touch_move_to:play`, `Pause`, `Drink`, `Wait`, `Pad/Up`…, `Again`, `Menu`; arrows, WASD, `Space`, `Q`, `Escape`; `gamepad:a` … |
|
|
210
|
+
|
|
211
|
+
`facts` (the probe's `state()`) reports the phase, the seed, the floor and
|
|
212
|
+
the deepest, health, strike, armour, the lamp, draughts, gold, `kills`,
|
|
213
|
+
`hits`, `hurts`, `finds`, `turns`, the lamp-bearer's cell, the lit and seen
|
|
214
|
+
cells, the win, what put the lamp out, the record and the language. The
|
|
215
|
+
playtests read the same values from the `Game` resource with `get:Game`.
|
|
216
|
+
|
|
217
|
+
## Playtests (`og test .`)
|
|
218
|
+
|
|
219
|
+
| File | Proves |
|
|
220
|
+
|---|---|
|
|
221
|
+
| `tests/flow.og.ts` | Dive by tap on a fresh seed; seed 7 walked with the arrows: a step a turn, a bump with none, the lamp lighting new cells, rats struck by walking into them, Q drinking |
|
|
222
|
+
| `tests/foes.og.ts` | a rat that sees the lamp hunts it and strikes beside it; a strike lands, the second fells the rat and it leaves the board |
|
|
223
|
+
| `tests/lose.og.ts` | the lamp out by a rat; the summary after a beat with how and where; Dive again starts from nothing (new seed, the blade gone) |
|
|
224
|
+
| `tests/win.og.ts` | the stairs to floor 2 (the foes left behind take no turn), the guardian fought and felled, the relic, the record merged after a stale write, the summary, Title |
|
|
225
|
+
| `tests/pause.og.ts` | Escape holds the dive (time scale 0, keys take no turn); settings switch to 简体中文 and move the music; Done saves through og.platform; Resume |
|
|
226
|
+
| `tests/pad.og.ts` | a gamepad alone starts, steps, holds a direction, waits, drinks and is refused, pauses and resumes |
|
|
227
|
+
| `tests/phone.og.ts` | 390 × 844 at 3×: the HUD inside the safe area, touch-sized buttons, the d-pad steps and Wait waits |
|
|
228
|
+
| `tests/frames.og.ts` | the title, the lamp in the corridor and the summary match `references/<tier>/` (`OG_FX_CAPTURE=1 og test .` records them) |
|
|
229
|
+
| `tests/replay.og.ts` | a dive on the seed Dive picks, walked and fought, run twice, ends on one hash |
|
|
230
|
+
|
|
231
|
+
Each one fails when the behaviour it names is broken (one was broken on
|
|
232
|
+
purpose and restored: `tests/evidence/P2/archetypes/break-and-restore.md`
|
|
233
|
+
in the engine repository).
|
|
234
|
+
|
|
235
|
+
## Assets
|
|
236
|
+
|
|
237
|
+
`tools/make-assets.py` regenerates every asset byte for byte (two runs
|
|
238
|
+
give the same bytes): the tileset, the map, the sprite sheet and the glow,
|
|
239
|
+
the sounds and the music, the `og sfx` preset files of the UI's sounds and
|
|
240
|
+
the footstep, and the font subset. `LICENSES.md` lists them; the skin's
|
|
241
|
+
are in `assets/skins/lampdive/LICENSES.md`.
|
|
242
|
+
|
|
243
|
+
## Known limits (engine gaps, not design)
|
|
244
|
+
|
|
245
|
+
- og.ui's `settingsScreen` and `resultsScreen` carried English labels of
|
|
246
|
+
their own when this game was written, so it builds its settings dialog and
|
|
247
|
+
its summary from widgets to keep every string in its tables (both now take
|
|
248
|
+
a field for each of their words: og-i18n §2).
|
|
249
|
+
- A handle column (`og.AiAgent.behaviour`, `og.Flipbook.sheet`, …) is two
|
|
250
|
+
`u32` per row (the handle's low and high halves), so a system writing one
|
|
251
|
+
through its column view writes `[i * 2]` and `[i * 2 + 1]`
|
|
252
|
+
(`Foes` in `src/systems.ts`); writing `column[i] = handle` lands in
|
|
253
|
+
another row's halves.
|
|
254
|
+
- The fog is a tilemap layer the Fog system rewrites cell by cell through
|
|
255
|
+
`og.tilemap.getTile`/`setTile` (one call each), since a system has no
|
|
256
|
+
bulk read or write of a layer.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
type behaviour
|
|
2
|
+
version 1
|
|
3
|
+
---
|
|
4
|
+
# A foe's mind (og.ai), shared by the rat and the skeleton: nothing happens
|
|
5
|
+
# until it is the foes' turn (Game.foesTurn, set when the lamp-bearer acts);
|
|
6
|
+
# then, first branch first: next to the lamp-bearer it strikes; having seen
|
|
7
|
+
# it within the last six seconds it hunts it (to where it is, or where it was
|
|
8
|
+
# last seen); otherwise it roams. Each branch is one of the game's commands
|
|
9
|
+
# (src/foes.ts), run with the foe's handle before the next tick, so each foe
|
|
10
|
+
# takes exactly one action a turn.
|
|
11
|
+
name "foe"
|
|
12
|
+
tree {
|
|
13
|
+
sequence turn {
|
|
14
|
+
check Game.foesTurn
|
|
15
|
+
selector act {
|
|
16
|
+
sequence strike {
|
|
17
|
+
check sees
|
|
18
|
+
check targetDistance atMost 1.05
|
|
19
|
+
command strike
|
|
20
|
+
}
|
|
21
|
+
sequence hunt {
|
|
22
|
+
check sinceSeen below 6
|
|
23
|
+
command hunt
|
|
24
|
+
}
|
|
25
|
+
command roam
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
type behaviour
|
|
2
|
+
version 1
|
|
3
|
+
---
|
|
4
|
+
# The moss-faced guardian (og.ai): it never leaves the relic's room. On the
|
|
5
|
+
# foes' turn, next to the lamp-bearer it strikes (a charged strike every
|
|
6
|
+
# third turn, telegraphed the turn before: src/foes.ts); seeing it, it
|
|
7
|
+
# steps toward it; otherwise it holds its ground.
|
|
8
|
+
name "guardian"
|
|
9
|
+
tree {
|
|
10
|
+
sequence turn {
|
|
11
|
+
check Game.foesTurn
|
|
12
|
+
selector act {
|
|
13
|
+
sequence strike {
|
|
14
|
+
check sees
|
|
15
|
+
check targetDistance atMost 1.05
|
|
16
|
+
command strike
|
|
17
|
+
}
|
|
18
|
+
sequence close {
|
|
19
|
+
check sees
|
|
20
|
+
check targetDistance atMost 4
|
|
21
|
+
command hunt
|
|
22
|
+
}
|
|
23
|
+
command brace
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type import
|
|
2
|
+
version 1
|
|
3
|
+
---
|
|
4
|
+
# Latin-1, CJK punctuation and every character of assets/strings/zh-CN.ogt (tools/make-assets.py).
|
|
5
|
+
font {
|
|
6
|
+
charset latin cjk-punct
|
|
7
|
+
chars "。一下与两个中串乐了二人件会伤体倒停光再减击刀利到动卫即合向品喝回在墓墙字守完对少层已币应弃待得态总愈成或手找护提攻放效敌文方无暂更最有机果标次每没油深潜灭灯照熄物瓶甲疗痊的盏石移穴符第等简继续置老苔药言设语走这远遗都量金铜锋键青面音题骷髅鼠!(),:;"
|
|
8
|
+
em_px 32
|
|
9
|
+
px_range 4
|
|
10
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'
|
|
2
|
+
|
|
3
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
4
|
+
This license is copied below, and is also available with a FAQ at:
|
|
5
|
+
https://scripts.sil.org/OFL
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
-----------------------------------------------------------
|
|
9
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
10
|
+
-----------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
PREAMBLE
|
|
13
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
14
|
+
development of collaborative font projects, to support the font creation
|
|
15
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
16
|
+
open framework in which fonts may be shared and improved in partnership
|
|
17
|
+
with others.
|
|
18
|
+
|
|
19
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
20
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
21
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
22
|
+
redistributed and/or sold with any software provided that any reserved
|
|
23
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
24
|
+
however, cannot be released under any other type of license. The
|
|
25
|
+
requirement for fonts to remain under this license does not apply
|
|
26
|
+
to any document created using the fonts or their derivatives.
|
|
27
|
+
|
|
28
|
+
DEFINITIONS
|
|
29
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
30
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
31
|
+
include source files, build scripts and documentation.
|
|
32
|
+
|
|
33
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
34
|
+
copyright statement(s).
|
|
35
|
+
|
|
36
|
+
"Original Version" refers to the collection of Font Software components as
|
|
37
|
+
distributed by the Copyright Holder(s).
|
|
38
|
+
|
|
39
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
40
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
41
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
42
|
+
new environment.
|
|
43
|
+
|
|
44
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
45
|
+
writer or other person who contributed to the Font Software.
|
|
46
|
+
|
|
47
|
+
PERMISSION & CONDITIONS
|
|
48
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
49
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
50
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
51
|
+
Software, subject to the following conditions:
|
|
52
|
+
|
|
53
|
+
1) Neither the Font Software nor any of its individual components,
|
|
54
|
+
in Original or Modified Versions, may be sold by itself.
|
|
55
|
+
|
|
56
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
57
|
+
redistributed and/or sold with any software, provided that each copy
|
|
58
|
+
contains the above copyright notice and this license. These can be
|
|
59
|
+
included either as stand-alone text files, human-readable headers or
|
|
60
|
+
in the appropriate machine-readable metadata fields within text or
|
|
61
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
62
|
+
|
|
63
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
64
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
65
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
66
|
+
presented to the users.
|
|
67
|
+
|
|
68
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
69
|
+
Software shall not be used to promote, endorse or advertise any
|
|
70
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
71
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
72
|
+
permission.
|
|
73
|
+
|
|
74
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
75
|
+
must be distributed entirely under this license, and must not be
|
|
76
|
+
distributed under any other license. The requirement for fonts to
|
|
77
|
+
remain under this license does not apply to any document created
|
|
78
|
+
using the Font Software.
|
|
79
|
+
|
|
80
|
+
TERMINATION
|
|
81
|
+
This license becomes null and void if any of the above conditions are
|
|
82
|
+
not met.
|
|
83
|
+
|
|
84
|
+
DISCLAIMER
|
|
85
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
86
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
87
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
88
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
89
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
90
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
91
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
92
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
93
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
type tilemap
|
|
2
|
+
version 1
|
|
3
|
+
---
|
|
4
|
+
# The floor every dive carves at run time (tools/make-assets.py): 28 x 20
|
|
5
|
+
# cells of 16 px, one world unit each, all wall until og.tilemap.setTile
|
|
6
|
+
# opens the rooms and corridors; the fog layer starts dark.
|
|
7
|
+
size 28 20
|
|
8
|
+
tile 16 16
|
|
9
|
+
unit 1
|
|
10
|
+
tileset "tiles/tomb.ogt"
|
|
11
|
+
layer ground {
|
|
12
|
+
z -12
|
|
13
|
+
row "............................"
|
|
14
|
+
row "............................"
|
|
15
|
+
row "............................"
|
|
16
|
+
row "............................"
|
|
17
|
+
row "............................"
|
|
18
|
+
row "............................"
|
|
19
|
+
row "............................"
|
|
20
|
+
row "............................"
|
|
21
|
+
row "............................"
|
|
22
|
+
row "............................"
|
|
23
|
+
row "............................"
|
|
24
|
+
row "............................"
|
|
25
|
+
row "............................"
|
|
26
|
+
row "............................"
|
|
27
|
+
row "............................"
|
|
28
|
+
row "............................"
|
|
29
|
+
row "............................"
|
|
30
|
+
row "............................"
|
|
31
|
+
row "............................"
|
|
32
|
+
row "............................"
|
|
33
|
+
}
|
|
34
|
+
layer walls {
|
|
35
|
+
z -11
|
|
36
|
+
terrain wall
|
|
37
|
+
collision true
|
|
38
|
+
legend "#" 1
|
|
39
|
+
row "############################"
|
|
40
|
+
row "############################"
|
|
41
|
+
row "############################"
|
|
42
|
+
row "############################"
|
|
43
|
+
row "############################"
|
|
44
|
+
row "############################"
|
|
45
|
+
row "############################"
|
|
46
|
+
row "############################"
|
|
47
|
+
row "############################"
|
|
48
|
+
row "############################"
|
|
49
|
+
row "############################"
|
|
50
|
+
row "############################"
|
|
51
|
+
row "############################"
|
|
52
|
+
row "############################"
|
|
53
|
+
row "############################"
|
|
54
|
+
row "############################"
|
|
55
|
+
row "############################"
|
|
56
|
+
row "############################"
|
|
57
|
+
row "############################"
|
|
58
|
+
row "############################"
|
|
59
|
+
}
|
|
60
|
+
layer decor {
|
|
61
|
+
z -10
|
|
62
|
+
row "............................"
|
|
63
|
+
row "............................"
|
|
64
|
+
row "............................"
|
|
65
|
+
row "............................"
|
|
66
|
+
row "............................"
|
|
67
|
+
row "............................"
|
|
68
|
+
row "............................"
|
|
69
|
+
row "............................"
|
|
70
|
+
row "............................"
|
|
71
|
+
row "............................"
|
|
72
|
+
row "............................"
|
|
73
|
+
row "............................"
|
|
74
|
+
row "............................"
|
|
75
|
+
row "............................"
|
|
76
|
+
row "............................"
|
|
77
|
+
row "............................"
|
|
78
|
+
row "............................"
|
|
79
|
+
row "............................"
|
|
80
|
+
row "............................"
|
|
81
|
+
row "............................"
|
|
82
|
+
}
|
|
83
|
+
layer fog {
|
|
84
|
+
z 30
|
|
85
|
+
legend "#" 21
|
|
86
|
+
row "############################"
|
|
87
|
+
row "############################"
|
|
88
|
+
row "############################"
|
|
89
|
+
row "############################"
|
|
90
|
+
row "############################"
|
|
91
|
+
row "############################"
|
|
92
|
+
row "############################"
|
|
93
|
+
row "############################"
|
|
94
|
+
row "############################"
|
|
95
|
+
row "############################"
|
|
96
|
+
row "############################"
|
|
97
|
+
row "############################"
|
|
98
|
+
row "############################"
|
|
99
|
+
row "############################"
|
|
100
|
+
row "############################"
|
|
101
|
+
row "############################"
|
|
102
|
+
row "############################"
|
|
103
|
+
row "############################"
|
|
104
|
+
row "############################"
|
|
105
|
+
row "############################"
|
|
106
|
+
}
|