@origingame/create-game 0.0.0-stage → 0.1.1

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 (590) 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/gitignore +8 -0
  56. package/archetypes/idle/host.d.ts +46 -0
  57. package/archetypes/idle/package.json +18 -0
  58. package/archetypes/idle/project.ogt +14 -0
  59. package/archetypes/idle/references/metal/card.png +0 -0
  60. package/archetypes/idle/references/metal/orbit.png +0 -0
  61. package/archetypes/idle/references/metal/title.png +0 -0
  62. package/archetypes/idle/src/components.ts +139 -0
  63. package/archetypes/idle/src/main.ts +247 -0
  64. package/archetypes/idle/src/numbers.ts +126 -0
  65. package/archetypes/idle/src/systems.ts +340 -0
  66. package/archetypes/idle/src/ui.ts +412 -0
  67. package/archetypes/idle/tests/away.og.ts +42 -0
  68. package/archetypes/idle/tests/flow.og.ts +57 -0
  69. package/archetypes/idle/tests/frames.og.ts +33 -0
  70. package/archetypes/idle/tests/frames.ts +134 -0
  71. package/archetypes/idle/tests/lib.ts +74 -0
  72. package/archetypes/idle/tests/milestone.og.ts +32 -0
  73. package/archetypes/idle/tests/nova.og.ts +52 -0
  74. package/archetypes/idle/tests/offline.og.ts +60 -0
  75. package/archetypes/idle/tests/pad.og.ts +55 -0
  76. package/archetypes/idle/tests/pause.og.ts +68 -0
  77. package/archetypes/idle/tests/phone.og.ts +50 -0
  78. package/archetypes/idle/tests/replay.og.ts +28 -0
  79. package/archetypes/idle/tools/make-assets.py +448 -0
  80. package/archetypes/idle/tools/oglite.py +285 -0
  81. package/archetypes/idle/tsconfig.json +17 -0
  82. package/archetypes/match3/.origin/setup +14 -0
  83. package/archetypes/match3/LICENSES.md +7 -0
  84. package/archetypes/match3/README.md +205 -0
  85. package/archetypes/match3/assets/audio/cascade.wav +0 -0
  86. package/archetypes/match3/assets/audio/clear.wav +0 -0
  87. package/archetypes/match3/assets/audio/lost.wav +0 -0
  88. package/archetypes/match3/assets/audio/refused.wav +0 -0
  89. package/archetypes/match3/assets/audio/select.wav +0 -0
  90. package/archetypes/match3/assets/audio/swap.wav +0 -0
  91. package/archetypes/match3/assets/audio/won.wav +0 -0
  92. package/archetypes/match3/assets/fonts/OFL.txt +93 -0
  93. package/archetypes/match3/assets/fonts/ui.ttf +0 -0
  94. package/archetypes/match3/assets/fonts/ui.ttf.ogt +11 -0
  95. package/archetypes/match3/assets/scenes/main.ogt +24 -0
  96. package/archetypes/match3/assets/sprites/backdrop.png +0 -0
  97. package/archetypes/match3/assets/sprites/board.ogt +21 -0
  98. package/archetypes/match3/assets/sprites/cells.ogt +7 -0
  99. package/archetypes/match3/assets/sprites/cells.png +0 -0
  100. package/archetypes/match3/assets/sprites/cells.png.ogt +7 -0
  101. package/archetypes/match3/assets/sprites/gems.ogt +75 -0
  102. package/archetypes/match3/assets/sprites/gems.png +0 -0
  103. package/archetypes/match3/assets/sprites/panel.png +0 -0
  104. package/archetypes/match3/assets/sprites/ring.png +0 -0
  105. package/archetypes/match3/gitattributes +22 -0
  106. package/archetypes/match3/gitignore +8 -0
  107. package/archetypes/match3/host.d.ts +46 -0
  108. package/archetypes/match3/package.json +18 -0
  109. package/archetypes/match3/project.ogt +18 -0
  110. package/archetypes/match3/references/metal/cascade.png +0 -0
  111. package/archetypes/match3/references/metal/clearing.png +0 -0
  112. package/archetypes/match3/references/metal/dealt.png +0 -0
  113. package/archetypes/match3/src/art.ts +54 -0
  114. package/archetypes/match3/src/board.ts +112 -0
  115. package/archetypes/match3/src/components.ts +95 -0
  116. package/archetypes/match3/src/layout.ts +25 -0
  117. package/archetypes/match3/src/main.ts +199 -0
  118. package/archetypes/match3/src/systems.ts +631 -0
  119. package/archetypes/match3/tests/drag.og.ts +31 -0
  120. package/archetypes/match3/tests/endings.og.ts +40 -0
  121. package/archetypes/match3/tests/frames.og.ts +49 -0
  122. package/archetypes/match3/tests/frames.ts +134 -0
  123. package/archetypes/match3/tests/hidpi.og.ts +41 -0
  124. package/archetypes/match3/tests/lib.ts +64 -0
  125. package/archetypes/match3/tests/replay.og.ts +28 -0
  126. package/archetypes/match3/tests/sounds.og.ts +50 -0
  127. package/archetypes/match3/tests/swap.og.ts +67 -0
  128. package/archetypes/match3/tools/make-assets.py +404 -0
  129. package/archetypes/match3/tools/oglite.py +285 -0
  130. package/archetypes/match3/tsconfig.json +17 -0
  131. package/archetypes/rhythm/.origin/setup +14 -0
  132. package/archetypes/rhythm/LICENSES.md +13 -0
  133. package/archetypes/rhythm/README.md +235 -0
  134. package/archetypes/rhythm/assets/audio/bass0.wav +0 -0
  135. package/archetypes/rhythm/assets/audio/bass1.wav +0 -0
  136. package/archetypes/rhythm/assets/audio/bass2.wav +0 -0
  137. package/archetypes/rhythm/assets/audio/bass3.wav +0 -0
  138. package/archetypes/rhythm/assets/audio/chords0.wav +0 -0
  139. package/archetypes/rhythm/assets/audio/chords1.wav +0 -0
  140. package/archetypes/rhythm/assets/audio/chords2.wav +0 -0
  141. package/archetypes/rhythm/assets/audio/chords3.wav +0 -0
  142. package/archetypes/rhythm/assets/audio/clear.wav +0 -0
  143. package/archetypes/rhythm/assets/audio/click.wav +0 -0
  144. package/archetypes/rhythm/assets/audio/drums.wav +0 -0
  145. package/archetypes/rhythm/assets/audio/fail.wav +0 -0
  146. package/archetypes/rhythm/assets/audio/leadA.wav +0 -0
  147. package/archetypes/rhythm/assets/audio/leadB.wav +0 -0
  148. package/archetypes/rhythm/assets/audio/miss.wav +0 -0
  149. package/archetypes/rhythm/assets/audio/tap0.wav +0 -0
  150. package/archetypes/rhythm/assets/audio/tap1.wav +0 -0
  151. package/archetypes/rhythm/assets/audio/tap2.wav +0 -0
  152. package/archetypes/rhythm/assets/audio/ui-close.ogt +9 -0
  153. package/archetypes/rhythm/assets/audio/ui-error.ogt +9 -0
  154. package/archetypes/rhythm/assets/audio/ui-open.ogt +9 -0
  155. package/archetypes/rhythm/assets/audio/ui-press.ogt +9 -0
  156. package/archetypes/rhythm/assets/audio/ui-success.ogt +9 -0
  157. package/archetypes/rhythm/assets/charts/neon-pulse.ogt +919 -0
  158. package/archetypes/rhythm/assets/fonts/NotoSansSC-subset.ttf +0 -0
  159. package/archetypes/rhythm/assets/fonts/NotoSansSC-subset.ttf.ogt +10 -0
  160. package/archetypes/rhythm/assets/fonts/OFL.txt +93 -0
  161. package/archetypes/rhythm/assets/fx/hit.ogt +22 -0
  162. package/archetypes/rhythm/assets/skins/lanebeat/ChakraPetch-Medium.ttf +0 -0
  163. package/archetypes/rhythm/assets/skins/lanebeat/ChakraPetch-Medium.ttf.ogt +9 -0
  164. package/archetypes/rhythm/assets/skins/lanebeat/JetBrainsMono-Regular.ttf +0 -0
  165. package/archetypes/rhythm/assets/skins/lanebeat/JetBrainsMono-Regular.ttf.ogt +9 -0
  166. package/archetypes/rhythm/assets/skins/lanebeat/LICENSES.md +17 -0
  167. package/archetypes/rhythm/assets/skins/lanebeat/OFL.txt +95 -0
  168. package/archetypes/rhythm/assets/skins/lanebeat/Orbitron-Bold.ttf +0 -0
  169. package/archetypes/rhythm/assets/skins/lanebeat/Orbitron-Bold.ttf.ogt +9 -0
  170. package/archetypes/rhythm/assets/skins/lanebeat/atlas.png +0 -0
  171. package/archetypes/rhythm/assets/skins/lanebeat/atlas.png.ogt +7 -0
  172. package/archetypes/rhythm/assets/skins/lanebeat/icons.png +0 -0
  173. package/archetypes/rhythm/assets/skins/lanebeat/icons.png.ogt +7 -0
  174. package/archetypes/rhythm/assets/skins/lanebeat/skin.ogt +110 -0
  175. package/archetypes/rhythm/assets/sprites/lane.png +0 -0
  176. package/archetypes/rhythm/assets/sprites/lane.png.ogt +7 -0
  177. package/archetypes/rhythm/assets/sprites/note.png +0 -0
  178. package/archetypes/rhythm/assets/sprites/note.png.ogt +7 -0
  179. package/archetypes/rhythm/assets/sprites/ring.png +0 -0
  180. package/archetypes/rhythm/assets/sprites/ring.png.ogt +7 -0
  181. package/archetypes/rhythm/assets/sprites/spark.png +0 -0
  182. package/archetypes/rhythm/assets/sprites/spark.png.ogt +7 -0
  183. package/archetypes/rhythm/assets/strings/en.ogt +61 -0
  184. package/archetypes/rhythm/assets/strings/zh-CN.ogt +61 -0
  185. package/archetypes/rhythm/gitattributes +22 -0
  186. package/archetypes/rhythm/gitignore +8 -0
  187. package/archetypes/rhythm/host.d.ts +46 -0
  188. package/archetypes/rhythm/package.json +18 -0
  189. package/archetypes/rhythm/project.ogt +14 -0
  190. package/archetypes/rhythm/references/metal/highway.png +0 -0
  191. package/archetypes/rhythm/references/metal/results.png +0 -0
  192. package/archetypes/rhythm/references/metal/title.png +0 -0
  193. package/archetypes/rhythm/src/components.ts +147 -0
  194. package/archetypes/rhythm/src/main.ts +202 -0
  195. package/archetypes/rhythm/src/systems.ts +490 -0
  196. package/archetypes/rhythm/src/ui.ts +421 -0
  197. package/archetypes/rhythm/tests/band.og.ts +45 -0
  198. package/archetypes/rhythm/tests/calibrate.og.ts +49 -0
  199. package/archetypes/rhythm/tests/clear.og.ts +51 -0
  200. package/archetypes/rhythm/tests/fail.og.ts +40 -0
  201. package/archetypes/rhythm/tests/flow.og.ts +54 -0
  202. package/archetypes/rhythm/tests/frames.og.ts +35 -0
  203. package/archetypes/rhythm/tests/frames.ts +134 -0
  204. package/archetypes/rhythm/tests/lib.ts +123 -0
  205. package/archetypes/rhythm/tests/pad.og.ts +41 -0
  206. package/archetypes/rhythm/tests/pause.og.ts +77 -0
  207. package/archetypes/rhythm/tests/phone.og.ts +44 -0
  208. package/archetypes/rhythm/tests/replay.og.ts +27 -0
  209. package/archetypes/rhythm/tests/timing.og.ts +37 -0
  210. package/archetypes/rhythm/tools/make-assets.py +383 -0
  211. package/archetypes/rhythm/tools/oglite.py +285 -0
  212. package/archetypes/rhythm/tsconfig.json +17 -0
  213. package/archetypes/roguelike/.origin/setup +14 -0
  214. package/archetypes/roguelike/LICENSES.md +14 -0
  215. package/archetypes/roguelike/README.md +256 -0
  216. package/archetypes/roguelike/assets/ai/foe.ogt +28 -0
  217. package/archetypes/roguelike/assets/ai/guardian.ogt +26 -0
  218. package/archetypes/roguelike/assets/audio/bump.wav +0 -0
  219. package/archetypes/roguelike/assets/audio/drink.wav +0 -0
  220. package/archetypes/roguelike/assets/audio/fall.wav +0 -0
  221. package/archetypes/roguelike/assets/audio/hit.wav +0 -0
  222. package/archetypes/roguelike/assets/audio/hurt.wav +0 -0
  223. package/archetypes/roguelike/assets/audio/item.wav +0 -0
  224. package/archetypes/roguelike/assets/audio/kill.wav +0 -0
  225. package/archetypes/roguelike/assets/audio/pickup.wav +0 -0
  226. package/archetypes/roguelike/assets/audio/roar.wav +0 -0
  227. package/archetypes/roguelike/assets/audio/stairs.wav +0 -0
  228. package/archetypes/roguelike/assets/audio/step.ogt +9 -0
  229. package/archetypes/roguelike/assets/audio/telegraph.wav +0 -0
  230. package/archetypes/roguelike/assets/audio/tomb.wav +0 -0
  231. package/archetypes/roguelike/assets/audio/ui-close.ogt +9 -0
  232. package/archetypes/roguelike/assets/audio/ui-error.ogt +9 -0
  233. package/archetypes/roguelike/assets/audio/ui-open.ogt +9 -0
  234. package/archetypes/roguelike/assets/audio/ui-press.ogt +9 -0
  235. package/archetypes/roguelike/assets/audio/ui-success.ogt +9 -0
  236. package/archetypes/roguelike/assets/audio/won.wav +0 -0
  237. package/archetypes/roguelike/assets/fonts/NotoSansSC-subset.ttf +0 -0
  238. package/archetypes/roguelike/assets/fonts/NotoSansSC-subset.ttf.ogt +10 -0
  239. package/archetypes/roguelike/assets/fonts/OFL.txt +93 -0
  240. package/archetypes/roguelike/assets/maps/dive.ogt +106 -0
  241. package/archetypes/roguelike/assets/skins/lampdive/DotGothic16-Regular.ttf +0 -0
  242. package/archetypes/roguelike/assets/skins/lampdive/DotGothic16-Regular.ttf.ogt +9 -0
  243. package/archetypes/roguelike/assets/skins/lampdive/LICENSES.md +16 -0
  244. package/archetypes/roguelike/assets/skins/lampdive/OFL.txt +93 -0
  245. package/archetypes/roguelike/assets/skins/lampdive/atlas.png +0 -0
  246. package/archetypes/roguelike/assets/skins/lampdive/atlas.png.ogt +7 -0
  247. package/archetypes/roguelike/assets/skins/lampdive/icons.png +0 -0
  248. package/archetypes/roguelike/assets/skins/lampdive/icons.png.ogt +7 -0
  249. package/archetypes/roguelike/assets/skins/lampdive/skin.ogt +115 -0
  250. package/archetypes/roguelike/assets/sprites/dive.ogt +50 -0
  251. package/archetypes/roguelike/assets/sprites/dive.png +0 -0
  252. package/archetypes/roguelike/assets/sprites/dive.png.ogt +7 -0
  253. package/archetypes/roguelike/assets/sprites/glow.png +0 -0
  254. package/archetypes/roguelike/assets/sprites/glow.png.ogt +7 -0
  255. package/archetypes/roguelike/assets/strings/en.ogt +57 -0
  256. package/archetypes/roguelike/assets/strings/zh-CN.ogt +57 -0
  257. package/archetypes/roguelike/assets/tiles/tomb.ogt +31 -0
  258. package/archetypes/roguelike/assets/tiles/tomb.png +0 -0
  259. package/archetypes/roguelike/assets/tiles/tomb.png.ogt +7 -0
  260. package/archetypes/roguelike/gitattributes +22 -0
  261. package/archetypes/roguelike/gitignore +8 -0
  262. package/archetypes/roguelike/host.d.ts +46 -0
  263. package/archetypes/roguelike/package.json +18 -0
  264. package/archetypes/roguelike/project.ogt +14 -0
  265. package/archetypes/roguelike/references/metal/dive.png +0 -0
  266. package/archetypes/roguelike/references/metal/over.png +0 -0
  267. package/archetypes/roguelike/references/metal/title.png +0 -0
  268. package/archetypes/roguelike/src/art.ts +23 -0
  269. package/archetypes/roguelike/src/components.ts +169 -0
  270. package/archetypes/roguelike/src/dive.ts +144 -0
  271. package/archetypes/roguelike/src/foes.ts +174 -0
  272. package/archetypes/roguelike/src/main.ts +258 -0
  273. package/archetypes/roguelike/src/systems.ts +620 -0
  274. package/archetypes/roguelike/src/ui.ts +350 -0
  275. package/archetypes/roguelike/tests/flow.og.ts +54 -0
  276. package/archetypes/roguelike/tests/foes.og.ts +45 -0
  277. package/archetypes/roguelike/tests/frames.og.ts +32 -0
  278. package/archetypes/roguelike/tests/frames.ts +134 -0
  279. package/archetypes/roguelike/tests/lib.ts +83 -0
  280. package/archetypes/roguelike/tests/lose.og.ts +44 -0
  281. package/archetypes/roguelike/tests/pad.og.ts +54 -0
  282. package/archetypes/roguelike/tests/pause.og.ts +59 -0
  283. package/archetypes/roguelike/tests/phone.og.ts +54 -0
  284. package/archetypes/roguelike/tests/replay.og.ts +24 -0
  285. package/archetypes/roguelike/tests/win.og.ts +60 -0
  286. package/archetypes/roguelike/tools/make-assets.py +518 -0
  287. package/archetypes/roguelike/tools/oglite.py +285 -0
  288. package/archetypes/roguelike/tsconfig.json +17 -0
  289. package/archetypes/runner/.origin/setup +14 -0
  290. package/archetypes/runner/LICENSES.md +10 -0
  291. package/archetypes/runner/README.md +225 -0
  292. package/archetypes/runner/assets/audio/coin.wav +0 -0
  293. package/archetypes/runner/assets/audio/crash.wav +0 -0
  294. package/archetypes/runner/assets/audio/hold.ogt +9 -0
  295. package/archetypes/runner/assets/audio/jump.wav +0 -0
  296. package/archetypes/runner/assets/audio/start.wav +0 -0
  297. package/archetypes/runner/assets/fonts/OFL.txt +93 -0
  298. package/archetypes/runner/assets/fonts/ui.ttf +0 -0
  299. package/archetypes/runner/assets/fonts/ui.ttf.ogt +11 -0
  300. package/archetypes/runner/assets/maps/far.ogt +25 -0
  301. package/archetypes/runner/assets/maps/near.ogt +25 -0
  302. package/archetypes/runner/assets/maps/roofs.ogt +19 -0
  303. package/archetypes/runner/assets/scenes/main.ogt +35 -0
  304. package/archetypes/runner/assets/sprites/coin.ogt +11 -0
  305. package/archetypes/runner/assets/sprites/coin.png +0 -0
  306. package/archetypes/runner/assets/sprites/coin.png.ogt +7 -0
  307. package/archetypes/runner/assets/sprites/courier.ogt +32 -0
  308. package/archetypes/runner/assets/sprites/courier.png +0 -0
  309. package/archetypes/runner/assets/sprites/courier.png.ogt +7 -0
  310. package/archetypes/runner/assets/sprites/props.ogt +21 -0
  311. package/archetypes/runner/assets/sprites/props.png +0 -0
  312. package/archetypes/runner/assets/sprites/props.png.ogt +7 -0
  313. package/archetypes/runner/assets/sprites/sky.png +0 -0
  314. package/archetypes/runner/assets/sprites/sky.png.ogt +7 -0
  315. package/archetypes/runner/assets/tiles/city.ogt +18 -0
  316. package/archetypes/runner/assets/tiles/city.png +0 -0
  317. package/archetypes/runner/assets/tiles/city.png.ogt +7 -0
  318. package/archetypes/runner/gitattributes +22 -0
  319. package/archetypes/runner/gitignore +8 -0
  320. package/archetypes/runner/host.d.ts +46 -0
  321. package/archetypes/runner/package.json +18 -0
  322. package/archetypes/runner/project.ogt +18 -0
  323. package/archetypes/runner/references/metal/frames-coin.png +0 -0
  324. package/archetypes/runner/references/metal/frames-crash.png +0 -0
  325. package/archetypes/runner/references/metal/frames-title.png +0 -0
  326. package/archetypes/runner/src/art.ts +57 -0
  327. package/archetypes/runner/src/components.ts +94 -0
  328. package/archetypes/runner/src/main.ts +241 -0
  329. package/archetypes/runner/src/systems.ts +553 -0
  330. package/archetypes/runner/tests/coins.og.ts +30 -0
  331. package/archetypes/runner/tests/flow.og.ts +72 -0
  332. package/archetypes/runner/tests/frames.og.ts +37 -0
  333. package/archetypes/runner/tests/frames.ts +134 -0
  334. package/archetypes/runner/tests/jump.og.ts +44 -0
  335. package/archetypes/runner/tests/lib.ts +42 -0
  336. package/archetypes/runner/tests/records.og.ts +43 -0
  337. package/archetypes/runner/tests/replay.og.ts +36 -0
  338. package/archetypes/runner/tests/sounds.og.ts +43 -0
  339. package/archetypes/runner/tests/tune.og.ts +36 -0
  340. package/archetypes/runner/tools/make-assets.py +603 -0
  341. package/archetypes/runner/tools/oglite.py +285 -0
  342. package/archetypes/runner/tsconfig.json +17 -0
  343. package/archetypes/third-person/.origin/setup +14 -0
  344. package/archetypes/third-person/LICENSES.md +23 -0
  345. package/archetypes/third-person/README.md +249 -0
  346. package/archetypes/third-person/assets/ai/sentinel-east.ogt +69 -0
  347. package/archetypes/third-person/assets/ai/sentinel-north.ogt +69 -0
  348. package/archetypes/third-person/assets/ai/sentinel-west.ogt +69 -0
  349. package/archetypes/third-person/assets/anims/humanoid-clips.glb +0 -0
  350. package/archetypes/third-person/assets/audio/alarm.wav +0 -0
  351. package/archetypes/third-person/assets/audio/dawn.wav +0 -0
  352. package/archetypes/third-person/assets/audio/grab.wav +0 -0
  353. package/archetypes/third-person/assets/audio/ignite.wav +0 -0
  354. package/archetypes/third-person/assets/audio/jump.wav +0 -0
  355. package/archetypes/third-person/assets/audio/night.wav +0 -0
  356. package/archetypes/third-person/assets/audio/splash.wav +0 -0
  357. package/archetypes/third-person/assets/audio/step.ogt +9 -0
  358. package/archetypes/third-person/assets/audio/ui-close.ogt +9 -0
  359. package/archetypes/third-person/assets/audio/ui-error.ogt +9 -0
  360. package/archetypes/third-person/assets/audio/ui-open.ogt +9 -0
  361. package/archetypes/third-person/assets/audio/ui-press.ogt +9 -0
  362. package/archetypes/third-person/assets/audio/ui-success.ogt +9 -0
  363. package/archetypes/third-person/assets/audio/vale.wav +0 -0
  364. package/archetypes/third-person/assets/fonts/NotoSansSC-subset.ttf +0 -0
  365. package/archetypes/third-person/assets/fonts/NotoSansSC-subset.ttf.ogt +10 -0
  366. package/archetypes/third-person/assets/fonts/OFL.txt +93 -0
  367. package/archetypes/third-person/assets/fx/burst.ogt +25 -0
  368. package/archetypes/third-person/assets/fx/fire.ogt +24 -0
  369. package/archetypes/third-person/assets/fx/smoke.ogt +24 -0
  370. package/archetypes/third-person/assets/fx/splash.ogt +24 -0
  371. package/archetypes/third-person/assets/luts/teal-orange.cube +4917 -0
  372. package/archetypes/third-person/assets/models/stout.glb +0 -0
  373. package/archetypes/third-person/assets/models/strider.glb +0 -0
  374. package/archetypes/third-person/assets/models/strider.glb.ogt +9 -0
  375. package/archetypes/third-person/assets/nav/vale.ogt +43 -0
  376. package/archetypes/third-person/assets/rigs/strider.ogt +6 -0
  377. package/archetypes/third-person/assets/skins/ember/Cinzel-Bold.ttf +0 -0
  378. package/archetypes/third-person/assets/skins/ember/Cinzel-Bold.ttf.ogt +9 -0
  379. package/archetypes/third-person/assets/skins/ember/LICENSES.md +13 -0
  380. package/archetypes/third-person/assets/skins/ember/Newsreader-Medium.ttf +0 -0
  381. package/archetypes/third-person/assets/skins/ember/Newsreader-Medium.ttf.ogt +9 -0
  382. package/archetypes/third-person/assets/skins/ember/OFL.txt +94 -0
  383. package/archetypes/third-person/assets/skins/ember/atlas.png +0 -0
  384. package/archetypes/third-person/assets/skins/ember/atlas.png.ogt +7 -0
  385. package/archetypes/third-person/assets/skins/ember/icons.png +0 -0
  386. package/archetypes/third-person/assets/skins/ember/icons.png.ogt +7 -0
  387. package/archetypes/third-person/assets/skins/ember/skin.ogt +109 -0
  388. package/archetypes/third-person/assets/strings/en.ogt +47 -0
  389. package/archetypes/third-person/assets/strings/zh-CN.ogt +47 -0
  390. package/archetypes/third-person/assets/terrain/vale-control.png +0 -0
  391. package/archetypes/third-person/assets/terrain/vale.ogt +42 -0
  392. package/archetypes/third-person/assets/terrain/vale.png +0 -0
  393. package/archetypes/third-person/assets/textures/decals.png +0 -0
  394. package/archetypes/third-person/assets/textures/flame.png +0 -0
  395. package/archetypes/third-person/assets/textures/smoke.png +0 -0
  396. package/archetypes/third-person/assets/textures/spark.png +0 -0
  397. package/archetypes/third-person/assets/textures/terrain-grass.png +0 -0
  398. package/archetypes/third-person/assets/textures/terrain-path.png +0 -0
  399. package/archetypes/third-person/assets/textures/terrain-rock.png +0 -0
  400. package/archetypes/third-person/assets/textures/terrain-sand.png +0 -0
  401. package/archetypes/third-person/gitattributes +22 -0
  402. package/archetypes/third-person/gitignore +8 -0
  403. package/archetypes/third-person/host.d.ts +46 -0
  404. package/archetypes/third-person/package.json +18 -0
  405. package/archetypes/third-person/project.ogt +14 -0
  406. package/archetypes/third-person/references/metal/beacon.png +0 -0
  407. package/archetypes/third-person/references/metal/dawn.png +0 -0
  408. package/archetypes/third-person/references/metal/title.png +0 -0
  409. package/archetypes/third-person/references/webgl2/beacon.png +0 -0
  410. package/archetypes/third-person/src/anim.ts +87 -0
  411. package/archetypes/third-person/src/beacons.ts +80 -0
  412. package/archetypes/third-person/src/components.ts +148 -0
  413. package/archetypes/third-person/src/hero.ts +293 -0
  414. package/archetypes/third-person/src/main.ts +164 -0
  415. package/archetypes/third-person/src/sentinels.ts +159 -0
  416. package/archetypes/third-person/src/sound.ts +66 -0
  417. package/archetypes/third-person/src/ui.ts +451 -0
  418. package/archetypes/third-person/src/world.ts +212 -0
  419. package/archetypes/third-person/tests/flow.og.ts +70 -0
  420. package/archetypes/third-person/tests/frames.og.ts +35 -0
  421. package/archetypes/third-person/tests/frames.ts +134 -0
  422. package/archetypes/third-person/tests/hitstop.og.ts +26 -0
  423. package/archetypes/third-person/tests/lib.ts +87 -0
  424. package/archetypes/third-person/tests/lose.og.ts +44 -0
  425. package/archetypes/third-person/tests/pause.og.ts +64 -0
  426. package/archetypes/third-person/tests/phone.og.ts +65 -0
  427. package/archetypes/third-person/tests/replay.og.ts +32 -0
  428. package/archetypes/third-person/tests/restart.og.ts +28 -0
  429. package/archetypes/third-person/tests/sentinels.og.ts +48 -0
  430. package/archetypes/third-person/tests/win.og.ts +62 -0
  431. package/archetypes/third-person/tools/make-assets.py +353 -0
  432. package/archetypes/third-person/tools/oglite.py +285 -0
  433. package/archetypes/third-person/tsconfig.json +17 -0
  434. package/archetypes/topdown/.origin/setup +14 -0
  435. package/archetypes/topdown/LICENSES.md +10 -0
  436. package/archetypes/topdown/README.md +235 -0
  437. package/archetypes/topdown/assets/ai/slime.ogt +49 -0
  438. package/archetypes/topdown/assets/audio/coin.wav +0 -0
  439. package/archetypes/topdown/assets/audio/door.wav +0 -0
  440. package/archetypes/topdown/assets/audio/hit.wav +0 -0
  441. package/archetypes/topdown/assets/audio/hurt.wav +0 -0
  442. package/archetypes/topdown/assets/audio/key.wav +0 -0
  443. package/archetypes/topdown/assets/audio/step.ogt +9 -0
  444. package/archetypes/topdown/assets/fonts/OFL.txt +93 -0
  445. package/archetypes/topdown/assets/fonts/ui.ttf +0 -0
  446. package/archetypes/topdown/assets/fonts/ui.ttf.ogt +9 -0
  447. package/archetypes/topdown/assets/maps/tomb.tmj +2183 -0
  448. package/archetypes/topdown/assets/sprites/hero.ogt +58 -0
  449. package/archetypes/topdown/assets/sprites/hero.png +0 -0
  450. package/archetypes/topdown/assets/sprites/hero.png.ogt +7 -0
  451. package/archetypes/topdown/assets/sprites/items.ogt +15 -0
  452. package/archetypes/topdown/assets/sprites/items.png +0 -0
  453. package/archetypes/topdown/assets/sprites/items.png.ogt +7 -0
  454. package/archetypes/topdown/assets/sprites/slime.ogt +17 -0
  455. package/archetypes/topdown/assets/sprites/slime.png +0 -0
  456. package/archetypes/topdown/assets/sprites/slime.png.ogt +7 -0
  457. package/archetypes/topdown/assets/tiles/dungeon.ogt +65 -0
  458. package/archetypes/topdown/assets/tiles/dungeon.png +0 -0
  459. package/archetypes/topdown/assets/tiles/dungeon.png.ogt +7 -0
  460. package/archetypes/topdown/gitattributes +22 -0
  461. package/archetypes/topdown/gitignore +8 -0
  462. package/archetypes/topdown/host.d.ts +46 -0
  463. package/archetypes/topdown/package.json +18 -0
  464. package/archetypes/topdown/project.ogt +14 -0
  465. package/archetypes/topdown/references/metal/crit.png +0 -0
  466. package/archetypes/topdown/references/metal/dash.png +0 -0
  467. package/archetypes/topdown/references/metal/east.png +0 -0
  468. package/archetypes/topdown/references/metal/start.png +0 -0
  469. package/archetypes/topdown/src/art.ts +48 -0
  470. package/archetypes/topdown/src/components.ts +128 -0
  471. package/archetypes/topdown/src/main.ts +275 -0
  472. package/archetypes/topdown/src/systems.ts +503 -0
  473. package/archetypes/topdown/tests/ai.og.ts +64 -0
  474. package/archetypes/topdown/tests/combat.og.ts +72 -0
  475. package/archetypes/topdown/tests/door.og.ts +62 -0
  476. package/archetypes/topdown/tests/flee.og.ts +49 -0
  477. package/archetypes/topdown/tests/frames.og.ts +45 -0
  478. package/archetypes/topdown/tests/frames.ts +134 -0
  479. package/archetypes/topdown/tests/lib.ts +71 -0
  480. package/archetypes/topdown/tests/replay.og.ts +40 -0
  481. package/archetypes/topdown/tests/walk.og.ts +46 -0
  482. package/archetypes/topdown/tools/make-assets.py +623 -0
  483. package/archetypes/topdown/tools/oglite.py +285 -0
  484. package/archetypes/topdown/tsconfig.json +17 -0
  485. package/archetypes/tower-defense/.origin/setup +14 -0
  486. package/archetypes/tower-defense/LICENSES.md +15 -0
  487. package/archetypes/tower-defense/README.md +240 -0
  488. package/archetypes/tower-defense/assets/ai/plant.ogt +16 -0
  489. package/archetypes/tower-defense/assets/audio/clear.wav +0 -0
  490. package/archetypes/tower-defense/assets/audio/frost.wav +0 -0
  491. package/archetypes/tower-defense/assets/audio/leak.wav +0 -0
  492. package/archetypes/tower-defense/assets/audio/lost.wav +0 -0
  493. package/archetypes/tower-defense/assets/audio/night.wav +0 -0
  494. package/archetypes/tower-defense/assets/audio/plant.wav +0 -0
  495. package/archetypes/tower-defense/assets/audio/pop.wav +0 -0
  496. package/archetypes/tower-defense/assets/audio/thorn.wav +0 -0
  497. package/archetypes/tower-defense/assets/audio/ui-close.ogt +9 -0
  498. package/archetypes/tower-defense/assets/audio/ui-error.ogt +9 -0
  499. package/archetypes/tower-defense/assets/audio/ui-open.ogt +9 -0
  500. package/archetypes/tower-defense/assets/audio/ui-press.ogt +9 -0
  501. package/archetypes/tower-defense/assets/audio/ui-success.ogt +9 -0
  502. package/archetypes/tower-defense/assets/audio/wave.wav +0 -0
  503. package/archetypes/tower-defense/assets/audio/won.wav +0 -0
  504. package/archetypes/tower-defense/assets/fonts/NotoSansSC-subset.ttf +0 -0
  505. package/archetypes/tower-defense/assets/fonts/NotoSansSC-subset.ttf.ogt +10 -0
  506. package/archetypes/tower-defense/assets/fonts/OFL.txt +93 -0
  507. package/archetypes/tower-defense/assets/fx/fireflies.ogt +21 -0
  508. package/archetypes/tower-defense/assets/fx/pop.ogt +21 -0
  509. package/archetypes/tower-defense/assets/maps/garden.ogt +91 -0
  510. package/archetypes/tower-defense/assets/skins/pathguard/Fredoka-SemiBold.ttf +0 -0
  511. package/archetypes/tower-defense/assets/skins/pathguard/Fredoka-SemiBold.ttf.ogt +9 -0
  512. package/archetypes/tower-defense/assets/skins/pathguard/LICENSES.md +13 -0
  513. package/archetypes/tower-defense/assets/skins/pathguard/LilitaOne-Regular.ttf +0 -0
  514. package/archetypes/tower-defense/assets/skins/pathguard/LilitaOne-Regular.ttf.ogt +9 -0
  515. package/archetypes/tower-defense/assets/skins/pathguard/OFL.txt +94 -0
  516. package/archetypes/tower-defense/assets/skins/pathguard/atlas.png +0 -0
  517. package/archetypes/tower-defense/assets/skins/pathguard/atlas.png.ogt +7 -0
  518. package/archetypes/tower-defense/assets/skins/pathguard/icons.png +0 -0
  519. package/archetypes/tower-defense/assets/skins/pathguard/icons.png.ogt +7 -0
  520. package/archetypes/tower-defense/assets/skins/pathguard/skin.ogt +111 -0
  521. package/archetypes/tower-defense/assets/sprites/garden.ogt +66 -0
  522. package/archetypes/tower-defense/assets/sprites/garden.png +0 -0
  523. package/archetypes/tower-defense/assets/sprites/garden.png.ogt +7 -0
  524. package/archetypes/tower-defense/assets/sprites/glow.png +0 -0
  525. package/archetypes/tower-defense/assets/sprites/glow.png.ogt +7 -0
  526. package/archetypes/tower-defense/assets/sprites/ring.png +0 -0
  527. package/archetypes/tower-defense/assets/sprites/ring.png.ogt +7 -0
  528. package/archetypes/tower-defense/assets/sprites/spark.png +0 -0
  529. package/archetypes/tower-defense/assets/sprites/spark.png.ogt +7 -0
  530. package/archetypes/tower-defense/assets/strings/en.ogt +47 -0
  531. package/archetypes/tower-defense/assets/strings/zh-CN.ogt +47 -0
  532. package/archetypes/tower-defense/assets/tiles/garden.ogt +10 -0
  533. package/archetypes/tower-defense/assets/tiles/garden.png +0 -0
  534. package/archetypes/tower-defense/assets/tiles/garden.png.ogt +7 -0
  535. package/archetypes/tower-defense/gitattributes +22 -0
  536. package/archetypes/tower-defense/gitignore +8 -0
  537. package/archetypes/tower-defense/host.d.ts +46 -0
  538. package/archetypes/tower-defense/package.json +18 -0
  539. package/archetypes/tower-defense/project.ogt +14 -0
  540. package/archetypes/tower-defense/references/metal/end.png +0 -0
  541. package/archetypes/tower-defense/references/metal/title.png +0 -0
  542. package/archetypes/tower-defense/references/metal/wave.png +0 -0
  543. package/archetypes/tower-defense/src/art.ts +24 -0
  544. package/archetypes/tower-defense/src/components.ts +156 -0
  545. package/archetypes/tower-defense/src/main.ts +253 -0
  546. package/archetypes/tower-defense/src/systems.ts +658 -0
  547. package/archetypes/tower-defense/src/ui.ts +382 -0
  548. package/archetypes/tower-defense/tests/flow.og.ts +56 -0
  549. package/archetypes/tower-defense/tests/frames.og.ts +31 -0
  550. package/archetypes/tower-defense/tests/frames.ts +134 -0
  551. package/archetypes/tower-defense/tests/lib.ts +81 -0
  552. package/archetypes/tower-defense/tests/lose.og.ts +40 -0
  553. package/archetypes/tower-defense/tests/maze.og.ts +53 -0
  554. package/archetypes/tower-defense/tests/pad.og.ts +41 -0
  555. package/archetypes/tower-defense/tests/pause.og.ts +59 -0
  556. package/archetypes/tower-defense/tests/phone.og.ts +49 -0
  557. package/archetypes/tower-defense/tests/replay.og.ts +28 -0
  558. package/archetypes/tower-defense/tests/win.og.ts +58 -0
  559. package/archetypes/tower-defense/tools/make-assets.py +640 -0
  560. package/archetypes/tower-defense/tools/oglite.py +285 -0
  561. package/archetypes/tower-defense/tsconfig.json +17 -0
  562. package/bin/create.ts +503 -0
  563. package/looks/catalogue.json +1871 -0
  564. package/package.json +31 -4
  565. package/template/.origin/setup +14 -0
  566. package/template/LICENSES.md +23 -0
  567. package/template/README.md +37 -0
  568. package/template/assets/ai/guard.ogt +48 -0
  569. package/template/assets/audio/blip.wav +0 -0
  570. package/template/assets/audio/click.ogt +9 -0
  571. package/template/assets/fonts/NotoSansSC-Regular-subset.ttf +0 -0
  572. package/template/assets/fonts/NotoSansSC-Regular-subset.ttf.ogt +12 -0
  573. package/template/assets/fonts/OFL.txt +93 -0
  574. package/template/assets/looks/origin-game.ogt +12 -0
  575. package/template/assets/models/dropship.glb +0 -0
  576. package/template/assets/models/walker.glb +0 -0
  577. package/template/assets/nav/yard.ogt +27 -0
  578. package/template/assets/scenes/main.ogt +34 -0
  579. package/template/assets/strings/en.ogt +14 -0
  580. package/template/assets/textures/stone.png +0 -0
  581. package/template/assets/textures/stone_n.png +0 -0
  582. package/template/assets/textures/stone_n.png.ogt +7 -0
  583. package/template/gitattributes +22 -0
  584. package/template/gitignore +8 -0
  585. package/template/package.json +18 -0
  586. package/template/project.ogt +25 -0
  587. package/template/src/main.ts +246 -0
  588. package/template/tests/guard.og.ts +67 -0
  589. package/template/tests/smoke.og.ts +43 -0
  590. package/template/tsconfig.json +17 -0
