@ak--47/dungeon-master 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.md +7 -7
  2. package/dungeons/technical/ad-spend-schema.json +128 -0
  3. package/dungeons/technical/ad-spend.js +116 -0
  4. package/dungeons/technical/anonymous-users-schema.json +91 -0
  5. package/dungeons/technical/anonymous-users.js +102 -0
  6. package/dungeons/technical/array-of-object-lookup-schema.json +191 -0
  7. package/dungeons/{array-of-object-lookup.js → technical/array-of-object-lookup.js} +11 -4
  8. package/dungeons/technical/experiments-schema.json +197 -0
  9. package/dungeons/technical/experiments.js +168 -0
  10. package/dungeons/technical/foobar-schema.json +362 -0
  11. package/dungeons/{foobar.js → technical/foobar.js} +2 -2
  12. package/dungeons/technical/group-analytics-schema.json +149 -0
  13. package/dungeons/technical/group-analytics.js +151 -0
  14. package/dungeons/technical/mirror-strategies-schema.json +84 -0
  15. package/dungeons/technical/mirror-strategies.js +126 -0
  16. package/dungeons/technical/nested-objects-schema.json +145 -0
  17. package/dungeons/technical/nested-objects.js +207 -0
  18. package/dungeons/technical/retention-cadence-schema.json +37 -0
  19. package/dungeons/{retention-cadence.js → technical/retention-cadence.js} +1 -1
  20. package/dungeons/technical/sanity-schema.json +185 -0
  21. package/dungeons/{sanity.js → technical/sanity.js} +3 -2
  22. package/dungeons/technical/scale-test-schema.json +70 -0
  23. package/dungeons/technical/scale-test.js +90 -0
  24. package/dungeons/technical/scd-schema.json +270 -0
  25. package/dungeons/{scd.js → technical/scd.js} +19 -10
  26. package/dungeons/technical/simple-schema.json +278 -0
  27. package/dungeons/{simple.js → technical/simple.js} +6 -6
  28. package/dungeons/technical/simplest-schema.json +635 -0
  29. package/dungeons/{simplest.js → technical/simplest.js} +6 -6
  30. package/dungeons/technical/text-generation-schema.json +1059 -0
  31. package/dungeons/{text-generation.js → technical/text-generation.js} +23 -9
  32. package/dungeons/vertical/community-schema.json +557 -0
  33. package/dungeons/vertical/community.js +788 -0
  34. package/dungeons/vertical/devtools-schema.json +580 -0
  35. package/dungeons/vertical/devtools.js +837 -0
  36. package/dungeons/vertical/ecommerce-schema.json +586 -0
  37. package/dungeons/{ecommerce.js → vertical/ecommerce.js} +34 -3
  38. package/dungeons/vertical/education-schema.json +697 -0
  39. package/dungeons/{education.js → vertical/education.js} +54 -36
  40. package/dungeons/vertical/fintech-schema.json +563 -0
  41. package/dungeons/{fintech.js → vertical/fintech.js} +91 -53
  42. package/dungeons/vertical/fitness-schema.json +508 -0
  43. package/dungeons/vertical/fitness.js +802 -0
  44. package/dungeons/vertical/food-delivery-schema.json +678 -0
  45. package/dungeons/{food.js → vertical/food-delivery.js} +51 -23
  46. package/dungeons/vertical/gaming-schema.json +394 -0
  47. package/dungeons/{gaming.js → vertical/gaming.js} +9 -7
  48. package/dungeons/vertical/healthcare-schema.json +527 -0
  49. package/dungeons/vertical/healthcare.js +769 -0
  50. package/dungeons/vertical/insurance-application-schema.json +466 -0
  51. package/dungeons/{insurance-application.js → vertical/insurance-application.js} +33 -29
  52. package/dungeons/vertical/logistics-schema.json +552 -0
  53. package/dungeons/vertical/logistics.js +793 -0
  54. package/dungeons/vertical/marketplace-schema.json +511 -0
  55. package/dungeons/vertical/marketplace.js +844 -0
  56. package/dungeons/vertical/media-schema.json +787 -0
  57. package/dungeons/{media.js → vertical/media.js} +94 -16
  58. package/dungeons/vertical/rpg-schema.json +654 -0
  59. package/dungeons/{rpg.js → vertical/rpg.js} +78 -57
  60. package/dungeons/vertical/sass-schema.json +653 -0
  61. package/dungeons/{sass.js → vertical/sass.js} +49 -23
  62. package/dungeons/vertical/social-schema.json +552 -0
  63. package/dungeons/{social.js → vertical/social.js} +60 -14
  64. package/dungeons/vertical/travel-schema.json +558 -0
  65. package/dungeons/vertical/travel.js +736 -0
  66. package/index.js +19 -15
  67. package/lib/core/config-validator.js +286 -1
  68. package/lib/core/context.js +7 -5
  69. package/lib/generators/adspend.js +3 -3
  70. package/lib/generators/events.js +141 -14
  71. package/lib/generators/funnels.js +67 -7
  72. package/lib/generators/text.js +2 -2
  73. package/lib/orchestrators/user-loop.js +441 -22
  74. package/lib/templates/soup-presets.js +2 -2
  75. package/lib/utils/utils.js +4 -5
  76. package/package.json +4 -3
  77. package/scripts/dungeon-to-json.mjs +163 -0
  78. package/scripts/extract-dungeon-schema.mjs +297 -0
  79. package/scripts/json-to-dungeon.mjs +200 -0
  80. package/scripts/run-dungeon.mjs +76 -0
  81. package/scripts/run-many.mjs +118 -0
  82. package/scripts/verify-runner.mjs +42 -0
  83. package/types.d.ts +313 -1
  84. package/dungeons/array-of-object-lookup-schema.json +0 -327
  85. package/dungeons/ecommerce-schema.json +0 -462
  86. package/dungeons/education-schema.json +0 -2409
  87. package/dungeons/fintech-schema.json +0 -14034
  88. package/dungeons/foobar-schema.json +0 -403
  89. package/dungeons/food-delivery-schema.json +0 -192
  90. package/dungeons/food-delivery.js +0 -602
  91. package/dungeons/food-schema.json +0 -1152
  92. package/dungeons/gaming-schema.json +0 -1270
  93. package/dungeons/insurance-application-schema.json +0 -204
  94. package/dungeons/media-schema.json +0 -906
  95. package/dungeons/retention-cadence-schema.json +0 -78
  96. package/dungeons/rpg-schema.json +0 -4526
  97. package/dungeons/sanity-schema.json +0 -255
  98. package/dungeons/sass-schema.json +0 -1291
  99. package/dungeons/scd-schema.json +0 -919
  100. package/dungeons/simple-schema.json +0 -608
  101. package/dungeons/simplest-schema.json +0 -1418
  102. package/dungeons/social-schema.json +0 -1118
  103. package/dungeons/text-generation-schema.json +0 -3096
