@origingame/create-game 0.2.0 → 0.3.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 (157) hide show
  1. package/README.md +2 -2
  2. package/archetypes/README.md +1 -0
  3. package/archetypes/arena/.origin/setup +14 -0
  4. package/archetypes/arena/LICENSES.md +8 -0
  5. package/archetypes/arena/README.md +67 -0
  6. package/archetypes/arena/assets/audio/coin.ogt +9 -0
  7. package/archetypes/arena/assets/audio/dash.ogt +9 -0
  8. package/archetypes/arena/assets/audio/win.ogt +9 -0
  9. package/archetypes/arena/assets/fx/coin.ogt +20 -0
  10. package/archetypes/arena/assets/looks/arena.ogt +10 -0
  11. package/archetypes/arena/gitattributes +22 -0
  12. package/archetypes/arena/gitignore +8 -0
  13. package/archetypes/arena/host.d.ts +46 -0
  14. package/archetypes/arena/package.json +18 -0
  15. package/archetypes/arena/project.ogt +14 -0
  16. package/archetypes/arena/src/game.ts +314 -0
  17. package/archetypes/arena/src/main.ts +100 -0
  18. package/archetypes/arena/tests/duel.og.ts +32 -0
  19. package/archetypes/arena/tests/solo.og.ts +22 -0
  20. package/archetypes/arena/tsconfig.json +17 -0
  21. package/archetypes/idle/LICENSES.md +1 -1
  22. package/archetypes/idle/README.md +3 -3
  23. package/archetypes/idle/assets/looks/idle.ogt +1 -1
  24. package/archetypes/idle/assets/{skins → styles}/sparkorb/LICENSES.md +4 -4
  25. package/archetypes/idle/assets/{skins/sparkorb/skin.ogt → styles/sparkorb/style.ogt} +47 -47
  26. package/archetypes/idle/package.json +1 -1
  27. package/archetypes/idle/project.ogt +1 -1
  28. package/archetypes/idle/references/metal/card.png +0 -0
  29. package/archetypes/idle/references/metal/orbit.png +0 -0
  30. package/archetypes/idle/references/metal/title.png +0 -0
  31. package/archetypes/idle/src/main.ts +2 -2
  32. package/archetypes/idle/src/ui.ts +11 -11
  33. package/archetypes/idle/tools/make-assets.py +4 -4
  34. package/archetypes/match3/package.json +1 -1
  35. package/archetypes/match3/project.ogt +1 -1
  36. package/archetypes/rhythm/LICENSES.md +1 -1
  37. package/archetypes/rhythm/README.md +3 -3
  38. package/archetypes/rhythm/assets/{skins → styles}/lanebeat/LICENSES.md +4 -4
  39. package/archetypes/rhythm/assets/{skins/lanebeat/skin.ogt → styles/lanebeat/style.ogt} +45 -45
  40. package/archetypes/rhythm/package.json +1 -1
  41. package/archetypes/rhythm/project.ogt +1 -1
  42. package/archetypes/rhythm/references/metal/results.png +0 -0
  43. package/archetypes/rhythm/references/metal/title.png +0 -0
  44. package/archetypes/rhythm/src/main.ts +2 -2
  45. package/archetypes/rhythm/src/ui.ts +11 -11
  46. package/archetypes/roguelike/LICENSES.md +1 -1
  47. package/archetypes/roguelike/README.md +3 -3
  48. package/archetypes/roguelike/assets/{skins → styles}/lampdive/LICENSES.md +4 -4
  49. package/archetypes/roguelike/assets/{skins/lampdive/skin.ogt → styles/lampdive/style.ogt} +41 -41
  50. package/archetypes/roguelike/package.json +1 -1
  51. package/archetypes/roguelike/project.ogt +1 -1
  52. package/archetypes/roguelike/references/metal/over.png +0 -0
  53. package/archetypes/roguelike/references/metal/title.png +0 -0
  54. package/archetypes/roguelike/src/main.ts +2 -2
  55. package/archetypes/roguelike/src/ui.ts +7 -7
  56. package/archetypes/runner/package.json +1 -1
  57. package/archetypes/runner/project.ogt +1 -1
  58. package/archetypes/third-person/LICENSES.md +1 -1
  59. package/archetypes/third-person/README.md +3 -3
  60. package/archetypes/third-person/assets/{skins → styles}/ember/LICENSES.md +2 -2
  61. package/archetypes/third-person/assets/{skins/ember/skin.ogt → styles/ember/style.ogt} +40 -41
  62. package/archetypes/third-person/package.json +1 -1
  63. package/archetypes/third-person/project.ogt +1 -1
  64. package/archetypes/third-person/references/metal/beacon.png +0 -0
  65. package/archetypes/third-person/references/metal/dawn.png +0 -0
  66. package/archetypes/third-person/references/metal/title.png +0 -0
  67. package/archetypes/third-person/references/webgl2/beacon.png +0 -0
  68. package/archetypes/third-person/src/main.ts +2 -2
  69. package/archetypes/third-person/src/ui.ts +10 -10
  70. package/archetypes/topdown/package.json +1 -1
  71. package/archetypes/topdown/project.ogt +1 -1
  72. package/archetypes/tower-defense/LICENSES.md +1 -1
  73. package/archetypes/tower-defense/README.md +5 -5
  74. package/archetypes/tower-defense/assets/{skins → styles}/pathguard/LICENSES.md +4 -4
  75. package/archetypes/tower-defense/assets/styles/pathguard/atlas.png +0 -0
  76. package/archetypes/tower-defense/assets/styles/pathguard/style.ogt +111 -0
  77. package/archetypes/tower-defense/package.json +1 -1
  78. package/archetypes/tower-defense/project.ogt +1 -1
  79. package/archetypes/tower-defense/references/metal/end.png +0 -0
  80. package/archetypes/tower-defense/references/metal/title.png +0 -0
  81. package/archetypes/tower-defense/references/metal/wave.png +0 -0
  82. package/archetypes/tower-defense/src/main.ts +2 -2
  83. package/archetypes/tower-defense/src/ui.ts +19 -17
  84. package/bin/create.ts +11 -8
  85. package/looks/catalogue.json +40 -40
  86. package/package.json +1 -1
  87. package/template/README.md +2 -1
  88. package/template/assets/audio/sting.ogt +10 -0
  89. package/template/assets/timelines/intro.ogt +101 -0
  90. package/template/assets/timelines/narration.srt +11 -0
  91. package/template/host.d.ts +46 -0
  92. package/template/package.json +1 -1
  93. package/template/project.ogt +1 -1
  94. package/template/references/metal/intro-4.png +0 -0
  95. package/template/references/metal/intro-8.png +0 -0
  96. package/template/src/main.ts +1 -1
  97. package/template/tests/frames.ts +134 -0
  98. package/template/tests/intro.og.ts +65 -0
  99. package/template/tests/smoke.og.ts +30 -36
  100. package/template/tsconfig.json +1 -1
  101. package/template-2d/LICENSES.md +1 -0
  102. package/template-2d/README.md +5 -2
  103. package/template-2d/assets/rigs/keeper.ogt +292 -0
  104. package/template-2d/assets/rigs/keeper.png +0 -0
  105. package/template-2d/assets/rigs/keeper.png.ogt +7 -0
  106. package/template-2d/package.json +1 -1
  107. package/template-2d/project.ogt +1 -1
  108. package/template-2d/src/main.ts +159 -4
  109. package/template-2d/tests/keeper.og.ts +93 -0
  110. package/archetypes/tower-defense/assets/skins/pathguard/atlas.png +0 -0
  111. package/archetypes/tower-defense/assets/skins/pathguard/skin.ogt +0 -111
  112. /package/archetypes/idle/assets/{skins → styles}/sparkorb/ChakraPetch-BoldItalic.ttf +0 -0
  113. /package/archetypes/idle/assets/{skins → styles}/sparkorb/ChakraPetch-BoldItalic.ttf.ogt +0 -0
  114. /package/archetypes/idle/assets/{skins → styles}/sparkorb/OFL.txt +0 -0
  115. /package/archetypes/idle/assets/{skins → styles}/sparkorb/Orbitron-Medium.ttf +0 -0
  116. /package/archetypes/idle/assets/{skins → styles}/sparkorb/Orbitron-Medium.ttf.ogt +0 -0
  117. /package/archetypes/idle/assets/{skins → styles}/sparkorb/Rajdhani-Bold.ttf +0 -0
  118. /package/archetypes/idle/assets/{skins → styles}/sparkorb/Rajdhani-Bold.ttf.ogt +0 -0
  119. /package/archetypes/idle/assets/{skins → styles}/sparkorb/atlas.png +0 -0
  120. /package/archetypes/idle/assets/{skins → styles}/sparkorb/atlas.png.ogt +0 -0
  121. /package/archetypes/idle/assets/{skins → styles}/sparkorb/icons.png +0 -0
  122. /package/archetypes/idle/assets/{skins → styles}/sparkorb/icons.png.ogt +0 -0
  123. /package/archetypes/rhythm/assets/{skins → styles}/lanebeat/ChakraPetch-Medium.ttf +0 -0
  124. /package/archetypes/rhythm/assets/{skins → styles}/lanebeat/ChakraPetch-Medium.ttf.ogt +0 -0
  125. /package/archetypes/rhythm/assets/{skins → styles}/lanebeat/JetBrainsMono-Regular.ttf +0 -0
  126. /package/archetypes/rhythm/assets/{skins → styles}/lanebeat/JetBrainsMono-Regular.ttf.ogt +0 -0
  127. /package/archetypes/rhythm/assets/{skins → styles}/lanebeat/OFL.txt +0 -0
  128. /package/archetypes/rhythm/assets/{skins → styles}/lanebeat/Orbitron-Bold.ttf +0 -0
  129. /package/archetypes/rhythm/assets/{skins → styles}/lanebeat/Orbitron-Bold.ttf.ogt +0 -0
  130. /package/archetypes/rhythm/assets/{skins → styles}/lanebeat/atlas.png +0 -0
  131. /package/archetypes/rhythm/assets/{skins → styles}/lanebeat/atlas.png.ogt +0 -0
  132. /package/archetypes/rhythm/assets/{skins → styles}/lanebeat/icons.png +0 -0
  133. /package/archetypes/rhythm/assets/{skins → styles}/lanebeat/icons.png.ogt +0 -0
  134. /package/archetypes/roguelike/assets/{skins → styles}/lampdive/DotGothic16-Regular.ttf +0 -0
  135. /package/archetypes/roguelike/assets/{skins → styles}/lampdive/DotGothic16-Regular.ttf.ogt +0 -0
  136. /package/archetypes/roguelike/assets/{skins → styles}/lampdive/OFL.txt +0 -0
  137. /package/archetypes/roguelike/assets/{skins → styles}/lampdive/atlas.png +0 -0
  138. /package/archetypes/roguelike/assets/{skins → styles}/lampdive/atlas.png.ogt +0 -0
  139. /package/archetypes/roguelike/assets/{skins → styles}/lampdive/icons.png +0 -0
  140. /package/archetypes/roguelike/assets/{skins → styles}/lampdive/icons.png.ogt +0 -0
  141. /package/archetypes/third-person/assets/{skins → styles}/ember/Cinzel-Bold.ttf +0 -0
  142. /package/archetypes/third-person/assets/{skins → styles}/ember/Cinzel-Bold.ttf.ogt +0 -0
  143. /package/archetypes/third-person/assets/{skins → styles}/ember/Newsreader-Medium.ttf +0 -0
  144. /package/archetypes/third-person/assets/{skins → styles}/ember/Newsreader-Medium.ttf.ogt +0 -0
  145. /package/archetypes/third-person/assets/{skins → styles}/ember/OFL.txt +0 -0
  146. /package/archetypes/third-person/assets/{skins → styles}/ember/atlas.png +0 -0
  147. /package/archetypes/third-person/assets/{skins → styles}/ember/atlas.png.ogt +0 -0
  148. /package/archetypes/third-person/assets/{skins → styles}/ember/icons.png +0 -0
  149. /package/archetypes/third-person/assets/{skins → styles}/ember/icons.png.ogt +0 -0
  150. /package/archetypes/tower-defense/assets/{skins → styles}/pathguard/Fredoka-SemiBold.ttf +0 -0
  151. /package/archetypes/tower-defense/assets/{skins → styles}/pathguard/Fredoka-SemiBold.ttf.ogt +0 -0
  152. /package/archetypes/tower-defense/assets/{skins → styles}/pathguard/LilitaOne-Regular.ttf +0 -0
  153. /package/archetypes/tower-defense/assets/{skins → styles}/pathguard/LilitaOne-Regular.ttf.ogt +0 -0
  154. /package/archetypes/tower-defense/assets/{skins → styles}/pathguard/OFL.txt +0 -0
  155. /package/archetypes/tower-defense/assets/{skins → styles}/pathguard/atlas.png.ogt +0 -0
  156. /package/archetypes/tower-defense/assets/{skins → styles}/pathguard/icons.png +0 -0
  157. /package/archetypes/tower-defense/assets/{skins → styles}/pathguard/icons.png.ogt +0 -0
