kwabs22 commited on
Commit
cce05a1
1 Parent(s): 286206e

Import long variables for some readability

Browse files
Files changed (2) hide show
  1. app.py +50 -848
  2. relatively_constant_variables.py +1092 -0
app.py CHANGED
@@ -13,6 +13,9 @@ import time
13
  import psutil
14
  from sentence_transformers import SentenceTransformer
15
 
 
 
 
16
  # # Initialize the zero tensor on CUDA
17
  # zero = torch.Tensor([0]).cuda()
18
  # print(zero.device) # This will print 'cpu' outside the @spaces.GPU decorated function
@@ -202,14 +205,7 @@ llmguide_model = AutoModelForCausalLM.from_pretrained(
202
  )
203
  llmguide_tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2-0.5B-Instruct")
204
 
205
- # Sample knowledge base (replace with your own data)
206
- knowledge_base = [
207
- {"id": "doc1", "content": "The capital of France is Paris."},
208
- {"id": "doc2", "content": "Python is a popular programming language."},
209
- {"id": "doc3", "content": "Machine learning is a subset of artificial intelligence."},
210
- {"id": "doc4", "content": "The Earth orbits around the Sun."},
211
- {"id": "doc5", "content": "orbits is the name of a korean fangroup"},
212
- ]
213
 
214
  # Create embeddings for the knowledge base
215
  knowledge_base_embeddings = embedding_model.encode([doc["content"] for doc in knowledge_base])
@@ -302,35 +298,11 @@ def process_query(query, use_rag, stream=False):
302
 
303
  #--------------------------------------------------------------------------------------------------------------------------------
304
 
305
- FAQAllprompts = {
306
- "Brainstorming for this space": [
307
- ("My problem to solve is", "- please make 10 sub problems have to solve from this:"),
308
- ],
309
- "Expansive Problem solving": [
310
- ("My problem to solve is", "- please make 10 sub problems have to solve from this:"),
311
- ("My process to solve is", "- please make 10 sub processes have to solve from this:"),
312
- ("My goal to solve is", "- please make 10 sub goals have to solve from this:"),
313
- ("My task to solve is", "- please make 10 sub tasks have to solve from this:"),
314
- ("My phase to solve is", "- please make 10 sub phases have to solve from this:"),
315
- ("My component to solve is", "- please make 10 sub components have to solve from this:"),
316
- ("My element to solve is", "- please make 10 sub elements have to solve from this:"),
317
- ("A brief description of my current situation:", "- please list the most important task to pay attention to:"),
318
- ("A brief description of my current situation to analyse:", "- please conduct a situational analysis:"),
319
- ("A brief description of my current situation to decompose:", "- please conduct a problem decomposition:"),
320
- ],
321
- }
322
 
323
  #--------------------------------------------------------------------------------------------------------------------------------
324
- # Default configuration template
325
- default_config = {
326
- 'background': '/AutoGameBackgrounds/1stGameLoc123.png',
327
- 'inventory': [],
328
- 'skills': [],
329
- 'objectives': [],
330
- 'targets': [],
331
- 'story': [],
332
- 'actions': {}
333
- }
334
 
335
  # Helper functions to dynamically add items
336
  def add_inventory_item(inventory_items, type, name, description):
@@ -355,34 +327,7 @@ def add_target(targets_items, name, x, y, collisionType, collisiontext):
355
 
356
  #-----------------------------------------------------------------------------------------------------------------------------------
357
 
358
-
359
- # List of player engagement UI elements
360
- player_engagement_items = [
361
- "Health Bar", "Mana/Energy Bar", "Experience Bar", "Mini-Map", "Quest Tracker",
362
- "Inventory Quick Access Slots", "Skill Cooldown Indicators", "Currency Display",
363
- "Compass", "Timer/Clock", "Action Prompts", "Reticle/Crosshair", "Enemy Health Bars",
364
- "Score Display", "Inventory Grid", "Item Tooltip", "Item Categories/Tabs",
365
- "Equip/Unequip Buttons", "Item Sorting Options", "Character Stats Panel",
366
- "Character Model Viewer", "Quick Equip Slots", "Dialogue Box", "Dialogue Choices",
367
- "Character Portraits", "Character Name Display", "Subtitle Text", "World Map",
368
- "Local Map", "Fast Travel Points", "Map Markers", "Map Legend", "Crafting Recipe List",
369
- "Ingredient Slots", "Craft Button", "Crafting Progress Bar", "Skill Nodes",
370
- "Skill Descriptions", "Skill Point Counter", "Unlock Button", "Skill Path Highlight",
371
- "Quest List", "Quest Details Panel", "Quest Objectives", "Quest Rewards",
372
- "Quest Status Indicators", "Chat Box", "Player List", "Voice Chat Indicators",
373
- "Ping/Latency Indicator", "Party/Team UI", "Scoreboard", "Matchmaking Screen",
374
- "Pop-up Notifications", "Achievement Unlocks", "System Messages",
375
- "On-screen Key Prompts", "Environmental Interaction Icons", "Save/Auto-Save Indicators",
376
- "Credits Screen"
377
- ]
378
-
379
- # List of character-based story events
380
- story_events = [
381
- 'exploreLocation', 'discoverClue', 'meetCharacter', 'solveRiddle', 'findItem',
382
- 'faceChallenge', 'makeDecision', 'engageBattle', 'unlockAbility', 'learnSecret',
383
- 'completeMission', 'experienceSetback', 'earnReward', 'uncoverMystery', 'formAlliance',
384
- 'faceBetrayal', 'confrontNemesis', 'makeDiscovery', 'overcomeLoss', 'achieveVictory'
385
- ]
386
 
387
  def pick_random_items(items, n):
388
  return random.sample(items, n)
@@ -636,94 +581,7 @@ class Player:
636
  def update_knowledge(self, topic):
637
  self.knowledge[topic] = True
638
 
639
- # Define the states
640
- all_states = {
641
- 'village': {
642
- 'start': {
643
- "description": "You wake up in a small village. You hear a rumor about a lost treasure.",
644
- "choices": ['explore village', 'gather supplies', 'rest'],
645
- "transitions": {'explore village': 'village_rumor', 'gather supplies': 'village_supplies', 'rest': 'village_start'},
646
- "consequences": {
647
- 'gather supplies': lambda player: player.add_item('basic supplies')
648
- },
649
- "media": []
650
- },
651
- 'rumor': {
652
- "description": "You hear more details about the treasure hidden in the ancient ruins nearby.",
653
- "choices": ['decide to go', 'ignore'],
654
- "transitions": {'decide to go': 'village_supplies', 'ignore': 'village_start'},
655
- "consequences": {
656
- 'decide to go': lambda player: player.update_knowledge('treasure location')
657
- },
658
- "media": []
659
- },
660
- 'supplies': {
661
- "description": "You gather supplies for your journey.",
662
- "choices": ['head to forest', 'stay in village'],
663
- "transitions": {'head to forest': 'forest_forest', 'stay in village': 'village_start'},
664
- "media": []
665
- },
666
- },
667
- 'forest': {
668
- 'forest': {
669
- "description": "You enter the dense forest, heading towards the ruins.",
670
- "choices": ['travel further', 'return to village'],
671
- "transitions": {'travel further': 'ruins_ruins', 'return to village': 'village_start'},
672
- "media": []
673
- },
674
- },
675
- 'ruins': {
676
- 'ruins': {
677
- "description": "You reach the ancient ruins. The entrance is dark and eerie.",
678
- "choices": ['enter ruins', 'return to forest'],
679
- "transitions": {'enter ruins': 'ruins_explore', 'return to forest': 'forest_forest'},
680
- "media": []
681
- },
682
- 'explore': {
683
- "description": "You explore the ruins, encountering traps and puzzles.",
684
- "choices": ['solve puzzle', 'avoid traps'],
685
- "transitions": {'solve puzzle': 'ruins_hiddenPassage', 'avoid traps': 'ruins_ruins'},
686
- "media": []
687
- },
688
- 'hiddenPassage': {
689
- "description": "You solve a challenging puzzle and unlock a hidden passage.",
690
- "choices": ['enter passage', 'go back'],
691
- "transitions": {'enter passage': 'ruins_treasureRoom', 'go back': 'ruins_explore'},
692
- "media": []
693
- },
694
- 'treasureRoom': {
695
- "description": "You enter the treasure room and find the treasure chest.",
696
- "choices": ['take treasure', 'leave'],
697
- "transitions": {'take treasure': 'ruins_celebrate', 'leave': 'ruins_ruins'},
698
- "consequences": {
699
- 'take treasure': lambda player: player.add_item('treasure')
700
- },
701
- "media": []
702
- },
703
- 'celebrate': {
704
- "description": "You celebrate your discovery and decide to bring the treasure back to the village.",
705
- "choices": ['return to village'],
706
- "transitions": {'return to village': 'village_return'},
707
- "media": []
708
- },
709
- },
710
- 'village_return': {
711
- 'village_return': {
712
- "description": "You return to the village with the treasure and share it with the villagers.",
713
- "choices": ['end adventure'],
714
- "transitions": {'end adventure': 'end_end'},
715
- "media": []
716
- },
717
- },
718
- 'end': {
719
- 'end': {
720
- "description": "Your adventure ends here. The villagers are grateful and everyone's lives improve.",
721
- "choices": [],
722
- "transitions": {},
723
- "media": []
724
- },
725
- }
726
- }
727
 
728
  def validate_transitions(all_states):
729
  errors = []
@@ -951,6 +809,24 @@ def refresh_file_explorer():
951
 
952
  #-----------------------------------------------------------------------------------------------------------------------------------
953
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
954
  with gr.Blocks() as demo:
