Spaces:
Running
on
Zero
Running
on
Zero
kwabs22
commited on
Commit
·
5509fa5
1
Parent(s):
c333908
Refactor Proto Assist accordion to absorb mess
Browse files
app.py
CHANGED
@@ -237,7 +237,7 @@ def create_story(timeline):
|
|
237 |
story.append(f"The player interacted with {entry[2]}.")
|
238 |
return " ".join(story)
|
239 |
|
240 |
-
def generate_story_and_timeline(no_ui_timeline_points=10): # , no_media_timeline_points=5, include_media=True):
|
241 |
# Pick 10 random UI items
|
242 |
random_ui_items = pick_random_items(player_engagement_items, no_ui_timeline_points)
|
243 |
|
@@ -271,9 +271,12 @@ def generate_story_and_timeline(no_ui_timeline_points=10): # , no_media_timeline
|
|
271 |
formatted_timeline = "\n".join([f"{entry[0]}: {entry[1]} - {entry[2]}" for entry in merged_timeline])
|
272 |
# no_media_formatted_timeline = "\n".join([f"{entry[0]}: {entry[1]} - {entry[2]}" for entry in no_media_merged_timeline])
|
273 |
|
274 |
-
game_structure_with_media = generate_game_structures(formatted_timeline) #, game_structure_without_media = generate_game_structures(formatted_timeline, no_media_formatted_timeline)
|
|
|
275 |
|
276 |
-
|
|
|
|
|
277 |
|
278 |
media_file_types = ["image", "video", "audio"]
|
279 |
|
@@ -450,13 +453,55 @@ def convert_timeline_to_game_structure(timeline):
|
|
450 |
|
451 |
return wrapped_structure
|
452 |
|
453 |
-
def generate_game_structures(timeline_with_media): #, timeline_without_media):
|
454 |
|
455 |
-
|
456 |
-
|
457 |
|
458 |
-
|
|
|
459 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
460 |
|
461 |
#-----------------------------------------------------------------------------------------------------------------------------------
|
462 |
|
@@ -703,48 +748,6 @@ def refresh_file_explorer():
|
|
703 |
|
704 |
#-----------------------------------------------------------------------------------------------------------------------------------
|
705 |
|
706 |
-
# def timeline_get_random_suggestions(num_lists, items_per_list):
|
707 |
-
# """
|
708 |
-
# Generate random suggestions from a specified number of lists.
|
709 |
-
|
710 |
-
# :param num_lists: Number of lists to consider
|
711 |
-
# :param items_per_list: Number of items to select from each list
|
712 |
-
# :return: A list of randomly selected suggestions
|
713 |
-
# """
|
714 |
-
# selected_lists = random.sample(all_idea_lists, min(num_lists, len(all_idea_lists)))
|
715 |
-
# suggestions = []
|
716 |
-
|
717 |
-
# for lst in selected_lists:
|
718 |
-
# suggestions.extend(random.sample(lst, min(items_per_list, len(lst))))
|
719 |
-
|
720 |
-
# return suggestions
|
721 |
-
|
722 |
-
def timeline_get_random_suggestions(num_lists, items_per_list, include_existing_games, include_multiplayer):
|
723 |
-
"""
|
724 |
-
Generate random suggestions from a specified number of lists.
|
725 |
-
|
726 |
-
:param num_lists: Number of lists to consider
|
727 |
-
:param items_per_list: Number of items to select from each list
|
728 |
-
:param include_existing_games: Whether to include existing game inspiration lists
|
729 |
-
:param include_multiplayer: Whether to include multiplayer features list
|
730 |
-
:return: A tuple containing the list of randomly selected suggestions and the names of selected lists
|
731 |
-
"""
|
732 |
-
available_lists = all_idea_lists.copy()
|
733 |
-
if not include_existing_games:
|
734 |
-
available_lists = [lst for lst in available_lists if lst not in existing_game_inspirations]
|
735 |
-
if not include_multiplayer:
|
736 |
-
available_lists = [lst for lst in available_lists if lst != multiplayer_features]
|
737 |
-
|
738 |
-
selected_lists = random.sample(available_lists, min(num_lists, len(available_lists)))
|
739 |
-
suggestions = []
|
740 |
-
selected_list_names = []
|
741 |
-
|
742 |
-
for lst in selected_lists:
|
743 |
-
suggestions.extend(random.sample(lst, min(items_per_list, len(lst))))
|
744 |
-
selected_list_names.append(list_names[all_idea_lists.index(lst)])
|
745 |
-
|
746 |
-
return suggestions, selected_list_names
|
747 |
-
|
748 |
#-----------------------------------------------------------------------------------------------------------------------------------
|
749 |
|
750 |
with gr.Blocks() as demo:
|
@@ -774,28 +777,27 @@ with gr.Blocks() as demo:
|
|
774 |
timeline_output_text = gr.Textbox(label="Random Suggestions", lines=10)
|
775 |
timeline_selected_lists_text = gr.Textbox(label="Selected Lists", lines=2)
|
776 |
story_output = gr.Textbox(label="Generated Story (Order might be different for now)", lines=20)
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
outputs=[timeline_output_text, timeline_selected_lists_text]
|
798 |
-
)
|
799 |
|
800 |
with gr.Accordion("Prompt Engineering as basis for ideation process", open=False):
|
801 |
gr.HTML("Current Assited workflow idea - Story timeline events suggestions (LLM / Premade List) | Merging events with premade mermaid structures (LLM + Story Text + Mermaid Text) | Edit mermaid till satisfied (LLM + Story Text) | Ask LLM to convert to config (LLM + JSON Text) | Edit config (LLM / User with format assistance or not) | Playtest and go back to mermaaid or config if there are problems")
|
|
|
237 |
story.append(f"The player interacted with {entry[2]}.")
|
238 |
return " ".join(story)
|
239 |
|
240 |
+
def generate_story_and_timeline(no_ui_timeline_points=10, num_lists=1, items_per_list=1, include_existing_games=False, include_multiplayer=False): # , no_media_timeline_points=5, include_media=True):
|
241 |
# Pick 10 random UI items
|
242 |
random_ui_items = pick_random_items(player_engagement_items, no_ui_timeline_points)
|
243 |
|
|
|
271 |
formatted_timeline = "\n".join([f"{entry[0]}: {entry[1]} - {entry[2]}" for entry in merged_timeline])
|
272 |
# no_media_formatted_timeline = "\n".join([f"{entry[0]}: {entry[1]} - {entry[2]}" for entry in no_media_merged_timeline])
|
273 |
|
274 |
+
# game_structure_with_media = generate_game_structures(formatted_timeline) #, game_structure_without_media = generate_game_structures(formatted_timeline, no_media_formatted_timeline)
|
275 |
+
game_structure_with_media = convert_timeline_to_game_structure(formatted_timeline)
|
276 |
|
277 |
+
suggestions, selected_list_names = timeline_get_random_suggestions(num_lists, items_per_list, include_existing_games, include_multiplayer)
|
278 |
+
|
279 |
+
return formatted_timeline, story, json.dumps(game_structure_with_media, indent=2), suggestions, selected_list_names #no_media_formatted_timeline, json.dumps(game_structure_without_media, indent=2) #, game_structure_with_media
|
280 |
|
281 |
media_file_types = ["image", "video", "audio"]
|
282 |
|
|
|
453 |
|
454 |
return wrapped_structure
|
455 |
|
456 |
+
# def generate_game_structures(timeline_with_media): #, timeline_without_media):
|
457 |
|
458 |
+
# game_structure_with_media = convert_timeline_to_game_structure(timeline_with_media)
|
459 |
+
# #game_structure_without_media = convert_timeline_to_game_structure(timeline_without_media)
|
460 |
|
461 |
+
# return game_structure_with_media #, game_structure_without_media
|
462 |
+
|
463 |
|
464 |
+
# def timeline_get_random_suggestions(num_lists, items_per_list):
|
465 |
+
# """
|
466 |
+
# Generate random suggestions from a specified number of lists.
|
467 |
+
|
468 |
+
# :param num_lists: Number of lists to consider
|
469 |
+
# :param items_per_list: Number of items to select from each list
|
470 |
+
# :return: A list of randomly selected suggestions
|
471 |
+
# """
|
472 |
+
# selected_lists = random.sample(all_idea_lists, min(num_lists, len(all_idea_lists)))
|
473 |
+
# suggestions = []
|
474 |
+
|
475 |
+
# for lst in selected_lists:
|
476 |
+
# suggestions.extend(random.sample(lst, min(items_per_list, len(lst))))
|
477 |
+
|
478 |
+
# return suggestions
|
479 |
+
|
480 |
+
def timeline_get_random_suggestions(num_lists, items_per_list, include_existing_games, include_multiplayer):
|
481 |
+
"""
|
482 |
+
Generate random suggestions from a specified number of lists.
|
483 |
+
|
484 |
+
:param num_lists: Number of lists to consider
|
485 |
+
:param items_per_list: Number of items to select from each list
|
486 |
+
:param include_existing_games: Whether to include existing game inspiration lists
|
487 |
+
:param include_multiplayer: Whether to include multiplayer features list
|
488 |
+
:return: A tuple containing the list of randomly selected suggestions and the names of selected lists
|
489 |
+
"""
|
490 |
+
available_lists = all_idea_lists.copy()
|
491 |
+
if not include_existing_games:
|
492 |
+
available_lists = [lst for lst in available_lists if lst not in existing_game_inspirations]
|
493 |
+
if not include_multiplayer:
|
494 |
+
available_lists = [lst for lst in available_lists if lst != multiplayer_features]
|
495 |
+
|
496 |
+
selected_lists = random.sample(available_lists, min(num_lists, len(available_lists)))
|
497 |
+
suggestions = []
|
498 |
+
selected_list_names = []
|
499 |
+
|
500 |
+
for lst in selected_lists:
|
501 |
+
suggestions.extend(random.sample(lst, min(items_per_list, len(lst))))
|
502 |
+
selected_list_names.append(list_names[all_idea_lists.index(lst)])
|
503 |
+
|
504 |
+
return suggestions, selected_list_names
|
505 |
|
506 |
#-----------------------------------------------------------------------------------------------------------------------------------
|
507 |
|
|
|
748 |
|
749 |
#-----------------------------------------------------------------------------------------------------------------------------------
|
750 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
751 |
#-----------------------------------------------------------------------------------------------------------------------------------
|
752 |
|
753 |
with gr.Blocks() as demo:
|
|
|
777 |
timeline_output_text = gr.Textbox(label="Random Suggestions", lines=10)
|
778 |
timeline_selected_lists_text = gr.Textbox(label="Selected Lists", lines=2)
|
779 |
story_output = gr.Textbox(label="Generated Story (Order might be different for now)", lines=20)
|
780 |
+
with gr.Row():
|
781 |
+
generate_no_ui_timeline_points = gr.Slider(minimum=1, value=10, step=1, maximum=30, label="Choose the amount of ui timeline points")
|
782 |
+
#generate_no_media_timeline_points = gr.Slider(minimum=1, value=5, step=1, maximum=30, label="Choose the amount of media timeline points")
|
783 |
+
#generate_with_media_check = gr.Checkbox(label="Generate with media", value=True)
|
784 |
+
with gr.Row():
|
785 |
+
timeline_num_lists_slider = gr.Slider(minimum=1, maximum=len(all_idea_lists), step=1, label="Number of Lists to Consider", value=3)
|
786 |
+
timeline_items_per_list_slider = gr.Slider(minimum=1, maximum=10, step=1, label="Items per List", value=3)
|
787 |
+
timeline_include_existing_games = gr.Checkbox(label="Include Existing Game Inspirations", value=True)
|
788 |
+
timeline_include_multiplayer = gr.Checkbox(label="Include Multiplayer Features", value=True)
|
789 |
+
timeline_generate_button = gr.Button("Generate Random Suggestions").click(
|
790 |
+
timeline_get_random_suggestions,
|
791 |
+
inputs=[timeline_num_lists_slider, timeline_items_per_list_slider, timeline_include_existing_games, timeline_include_multiplayer],
|
792 |
+
outputs=[timeline_output_text, timeline_selected_lists_text]
|
793 |
+
)
|
794 |
+
generate_button = gr.Button("Generate Story and Timeline (Click to get UI that will assist with JSON formatting)")
|
795 |
+
|
796 |
+
@gr.render(inputs=game_structure_output_text_with_media)
|
797 |
+
def update(game_structure_output_text_with_media):
|
798 |
+
return show_elements_json_input(game_structure_output_text_with_media)
|
799 |
+
|
800 |
+
generate_button.click(generate_story_and_timeline, inputs=[generate_no_ui_timeline_points, timeline_num_lists_slider, timeline_items_per_list_slider, timeline_include_existing_games, timeline_include_multiplayer], outputs=[timeline_output_with_assets, story_output, game_structure_output_text_with_media, timeline_output_text, timeline_selected_lists_text]) #, generate_no_media_timeline_points, generate_with_media_check], outputs=[timeline_output_with_assets, timeline_output, story_output, game_structure_output_text_with_media, game_structure_output_text])
|
|
|
801 |
|
802 |
with gr.Accordion("Prompt Engineering as basis for ideation process", open=False):
|
803 |
gr.HTML("Current Assited workflow idea - Story timeline events suggestions (LLM / Premade List) | Merging events with premade mermaid structures (LLM + Story Text + Mermaid Text) | Edit mermaid till satisfied (LLM + Story Text) | Ask LLM to convert to config (LLM + JSON Text) | Edit config (LLM / User with format assistance or not) | Playtest and go back to mermaaid or config if there are problems")
|