@maccesar/titools 5.1.1 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -12
- package/agents/ti-pro.md +4 -0
- package/commands/ti-audit.md +4 -0
- package/lib/config.js +2 -0
- package/package.json +1 -1
- package/skills/ti-admob-unified/SKILL.md +44 -0
- package/skills/ti-admob-unified/agents/openai.yaml +4 -0
- package/skills/ti-admob-unified/assets/example/app.js +1003 -0
- package/skills/ti-admob-unified/assets/example/lib/ads.js +618 -0
- package/skills/ti-admob-unified/assets/example/library-usage.js +104 -0
- package/skills/ti-admob-unified/references/api-reference.md +592 -0
- package/skills/ti-admob-unified/references/banners.md +435 -0
- package/skills/ti-admob-unified/references/contributing.md +228 -0
- package/skills/ti-admob-unified/references/dependencies.md +85 -0
- package/skills/ti-admob-unified/references/fullscreen.md +223 -0
- package/skills/ti-admob-unified/references/game-monetization.md +17 -0
- package/skills/ti-admob-unified/references/getting-started.md +275 -0
- package/skills/ti-admob-unified/references/index.md +30 -0
- package/skills/ti-admob-unified/references/integration.md +85 -0
- package/skills/ti-admob-unified/references/library.md +189 -0
- package/skills/ti-admob-unified/references/mediation.md +132 -0
- package/skills/ti-admob-unified/references/migration.md +255 -0
- package/skills/ti-admob-unified/references/module-changelog.md +54 -0
- package/skills/ti-admob-unified/references/module-license.txt +21 -0
- package/skills/ti-admob-unified/references/privacy.md +254 -0
- package/skills/ti-admob-unified/references/roadmap.md +146 -0
- package/skills/ti-admob-unified/references/source-notes.md +33 -0
- package/skills/ti-admob-unified/references/source-snapshot.json +440 -0
- package/skills/ti-admob-unified/references/third-party-notices.md +22 -0
- package/skills/ti-game/SKILL.md +10 -1
- package/skills/ti-game/references/api.md +10 -2
- package/skills/ti-game/references/debugging-performance.md +6 -0
- package/skills/ti-game/references/examples.md +11 -1
- package/skills/ti-game/references/patterns.md +24 -2
- package/skills/ti-game/references/physics.md +502 -0
- package/skills/ti-game/references/project-setup.md +23 -1
- package/skills/ti-game/references/recipes-action.md +46 -14
- package/skills/ti-game/references/recipes-adventure-effects.md +12 -1
- package/skills/ti-game/references/roadmap.md +2 -2
- package/skills/ti-game/references/tilemaps.md +2 -1
- package/skills/ti-game-assets/SKILL.md +53 -0
- package/skills/ti-game-assets/agents/openai.yaml +4 -0
- package/skills/ti-game-assets/references/alpha.md +26 -0
- package/skills/ti-game-assets/references/art-direction.md +37 -0
- package/skills/ti-game-assets/references/integration.md +49 -0
- package/skills/ti-game-assets/references/manifest.example.json +429 -0
- package/skills/ti-game-assets/references/manifest.md +39 -0
- package/skills/ti-game-assets/references/offline-audio.md +33 -0
- package/skills/ti-game-assets/references/prompts.md +33 -0
- package/skills/ti-game-assets/references/repeating-textures.md +17 -0
- package/skills/ti-game-assets/references/responsible-ads.md +31 -0
- package/skills/ti-game-assets/references/sound-assets.md +42 -0
- package/skills/ti-game-assets/references/vector-sources.md +21 -0
- package/skills/ti-game-assets/scripts/alpha_tools.py +160 -0
- package/skills/ti-game-assets/scripts/requirements.txt +1 -0
- package/skills/ti-game-assets/scripts/validate_manifest.py +267 -0
- package/skills/ti-synthengine/SKILL.md +37 -13
- package/skills/ti-synthengine/references/api.md +397 -31
- package/skills/ti-synthengine/references/audio-engine.md +235 -14
- package/skills/ti-synthengine/references/examples.md +396 -17
- package/skills/ti-synthengine/references/guide.md +331 -12
- package/skills/ti-synthengine/references/recipes.md +212 -22
- package/skills/ti-synthengine/references/recommendations.md +53 -16
- package/skills/ti-synthengine/references/sound-design.md +359 -15
- package/skills/ti-synthengine/references/source-notes.md +121 -0
- package/skills/ti-synthengine/references/source-snapshot.json +105 -0
- package/skills/ti-synthengine/references/stats-performance.json +2992 -0
- package/skills/ti-synthengine/references/stats-performance.md +38 -0
- package/skills/ti-synthengine/references/troubleshooting.md +61 -4
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
{
|
|
2
|
+
"module": "ti.admob.unified",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"release_status": "first public release under preparation",
|
|
5
|
+
"repository": "macCesar/ti.admob.unified",
|
|
6
|
+
"commit": "5b4cbf9347a51c4f959dc262ac1500f82f28b4a0",
|
|
7
|
+
"copied": "2026-10-11",
|
|
8
|
+
"files": [
|
|
9
|
+
{
|
|
10
|
+
"source": "documentation/fullscreen.md",
|
|
11
|
+
"destination": "references/fullscreen.md",
|
|
12
|
+
"source_sha256": "61e21798b234ff1f06d59d0239c62e3f422a424ebc2ff70e5839d203fa4c85b7",
|
|
13
|
+
"mirrored_sha256": "8c3defb078bc7115475f1389ee02d8d855164de16287afa4156842fa69e344af",
|
|
14
|
+
"links": [
|
|
15
|
+
{
|
|
16
|
+
"original": "../example/app.js",
|
|
17
|
+
"mirrored": "../assets/example/app.js"
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"source": "documentation/mediation.md",
|
|
23
|
+
"destination": "references/mediation.md",
|
|
24
|
+
"source_sha256": "59ede67bf9389b3b98a45a4eb24b59395a98631b0cb47d1cd24357d35f85d57e",
|
|
25
|
+
"mirrored_sha256": "3f6623d6178a437249542d191ecc6c5d6e22ae51db78713c41236b6ed637c938",
|
|
26
|
+
"links": [
|
|
27
|
+
{
|
|
28
|
+
"original": "../DEPENDENCIES.md",
|
|
29
|
+
"mirrored": "dependencies.md"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"original": "api-reference.md#automatic-adapter-discovery",
|
|
33
|
+
"mirrored": "api-reference.md#automatic-adapter-discovery"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"original": "api-reference.md#mediation-diagnostics",
|
|
37
|
+
"mirrored": "api-reference.md#mediation-diagnostics"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"original": "../CONTRIBUTING.md#adding-a-network",
|
|
41
|
+
"mirrored": "contributing.md#adding-a-network"
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"source": "documentation/integration.md",
|
|
47
|
+
"destination": "references/integration.md",
|
|
48
|
+
"source_sha256": "47b247dff23ca909b4b8cb598e31571d7ed419feb4b63d59a0d662950d265fa5",
|
|
49
|
+
"mirrored_sha256": "d63800df29b1857552456e1c73ea7de83aed2596b7704c953be9864ba83fb2ff",
|
|
50
|
+
"links": [
|
|
51
|
+
{
|
|
52
|
+
"original": "../example/lib/ads.js",
|
|
53
|
+
"mirrored": "../assets/example/lib/ads.js"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"original": "library.md",
|
|
57
|
+
"mirrored": "library.md"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"original": "../example/library-usage.js",
|
|
61
|
+
"mirrored": "../assets/example/library-usage.js"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"original": "banners.md#reserve-real-layout-space",
|
|
65
|
+
"mirrored": "banners.md#reserve-real-layout-space"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"original": "../example/app.js",
|
|
69
|
+
"mirrored": "../assets/example/app.js"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"original": "library.md",
|
|
73
|
+
"mirrored": "library.md"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"original": "banners.md",
|
|
77
|
+
"mirrored": "banners.md"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"original": "fullscreen.md",
|
|
81
|
+
"mirrored": "fullscreen.md"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"original": "privacy.md",
|
|
85
|
+
"mirrored": "privacy.md"
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"source": "documentation/third-party-notices.md",
|
|
91
|
+
"destination": "references/third-party-notices.md",
|
|
92
|
+
"source_sha256": "b203d99e49312a0450db497a0b54dae9fb1f705a27ba18f71fbaf76e46d830cd",
|
|
93
|
+
"mirrored_sha256": "93c74402995ac911bc96cac3453ca39f1c262653ef4e7d8ebccefe4c3630bbad",
|
|
94
|
+
"links": [
|
|
95
|
+
{
|
|
96
|
+
"original": "../DEPENDENCIES.md",
|
|
97
|
+
"mirrored": "dependencies.md"
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"source": "documentation/privacy.md",
|
|
103
|
+
"destination": "references/privacy.md",
|
|
104
|
+
"source_sha256": "25adc561cf4b1b2b0ae2c25c3373b9a7eae6b429ecdee1a7d4968e3021255d37",
|
|
105
|
+
"mirrored_sha256": "68ec23fc532865910ec2e6cb801b33f9afb788eac7c3dc5e1e230ad245a1ad03",
|
|
106
|
+
"links": [
|
|
107
|
+
{
|
|
108
|
+
"original": "getting-started.md#optional-if-the-application-requests-att",
|
|
109
|
+
"mirrored": "getting-started.md#optional-if-the-application-requests-att"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"original": "getting-started.md#ios",
|
|
113
|
+
"mirrored": "getting-started.md#ios"
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"source": "documentation/migration.md",
|
|
119
|
+
"destination": "references/migration.md",
|
|
120
|
+
"source_sha256": "85c6e3b897c4ac7f7cfb4f2a4fc61936f2e43a81de620a6c89fed670157877b3",
|
|
121
|
+
"mirrored_sha256": "028890977867cecef1f6c8a67b526bece5919200d061cabca61f0f12f9b8eb12",
|
|
122
|
+
"links": [
|
|
123
|
+
{
|
|
124
|
+
"original": "mediation.md",
|
|
125
|
+
"mirrored": "mediation.md"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"original": "banners.md#creation-properties-1",
|
|
129
|
+
"mirrored": "banners.md#creation-properties-1"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"original": "getting-started.md",
|
|
133
|
+
"mirrored": "getting-started.md"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"original": "banners.md#who-pauses-a-banner",
|
|
137
|
+
"mirrored": "banners.md#who-pauses-a-banner"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"original": "fullscreen.md#the-four-hour-window",
|
|
141
|
+
"mirrored": "fullscreen.md#the-four-hour-window"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"original": "api-reference.md#automatic-adapter-discovery",
|
|
145
|
+
"mirrored": "api-reference.md#automatic-adapter-discovery"
|
|
146
|
+
}
|
|
147
|
+
]
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"source": "documentation/getting-started.md",
|
|
151
|
+
"destination": "references/getting-started.md",
|
|
152
|
+
"source_sha256": "82e606a8807a75985f8371876650f6499028e2b4452f28f525cd9edced2f0a7d",
|
|
153
|
+
"mirrored_sha256": "a1784814b78d17d3c6a928f0aed34cadccc100cf6ce57b9e05b309745ecac652",
|
|
154
|
+
"links": [
|
|
155
|
+
{
|
|
156
|
+
"original": "mediation.md",
|
|
157
|
+
"mirrored": "mediation.md"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"original": "migration.md",
|
|
161
|
+
"mirrored": "migration.md"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"original": "mediation.md",
|
|
165
|
+
"mirrored": "mediation.md"
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"original": "api-reference.md#automatic-adapter-discovery",
|
|
169
|
+
"mirrored": "api-reference.md#automatic-adapter-discovery"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"original": "privacy.md",
|
|
173
|
+
"mirrored": "privacy.md"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"original": "api-reference.md#reserved-and-unavailable-apis",
|
|
177
|
+
"mirrored": "api-reference.md#reserved-and-unavailable-apis"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"original": "banners.md",
|
|
181
|
+
"mirrored": "banners.md"
|
|
182
|
+
}
|
|
183
|
+
]
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"source": "documentation/library.md",
|
|
187
|
+
"destination": "references/library.md",
|
|
188
|
+
"source_sha256": "0da03f4b91912045737da2a8992679c7a1503f5085abc9d7495817ae54e68021",
|
|
189
|
+
"mirrored_sha256": "40568c25adc6e5cf7a27ad0305205dfc6847c7c6039eae095bf102f6b8688873",
|
|
190
|
+
"links": [
|
|
191
|
+
{
|
|
192
|
+
"original": "../example/lib/ads.js",
|
|
193
|
+
"mirrored": "../assets/example/lib/ads.js"
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"original": "../example/app.js",
|
|
197
|
+
"mirrored": "../assets/example/app.js"
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"original": "../example/library-usage.js",
|
|
201
|
+
"mirrored": "../assets/example/library-usage.js"
|
|
202
|
+
}
|
|
203
|
+
]
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"source": "documentation/index.md",
|
|
207
|
+
"destination": "references/index.md",
|
|
208
|
+
"source_sha256": "358dbe96a4f5ff49179b05bed5a1a28a2c13b0c698663a6f8fba6b858a55ffaf",
|
|
209
|
+
"mirrored_sha256": "1f07d92cfc885074bedfea0bfc8164df4dbb1091ecf4193ee733162b3a60e2ab",
|
|
210
|
+
"links": [
|
|
211
|
+
{
|
|
212
|
+
"original": "getting-started.md",
|
|
213
|
+
"mirrored": "getting-started.md"
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"original": "integration.md",
|
|
217
|
+
"mirrored": "integration.md"
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"original": "library.md",
|
|
221
|
+
"mirrored": "library.md"
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"original": "privacy.md",
|
|
225
|
+
"mirrored": "privacy.md"
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"original": "mediation.md",
|
|
229
|
+
"mirrored": "mediation.md"
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"original": "banners.md",
|
|
233
|
+
"mirrored": "banners.md"
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"original": "fullscreen.md",
|
|
237
|
+
"mirrored": "fullscreen.md"
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"original": "api-reference.md",
|
|
241
|
+
"mirrored": "api-reference.md"
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"original": "migration.md",
|
|
245
|
+
"mirrored": "migration.md"
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"original": "third-party-notices.md",
|
|
249
|
+
"mirrored": "third-party-notices.md"
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"original": "../CONTRIBUTING.md#adding-a-network",
|
|
253
|
+
"mirrored": "contributing.md#adding-a-network"
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"original": "../DEPENDENCIES.md",
|
|
257
|
+
"mirrored": "dependencies.md"
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
"original": "../CHANGELOG.md",
|
|
261
|
+
"mirrored": "module-changelog.md"
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"original": "../ROADMAP.md",
|
|
265
|
+
"mirrored": "roadmap.md"
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"original": "../CONTRIBUTING.md",
|
|
269
|
+
"mirrored": "contributing.md"
|
|
270
|
+
}
|
|
271
|
+
]
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"source": "documentation/banners.md",
|
|
275
|
+
"destination": "references/banners.md",
|
|
276
|
+
"source_sha256": "6503b64e3adca882c099710c9df7d3f03ce6ff21cf98e54c199e3f9020581990",
|
|
277
|
+
"mirrored_sha256": "aaf1cc653f9c4d6085e21e88496259b7b3e4abfcd8ba9aa39a5f25cfc6c1db26",
|
|
278
|
+
"links": []
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"source": "documentation/api-reference.md",
|
|
282
|
+
"destination": "references/api-reference.md",
|
|
283
|
+
"source_sha256": "e1e0e51562f18cca354d58ca0dffeb32830b07fea0f4cafecd356eca832b8ab7",
|
|
284
|
+
"mirrored_sha256": "d1fec104a8f8ffb153c0fbcc9e405c224145f0dd439a5d9caa4ac78ad64064fa",
|
|
285
|
+
"links": [
|
|
286
|
+
{
|
|
287
|
+
"original": "mediation.md#missing-configuration-and-startup-errors",
|
|
288
|
+
"mirrored": "mediation.md#missing-configuration-and-startup-errors"
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"original": "banners.md#creation-properties-1",
|
|
292
|
+
"mirrored": "banners.md#creation-properties-1"
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
"original": "banners.md#creation-properties",
|
|
296
|
+
"mirrored": "banners.md#creation-properties"
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"original": "fullscreen.md#the-four-hour-window",
|
|
300
|
+
"mirrored": "fullscreen.md#the-four-hour-window"
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
"original": "fullscreen.md",
|
|
304
|
+
"mirrored": "fullscreen.md"
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"original": "banners.md#who-pauses-a-banner",
|
|
308
|
+
"mirrored": "banners.md#who-pauses-a-banner"
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"original": "banners.md#creation-properties",
|
|
312
|
+
"mirrored": "banners.md#creation-properties"
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"original": "fullscreen.md#events",
|
|
316
|
+
"mirrored": "fullscreen.md#events"
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
"original": "mediation.md",
|
|
320
|
+
"mirrored": "mediation.md"
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"original": "migration.md#generic-mediation-diagnostics",
|
|
324
|
+
"mirrored": "migration.md#generic-mediation-diagnostics"
|
|
325
|
+
}
|
|
326
|
+
],
|
|
327
|
+
"link_fixes": [
|
|
328
|
+
{
|
|
329
|
+
"original_markdown": "[Mediation diagnostics and compatibility](#mediation-diagnostics-and-compatibility)",
|
|
330
|
+
"mirrored_markdown": "[Mediation diagnostics and compatibility](#mediation-diagnostics)",
|
|
331
|
+
"reason": "Official document references a removed heading; target its existing Mediation diagnostics section. Original source is unchanged."
|
|
332
|
+
}
|
|
333
|
+
]
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
"source": "DEPENDENCIES.md",
|
|
337
|
+
"destination": "references/dependencies.md",
|
|
338
|
+
"source_sha256": "345106277d89646fa2f79026d28fcef39c2c97701f0190141efdfaaf2cc988be",
|
|
339
|
+
"mirrored_sha256": "131c1a1042905893ef122ef6b44acfeba701177d42377061c60f827a686336fc",
|
|
340
|
+
"links": [
|
|
341
|
+
{
|
|
342
|
+
"original": "documentation/mediation.md#unity-consent-with-the-pinned-adapter",
|
|
343
|
+
"mirrored": "mediation.md#unity-consent-with-the-pinned-adapter"
|
|
344
|
+
}
|
|
345
|
+
]
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
"source": "ROADMAP.md",
|
|
349
|
+
"destination": "references/roadmap.md",
|
|
350
|
+
"source_sha256": "e51337b46621f513bd0e7ece60604cb52b05137dce4a30e15474babb8ac2b3be",
|
|
351
|
+
"mirrored_sha256": "8d214f8b74201a1f60fa92df039eb8af88926159e2f26e946252eadd1afb214e",
|
|
352
|
+
"links": [
|
|
353
|
+
{
|
|
354
|
+
"original": "DEPENDENCIES.md#transitive-security-review",
|
|
355
|
+
"mirrored": "dependencies.md#transitive-security-review"
|
|
356
|
+
}
|
|
357
|
+
]
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
"source": "CONTRIBUTING.md",
|
|
361
|
+
"destination": "references/contributing.md",
|
|
362
|
+
"source_sha256": "836799de6a281aec867f9df34a520963db337733caf33e7ea0bc314365bd5c6b",
|
|
363
|
+
"mirrored_sha256": "4cfb401b52a0de14fd72b040ff88c64d1be7fdba27e56c1ec1fcd9008cae8ae9",
|
|
364
|
+
"links": [
|
|
365
|
+
{
|
|
366
|
+
"original": "DEPENDENCIES.md",
|
|
367
|
+
"mirrored": "dependencies.md"
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"original": "DEPENDENCIES.md",
|
|
371
|
+
"mirrored": "dependencies.md"
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"original": "documentation/getting-started.md",
|
|
375
|
+
"mirrored": "getting-started.md"
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
"original": "documentation/privacy.md",
|
|
379
|
+
"mirrored": "privacy.md"
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"original": "documentation/banners.md",
|
|
383
|
+
"mirrored": "banners.md"
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
"original": "LICENSE",
|
|
387
|
+
"mirrored": "module-license.txt"
|
|
388
|
+
}
|
|
389
|
+
]
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
"source": "CHANGELOG.md",
|
|
393
|
+
"destination": "references/module-changelog.md",
|
|
394
|
+
"source_sha256": "206836587f356a152b6f9b3dbc3ecafdc47d006dc04ef9272be22fb61e1730a7",
|
|
395
|
+
"mirrored_sha256": "d7c53654b8b4c3166a8c86ed6a9d20d141692dbdfcd9ffacde4887367588adfa",
|
|
396
|
+
"links": [
|
|
397
|
+
{
|
|
398
|
+
"original": "DEPENDENCIES.md",
|
|
399
|
+
"mirrored": "dependencies.md"
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
"original": "DEPENDENCIES.md",
|
|
403
|
+
"mirrored": "dependencies.md"
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
"original": "documentation/mediation.md#release-validation",
|
|
407
|
+
"mirrored": "mediation.md#release-validation"
|
|
408
|
+
}
|
|
409
|
+
]
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
"source": "LICENSE",
|
|
413
|
+
"destination": "references/module-license.txt",
|
|
414
|
+
"source_sha256": "4f0914a1e3dba2ee340a000feddd0700eb1977923090d77c0fa32e2a47830823",
|
|
415
|
+
"mirrored_sha256": "4f0914a1e3dba2ee340a000feddd0700eb1977923090d77c0fa32e2a47830823",
|
|
416
|
+
"links": []
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
"source": "example/lib/ads.js",
|
|
420
|
+
"destination": "assets/example/lib/ads.js",
|
|
421
|
+
"source_sha256": "7103fd5406a6fdae2652fdb75d6e76bbe8e1f820183d8caafcdacbb38c939567",
|
|
422
|
+
"mirrored_sha256": "7103fd5406a6fdae2652fdb75d6e76bbe8e1f820183d8caafcdacbb38c939567",
|
|
423
|
+
"links": []
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"source": "example/library-usage.js",
|
|
427
|
+
"destination": "assets/example/library-usage.js",
|
|
428
|
+
"source_sha256": "1dc8f385dda582cfadcd0f77edc24681214ac7b066909d5d9d1599c923eece24",
|
|
429
|
+
"mirrored_sha256": "1dc8f385dda582cfadcd0f77edc24681214ac7b066909d5d9d1599c923eece24",
|
|
430
|
+
"links": []
|
|
431
|
+
},
|
|
432
|
+
{
|
|
433
|
+
"source": "example/app.js",
|
|
434
|
+
"destination": "assets/example/app.js",
|
|
435
|
+
"source_sha256": "ba0bfcb76dcc727e9f1785a3980ec0df3bdd4f62fceba6efb1938295ba2d2ab5",
|
|
436
|
+
"mirrored_sha256": "ba0bfcb76dcc727e9f1785a3980ec0df3bdd4f62fceba6efb1938295ba2d2ab5",
|
|
437
|
+
"links": []
|
|
438
|
+
}
|
|
439
|
+
]
|
|
440
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
> Source snapshot: official ti.admob.unified 1.0.0 documentation at commit `5b4cbf9` (copied 2026-10-11). Relative links rebased for this skill.
|
|
2
|
+
|
|
3
|
+
# Third-party SDK notices
|
|
4
|
+
|
|
5
|
+
`ti.admob.unified` and the `ti.admob.unified.mediation.<network>` complements use the MIT license. The distributed advertising SDKs and adapters have their own licenses, terms, privacy policies and publisher agreements.
|
|
6
|
+
|
|
7
|
+
The core `ti.admob.unified` includes Google Mobile Ads and UMP. Each optional network module includes its network SDK and Google adapter, so applications distribute only selected dependencies. Unity includes UnityCoherenceLib; ironSource advertising is deferred.
|
|
8
|
+
|
|
9
|
+
| Component | Owner | Terms or license |
|
|
10
|
+
| ----------------------------------------------------- | -------------------------- | ------------------------------------------------------------------- |
|
|
11
|
+
| Google Mobile Ads, UMP, and Google mediation adapters | Google LLC | [Google APIs Terms of Service](https://developers.google.com/terms) |
|
|
12
|
+
| AppLovin SDK | AppLovin Corp. | [AppLovin Terms](https://www.applovin.com/terms/) |
|
|
13
|
+
| Meta Audience Network SDK | Meta Platforms, Inc. | [Meta Platform Terms](https://developers.facebook.com/terms/) |
|
|
14
|
+
| InMobi SDK | InMobi Technology Services | [InMobi publisher terms](https://www.inmobi.com/terms-of-service/) |
|
|
15
|
+
| Unity Ads and Unity support libraries | Unity Technologies | [Unity Terms of Service](https://unity.com/legal/terms-of-service) |
|
|
16
|
+
| Liftoff Monetize/Vungle SDK | Liftoff Mobile, Inc. | [Liftoff Monetize terms](https://publisher.vungle.com/LICENSE.html) |
|
|
17
|
+
|
|
18
|
+
The exact versions are recorded in [the dependency inventory](dependencies.md). Maintainers must review the upstream terms whenever a native SDK is added or updated. Application publishers must also accept and comply with the terms of every network they enable in AdMob.
|
|
19
|
+
|
|
20
|
+
Android also distributes Guava as a utility dependency. Guava uses the [Apache License 2.0](https://github.com/google/guava/blob/master/LICENSE) and is not an advertising SDK.
|
|
21
|
+
|
|
22
|
+
The InMobi and Liftoff Android complements also pin OkHttp 4.12.0. OkHttp and its Okio dependency use the Apache License 2.0; preserve their distributed license notices. See [OkHttp](https://github.com/lysine-dev/okhttp/blob/master/LICENSE.txt) and [Okio](https://github.com/lysine-dev/okio/blob/main/LICENSE.txt).
|
package/skills/ti-game/SKILL.md
CHANGED
|
@@ -12,6 +12,12 @@ This skill is verified against upstream `main` at **`3bea2f4` (2026-09-02)**. Bo
|
|
|
12
12
|
|
|
13
13
|
The skill applies to **Classic and Alloy** projects. Nothing here requires PurgeTSS.
|
|
14
14
|
|
|
15
|
+
## Visual and sound asset collaboration
|
|
16
|
+
|
|
17
|
+
Use `ti-game-assets` to create/edit complete visual and sound asset sets, preserve art/acoustic palettes and provenance, validate alpha/frames/manifests, prepare exports, and coordinate variants and stereo event placement. `ti-game` governs native representation/motion/events; `ti-synthengine` governs synthesis and sound behavior with `ti.synthengine`. Both have equal domain authority. Read their relevant current references rather than duplicating manuals. Art alone does not require installing modules or adding sounds/mechanics.
|
|
18
|
+
|
|
19
|
+
For requested advertising or existing `ti.admob.unified`, use `ti-admob-unified` for the official module/privacy/provider contract and deliberate game-ad boundaries. Preserve native clock, inputs and audio ownership; graphics work alone does not authorize monetization.
|
|
20
|
+
|
|
15
21
|
## Required workflow
|
|
16
22
|
|
|
17
23
|
Open the references relevant to the task before proposing code. Do not answer from familiarity with Phaser, Godot, Box2D, or an older `ti.game` build.
|
|
@@ -21,6 +27,7 @@ Open the references relevant to the task before proposing code. Do not answer fr
|
|
|
21
27
|
| Exact methods, properties, defaults, event payloads, percentages | [references/api.md](references/api.md) |
|
|
22
28
|
| Install, Classic/Alloy structure, assets, cleanup, lifecycle | [references/project-setup.md](references/project-setup.md) |
|
|
23
29
|
| Choose a runnable upstream example | [references/examples.md](references/examples.md) |
|
|
30
|
+
| Choose or tune a physical model, derive equations/units, diagnose FPS-dependent motion | [references/physics.md](references/physics.md) |
|
|
24
31
|
| Reusable level, pooling, HUD, collision, path, timer patterns | [references/patterns.md](references/patterns.md) |
|
|
25
32
|
| Platformer, racer, shooter, runner, rhythm, ball-game recipes | [references/recipes-action.md](references/recipes-action.md) |
|
|
26
33
|
| Cards, point-and-click, particles, ropes, camera, effects | [references/recipes-adventure-effects.md](references/recipes-adventure-effects.md) |
|
|
@@ -127,7 +134,9 @@ When sources disagree, use this order:
|
|
|
127
134
|
3. Upstream `README.md` and `TUTORIAL.md` for intended public usage.
|
|
128
135
|
4. Upstream `TODO.md` for what remains partial or absent.
|
|
129
136
|
|
|
130
|
-
|
|
137
|
+
Rechecked upstream HEAD on 2026-10-12: it remains `3bea2f4`. The catalog contains 34 demos. Examples establish intended API combinations; source inspection does not certify an installed binary or hardware behavior. Keep local fork changes separate from that upstream pin.
|
|
138
|
+
|
|
139
|
+
Known source-level traps are collected in [references/physics.md](references/physics.md): thrust can be erased by the damping rest threshold, rope damping is per update and zero-delta rope updates are not a guaranteed freeze, and Rhythm's 400 ms subdivision comment is wrong at its stated 150 BPM. The wall-slide flags still have no demo; their contract comes from the README and both native implementations. Classify a wrong demo comment separately from a reproduced native-engine defect before proposing an upstream change.
|
|
131
140
|
|
|
132
141
|
## Before returning code
|
|
133
142
|
|
|
@@ -102,7 +102,7 @@ A normal Titanium view — add it to a window or any container, size it with the
|
|
|
102
102
|
| `pause()` / `resume()` | method | — | Render loop control. The activity/app lifecycle already pauses and resumes automatically |
|
|
103
103
|
| `backgroundColor` | string | — | GL clear color |
|
|
104
104
|
| `maxFps` | int | `0` | Frame cap. `60` stops 120 Hz ProMotion displays from doubling render work; `0` = display refresh rate |
|
|
105
|
-
| `timeScale` | float | `1` |
|
|
105
|
+
| `timeScale` | float | `1` | Multiplies the scene dt for physics, sheet animations, tweens, particles and camera. `0.5` = slow motion; at `0` rendering/touch continue. Rope's previous-displacement integration still runs at zero dt in the pinned source, so complete rope freeze is not guaranteed; see [physics.md](physics.md#verlet-ropes-and-tethers) |
|
|
106
106
|
| `surfaceWidth` / `surfaceHeight` | int | — | Read-only surface size in pixels |
|
|
107
107
|
| `cameraX` / `cameraY` | float | `0` | World-space offset of the view |
|
|
108
108
|
| `cameraScale` | float | `1` | Zoom, anchored on the view center |
|
|
@@ -192,6 +192,10 @@ On Android the buttons are captured at the activity window: the game view needs
|
|
|
192
192
|
|
|
193
193
|
`platformer.js` runs on either the on-screen buttons or a pad.
|
|
194
194
|
|
|
195
|
+
That single-view example does not establish independent receivers for several
|
|
196
|
+
retained iOS GameViews: the pinned controller adapter overwrites a shared
|
|
197
|
+
GCController callback. See [lifecycle and input ownership](project-setup.md#retained-ios-scenes-and-multiple-gameviews).
|
|
198
|
+
|
|
195
199
|
## SpriteSheet
|
|
196
200
|
|
|
197
201
|
Create one sheet per texture and share it across every sprite that uses it — sprites sharing a sheet batch into a single draw call.
|
|
@@ -271,7 +275,7 @@ Hit-testing runs against the transformed shape (rotation and scale included), to
|
|
|
271
275
|
| `velocityX`, `velocityY` | `0` | px/s |
|
|
272
276
|
| `gravity` | `0` | px/s², added to `velocityY`. Per sprite — there is no global gravity |
|
|
273
277
|
| `gravityX` | `0` | px/s², added to `velocityX`. The **sibling** of `gravity`, not half of a vector: `gravity` keeps its exact vertical meaning. Wind, a conveyor, or a top-down game whose "down" is sideways (`gravity: 0`, `gravityX` non-zero). Since 2026-08-27 |
|
|
274
|
-
| `linearDamping` | `0` |
|
|
278
|
+
| `linearDamping` | `0` | Coefficient in 1/s: each step retains `max(0, 1−linearDamping·dt)` of both velocity axes, after thrust/gravity and before position. Below combined speed **4 px/s** it zeroes both axes; this can erase a small first thrust step. ~`0.6` is used for pool felt, but damping acts even without contact. Negative values clamp to0. See [physics.md](physics.md#thrust-inertia-and-linear-damping) |
|
|
275
279
|
| `maxSpeed` | `500` | px/s cap applied **only** to `thrust` acceleration and the `carMode` model. Writing `velocityX`/`velocityY` directly is never clamped |
|
|
276
280
|
| `angularVelocity` | `0` | deg/s |
|
|
277
281
|
| `thrust` | `0` | px/s² along the current heading (Newtonian flight) |
|
|
@@ -573,6 +577,10 @@ A native Verlet chain: integration and distance constraints run in the game loop
|
|
|
573
577
|
| `visible` | `true` | |
|
|
574
578
|
| `endX`, `endY` | — | Read-only live position of the loose end (grappling-hook tips) |
|
|
575
579
|
|
|
580
|
+
Per-step retention is not a per-second rate. Rope's existing displacement and
|
|
581
|
+
constraint passes still execute at `dt=0` in the pinned implementation;
|
|
582
|
+
see [Verlet equations and pause limits](physics.md#verlet-ropes-and-tethers).
|
|
583
|
+
|
|
576
584
|
The tether yields at the end no finger owns: with a fixed head anchor the tail sprite is simply leashed, but with sprites on both ends you can drag either one and the other is towed once the rope goes taut.
|
|
577
585
|
|
|
578
586
|
## TileLayer
|
|
@@ -94,6 +94,12 @@ Telemetry is opt-in inside the renderers. With the HUD disabled and no `performa
|
|
|
94
94
|
|
|
95
95
|
## Common diagnostic order
|
|
96
96
|
|
|
97
|
+
For a physics discrepancy, record the installed build/commit, surface size,
|
|
98
|
+
`timeScale`, input values and actual FPS first. `maxFps` is a cap, not a fixed
|
|
99
|
+
physics step. A visible thruster proves an animation state, not acceleration.
|
|
100
|
+
The damping rest threshold can erase a small first thrust step, and Rope uses
|
|
101
|
+
per-update damping. See [physics.md](physics.md#time-step-and-frame-rate).
|
|
102
|
+
|
|
97
103
|
1. Confirm the object was added and is visible/in bounds.
|
|
98
104
|
2. Turn on the relevant sprite/layer debug shape, then the global overlay if relationships are unclear.
|
|
99
105
|
3. Verify `collisionGroup` is on the target and `solidWith`/`collidesWith` on the mover.
|
|
@@ -2,7 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
Verified against all 34 self-contained demos under `ti.game@3bea2f4:example/`, plus the launcher `example/app.js` and the shared back-control helper `example/backnav.js` (neither is a demo). `wallhit` now has one user — `worldwrap.js` counts bolt hits with it — but `wallSlideSpeed` and the `onWallLeft`/`onWallRight` flags still have no demo; for those use [the platformer recipe](recipes-action.md#platformer), verified against both native implementations and the README contract.
|
|
4
4
|
|
|
5
|
-
The demos
|
|
5
|
+
The demos show intended API combinations; reading them does not verify an
|
|
6
|
+
installed module or device. They are **not** production templates: most keep
|
|
7
|
+
state in one file, repeat launcher/back-button plumbing, and still use pre-ES6
|
|
8
|
+
syntax. Start from the closest demo, retain the demonstrated engine calls,
|
|
9
|
+
then apply the focused structure and cleanup patterns in this skill.
|
|
10
|
+
|
|
11
|
+
For equations, units, genre selection and frame-rate limits, use
|
|
12
|
+
[physics.md](physics.md). Rhythm's 400 ms interval is a quarter note at its
|
|
13
|
+
stated 150 BPM, despite the upstream "eighth" comments. Flappy replaces
|
|
14
|
+
vertical velocity per tap; it does not add repeated impulses. The curated
|
|
15
|
+
Lunar Lander recipe is not an additional upstream demo.
|
|
6
16
|
|
|
7
17
|
| Demo | What it proves | Production-oriented reference |
|
|
8
18
|
| --- | --- | --- |
|
|
@@ -206,7 +206,17 @@ Slower layers read as further away. Three layers (clouds at 0.15×, hills at 0.4
|
|
|
206
206
|
|
|
207
207
|
### Multitouch on-screen controls
|
|
208
208
|
|
|
209
|
-
|
|
209
|
+
Use separate sibling input targets for held directions and actions. Their
|
|
210
|
+
native control type also matters for simultaneous touch; the factory below
|
|
211
|
+
uses Label rather than UIButton-backed controls.
|
|
212
|
+
|
|
213
|
+
The factory below deliberately uses Label. In Titanium SDK13.4.1.GA on iOS,
|
|
214
|
+
TiUIButton sets its internal UIButton's `exclusiveTouch=YES`; changing the
|
|
215
|
+
outer view's multitouch flag does not remove that exclusivity. Keep held
|
|
216
|
+
flight controls as sibling Label/View targets or native game sprites and
|
|
217
|
+
verify simultaneous input on-device. See `iphone/Classes/TiUIButton.m`,
|
|
218
|
+
method `button`, in that SDK; this is a Titanium UI boundary, not a ti.game
|
|
219
|
+
physics discrepancy.
|
|
210
220
|
|
|
211
221
|
```javascript
|
|
212
222
|
function makeButton(title, position, fontSize) {
|
|
@@ -487,6 +497,10 @@ Two things bite here. The sweep **ignores** anything that is not `solidMode: 'bl
|
|
|
487
497
|
|
|
488
498
|
**`linearDamping` is the missing friction, with a caveat.** `drag` only ever worked inside `carMode`; this is the same idea for ordinary sprites, and it is what brings a pool table to rest. But nothing checks contact — it bleeds speed on both axes, in the air as much as on the felt, and along a slope as much as across it. Right for a table, wrong for a hill. Below a combined 4 px/s the engine zeroes the velocity outright, so a deliberate 3 px/s drift dies the moment that sprite also carries damping.
|
|
489
499
|
|
|
500
|
+
That threshold can also erase the first increment of an accelerating ship.
|
|
501
|
+
Read [thrust and damping](physics.md#thrust-inertia-and-linear-damping) before
|
|
502
|
+
using a permanent coasting brake on a powered sprite.
|
|
503
|
+
|
|
490
504
|
**A bouncy surface is now a property of the surface.** `restitution` is read off both sides and mixed as `max`, so a springy floor rebounds riders that are not themselves bouncy:
|
|
491
505
|
|
|
492
506
|
```javascript
|
|
@@ -673,7 +687,15 @@ What still belongs in `setTimeout`: anything that must keep running while the ga
|
|
|
673
687
|
|
|
674
688
|
### Hit-stop on impact
|
|
675
689
|
|
|
676
|
-
|
|
690
|
+
Giving the scene zero dt for a few frames makes an impact read before the
|
|
691
|
+
explosion starts, while it keeps drawing and accepting touches. This avoids
|
|
692
|
+
restarting the render loop. (Pattern from Titanium Lander: 140 ms on a crash,
|
|
693
|
+
90 ms when a shield absorbs a hit.)
|
|
694
|
+
|
|
695
|
+
This sets scene dt to zero, not a universal suspension of every update.
|
|
696
|
+
Rope's previous-displacement and constraint pass still run in the pinned
|
|
697
|
+
source; verify hit-stop separately for rope scenes. See
|
|
698
|
+
[physics.md](physics.md#verlet-ropes-and-tethers).
|
|
677
699
|
|
|
678
700
|
```javascript
|
|
679
701
|
let hitStopTimer = null;
|