955
  gr.HTML("""<div style="width: 100%; text-align: center">Main ideas for this space is (June 2024) (Custom component planning?):</div>
956
  <div style="display: flex; justify-content: center; margin-bottom: 20px; align-items: center;">
@@ -973,7 +849,7 @@ with gr.Blocks() as demo:
973
  button.click(llmguide_generate_response, inputs=[FAQCustomButtonInput, gr.State(index), gr.State(category_name)], outputs=FAQMainOutput)
974
 
975
  with gr.Tab("General RAG (Pathfinder?) Attempt"):
976
- gr.HTML("Placeholder for weak RAG Type - Explanations through an opensource embeddings engine")
977
  # gr.Interface(
978
  # fn=rag,
979
  # inputs=[
@@ -1029,169 +905,31 @@ with gr.Blocks() as demo:
1029
  outputs=[llmguide_output, llmguide_tokens_per_second],
1030
  )
1031
 
1032
- Frontendpromptengforguide = """Suggest descriptions for media to fill the empty media fields -
1033
-
1034
- {
1035
- "village": {
1036
- "start": {
1037
- "description": "You wake up in a small village. You hear a rumor about a lost treasure.",
1038
- "choices": [
1039
- "explore village",
1040
- "gather supplies",
1041
- "rest"
1042
- ],
1043
- "transitions": {
1044
- "explore village": "village_rumor",
1045
- "gather supplies": "village_supplies",
1046
- "rest": "village_start"
1047
- },
1048
- "consequences": {
1049
- "gather supplies": {}
1050
- },
1051
- "media": []
1052
- },
1053
- "rumor": {
1054
- "description": "You hear more details about the treasure hidden in the ancient ruins nearby.",
1055
- "choices": [
1056
- "decide to go",
1057
- "ignore"
1058
- ],
1059
- "transitions": {
1060
- "decide to go": "village_supplies",
1061
- "ignore": "village_start"
1062
- },
1063
- "consequences": {
1064
- "decide to go": {}
1065
- },
1066
- "media": []
1067
- },
1068
- "supplies": {
1069
- "description": "You gather supplies for your journey.",
1070
- "choices": [
1071
- "head to forest",
1072
- "stay in village"
1073
- ],
1074
- "transitions": {
1075
- "head to forest": "forest_forest",
1076
- "stay in village": "village_start"
1077
- },
1078
- "media": []
1079
- }
1080
- },
1081
- "forest": {
1082
- "forest": {
1083
- "description": "You enter the dense forest, heading towards the ruins.",
1084
- "choices": [
1085
- "travel further",
1086
- "return to village"
1087
- ],
1088
- "transitions": {
1089
- "travel further": "ruins_ruins",
1090
- "return to village": "village_start"
1091
- },
1092
- "media": []
1093
- }
1094
- },
1095
- "ruins": {
1096
- "ruins": {
1097
- "description": "You reach the ancient ruins. The entrance is dark and eerie.",
1098
- "choices": [
1099
- "enter ruins",
1100
- "return to forest"
1101
- ],
1102
- "transitions": {
1103
- "enter ruins": "ruins_explore",
1104
- "return to forest": "forest_forest"
1105
- },
1106
- "media": []
1107
- },
1108
- "explore": {
1109
- "description": "You explore the ruins, encountering traps and puzzles.",
1110
- "choices": [
1111
- "solve puzzle",
1112
- "avoid traps"
1113
- ],
1114
- "transitions": {
1115
- "solve puzzle": "ruins_hiddenPassage",
1116
- "avoid traps": "ruins_ruins"
1117
- },
1118
- "media": []
1119
- },
1120
- "hiddenPassage": {
1121
- "description": "You solve a challenging puzzle and unlock a hidden passage.",
1122
- "choices": [
1123
- "enter passage",
1124
- "go back"
1125
- ],
1126
- "transitions": {
1127
- "enter passage": "ruins_treasureRoom",
1128
- "go back": "ruins_explore"
1129
- },
1130
- "media": []
1131
- },
1132
- "treasureRoom": {
1133
- "description": "You enter the treasure room and find the treasure chest.",
1134
- "choices": [
1135
- "take treasure",
1136
- "leave"
1137
- ],
1138
- "transitions": {
1139
- "take treasure": "ruins_celebrate",
1140
- "leave": "ruins_ruins"
1141
- },
1142
- "consequences": {
1143
- "take treasure": {}
1144
- },
1145
- "media": []
1146
- },
1147
- "celebrate": {
1148
- "description": "You celebrate your discovery and decide to bring the treasure back to the village.",
1149
- "choices": [
1150
- "return to village"
1151
- ],
1152
- "transitions": {
1153
- "return to village": "village_return"
1154
- },
1155
- "media": []
1156
- }
1157
- },
1158
- "village_return": {
1159
- "village_return": {
1160
- "description": "You return to the village with the treasure and share it with the villagers.",
1161
- "choices": [
1162
- "end adventure"
1163
- ],
1164
- "transitions": {
1165
- "end adventure": "end_end"
1166
- },
1167
- "media": []
1168
- }
1169
- },
1170
- "end": {
1171
- "end": {
1172
- "description": "Your adventure ends here. The villagers are grateful and everyone's lives improve.",
1173
- "choices": [],
1174
- "transitions": {},
1175
- "media": []
1176
- }
1177
- }
1178
- }
1179
- """
1180
-
1181
  with gr.Accordion("Decisions Creation to Story to Config Conversation", open=False):
1182
  with gr.Tab("Timeline Guide for Config Generation or evelution"):
1183
  with gr.Accordion("Empty Config shape for explaining to LLM", open=False):
1184
  gr.HTML(f"placeholder for current empty JSON config shape")
1185
  gr.HTML("Structural indicators of quality of config")
1186
- with gr.Tabs("Config Specific"):
 
 
 
 
 
 
 
 
 
 
 
1187
  gr.HTML("Timeline for making Timelines?")
1188
  gr.HTML("Componets (outside Code Support for Config): Decisions (and context explanation), Nested Sections, Media (Especially to affect decisions), Replayability (GTA and Tekken type mechanics in text form), Theme integration (Modified Varibles that affect UI or config order)")
1189
  gr.HTML("From Nothing <br>")
1190
  gr.HTML("From Existing <br>")
1191
- with gr.Tabs("Existing Game Analysis"):
1192
  gr.HTML("Existing Games eg. GTA Heists - Same Map with overlapping branching narratives, Battlefront - Elites amongst Commoners, Tekken Casino (one mistake = 1/2 or 1/3 of your Resources) and Turn based: 'Tactics' type nintendo games, Chess (and any other tile based game) ")
1193
  gr.HTML("Existing Game Rules for text - Cyberpunk RED, ")
1194
- with gr.Tabs("Multiplayer options"):
1195
  gr.HTML("Community playthrough = Tally of players choices, Random item placed in a random location - first person to get it wins, Survival by location or characters met")
1196
  with gr.Tab("Some Workflow Helpers (Removed as built into Semi-Auto)"):
1197
  gr.HTML("Song / Random Scenario to 'full game' manual or auto is end goal ")
@@ -1266,529 +1004,14 @@ Creating more diverse paths through the game""")
1266
  with gr.Tab("Mermaid Graphs and Nesting"):
1267
  gr.HTML("Claude Artifacts to illustrate nested structure brainstorms - <br> https://claude.site/artifacts/4a910d81-1541-49f4-8531-4f27fe56cd1e <br> https://claude.site/artifacts/265e9242-2093-46e1-9011-ed6ad938be90?fullscreen=false <br> ")
1268
  gr.HTML("")
1269
- with gr.Tab(""):
1270
- gr.HTML("")
1271
  with gr.Tab("Structural Inspirations"):
1272
  gr.HTML("GTA Heists - Replayability and stakes, Tekken - 2/3 mistakes = lost round ")
1273
  gr.HTML("Sports Scores, ")
1274
  with gr.Tab("Themes"):
1275
  gr.HTML("")
1276
 