@@ -0,0 +1,654 @@
1
+ {
2
+ "events": [
3
+ {
4
+ "event": "character created",
5
+ "isFirstEvent": true,
6
+ "properties": {
7
+ "character_class": [
8
+ "Warrior",
9
+ "Mage",
10
+ "Rogue",
11
+ "Cleric",
12
+ "Ranger",
13
+ "Paladin"
14
+ ],
15
+ "starting_race": [
16
+ "Human",
17
+ "Elf",
18
+ "Dwarf",
19
+ "Halfling",
20
+ "Orc"
21
+ ]
22
+ }
23
+ },
24
+ {
25
+ "event": "tutorial completed",
26
+ "weight": 2,
27
+ "properties": {
28
+ "completion_time_mins": [
29
+ 7,
30
+ 13,
31
+ 9,
32
+ 20,
33
+ 19,
34
+ 14
35
+ ],
36
+ "skipped": {
37
+ "$type": "array"
38
+ }
39
+ }
40
+ },
41
+ {
42
+ "event": "quest accepted",
43
+ "weight": 15,
44
+ "properties": {
45
+ "quest_id": [
46
+ "quest_v6t6e9z1",
47
+ "quest_RNhqNGLN",
48
+ "quest_6ivE21rn",
49
+ "quest_4yz09AS7",
50
+ "quest_h2tXFm7U",
51
+ "quest_735bt6av",
52
+ "quest_Z08isTm3"
53
+ ],
54
+ "quest_type": [
55
+ "Main Story",
56
+ "Side Quest",
57
+ "Bounty",
58
+ "Exploration",
59
+ "Escort"
60
+ ],
61
+ "recommended_level": {
62
+ "$range": [
63
+ 2,
64
+ 44
65
+ ]
66
+ }
67
+ }
68
+ },
69
+ {
70
+ "event": "quest objective completed",
71
+ "weight": 12,
72
+ "properties": {
73
+ "quest_id": [
74
+ "quest_adceUMbA",
75
+ "quest_lrxjyCK4",
76
+ "quest_PnUo2HKN",
77
+ "quest_7CsY9rii",
78
+ "quest_xFNke2Be",
79
+ "quest_kmPBT9vS",
80
+ "quest_NKbiZbNY",
81
+ "quest_ltuyqOB9"
82
+ ],
83
+ "objective_number": {
84
+ "$range": [
85
+ 1,
86
+ 5
87
+ ]
88
+ }
89
+ }
90
+ },
91
+ {
92
+ "event": "quest turned in",
93
+ "weight": 10,
94
+ "properties": {
95
+ "quest_id": [
96
+ "quest_2wOpZNVS",
97
+ "quest_efJSyP7z",
98
+ "quest_lZR0pmyR",
99
+ "quest_vyRcQevj",
100
+ "quest_Ahb1p9B8",
101
+ "quest_fOZ6b6Ig",
102
+ "quest_h5HwXbFU",
103
+ "quest_GjtUBoBr"
104
+ ],
105
+ "reward_gold": {
106
+ "$range": [
107
+ 53,
108
+ 421
109
+ ]
110
+ },
111
+ "reward_xp": {
112
+ "$range": [
113
+ 254,
114
+ 1711
115
+ ]
116
+ },
117
+ "compass_user": [
118
+ false
119
+ ],
120
+ "subscriber_advantage": [
121
+ "Free"
122
+ ]
123
+ }
124
+ },
125
+ {
126
+ "event": "enter dungeon",
127
+ "weight": 18,
128
+ "properties": {
129
+ "dungeon_id": [
130
+ "dungeon_kQNoxB",
131
+ "dungeon_WRkolB",
132
+ "dungeon_jBuJ69",
133
+ "dungeon_Co0ULM",
134
+ "dungeon_Bkz51G",
135
+ "dungeon_hzMy5y",
136
+ "dungeon_vWAFhG",
137
+ "dungeon_fKj6E0"
138
+ ],
139
+ "difficulty": [
140
+ "Easy",
141
+ "Medium",
142
+ "Hard",
143
+ "Deadly"
144
+ ],
145
+ "party_size": {
146
+ "$range": [
147
+ 1,
148
+ 4
149
+ ]
150
+ }
151
+ }
152
+ },
153
+ {
154
+ "event": "exit dungeon",
155
+ "weight": 14,
156
+ "properties": {
157
+ "dungeon_id": [
158
+ "dungeon_xF3rB7",
159
+ "dungeon_kxNdzp",
160
+ "dungeon_4NnsVR",
161
+ "dungeon_NJ1OFb",
162
+ "dungeon_aDW6hP",
163
+ "dungeon_LBdWOh",
164
+ "dungeon_7kM29N",
165
+ "dungeon_7hV1y3",
166
+ "dungeon_UvwVQ6",
167
+ "dungeon_QGV8Gn"
168
+ ],
169
+ "time_spent_mins": {
170
+ "$range": [
171
+ 26,
172
+ 99
173
+ ]
174
+ },
175
+ "completion_status": [
176
+ "completed",
177
+ "abandoned",
178
+ "died"
179
+ ],
180
+ "strategic_explorer": [
181
+ false
182
+ ],
183
+ "legendary_weapon_equipped": [
184
+ false
185
+ ],
186
+ "subscriber_advantage": [
187
+ "Free"
188
+ ]
189
+ }
190
+ },
191
+ {
192
+ "event": "find treasure",
193
+ "weight": 16,
194
+ "properties": {
195
+ "treasure_type": [
196
+ "Gold",
197
+ "Weapon",
198
+ "Armor",
199
+ "Potion",
200
+ "Scroll",
201
+ "Rare Artifact"
202
+ ],
203
+ "treasure_value": {
204
+ "$range": [
205
+ 87,
206
+ 942
207
+ ]
208
+ },
209
+ "legendary_drop": [
210
+ false
211
+ ],
212
+ "strategic_explorer": [
213
+ false
214
+ ],
215
+ "subscriber_advantage": [
216
+ "Free"
217
+ ],
218
+ "elite_bonus": [
219
+ false
220
+ ]
221
+ }
222
+ },
223
+ {
224
+ "event": "player death",
225
+ "weight": 8,
226
+ "properties": {
227
+ "cause_of_death": [
228
+ "Monster",
229
+ "Trap",
230
+ "Fall Damage",
231
+ "Poison",
232
+ "Friendly Fire"
233
+ ],
234
+ "player_level": {
235
+ "$range": [
236
+ 3,
237
+ 49
238
+ ]
239
+ },
240
+ "resurrection_used": {
241
+ "$type": "array"
242
+ },
243
+ "cursed_week": [
244
+ false
245
+ ],
246
+ "near_death_survival": [
247
+ false
248
+ ],
249
+ "subscriber_advantage": [
250
+ "Free"
251
+ ]
252
+ }
253
+ },
254
+ {
255
+ "event": "level up",
256
+ "weight": 5,
257
+ "properties": {
258
+ "new_level": {
259
+ "$range": [
260
+ 4,
261
+ 47
262
+ ]
263
+ },
264
+ "stat_points_gained": {
265
+ "$range": [
266
+ 1,
267
+ 5
268
+ ]
269
+ }
270
+ }
271
+ },
272
+ {
273
+ "event": "item purchased",
274
+ "weight": 11,
275
+ "properties": {
276
+ "item_id": [
277
+ "item_TZCScHf",
278
+ "item_dSBeAVR",
279
+ "item_sQnciyo",
280
+ "item_pbc0cWE",
281
+ "item_oNfWFVl",
282
+ "item_NCcoxqr",
283
+ "item_ay31tYh",
284
+ "item_O3zSaPr",
285
+ "item_leeA81K"
286
+ ],
287
+ "item_type": [
288
+ "Weapon",
289
+ "Armor",
290
+ "Potion",
291
+ "Scroll",
292
+ "Mount",
293
+ "Cosmetic"
294
+ ],
295
+ "price_gold": {
296
+ "$range": [
297
+ 88,
298
+ 442
299
+ ]
300
+ },
301
+ "vendor_type": [
302
+ "Town",
303
+ "Dungeon",
304
+ "Special Event"
305
+ ]
306
+ }
307
+ },
308
+ {
309
+ "event": "item sold",
310
+ "weight": 7,
311
+ "properties": {
312
+ "item_id": [
313
+ "item_43Nwgf8",
314
+ "item_Pa0KwVT",
315
+ "item_SicHTtQ",
316
+ "item_JMBpV0p",
317
+ "item_l8h3LR9",
318
+ "item_Dz6LFAT"
319
+ ],
320
+ "item_type": [
321
+ "Weapon",
322
+ "Armor",
323
+ "Potion",
324
+ "Scroll",
325
+ "Junk"
326
+ ],
327
+ "sell_price": {
328
+ "$range": [
329
+ 49,
330
+ 206
331
+ ]
332
+ }
333
+ }
334
+ },
335
+ {
336
+ "event": "real money purchase",
337
+ "weight": 3,
338
+ "properties": {
339
+ "product": [
340
+ "Premium Currency (1000)",
341
+ "Premium Currency (5000)",
342
+ "Lucky Charm Pack",
343
+ "Legendary Weapon Chest",
344
+ "Cosmetic Bundle",
345
+ "Season Pass"
346
+ ],
347
+ "price_usd": [
348
+ 9.99,
349
+ 99.99,
350
+ 4.99,
351
+ 49.99,
352
+ 19.99
353
+ ],
354
+ "payment_method": [
355
+ "Credit Card",
356
+ "PayPal",
357
+ "Apple Pay",
358
+ "Google Pay"
359
+ ],
360
+ "lucky_charm_effect": [
361
+ false
362
+ ]
363
+ }
364
+ },
365
+ {
366
+ "event": "guild joined",
367
+ "weight": 4,
368
+ "properties": {
369
+ "guild_size": {
370
+ "$range": [
371
+ 19,
372
+ 92
373
+ ]
374
+ },
375
+ "guild_level": {
376
+ "$range": [
377
+ 1,
378
+ 18
379
+ ]
380
+ }
381
+ }
382
+ },
383
+ {
384
+ "event": "guild left",
385
+ "properties": {
386
+ "reason": [
387
+ "Inactive",
388
+ "Found Better Guild",
389
+ "Conflict",
390
+ "Disbanded"
391
+ ]
392
+ }
393
+ },
394
+ {
395
+ "event": "inspect",
396
+ "weight": 9,
397
+ "properties": {
398
+ "inspect_target": [
399
+ "NPC",
400
+ "Monster",
401
+ "Treasure Chest",
402
+ "Door",
403
+ "Statue",
404
+ "Bookshelf"
405
+ ]
406
+ }
407
+ },
408
+ {
409
+ "event": "search for clues",
410
+ "weight": 8,
411
+ "properties": {
412
+ "location_type": [
413
+ "Dungeon Entrance",
414
+ "Hidden Room",
415
+ "Quest Location",
416
+ "Town Square"
417
+ ],
418
+ "clue_found": {
419
+ "$type": "array"
420
+ }
421
+ }
422
+ },
423
+ {
424
+ "event": "use item",
425
+ "weight": 14,
426
+ "properties": {
427
+ "item_id": [
428
+ "item_t6XgcKS",
429
+ "item_Na3V3zk",
430
+ "item_Y9vFtiI",
431
+ "item_OQk8H5s",
432
+ "item_oGyEl9U",
433
+ "item_Je2wZaS",
434
+ "item_5yr92Uu",
435
+ "item_5lqG1ni",
436
+ "item_0EmRdUR"
437
+ ],
438
+ "item_type": [
439
+ "Health Potion",
440
+ "Mana Potion",
441
+ "Buff Scroll",
442
+ "Ancient Compass",
443
+ "Lucky Charm",
444
+ "Resurrection Stone"
445
+ ],
446
+ "context": [
447
+ "Combat",
448
+ "Exploration",
449
+ "Boss Fight",
450
+ "Casual"
451
+ ]
452
+ }
453
+ },
454
+ {
455
+ "event": "combat initiated",
456
+ "weight": 20,
457
+ "properties": {
458
+ "enemy_type": [
459
+ "Goblin",
460
+ "Skeleton",
461
+ "Dragon",
462
+ "Demon",
463
+ "Undead",
464
+ "Beast"
465
+ ],
466
+ "enemy_level": {
467
+ "$range": [
468
+ 1,
469
+ 40
470
+ ]
471
+ },
472
+ "combat_duration_sec": {
473
+ "$range": [
474
+ 35,
475
+ 269
476
+ ]
477
+ }
478
+ }
479
+ },
480
+ {
481
+ "event": "combat completed",
482
+ "weight": 18,
483
+ "properties": {
484
+ "outcome": [
485
+ "Victory",
486
+ "Defeat",
487
+ "Fled"
488
+ ],
489
+ "loot_gained": {
490
+ "$type": "array"
491
+ },
492
+ "legendary_weapon_equipped": [
493
+ false
494
+ ],
495
+ "subscriber_advantage": [
496
+ "Free"
497
+ ],
498
+ "near_death_survival": [
499
+ false
500
+ ],
501
+ "guild_member_retained": [
502
+ false
503
+ ]
504
+ }
505
+ }
506
+ ],
507
+ "superProps": {
508
+ "platform": [
509
+ "PC",
510
+ "Mac",
511
+ "PlayStation",
512
+ "Xbox",
513
+ "Switch"
514
+ ],
515
+ "graphics_quality": [
516
+ "Low",
517
+ "Medium",
518
+ "High",
519
+ "Ultra"
520
+ ],
521
+ "subscription_tier": [
522
+ "Elite",
523
+ "Free",
524
+ "Premium"
525
+ ]
526
+ },
527
+ "userProps": {
528
+ "preferred_playstyle": [
529
+ "Solo Explorer",
530
+ "Group Raider",
531
+ "PvP Fighter",
532
+ "Quest Completionist",
533
+ "Treasure Hunter"
534
+ ],
535
+ "total_playtime_hours": {
536
+ "$range": [
537
+ 16,
538
+ 473
539
+ ]
540
+ },
541
+ "achievement_points": {
542
+ "$range": [
543
+ 252,
544
+ 4648
545
+ ]
546
+ },
547
+ "favorite_class": [
548
+ "Warrior",
549
+ "Mage",
550
+ "Rogue",
551
+ "Cleric",
552
+ "Ranger",
553
+ "Paladin"
554
+ ]
555
+ },
556
+ "funnels": [
557
+ {
558
+ "sequence": [
559
+ "character created",
560
+ "tutorial completed",
561
+ "quest accepted"
562
+ ],
563
+ "isFirstFunnel": true,
564
+ "conversionRate": 75,
565
+ "timeToConvert": 0.5
566
+ },
567
+ {
568
+ "sequence": [
569
+ "combat initiated",
570
+ "combat completed",
571
+ "use item"
572
+ ],
573
+ "conversionRate": 75,
574
+ "timeToConvert": 0.5,
575
+ "weight": 5
576
+ },
577
+ {
578
+ "sequence": [
579
+ "enter dungeon",
580
+ "find treasure",
581
+ "exit dungeon"
582
+ ],
583
+ "conversionRate": 60,
584
+ "timeToConvert": 2,
585
+ "weight": 4,
586
+ "props": {
587
+ "dungeon_id": [
588
+ "dungeon_hzMy5y",
589
+ "dungeon_k3x4Vi",
590
+ "dungeon_pUjypt",
591
+ "dungeon_8BMTL6",
592
+ "dungeon_kQNoxB",
593
+ "dungeon_exR0A6"
594
+ ],
595
+ "difficulty": [
596
+ "Easy",
597
+ "Medium",
598
+ "Hard",
599
+ "Deadly"
600
+ ]
601
+ }
602
+ },
603
+ {
604
+ "sequence": [
605
+ "quest accepted",
606
+ "quest objective completed",
607
+ "quest turned in"
608
+ ],
609
+ "conversionRate": 55,
610
+ "timeToConvert": 3,
611
+ "weight": 3,
612
+ "props": {
613
+ "quest_id": [
614
+ "quest_ESjLW1oT",
615
+ "quest_6Gg4dRKm",
616
+ "quest_Hu6lR8Cy",
617
+ "quest_NKbiZbNY",
618
+ "quest_ZhYgMb9w",
619
+ "quest_W650RdCt",
620
+ "quest_iSu5Vc6J"
621
+ ]
622
+ }
623
+ },
624
+ {
625
+ "sequence": [
626
+ "inspect",
627
+ "search for clues",
628
+ "enter dungeon"
629
+ ],
630
+ "conversionRate": 50,
631
+ "timeToConvert": 1,
632
+ "weight": 3
633
+ },
634
+ {
635
+ "sequence": [
636
+ "item purchased",
637
+ "use item",
638
+ "item sold"
639
+ ],
640
+ "conversionRate": 45,
641
+ "timeToConvert": 6,
642
+ "weight": 2
643
+ },
644
+ {
645
+ "sequence": [
646
+ "guild joined",
647
+ "level up",
648
+ "real money purchase"
649
+ ],
650
+ "conversionRate": 25,
651
+ "timeToConvert": 24
652
+ }
653
+ ]
654
+ }