@@ -1,52 +1,52 @@
1
- type skin
1
+ type style
2
2
  version 1
3
3
  ---
4
- # Three-Lane Beat's skin: the engine's sci-fi style pack (templates/ui-kit/tools/make-skins.py,
4
+ # Three-Lane Beat's skin: the engine's sci-fi style pack (templates/ui-kit/tools/make-styles.py,
5
5
  # CC0 art, OFL fonts; LICENSES.md) with this game's palette and its Chinese fallback font, by hand.
6
6
  name "lanebeat"
7
- base dark
8
- atlas "skins/lanebeat/atlas.png" 384 256
7
+ scheme dark
8
+ atlas "styles/lanebeat/atlas.png" 384 256
9
9
  scale 1
10
10
  palette {
11
- bg "#03080f"
12
- bgSubtle "#071220"
13
- surface "#0f2a3d"
14
- surfaceRaised "#0f2a3d"
15
- surfaceHover "#16384f"
16
- materialThick "#0f2a3d"
17
- materialRegular "#0f2a3de6"
18
- materialThin "#0f2a3dcc"
19
- fg "#e2f7ff"
20
- fgMuted "#a6cde0"
21
- fgSubtle "#8fb3c6"
22
- fgInverse "#03080f"
23
- fill "#3f8fb3"
24
- fillStrong "#5aaed4"
25
- border "#2c6a88"
26
- borderStrong "#6fd3f5"
27
- accent "#38e1ff"
28
- accentHover "#30d4f0"
29
- accentActive "#16c4e6"
30
- accentFg "#e2f7ff"
31
- accentInk "#7fecff"
32
- accentSoft "#38e1ff2a"
11
+ backdrop "#03080f"
12
+ well "#071220"
13
+ panel "#0f2a3d"
14
+ panelHover "#16384f"
15
+ panelRaised "#0f2a3d"
16
+ line "#2c6a88"
17
+ lineStrong "#6fd3f5"
18
+ ink "#e2f7ff"
19
+ inkMuted "#a6cde0"
20
+ inkFaint "#8fb3c6"
21
+ inkInverse "#03080f"
22
+ control "#3f8fb3"
23
+ controlStrong "#5aaed4"
24
+ primary "#38e1ff"
25
+ primaryHover "#30d4f0"
26
+ primaryActive "#16c4e6"
27
+ onPrimary "#e2f7ff"
28
+ primarySoft "#38e1ff2a"
29
+ highlight "#7fecff"
33
30
  focus "#ffd23f"
34
- thumb "#2f7194"
31
+ knob "#2f7194"
32
+ hud "#0f2a3d"
35
33
  scrim "#010409cc"
34
+ shadow "#00000099"
35
+ sheen "#ffffff52"
36
36
  success "#3dffa0"
37
37
  warn "#ffc53d"
38
38
  danger "#ff4d6a"
39
39
  info "#38e1ff"
40
- shadow "#00000099"
40
+ health "#3dffa0"
41
+ mana "#0a84ff"
42
+ xp "#bf5af2"
43
+ gold "#38e1ff"
41
44
  }
