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