1277
- originalconfigatbeinningofthisspace = """{
1278
- "village": {
1279
- "start": {
1280
- "description": "You wake up in a small village. You hear a rumor about a lost treasure.",
1281
- "choices": ['explore village', 'gather supplies', 'rest'],
1282
- "transitions": {'explore village': 'village_rumor', 'gather supplies': 'village_supplies', 'rest': 'village_start'},
1283
- "consequences": {
1284
- 'gather supplies': lambda player: player.add_item('basic supplies')
1285
- },
1286
- "media": []
1287
- },
1288
- "rumor": {
1289
- "description": "You hear more details about the treasure hidden in the ancient ruins nearby.",
1290
- "choices": ['decide to go', 'ignore'],
1291
- "transitions": {'decide to go': 'village_supplies', 'ignore': 'village_start'},
1292
- "consequences": {
1293
- 'decide to go': lambda player: player.update_knowledge('treasure location')
1294
- },
1295
- "media": []
1296
- },
1297
- "supplies": {
1298
- "description": "You gather supplies for your journey.",
1299
- "choices": ['head to forest', 'stay in village'],
1300
- "transitions": {'head to forest': 'forest_forest', 'stay in village': 'village_start'},
1301
- "media": []
1302
- },
1303
- },
1304
- "forest": {
1305
- "forest": {
1306
- "description": "You enter the dense forest, heading towards the ruins.",
1307
- "choices": ['travel further', 'return to village'],
1308
- "transitions": {'travel further': 'ruins_ruins', 'return to village': 'village_start'},
1309
- "media": []
1310
- },
1311
- },
1312
- "ruins": {
1313
- "ruins": {
1314
- "description": "You reach the ancient ruins. The entrance is dark and eerie.",
1315
- "choices": ['enter ruins', 'return to forest'],
1316
- "transitions": {'enter ruins': 'ruins_explore', 'return to forest': 'forest_forest'},
1317
- "media": []
1318
- },
1319
- "explore": {
1320
- "description": "You explore the ruins, encountering traps and puzzles.",
1321
- "choices": ['solve puzzle', 'avoid traps'],
1322
- "transitions": {'solve puzzle': 'ruins_hiddenPassage', 'avoid traps': 'ruins_ruins'},
1323
- "media": []
1324
- },
1325
- "hiddenPassage": {
1326
- "description": "You solve a challenging puzzle and unlock a hidden passage.",
1327
- "choices": ['enter passage', 'go back'],
1328
- "transitions": {'enter passage': 'ruins_treasureRoom', 'go back': 'ruins_explore'},
1329
- "media": []
1330
- },
1331
- "treasureRoom": {
1332
- "description": "You enter the treasure room and find the treasure chest.",
1333
- "choices": ['take treasure', 'leave'],
1334
- "transitions": {'take treasure': 'ruins_celebrate', 'leave': 'ruins_ruins'},
1335
- "consequences": {
1336
- 'take treasure': lambda player: player.add_item('treasure')
1337
- },
1338
- "media": []
1339
- },
1340
- "celebrate": {
1341
- "description": "You celebrate your discovery and decide to bring the treasure back to the village.",
1342
- "choices": ['return to village'],
1343
- "transitions": {'return to village': 'village_return'},
1344
- "media": []
1345
- },
1346
- },
1347
- "village_return": {
1348
- "village_return": {
1349
- "description": "You return to the village with the treasure and share it with the villagers.",
1350
- "choices": ['end adventure'],
1351
- "transitions": {'end adventure': 'end_end'},
1352
- "media": []
1353
- },
1354
- },
1355
- "end": {
1356
- "end": {
1357
- "description": "Your adventure ends here. The villagers are grateful and everyone's lives improve.",
1358
- "choices": [],
1359
- "transitions": {},
1360
- "media": []
1361
- },
1362
- }
1363
- }"""
1364
- #Analyzing Game Configuration Metrics - was the thread name of where the
1365
- claude3_5_06072024configtips = """Example Config Development Tab - Claude 3.5 Sonnet as the LLM Assitant
1366
-
1367
- This config is for a basic text based game engine I made with help many llms including you.
1368
- Thanks to all the help it loads which presented another problem, I dont have any structural metrics to assess the quality of the config.
1369
- What JSON things can we look at to see if it may be too bland for a person testing the game
1370
-
1371
-
1372
- Text-Based Game Configuration Analysis
1373
- 1. State Variety
1374
-
1375
- Total number of states: 13
1376
- Number of unique locations: 5 (village, forest, ruins, village_return, end)
1377
-
1378
- 2. Choice Diversity
1379
-
1380
- Average choices per state: 1.92
1381
- States with no choices: 1 (end state)
1382
- States with most choices: 3 (village_start with 3 choices)
1383
- Unique choices across all states: 17
1384
-
1385
- 3. Transition Complexity
1386
-
1387
- Total number of transitions: 25
1388
- Average transitions per state: 1.92
1389
- States with most transitions: 3 (village_start with 3 transitions)
1390
-
1391
- 4. Consequence Implementation
1392
-
1393
- States with consequences: 3
1394
- Total number of consequences: 3
1395
- Types of consequences: Adding items, Updating knowledge
1396
-
1397
- 5. Description Length
1398
-
1399
- Average description length: 13.15 words
1400
- Longest description: 24 words (village_return)
1401
- Shortest description: 4 words (village_supplies)
1402
 
1403
- 6. Cyclic Paths
1404
-
1405
- Presence of loops: Yes (e.g., village_start -> village_supplies -> village_start)
1406
-
1407
- 7. Dead Ends
1408
-
1409
- Number of dead ends: 1 (end state)
1410
-
1411
- 8. Media Integration
1412
-
1413
- States with media: 0
1414
- Total media elements: 0
1415
-
1416
- 9. Narrative Progression
1417
-
1418
- Clear beginning (village_start) and end (end) states
1419
- Multiple paths to reach the end
1420
-
1421
- 10. Player Agency
1422
-
1423
- Choices affect game progression
1424
- Some choices have consequences (3 instances)
1425
-
1426
- 11. Game Length
1427
-
1428
- Minimum steps to complete: 6 (village_start -> village_supplies -> forest_forest -> ruins_ruins -> ruins_explore -> ruins_hiddenPassage -> ruins_treasureRoom -> ruins_celebrate -> village_return -> end)
1429
- Maximum steps (including loops): Potentially infinite due to cycles
1430
-
1431
- 12. Replayability
1432
-
1433
- Multiple paths through the game
1434
- Some variability in outcomes based on choices
1435
-
1436
- #=============================================
1437
-
1438
- To assess the quality and potential blandness of your game configuration, we can analyze several structural metrics within the JSON. Here are some aspects we can examine:
1439
- Text-Based Game Configuration AnalysisClick to open document
1440
- Based on this analysis, here are some observations about the potential blandness of the game:
1441
-
1442
- Limited state variety: With only 13 states across 5 locations, the game might feel short and lacking in diversity. Consider adding more locations or states within existing locations.
1443
- Low average choices: An average of 1.92 choices per state might make the game feel linear. Increasing the number of choices in more states could improve player engagement.
1444
- Limited consequences: Only 3 states have consequences, which might make player choices feel less impactful. Adding more consequences could increase the sense of agency.
1445
- Short descriptions: The average description length of 13.15 words might not provide enough detail to immerse players. Consider expanding descriptions to create a richer narrative.
1446
- Lack of media: No states currently use media elements, which could make the game feel less engaging. Adding images, sound effects, or other media could enhance the player experience.
1447
- Limited narrative branching: While there are some loops and choices, the overall structure is relatively linear. Adding more branching paths could increase replayability and player interest.
1448
-
1449
- To make the game less bland, consider:
1450
-
1451
- Adding more states and locations
1452
- Increasing the number of choices in each state
1453
- Implementing more consequences for player actions
1454
- Expanding descriptions to create a richer narrative
1455
- Incorporating media elements
1456
- Creating more diverse paths through the game
1457
-
1458
- #===============================================
1459
-
1460
-
1461
- # Text-Based Game Improvement Suggestions
1462
-
1463
- ## 1. Expand State Variety
1464
- - Add a new location: "Mountain Pass"
1465
- - Include states like "steep_climb", "avalanche_risk", "hidden_cave"
1466
- - Expand the "forest" location:
1467
- - Add states like "dense_thicket", "mysterious_clearing", "ancient_tree"
1468
-
1469
- ## 2. Increase Choice Diversity
1470
- - Add more choices to existing states. For example, in "village_start":
1471
- - "talk to elder"
1472
- - "visit market"
1473
- - "investigate strange noises"
1474
- - Ensure most states have at least 3 choices
1475
-
1476
- ## 3. Enhance Transition Complexity
1477
- - Create more interconnected states. For example:
1478
- - Allow travel between "forest" and "mountain_pass"
1479
- - Add shortcuts or secret passages between non-adjacent locations
1480
-
1481
- ## 4. Implement More Consequences
1482
- - Add consequences to more choices. For example:
1483
- - In "forest_forest":
1484
- - "forage for food" -> `lambda player: player.add_item('wild berries')`
1485
- - "take shortcut" -> `lambda player: player.update_status('lost')`
1486
-
1487
- ## 5. Enrich Descriptions
1488
- - Expand existing descriptions with more vivid details
1489
- - Example for "village_start":
1490
- ```python
1491
- "description": "You wake up in a small village nestled between rolling hills. The air is filled with the scent of freshly baked bread and the sound of a distant waterfall. Villagers bustle about, whispering excitedly about a rumor of lost treasure."
1492
- ```
1493
-
1494
- ## 6. Introduce Cyclic Content with Variations
1495
- - Add time-based changes to revisited locations
1496
- - Example:
1497
- ```python
1498
- 'village_start': {
1499
- "description": lambda player: f"You return to the village square. It's now {player.time_of_day()}. " +
1500
- ("The market is bustling with activity." if player.time_of_day() == "day" else
1501
- "The streets are quiet, lit by flickering torches.")
1502
- }
1503
- ```
1504
-
1505
- ## 7. Create Meaningful Dead Ends
1506
- - Add optional quests or side adventures
1507
- - Example: "help_lost_child" state in the village that doesn't progress main story but provides rewards
1508
-
1509
- ## 8. Integrate Media Elements
1510
- - Add placeholder media to enhance immersion:
1511
- ```python
1512
- "media": [
1513
- {"type": "image", "url": "/api/placeholder/400/300", "alt": "A picturesque village at dawn"},
1514
- {"type": "sound", "url": "village_ambience.mp3"}
1515
- ]
1516
- ```
1517
-
1518
- ## 9. Enhance Narrative Progression
1519
- - Add a main quest storyline with multiple stages
1520
- - Introduce side quests for additional depth
1521
-
1522
- ## 10. Increase Player Agency
1523
- - Add more impactful choices that significantly alter the game's direction
1524
- - Implement a simple inventory or skill system that affects available choices
1525
-
1526
- ## 11. Extend Game Length
1527
- - Add more locations and states to create a longer, more involved adventure
1528
- - Implement quest chains that span multiple locations
1529
-
1530
- ## 12. Improve Replayability
1531
- - Add random events that can occur in each location
1532
- - Implement multiple endings based on player choices and achievements
1533
-
1534
-
1535
- #===============================================
1536
-
1537
- # Updated Text-Based Game Configuration with Side Quest
1538
-
1539
- ## New State: help_lost_child
1540
-
1541
- Add this new state to the 'village' section of your `all_states` dictionary:
1542
-
1543
- ```python
1544
- 'village': {
1545
- # ... existing states ...
1546
-
1547
- 'help_lost_child': {
1548
- "description": "You encounter a crying child in the village square. They seem to have lost their way home.",
1549
- "choices": ['help child', 'ignore and continue'],
1550
- "transitions": {
1551
- 'help child': 'village_child_quest',
1552
- 'ignore and continue': 'village_start'
1553
- },
1554
- "consequences": {
1555
- 'help child': lambda player: player.update_status('helping_child')
1556
- },
1557
- "media": []
1558
- },
1559
- 'child_quest': {
1560
- "description": "You decide to help the lost child. After asking around and searching the village, you finally locate their home.",
1561
- "choices": ['return child', 'ask for reward'],
1562
- "transitions": {
1563
- 'return child': 'village_child_reunion',
1564
- 'ask for reward': 'village_child_reward'
1565
- },
1566
- "media": []
1567
- },
1568
- 'child_reunion': {
1569
- "description": "You return the child to their grateful parents. They thank you profusely for your kindness.",
1570
- "choices": ['accept thanks', 'request reward'],
1571
- "transitions": {
1572
- 'accept thanks': 'village_start',
1573
- 'request reward': 'village_child_reward'
1574
- },
1575
- "consequences": {
1576
- 'accept thanks': lambda player: player.update_status('local_hero')
1577
- },
1578
- "media": []
1579
- },
1580
- 'child_reward': {
1581
- "description": "The child's parents offer you a small pouch of coins as a reward for your help.",
1582
- "choices": ['accept reward', 'decline reward'],
1583
- "transitions": {
1584
- 'accept reward': 'village_start',
1585
- 'decline reward': 'village_start'
1586
- },
1587
- "consequences": {
1588
- 'accept reward': lambda player: player.add_item('coin pouch'),
1589
- 'decline reward': lambda player: player.update_status('selfless_hero')
1590
- },
1591
- "media": []
1592
- },
1593
- }
1594
- ```
1595
-
1596
- ## Updated Transitions
1597
-
1598
- To incorporate this side quest into the existing game flow, we need to update some transitions in the 'village_start' state:
1599
-
1600
- ```python
1601
- 'village': {
1602
- 'start': {
1603
- "description": "You're in the village square. The usual bustle of village life surrounds you.",
1604
- "choices": ['explore village', 'gather supplies', 'rest', 'look around'], # Added 'look around'
1605
- "transitions": {
1606
- 'explore village': 'village_rumor',
1607
- 'gather supplies': 'village_supplies',
1608
- 'rest': 'village_start',
1609
- 'look around': 'village_help_lost_child' # New transition
1610
- },
1611
- "consequences": {
1612
- 'gather supplies': lambda player: player.add_item('basic supplies')
1613
- },
1614
- "media": []
1615
- },
1616
- # ... other states ...
1617
- }
1618
- ```
1619
-
1620
- ## Explanation of Changes
1621
-
1622
- 1. New States:
1623
- - `help_lost_child`: Introduces the side quest
1624
- - `child_quest`: Represents the process of helping the child
1625
- - `child_reunion`: Concludes the quest if you don't ask for a reward
1626
- - `child_reward`: Offers a choice to accept or decline a reward
1627
-
1628
- 2. Updated `village_start`:
1629
- - Added a new choice: 'look around'
1630
- - Added a new transition to `village_help_lost_child`
1631
-
1632
- 3. Consequences:
1633
- - Added status updates: 'helping_child', 'local_hero', 'selfless_hero'
1634
- - Added item reward: 'coin pouch'
1635
-
1636
- These changes create a meaningful dead end by:
1637
- 1. Providing an optional quest that doesn't directly progress the main treasure hunt story
1638
- 2. Offering multiple choices within the side quest, allowing for different outcomes
1639
- 3. Implementing consequences that affect the player's status or inventory, providing rewards for engagement
1640
- 4. Allowing the player to return to the main story flow after completing (or ignoring) the side quest
1641
-
1642
- This side quest adds depth to the village location, gives the player more to do, and provides character-building opportunities without derailing the main narrative. It also demonstrates how you can implement similar side quests or meaningful dead ends in other locations of your game.
1643
-
1644
- #================================================================================
1645
-
1646
- Certainly! Let's implement the "help_lost_child" side quest as a meaningful dead end in the village. This will add depth to the game without necessarily progressing the main story. Here's how we can incorporate this into your current configuration:
1647
- Updated Text-Based Game Configuration with Side QuestClick to open document
1648
- To further improve this side quest and make it even more engaging, you could consider:
1649
-
1650
- Time sensitivity: Make the quest available only at certain times or for a limited number of turns.
1651
- Skill checks: If your game has a skill system, you could add checks for persuasion or perception that affect the outcome.
1652
- Long-term consequences: The status changes (like 'local_hero') could affect how NPCs interact with the player later in the game.
1653
- Branching outcomes: You could add more complex branches, such as the child being in actual danger, leading to a mini-adventure.
1654
-
1655
- Would you like me to elaborate on any of these ideas or show how to implement them in your configuration?
1656
-
1657
- """
1658
-
1659
- tipsupdatedconfigatbeinningofthisspace = """{
1660
- "village": {
1661
- "start": {
1662
- "description": "You wake up in a small village. You hear a rumor about a lost treasure.",
1663
- "choices": ['explore village', 'gather supplies', 'rest', 'look around'],
1664
- "transitions": {'explore village': 'village_rumor', 'gather supplies': 'village_supplies', 'rest': 'village_start', 'look around': 'village_help_lost_child'},
1665
- "consequences": {
1666
- 'gather supplies': lambda player: player.add_item('basic supplies')
1667
- },
1668
- "media": []
1669
- },
1670
- "rumor": {
1671
- "description": "You hear more details about the treasure hidden in the ancient ruins nearby.",
1672
- "choices": ['decide to go', 'ignore'],
1673
- "transitions": {'decide to go': 'village_supplies', 'ignore': 'village_start'},
1674
- "consequences": {
1675
- 'decide to go': lambda player: player.update_knowledge('treasure location')
1676
- },
1677
- "media": []
1678
- },
1679
- "supplies": {
1680
- "description": "You gather supplies for your journey.",
1681
- "choices": ['head to forest', 'stay in village'],
1682
- "transitions": {'head to forest': 'forest_forest', 'stay in village': 'village_start'},
1683
- "media": []
1684
- },
1685
- "help_lost_child": {
1686
- "description": "You encounter a crying child in the village square. They seem to have lost their way home.",
1687
- "choices": ['help child', 'ignore and continue'],
1688
- "transitions": {
1689
- 'help child': 'village_child_quest',
1690
- 'ignore and continue': 'village_start'
1691
- },
1692
- "consequences": {
1693
- 'help child': lambda player: player.update_status('helping_child')
1694
- },
1695
- "media": []
1696
- },
1697
- "child_quest": {
1698
- "description": "You decide to help the lost child. After asking around and searching the village, you finally locate their home.",
1699
- "choices": ['return child', 'ask for reward'],
1700
- "transitions": {
1701
- 'return child': 'village_child_reunion',
1702
- 'ask for reward': 'village_child_reward'
1703
- },
1704
- "media": []
1705
- },
1706
- "child_reunion": {
1707
- "description": "You return the child to their grateful parents. They thank you profusely for your kindness.",
1708
- "choices": ['accept thanks', 'request reward'],
1709
- "transitions": {
1710
- 'accept thanks': 'village_start',
1711
- 'request reward': 'village_child_reward'
1712
- },
1713
- "consequences": {
1714
- 'accept thanks': lambda player: player.update_status('local_hero')
1715
- },
1716
- "media": []
1717
- },
1718
- "child_reward": {
1719
- "description": "The child's parents offer you a small pouch of coins as a reward for your help.",
1720
- "choices": ['accept reward', 'decline reward'],
1721
- "transitions": {
1722
- 'accept reward': 'village_start',
1723
- 'decline reward': 'village_start'
1724
- },
1725
- "consequences": {
1726
- 'accept reward': lambda player: player.add_item('coin pouch'),
1727
- 'decline reward': lambda player: player.update_status('selfless_hero')
1728
- },
1729
- "media": []
1730
- },
1731
- },
1732
- "forest": {
1733
- "forest": {
1734
- "description": "You enter the dense forest, heading towards the ruins.",
1735
- "choices": ['travel further', 'return to village'],
1736
- "transitions": {'travel further': 'ruins_ruins', 'return to village': 'village_start'},
1737
- "media": []
1738
- },
1739
- },
1740
- "ruins": {
1741
- "ruins": {
1742
- "description": "You reach the ancient ruins. The entrance is dark and eerie.",
1743
- "choices": ['enter ruins', 'return to forest'],
1744
- "transitions": {'enter ruins': 'ruins_explore', 'return to forest': 'forest_forest'},
1745
- "media": []
1746
- },
1747
- "explore": {
1748
- "description": "You explore the ruins, encountering traps and puzzles.",
1749
- "choices": ['solve puzzle', 'avoid traps'],
1750
- "transitions": {'solve puzzle': 'ruins_hiddenPassage', 'avoid traps': 'ruins_ruins'},
1751
- "media": []
1752
- },
1753
- "hiddenPassage": {
1754
- "description": "You solve a challenging puzzle and unlock a hidden passage.",
1755
- "choices": ['enter passage', 'go back'],
1756
- "transitions": {'enter passage': 'ruins_treasureRoom', 'go back': 'ruins_explore'},
1757
- "media": []
1758
- },
1759
- "treasureRoom": {
1760
- "description": "You enter the treasure room and find the treasure chest.",
1761
- "choices": ['take treasure', 'leave'],
1762
- "transitions": {'take treasure': 'ruins_celebrate', 'leave': 'ruins_ruins'},
1763
- "consequences": {
1764
- 'take treasure': lambda player: player.add_item('treasure')
1765
- },
1766
- "media": []
1767
- },
1768
- 'celebrate': {
1769
- "description": "You celebrate your discovery and decide to bring the treasure back to the village.",
1770
- "choices": ['return to village'],
1771
- "transitions": {'return to village': 'village_return'},
1772
- "media": []
1773
- },
1774
- },
1775
- "village_return": {
1776
- "village_return": {
1777
- "description": "You return to the village with the treasure and share it with the villagers.",
1778
- "choices": ['end adventure'],
1779
- "transitions": {'end adventure': 'end_end'},
1780
- "media": []
1781
- },
1782
- },
1783
- "end": {
1784
- "end": {
1785
- "description": "Your adventure ends here. The villagers are grateful and everyone's lives improve.",
1786
- "choices": [],
1787
- "transitions": {},
1788
- "media": []
1789
- },
1790
- }
1791
- }"""
1792
  with gr.Tab("Improvement of the default config"):
