@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
|
Binary file
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type import
|
|
2
|
+
version 1
|
|
3
|
+
---
|
|
4
|
+
# Written by tools/make-assets.py: the atlas holds Latin-1 and the HUD's own
|
|
5
|
+
# CJK characters (CHARS there); add a character to CHARS before showing it.
|
|
6
|
+
font {
|
|
7
|
+
charset latin
|
|
8
|
+
chars "屋顶快跑点击或按空格开始小跳住高再来一次"
|
|
9
|
+
em_px 48
|
|
10
|
+
px_range 6
|
|
11
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
type tilemap
|
|
2
|
+
version 1
|
|
3
|
+
---
|
|
4
|
+
# The far skyline, 0.5 units a tile (tools/make-assets.py).
|
|
5
|
+
size 40 9
|
|
6
|
+
tile 16 16
|
|
7
|
+
unit 0.5
|
|
8
|
+
tileset "tiles/city.ogt"
|
|
9
|
+
layer far {
|
|
10
|
+
z 0
|
|
11
|
+
repeat x
|
|
12
|
+
legend "#" 4
|
|
13
|
+
legend "w" 5
|
|
14
|
+
legend "^" 6
|
|
15
|
+
legend "a" 7
|
|
16
|
+
row ".............a.................a........"
|
|
17
|
+
row "....a........^^.......a........^........"
|
|
18
|
+
row "....^^^......##......^^^.......w........"
|
|
19
|
+
row "....#w#..^^..##...^..###..^^...#..^^...."
|
|
20
|
+
row ".^^.w##..w#.^#w^..#..###^.##.^^#..w#..^^"
|
|
21
|
+
row ".##^###.^##.#w##^^w..##w#^##.###^^##..w#"
|
|
22
|
+
row "^#w####^###.w####w#^^#w####w^###w###^.##"
|
|
23
|
+
row "#w####w####^####w####w####w####w####w^##"
|
|
24
|
+
row "w####w####w####w####w####w####w####w####"
|
|
25
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
type tilemap
|
|
2
|
+
version 1
|
|
3
|
+
---
|
|
4
|
+
# The near buildings, 0.65 units a tile (tools/make-assets.py).
|
|
5
|
+
size 24 6
|
|
6
|
+
tile 16 16
|
|
7
|
+
unit 0.65
|
|
8
|
+
tileset "tiles/city.ogt"
|
|
9
|
+
layer near {
|
|
10
|
+
z 0
|
|
11
|
+
repeat x
|
|
12
|
+
legend "n" 8
|
|
13
|
+
legend "L" 9
|
|
14
|
+
legend "l" 14
|
|
15
|
+
legend "d" 10
|
|
16
|
+
legend "c" 11
|
|
17
|
+
legend "t" 12
|
|
18
|
+
legend "s" 13
|
|
19
|
+
row "................ccc....."
|
|
20
|
+
row "....cccc........Lnl....."
|
|
21
|
+
row "....nlnd..ccccc.nln....."
|
|
22
|
+
row "ccc.lndl..lnslL.lnd.cccc"
|
|
23
|
+
row "lLn.ndlL..ndlLn.ndl.nlnd"
|
|
24
|
+
row "Lnl.dlLn.tdlLnl.dlL.lndl"
|
|
25
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
type tilemap
|
|
2
|
+
version 1
|
|
3
|
+
---
|
|
4
|
+
# The roof the courier runs on, 0.65 units a tile (tools/make-assets.py).
|
|
5
|
+
size 16 3
|
|
6
|
+
tile 16 16
|
|
7
|
+
unit 0.65
|
|
8
|
+
tileset "tiles/city.ogt"
|
|
9
|
+
layer roofs {
|
|
10
|
+
z 0
|
|
11
|
+
repeat x
|
|
12
|
+
legend "=" 0
|
|
13
|
+
legend "b" 1
|
|
14
|
+
legend "L" 2
|
|
15
|
+
legend "D" 3
|
|
16
|
+
row "================"
|
|
17
|
+
row "bLbDbbLbDbbLbDbb"
|
|
18
|
+
row "bbbbbbbbbbbbbbbb"
|
|
19
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
type scene
|
|
2
|
+
version 1
|
|
3
|
+
---
|
|
4
|
+
# The runner's scene: the runner with its hit box and tuning. `start` in src/main.ts adds the courier's
|
|
5
|
+
# sprite, the sky, the city's tilemaps and the pools of crates, fences, coins and dust around the runner.
|
|
6
|
+
name "Main"
|
|
7
|
+
entity "runner" {
|
|
8
|
+
Transform {
|
|
9
|
+
position -5 0 0
|
|
10
|
+
# Given whole: a field left out loads as 0, not its default (an engine bug), and a 0 scale hides the sprite.
|
|
11
|
+
quaternion 0 0 0 1
|
|
12
|
+
scale 1 1 1
|
|
13
|
+
}
|
|
14
|
+
# The position is the courier's feet; the hit box is centred 0.8125 m above them, narrower than the
|
|
15
|
+
# sprite (1.3 x 1.625 m) and clear of the shoes.
|
|
16
|
+
Actor {
|
|
17
|
+
kind 6
|
|
18
|
+
w 0.5
|
|
19
|
+
h 1.2
|
|
20
|
+
parallax 0
|
|
21
|
+
}
|
|
22
|
+
# Tune's parameters: edit them here, live with `set:runner.Tuning.<field>=<value>`.
|
|
23
|
+
Tuning {
|
|
24
|
+
speed 6
|
|
25
|
+
speedRamp 0.12
|
|
26
|
+
speedMax 12
|
|
27
|
+
jumpHeight 2
|
|
28
|
+
timeToApex 0.333
|
|
29
|
+
jumpCut 1.8
|
|
30
|
+
apexGravity 0.75
|
|
31
|
+
fallGravity 1.15
|
|
32
|
+
spawnInterval 1.3
|
|
33
|
+
coinValue 10
|
|
34
|
+
}
|
|
35
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
type flipbook
|
|
2
|
+
version 1
|
|
3
|
+
---
|
|
4
|
+
# The courier (tools/make-assets.py): 32 x 40 frames standing on their feet
|
|
5
|
+
# (the pivot: the entity's position is the feet, so a squash keeps them down).
|
|
6
|
+
texture "courier.png"
|
|
7
|
+
pivot 0.5 0
|
|
8
|
+
grid 32 40 8 2
|
|
9
|
+
spacing 2
|
|
10
|
+
clip idle {
|
|
11
|
+
frames 14 15
|
|
12
|
+
fps 2
|
|
13
|
+
}
|
|
14
|
+
clip run {
|
|
15
|
+
frames 0 1 2 3 4 5 6 7
|
|
16
|
+
fps 14
|
|
17
|
+
event 2 "step"
|
|
18
|
+
event 6 "step"
|
|
19
|
+
}
|
|
20
|
+
clip jump {
|
|
21
|
+
frames 8
|
|
22
|
+
fps 1
|
|
23
|
+
}
|
|
24
|
+
clip fall {
|
|
25
|
+
frames 9
|
|
26
|
+
fps 1
|
|
27
|
+
}
|
|
28
|
+
clip crash {
|
|
29
|
+
frames 10 11 12 13
|
|
30
|
+
fps 12
|
|
31
|
+
mode once
|
|
32
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
type flipbook
|
|
2
|
+
version 1
|
|
3
|
+
---
|
|
4
|
+
# Props (tools/make-assets.py): one frame each, 2 texels apart.
|
|
5
|
+
texture "props.png"
|
|
6
|
+
frame crate 0 0 16 16
|
|
7
|
+
frame fence 18 0 16 32
|
|
8
|
+
frame moon 36 0 32 32
|
|
9
|
+
frame cloud 0 36 64 24
|
|
10
|
+
clip crate {
|
|
11
|
+
frames crate
|
|
12
|
+
}
|
|
13
|
+
clip fence {
|
|
14
|
+
frames fence
|
|
15
|
+
}
|
|
16
|
+
clip moon {
|
|
17
|
+
frames moon
|
|
18
|
+
}
|
|
19
|
+
clip cloud {
|
|
20
|
+
frames cloud
|
|
21
|
+
}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
type tileset
|
|
2
|
+
version 1
|
|
3
|
+
---
|
|
4
|
+
# The city (tools/make-assets.py): 0 roof, 1-3 bricks, 4-7 far skyline,
|
|
5
|
+
# 8-14 near buildings, 15 the antenna's light on.
|
|
6
|
+
texture "tiles/city.png"
|
|
7
|
+
grid 16 16 4 4
|
|
8
|
+
spacing 2
|
|
9
|
+
filter nearest
|
|
10
|
+
# A window that goes on and off, and an antenna light that blinks.
|
|
11
|
+
tile 9 {
|
|
12
|
+
frames 9 14 9 10
|
|
13
|
+
durations 2.5 0.4 1.8 0.6
|
|
14
|
+
}
|
|
15
|
+
tile 7 {
|
|
16
|
+
frames 7 15
|
|
17
|
+
durations 0.9 0.5
|
|
18
|
+
}
|
|
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-runner",
|
|
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
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// The art: pixel-art flipbook sheets and the city's tilemaps, all made by
|
|
2
|
+
// tools/make-assets.py and loaded once in `start` from the cooked bundle.
|
|
3
|
+
//
|
|
4
|
+
// - sprites/courier.ogt: the courier's clips (COURIER below, in sheet order),
|
|
5
|
+
// - sprites/props.ogt: crate, fence, moon and cloud, one frame each,
|
|
6
|
+
// - sprites/coin.ogt: the coin's turn,
|
|
7
|
+
// - sprites/sky.png: the sky's colour bands, stretched over the view,
|
|
8
|
+
// - maps/far.ogt, near.ogt, roofs.ogt: the three parallax strips (tilemaps
|
|
9
|
+
// with `repeat x` over tiles/city.ogt).
|
|
10
|
+
|
|
11
|
+
import { og } from "@origingame/engine";
|
|
12
|
+
import type { FlipbookInfo, Texture, TilemapInfo, World } from "@origingame/engine";
|
|
13
|
+
|
|
14
|
+
/** The courier's clips, by index in sprites/courier.ogt (checked against the sheet in `loadArt`). */
|
|
15
|
+
export const COURIER = { idle: 0, run: 1, jump: 2, fall: 3, crash: 4 } as const;
|
|
16
|
+
/** The props' clips, by index in sprites/props.ogt. */
|
|
17
|
+
export const PROPS = { crate: 0, fence: 1, moon: 2, cloud: 3 } as const;
|
|
18
|
+
|
|
19
|
+
export interface Art {
|
|
20
|
+
readonly courier: FlipbookInfo;
|
|
21
|
+
readonly props: FlipbookInfo;
|
|
22
|
+
readonly coin: FlipbookInfo;
|
|
23
|
+
readonly sky: Texture;
|
|
24
|
+
readonly far: TilemapInfo;
|
|
25
|
+
readonly near: TilemapInfo;
|
|
26
|
+
readonly roofs: TilemapInfo;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function ok<T>(r: { ok: true; value: T } | { ok: false; reason: string }, what: string): T {
|
|
30
|
+
if (!r.ok) throw new Error(`${what}: ${r.reason} (run python3 tools/make-assets.py and og cook .)`);
|
|
31
|
+
return r.value;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function expectClips(info: FlipbookInfo, clips: Readonly<Record<string, number>>, path: string): void {
|
|
35
|
+
for (const [name, index] of Object.entries(clips)) {
|
|
36
|
+
const found = og.anim.clip(info, name);
|
|
37
|
+
if (found !== index) throw new Error(`${path}: clip ${name} is ${found}, the code expects ${index}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** Loads every sheet, texture and map; the cooked bundle has them ready at once. */
|
|
42
|
+
export function loadArt(world: World): Art {
|
|
43
|
+
const courier = ok(og.load.flipbook(world, "sprites/courier.ogt"), "sprites/courier.ogt");
|
|
44
|
+
const props = ok(og.load.flipbook(world, "sprites/props.ogt"), "sprites/props.ogt");
|
|
45
|
+
const coin = ok(og.load.flipbook(world, "sprites/coin.ogt"), "sprites/coin.ogt");
|
|
46
|
+
expectClips(courier, COURIER, "sprites/courier.ogt");
|
|
47
|
+
expectClips(props, PROPS, "sprites/props.ogt");
|
|
48
|
+
return {
|
|
49
|
+
courier,
|
|
50
|
+
props,
|
|
51
|
+
coin,
|
|
52
|
+
sky: ok(og.load.texture(world, "sprites/sky.png"), "sprites/sky.png"),
|
|
53
|
+
far: ok(og.load.tilemap(world, "maps/far.ogt"), "maps/far.ogt"),
|
|
54
|
+
near: ok(og.load.tilemap(world, "maps/near.ogt"), "maps/near.ogt"),
|
|
55
|
+
roofs: ok(og.load.tilemap(world, "maps/roofs.ogt"), "maps/roofs.ogt"),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// Every piece of game state lives in these reflected components: dumps, the
|
|
2
|
+
// probe, Tune and the command channel's `set` read and write them by name.
|
|
3
|
+
//
|
|
4
|
+
// Why every actor row carries Run and Tuning: a system sees exactly one
|
|
5
|
+
// query (the AND of the components it declares), and inside a system the
|
|
6
|
+
// engine reaches no other entity (a game resource it declares, yes). So the systems
|
|
7
|
+
// that move obstacles, collect coins and end the run must see the run's
|
|
8
|
+
// state on the same rows as the actors. Every actor is spawned with
|
|
9
|
+
// og.Transform, Actor, Run and Tuning (plus og.Sprite, og.Flipbook or
|
|
10
|
+
// og.Tilemap for what it draws), and the row whose Actor.kind is
|
|
11
|
+
// Kind.Runner, the entity named "runner", is the authority: the other rows'
|
|
12
|
+
// Run and Tuning keep their defaults and nothing reads them. Tune and
|
|
13
|
+
// `set:runner.Tuning.<field>=<value>` write that row.
|
|
14
|
+
|
|
15
|
+
import { bool, defineComponent, defineResource, f32, f64, u32 } from "@origingame/engine";
|
|
16
|
+
|
|
17
|
+
/** What an actor row is. */
|
|
18
|
+
export const Kind = {
|
|
19
|
+
Sky: 1,
|
|
20
|
+
Moon: 2,
|
|
21
|
+
Cloud: 3,
|
|
22
|
+
City: 4,
|
|
23
|
+
Dust: 5,
|
|
24
|
+
Runner: 6,
|
|
25
|
+
Crate: 7,
|
|
26
|
+
Fence: 8,
|
|
27
|
+
Coin: 9,
|
|
28
|
+
} as const;
|
|
29
|
+
|
|
30
|
+
/** Run phases. */
|
|
31
|
+
export const Phase = { Title: 0, Running: 1, Over: 2 } as const;
|
|
32
|
+
|
|
33
|
+
/** One thing in the world: its kind, hit box and scroll behaviour. */
|
|
34
|
+
export const Actor = defineComponent("Actor", {
|
|
35
|
+
kind: u32(0, { doc: "Kind.* of src/components.ts." }),
|
|
36
|
+
active: bool(false, { doc: "Pooled obstacles and coins collide while true; a collected coin is inactive while its pop plays, parked rows wait at x = -1000." }),
|
|
37
|
+
w: f32(1, { min: 0, unit: "m", doc: "Hit box width, centred on the position (the runner's: on its feet plus RUNNER_SIZE.y / 2)." }),
|
|
38
|
+
h: f32(1, { min: 0, unit: "m", doc: "Hit box height, centred like the width." }),
|
|
39
|
+
parallax: f32(1, { min: 0, max: 1, doc: "The fraction of the run speed this row scrolls left at (0 never moves)." }),
|
|
40
|
+
wrap: f32(0, { min: 0, unit: "m", doc: "Scenery: the span a row jumps right by once it has scrolled that far (a tilemap's width); 0 for pooled rows." }),
|
|
41
|
+
vy: f32(0, { unit: "m/s", doc: "Vertical velocity (the runner)." }),
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
/** The run: phase, pace, score. Authoritative on the runner row. */
|
|
45
|
+
export const Run = defineComponent("Run", {
|
|
46
|
+
phase: u32(Phase.Title, { doc: "0 title, 1 running, 2 over." }),
|
|
47
|
+
phaseTicks: u32(0, { unit: "ticks", doc: "Ticks since the phase began." }),
|
|
48
|
+
speed: f32(0, { unit: "m/s", doc: "The current run speed." }),
|
|
49
|
+
distance: f64(0, { unit: "m", doc: "Metres run this round." }),
|
|
50
|
+
coins: u32(0, { doc: "Coins collected this round." }),
|
|
51
|
+
score: u32(0, { doc: "floor(distance) + coins * Tuning.coinValue." }),
|
|
52
|
+
best: u32(0, { doc: "The best score: this session's, or the player's store's (og.platform) when higher." }),
|
|
53
|
+
bestRequest: u32(0, { doc: "The og.platform request reading the stored best (0 once answered)." }),
|
|
54
|
+
rounds: u32(0, { doc: "Rounds started." }),
|
|
55
|
+
spawnIn: f32(0, { unit: "s", doc: "Seconds until the next obstacle pattern." }),
|
|
56
|
+
grounded: bool(true, { doc: "The runner stands on the roof (og.PlatformerController.grounded after the last step)." }),
|
|
57
|
+
startHeld: bool(false, { doc: "The press that started the round is still held: it does not also jump." }),
|
|
58
|
+
kick: bool(false, { doc: "Director or Collide set Actor.vy this tick: Jump hands it to the body." }),
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
/** Tune's parameters. Authoritative on the runner row. */
|
|
62
|
+
export const Tuning = defineComponent("Tuning", {
|
|
63
|
+
speed: f32(6, { min: 3, max: 12, step: 0.5, unit: "m/s", tunable: true, label: "Start speed", doc: "The run speed when a round starts." }),
|
|
64
|
+
speedRamp: f32(0.12, { min: 0, max: 1, step: 0.02, unit: "m/s²", tunable: true, label: "Speed ramp", doc: "How fast the run speeds up." }),
|
|
65
|
+
speedMax: f32(12, { min: 4, max: 20, step: 0.5, unit: "m/s", tunable: true, label: "Top speed" }),
|
|
66
|
+
jumpHeight: f32(2, { min: 0.5, max: 6, step: 0.1, unit: "m", tunable: true, label: "Jump height", doc: "How high a held jump goes (og.PlatformerController.jumpHeight)." }),
|
|
67
|
+
timeToApex: f32(0.333, { min: 0.15, max: 1, step: 0.01, unit: "s", tunable: true, label: "Time to apex", doc: "How long a held jump takes to peak; with jumpHeight it sets gravity and the take-off speed." }),
|
|
68
|
+
jumpCut: f32(1.8, { min: 1, max: 6, step: 0.1, tunable: true, label: "Jump cut", doc: "Gravity times this while rising with the press released: a tap is a hop, a hold a full jump." }),
|
|
69
|
+
apexGravity: f32(0.75, { min: 0.2, max: 1, step: 0.05, tunable: true, label: "Apex hang", doc: "Gravity times this near the top of a held jump (1: no hang)." }),
|
|
70
|
+
fallGravity: f32(1.15, { min: 1, max: 3, step: 0.05, tunable: true, label: "Fall gravity", doc: "Gravity times this on the way down (above 1: a snappier landing)." }),
|
|
71
|
+
spawnInterval: f32(1.3, { min: 0.5, max: 60, step: 0.1, unit: "s", tunable: true, label: "Spawn interval", doc: "Seconds between obstacle patterns, before the dice (×0.85–1.25)." }),
|
|
72
|
+
coinValue: u32(10, { min: 0, max: 100, step: 1, tunable: true, label: "Coin value" }),
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
/** Where the HUD draws: the font and the visible area, worked out in `start`. On the runner row only. */
|
|
76
|
+
export const Hud = defineComponent("Hud", {
|
|
77
|
+
font: f64(0, { doc: "The Font handle." }),
|
|
78
|
+
halfWidth: f32(8.9, { unit: "m" }),
|
|
79
|
+
top: f32(8.5, { unit: "m" }),
|
|
80
|
+
bottom: f32(-1.5, { unit: "m" }),
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
/** Sound requests: bits of Sounds.sfx that the Voices system plays once each. */
|
|
84
|
+
export const Sound = { Jump: 1, Coin: 2, Crash: 4, Start: 8, Hold: 16 } as const;
|
|
85
|
+
|
|
86
|
+
/** The sounds asked for this tick (a resource: the systems that ask see no voice rows). */
|
|
87
|
+
export const Sounds = defineResource("Sounds", {
|
|
88
|
+
sfx: u32(0, { doc: "Sound.* bits waiting to play." }),
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
/** One voice: plays its sound once when Sounds.sfx asks for its bit. */
|
|
92
|
+
export const Sfx = defineComponent("Sfx", {
|
|
93
|
+
bit: u32(0, { doc: "Sound.* of src/components.ts." }),
|
|
94
|
+
});
|