@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,58 @@
|
|
|
1
|
+
type flipbook
|
|
2
|
+
version 1
|
|
3
|
+
---
|
|
4
|
+
# Written by tools/make-assets.py. Rows: down, up, side (facing right; flipX
|
|
5
|
+
# faces left); columns: four walk frames, then the attack's wind-up and
|
|
6
|
+
# strike. The clip order is the code's (src/art.ts): idle, walk, attack,
|
|
7
|
+
# each down, up, side.
|
|
8
|
+
texture "hero.png"
|
|
9
|
+
pivot 0.5 0
|
|
10
|
+
grid 16 16 6 3
|
|
11
|
+
clip idle_down {
|
|
12
|
+
frames 0
|
|
13
|
+
fps 1
|
|
14
|
+
}
|
|
15
|
+
clip idle_up {
|
|
16
|
+
frames 6
|
|
17
|
+
fps 1
|
|
18
|
+
}
|
|
19
|
+
clip idle_side {
|
|
20
|
+
frames 12
|
|
21
|
+
fps 1
|
|
22
|
+
}
|
|
23
|
+
clip walk_down {
|
|
24
|
+
frames 0 1 2 3
|
|
25
|
+
fps 8
|
|
26
|
+
event 0 "step"
|
|
27
|
+
event 2 "step"
|
|
28
|
+
}
|
|
29
|
+
clip walk_up {
|
|
30
|
+
frames 6 7 8 9
|
|
31
|
+
fps 8
|
|
32
|
+
event 0 "step"
|
|
33
|
+
event 2 "step"
|
|
34
|
+
}
|
|
35
|
+
clip walk_side {
|
|
36
|
+
frames 12 13 14 15
|
|
37
|
+
fps 8
|
|
38
|
+
event 0 "step"
|
|
39
|
+
event 2 "step"
|
|
40
|
+
}
|
|
41
|
+
clip attack_down {
|
|
42
|
+
frames 4 5
|
|
43
|
+
durations 0.07 0.18
|
|
44
|
+
mode once
|
|
45
|
+
event 1 "hit"
|
|
46
|
+
}
|
|
47
|
+
clip attack_up {
|
|
48
|
+
frames 10 11
|
|
49
|
+
durations 0.07 0.18
|
|
50
|
+
mode once
|
|
51
|
+
event 1 "hit"
|
|
52
|
+
}
|
|
53
|
+
clip attack_side {
|
|
54
|
+
frames 16 17
|
|
55
|
+
durations 0.07 0.18
|
|
56
|
+
mode once
|
|
57
|
+
event 1 "hit"
|
|
58
|
+
}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type flipbook
|
|
2
|
+
version 1
|
|
3
|
+
---
|
|
4
|
+
# Written by tools/make-assets.py: a four-frame bob and a hurt frame.
|
|
5
|
+
texture "slime.png"
|
|
6
|
+
pivot 0.5 0
|
|
7
|
+
grid 16 16 5 1
|
|
8
|
+
clip bob {
|
|
9
|
+
frames 0 1 2 3
|
|
10
|
+
fps 6
|
|
11
|
+
mode pingPong
|
|
12
|
+
}
|
|
13
|
+
clip hurt {
|
|
14
|
+
frames 4
|
|
15
|
+
durations 0.25
|
|
16
|
+
mode once
|
|
17
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
type tileset
|
|
2
|
+
version 1
|
|
3
|
+
---
|
|
4
|
+
# Written by tools/make-assets.py: tiles 0-46 are the wall terrain's 47 blob
|
|
5
|
+
# shapes, 47-49 floor, 50 moss, 51-53 the torch, 54-55 the door.
|
|
6
|
+
texture "tiles/dungeon.png"
|
|
7
|
+
grid 16 16 8 8
|
|
8
|
+
filter nearest
|
|
9
|
+
solid 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
|
10
|
+
tile 51 {
|
|
11
|
+
frames 51 52 53 52
|
|
12
|
+
fps 7
|
|
13
|
+
}
|
|
14
|
+
terrain wall {
|
|
15
|
+
mode blob47
|
|
16
|
+
rule 0 0
|
|
17
|
+
rule 1 1
|
|
18
|
+
rule 4 2
|
|
19
|
+
rule 5 3
|
|
20
|
+
rule 7 4
|
|
21
|
+
rule 16 5
|
|
22
|
+
rule 17 6
|
|
23
|
+
rule 20 7
|
|
24
|
+
rule 21 8
|
|
25
|
+
rule 23 9
|
|
26
|
+
rule 28 10
|
|
27
|
+
rule 29 11
|
|
28
|
+
rule 31 12
|
|
29
|
+
rule 64 13
|
|
30
|
+
rule 65 14
|
|
31
|
+
rule 68 15
|
|
32
|
+
rule 69 16
|
|
33
|
+
rule 71 17
|
|
34
|
+
rule 80 18
|
|
35
|
+
rule 81 19
|
|
36
|
+
rule 84 20
|
|
37
|
+
rule 85 21
|
|
38
|
+
rule 87 22
|
|
39
|
+
rule 92 23
|
|
40
|
+
rule 93 24
|
|
41
|
+
rule 95 25
|
|
42
|
+
rule 112 26
|
|
43
|
+
rule 113 27
|
|
44
|
+
rule 116 28
|
|
45
|
+
rule 117 29
|
|
46
|
+
rule 119 30
|
|
47
|
+
rule 124 31
|
|
48
|
+
rule 125 32
|
|
49
|
+
rule 127 33
|
|
50
|
+
rule 193 34
|
|
51
|
+
rule 197 35
|
|
52
|
+
rule 199 36
|
|
53
|
+
rule 209 37
|
|
54
|
+
rule 213 38
|
|
55
|
+
rule 215 39
|
|
56
|
+
rule 221 40
|
|
57
|
+
rule 223 41
|
|
58
|
+
rule 241 42
|
|
59
|
+
rule 245 43
|
|
60
|
+
rule 247 44
|
|
61
|
+
rule 253 45
|
|
62
|
+
rule 255 46
|
|
63
|
+
default 46
|
|
64
|
+
edge filled
|
|
65
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Media to Git LFS, as the platform's other scaffolds route them; text stays
|
|
2
|
+
# diffable (.ogt scenes and settings are line-based text by design).
|
|
3
|
+
*.glb filter=lfs diff=lfs merge=lfs -text
|
|
4
|
+
*.gltf filter=lfs diff=lfs merge=lfs -text
|
|
5
|
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
|
6
|
+
*.png filter=lfs diff=lfs merge=lfs -text
|
|
7
|
+
*.jpg filter=lfs diff=lfs merge=lfs -text
|
|
8
|
+
*.jpeg filter=lfs diff=lfs merge=lfs -text
|
|
9
|
+
*.webp filter=lfs diff=lfs merge=lfs -text
|
|
10
|
+
*.ktx2 filter=lfs diff=lfs merge=lfs -text
|
|
11
|
+
*.hdr filter=lfs diff=lfs merge=lfs -text
|
|
12
|
+
*.exr filter=lfs diff=lfs merge=lfs -text
|
|
13
|
+
*.wav filter=lfs diff=lfs merge=lfs -text
|
|
14
|
+
*.mp3 filter=lfs diff=lfs merge=lfs -text
|
|
15
|
+
*.ogg filter=lfs diff=lfs merge=lfs -text
|
|
16
|
+
*.flac filter=lfs diff=lfs merge=lfs -text
|
|
17
|
+
*.mp4 filter=lfs diff=lfs merge=lfs -text
|
|
18
|
+
*.ttf filter=lfs diff=lfs merge=lfs -text
|
|
19
|
+
*.otf filter=lfs diff=lfs merge=lfs -text
|
|
20
|
+
*.woff2 filter=lfs diff=lfs merge=lfs -text
|
|
21
|
+
*.ogt text eol=lf
|
|
22
|
+
*.ts text eol=lf
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// The host this project's playtest helpers (tests/*.ts) touch under bun:
|
|
2
|
+
// `node:` modules, `process`, `Buffer`, `TextEncoder`, `import.meta.url`.
|
|
3
|
+
// Declared here because the project type-checks with `types: []` (no
|
|
4
|
+
// @types/node, no bun-types): `og check` reads them through tsconfig.json's
|
|
5
|
+
// include. Game code (src/) uses none of them.
|
|
6
|
+
|
|
7
|
+
declare module "node:fs" {
|
|
8
|
+
export function existsSync(path: string): boolean;
|
|
9
|
+
export function readFileSync(path: string): Uint8Array;
|
|
10
|
+
export function readFileSync(path: string, encoding: string): string;
|
|
11
|
+
export function writeFileSync(path: string, data: string | Uint8Array): void;
|
|
12
|
+
export function mkdirSync(path: string, options?: { recursive?: boolean }): void;
|
|
13
|
+
export function copyFileSync(from: string, to: string): void;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
declare module "node:path" {
|
|
17
|
+
export function dirname(path: string): string;
|
|
18
|
+
export function join(...parts: string[]): string;
|
|
19
|
+
export function resolve(...parts: string[]): string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
declare module "node:url" {
|
|
23
|
+
export function fileURLToPath(url: string | URL): string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
declare module "node:zlib" {
|
|
27
|
+
export function inflateSync(data: Uint8Array): Uint8Array;
|
|
28
|
+
export function deflateSync(data: Uint8Array, options?: { level?: number }): Uint8Array;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
declare const process: {
|
|
32
|
+
readonly env: Record<string, string | undefined>;
|
|
33
|
+
cwd(): string;
|
|
34
|
+
readonly stdout: { write(text: string): boolean };
|
|
35
|
+
};
|
|
36
|
+
declare const Buffer: { concat(chunks: readonly Uint8Array[]): Uint8Array };
|
|
37
|
+
declare class TextEncoder {
|
|
38
|
+
encode(text: string): Uint8Array;
|
|
39
|
+
}
|
|
40
|
+
declare class URL {
|
|
41
|
+
constructor(url: string, base?: string | URL);
|
|
42
|
+
readonly href: string;
|
|
43
|
+
}
|
|
44
|
+
interface ImportMeta {
|
|
45
|
+
readonly url: string;
|
|
46
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "origin-topdown",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"dev": "og dev .",
|
|
8
|
+
"start": "og run .",
|
|
9
|
+
"build": "og build .",
|
|
10
|
+
"publish-build": "og build . --publish",
|
|
11
|
+
"cook": "og cook .",
|
|
12
|
+
"check": "og check .",
|
|
13
|
+
"test": "og test ."
|
|
14
|
+
},
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"@origingame/engine": "0.1.0"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// The flipbook sheets (assets/sprites/*.ogt, written by tools/make-assets.py)
|
|
2
|
+
// and their clips, looked up by name once in `start`.
|
|
3
|
+
|
|
4
|
+
import { og } from "@origingame/engine";
|
|
5
|
+
import type { FlipbookInfo, World } from "@origingame/engine";
|
|
6
|
+
import { Facing } from "./components.ts";
|
|
7
|
+
|
|
8
|
+
export interface Sheets {
|
|
9
|
+
readonly hero: FlipbookInfo;
|
|
10
|
+
readonly slime: FlipbookInfo;
|
|
11
|
+
readonly items: FlipbookInfo;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function loadSheets(world: World): Sheets {
|
|
15
|
+
const load = (path: string): FlipbookInfo => {
|
|
16
|
+
const r = og.load.flipbook(world, path);
|
|
17
|
+
if (!r.ok) throw new Error(`${path}: ${r.reason}`);
|
|
18
|
+
return r.value;
|
|
19
|
+
};
|
|
20
|
+
return { hero: load("sprites/hero.ogt"), slime: load("sprites/slime.ogt"), items: load("sprites/items.ogt") };
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** A clip's index by name; a missing clip is an authoring error. */
|
|
24
|
+
export function clip(info: FlipbookInfo, name: string): number {
|
|
25
|
+
const i = og.anim.clip(info, name);
|
|
26
|
+
if (i < 0) throw new Error(`the sheet has no clip '${name}' (its clips: ${info.clips.map((c) => c.name).join(", ")})`);
|
|
27
|
+
return i;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* The hero's clips are authored in this order (assets/sprites/hero.ogt):
|
|
32
|
+
* idle, walk and attack, each down, up, side. So a clip is its action's
|
|
33
|
+
* base plus the facing's row; left is the side row drawn with flipX.
|
|
34
|
+
*/
|
|
35
|
+
export const HeroClip = { Idle: 0, Walk: 3, Attack: 6 } as const;
|
|
36
|
+
|
|
37
|
+
export function heroClip(action: number, facing: number): number {
|
|
38
|
+
const row = facing === Facing.Down ? 0 : facing === Facing.Up ? 1 : 2;
|
|
39
|
+
return action + row;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** Checks the hero sheet's order against HeroClip once, in `start`. */
|
|
43
|
+
export function checkHeroClips(info: FlipbookInfo): void {
|
|
44
|
+
const names = ["idle_down", "idle_up", "idle_side", "walk_down", "walk_up", "walk_side", "attack_down", "attack_up", "attack_side"];
|
|
45
|
+
names.forEach((n, i) => {
|
|
46
|
+
if (clip(info, n) !== i) throw new Error(`assets/sprites/hero.ogt: clip '${n}' must be clip ${i} (src/art.ts reads clips by position)`);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// Every piece of Tomb Room's state lives in these reflected types: dumps,
|
|
2
|
+
// the probe, Tune and the command channel's `set` read and write them by
|
|
3
|
+
// name.
|
|
4
|
+
//
|
|
5
|
+
// The run's state (Game) and the knobs (Tuning) are resources, so every
|
|
6
|
+
// system reads them without carrying them on its rows. The actors are
|
|
7
|
+
// components: one Hero, one Slime, the Pickups and the Sfx voices.
|
|
8
|
+
|
|
9
|
+
import { bool, defineComponent, defineResource, f32, f64, i32, u32 } from "@origingame/engine";
|
|
10
|
+
|
|
11
|
+
/** Which way the hero faces: the clip row of src/art.ts and the attack's direction. */
|
|
12
|
+
export const Facing = { Down: 0, Up: 1, Left: 2, Right: 3 } as const;
|
|
13
|
+
|
|
14
|
+
/** What a pickup is. */
|
|
15
|
+
export const PickupKind = { Coin: 1, Key: 2 } as const;
|
|
16
|
+
|
|
17
|
+
/** Sound requests: bits of Game.sfx that the Sfx system plays once each. */
|
|
18
|
+
export const Sound = { Hit: 1, Hurt: 2, Coin: 4, Key: 8, Door: 16, Step: 32 } as const;
|
|
19
|
+
|
|
20
|
+
/** The run: the hero's health and purse, the door, the room and the effects' bookkeeping. */
|
|
21
|
+
export const Game = defineResource("Game", {
|
|
22
|
+
hp: u32(3, { doc: "The hero's hearts left." }),
|
|
23
|
+
hpMax: u32(3, { doc: "Hearts at the start." }),
|
|
24
|
+
coins: u32(0, { doc: "Coins picked up." }),
|
|
25
|
+
coinsTotal: u32(0, { doc: "Coins the map placed (worked out in start)." }),
|
|
26
|
+
hasKey: bool(false, { doc: "The key is picked up." }),
|
|
27
|
+
doorOpen: bool(false, { doc: "The doorway between the rooms is open." }),
|
|
28
|
+
room: u32(1, { doc: "The room the hero stands in: 1 west, 2 east." }),
|
|
29
|
+
enemyHp: u32(0, { doc: "The slime's health (0 once it is dead)." }),
|
|
30
|
+
enemyHits: u32(0, { doc: "Hits the slime has taken; the third is a crit." }),
|
|
31
|
+
heroX: f32(0, { unit: "m", doc: "The hero's feet, written by Control for the other systems." }),
|
|
32
|
+
heroY: f32(0, { unit: "m" }),
|
|
33
|
+
facing: u32(Facing.Down, { doc: "Facing.* of src/components.ts." }),
|
|
34
|
+
swing: bool(false, { doc: "The sword's strike frame fired this tick (the hero's 'hit' flipbook event)." }),
|
|
35
|
+
swingX: f32(0, { unit: "m", doc: "The strike's centre." }),
|
|
36
|
+
swingY: f32(0, { unit: "m" }),
|
|
37
|
+
swings: u32(0, { doc: "Strikes so far." }),
|
|
38
|
+
steps: u32(0, { doc: "Footsteps (the walk clips' 'step' events)." }),
|
|
39
|
+
iframes: u32(0, { unit: "ticks", doc: "Ticks the hero is invulnerable for after a hurt." }),
|
|
40
|
+
hurts: u32(0, { doc: "Times the hero was hurt." }),
|
|
41
|
+
downTicks: u32(0, { unit: "ticks", doc: "Ticks since hp reached 0; the hero stands up at the spawn after a while." }),
|
|
42
|
+
spawnX: f32(0, { unit: "m", doc: "The map's spawn point." }),
|
|
43
|
+
spawnY: f32(0, { unit: "m" }),
|
|
44
|
+
knockX: f32(0, { unit: "m/s", doc: "The hero's knockback velocity; it decays every tick." }),
|
|
45
|
+
knockY: f32(0, { unit: "m/s" }),
|
|
46
|
+
doorX: f32(0, { unit: "m", doc: "The doorway's centre (from the map's door object)." }),
|
|
47
|
+
doorY: f32(0, { unit: "m" }),
|
|
48
|
+
doorCellX: u32(0, { doc: "The doorway's first cell (map columns and rows)." }),
|
|
49
|
+
doorCellY: u32(0),
|
|
50
|
+
doorCellsW: u32(0),
|
|
51
|
+
doorCellsH: u32(0),
|
|
52
|
+
roomSplit: f32(20, { unit: "m", doc: "The x where the east room starts (from the room objects)." }),
|
|
53
|
+
lockedFor: u32(0, { unit: "ticks", doc: "Ticks before the locked door speaks again." }),
|
|
54
|
+
sfx: u32(0, { doc: "Sound.* bits waiting to play." }),
|
|
55
|
+
font: f64(0, { doc: "The UI Font handle." }),
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
/** The knobs. Tune reads the tunable fields; `set:Tuning.<field>=<value>` writes them. */
|
|
59
|
+
export const Tuning = defineResource("Tuning", {
|
|
60
|
+
speed: f32(4.5, { min: 1, max: 10, step: 0.25, unit: "m/s", tunable: true, label: "Walk speed" }),
|
|
61
|
+
dashSpeed: f32(13, { min: 4, max: 24, step: 0.5, unit: "m/s", tunable: true, label: "Dash speed" }),
|
|
62
|
+
dashTicks: u32(9, { min: 2, max: 30, step: 1, unit: "ticks", tunable: true, label: "Dash length" }),
|
|
63
|
+
dashCooldown: u32(36, { min: 0, max: 120, step: 1, unit: "ticks", tunable: true, label: "Dash cooldown" }),
|
|
64
|
+
reach: f32(0.75, { min: 0.2, max: 2, step: 0.05, unit: "m", tunable: true, label: "Sword reach", doc: "The strike's radius around a point one reach ahead of the hero's chest." }),
|
|
65
|
+
hitStop: u32(4, { min: 0, max: 12, step: 1, unit: "ticks", tunable: true, label: "Hit stop" }),
|
|
66
|
+
shake: f32(0.25, { min: 0, max: 1, step: 0.05, tunable: true, label: "Hit shake", doc: "Camera trauma per hit." }),
|
|
67
|
+
slimeSpeed: f32(1.6, { min: 0, max: 6, step: 0.1, unit: "m/s", tunable: true, label: "Slime speed", doc: "The chase (assets/ai/slime.ogt reads it as `speed Tuning.slimeSpeed`)." }),
|
|
68
|
+
slimeSight: f32(5, { min: 0, max: 12, step: 0.5, unit: "m", tunable: true, label: "Slime sight", doc: "How far the slime sees (its og.Perception.sight); walls hide the hero." }),
|
|
69
|
+
knockback: f32(9, { min: 0, max: 20, step: 0.5, unit: "m/s", tunable: true, label: "Knockback" }),
|
|
70
|
+
iframes: u32(50, { min: 0, max: 180, step: 5, unit: "ticks", tunable: true, label: "Invulnerable ticks" }),
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
/** The hero: the attack and dash timers and the clip on show. */
|
|
74
|
+
export const Hero = defineComponent("Hero", {
|
|
75
|
+
attack: u32(0, { unit: "ticks", doc: "Ticks left in the current swing; input waits until 0." }),
|
|
76
|
+
dash: u32(0, { unit: "ticks", doc: "Ticks left in the current dash." }),
|
|
77
|
+
dashCooldown: u32(0, { unit: "ticks" }),
|
|
78
|
+
dashX: f32(0, { doc: "The dash's direction." }),
|
|
79
|
+
dashY: f32(0),
|
|
80
|
+
dashes: u32(0, { doc: "Dashes so far." }),
|
|
81
|
+
moving: bool(false, { doc: "Walk input was held this tick." }),
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
/** A slime: health, its own knockback and the death. What it does is assets/ai/slime.ogt (og.ai) moving it on the map's grid (og.nav). */
|
|
85
|
+
export const Slime = defineComponent("Slime", {
|
|
86
|
+
hp: u32(50, { doc: "Health; the sword deals 12, 12, then a 26 crit. Below 30 the behaviour flees." }),
|
|
87
|
+
knockX: f32(0, { unit: "m/s" }),
|
|
88
|
+
knockY: f32(0, { unit: "m/s" }),
|
|
89
|
+
stun: u32(0, { unit: "ticks", doc: "Ticks it neither moves nor bites after a hit or a bite." }),
|
|
90
|
+
bites: u32(0, { doc: "Bites that hurt the hero." }),
|
|
91
|
+
dead: bool(false),
|
|
92
|
+
deadTicks: u32(0, { unit: "ticks", doc: "Ticks since it died; it hides once the death tween is over." }),
|
|
93
|
+
bob: i32(0, { doc: "The bob clip's index (src/art.ts)." }),
|
|
94
|
+
hurt: i32(0, { doc: "The hurt clip's index." }),
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
/** A coin or the key, taken by overlap. */
|
|
98
|
+
export const Pickup = defineComponent("Pickup", {
|
|
99
|
+
kind: u32(PickupKind.Coin, { doc: "PickupKind.* of src/components.ts." }),
|
|
100
|
+
taken: bool(false),
|
|
101
|
+
takenTicks: u32(0, { unit: "ticks" }),
|
|
102
|
+
baseY: f32(0, { unit: "m", doc: "Where it rests; it hovers around this." }),
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* The run's facts, copied from Game onto the hero every tick by the Hud
|
|
107
|
+
* system: `dump_entity:hero` shows them, which is how the playtests read the
|
|
108
|
+
* run (the command channel dumps entities, not resources).
|
|
109
|
+
*/
|
|
110
|
+
export const Report = defineComponent("Report", {
|
|
111
|
+
room: u32(1),
|
|
112
|
+
hp: u32(0),
|
|
113
|
+
coins: u32(0),
|
|
114
|
+
hasKey: bool(false),
|
|
115
|
+
doorOpen: bool(false),
|
|
116
|
+
enemyHp: u32(0),
|
|
117
|
+
hits: u32(0, { doc: "Hits the slime took." }),
|
|
118
|
+
swings: u32(0),
|
|
119
|
+
steps: u32(0),
|
|
120
|
+
hurts: u32(0),
|
|
121
|
+
facing: u32(0),
|
|
122
|
+
doorWall: i32(0, { doc: "og.tilemap.getTile of the walls terrain at the doorway's first cell: the auto-tiled wall tile while closed, -1 once open." }),
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
/** One voice: plays its sound once when Game.sfx asks for its bit. */
|
|
126
|
+
export const Sfx = defineComponent("Sfx", {
|
|
127
|
+
bit: u32(0, { doc: "Sound.* of src/components.ts." }),
|
|
128
|
+
});
|