1793
  gr.HTML("Example of how to advance a game config with LLM - end goal is to have automatic worflow that takes these considerations into account <br> Things missing from the game engine - Economics and Basic Politics (NPC affiliation)")
1794
  gr.HTML("Suggestions from claude 3.5 on how to change config")
@@ -2001,7 +1224,7 @@ Would you like me to elaborate on any of these ideas or show how to implement th
2001
  ewpgenerate_button.click(generate_story_and_timeline, inputs=[ewpgenerate_no_ui_timeline_points, ewpgenerate_no_media_timeline_points, ewpgenerate_with_media_check], outputs=[ewptimeline_output_with_assets, ewptimeline_output, ewpstory_output, ewpwacustom_config, ewpgame_structure_output_text]) #ewpgame_structure_output_text_with_media, ewpgame_structure_output_text])
2002
 
2003
  with gr.Tab("Asset Generation Considerations"):
2004
- gr.HTML("With some asset category ideas from gemini-1.5-flash-api-0514 and reka-flash-preview-20240611 <br><br>Licenses for the spaces still to be evaluated - June 2024 <br> Users to follow with cool spaces - https://huggingface.co/fffiloni, https://huggingface.co/artificialguybr, https://huggingface.co/radames, https://huggingface.co/multimodalart, ")
2005
 
2006
  with gr.Accordion("LLM HF Spaces/Sites (Click Here to Open) - Ask for a story and suggestions based on the autoconfig", open=False):
2007
  with gr.Row():
@@ -2022,13 +1245,13 @@ Would you like me to elaborate on any of these ideas or show how to implement th
2022
 
2023
  with gr.Tab("Media Understanding"):
2024
  gr.HTML("NPC Response Engines? Camera, Shopkeeper, Companion, Enemies, etc.")
2025
- with gr.Accordion("Media understanding model Spaces/Sites (Click Here to Open) - Image to Blender?", open=False):
2026
  with gr.Row():
2027
  linktomediaunderstandingspace = gr.Dropdown(choices=[ "--Weak Audio Understanding = Audio to text, Weak Video Understanding = Video to Image to Image Understanding", "https://skalskip-florence-2-video.hf.space", "https://kingnish-opengpt-4o.hf.space",
2028
  "--Image Understanding--", "https://qnguyen3-nanollava.hf.space", "https://skalskip-better-florence-2.hf.space", ],
2029
  label="Choose/Cancel type any .hf.space link here (can also type a link)'", allow_custom_value=True)
2030
  mediaunderstandingspacebtn = gr.Button("Use the chosen URL to load interface with a media understanding space")
2031
- mediaunderstandingspace = gr.HTML("Audio Space Chosen will load here")
2032
  mediaunderstandingspacebtn.click(display_website, inputs=linktomediaunderstandingspace, outputs=mediaunderstandingspace)
2033
 
2034
 
@@ -2064,7 +1287,7 @@ Would you like me to elaborate on any of these ideas or show how to implement th
2064
  gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist")
2065
 
2066
  with gr.Tab("Video"):
2067
- with gr.Accordion("Video Spaces/Sites (Click Here to Open) - Image to Blender?", open=False):
2068
  with gr.Row():