42
45
  radius {
46
+ small 2
43
47
  control 2
44
- field 2
45
- block 2
46
- card 2
48
+ bar 2
47
49
  panel 2
48
- sheet 2
49
- button 2
50
50
  }
51
51
  ramp {
52
52
  body 16 22
@@ -67,12 +67,12 @@ durations {
67
67
  slow 360
68
68
  }
69
69
  fonts {
70
- body "skins/lanebeat/ChakraPetch-Medium.ttf"
71
- display "skins/lanebeat/Orbitron-Bold.ttf"
72
- numeric "skins/lanebeat/JetBrainsMono-Regular.ttf"
70
+ body "styles/lanebeat/ChakraPetch-Medium.ttf"
71
+ display "styles/lanebeat/Orbitron-Bold.ttf"
72
+ numeric "styles/lanebeat/JetBrainsMono-Regular.ttf"
73
73
  fallback "fonts/NotoSansSC-subset.ttf"
74
74
  }
75
- icons "skins/lanebeat/icons.png" 8 4 {
75
+ icons "styles/lanebeat/icons.png" 8 4 {
76
76
  names "heart" "star" "coin" "lock" "pause" "gear" "sword" "shield" "potion" "gem" "key" "map" "bolt" "clock" "trophy" "home" "plus" "close" "check" "play" "back" "bag" "bomb" "crown" "flag" "apple" "leaf" "fire" "drop" "skull" "music" "person"
77
77
  }
78
78
  slice panel 4 4 96 96 18 tint
@@ -84,20 +84,20 @@ slice buttonDisabled 328 4 48 48 12 tint
84
84
  slice field 4 104 48 48 8 tint
85
85
  slice slot 56 104 48 48 10 tint
86
86
  slice tooltip 108 104 32 32 8 tint
87
- slice capsule 144 104 32 32 10 tint
87
+ slice hud 144 104 32 32 10 tint
88
88
  slice track 180 104 32 16 5 tint
89
89
  slice fill 216 104 32 16 2 tint
90
90
  soft 252 104 64 64 24
91
- corner 320 104 32 32 18 18 accent 4
91
+ corner 320 104 32 32 18 18 primary 4
92
92
  corners panel card slot
93
- divider 4 172 128 24 128 24 accent
94
- flourish 136 172 64 24 32 14 accent 0
93
+ divider 4 172 128 24 128 24 primary
94
+ flourish 136 172 64 24 32 14 primary 0
95
95
  tile 204 172 64 64 64 64 0.08 3 panel
96
96
  shadow panel 0 0 18 0 "#000000aa"
97
- glow button 5 accent 0.22
98
- glow panel 10 accent 0.12
99
- glow capsule 4 accent 0.18
100
- textGlow display 1.5 accent 0.55
97
+ glow button 5 primary 0.22
98
+ glow panel 10 primary 0.12
99
+ glow hud 4 primary 0.18
100
+ textGlow display 1.5 primary 0.55
101
101
  press 0.98 0.98 0
102
102
  hover 0 1.02
103
103
  motion {
@@ -13,6 +13,6 @@
13
13
  "test": "og test ."
14
14
  },
15
15
  "dependencies": {
16
- "@origingame/engine": "0.2.0"
16
+ "@origingame/engine": "0.3.0"
17
17
  }
18
18
  }
@@ -3,7 +3,7 @@ version 1
3
3
  ---
4
4
  name "Three-Lane Beat"
5
5
  id "rhythm"
6
- engine "0.2.0"
6
+ engine "0.3.0"
7
7
  entry "src/main.ts"
8
8
  profile "2d"
9
9
  tick 60
@@ -32,9 +32,9 @@ function must<T>(r: { ok: true; value?: T } | { ok: false; reason: string }): T
32
32
 
33
33
  function start(world: World): void {
34
34
  for (const l of LANGUAGES) must(og.i18n.load(world, `strings/${l.code}.ogt`));
35
- const skin = must(og.load.skin(world, "skins/lanebeat/skin.ogt"));
35
+ const skin = must(og.load.style(world, "styles/lanebeat/style.ogt"));
36
36
  const sound = (path: string) => must(og.load.sound(world, path));
37
- must(og.ui.configure(world, { skin, sounds: { press: sound("audio/ui-press.ogt"), open: sound("audio/ui-open.ogt"), close: sound("audio/ui-close.ogt"), error: sound("audio/ui-error.ogt"), success: sound("audio/ui-success.ogt") } }));
37
+ must(og.ui.configure(world, { style: skin, sounds: { press: sound("audio/ui-press.ogt"), open: sound("audio/ui-open.ogt"), close: sound("audio/ui-close.ogt"), error: sound("audio/ui-error.ogt"), success: sound("audio/ui-success.ogt") } }));
38
38
 
39
39
  const settings = must(world.resource(og.RenderSettings));
40
40
  settings.environmentIntensity = 0;
@@ -1,4 +1,4 @@
1
- // Three-Lane Beat's screens on og.ui and the skin in assets/skins/lanebeat
1
+ // Three-Lane Beat's screens on og.ui and the skin in assets/styles/lanebeat
2
2
  // (the engine's sci-fi pack): the title, the HUD (the score and the groove
3
3
  // top left, Pause top right, the combo and its multiplier beside the
4
4
  // highway), the pause menu, the settings with the offset, the calibration
@@ -204,7 +204,7 @@ export function grade(acc: number): string {
204
204
  }
205
205
 
206
206
  function capsule(id: string, build: () => void): void {
207
- og.ui.row(id, { gap: S.sm, cross: "center", padding: { left: S.sm, top: S.xs, right: S.md, bottom: S.xs }, frame: "capsule", background: { token: "surface" } }, build);
207
+ og.ui.row(id, { gap: S.sm, cross: "center", padding: { left: S.sm, top: S.xs, right: S.md, bottom: S.xs }, frame: "hud", background: { token: "panel" } }, build);
208
208
  }
209
209
 
210
210
  function hud(world: World, g: GameV): void {
@@ -215,11 +215,11 @@ function hud(world: World, g: GameV): void {
215
215
  og.ui.setNavigation(g.paused || g.settingsOpen);
216
216
  og.ui.anchor("Status", { anchor: "topLeft", direction: "column", gap: S.sm }, () => {
217
217
  capsule("Score", () => {
218
- og.ui.label("Label", say(world, "hud.score"), { step: "caption", color: { token: "fgMuted" }, nowrap: true });
218
+ og.ui.label("Label", say(world, "hud.score"), { step: "caption", color: { token: "inkMuted" }, nowrap: true });
219
219
  og.ui.counter("Value", g.score, { step: "xl", font: "display", durationMs: 300, width: px(phone ? 104 : 130) });
220
220
  });
221
221
  capsule("Groove", () => {
222
- og.ui.label("Label", say(world, "hud.groove"), { step: "caption", color: { token: "fgMuted" }, nowrap: true });
222
+ og.ui.label("Label", say(world, "hud.groove"), { step: "caption", color: { token: "inkMuted" }, nowrap: true });
223
223
  og.ui.meter("Bar", g.groove, 1, { kind: "health", width: px(phone ? 90 : 130) });
224
224
  });
225
225
  });
@@ -233,8 +233,8 @@ function hud(world: World, g: GameV): void {
233
233
  og.ui.anchor("Combo", { anchor: phone ? "top" : "right", offsetY: phone ? 64 : 40, offsetX: phone ? 0 : -48, direction: "column", cross: "center", gap: S.xxs }, () => {
234
234
  og.ui.counter("Count", g.combo, { step: "displaySm", font: "display", durationMs: 120, align: "center", width: px(96) });
235
235
  og.ui.row("Head", { gap: S.xs, cross: "center" }, () => {
236
- og.ui.label("Label", say(world, "hud.combo"), { step: "caption", color: { token: "fgMuted" }, nowrap: true });
237
- og.ui.label("Multiplier", say(world, "hud.multiplier", { n: multiplier }), { step: "caption", color: { token: "accent" }, nowrap: true });
236
+ og.ui.label("Label", say(world, "hud.combo"), { step: "caption", color: { token: "inkMuted" }, nowrap: true });
237
+ og.ui.label("Multiplier", say(world, "hud.multiplier", { n: multiplier }), { step: "caption", color: { token: "primary" }, nowrap: true });
238
238
  });
239
239
  og.ui.meter("Next", multiplier >= 4 ? 1 : (g.combo % t.comboStep) / t.comboStep, 1, { width: px(96) });
240
240
  });
@@ -258,7 +258,7 @@ function settings(world: World, g: GameV, p: PrefsV): void {
258
258
  p.music = slider("Music", "settings.music", p.music);
259
259
  p.effects = slider("Effects", "settings.effects", p.effects);
260
260
  p.offsetMs = slider("Offset", "settings.offset", p.offsetMs, -200, 200, 5, (v) => say(world, "settings.ms", { n: Math.round(v) }));
261
- og.ui.label("LanguageLabel", say(world, "settings.language"), { color: { token: "fgMuted" } });
261
+ og.ui.label("LanguageLabel", say(world, "settings.language"), { color: { token: "inkMuted" } });
262
262
  const r = og.ui.radio("Language", LANGUAGES.map((l) => say(world, l.key)), p.language, { horizontal: true });
263
263
  if (r.selected !== p.language) setLanguage(world, p, r.selected);
264
264
  p.reducedMotion = og.ui.toggle("Motion", p.reducedMotion, say(world, "settings.motion")).on;
@@ -284,7 +284,7 @@ function calibration(world: World, g: GameV, p: PrefsV): void {
284
284
  og.ui.label("Body", say(world, "cal.body"), { width: grow });
285
285
  og.ui.row("Taps", { width: grow, gap: S.md, cross: "center" }, () => {
286
286
  og.ui.label("Count", say(world, "cal.taps", { n: g.calTaps }), { nowrap: true, width: grow });
287
- og.ui.label("Offset", say(world, "cal.offset", { n: Math.round(measured) }), { font: "mono", nowrap: true, color: { token: "accent" } });
287
+ og.ui.label("Offset", say(world, "cal.offset", { n: Math.round(measured) }), { font: "mono", nowrap: true, color: { token: "primary" } });
288
288
  });
289
289
  og.ui.meter("Progress", g.calTaps, 8, { width: grow });
290
290
  og.ui.row("Actions", { width: grow, gap: S.sm, align: "end" }, () => {
@@ -312,8 +312,8 @@ function results(world: World, g: GameV): "again" | "title" | null {
312
312
  const acc = accuracy(g);
313
313
  og.ui.modal("Results", true, { title: say(world, g.cleared ? "results.cleared" : "results.failed"), locked: true, width: px(Math.min(420, og.ui.frameViewport().width - 32)) }, () => {
314
314
  og.ui.row("Mark", { width: grow, align: "center", gap: S.md, cross: "center" }, () => {
315
- og.ui.transition("Grade", true, { kind: "pop" }, () => og.ui.label("Letter", g.cleared ? grade(acc) : "–", { step: "displayMd", font: "display", color: { token: g.cleared ? "accent" : "fgMuted" } }));
316
- if (g.newBest) og.ui.label("NewBest", say(world, "results.newBest"), { color: { token: "accent" }, nowrap: true });
315
+ og.ui.transition("Grade", true, { kind: "pop" }, () => og.ui.label("Letter", g.cleared ? grade(acc) : "–", { step: "displayMd", font: "display", color: { token: g.cleared ? "primary" : "inkMuted" } }));
316
+ if (g.newBest) og.ui.label("NewBest", say(world, "results.newBest"), { color: { token: "primary" }, nowrap: true });
317
317
  });
318
318
  og.ui.column("Stats", { width: grow, gap: 0 }, () => {
319
319
  og.ui.keyValue("Score", say(world, "results.score"), `${g.score}`, true);
@@ -324,7 +324,7 @@ function results(world: World, g: GameV): "again" | "title" | null {
324
324
  og.ui.keyValue("Good", say(world, "results.good"), `${g.good}`, true);
325
325
  og.ui.keyValue("Miss", say(world, "results.miss"), `${g.miss}`, true);
326
326
  });
327
- og.ui.label("Best", say(world, "results.best", { n: g.best }), { color: { token: "fgMuted" }, align: "center", width: grow });
327
+ og.ui.label("Best", say(world, "results.best", { n: g.best }), { color: { token: "inkMuted" }, align: "center", width: grow });
328
328
  og.ui.row("Actions", { width: grow, gap: S.sm }, () => {
329
329
  if (og.ui.button("Again", say(world, "results.again"), { variant: "primary", width: grow }).clicked) chose = "again";
330
330
  if (og.ui.button("Title", say(world, "results.title"), { width: grow }).clicked) chose = "title";
@@ -10,5 +10,5 @@
10
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
11
  | `assets/strings/*.ogt` | CC0 1.0 | self-made: the English and Chinese string tables |
12
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 |
13
+ | `assets/styles/lampdive/*` | CC0 1.0 art, SIL OFL 1.1 fonts | the engine's pixel style pack (`templates/styles/pixel`, `assets/styles/lampdive/LICENSES.md`) with this game's palette |
14
14
  | `references/*/*.png` | CC0 1.0 | frames of this game recorded by `tests/frames.og.ts` |
@@ -62,7 +62,7 @@ og build . --publish # dist/: the play page as it ships
62
62
  glows red and shows "!" the turn before a charged strike (twice the hit
63
63
  stop and trauma); its fall and the lamp going out are heavier still.
64
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
65
+ engine's pixel pack recoloured as `assets/styles/lampdive` (the tomb's
66
66
  violet panels, the lamp's amber as the one accent); the title over the
67
67
  lamp-lit first room, the HUD as capsules in the corners (health meter,
68
68
  strike, armour, gold, the floor, Pause), the draught button (it shakes
@@ -188,7 +188,7 @@ next tick).
188
188
  and a mind.
189
189
  3. **The finds**: `LootKind`, the `finds` lists in `planFloor`, a `take`
190
190
  case.
191
- 4. **The look**: `assets/skins/lampdive/skin.ogt`'s palette and the art in
191
+ 4. **The look**: `assets/styles/lampdive/style.ogt`'s palette and the art in
192
192
  `tools/make-assets.py`, then `python3 tools/make-assets.py && og cook .`.
193
193
  5. **Words**: `assets/strings/*.ogt`; a new Chinese string needs the
194
194
  script run again to subset the font.
@@ -238,7 +238,7 @@ in the engine repository).
238
238
  give the same bytes): the tileset, the map, the sprite sheet and the glow,
239
239
  the sounds and the music, the `og sfx` preset files of the UI's sounds and
240
240
  the footstep, and the font subset. `LICENSES.md` lists them; the skin's
241
- are in `assets/skins/lampdive/LICENSES.md`.
241
+ are in `assets/styles/lampdive/LICENSES.md`.
242
242
 
243
243
  ## Known limits (engine gaps, not design)
244
244
 
@@ -1,14 +1,14 @@
1
1
  # Lamp Dive's skin (the engine's pixel style pack, recoloured): licences
2
2
 
3
3
  The palette, the body text's 1 px dark shadow and the fallback font in
4
- `skin.ogt` are this game's edits by hand; the rest is the pack as
5
- `templates/ui-kit/assets/skins/pixel` ships it.
4
+ `style.ogt` are this game's edits by hand; the rest is the pack as
5
+ `templates/styles/pixel` ships it.
6
6
 
7
7
  | File | Licence | Origin |
8
8
  |---|---|---|
9
- | `atlas.png` | CC0 1.0 | self-made by the Origin Engine authors: drawn by `templates/ui-kit/tools/make-skins.py` (deterministic) |
9
+ | `atlas.png` | CC0 1.0 | self-made by the Origin Engine authors: drawn by `templates/ui-kit/tools/make-styles.py` (deterministic) |
10
10
  | `icons.png` | CC0 1.0 | self-made: the kit's 32 icons (`tools/make-assets.py`) restyled by the same script |
11
- | `skin.ogt`, `*.ogt` | CC0 1.0 | written by the same script |
11
+ | `style.ogt`, `*.ogt` | CC0 1.0 | written by the same script |
12
12
  | `DotGothic16-Regular.ttf` | SIL Open Font License 1.1 (`OFL.txt`) | DotGothic16 (github.com/fontworks-fonts/DotGothic16); subset to Latin-1 with fontTools. Copyright 2020 The DotGothic16 Project Authors (https://github.com/fontworks-fonts/DotGothic16/) |
13
13
 
14
14
  Characters these fonts lack (Chinese, Japanese, Korean) are drawn with the
@@ -1,52 +1,52 @@
1
- type skin
1
+ type style
2
2
  version 1
3
3
  ---
4
- # Lamp Dive's skin: the engine's pixel style pack (templates/ui-kit/tools/make-skins.py; CC0 art, OFL
4
+ # Lamp Dive's skin: the engine's pixel style pack (templates/ui-kit/tools/make-styles.py; CC0 art, OFL
5
5
  # fonts; LICENSES.md) in tomb colours: plum stone panels, the lamp's amber as the one accent.
6
6
  name "lampdive"
7
- base dark
8
- atlas "skins/lampdive/atlas.png" 384 256
7
+ scheme dark
8
+ atlas "styles/lampdive/atlas.png" 384 256
9
9
  scale 1
10
10
  palette {
11
- bg "#100c14"
12
- bgSubtle "#17121d"
13
- surface "#2a2131"
14
- surfaceRaised "#2a2131"
15
- surfaceHover "#382c41"
16
- materialThick "#211a28f2"
17
- materialRegular "#211a28e6"
18
- materialThin "#211a28cc"
19
- fg "#f4f1de"
20
- fgMuted "#c9c2a8"
21
- fgSubtle "#b8b29a"
22
- fgInverse "#14111f"
23
- fill "#4c3d58"
24
- fillStrong "#5e4b6b"
25
- border "#5a4866"
26
- borderStrong "#a990b8"
27
- accent "#ffb347"
28
- accentHover "#ffc56e"
29
- accentActive "#e69a2e"
30
- accentFg "#14111f"
31
- accentInk "#ffc56e"
32
- accentSoft "#ffb34724"
11
+ backdrop "#100c14"
12
+ well "#17121d"
13
+ panel "#2a2131"
14
+ panelHover "#382c41"
15
+ panelRaised "#2a2131"
16
+ line "#5a4866"
17
+ lineStrong "#a990b8"
18
+ ink "#f4f1de"
19
+ inkMuted "#c9c2a8"
20
+ inkFaint "#b8b29a"
21
+ inkInverse "#14111f"
22
+ control "#4c3d58"
23
+ controlStrong "#5e4b6b"
24
+ primary "#ffb347"
25
+ primaryHover "#ffc56e"
26
+ primaryActive "#e69a2e"
27
+ onPrimary "#14111f"
28
+ primarySoft "#ffb34724"
29
+ highlight "#ffc56e"
33
30
  focus "#ffb347"
34
- thumb "#5a4866"
31
+ knob "#5a4866"
32
+ hud "#211a28f2"
35
33
  scrim "#08060bb8"
34
+ shadow "#00000099"
35
+ sheen "#ffffff52"
36
36
  success "#6fad74"
37
37
  warn "#ffa53d"
38
38
  danger "#fa7771"
39
39
  info "#5dc2ff"
40
- shadow "#00000099"
40
+ health "#6fad74"
41
+ mana "#0a84ff"
42
+ xp "#bf5af2"
43
+ gold "#ffb347"
41
44
  }
42
45
  radius {
46
+ small 0
43
47
  control 0
44
- field 0
45
- block 0
46
- card 0
48
+ bar 0
47
49
  panel 0
48
- sheet 0
49
- button 0
50
50
  }
51
51
  ramp {
52
52
  xs 12 16
@@ -71,12 +71,12 @@ durations {
71
71
  slow 320
72
72
  }
73
73
  fonts {
74
- body "skins/lampdive/DotGothic16-Regular.ttf"
75
- display "skins/lampdive/DotGothic16-Regular.ttf"
76
- numeric "skins/lampdive/DotGothic16-Regular.ttf"
74
+ body "styles/lampdive/DotGothic16-Regular.ttf"
75
+ display "styles/lampdive/DotGothic16-Regular.ttf"
76
+ numeric "styles/lampdive/DotGothic16-Regular.ttf"
77
77
  fallback "fonts/NotoSansSC-subset.ttf"
78
78
  }
79
- icons "skins/lampdive/icons.png" 8 4 {
79
+ icons "styles/lampdive/icons.png" 8 4 {
80
80
  names "heart" "star" "coin" "lock" "pause" "gear" "sword" "shield" "potion" "gem" "key" "map" "bolt" "clock" "trophy" "home" "plus" "close" "check" "play" "back" "bag" "bomb" "crown" "flag" "apple" "leaf" "fire" "drop" "skull" "music" "person"
81
81
  }
82
82
  slice panel 4 4 96 96 8 tint
@@ -88,17 +88,17 @@ slice buttonDisabled 328 4 48 48 6 tint
88
88
  slice field 4 104 48 48 4 tint
89
89
  slice slot 56 104 48 48 4 tint
90
90
  slice tooltip 108 104 32 32 4 tint
91
- slice capsule 144 104 32 32 4 tint
91
+ slice hud 144 104 32 32 4 tint
92
92
  slice track 180 104 32 16 4 tint
93
93
  slice fill 216 104 32 16 4 tint
94
94
  soft 252 104 64 64 24
95
- divider 4 172 128 24 128 24 border
96
- flourish 136 172 64 24 32 12 accent 0
95
+ divider 4 172 128 24 128 24 line
96
+ flourish 136 172 64 24 32 12 primary 0
97
97
  tile 204 172 64 64 16 16 0.06 6 panel
98
98
  shadow panel 6 6 0 0 "#000000b0"
99
99
  shadow card 4 4 0 0 "#00000080"
100
100
  shadow button 0 4 0 0 "#000000a0"
101
- shadow capsule 3 3 0 0 "#00000080"
101
+ shadow hud 3 3 0 0 "#00000080"
102
102
  shadow tooltip 3 3 0 0 "#00000080"
103
103
  textShadow display 3 3 0 "#000000c0"
104
104
  textShadow body 1 0 0 "#14111f"
@@ -13,6 +13,6 @@
13
13
  "test": "og test ."
14
14
  },
15
15
  "dependencies": {
16
- "@origingame/engine": "0.2.0"
16
+ "@origingame/engine": "0.3.0"
17
17
  }
18
18
  }
@@ -3,7 +3,7 @@ version 1
3
3
  ---
4
4
  name "Lamp Dive"
5
5
  id "roguelike"
6
- engine "0.2.0"
6
+ engine "0.3.0"
7
7
  entry "src/main.ts"
8
8
  profile "2d"
9
9
  tick 60
@@ -37,9 +37,9 @@ function must<T>(r: { ok: true; value?: T } | { ok: false; reason: string }): T
37
37
 
38
38
  function start(world: World): void {
39
39
  for (const l of LANGUAGES) must(og.i18n.load(world, `strings/${l.code}.ogt`));
40
- const skin = must(og.load.skin(world, "skins/lampdive/skin.ogt"));
40
+ const skin = must(og.load.style(world, "styles/lampdive/style.ogt"));
41
41
  const sound = (path: string) => must(og.load.sound(world, path));
42
- must(og.ui.configure(world, { skin, sounds: { press: sound("audio/ui-press.ogt"), open: sound("audio/ui-open.ogt"), close: sound("audio/ui-close.ogt"), error: sound("audio/ui-error.ogt"), success: sound("audio/ui-success.ogt") } }));
42
+ must(og.ui.configure(world, { style: skin, sounds: { press: sound("audio/ui-press.ogt"), open: sound("audio/ui-open.ogt"), close: sound("audio/ui-close.ogt"), error: sound("audio/ui-error.ogt"), success: sound("audio/ui-success.ogt") } }));
43
43
 
44
44
  const settings = must(world.resource(og.RenderSettings));
45
45
  settings.environmentIntensity = 0;
@@ -1,4 +1,4 @@
1
- // Lamp Dive's screens on og.ui and the skin in assets/skins/lampdive (the
1
+ // Lamp Dive's screens on og.ui and the skin in assets/styles/lampdive (the
2
2
  // engine's pixel pack in tomb colours): the title, the HUD (health, strike,
3
3
  // armour and gold in the top-left corner, the floor and pause in the
4
4
  // top-right, the draught and, on a touch screen, Wait and a d-pad along the
@@ -167,7 +167,7 @@ function platform(world: World, g: GameV, p: PrefsV): void {
167
167
  }
168
168
 
169
169
  function capsule(id: string, build: () => void): void {
170
- og.ui.row(id, { gap: S.xs, cross: "center", padding: { left: S.sm, top: S.xs, right: S.md, bottom: S.xs }, frame: "capsule", background: { token: "surface" } }, build);
170
+ og.ui.row(id, { gap: S.xs, cross: "center", padding: { left: S.sm, top: S.xs, right: S.md, bottom: S.xs }, frame: "hud", background: { token: "panel" } }, build);
171
171
  }
172
172
 
173
173
  function hud(world: World, g: GameV): void {
@@ -176,7 +176,7 @@ function hud(world: World, g: GameV): void {
176
176
  og.ui.setNavigation(false);
177
177
  og.ui.anchor("Status", { anchor: "topLeft", direction: "column", gap: S.sm }, () => {
178
178
  capsule("Health", () => {
179
- og.ui.icon("Heart", "heart", { size: 22, tint: { token: g.hp * 3 <= g.hpMax ? "danger" : "fg" } });
179
+ og.ui.icon("Heart", "heart", { size: 22, tint: { token: g.hp * 3 <= g.hpMax ? "danger" : "ink" } });
180
180
  og.ui.meter("Bar", g.hp, g.hpMax, { kind: "health", label: `${g.hp}/${g.hpMax}`, width: px(touch ? 110 : 150) });
181
181
  });
182
182
  capsule("Stats", () => {
@@ -184,7 +184,7 @@ function hud(world: World, g: GameV): void {
184
184
  og.ui.counter("Attack", g.attack, { font: "mono", width: px(22) });
185
185
  og.ui.icon("Shield", "shield", { size: 20 });
186
186
  og.ui.counter("Armour", g.armour, { font: "mono", width: px(22) });
187
- og.ui.icon("Coin", "coin", { size: 20, tint: { token: "accent" } });
187
+ og.ui.icon("Coin", "coin", { size: 20, tint: { token: "gold" } });
188
188
  og.ui.counter("Gold", g.gold, { font: "mono", width: px(40) });
189
189
  });
190
190
  });
@@ -229,7 +229,7 @@ function settings(world: World, g: GameV, p: PrefsV): void {
229
229
  p.master = slider("Master", "settings.master", p.master);
230
230
  p.music = slider("Music", "settings.music", p.music);
231
231
  p.effects = slider("Effects", "settings.effects", p.effects);
232
- og.ui.label("LanguageLabel", say(world, "settings.language"), { color: { token: "fgMuted" } });
232
+ og.ui.label("LanguageLabel", say(world, "settings.language"), { color: { token: "inkMuted" } });
233
233
  const r = og.ui.radio("Language", LANGUAGES.map((l) => say(world, l.key)), p.language, { horizontal: true });
234
234
  if (r.selected !== p.language) setLanguage(world, p, r.selected);
235
235
  p.reducedMotion = og.ui.toggle("Motion", p.reducedMotion, say(world, "settings.motion")).on;
@@ -250,7 +250,7 @@ function summary(world: World, g: GameV): "again" | "menu" | null {
250
250
  let chose: "again" | "menu" | null = null;
251
251
  og.ui.modal("Summary", g.phase === Phase.Over, { title: g.won ? say(world, "over.won") : say(world, "over.lost", { n: g.floor }), locked: true, width: px(Math.min(400, og.ui.frameViewport().width - 32)) }, () => {
252
252
  og.ui.row("Mark", { width: grow, align: "center" }, () => {
253
- og.ui.transition("Icon", true, { kind: "pop" }, () => og.ui.icon("Glyph", g.won ? "crown" : "skull", { size: 48, tint: { token: g.won ? "accent" : "fgMuted" } }));
253
+ og.ui.transition("Icon", true, { kind: "pop" }, () => og.ui.icon("Glyph", g.won ? "crown" : "skull", { size: 48, tint: { token: g.won ? "primary" : "inkMuted" } }));
254
254
  if (g.won && g.overTicks === OVER_DELAY + 20) og.ui.burst({ count: 12 });
255
255
  });
256
256
  og.ui.column("Stats", { width: grow, gap: 0 }, () => {
@@ -261,7 +261,7 @@ function summary(world: World, g: GameV): "again" | "menu" | null {
261
261
  og.ui.keyValue("Finds", say(world, "over.finds"), `${g.finds}`, true);
262
262
  if (!g.won) og.ui.keyValue("By", say(world, "over.by"), say(world, g.killedBy >= 0 ? `foe.${FOES[g.killedBy]}` : "foe.none"), false);
263
263
  });
264
- og.ui.label("Record", say(world, "over.record", { dives: g.dives, relics: g.relics }), { color: { token: "fgMuted" }, align: "center", width: grow });
264
+ og.ui.label("Record", say(world, "over.record", { dives: g.dives, relics: g.relics }), { color: { token: "inkMuted" }, align: "center", width: grow });
265
265
  og.ui.row("Actions", { width: grow, gap: S.sm }, () => {
266
266
  if (og.ui.button("Again", say(world, "over.again"), { variant: "primary", width: grow }).clicked) chose = "again";
267
267
  if (og.ui.button("Menu", say(world, "over.menu"), { width: grow }).clicked) chose = "menu";
@@ -13,6 +13,6 @@
13
13
  "test": "og test ."
14
14
  },
15
15
  "dependencies": {
16
- "@origingame/engine": "0.2.0"
16
+ "@origingame/engine": "0.3.0"
17
17
  }
18
18
  }
@@ -3,7 +3,7 @@ version 1
3
3
  ---
4
4
  name "Runner"
5
5
  id "runner"
6
- engine "0.2.0"
6
+ engine "0.3.0"
7
7
  entry "src/main.ts"
8
8
  profile "2d"
9
9
  tick 60
@@ -19,5 +19,5 @@ Origin Engine authors or one of the engine's CC0 assets.
19
19
  | `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 |
20
20
  | `assets/strings/*.ogt` | CC0 1.0 | self-made: the English and Chinese string tables |
21
21
  | `assets/fonts/NotoSansSC-subset.ttf` | SIL Open Font License 1.1 (`assets/fonts/OFL.txt`) | Noto Sans SC Regular, subset to Latin-1, CJK punctuation and the characters of `assets/strings/zh-CN.ogt` by the same script from the project template's `assets/fonts/NotoSansSC-Regular-subset.ttf` |
22
- | `assets/skins/ember/*` | CC0 1.0 art, SIL OFL 1.1 fonts | the engine's fantasy style pack (`templates/ui-kit`), `assets/skins/ember/LICENSES.md` |
22
+ | `assets/styles/ember/*` | CC0 1.0 art, SIL OFL 1.1 fonts | the engine's fantasy style pack (`templates/ui-kit`), `assets/styles/ember/LICENSES.md` |
23
23
  | `references/*/*.png` | CC0 1.0 | frames of this game recorded by `tests/frames.og.ts` |
@@ -60,7 +60,7 @@ og build . --publish # dist/: the play page as it ships (behind "tap to
60
60
  vignette, the teal-orange LUT and film grain, the sky, height fog and
61
61
  `og.DayNight` running from late afternoon to night as the run's clock.
62
62
  - **Screens on og.ui with tokens and MSDF text** (og-ui §2–§6, og-taste):
63
- the engine's fantasy pack as `assets/skins/ember` (Cinzel and Newsreader,
63
+ the engine's fantasy pack as `assets/styles/ember` (Cinzel and Newsreader,
64
64
  Noto Sans SC as the fallback, every font an MSDF atlas at cook time); the
65
65
  title over an orbit of the vale, the HUD (hearts and beacons top-left,
66
66
  the dusk clock and Pause top-right, the kindling prompt and its progress
@@ -180,7 +180,7 @@ stages.
180
180
  2. **The pressure**: `duskSeconds`, the sentinels' speeds and sight, their
181
181
  minds in `assets/ai/`, `HEARTS` in `src/components.ts`.
182
182
  3. **The look**: the post stack, fog and sky in `buildVale`, the water's
183
- colours, the skin's palette in `assets/skins/ember/skin.ogt`.
183
+ colours, the skin's palette in `assets/styles/ember/style.ogt`.
184
184
  4. **The characters**: another CC0 humanoid in `assets/models/` with the
185
185
  clip library retargeted onto it (`src/anim.ts`), the graphs' thresholds.
186
186
  5. **Words**: `assets/strings/*.ogt`; a new Chinese string needs the script
@@ -231,7 +231,7 @@ heightmap and control map, the sounds and music, the `og sfx` presets, the
231
231
  sentinels' minds and the font subset byte for byte; the characters, the
232
232
  clip library, the textures and the beacon's effects are the engine's own
233
233
  CC0 assets. `LICENSES.md` lists every file; the skin's are in
234
- `assets/skins/ember/LICENSES.md`.
234
+ `assets/styles/ember/LICENSES.md`.
235
235
 
236
236
  ## Known limits (engine gaps, not design)
237
237
 
@@ -2,9 +2,9 @@
2
2
 
3
3
  | File | Licence | Origin |
4
4
  |---|---|---|
5
- | `atlas.png` | CC0 1.0 | self-made by the Origin Engine authors: drawn by `templates/ui-kit/tools/make-skins.py` (deterministic) |
5
+ | `atlas.png` | CC0 1.0 | self-made by the Origin Engine authors: drawn by `templates/ui-kit/tools/make-styles.py` (deterministic) |
6
6
  | `icons.png` | CC0 1.0 | self-made: the kit's 32 icons (`tools/make-assets.py`) restyled by the same script |
7
- | `skin.ogt`, `*.ogt` | CC0 1.0 | written by the same script |
7
+ | `style.ogt`, `*.ogt` | CC0 1.0 | written by the same script |
8
8
  | `Cinzel-Bold.ttf` | SIL Open Font License 1.1 (`OFL.txt`) | Cinzel Bold (github.com/NDISCOVER/Cinzel); unmodified. Copyright 2020 The Cinzel Project Authors (https://github.com/NDISCOVER/Cinzel) |
9
9
  | `Newsreader-Medium.ttf` | SIL Open Font License 1.1 (`OFL.txt`) | Newsreader (github.com/productiontype/Newsreader); a static instance (wght 500, opsz 16) of the variable font, subset to Latin-1 with fontTools. Copyright 2020 The Newsreader Project Authors (http://github.com/productiontype/Newsreader) |
10
10