package/README.md CHANGED
@@ -1,3 +1,58 @@
1
- # Temporary Holding Version
1
+ # @origingame/create-game
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Scaffolds an Origin Engine game from the project template (`templates/game`
4
+ of the engine repository): `project.ogt`, `src/`, `assets/`, `tests/`,
5
+ `package.json` and `tsconfig.json`, with the game's name and id filled in.
6
+
7
+ ```sh
8
+ bun packages/create/bin/create.ts my-game --name "My Game" # in the engine repository
9
+ cd my-game && bun install && og cook && og run .
10
+ ```
11
+
12
+ `create [dir] [--name "Name"] [--id slug] [--archetype name] [--premise "one line"] [--look slug] [--force]`: the
13
+ id defaults to the name in lowercase-hyphen form (or the directory's name);
14
+ a directory that is not empty is refused unless `--force` is given.
15
+ `--archetype` starts from a complete game of `templates/archetypes/`
16
+ instead of the template: `runner`, `match3`, `topdown`, `tower-defense`,
17
+ `roguelike`, `idle`, `rhythm` or `third-person` (the published package carries them under
18
+ `archetypes/`).
19
+
20
+ Every game gets its look: `assets/looks/<id>.ogt`, an `.ogt` of `type look`
21
+ (og-taste §12 of the knowledge package) that `GameDesc.look` in the entry
22
+ names, applied before `start` runs. It `extends` a preset of the style
23
+ catalogue (`packages/knowledge/looks/catalogue.json`, 37 styles):
24
+
25
+ - `--look <slug>` names it (`anime-cel-3d`, `16bit-pixel`, …; a slug with
26
+ no preset is refused, listing those that have one);
27
+ - `--premise "<one line>"` picks the style whose premise fits best (a word
28
+ of the premise in a style's genre counts 3, in its mood 2, in its era,
29
+ audience, name or descriptor 1; a tie goes to a style the engine draws
30
+ whole, then to catalogue order). On a terminal, with neither flag, create
31
+ asks for the premise (`--no-prompt` does not);
32
+ - otherwise the template's own look stays: the plain template extends
33
+ `faceted-low-poly`, the idle archetype carries its skin and render
34
+ settings, and the other archetypes get a look that extends nothing (their
35
+ frames stay as their `references/` recorded them).
36
+
37
+ The template's look file is renamed to the game's id, the blocks it sets
38
+ are kept under the chosen preset (they win field by field), and an entry
39
+ that names no look gets `look: "looks/<id>.ogt"` after `export default
40
+ og.game({`. The game's README gains a "The look" section: where the file
41
+ is, what it extends and how to change it. For an archetype, a preset moves
42
+ the frames its `references/` hold; create says so and how to record them
43
+ again.
44
+
45
+ The published package carries the template under `template/` and the style
46
+ catalogue under `looks/`, copied by the `prepack` script
47
+ (`scripts/pack-template.ts`); build output (`cooked/`,
48
+ `dist/`, `node_modules/`) is never copied. The template's `gitattributes`
49
+ (media through Git LFS) is written as the project's `.gitattributes`: under
50
+ its own name it would route the engine repository's plain-blob media through
51
+ LFS too. `bun run test` scaffolds into a
52
+ temporary directory and checks the result.
53
+
54
+ Note on the name: npm maps `npm create @origingame/game` to the package
55
+ `@origingame/create-game` and `npm create @origingame` to `@origingame/create-game`.
56
+ This package is `@origingame/create-game` (design §9); publishing it also as
57
+ `@origingame/create-game`, or documenting `npm create @origingame`, is the
58
+ publisher's choice.
@@ -0,0 +1,99 @@
1
+ # Archetypes
2
+
3
+ Complete games a Maker starts from, each a project like `templates/game`
4
+ (`project.ogt`, `src/`, `assets/`, `tests/`, `package.json`,
5
+ `tsconfig.json`) that `og run`, `og test` and `og build` take as is. They
6
+ rebuild the platform's six Godot Discover prototypes on Origin Engine,
7
+ keeping each prototype's premise and lessons and none of its code or art,
8
+ and add a top-down room built for the engine's 2D and game-feel modules
9
+ and a third-person vale, the engine's mid-size 3D slice.
10
+
11
+ | Directory | Game | Profile | Input | Core loop |
12
+ |---|---|---|---|---|
13
+ | `runner/` | Rooftop Run | 2d | one button: tap to hop, hold to jump | read the next crate or fence, time the jump, keep the pace |
14
+ | `match3/` | Tile Swap | 2d | taps or drags | spot a line, swap, chase the cascade, beat the target in the moves |
15
+ | `topdown/` | Tomb Room | 2d | WASD or arrows, Space to strike, Shift to dash | cross two rooms of a Tiled map, beat the slime, collect the coins and the key, open the door |
16
+ | `tower-defense/` | Path Guard | 2d | taps, or the arrows and Space, or a pad | pick a plant, set it on the lawn, watch the visitors re-route round it, hold five waves |
17
+ | `roguelike/` | Lamp Dive | 2d | the arrows or WASD, a tap on the next cell, a pad, or the HUD's d-pad | step a turn at a time through a fresh tomb, strike what the lamp shows, take what it finds, reach the relic on floor 2 with one life |
18
+ | `idle/` | Spark Orb | 2d | taps or Space on the orb, 1–4 or the cards to buy, a pad | tap for sparks, buy generators that make them, double each kind every tenth, collapse into a supernova for stardust, come back to what it made while away |
19
+ | `rhythm/` | Three-Lane Beat | 2d | A S D or the arrows, fingers on the lanes, a pad | read the notes falling to the line, hit each on its time, keep the combo and the groove, clear the song |
20
+ | `third-person/` | Ember Vale | 3d | WASD or the arrows, Shift, Space, hold F, Q and E; a pad; a touch joystick, Jump and Kindle | walk, wade and jump a lake vale at dusk, kindle four beacons before night while stone sentinels on their rounds hunt you |
21
+
22
+ Each archetype's README has its rules, components, systems, tunables, the
23
+ commands its playtests use and what a Maker changes first.
24
+
25
+ ## What they share (and what each owns)
26
+
27
+ - **Pixel-art sprites, flipbooks and tilemaps.** `tools/make-assets.py`
28
+ draws every sheet texel by texel (standard library only, through its
29
+ `tools/oglite.py`, the same file in every archetype) and writes its
30
+ `type flipbook` sheet (clips, modes, frame events), the tilesets and maps, and a `texture { kind pixel }`
31
+ import for each PNG; two runs give the same bytes. Drawn entities carry
32
+ `og.Sprite` (y-sorted, blob shadows) and play `og.Flipbook` clips; the
33
+ runner's skyline is three parallax `og.Tilemap` strips, the board's
34
+ checker a tilemap, the tomb a Tiled `.tmj` with 47-blob auto-tiled walls
35
+ and merged colliders. The same script makes the sounds and subsets a
36
+ font to the HUD's characters.
37
+ - **Game feel from the engine.** `og.tween` (with the squash and flash
38
+ presets and completion events by tag), `og.time.hitStop`,
39
+ `og.camera.shake`/`kick`/`punch`, `og.render.floatingText` and
40
+ `og.Afterimage`; each README's Feel table names where each is used and
41
+ how much. The amounts follow the og-feel skill.
42
+ - **One row shape.** Every drawn entity carries the same components, and
43
+ the round's state and tuning ride on every row with one row (the runner,
44
+ the board) as the authority: a system sees one query and cannot reach
45
+ another entity or a game resource yet. Each README says how this changes
46
+ once it can. The four later archetypes (tower-defense, roguelike, idle,
47
+ rhythm) keep the play in game resources (`Game`, `Tuning`, `Prefs`)
48
+ that every system reads and writes; a system still writes only the rows
49
+ its query declares, so what another system's rows must show is asked for
50
+ through a resource field and done by the owner the same tick.
51
+ - **The platform and the screens.** The later four keep their settings
52
+ through `og.platform.loadSettings`/`saveSettings` and a record (a best,
53
+ a save) in the store at the revision read, merged after a stale write;
54
+ their title, pause, settings and end cards are og-ui widgets on a
55
+ recoloured style pack from `templates/ui-kit`, with every string in
56
+ `assets/strings/en.ogt` and `zh-CN.ogt`, and a phone layout inside the
57
+ safe area. Their `og polish` reports are in the engine repository's
58
+ `tests/evidence/P2/archetypes/`.
59
+ - **The 3D one.** `third-person/` is the exception to the pixel-art
60
+ sprites: a heightmap terrain with water, the engine's CC0 humanoids on
61
+ og.CharacterController with blend trees and IK, navmesh sentinels on
62
+ og.ai, particles, decals and the post stack, on the fantasy style pack
63
+ (its README).
64
+ - **The look as data.** `idle/` names its frame treatment and skin in
65
+ `assets/looks/idle.ogt` through `GameDesc.look` (og-taste §12); the
66
+ others set theirs in `start` until they move to a look. A look that
67
+ extends a catalogue preset changes the frames, so `references/` are
68
+ recorded again with it.
69
+ - **Pools, not spawning in systems.** Obstacles, coins and tiles are spawned
70
+ in `start` and recycled by systems.
71
+ - **Tunables.** The `Tuning` block (the scene's, or the component's
72
+ defaults in the topdown) holds them; `set:<entity>.Tuning.<field>=<value>` and Tune write
73
+ them live.
74
+ - **Playtests through real input.** `tests/*.og.ts` drive keys, taps and
75
+ drags through the command channel, plus a game command or two (`place`,
76
+ `deal`, `swap`) for states a test needs at once, and assert on
77
+ `dump_entity` of the authority row. `tests/frames.og.ts` compares frames
78
+ with `references/<tier>/` (`OG_FX_CAPTURE=1 og test .` records them) and
79
+ `tests/replay.og.ts` runs the same input twice in fresh processes and
80
+ requires one world hash. `og test .` runs them.
81
+
82
+ ## Scaffolding one
83
+
84
+ `@origingame/create-game` scaffolds `templates/game`, or an archetype with
85
+ `--archetype <directory>`:
86
+
87
+ ```sh
88
+ bun packages/create/bin/create.ts my-dive --archetype roguelike --name "My Dive" # in the engine repository
89
+ cd my-dive && bun install && og test . && og run .
90
+ ```
91
+
92
+ It copies the directory (without `cooked/`, `dist/`, `og-out/` and
93
+ `.og/`), sets `name` and `id` in `project.ogt` and `package.json`, and
94
+ writes the archetype's `gitattributes` (media through Git LFS) as
95
+ `.gitattributes`. It gives the game its look, `assets/looks/<id>.ogt`
96
+ named by `GameDesc.look` (the archetype's own carried over, or one that
97
+ sets nothing), and `--look <slug>` or `--premise "<line>"` makes it extend
98
+ a catalogue preset: the archetype's reference frames then no longer match,
99
+ and create says to record them again (`packages/create/README.md`).
@@ -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,12 @@
1
+ # Asset licences
2
+
3
+ | File | Licence | Origin |
4
+ |---|---|---|
5
+ | `assets/sprites/*.png`, `assets/sprites/*.ogt` | CC0 1.0 | self-made: the orb (computed per pixel), the glow, the spark and the four motes, by `tools/make-assets.py` (standard library only, deterministic), with their import settings |
6
+ | `assets/fx/*.ogt` | CC0 1.0 | self-made: the tap, milestone, supernova, drift and stars emitters, same script |
7
+ | `assets/audio/*.wav` | CC0 1.0 | self-made: synthesised bells, tones and noise and the orbit's music loop, same script |
8
+ | `assets/audio/*.ogt` | CC0 1.0 | `og sfx` presets (click, select, back, error, levelup) that `og cook` synthesises, written by the same script |
9
+ | `assets/strings/*.ogt` | CC0 1.0 | self-made: the English and Chinese string tables |
10
+ | `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` |
11
+ | `assets/skins/sparkorb/*` | CC0 1.0 art, SIL OFL 1.1 fonts | the engine's neon style pack (`templates/ui-kit/assets/skins/neon`, `assets/skins/sparkorb/LICENSES.md`) with this game's palette; `atlas.png` is the pack's atlas with its magenta frames turned violet by the same script |
12
+ | `references/*/*.png` | CC0 1.0 | frames of this game recorded by `tests/frames.og.ts` |
@@ -0,0 +1,234 @@
1
+ # Spark Orb — the idle archetype (2D)
2
+
3
+ A glowing orb in the night. Tap it for sparks; spend them on generators
4
+ (embers, storms, crystals, stars) that make sparks on their own and circle
5
+ the orb as motes; every tenth of a kind doubles that kind. When a run has
6
+ made enough, the orb can collapse into a supernova: the sparks and the
7
+ generators go, stardust stays, and every stardust makes everything 10 %
8
+ stronger. Close the game and come back: the orb kept going at half its
9
+ rate while you were away.
10
+
11
+ 星火球:夜空里一颗发光的球。点它得到火花;用火花购买生成器(余烬、风暴、晶簇、星辰),它们会自己产出火花,并化作光点绕着星火球转;同一种每满十个,产出翻倍。一轮攒够了,星火球可以坍缩成超新星:火花和生成器都会消失,留下星尘,每一点星尘让一切产出提升 10%。关掉游戏再回来:你离开的这段时间,星火球以一半的速度继续产出。
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
+ idle prototype on the engine: its premise (one big tap target, generators,
17
+ prestige, progress while away) 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:play;0.5:own:0:12;0.5:own:1:4;1.5:screenshot:orb.png;1.6: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
+ - **An economy as pure functions** (og-core §1, §5): prices, rates,
30
+ milestones, the tap's value, the supernova's stardust and the time away's
31
+ credit are functions of the counts and `Tuning` in `src/numbers.ts`, so
32
+ the systems, the HUD and the save's merge agree on every number, and
33
+ `set:Tuning.<field>` retunes the curve live.
34
+ - **Generators and prestige**: four generators at a price growing 15 % per
35
+ purchase, a doubling every tenth of a kind, the supernova (sparks and
36
+ generators reset, stardust kept, +10 % to everything per stardust), and
37
+ the run's card.
38
+ - **Progress while away through og.platform's store** (og-platform-sdk
39
+ §1–§4): the save (`orb`) is written at the revision read every 10 s of
40
+ play, on pause, on quitting to the title and after a supernova; on launch
41
+ it is read back and the time away credited at half the rate (capped at
42
+ eight hours) with a welcome back; a write refused as stale (another
43
+ device played meanwhile) is read again and the save with more lifetime
44
+ sparks kept and written back. The time away is the host's to give: the
45
+ save carries `og.platform.now` when it was written, and the store
46
+ answer's `time` (the host's clock, as host input like a key press) less
47
+ that is how long the game was closed.
48
+ - **Big numbers in the locale's words** (og-i18n §1–§5): `big` in
49
+ `src/numbers.ts` reads the unit size and the units from the string
50
+ tables, so English groups by thousands (`9,999`, `12.3K`, `1.20M`,
51
+ `4.56e15`) and Chinese by ten-thousands (`12.3万`, `1.23亿`, `4.56亿亿`);
52
+ `{n, number}` groups the small ones. Every string is a key of
53
+ `assets/strings/en.ogt` and `zh-CN.ogt`; the Chinese font is Noto Sans SC
54
+ subset to exactly the table's characters.
55
+ - **A satisfying tap** (og-feel §5–§7, §9): the orb squashes and flashes,
56
+ the sparks made rise from where the finger landed, a burst of sparks is
57
+ thrown out, and the chime climbs a quarter tone a tap through a quick run
58
+ of taps (twelve at most), the number turning gold and bigger from the
59
+ eighth. A
60
+ purchase floats the rate it added from the ring its mote joins; a
61
+ milestone flings a ring of sparks, punches the camera and plays a
62
+ fanfare; the supernova bursts 200 sparks, holds the world 10 ticks,
63
+ shakes and punches it.
64
+ - **og.ui counters on the tokens** (og-ui §2–§6, og-taste §1–§7): the
65
+ engine's neon pack recoloured as `assets/skins/sparkorb` (the orb's gold
66
+ as the one accent on night violet: a burnished amber under the buttons'
67
+ cream labels, the bright gold `accentInk` for gold words and icons); the wallet and the rate top left, the
68
+ stardust (an `og.ui.counter`) and Pause top right, the four generators
69
+ along the bottom (a touch-sized button each, the count of each an
70
+ `og.ui.counter`, the price in gold when it can be paid), the supernova's
71
+ progress (`og.ui.meter`) then its button, a card that shakes with the
72
+ error sound when its purchase is refused and bursts at a milestone,
73
+ `og.ui.pauseMenu`, a settings dialog, the supernova's question, its card
74
+ and the welcome back built from widgets, an iris between screens (a fade
75
+ with reduced motion).
76
+ - **Sound** (og-audio §1–§5): the tap's chime on the ui bus (the orb is
77
+ the game's one big button), a purchase's bell, a milestone's arpeggio,
78
+ the supernova's boom, the UI's sounds from `og sfx` presets, and a slow
79
+ 72 BPM loop of pads and bells on the music bus ducked under the effects.
80
+
81
+ `og polish .` (2026-10-19, og and the native addon built release from
82
+ this checkout, load 28): taste 97, feel 94 (frame time 81: the p95 follows
83
+ the machine's load, `tests/evidence/P2/archetypes/frame-time.md`; the
84
+ median step and render are 2 ms each), in
85
+ `tests/evidence/P2/archetypes/idle/` of the engine repository. Hit feedback
86
+ is n/a: nothing here takes damage.
87
+
88
+ ## Rules
89
+
90
+ - **Taps.** A press on the orb, Space, Enter or the pad's A makes the
91
+ tap's sparks: 1 (times the stardust's multiplier) plus 5 % of the rate.
92
+ - **Generators.** 1–4, a card's button, or the pad's X on the one the
93
+ d-pad (or the arrows) chose buys the next one at its price.
94
+
95
+ | Generator | Makes | First price |
96
+ |---|---|---|
97
+ | Ember | 0.5 a second | 15 |
98
+ | Storm | 4 a second | 110 |
99
+ | Crystal | 26 a second | 1,200 |
100
+ | Star | 160 a second | 13,000 |
101
+
102
+ Each one bought makes the next 15 % dearer; every tenth of a kind
103
+ doubles what that kind makes. A purchase the sparks cannot cover is
104
+ refused and costs nothing.
105
+ - **Supernova.** Stardust is the floor of the square root of the run's
106
+ sparks over 100,000 (one at 100,000, two at 400,000, three at 900,000…).
107
+ N, the pad's Y or the Supernova button asks; Collapse resets the sparks
108
+ and the generators, keeps the stardust, and shows the run's card.
109
+ - **Away.** On launch, the save's rate times half the seconds away (at most
110
+ eight hours) is added, with a welcome back.
111
+
112
+ Everything is deterministic: the clock is the fixed tick, the numbers are
113
+ pure functions, the stars come from an og.Rng stream forked by name, and
114
+ `tests/replay.og.ts` replays a run to the same hash.
115
+
116
+ ## How it feels
117
+
118
+ | Moment | What happens | Where |
119
+ |---|---|---|
120
+ | a tap | the orb squashes 1.12 × 0.9 and flashes, `+n` rises from the tap (gold and bigger from the eighth quick tap), 12 sparks burst out, a bell climbing a quarter tone per quick tap | `Orb`, `Bursts`, `Voices` |
121
+ | a purchase | the rate it adds floats up from its ring in the generator's colour, a mote joins the ring, a bright bell | `purchase`, `Motes` |
122
+ | a refusal | the card shakes with the error sound | `hud` |
123
+ | a milestone | `Storm ×2!` over the orb, a ring of 48 sparks, a 0.06 punch, a burst from the card, an arpeggio | `purchase`, `hud` |
124
+ | the supernova | 200 sparks, a 10-tick hit stop, trauma 0.6, a 0.2 punch, a boom; an iris to the run's card | `nova`, `Ui` |
125
+ | idle | the orb breathes, sparks drift up off it, motes circle on four rings at their own speeds, stars twinkle | `Orb`, `Motes`, `fx/drift.ogt`, `fx/stars.ogt` |
126
+
127
+ ## State
128
+
129
+ | Type | Kind | What it holds |
130
+ |---|---|---|
131
+ | `Game` | resource | the phase, the sparks (now, this run, ever), the generators owned, stardust and supernovas, the rate and the tap's value, the counts (taps, purchases, refusals), the chosen generator, the dialogs, the time away and its credit, the save's requests and revision, sound and burst requests |
132
+ | `Tuning` | resource | the knobs below |
133
+ | `Prefs` | resource | the volumes, the language, reduced motion, the settings request |
134
+ | `Orb` | the orb | its taps |
135
+ | `Mote` | the 48 motes | the generator and the place in its ring |
136
+ | `Burst` | the burst pools | the kind |
137
+ | `Sfx` | one row per sound | its `Sound.*` bit, its plays |
138
+
139
+ ## Systems (in tick order)
140
+
141
+ | System | Job |
142
+ |---|---|
143
+ | `Ui` | the screens, the camera for the surface, the buses, the pause and the supernova's keys, the platform's answers, the save |
144
+ | `Orb` | taps (a press on the orb, Space, Enter, the pad's A), the orb's breath and squash |
145
+ | `Economy` | the generators' sparks, choosing and buying, refusals, milestones, the supernova |
146
+ | `Motes` | one mote per generator owned (twelve a kind at most) on its ring |
147
+ | `Bursts` | fires the burst asked for this tick from its pool |
148
+ | `Voices` | plays each requested sound once |
149
+
150
+ ## Tunables (`Tuning`)
151
+
152
+ | Field | Default | What it changes |
153
+ |---|---|---|
154
+ | `emberRate`, `emberCost` … `starRate`, `starCost` | 0.5, 15; 4, 110; 26, 1,200; 160, 13,000 | each generator |
155
+ | `costGrowth` | 1.15 | how much dearer each one bought makes the next |
156
+ | `milestone` | 10 | every this many of a kind doubles it |
157
+ | `tapBase`, `tapShare` | 1, 0.05 | the tap: a base, plus seconds of the rate |
158
+ | `dustBonus`, `novaScale` | 0.1, 100,000 | stardust's worth, and the run sparks its first one needs |
159
+ | `offlineShare`, `offlineCap` | 0.5, 28,800 s | the time away's credit |
160
+ | `saveEvery` | 600 ticks | how often play saves |
161
+
162
+ ## What a Maker changes first
163
+
164
+ 1. **The curve**: the generators' numbers and `costGrowth` in `Tuning`;
165
+ `src/numbers.ts` is the whole economy.
166
+ 2. **More generators**: a name in `GENERATORS`, its strings, an icon in
167
+ `ICONS` (src/ui.ts), a case in `base`, a mote in `tools/make-assets.py`,
168
+ an `owned<n>` field.
169
+ 3. **Prestige**: `novaGain`, `dustMultiplier`.
170
+ 4. **The look**: `assets/looks/idle.ogt` (named by `GameDesc.look`) holds
171
+ the frame's treatment and names the skin; `extends "<slug>"` there
172
+ starts from a style of the catalogue (og-taste §12), and the reference
173
+ frames are then recorded again (`OG_FX_CAPTURE=1 og test .`). The
174
+ skin's palette is `assets/skins/sparkorb/skin.ogt`, the art
175
+ `tools/make-assets.py`: `python3 tools/make-assets.py && og cook .`.
176
+ 5. **Words and numbers**: `assets/strings/*.ogt` (a locale's `num.step`
177
+ and units make its big numbers); a new Chinese string needs the script
178
+ run again to subset the font.
179
+
180
+ ## Commands (for scripts and agents)
181
+
182
+ | Action | Does |
183
+ |---|---|
184
+ | `play` | from the title to the orb, as Play does |
185
+ | `sparks:<n>` | sets the sparks (the rise counts as made this run) |
186
+ | `own:<generator 0-3>:<n>` | sets how many of a generator are owned |
187
+ | `supernova` | collapses now, as Collapse does (refused under one stardust) |
188
+ | `relaunch:<seconds>` | closes and reopens the game that much later in this process (for tests; a real launch reads the time away from the host's clock): the save read again, the time away credited |
189
+ | `stale_save` | another device writes a save with more progress |
190
+ | `viewport:<desktop\|phone>` | lays the UI out for a phone in portrait (390 × 844 at 3×) |
191
+ | `language:<en\|zh-CN>` | switches the language |
192
+ | core actions | `touch_move_to:play`, `Shop/Gen#0/Buy`…, `Nova/Supernova`, `Collapse`, `Later`, `Again`, `Collect`, `Pause`; `Space`, `Enter`, `1`–`4`, arrows, `B`, `N`, `Escape`; `gamepad:a` … |
193
+
194
+ `facts` (the probe's `state()`) reports the phase, the sparks, the rate,
195
+ the tap's value, the generators owned, stardust, supernovas, the run's and
196
+ the lifetime's sparks, taps, purchases, refusals, saves, stale writes, the
197
+ last time away's credit and the language. The playtests read the same
198
+ values from the `Game` resource with `get:Game`.
199
+
200
+ ## Playtests (`og test .`)
201
+
202
+ | File | Proves |
203
+ |---|---|
204
+ | `tests/flow.og.ts` | Play; clicks on the orb, Space and Enter make a spark each and a click beside it none; 1 and the card's button buy embers at 15 and 18; the embers make a spark a second; a Star too dear is refused |
205
+ | `tests/milestone.og.ts` | the tenth Storm doubles storms (36 → 80 a second); the wallet reads `1.23M` |
206
+ | `tests/nova.og.ts` | N asks, Not yet keeps everything, Supernova and Collapse reset the run for one stardust, the card shows the run, Ignite again runs 10 % stronger; the telemetry and the save |
207
+ | `tests/offline.og.ts` | Escape saves; `relaunch:7200` reads it back with Continue on the title and a welcome back of 64.8K sparks for two hours at half of 18 a second; a stale write is merged, the other device's progress kept |
208
+ | `tests/away.og.ts` | two processes over one kept store (`store: "keep"`): ten embers and two storms saved by Escape at the first run's host time; the second launches two hours later by its own clock, offers Continue and welcomes back two hours at half of 18 a second, with no relaunch command |
209
+ | `tests/pause.og.ts` | Escape holds the orb (time scale 0); settings switch to 简体中文 and move the music; Done saves; numbers read `1.23亿` and `每秒 +2`; Resume; Quit writes the save on the title |
210
+ | `tests/pad.og.ts` | a gamepad alone plays, taps, chooses, buys, is refused, asks for and declines the supernova, pauses and resumes |
211
+ | `tests/phone.og.ts` | 390 × 844 at 3×: the wallet and Pause below the notch, the generators above the home bar with touch-sized buttons, taps on the orb, a card bought |
212
+ | `tests/frames.og.ts` | the title, the orb with every kind of mote and the supernova's card match `references/<tier>/` (`OG_FX_CAPTURE=1 og test .` records them) |
213
+ | `tests/replay.og.ts` | a run with taps, purchases and a milestone, run twice, ends on one hash |
214
+
215
+ Each one fails when the behaviour it names is broken (one was broken on
216
+ purpose and restored: `tests/evidence/P2/archetypes/break-and-restore.md`
217
+ in the engine repository).
218
+
219
+ ## Assets
220
+
221
+ `tools/make-assets.py` regenerates every asset byte for byte (two runs
222
+ give the same bytes): the orb, the glow, the spark and the motes, the
223
+ emitters, the sounds and the music, the `og sfx` preset files of the UI's
224
+ sounds, the font subset and the skin's recoloured atlas. `LICENSES.md`
225
+ lists them; the skin's are in `assets/skins/sparkorb/LICENSES.md`.
226
+
227
+ ## Known limits (engine gaps, not design)
228
+
229
+ - og.ui's `idleHud` writes `Lv` and `/s` and formats numbers in English of
230
+ its own, and fills a 340 px panel, so this game builds its HUD from
231
+ widgets to keep every word and number in its tables.
232
+ - og.ui's `counter` counts again from where it is on every change, so the
233
+ sparks, which change every tick, are a label; the counters show what
234
+ jumps (the stardust, the generators owned).
@@ -0,0 +1,9 @@
1
+ type sfx
2
+ version 1
3
+ ---
4
+ # og sfx's "back" preset, synthesised by og cook (the UI's close sound).
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 (the UI's error sound).
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 (the UI's open sound).
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 (the UI's press sound).
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 (the UI's success sound).
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,21 @@
1
+ type particles
2
+ version 1
3
+ ---
4
+ # Sparks drifting up off the orb's skin, always.
5
+ maxParticles 60
6
+ shape sphere 1.2
7
+ rate 14
8
+ lifetime 1.2 2.2
9
+ speed 0.2 0.6
10
+ size 0.06 0.14
11
+ sizeOverLife 0 0.4 0.3 1 1 0
12
+ colorOverLife {
13
+ key 0 1 0.85 0.5 0
14
+ key 0.2 1 0.75 0.35 0.9
15
+ key 1 1 0.4 0.15 0
16
+ }
17
+ gravity 0 0.6 0
18
+ noise 0.4 0.5 0.4
19
+ texture "sprites/spark.png"
20
+ blend additive
21
+ render sprite 2
@@ -0,0 +1,21 @@
1
+ type particles
2
+ version 1
3
+ ---
4
+ # A milestone: a ring of sparks flung out from the orb.
5
+ maxParticles 72
6
+ shape sphere 0.3
7
+ spread 180
8
+ burst 0 48
9
+ duration 0.1
10
+ lifetime 0.5 0.8
11
+ speed 3 4.5
12
+ size 0.12 0.24
13
+ sizeOverLife 0 1 1 0
14
+ colorOverLife {
15
+ key 0 1 1 0.85 1
16
+ key 1 1 0.55 0.2 0
17
+ }
18
+ drag 1.8
19
+ texture "sprites/spark.png"
20
+ blend additive
21
+ render sprite 21