2069
  linktovideogenspace = gr.Dropdown(choices=["--Genral--", "https://kadirnar-open-sora.hf.space",
2070
  "--Talking Portrait--", "https://fffiloni-tts-hallo-talking-portrait.hf.space",
@@ -2085,7 +1308,7 @@ Would you like me to elaborate on any of these ideas or show how to implement th
2085
  gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist")
2086
 
2087
  with gr.Tab("Audio"):
2088
- with gr.Accordion("Audio Spaces/Sites (Click Here to Open) - Image to Blender?", open=False):
2089
  with gr.Row():
2090
  linktoaudiiogenspace = gr.Dropdown(choices=["General", "https://artificialguybr-stable-audio-open-zero.hf.space", "",
2091
  "--Talking Portrait--","https://fffiloni-tts-hallo-talking-portrait.hf.space"],
@@ -2101,7 +1324,7 @@ Would you like me to elaborate on any of these ideas or show how to implement th
2101
  gr.HTML("3rd Party / Closed Source - https://suno.com/ <br>https://www.udio.com/")
2102
 
2103
  with gr.Tab("3D"):
2104
- with gr.Accordion("3D Model Spaces/Sites (Click Here to Open) - Image to Blender?", open=False):
2105
  with gr.Row():
2106
  linktoThreedModel = gr.Dropdown(choices=["https://wuvin-unique3d.hf.space", "https://stabilityai-triposr.hf.space", "https://hysts-shap-e.hf.space", "https://tencentarc-instantmesh.hf.space", "https://ashawkey-lgm.hf.space", "https://dylanebert-lgm-mini.hf.space", "https://dylanebert-splat-to-mesh.hf.space", "https://dylanebert-multi-view-diffusion.hf.space"], label="Choose/Cancel type any .hf.space link here (can also type a link)'", allow_custom_value=True)
2107
  ThreedModelspacebtn = gr.Button("Use the chosen URL to load interface with a 3D model")
@@ -2239,27 +1462,6 @@ Would you like me to elaborate on any of these ideas or show how to implement th
2239
  gr.Image(value="testmedia/Flash scribble SDXL - random squiggles as roads.webp")
2240
  gr.Video(value="testmedia/SVD - random squiggles as roads video 004484.mp4")
2241
  gr.Audio(value="testmedia/Stable Audio - Raindrops, output.wav")
2242
- gr.HTML("""
2243
- <div>
2244
- <p>This is a placeholder to test use as an all-media loader for ease of prototyping. Seems gradio HTML doesnt support loading local assets or my file path is wrong</p>
2245
- </div>
2246
- <div style="display: flex; justify-content: space-between; margin-bottom: 20px;">
2247
- <div style="width: 30%;">
2248
- <img src="testmedia/Flash scribble SDXL - random squiggles as roads.webp" alt="Random squiggles as roads" style="width: 100%; height: auto;">
2249
- </div>
2250
- <div style="width: 30%;">
2251
- <video width="100%" height="auto" controls>
2252
- <source src="testmedia/SVD - random squiggles as roads video 004484.mp4" type="video/mp4">
2253
- Your browser does not support the video tag.
2254
- </video>
2255
- </div>
2256
- <div style="width: 30%;">
2257
- <audio controls style="width: 100%;">
2258
- <source src="testmedia/Stable Audio - Raindrops, output.wav" type="audio/wav">
2259
- Your browser does not support the audio element.
2260
- </audio>
2261
- </div>
2262
- </div>
2263
- """)
2264
 
2265
  demo.queue().launch()
 
13
  import psutil
14
  from sentence_transformers import SentenceTransformer
15
 
16
+ #Imported Long Variables - comment for each move to search
17
+ from relatively_constant_variables import *
18
+
19
  # # Initialize the zero tensor on CUDA
20
  # zero = torch.Tensor([0]).cuda()
21
  # print(zero.device) # This will print 'cpu' outside the @spaces.GPU decorated function
 
205
  )
206
  llmguide_tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2-0.5B-Instruct")
207
 
208
+ #import knowledge_base from relatively_constant_variables
 
 
 
 
 
 
 
209
 
210
  # Create embeddings for the knowledge base
211
  knowledge_base_embeddings = embedding_model.encode([doc["content"] for doc in knowledge_base])
 
298
 
299
  #--------------------------------------------------------------------------------------------------------------------------------
300
 
301
+ #importing FAQAllprompts from relatively_constant_variables
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
302
 
303
  #--------------------------------------------------------------------------------------------------------------------------------
304
+
305
+ #importing default_config from relatively_constant_variables
 
 
 
 
 
 
 
 
306
 
307
  # Helper functions to dynamically add items
308
  def add_inventory_item(inventory_items, type, name, description):
 
327
 
328
  #-----------------------------------------------------------------------------------------------------------------------------------
329
 
330
+ #importing player_engagement_items and story_events from relatively_constant_variables
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
331
 
332
  def pick_random_items(items, n):
333
  return random.sample(items, n)
 
581
  def update_knowledge(self, topic):
582
  self.knowledge[topic] = True
583
 
584
+ #importing all_states from relatively_constant_variables
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
585
 
586
  def validate_transitions(all_states):
587
  errors = []
 
809
 
810
  #-----------------------------------------------------------------------------------------------------------------------------------
811
 
812
+ def timeline_get_random_suggestions(num_lists, items_per_list):
813
+ """
814
+ Generate random suggestions from a specified number of lists.
815
+
816
+ :param num_lists: Number of lists to consider
817
+ :param items_per_list: Number of items to select from each list
818
+ :return: A list of randomly selected suggestions
819
+ """
820
+ selected_lists = random.sample(all_idea_lists, min(num_lists, len(all_idea_lists)))
821
+ suggestions = []
822
+
823
+ for lst in selected_lists:
824
+ suggestions.extend(random.sample(lst, min(items_per_list, len(lst))))
825
+
826
+ return suggestions
827
+
828
+ #-----------------------------------------------------------------------------------------------------------------------------------
829
+
830
  with gr.Blocks() as demo:
831
  gr.HTML("""<div style="width: 100%; text-align: center">Main ideas for this space is (June 2024) (Custom component planning?):</div>
832
  <div style="display: flex; justify-content: center; margin-bottom: 20px; align-items: center;">
 
849
  button.click(llmguide_generate_response, inputs=[FAQCustomButtonInput, gr.State(index), gr.State(category_name)], outputs=FAQMainOutput)
850
 
851
  with gr.Tab("General RAG (Pathfinder?) Attempt"):
852
+ gr.HTML("Placeholder for weak RAG Type Charcter interaction test aka input for JSON 'Knowledge Base' Input")
853
  # gr.Interface(
854
  # fn=rag,
855
  # inputs=[
 
905
  outputs=[llmguide_output, llmguide_tokens_per_second],
906
  )
907
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
908
  with gr.Accordion("Decisions Creation to Story to Config Conversation", open=False):
909
  with gr.Tab("Timeline Guide for Config Generation or evelution"):
910
  with gr.Accordion("Empty Config shape for explaining to LLM", open=False):
911
  gr.HTML(f"placeholder for current empty JSON config shape")
912
  gr.HTML("Structural indicators of quality of config")
913
+ with gr.Tab("Random Suggestions"):
914
+ timeline_num_lists_slider = gr.Slider(minimum=1, maximum=len(all_idea_lists), step=1, label="Number of Lists to Consider", value=3)
915
+ timeline_items_per_list_slider = gr.Slider(minimum=1, maximum=10, step=1, label="Items per List", value=3)
916
+ timeline_generate_button = gr.Button("Generate Random Suggestions")
917
+ timeline_output_text = gr.Textbox(label="Random Suggestions", lines=10)
918
+
919
+ timeline_generate_button.click(
920
+ timeline_get_random_suggestions,
921
+ inputs=[timeline_num_lists_slider, timeline_items_per_list_slider],
922
+ outputs=[timeline_output_text]
923
+ )
924
+ with gr.Tab("Config Specific"):
925
  gr.HTML("Timeline for making Timelines?")
926
  gr.HTML("Componets (outside Code Support for Config): Decisions (and context explanation), Nested Sections, Media (Especially to affect decisions), Replayability (GTA and Tekken type mechanics in text form), Theme integration (Modified Varibles that affect UI or config order)")
927
  gr.HTML("From Nothing <br>")
928
  gr.HTML("From Existing <br>")
929
+ with gr.Tab("Existing Game Analysis"):
930
  gr.HTML("Existing Games eg. GTA Heists - Same Map with overlapping branching narratives, Battlefront - Elites amongst Commoners, Tekken Casino (one mistake = 1/2 or 1/3 of your Resources) and Turn based: 'Tactics' type nintendo games, Chess (and any other tile based game) ")
931
  gr.HTML("Existing Game Rules for text - Cyberpunk RED, ")
932
+ with gr.Tab("Multiplayer options"):
933
  gr.HTML("Community playthrough = Tally of players choices, Random item placed in a random location - first person to get it wins, Survival by location or characters met")
934
  with gr.Tab("Some Workflow Helpers (Removed as built into Semi-Auto)"):
935
  gr.HTML("Song / Random Scenario to 'full game' manual or auto is end goal ")
 
1004
  with gr.Tab("Mermaid Graphs and Nesting"):
1005
  gr.HTML("Claude Artifacts to illustrate nested structure brainstorms - <br> https://claude.site/artifacts/4a910d81-1541-49f4-8531-4f27fe56cd1e <br> https://claude.site/artifacts/265e9242-2093-46e1-9011-ed6ad938be90?fullscreen=false <br> ")
1006
  gr.HTML("")
 
 
1007
  with gr.Tab("Structural Inspirations"):
1008
  gr.HTML("GTA Heists - Replayability and stakes, Tekken - 2/3 mistakes = lost round ")
1009
  gr.HTML("Sports Scores, ")
1010
  with gr.Tab("Themes"):
1011
  gr.HTML("")
1012
 
1013
+ # import originalconfigatbeinningofthisspace, claude3_5_06072024configtips, tipsupdatedconfigatbeinningofthisspace from relatively_constant_variables
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1014
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1015
  with gr.Tab("Improvement of the default config"):
1016
  gr.HTML("Example of how to advance a game config with LLM - end goal is to have automatic worflow that takes these considerations into account <br> Things missing from the game engine - Economics and Basic Politics (NPC affiliation)")
1017
  gr.HTML("Suggestions from claude 3.5 on how to change config")
 
1224
  ewpgenerate_button.click(generate_story_and_timeline, inputs=[ewpgenerate_no_ui_timeline_points, ewpgenerate_no_media_timeline_points, ewpgenerate_with_media_check], outputs=[ewptimeline_output_with_assets, ewptimeline_output, ewpstory_output, ewpwacustom_config, ewpgame_structure_output_text]) #ewpgame_structure_output_text_with_media, ewpgame_structure_output_text])
1225
 
1226
  with gr.Tab("Asset Generation Considerations"):
1227
+ gr.HTML("Licenses for the spaces still to be evaluated - June 2024 <br> Users to follow with cool spaces - https://huggingface.co/fffiloni, https://huggingface.co/artificialguybr, https://huggingface.co/radames, https://huggingface.co/multimodalart, ")
1228
 
1229
  with gr.Accordion("LLM HF Spaces/Sites (Click Here to Open) - Ask for a story and suggestions based on the autoconfig", open=False):
1230
  with gr.Row():
 
1245
 
1246
  with gr.Tab("Media Understanding"):
1247
  gr.HTML("NPC Response Engines? Camera, Shopkeeper, Companion, Enemies, etc.")
1248
+ with gr.Accordion("Media understanding model Spaces/Sites (Click Here to Open)", open=False):
1249
  with gr.Row():
1250
  linktomediaunderstandingspace = gr.Dropdown(choices=[ "--Weak Audio Understanding = Audio to text, Weak Video Understanding = Video to Image to Image Understanding", "https://skalskip-florence-2-video.hf.space", "https://kingnish-opengpt-4o.hf.space",
1251
  "--Image Understanding--", "https://qnguyen3-nanollava.hf.space", "https://skalskip-better-florence-2.hf.space", ],
1252
  label="Choose/Cancel type any .hf.space link here (can also type a link)'", allow_custom_value=True)
1253
  mediaunderstandingspacebtn = gr.Button("Use the chosen URL to load interface with a media understanding space")
1254
+ mediaunderstandingspace = gr.HTML("Mdeia Understanding Space Chosen will load here")
1255
  mediaunderstandingspacebtn.click(display_website, inputs=linktomediaunderstandingspace, outputs=mediaunderstandingspace)
1256
 
1257
 
 
1287
  gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist")
1288
 
1289
  with gr.Tab("Video"):
1290
+ with gr.Accordion("Video Spaces/Sites (Click Here to Open)", open=False):
1291
  with gr.Row():
1292
  linktovideogenspace = gr.Dropdown(choices=["--Genral--", "https://kadirnar-open-sora.hf.space",
1293
  "--Talking Portrait--", "https://fffiloni-tts-hallo-talking-portrait.hf.space",
 
1308
  gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist")
1309
 
1310
  with gr.Tab("Audio"):
1311
+ with gr.Accordion("Audio Spaces/Sites (Click Here to Open)", open=False):
1312
  with gr.Row():
1313
  linktoaudiiogenspace = gr.Dropdown(choices=["General", "https://artificialguybr-stable-audio-open-zero.hf.space", "",
1314
  "--Talking Portrait--","https://fffiloni-tts-hallo-talking-portrait.hf.space"],
 
1324
  gr.HTML("3rd Party / Closed Source - https://suno.com/ <br>https://www.udio.com/")
1325
 
1326
  with gr.Tab("3D"):
1327
+ with gr.Accordion("3D Model Spaces/Sites (Click Here to Open)", open=False):
1328
  with gr.Row():
1329
  linktoThreedModel = gr.Dropdown(choices=["https://wuvin-unique3d.hf.space", "https://stabilityai-triposr.hf.space", "https://hysts-shap-e.hf.space", "https://tencentarc-instantmesh.hf.space", "https://ashawkey-lgm.hf.space", "https://dylanebert-lgm-mini.hf.space", "https://dylanebert-splat-to-mesh.hf.space", "https://dylanebert-multi-view-diffusion.hf.space"], label="Choose/Cancel type any .hf.space link here (can also type a link)'", allow_custom_value=True)
1330
  ThreedModelspacebtn = gr.Button("Use the chosen URL to load interface with a 3D model")
 
1462
  gr.Image(value="testmedia/Flash scribble SDXL - random squiggles as roads.webp")
1463
  gr.Video(value="testmedia/SVD - random squiggles as roads video 004484.mp4")
1464
  gr.Audio(value="testmedia/Stable Audio - Raindrops, output.wav")
1465
+ gr.HTML(TestmedialoadinHTML) # imported from relatively_constant_variables
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1466
 
1467
  demo.queue().launch()
relatively_constant_variables.py ADDED
@@ -0,0 +1,1092 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """ Variables moved to make reading a bit easier
2
+ ctrl+f - #-------------------------#-------------------------#-------------------------#-------------------------
3
+ FAQ and RAG data
4
+ Default Config - JS config
5
+ Autostructure suggestor?
6
+ Initial Game Config
7
+ Comporation between inital and edited - with suggestions in between
8
+ Test if HTML can load in HTML gradio component
9
+ """
10
+
11
+ #Supposed to be part of FAQ buttons
12
+ Frontendpromptengforguide = """Suggest descriptions for media to fill the empty media fields -
13
+
14
+ {
15
+ "village": {
16
+ "start": {
17
+ "description": "You wake up in a small village. You hear a rumor about a lost treasure.",
18
+ "choices": [
19
+ "explore village",
20
+ "gather supplies",
21
+ "rest"
22
+ ],
23
+ "transitions": {
24
+ "explore village": "village_rumor",
25
+ "gather supplies": "village_supplies",
26
+ "rest": "village_start"
27
+ },
28
+ "consequences": {
29
+ "gather supplies": {}
30
+ },
31
+ "media": []
32
+ },
33
+ "rumor": {
34
+ "description": "You hear more details about the treasure hidden in the ancient ruins nearby.",
35
+ "choices": [
36
+ "decide to go",
37
+ "ignore"
38
+ ],
39
+ "transitions": {
40
+ "decide to go": "village_supplies",
41
+ "ignore": "village_start"
42
+ },
43
+ "consequences": {
44
+ "decide to go": {}
45
+ },
46
+ "media": []
47
+ },
48
+ "supplies": {
49
+ "description": "You gather supplies for your journey.",
50
+ "choices": [
51
+ "head to forest",
52
+ "stay in village"
53
+ ],
54
+ "transitions": {
55
+ "head to forest": "forest_forest",
56
+ "stay in village": "village_start"
57
+ },
58
+ "media": []
59
+ }
60
+ },
61
+ "forest": {
62
+ "forest": {
63
+ "description": "You enter the dense forest, heading towards the ruins.",
64
+ "choices": [
65
+ "travel further",
66
+ "return to village"
67
+ ],
68
+ "transitions": {
69
+ "travel further": "ruins_ruins",
70
+ "return to village": "village_start"
71
+ },
72
+ "media": []
73
+ }
74
+ },
75
+ "ruins": {
76
+ "ruins": {
77
+ "description": "You reach the ancient ruins. The entrance is dark and eerie.",
78
+ "choices": [
79
+ "enter ruins",
80
+ "return to forest"
81
+ ],
82
+ "transitions": {
83
+ "enter ruins": "ruins_explore",
84
+ "return to forest": "forest_forest"
85
+ },
86
+ "media": []
87
+ },
88
+ "explore": {
89
+ "description": "You explore the ruins, encountering traps and puzzles.",
90
+ "choices": [
91
+ "solve puzzle",
92
+ "avoid traps"
93
+ ],
94
+ "transitions": {
95
+ "solve puzzle": "ruins_hiddenPassage",
96
+ "avoid traps": "ruins_ruins"
97
+ },
98
+ "media": []
99
+ },
100
+ "hiddenPassage": {
101
+ "description": "You solve a challenging puzzle and unlock a hidden passage.",
102
+ "choices": [
103
+ "enter passage",
104
+ "go back"
105
+ ],
106
+ "transitions": {
107
+ "enter passage": "ruins_treasureRoom",
108
+ "go back": "ruins_explore"
109
+ },
110
+ "media": []
111
+ },
112
+ "treasureRoom": {
113
+ "description": "You enter the treasure room and find the treasure chest.",
114
+ "choices": [
115
+ "take treasure",
116
+ "leave"
117
+ ],
118
+ "transitions": {
119
+ "take treasure": "ruins_celebrate",
120
+ "leave": "ruins_ruins"
121
+ },
122
+ "consequences": {
123
+ "take treasure": {}
124
+ },
125
+ "media": []
126
+ },
127
+ "celebrate": {
128
+ "description": "You celebrate your discovery and decide to bring the treasure back to the village.",
129
+ "choices": [
130
+ "return to village"
131
+ ],
132
+ "transitions": {
133
+ "return to village": "village_return"
134
+ },
135
+ "media": []
136
+ }
137
+ },
138
+ "village_return": {
139
+ "village_return": {
140
+ "description": "You return to the village with the treasure and share it with the villagers.",
141
+ "choices": [
142
+ "end adventure"
143
+ ],
144
+ "transitions": {
145
+ "end adventure": "end_end"
146
+ },
147
+ "media": []
148
+ }
149
+ },
150
+ "end": {
151
+ "end": {
152
+ "description": "Your adventure ends here. The villagers are grateful and everyone's lives improve.",
153
+ "choices": [],
154
+ "transitions": {},
155
+ "media": []
156
+ }
157
+ }
158
+ }
159
+ """
160
+
161
+
162
+
163
+ FAQAllprompts = {
164
+ "Brainstorming for this space": [
165
+ ("Help me make a story", "- Explain to the user that they need to come up with a list of decisions, and then choose themes and then do the setting in characters and add some examples for each step:"),
166
+ ],
167
+ "Expansive Problem solving": [
168
+ ("My problem to solve is", "- please make 10 sub problems have to solve from this:"),
169
+ ("My process to solve is", "- please make 10 sub processes have to solve from this:"),
170
+ ("My goal to solve is", "- please make 10 sub goals have to solve from this:"),
171
+ ("My task to solve is", "- please make 10 sub tasks have to solve from this:"),
172
+ ("My phase to solve is", "- please make 10 sub phases have to solve from this:"),
173
+ ("My component to solve is", "- please make 10 sub components have to solve from this:"),
174
+ ("My element to solve is", "- please make 10 sub elements have to solve from this:"),
175
+ ("A brief description of my current situation:", "- please list the most important task to pay attention to:"),
176
+ ("A brief description of my current situation to analyse:", "- please conduct a situational analysis:"),
177
+ ("A brief description of my current situation to decompose:", "- please conduct a problem decomposition:"),
178
+ ],
179
+ }
180
+
181
+ # Sample knowledge base (replace with your own data)
182
+ knowledge_base = [
183
+ {"id": "doc1", "content": "The capital of France is Paris."},
184
+ {"id": "doc2", "content": "Python is a popular programming language."},
185
+ {"id": "doc3", "content": "Machine learning is a subset of artificial intelligence."},
186
+ {"id": "doc4", "content": "The Earth orbits around the Sun."},
187
+ {"id": "doc5", "content": "orbits is the name of a korean fangroup"},
188
+ ]
189
+
190
+ #-------------------------#-------------------------#-------------------------#-------------------------
191
+
192
+ # Default configuration template
193
+ default_config = {
194
+ 'background': '/AutoGameBackgrounds/1stGameLoc123.png',
195
+ 'inventory': [],
196
+ 'skills': [],
197
+ 'objectives': [],
198
+ 'targets': [],
199
+ 'story': [],
200
+ 'actions': {}
201
+ }
202
+
203
+ #-------------------------#-------------------------#-------------------------#-------------------------
204
+
205
+ # List of player engagement UI elements
206
+ player_engagement_items = [
207
+ "Health Bar", "Mana/Energy Bar", "Experience Bar", "Mini-Map", "Quest Tracker",
208
+ "Inventory Quick Access Slots", "Skill Cooldown Indicators", "Currency Display",
209
+ "Compass", "Timer/Clock", "Action Prompts", "Reticle/Crosshair", "Enemy Health Bars",
210
+ "Score Display", "Inventory Grid", "Item Tooltip", "Item Categories/Tabs",
211
+ "Equip/Unequip Buttons", "Item Sorting Options", "Character Stats Panel",
212
+ "Character Model Viewer", "Quick Equip Slots", "Dialogue Box", "Dialogue Choices",
213
+ "Character Portraits", "Character Name Display", "Subtitle Text", "World Map",
214
+ "Local Map", "Fast Travel Points", "Map Markers", "Map Legend", "Crafting Recipe List",
215
+ "Ingredient Slots", "Craft Button", "Crafting Progress Bar", "Skill Nodes",
216
+ "Skill Descriptions", "Skill Point Counter", "Unlock Button", "Skill Path Highlight",
217
+ "Quest List", "Quest Details Panel", "Quest Objectives", "Quest Rewards",
218
+ "Quest Status Indicators", "Chat Box", "Player List", "Voice Chat Indicators",
219
+ "Ping/Latency Indicator", "Party/Team UI", "Scoreboard", "Matchmaking Screen",
220
+ "Pop-up Notifications", "Achievement Unlocks", "System Messages",
221
+ "On-screen Key Prompts", "Environmental Interaction Icons", "Save/Auto-Save Indicators",
222
+ "Credits Screen"
223
+ ]
224
+
225
+ # List of character-based story events
226
+ story_events = [
227
+ 'exploreLocation', 'discoverClue', 'meetCharacter', 'solveRiddle', 'findItem',
228
+ 'faceChallenge', 'makeDecision', 'engageBattle', 'unlockAbility', 'learnSecret',
229
+ 'completeMission', 'experienceSetback', 'earnReward', 'uncoverMystery', 'formAlliance',
230
+ 'faceBetrayal', 'confrontNemesis', 'makeDiscovery', 'overcomeLoss', 'achieveVictory'
231
+ ]
232
+
233
+
234
+ #-------------------------#-------------------------#-------------------------#-------------------------
235
+
236
+
237
+ # Define the states
238
+ all_states = {
239
+ 'village': {
240
+ 'start': {
241
+ "description": "You wake up in a small village. You hear a rumor about a lost treasure.",
242
+ "choices": ['explore village', 'gather supplies', 'rest'],
243
+ "transitions": {'explore village': 'village_rumor', 'gather supplies': 'village_supplies', 'rest': 'village_start'},
244
+ "consequences": {
245
+ 'gather supplies': lambda player: player.add_item('basic supplies')
246
+ },
247
+ "media": []
248
+ },
249
+ 'rumor': {
250
+ "description": "You hear more details about the treasure hidden in the ancient ruins nearby.",
251
+ "choices": ['decide to go', 'ignore'],
252
+ "transitions": {'decide to go': 'village_supplies', 'ignore': 'village_start'},
253
+ "consequences": {
254
+ 'decide to go': lambda player: player.update_knowledge('treasure location')
255
+ },
256
+ "media": []
257
+ },
258
+ 'supplies': {
259
+ "description": "You gather supplies for your journey.",
260
+ "choices": ['head to forest', 'stay in village'],
261
+ "transitions": {'head to forest': 'forest_forest', 'stay in village': 'village_start'},
262
+ "media": []
263
+ },
264
+ },
265
+ 'forest': {
266
+ 'forest': {
267
+ "description": "You enter the dense forest, heading towards the ruins.",
268
+ "choices": ['travel further', 'return to village'],
269
+ "transitions": {'travel further': 'ruins_ruins', 'return to village': 'village_start'},
270
+ "media": []
271
+ },
272
+ },
273
+ 'ruins': {
274
+ 'ruins': {
275
+ "description": "You reach the ancient ruins. The entrance is dark and eerie.",
276
+ "choices": ['enter ruins', 'return to forest'],
277
+ "transitions": {'enter ruins': 'ruins_explore', 'return to forest': 'forest_forest'},
278
+ "media": []
279
+ },
280
+ 'explore': {
281
+ "description": "You explore the ruins, encountering traps and puzzles.",
282
+ "choices": ['solve puzzle', 'avoid traps'],
283
+ "transitions": {'solve puzzle': 'ruins_hiddenPassage', 'avoid traps': 'ruins_ruins'},
284
+ "media": []
285
+ },
286
+ 'hiddenPassage': {
287
+ "description": "You solve a challenging puzzle and unlock a hidden passage.",
288
+ "choices": ['enter passage', 'go back'],
289
+ "transitions": {'enter passage': 'ruins_treasureRoom', 'go back': 'ruins_explore'},
290
+ "media": []
291
+ },
292
+ 'treasureRoom': {
293
+ "description": "You enter the treasure room and find the treasure chest.",
294
+ "choices": ['take treasure', 'leave'],
295
+ "transitions": {'take treasure': 'ruins_celebrate', 'leave': 'ruins_ruins'},
296
+ "consequences": {
297
+ 'take treasure': lambda player: player.add_item('treasure')
298
+ },
299
+ "media": []
300
+ },
301
+ 'celebrate': {
302
+ "description": "You celebrate your discovery and decide to bring the treasure back to the village.",
303
+ "choices": ['return to village'],
304
+ "transitions": {'return to village': 'village_return'},
305
+ "media": []
306
+ },
307
+ },
308
+ 'village_return': {
309
+ 'village_return': {
310
+ "description": "You return to the village with the treasure and share it with the villagers.",
311
+ "choices": ['end adventure'],
312
+ "transitions": {'end adventure': 'end_end'},
313
+ "media": []
314
+ },
315
+ },
316
+ 'end': {
317
+ 'end': {
318
+ "description": "Your adventure ends here. The villagers are grateful and everyone's lives improve.",
319
+ "choices": [],
320
+ "transitions": {},
321
+ "media": []
322
+ },
323
+ }
324
+ }
325
+
326
+ #-------------------------#-------------------------#-------------------------#-------------------------
327
+
328
+ #actual is not screen ready
329
+ originalconfigatbeinningofthisspace = """{
330
+ "village": {
331
+ "start": {
332
+ "description": "You wake up in a small village. You hear a rumor about a lost treasure.",
333
+ "choices": ['explore village', 'gather supplies', 'rest'],
334
+ "transitions": {'explore village': 'village_rumor', 'gather supplies': 'village_supplies', 'rest': 'village_start'},
335
+ "consequences": {
336
+ 'gather supplies': lambda player: player.add_item('basic supplies')
337
+ },
338
+ "media": []
339
+ },
340
+ "rumor": {
341
+ "description": "You hear more details about the treasure hidden in the ancient ruins nearby.",
342
+ "choices": ['decide to go', 'ignore'],
343
+ "transitions": {'decide to go': 'village_supplies', 'ignore': 'village_start'},
344
+ "consequences": {
345
+ 'decide to go': lambda player: player.update_knowledge('treasure location')
346
+ },
347
+ "media": []
348
+ },
349
+ "supplies": {
350
+ "description": "You gather supplies for your journey.",
351
+ "choices": ['head to forest', 'stay in village'],
352
+ "transitions": {'head to forest': 'forest_forest', 'stay in village': 'village_start'},
353
+ "media": []
354
+ },
355
+ },
356
+ "forest": {
357
+ "forest": {
358
+ "description": "You enter the dense forest, heading towards the ruins.",
359
+ "choices": ['travel further', 'return to village'],
360
+ "transitions": {'travel further': 'ruins_ruins', 'return to village': 'village_start'},
361
+ "media": []
362
+ },
363
+ },
364
+ "ruins": {
365
+ "ruins": {
366
+ "description": "You reach the ancient ruins. The entrance is dark and eerie.",
367
+ "choices": ['enter ruins', 'return to forest'],
368
+ "transitions": {'enter ruins': 'ruins_explore', 'return to forest': 'forest_forest'},
369
+ "media": []
370
+ },
371
+ "explore": {
372
+ "description": "You explore the ruins, encountering traps and puzzles.",
373
+ "choices": ['solve puzzle', 'avoid traps'],
374
+ "transitions": {'solve puzzle': 'ruins_hiddenPassage', 'avoid traps': 'ruins_ruins'},
375
+ "media": []
376
+ },
377
+ "hiddenPassage": {
378
+ "description": "You solve a challenging puzzle and unlock a hidden passage.",
379
+ "choices": ['enter passage', 'go back'],
380
+ "transitions": {'enter passage': 'ruins_treasureRoom', 'go back': 'ruins_explore'},
381
+ "media": []
382
+ },
383
+ "treasureRoom": {
384
+ "description": "You enter the treasure room and find the treasure chest.",
385
+ "choices": ['take treasure', 'leave'],
386
+ "transitions": {'take treasure': 'ruins_celebrate', 'leave': 'ruins_ruins'},
387
+ "consequences": {
388
+ 'take treasure': lambda player: player.add_item('treasure')
389
+ },
390
+ "media": []
391
+ },
392
+ "celebrate": {
393
+ "description": "You celebrate your discovery and decide to bring the treasure back to the village.",
394
+ "choices": ['return to village'],
395
+ "transitions": {'return to village': 'village_return'},
396
+ "media": []
397
+ },
398
+ },
399
+ "village_return": {
400
+ "village_return": {
401
+ "description": "You return to the village with the treasure and share it with the villagers.",
402
+ "choices": ['end adventure'],
403
+ "transitions": {'end adventure': 'end_end'},
404
+ "media": []
405
+ },
406
+ },
407
+ "end": {
408
+ "end": {
409
+ "description": "Your adventure ends here. The villagers are grateful and everyone's lives improve.",
410
+ "choices": [],
411
+ "transitions": {},
412
+ "media": []
413
+ },
414
+ }
415
+ }"""
416
+ #Analyzing Game Configuration Metrics - was the thread name of where the
417
+ claude3_5_06072024configtips = """Example Config Development Tab - Claude 3.5 Sonnet as the LLM Assitant
418
+
419
+ This config is for a basic text based game engine I made with help many llms including you.
420
+ Thanks to all the help it loads which presented another problem, I dont have any structural metrics to assess the quality of the config.
421
+ What JSON things can we look at to see if it may be too bland for a person testing the game
422
+
423
+
424
+ Text-Based Game Configuration Analysis
425
+ 1. State Variety
426
+
427
+ Total number of states: 13
428
+ Number of unique locations: 5 (village, forest, ruins, village_return, end)
429
+
430
+ 2. Choice Diversity
431
+
432
+ Average choices per state: 1.92
433
+ States with no choices: 1 (end state)
434
+ States with most choices: 3 (village_start with 3 choices)
435
+ Unique choices across all states: 17
436
+
437
+ 3. Transition Complexity
438
+
439
+ Total number of transitions: 25
440
+ Average transitions per state: 1.92
441
+ States with most transitions: 3 (village_start with 3 transitions)
442
+
443
+ 4. Consequence Implementation
444
+
445
+ States with consequences: 3
446
+ Total number of consequences: 3
447
+ Types of consequences: Adding items, Updating knowledge
448
+
449
+ 5. Description Length
450
+
451
+ Average description length: 13.15 words
452
+ Longest description: 24 words (village_return)
453
+ Shortest description: 4 words (village_supplies)
454
+
455
+ 6. Cyclic Paths
456
+
457
+ Presence of loops: Yes (e.g., village_start -> village_supplies -> village_start)
458
+
459
+ 7. Dead Ends
460
+
461
+ Number of dead ends: 1 (end state)
462
+
463
+ 8. Media Integration
464
+
465
+ States with media: 0
466
+ Total media elements: 0
467
+
468
+ 9. Narrative Progression
469
+
470
+ Clear beginning (village_start) and end (end) states
471
+ Multiple paths to reach the end
472
+
473
+ 10. Player Agency
474
+
475
+ Choices affect game progression
476
+ Some choices have consequences (3 instances)
477
+
478
+ 11. Game Length
479
+
480
+ Minimum steps to complete: 6 (village_start -> village_supplies -> forest_forest -> ruins_ruins -> ruins_explore -> ruins_hiddenPassage -> ruins_treasureRoom -> ruins_celebrate -> village_return -> end)
481
+ Maximum steps (including loops): Potentially infinite due to cycles
482
+
483
+ 12. Replayability
484
+
485
+ Multiple paths through the game
486
+ Some variability in outcomes based on choices
487
+
488
+ #=============================================
489
+
490
+ To assess the quality and potential blandness of your game configuration, we can analyze several structural metrics within the JSON. Here are some aspects we can examine:
491
+ Text-Based Game Configuration AnalysisClick to open document
492
+ Based on this analysis, here are some observations about the potential blandness of the game:
493
+
494
+ Limited state variety: With only 13 states across 5 locations, the game might feel short and lacking in diversity. Consider adding more locations or states within existing locations.
495
+ Low average choices: An average of 1.92 choices per state might make the game feel linear. Increasing the number of choices in more states could improve player engagement.
496
+ Limited consequences: Only 3 states have consequences, which might make player choices feel less impactful. Adding more consequences could increase the sense of agency.
497
+ Short descriptions: The average description length of 13.15 words might not provide enough detail to immerse players. Consider expanding descriptions to create a richer narrative.
498
+ Lack of media: No states currently use media elements, which could make the game feel less engaging. Adding images, sound effects, or other media could enhance the player experience.
499
+ Limited narrative branching: While there are some loops and choices, the overall structure is relatively linear. Adding more branching paths could increase replayability and player interest.
500
+
501
+ To make the game less bland, consider:
502
+
503
+ Adding more states and locations
504
+ Increasing the number of choices in each state
505
+ Implementing more consequences for player actions
506
+ Expanding descriptions to create a richer narrative
507
+ Incorporating media elements
508
+ Creating more diverse paths through the game
509
+
510
+ #===============================================
511
+
512
+
513
+ # Text-Based Game Improvement Suggestions
514
+
515
+ ## 1. Expand State Variety
516
+ - Add a new location: "Mountain Pass"
517
+ - Include states like "steep_climb", "avalanche_risk", "hidden_cave"
518
+ - Expand the "forest" location:
519
+ - Add states like "dense_thicket", "mysterious_clearing", "ancient_tree"
520
+
521
+ ## 2. Increase Choice Diversity
522
+ - Add more choices to existing states. For example, in "village_start":
523
+ - "talk to elder"
524
+ - "visit market"
525
+ - "investigate strange noises"
526
+ - Ensure most states have at least 3 choices
527
+
528
+ ## 3. Enhance Transition Complexity
529
+ - Create more interconnected states. For example:
530
+ - Allow travel between "forest" and "mountain_pass"
531
+ - Add shortcuts or secret passages between non-adjacent locations
532
+
533
+ ## 4. Implement More Consequences
534
+ - Add consequences to more choices. For example:
535
+ - In "forest_forest":
536
+ - "forage for food" -> `lambda player: player.add_item('wild berries')`
537
+ - "take shortcut" -> `lambda player: player.update_status('lost')`
538
+
539
+ ## 5. Enrich Descriptions
540
+ - Expand existing descriptions with more vivid details
541
+ - Example for "village_start":
542
+ ```python
543
+ "description": "You wake up in a small village nestled between rolling hills. The air is filled with the scent of freshly baked bread and the sound of a distant waterfall. Villagers bustle about, whispering excitedly about a rumor of lost treasure."
544
+ ```
545
+
546
+ ## 6. Introduce Cyclic Content with Variations
547
+ - Add time-based changes to revisited locations
548
+ - Example:
549
+ ```python
550
+ 'village_start': {
551
+ "description": lambda player: f"You return to the village square. It's now {player.time_of_day()}. " +
552
+ ("The market is bustling with activity." if player.time_of_day() == "day" else
553
+ "The streets are quiet, lit by flickering torches.")
554
+ }
555
+ ```
556
+
557
+ ## 7. Create Meaningful Dead Ends
558
+ - Add optional quests or side adventures
559
+ - Example: "help_lost_child" state in the village that doesn't progress main story but provides rewards
560
+
561
+ ## 8. Integrate Media Elements
562
+ - Add placeholder media to enhance immersion:
563
+ ```python
564
+ "media": [
565
+ {"type": "image", "url": "/api/placeholder/400/300", "alt": "A picturesque village at dawn"},
566
+ {"type": "sound", "url": "village_ambience.mp3"}
567
+ ]
568
+ ```
569
+
570
+ ## 9. Enhance Narrative Progression
571
+ - Add a main quest storyline with multiple stages
572
+ - Introduce side quests for additional depth
573
+
574
+ ## 10. Increase Player Agency
575
+ - Add more impactful choices that significantly alter the game's direction
576
+ - Implement a simple inventory or skill system that affects available choices
577
+
578
+ ## 11. Extend Game Length
579
+ - Add more locations and states to create a longer, more involved adventure
580
+ - Implement quest chains that span multiple locations
581
+
582
+ ## 12. Improve Replayability
583
+ - Add random events that can occur in each location
584
+ - Implement multiple endings based on player choices and achievements
585
+
586
+
587
+ #===============================================
588
+
589
+ # Updated Text-Based Game Configuration with Side Quest
590
+
591
+ ## New State: help_lost_child
592
+
593
+ Add this new state to the 'village' section of your `all_states` dictionary:
594
+
595
+ ```python
596
+ 'village': {
597
+ # ... existing states ...
598
+
599
+ 'help_lost_child': {
600
+ "description": "You encounter a crying child in the village square. They seem to have lost their way home.",
601
+ "choices": ['help child', 'ignore and continue'],
602
+ "transitions": {
603
+ 'help child': 'village_child_quest',
604
+ 'ignore and continue': 'village_start'
605
+ },
606
+ "consequences": {
607
+ 'help child': lambda player: player.update_status('helping_child')
608
+ },
609
+ "media": []
610
+ },
611
+ 'child_quest': {
612
+ "description": "You decide to help the lost child. After asking around and searching the village, you finally locate their home.",
613
+ "choices": ['return child', 'ask for reward'],
614
+ "transitions": {
615
+ 'return child': 'village_child_reunion',
616
+ 'ask for reward': 'village_child_reward'
617
+ },
618
+ "media": []
619
+ },
620
+ 'child_reunion': {
621
+ "description": "You return the child to their grateful parents. They thank you profusely for your kindness.",
622
+ "choices": ['accept thanks', 'request reward'],
623
+ "transitions": {
624
+ 'accept thanks': 'village_start',
625
+ 'request reward': 'village_child_reward'
626
+ },
627
+ "consequences": {
628
+ 'accept thanks': lambda player: player.update_status('local_hero')
629
+ },
630
+ "media": []
631
+ },
632
+ 'child_reward': {
633
+ "description": "The child's parents offer you a small pouch of coins as a reward for your help.",
634
+ "choices": ['accept reward', 'decline reward'],
635
+ "transitions": {
636
+ 'accept reward': 'village_start',
637
+ 'decline reward': 'village_start'
638
+ },
639
+ "consequences": {
640
+ 'accept reward': lambda player: player.add_item('coin pouch'),
641
+ 'decline reward': lambda player: player.update_status('selfless_hero')
642
+ },
643
+ "media": []
644
+ },
645
+ }
646
+ ```
647
+
648
+ ## Updated Transitions
649
+
650
+ To incorporate this side quest into the existing game flow, we need to update some transitions in the 'village_start' state:
651
+
652
+ ```python
653
+ 'village': {
654
+ 'start': {
655
+ "description": "You're in the village square. The usual bustle of village life surrounds you.",
656
+ "choices": ['explore village', 'gather supplies', 'rest', 'look around'], # Added 'look around'
657
+ "transitions": {
658
+ 'explore village': 'village_rumor',
659
+ 'gather supplies': 'village_supplies',
660
+ 'rest': 'village_start',
661
+ 'look around': 'village_help_lost_child' # New transition
662
+ },
663
+ "consequences": {
664
+ 'gather supplies': lambda player: player.add_item('basic supplies')
665
+ },
666
+ "media": []
667
+ },
668
+ # ... other states ...
669
+ }
670
+ ```
671
+
672
+ ## Explanation of Changes
673
+
674
+ 1. New States:
675
+ - `help_lost_child`: Introduces the side quest
676
+ - `child_quest`: Represents the process of helping the child
677
+ - `child_reunion`: Concludes the quest if you don't ask for a reward
678
+ - `child_reward`: Offers a choice to accept or decline a reward
679
+
680
+ 2. Updated `village_start`:
681
+ - Added a new choice: 'look around'
682
+ - Added a new transition to `village_help_lost_child`
683
+
684
+ 3. Consequences:
685
+ - Added status updates: 'helping_child', 'local_hero', 'selfless_hero'
686
+ - Added item reward: 'coin pouch'
687
+
688
+ These changes create a meaningful dead end by:
689
+ 1. Providing an optional quest that doesn't directly progress the main treasure hunt story
690
+ 2. Offering multiple choices within the side quest, allowing for different outcomes
691
+ 3. Implementing consequences that affect the player's status or inventory, providing rewards for engagement
692
+ 4. Allowing the player to return to the main story flow after completing (or ignoring) the side quest
693
+
694
+ This side quest adds depth to the village location, gives the player more to do, and provides character-building opportunities without derailing the main narrative. It also demonstrates how you can implement similar side quests or meaningful dead ends in other locations of your game.
695
+
696
+ #================================================================================
697
+
698
+ Certainly! Let's implement the "help_lost_child" side quest as a meaningful dead end in the village. This will add depth to the game without necessarily progressing the main story. Here's how we can incorporate this into your current configuration:
699
+ Updated Text-Based Game Configuration with Side QuestClick to open document
700
+ To further improve this side quest and make it even more engaging, you could consider:
701
+
702
+ Time sensitivity: Make the quest available only at certain times or for a limited number of turns.
703
+ Skill checks: If your game has a skill system, you could add checks for persuasion or perception that affect the outcome.
704
+ Long-term consequences: The status changes (like 'local_hero') could affect how NPCs interact with the player later in the game.
705
+ Branching outcomes: You could add more complex branches, such as the child being in actual danger, leading to a mini-adventure.
706
+
707
+ Would you like me to elaborate on any of these ideas or show how to implement them in your configuration?
708
+
709
+ """
710
+
711
+ tipsupdatedconfigatbeinningofthisspace = """{
712
+ "village": {
713
+ "start": {
714
+ "description": "You wake up in a small village. You hear a rumor about a lost treasure.",
715
+ "choices": ['explore village', 'gather supplies', 'rest', 'look around'],
716
+ "transitions": {'explore village': 'village_rumor', 'gather supplies': 'village_supplies', 'rest': 'village_start', 'look around': 'village_help_lost_child'},
717
+ "consequences": {
718
+ 'gather supplies': lambda player: player.add_item('basic supplies')
719
+ },
720
+ "media": []
721
+ },
722
+ "rumor": {
723
+ "description": "You hear more details about the treasure hidden in the ancient ruins nearby.",
724
+ "choices": ['decide to go', 'ignore'],
725
+ "transitions": {'decide to go': 'village_supplies', 'ignore': 'village_start'},
726
+ "consequences": {
727
+ 'decide to go': lambda player: player.update_knowledge('treasure location')
728
+ },
729
+ "media": []
730
+ },
731
+ "supplies": {
732
+ "description": "You gather supplies for your journey.",
733
+ "choices": ['head to forest', 'stay in village'],
734
+ "transitions": {'head to forest': 'forest_forest', 'stay in village': 'village_start'},
735
+ "media": []
736
+ },
737
+ "help_lost_child": {
738
+ "description": "You encounter a crying child in the village square. They seem to have lost their way home.",
739
+ "choices": ['help child', 'ignore and continue'],
740
+ "transitions": {
741
+ 'help child': 'village_child_quest',
742
+ 'ignore and continue': 'village_start'
743
+ },
744
+ "consequences": {
745
+ 'help child': lambda player: player.update_status('helping_child')
746
+ },
747
+ "media": []
748
+ },
749
+ "child_quest": {
750
+ "description": "You decide to help the lost child. After asking around and searching the village, you finally locate their home.",
751
+ "choices": ['return child', 'ask for reward'],
752
+ "transitions": {
753
+ 'return child': 'village_child_reunion',
754
+ 'ask for reward': 'village_child_reward'
755
+ },
756
+ "media": []
757
+ },
758
+ "child_reunion": {
759
+ "description": "You return the child to their grateful parents. They thank you profusely for your kindness.",
760
+ "choices": ['accept thanks', 'request reward'],
761
+ "transitions": {
762
+ 'accept thanks': 'village_start',
763
+ 'request reward': 'village_child_reward'
764
+ },
765
+ "consequences": {
766
+ 'accept thanks': lambda player: player.update_status('local_hero')
767
+ },
768
+ "media": []
769
+ },
770
+ "child_reward": {
771
+ "description": "The child's parents offer you a small pouch of coins as a reward for your help.",
772
+ "choices": ['accept reward', 'decline reward'],
773
+ "transitions": {
774
+ 'accept reward': 'village_start',
775
+ 'decline reward': 'village_start'
776
+ },
777
+ "consequences": {
778
+ 'accept reward': lambda player: player.add_item('coin pouch'),
779
+ 'decline reward': lambda player: player.update_status('selfless_hero')
780
+ },
781
+ "media": []
782
+ },
783
+ },
784
+ "forest": {
785
+ "forest": {
786
+ "description": "You enter the dense forest, heading towards the ruins.",
787
+ "choices": ['travel further', 'return to village'],
788
+ "transitions": {'travel further': 'ruins_ruins', 'return to village': 'village_start'},
789
+ "media": []
790
+ },
791
+ },
792
+ "ruins": {
793
+ "ruins": {
794
+ "description": "You reach the ancient ruins. The entrance is dark and eerie.",
795
+ "choices": ['enter ruins', 'return to forest'],
796
+ "transitions": {'enter ruins': 'ruins_explore', 'return to forest': 'forest_forest'},
797
+ "media": []
798
+ },
799
+ "explore": {
800
+ "description": "You explore the ruins, encountering traps and puzzles.",
801
+ "choices": ['solve puzzle', 'avoid traps'],
802
+ "transitions": {'solve puzzle': 'ruins_hiddenPassage', 'avoid traps': 'ruins_ruins'},
803
+ "media": []
804
+ },
805
+ "hiddenPassage": {
806
+ "description": "You solve a challenging puzzle and unlock a hidden passage.",
807
+ "choices": ['enter passage', 'go back'],
808
+ "transitions": {'enter passage': 'ruins_treasureRoom', 'go back': 'ruins_explore'},
809
+ "media": []
810
+ },
811
+ "treasureRoom": {
812
+ "description": "You enter the treasure room and find the treasure chest.",
813
+ "choices": ['take treasure', 'leave'],
814
+ "transitions": {'take treasure': 'ruins_celebrate', 'leave': 'ruins_ruins'},
815
+ "consequences": {
816
+ 'take treasure': lambda player: player.add_item('treasure')
817
+ },
818
+ "media": []
819
+ },
820
+ 'celebrate': {
821
+ "description": "You celebrate your discovery and decide to bring the treasure back to the village.",
822
+ "choices": ['return to village'],
823
+ "transitions": {'return to village': 'village_return'},
824
+ "media": []
825
+ },
826
+ },
827
+ "village_return": {
828
+ "village_return": {
829
+ "description": "You return to the village with the treasure and share it with the villagers.",
830
+ "choices": ['end adventure'],
831
+ "transitions": {'end adventure': 'end_end'},
832
+ "media": []
833
+ },
834
+ },
835
+ "end": {
836
+ "end": {
837
+ "description": "Your adventure ends here. The villagers are grateful and everyone's lives improve.",
838
+ "choices": [],
839
+ "transitions": {},
840
+ "media": []
841
+ },
842
+ }
843
+ }"""
844
+
845
+ #-------------------------#-------------------------#-------------------------#-------------------------
846
+
847
+ TestmedialoadinHTML = """
848
+ <div>
849
+ <p>This is a placeholder to test use as an all-media loader for ease of prototyping. Seems gradio HTML doesnt support loading local assets or my file path is wrong</p>
850
+ </div>
851
+ <div style="display: flex; justify-content: space-between; margin-bottom: 20px;">
852
+ <div style="width: 30%;">
853
+ <img src="testmedia/Flash scribble SDXL - random squiggles as roads.webp" alt="Random squiggles as roads" style="width: 100%; height: auto;">
854
+ </div>
855
+ <div style="width: 30%;">
856
+ <video width="100%" height="auto" controls>
857
+ <source src="testmedia/SVD - random squiggles as roads video 004484.mp4" type="video/mp4">
858
+ Your browser does not support the video tag.
859
+ </video>
860
+ </div>
861
+ <div style="width: 30%;">
862
+ <audio controls style="width: 100%;">
863
+ <source src="testmedia/Stable Audio - Raindrops, output.wav" type="audio/wav">
864
+ Your browser does not support the audio element.
865
+ </audio>
866
+ </div>
867
+ </div>
868
+ """
869
+
870
+
871
+ #-------------------------#-------------------------#-------------------------#-------------------------
872
+
873
+ # GTA Heists - Same Map with overlapping branching narratives
874
+ gta_heist_inspired = [
875
+ "Multiple missions/quests available in the same location",
876
+ "Choices in one quest affect options in others",
877
+ "Time-sensitive missions that change the environment",
878
+ "Characters that appear in multiple storylines with different roles",
879
+ "Hidden connections between seemingly unrelated quests",
880
+ "Replay value through different approaches to the same heist",
881
+ "Dynamic difficulty based on previous mission outcomes",
882
+ "Unlockable areas within the same map as story progresses",
883
+ "Consequences of actions affecting the game world and future missions",
884
+ "Team assembly mechanics for different skill combinations",
885
+ "Planning phase before execution of major quests",
886
+ "Risk/reward choices for mission approach (stealth vs. aggressive)",
887
+ "Easter eggs and secrets hidden within the familiar environment",
888
+ "Alternate endings based on cumulative choices across multiple quests",
889
+ "NPC relationships affected by actions in different storylines"
890
+ ]
891
+
892
+ # Battlefront - Elites amongst Commoners
893
+ battlefront_inspired = [
894
+ "Player can switch between 'grunt' and 'hero' modes",
895
+ "Special abilities or items only available to 'elite' characters",
896
+ "Earning 'elite' status through exemplary performance",
897
+ "Time-limited elite transformations",
898
+ "Missions where player commands both elites and regular units",
899
+ "Elites with unique storylines and dialogue options",
900
+ "Risk of losing elite status through poor performance",
901
+ "Elite characters influencing morale of common units",
902
+ "Unlockable elite characters with diverse abilities",
903
+ "Missions requiring coordination between elites and common units",
904
+ "Elite vs Elite showdowns as climactic events",
905
+ "Common units gaining experience to become elites over time",
906
+ "Elites having a larger impact on the story and world events",
907
+ "Special elite-only areas or quests",
908
+ "Dynamic difficulty adjustment when playing as elite characters"
909
+ ]
910
+
911
+ # Tekken Casino (one mistake = 1/2 or 1/3 of your Resources)
912
+ tekken_casino_inspired = [
913
+ "High-stakes dialogue options with major resource loss for wrong choices",
914
+ "Timed decision-making with harsh penalties for indecision",
915
+ "Mini-games where a single mistake can cost significant resources",
916
+ "Opportunities to 'double or nothing' on quest rewards",
917
+ "Character skills affecting the odds of success in risky situations",
918
+ "Resource management system with high-risk, high-reward options",
919
+ "Combo system for dialogue or actions, breaking combo loses resources",
920
+ "Unlockable 'retry' options at the cost of resources",
921
+ "Progressive difficulty increase, with higher stakes for each level",
922
+ "Special 'all-in' options for desperate situations",
923
+ "Random events that can dramatically increase or decrease resources",
924
+ "Skill-based challenges with variable resource rewards/penalties",
925
+ "NPC interactions where trust is a resource that can be rapidly lost",
926
+ "Timed exploration with resource drain for inefficiency",
927
+ "Boss encounters with escalating stakes for each phase"
928
+ ]
929
+
930
+ # Turn-based: 'Tactics' type nintendo games
931
+ tactics_inspired = [
932
+ "Grid-based movement and action system",
933
+ "Unit positioning affecting attack effectiveness and vulnerability",
934
+ "Diverse character classes with unique abilities and weaknesses",
935
+ "Terrain effects on movement and combat",
936
+ "Action points system for balancing multiple actions per turn",
937
+ "Status effects persisting across multiple turns",
938
+ "Synergy bonuses for complementary unit combinations",
939
+ "Permadeath or severe consequences for unit loss",
940
+ "Weapon triangle or elemental weakness system",
941
+ "Experience and leveling system for units",
942
+ "Limited resource management (e.g., mana, ammo) across battles",
943
+ "Multi-stage battles with changing objectives",
944
+ "Recruitment system for expanding team roster",
945
+ "Weather or time-of-day effects on battlefield conditions",
946
+ "Morale system affecting unit performance"
947
+ ]
948
+
949
+ # Chess (and any other tile-based game)
950
+ chess_inspired = [
951
+ "Different 'pieces' with unique movement and action patterns",
952
+ "Objective-based victory conditions (e.g., capturing the 'king')",
953
+ "Limited 'board' space creating positioning challenges",
954
+ "Sacrificial strategies for long-term advantage",
955
+ "Opening, mid-game, and end-game phases with different strategies",
956
+ "Promotion system for 'pieces' reaching certain positions",
957
+ "Check and checkmate concepts for imminent defeat conditions",
958
+ "En passant-like special moves under specific circumstances",
959
+ "Castling-inspired defensive or positioning special actions",
960
+ "Pawn-like expendable units with potential for growth",
961
+ "Stalemate possibilities leading to draw outcomes",
962
+ "Time control mechanics for decision-making",
963
+ "Algebraic notation for recording and replaying game states",
964
+ "Handicap system for balancing player skill differences",
965
+ "Puzzle-like scenarios with optimal solution paths"
966
+ ]
967
+
968
+ # Cyberpunk RED (adapting tabletop RPG rules for text-based gameplay)
969
+ cyberpunk_red_inspired = [
970
+ "Skill-based character creation with points allocation",
971
+ "Netrunning mechanics for hacking and virtual world exploration",
972
+ "Cybernetic enhancements with both benefits and drawbacks",
973
+ "Social status and reputation systems affecting interactions",
974
+ "Complex crafting system for weapons and gadgets",
975
+ "Trauma Team-like emergency services as game mechanic",
976
+ "Corporation-controlled zones with varying rule sets",
977
+ "Lifepath system affecting character background and abilities",
978
+ "Street slang glossary influencing dialogue options",
979
+ "Critical injury system with lasting effects",
980
+ "Improvised weapon creation from environment",
981
+ "Data mining and information brokering as key gameplay elements",
982
+ "Cyberpsychosis risk for excessive augmentation",
983
+ "Night City-inspired district exploration with distinct subcultures",
984
+ "Fixer-based job acquisition and reputation building"
985
+ ]
986
+
987
+ # Community playthrough - Tally of players' choices
988
+ community_playthrough = [
989
+ "Global choice statistics visible to all players",
990
+ "Weekly community challenges based on least-chosen options",
991
+ "Adaptive storytelling influenced by majority choices",
992
+ "Community-unlocked content when certain choice thresholds are met",
993
+ "Leaderboards for most unique choice combinations",
994
+ "Time-limited voting on major story decisions",
995
+ "Character popularity contests affecting NPC prominence",
996
+ "Community-driven side quest creation",
997
+ "Collaborative puzzle solving with choice aggregation",
998
+ "Dynamic difficulty adjustment based on community performance",
999
+ "Seasonal events with community-wide consequences",
1000
+ "Faction wars where player choices determine outcomes",
1001
+ "Community achievements unlocking special game modes",
1002
+ "Player choice heat maps for game areas",
1003
+ "Periodic resets allowing community to reshape the game world"
1004
+ ]
1005
+
1006
+ # Random item placed in a random location - first person to get it wins
1007
+ random_item_hunt = [
1008
+ "Daily randomized legendary item hunts",
1009
+ "Clue system hinting at item location based on player actions",
1010
+ "Item location narrowing over time to increase tension",
1011
+ "Multiple item tiers with varying rarity and win conditions",
1012
+ "Limited-time windows for item discovery",
1013
+ "Collaborative and competitive modes for item hunting",
1014
+ "Randomized item powers affecting gameplay upon discovery",
1015
+ "Cursed items with negative effects to add risk",
1016
+ "Community-created hiding spots for items",
1017
+ "Item hunt leaderboards with speed and efficiency metrics",
1018
+ "Seasonal themed items with unique properties",
1019
+ "Hint sharing system among players",
1020
+ "Progressive clue unlocks for players lagging behind",
1021
+ "Randomized environmental hazards during item hunts",
1022
+ "Special game modes unlocked by finding rare items"
1023
+ ]
1024
+
1025
+ # Survival by location or characters met
1026
+ survival_mechanics = [
1027
+ "Location-based resource scarcity affecting survival strategies",
1028
+ "Character relationships influencing survival odds",
1029
+ "Dynamic weather system impacting survival difficulty",
1030
+ "Randomized disease outbreaks requiring specific remedies",
1031
+ "Crafting system adapted to location-specific materials",
1032
+ "NPC trust system affecting trade and assistance availability",
1033
+ "Time-based challenges for reaching safe locations",
1034
+ "Unique survival skills unlocked by meeting specific characters",
1035
+ "Randomized events testing different survival aspects",
1036
+ "Permadeath mode with character legacy system",
1037
+ "Base building mechanics adapted to different environments",
1038
+ "Seasonal changes affecting survival strategies",
1039
+ "Character-specific weaknesses requiring team-based survival",
1040
+ "Morale system influenced by character interactions and environment",
1041
+ "Scavenging missions with risk/reward balancing"
1042
+ ]
1043
+
1044
+ # Additional community and randomization features
1045
+ bonus_features = [
1046
+ "Player-created content voting and integration system",
1047
+ "Randomized daily quests with community-wide rewards",
1048
+ "Collaborative world-building events",
1049
+ "Dynamic economy based on player actions and random events",
1050
+ "Community-driven storyline branching",
1051
+ "Randomized character backstories affecting gameplay",
1052
+ "Player-run factions with territory control mechanics",
1053
+ "Periodic world resets with randomized layouts",
1054
+ "Community challenges requiring diverse skill combinations",
1055
+ "Randomized NPC behavior and dialogue options",
1056
+ "Player-created lore integration system",
1057
+ "Dynamic difficulty scaling based on community skill level",
1058
+ "Randomized ethical dilemmas with community-wide consequences",
1059
+ "Collaborative raid events against procedurally generated dungeons",
1060
+ "Community-driven development roadmap voting system"
1061
+ ]
1062
+
1063
+ # Create a list of all the idea lists for easy import and use
1064
+ all_idea_lists = [
1065
+ gta_heist_inspired,
1066
+ battlefront_inspired,
1067
+ tekken_casino_inspired,
1068
+ tactics_inspired,
1069
+ chess_inspired,
1070
+ cyberpunk_red_inspired,
1071
+ community_playthrough,
1072
+ random_item_hunt,
1073
+ survival_mechanics,
1074
+ bonus_features
1075
+ ]
1076
+
1077
+ #-------------------------#-------------------------#-------------------------#-------------------------
1078
+
1079
+
1080
+ #-------------------------#-------------------------#-------------------------#-------------------------
1081
+
1082
+
1083
+ #-------------------------#-------------------------#-------------------------#-------------------------
1084
+
1085
+
1086
+ #-------------------------#-------------------------#-------------------------#-------------------------
1087
+
1088
+
1089
+ #-------------------------#-------------------------#-------------------------#-------------------------
1090
+
1091
+
1092
+ #-------------------------#-------------------------#-------------------------#-------------------------