Spaces:
Running
on
Zero
Running
on
Zero
kwabs22
commited on
Commit
·
b602b14
1
Parent(s):
39f526c
Merge game and edit interfaces
Browse files
app.py
CHANGED
@@ -635,254 +635,313 @@ with gr.Blocks() as demo:
|
|
635 |
<div style="width: 20%; text-align: center">llms good at short questions </div>
|
636 |
<div style="width: 20%; text-align: center">HF + Gradio allows for api use so this my prototype tool for tool use test</div>
|
637 |
</div>""")
|
638 |
-
with gr.
|
639 |
-
gr.HTML("
|
640 |
-
gr.
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
684 |
)
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
gr.
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
gr.
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
with gr.Row():
|
720 |
-
game_structure_output_text_with_media = gr.Code(language="json")
|
721 |
-
game_structure_output_text = gr.Code(language="json")
|
722 |
-
with gr.Accordion("JSON with no edits"):
|
723 |
-
with gr.Row():
|
724 |
-
timeline_output_with_assets = gr.Textbox(label="Timeline with Assets Considered", lines=20)
|
725 |
-
timeline_output = gr.Textbox(label="Timeline (Order might be different for now)", lines=20)
|
726 |
-
story_output = gr.Textbox(label="Generated Story (Order might be different for now)", lines=20)
|
727 |
-
with gr.Row():
|
728 |
-
generate_no_ui_timeline_points = gr.Slider(minimum=1, value=10, step=1, maximum=30, label="Choose the amount of ui timeline points")
|
729 |
-
generate_no_media_timeline_points = gr.Slider(minimum=1, value=5, step=1, maximum=30, label="Choose the amount of media timeline points")
|
730 |
-
generate_with_media_check = gr.Checkbox(label="Generate with media", value=True)
|
731 |
-
generate_button = gr.Button("Generate Story and Timeline")
|
732 |
-
|
733 |
-
@gr.render(inputs=game_structure_output_text_with_media)
|
734 |
-
def update(game_structure_output_text_with_media):
|
735 |
-
return show_elements_json_input(game_structure_output_text_with_media)
|
736 |
-
|
737 |
-
generate_button.click(generate_story_and_timeline, inputs=[generate_no_ui_timeline_points, 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])
|
738 |
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
744 |
|
745 |
-
|
746 |
-
|
747 |
with gr.Row():
|
748 |
-
with gr.Column(scale=2):
|
749 |
-
gr.Markdown("# Text-based Adventure Game")
|
750 |
-
|
751 |
-
description = gr.Textbox(label="Current Situation", lines=4, value=initgameinfo[0])
|
752 |
-
choices = gr.Radio(label="Your Choices", choices=initgameinfo[1])
|
753 |
-
submit_btn = gr.Button("Make Choice")
|
754 |
-
game_log = gr.Textbox(label="Game Log", lines=20, value=initgameinfo[2])
|
755 |
-
game_session = gr.State(value=initgameinfo[3])
|
756 |
-
submit_btn.click(
|
757 |
-
make_choice,
|
758 |
-
inputs=[choices, game_session],
|
759 |
-
outputs=[description, choices, game_log, game_session]
|
760 |
-
)
|
761 |
with gr.Column(scale=1):
|
762 |
-
gr.
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
wamedia = gr.State(["testmedia/Stable Audio - Raindrops, output.wav"])
|
782 |
-
|
783 |
-
@gr.render(inputs=wamedia)
|
784 |
-
def dynamic_with_media(media_items):
|
785 |
-
print(media_items)
|
786 |
-
with gr.Group() as wamediagrouping:
|
787 |
-
gr.HTML("Placeholder to load all media tests - still need to test clearing media on ")
|
788 |
-
if media_items == []:
|
789 |
-
gr.Markdown("No media items to display.")
|
790 |
-
else:
|
791 |
-
for item in media_items:
|
792 |
-
render = create_media_component(item)
|
793 |
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
outputs=[wadescription, wachoices, wagame_log, wagame_session, wamedia]
|
804 |
-
)
|
805 |
with gr.Column(scale=1):
|
806 |
gr.Markdown("# Debugging")
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
outputs=[waerror_box, wagame_log, wadescription, wachoices, wacustom_config, wagame_session, wamedia]
|
816 |
-
)
|
817 |
-
|
818 |
-
with gr.Tab("Config With Minimal 3D considered"):
|
819 |
-
gr.HTML("Placeholder for Config with 3D assets")
|
820 |
-
|
821 |
-
with gr.Tab("Edit config while playing game"):
|
822 |
-
gr.HTML("-- Incomplete -- Issue here is updating all variables <br> Current problem is passing values from rendered items to the config box <br>Generate Timline also makes config without mmedia key <br>Need a way have dropdowns for the filelist and transitions eg. changing transitions must auto update choices")
|
823 |
-
with gr.Row():
|
824 |
-
with gr.Column(scale=1):
|
825 |
-
with gr.Group():
|
826 |
-
gr.Markdown("# Text-based Adventure Game")
|
827 |
-
|
828 |
-
ewpwadescription = gr.Textbox(label="Current Situation", lines=4, value=initgameinfo[0])
|
829 |
-
ewpwamediabool = gr.State(value=True)
|
830 |
-
ewpwamedia = gr.State(["testmedia/Stable Audio - Raindrops, output.wav"])
|
831 |
-
|
832 |
-
@gr.render(inputs=ewpwamedia)
|
833 |
-
def dynamic_with_media(media_items):
|
834 |
-
print(media_items)
|
835 |
-
with gr.Group() as ewpwamediagrouping:
|
836 |
-
gr.HTML("Placeholder to load all media tests - still need to test clearing media on ")
|
837 |
-
if media_items == []:
|
838 |
-
gr.Markdown("No media items to display.")
|
839 |
-
else:
|
840 |
-
for item in media_items:
|
841 |
-
render = create_media_component(item)
|
842 |
-
|
843 |
-
return ewpwamediagrouping
|
844 |
-
|
845 |
-
ewpwachoices = gr.Radio(label="Your Choices", choices=initgameinfo[1])
|
846 |
-
ewpwasubmit_btn = gr.Button("Make Choice")
|
847 |
-
ewpwagame_log = gr.Textbox(label="Game Log", lines=20, value=initgameinfo[2])
|
848 |
-
ewpwagame_session = gr.State(value=initgameinfo[3])
|
849 |
-
ewpwasubmit_btn.click(
|
850 |
-
make_choice,
|
851 |
-
inputs=[ewpwachoices, ewpwagame_session, ewpwamediabool],
|
852 |
-
outputs=[ewpwadescription, ewpwachoices, ewpwagame_log, ewpwagame_session, ewpwamedia]
|
853 |
)
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
)
|
865 |
-
with gr.Accordion("Can copy in the Test Example State Machine tab - only linear path for now", open=False):
|
866 |
-
gr.Markdown("# Story and Timeline Generator")
|
867 |
-
gr.Markdown("Click the button to generate a random timeline and story based on UI elements and story events. <br>Ask an LLM to use this to write a story around")
|
868 |
with gr.Row():
|
869 |
-
|
870 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
871 |
with gr.Row():
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
|
885 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
886 |
|
887 |
with gr.Tab("Custom JS Config Creator"):
|
888 |
gr.HTML("-- Incomplete -- Companion Space for zerogpu / client api workflow planning for a way to send a zip to the Basic Game Engine at the bottom of https://huggingface.co/spaces/KwabsHug/TestSvelteStatic (Also to test how much can be done majority on cpu)")
|
@@ -960,65 +1019,6 @@ with gr.Blocks() as demo:
|
|
960 |
|
961 |
with gr.Tab("LLM as custom controllers Considerations"):
|
962 |
gr.HTML("Controls changed the scope of the game eg. mouse vs keyboard vs console controller vs remote vs touch screen <br>LLM can be vision/surveilance based controler (eg. MGS/GTA camera gauged by an actual camera in real life) or it can be a companion (offline/off console game progrssion ideas)")
|
963 |
-
|
964 |
-
with gr.Tab("Asset Generation Considerations"):
|
965 |
-
gr.HTML("With some ideas from gemini-1.5-flash-api-0514 and reka-flash-preview-20240611 <br><br>Licenses for the spaces still to be evaluated")
|
966 |
-
|
967 |
-
with gr.Tab("Save files"):
|
968 |
-
gr.HTML("For Dynamic events overnight or when player is not active what can LLMS edit? <br><br>eg. Waiting for a letter from a random npc can be decided by the llm <br>eg. Improved Stats on certain days (eg. bitrthday) <br>Privacy <br>User Directed DLC eg. Rockstar Editor with local llm guide")
|
969 |
-
gr.HTML("Some ideas - In game websites eg. GTA esp stock markets, news; ")
|
970 |
-
gr.HTML("Placeholder for huggingface spaces that can assist - https://huggingface.co/nvidia/Nemotron-4-340B-Instruct (Purpose is supposed to be synthetic data generation) ")
|
971 |
-
gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist (9b and under) <br>initial floor for testing can be https://huggingface.co/spaces/Qwen/Qwen2-0.5B-Instruct, https://huggingface.co/spaces/Qwen/Qwen2-1.5b-instruct-demo, https://huggingface.co/spaces/stabilityai/stablelm-2-1_6b-zephyr, https://huggingface.co/spaces/IndexTeam/Index-1.9B, https://huggingface.co/microsoft/Phi-3-mini-4k-instruct")
|
972 |
-
|
973 |
-
with gr.Tab("Images"):
|
974 |
-
gr.HTML("Concept Art, UI elements, Static/3D Characters, Environments and Objects")
|
975 |
-
gr.HTML("Image Caption = https://huggingface.co/spaces/microsoft/Promptist, https://huggingface.co/spaces/gokaygokay/SD3-Long-Captioner, https://huggingface.co/spaces/gokaygokay/Florence-2, ")
|
976 |
-
gr.HTML("Images Generation Portraits = https://huggingface.co/spaces/okaris/omni-zero")
|
977 |
-
gr.HTML("Images Generation General = https://huggingface.co/spaces/stabilityai/stable-diffusion-3-medium, https://huggingface.co/spaces/PixArt-alpha/PixArt-Sigma, https://huggingface.co/spaces/stabilityai/stable-diffusion, https://www.craiyon.com/, https://huggingface.co/spaces/prodia/sdxl-stable-diffusion-xl")
|
978 |
-
gr.HTML("Images Generation Posters with text - https://huggingface.co/spaces/GlyphByT5/Glyph-SDXL-v2")
|
979 |
-
gr.HTML("Images Generation Very Specific position and shape - https://huggingface.co/spaces/linoyts/scribble-sdxl-flash")
|
980 |
-
gr.HTML("SVG Generation = Coding models - ")
|
981 |
-
gr.HTML("Vision Models for descriptions <br> https://huggingface.co/spaces/gokaygokay/Florence-2 <br>https://huggingface.co/spaces/vilarin/VL-Chatbox - glm 4v 9b <br>")
|
982 |
-
gr.HTML("Upscalers (save data transfer costs? highly detailed characters?) - https://huggingface.co/spaces/gokaygokay/AuraSR")
|
983 |
-
gr.HTML("Placeholder for huggingface spaces that can assist ")
|
984 |
-
gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist")
|
985 |
-
|
986 |
-
with gr.Tab("Audio"):
|
987 |
-
gr.HTML("Music - Background, Interactive, Cutscene, Menu <br>Sound Effects - Environment, character, action (environmental triggered by user eg. gun), UI <br>Speech - Dialouge, narration, voiceover <br>The new render function means the Config can be made and iframe/api functions can be ordered as neccessary based on the part of the config that needs it to streamline workflows based on current state of config ")
|
988 |
-
gr.HTML("Placeholder for huggingface spaces that can assist")
|
989 |
-
gr.HTML("Audio Sound Effects - https://huggingface.co/spaces/artificialguybr/Stable-Audio-Open-Zero")
|
990 |
-
gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist")
|
991 |
-
|
992 |
-
with gr.Tab("Video"):
|
993 |
-
gr.HTML("Cutscenes, Tutorials, Trailers")
|
994 |
-
gr.HTML("Placeholder for huggingface spaces that can assist - https://huggingface.co/spaces/KingNish/Instant-Video, https://huggingface.co/spaces/multimodalart/stable-video-diffusion, https://huggingface.co/spaces/multimodalart/stable-video-diffusion")
|
995 |
-
gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist")
|
996 |
-
|
997 |
-
with gr.Tab("3D"):
|
998 |
-
gr.HTML("Characters, Environments, Objects")
|
999 |
-
gr.HTML("Placeholder for huggingface spaces that can assist - https://huggingface.co/spaces/dylanebert/3d-arena, https://huggingface.co/spaces/Wuvin/Unique3D, https://huggingface.co/spaces/stabilityai/TripoSR, https://huggingface.co/spaces/hysts/Shap-E")
|
1000 |
-
gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist")
|
1001 |
-
|
1002 |
-
with gr.Tab("Animations (for lower resource use)"):
|
1003 |
-
gr.HTML("Characters, Environments, Objects")
|
1004 |
-
gr.HTML("Placeholder for huggingface spaces that can assist - image as 3d object in video https://huggingface.co/spaces/ashawkey/LGM")
|
1005 |
-
gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist")
|
1006 |
-
|
1007 |
-
with gr.Tab("Fonts"):
|
1008 |
-
gr.HTML("Style of whole game, or locations, or characters")
|
1009 |
-
gr.HTML("Placeholder for huggingface spaces that can assist - there was a space that could make letter into pictures based on the prompt but I cant find it now")
|
1010 |
-
gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist")
|
1011 |
-
|
1012 |
-
with gr.Tab("Shaders and related"):
|
1013 |
-
gr.HTML("Any output that is not understood by the common person can be used as special effects eg. depth map filters on images etc.")
|
1014 |
-
gr.HTML("Post-processing Effects, material effects, Particle systems, visual feedback")
|
1015 |
-
gr.HTML("Visual Effects - eg. explosion can turn all items white for a moment, losing conciousness blurs whole screen")
|
1016 |
-
gr.HTML("Placeholder for huggingface spaces that can assist - https://huggingface.co/spaces/EPFL-VILAB/4M, https://huggingface.co/spaces/EPFL-VILAB/MultiMAE ")
|
1017 |
-
gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist")
|
1018 |
-
|
1019 |
-
with gr.Tab():
|
1020 |
-
gr.HTML("Social media that shows possiblities")
|
1021 |
-
gr.HTML("https://x.com/blizaine")
|
1022 |
|
1023 |
with gr.Tab("Other Considerations"):
|
1024 |
with gr.Tab("General"):
|
|
|
635 |
<div style="width: 20%; text-align: center">llms good at short questions </div>
|
636 |
<div style="width: 20%; text-align: center">HF + Gradio allows for api use so this my prototype tool for tool use test</div>
|
637 |
</div>""")
|
638 |
+
with gr.Accordion("Temporary Asset Management Assist - click to open", open=False):
|
639 |
+
gr.HTML("Make Files and Text ideas for the field and paste <br>When Space is restarted it will clear - zip export and import will be added later")
|
640 |
+
with gr.Accordion("Upload Files for config"):
|
641 |
+
gr.Markdown("# Media Saver and Explorer (refresh file list to be resolved - for now upload all files and reload the space - they persist as long as the space creator doesnt reset the space - will add manual clear options later)")
|
642 |
+
with gr.Tab("Upload Files"):
|
643 |
+
file_input = gr.File(label="Choose File to Upload")
|
644 |
+
save_output = gr.Textbox(label="Upload Status")
|
645 |
+
|
646 |
+
with gr.Tab("File Explorer"):
|
647 |
+
|
648 |
+
file_explorer = gr.FileExplorer(
|
649 |
+
root_dir=SAVE_DIR,
|
650 |
+
glob="*.*",
|
651 |
+
file_count="single",
|
652 |
+
height=300,
|
653 |
+
label="Select a file to view"
|
654 |
+
)
|
655 |
+
with gr.Row():
|
656 |
+
refresh_button = gr.Button("Refresh", scale=1)
|
657 |
+
view_button = gr.Button("View File")
|
658 |
+
image_output = gr.Image(label="Image Output", type="pil")
|
659 |
+
audio_output = gr.Audio(label="Audio Output")
|
660 |
+
video_output = gr.Video(label="Video Output")
|
661 |
+
error_output = gr.Textbox(label="Error")
|
662 |
+
|
663 |
+
file_input.upload(
|
664 |
+
save_file,
|
665 |
+
inputs=file_input,
|
666 |
+
outputs=[save_output, file_explorer, file_input]
|
667 |
+
)
|
668 |
+
|
669 |
+
view_button.click(
|
670 |
+
view_file,
|
671 |
+
inputs=file_explorer,
|
672 |
+
outputs=[image_output, audio_output, video_output, error_output]
|
673 |
+
)
|
674 |
+
|
675 |
+
refresh_button.click(
|
676 |
+
refresh_file_explorer,
|
677 |
+
outputs=file_explorer
|
678 |
+
)
|
679 |
+
gr.HTML("Placeholder for clearing uploaded assets (public space and temporary persistence = sharing and space problems)")
|
680 |
+
|
681 |
+
with gr.Accordion("Text"):
|
682 |
+
gr.HTML("Embed of a text sites")
|
683 |
+
with gr.Accordion("LLM HF Spaces/Sites (Click Here to Open) - Ask for a story and suggestions based on the autoconfig", open=False):
|
684 |
+
with gr.Row():
|
685 |
+
linktochat = gr.Dropdown(choices=["https://labs.perplexity.ai/", "https://chat.lmsys.org", "https://sdk.vercel.ai/docs", "https://qwen-qwen-max-0428.hf.space", "https://cohereforai-c4ai-command-r-plus.hf.space", "https://huggingface.co/spaces/eswardivi/Phi-3-mini-128k-instruct", "https://eswardivi-phi-3-mini-4k-instruct.hf.space", "https://cyzgab-catch-me-if-you-can.hf.space", "https://snowflake-snowflake-arctic-st-demo.hf.space", "https://qwen-qwen1-5-110b-chat-demo.hf.space", "https://ysharma-chat-with-meta-llama3-8b.hf.space", "https://databricks-dbrx-instruct.hf.space", "https://qwen-qwen1-5-moe-a2-7b-chat-demo.hf.space", "https://cohereforai-c4ai-command-r-v01.hf.space", "https://ehristoforu-mixtral-46-7b-chat.hf.space", "https://stabilityai-stablelm-2-1-6b-zephyr.hf.space", "https://qwen-qwen1-5-72b-chat.hf.space", "https://deepseek-ai-deepseek-coder-7b-instruct.hf.space", "https://01-ai-yi-34b-chat.hf.space", "https://ysharma-zephyr-playground.hf.space", "https://huggingfaceh4-zephyr-chat.hf.space", "https://osanseviero-mistral-super-fast.hf.space", "https://artificialguybr-qwen-14b-chat-demo.hf.space", "https://huggingface-projects-llama-2-7b-chat.hf.space", "https://ysharma-explore-llamav2-with-tgi.hf.space", "https://mosaicml-mpt-30b-chat.hf.space", "https://huggingfaceh4-falcon-chat.hf.space", "https://uwnlp-guanaco-playground-tgi.hf.space", "https://stabilityai-stablelm-tuned-alpha-chat.hf.space", "https://mosaicml-mpt-7b-storywriter.hf.space", "https://huggingfaceh4-starchat-playground.hf.space", "https://bigcode-bigcode-playground.hf.space", "https://mosaicml-mpt-7b-chat.hf.space", "https://huggingchat-chat-ui.hf.space", "https://togethercomputer-openchatkit.hf.space"], label="Choose/Cancel type any .hf.space link here (can also type a link)'", allow_custom_value=True)
|
686 |
+
chatspacebtn = gr.Button("Use the chosen URL to load interface with a chat model. For sdk.vercel click the chat button on the top left. For lymsys / chat arena copy the link and use a new tab")
|
687 |
+
chatspace = gr.HTML("Chat Space Chosen will load here")
|
688 |
+
chatspacebtn.click(display_website, inputs=linktochat, outputs=chatspace)
|
689 |
+
with gr.Accordion("Other"):
|
690 |
+
with gr.Accordion("Image Gen or Animation HF Spaces/Sites (Click Here to Open) - Have to download and upload at the the top", open=False):
|
691 |
+
with gr.Row():
|
692 |
+
linktoimagegen = gr.Dropdown(choices=["https://huggingface.co/spaces/linoyts/scribble-sdxl-flash", "https://prodia-sdxl-stable-diffusion-xl.hf.space", "https://prodia-fast-stable-diffusion.hf.space", "https://lllyasviel-ic-light.hf.space", "https://gparmar-img2img-turbo-sketch.hf.space", "https://artificialguybr-artificialguybr-demo-lora.hf.space", "https://kadirnar-open-sora.hf.space", "https://bytedance-animatediff-lightning.hf.space", "https://bytedance-hyper-sdxl-1step-t2i.hf.space", "https://ehristoforu-dalle-3-xl-lora-v2.hf.space", "https://multimodalart-cosxl.hf.space", "https://radames-real-time-text-to-image-sdxl-lightning.hf.space", "https://cagliostrolab-animagine-xl-3-1.hf.space", "https://wangfuyun-animatelcm-svd.hf.space" "https://modelscope-transferanything.hf.space", "https://visionmaze-magic-me.hf.space", "https://wangfuyun-animatelcm.hf.space", "https://artgan-diffusion-api.hf.space", "https://multimodalart-stable-cascade.hf.space", "https://ap123-sdxl-lightning.hf.space", "https://google-sdxl.hf.space", "https://guoyww-animatediff.hf.space", "https://segmind-segmind-stable-diffusion.hf.space", "https://simianluo-latent-consistency-model.hf.space", "https://artificialguybr-studio-ghibli-lora-sdxl.hf.space", "https://artificialguybr-pixel-art-generator.hf.space", "https://fffiloni-sdxl-control-loras.hf.space"], label="Choose/Cancel type any .hf.space link here (can also type a link)'", allow_custom_value=True)
|
693 |
+
imagegenspacebtn = gr.Button("Use the chosen URL to load interface with a image generation model")
|
694 |
+
imagegenspace = gr.HTML("Chat Space Chosen will load here")
|
695 |
+
imagegenspacebtn.click(display_website, inputs=linktoimagegen, outputs=imagegenspace)
|
696 |
+
|
697 |
+
with gr.Tab("Test and Edit Config"):
|
698 |
+
gr.HTML("The main issue is frequent changes add more chances for bugs in how ")
|
699 |
+
with gr.Tab("Full Manual - Test Example State Machine"):
|
700 |
+
with gr.Tab("Config Without Assets"):
|
701 |
+
with gr.Row():
|
702 |
+
with gr.Column(scale=2):
|
703 |
+
gr.Markdown("# Text-based Adventure Game")
|
704 |
+
|
705 |
+
description = gr.Textbox(label="Current Situation", lines=4, value=initgameinfo[0])
|
706 |
+
choices = gr.Radio(label="Your Choices", choices=initgameinfo[1])
|
707 |
+
submit_btn = gr.Button("Make Choice")
|
708 |
+
game_log = gr.Textbox(label="Game Log", lines=20, value=initgameinfo[2])
|
709 |
+
game_session = gr.State(value=initgameinfo[3])
|
710 |
+
submit_btn.click(
|
711 |
+
make_choice,
|
712 |
+
inputs=[choices, game_session],
|
713 |
+
outputs=[description, choices, game_log, game_session]
|
714 |
)
|
715 |
+
with gr.Column(scale=1):
|
716 |
+
gr.Markdown("# Debugging")
|
717 |
+
error_box = gr.Textbox(label="Path Errors", lines=4, value=path_errors)
|
718 |
+
with gr.Accordion("Config (Game Spoiler and Example for llm to remix)", open=False):
|
719 |
+
custom_config = gr.Textbox(label="Custom Configuration (JSON)", value=json.dumps(all_states, default=lambda o: o.__dict__, indent=2), lines=8)
|
720 |
+
custom_configbtn = gr.Button("Load Custom Config")
|
721 |
+
|
722 |
+
custom_configbtn.click(
|
723 |
+
load_game,
|
724 |
+
inputs=[custom_config],
|
725 |
+
outputs=[error_box, game_log, description, choices, game_session, custom_config]
|
726 |
+
)
|
727 |
+
with gr.Tab("Config With Assets"):
|
728 |
+
gr.HTML("Placeholder as not complete yet (still only text, current issue is how to switch gradio output, maybe output is gr.Group and we constantly add the appropriate gr for each file type? What about multi file types on one state?)")
|
729 |
+
with gr.Row():
|
730 |
+
with gr.Column(scale=2):
|
731 |
+
gr.Markdown("# Text-based Adventure Game")
|
732 |
+
|
733 |
+
wadescription = gr.Textbox(label="Current Situation", lines=4, value=initgameinfo[0])
|
734 |
+
wamediabool = gr.State(value=True)
|
735 |
+
wamedia = gr.State(["testmedia/Stable Audio - Raindrops, output.wav"])
|
736 |
+
|
737 |
+
@gr.render(inputs=wamedia)
|
738 |
+
def dynamic_with_media(media_items):
|
739 |
+
print(media_items)
|
740 |
+
with gr.Group() as wamediagrouping:
|
741 |
+
gr.HTML("Placeholder to load all media tests - still need to test clearing media on ")
|
742 |
+
if media_items == []:
|
743 |
+
gr.Markdown("No media items to display.")
|
744 |
+
else:
|
745 |
+
for item in media_items:
|
746 |
+
render = create_media_component(item)
|
747 |
+
|
748 |
+
return wamediagrouping
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
749 |
|
750 |
+
wachoices = gr.Radio(label="Your Choices", choices=initgameinfo[1])
|
751 |
+
wasubmit_btn = gr.Button("Make Choice")
|
752 |
+
wagame_log = gr.Textbox(label="Game Log", lines=20, value=initgameinfo[2])
|
753 |
+
wagame_session = gr.State(value=initgameinfo[3])
|
754 |
+
wasubmit_btn.click(
|
755 |
+
make_choice,
|
756 |
+
inputs=[wachoices, wagame_session, wamediabool],
|
757 |
+
outputs=[wadescription, wachoices, wagame_log, wagame_session, wamedia]
|
758 |
+
)
|
759 |
+
with gr.Column(scale=1):
|
760 |
+
gr.Markdown("# Debugging")
|
761 |
+
waerror_box = gr.Textbox(label="Path Errors", lines=4, value=path_errors)
|
762 |
+
with gr.Accordion("Config (Game Spoiler and Example for llm to remix)", open=False):
|
763 |
+
wacustom_config = gr.Textbox(label="Custom Configuration (JSON)", value=json.dumps(all_states, default=lambda o: o.__dict__, indent=2), lines=8)
|
764 |
+
wacustom_configbtn = gr.Button("Load Custom Config")
|
765 |
+
|
766 |
+
wacustom_configbtn.click(
|
767 |
+
load_game,
|
768 |
+
inputs=[wacustom_config, wamediabool],
|
769 |
+
outputs=[waerror_box, wagame_log, wadescription, wachoices, wacustom_config, wagame_session, wamedia]
|
770 |
+
)
|
771 |
+
|
772 |
+
with gr.Tab("Config With Minimal 3D considered"):
|
773 |
+
gr.HTML("Placeholder for Config with 3D assets")
|
774 |
|
775 |
+
with gr.Tab("Semi-Auto - Edit config while playing game"):
|
776 |
+
gr.HTML("-- Incomplete -- Issue here is updating all variables <br> Current problem is passing values from rendered items to the config box <br>Generate Timline also makes config without mmedia key <br>Need a way have dropdowns for the filelist and transitions eg. changing transitions must auto update choices <br>Config to components has hardcoded variables based on the auto gen so changes break it")
|
777 |
with gr.Row():
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
778 |
with gr.Column(scale=1):
|
779 |
+
with gr.Group():
|
780 |
+
gr.Markdown("# Text-based Adventure Game")
|
781 |
+
|
782 |
+
ewpwadescription = gr.Textbox(label="Current Situation", lines=4, value=initgameinfo[0])
|
783 |
+
ewpwamediabool = gr.State(value=True)
|
784 |
+
ewpwamedia = gr.State(["testmedia/Stable Audio - Raindrops, output.wav"])
|
785 |
+
|
786 |
+
@gr.render(inputs=ewpwamedia)
|
787 |
+
def dynamic_with_media(media_items):
|
788 |
+
print(media_items)
|
789 |
+
with gr.Group() as ewpwamediagrouping:
|
790 |
+
gr.HTML("Placeholder to load all media tests - still need to test clearing media on ")
|
791 |
+
if media_items == []:
|
792 |
+
gr.Markdown("No media items to display.")
|
793 |
+
else:
|
794 |
+
for item in media_items:
|
795 |
+
render = create_media_component(item)
|
796 |
+
|
797 |
+
return ewpwamediagrouping
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
798 |
|
799 |
+
ewpwachoices = gr.Radio(label="Your Choices", choices=initgameinfo[1])
|
800 |
+
ewpwasubmit_btn = gr.Button("Make Choice")
|
801 |
+
ewpwagame_log = gr.Textbox(label="Game Log", lines=20, value=initgameinfo[2])
|
802 |
+
ewpwagame_session = gr.State(value=initgameinfo[3])
|
803 |
+
ewpwasubmit_btn.click(
|
804 |
+
make_choice,
|
805 |
+
inputs=[ewpwachoices, ewpwagame_session, ewpwamediabool],
|
806 |
+
outputs=[ewpwadescription, ewpwachoices, ewpwagame_log, ewpwagame_session, ewpwamedia]
|
807 |
+
)
|
|
|
|
|
808 |
with gr.Column(scale=1):
|
809 |
gr.Markdown("# Debugging")
|
810 |
+
ewpwaerror_box = gr.Textbox(label="Path Errors", lines=4, value=path_errors)
|
811 |
+
ewpwacustom_config = gr.Textbox(label="Custom Configuration (JSON)", value=json.dumps(all_states, default=lambda o: o.__dict__, indent=2), lines=8)
|
812 |
+
ewpwacustom_configbtn = gr.Button("Load Custom Config")
|
813 |
+
|
814 |
+
ewpwacustom_configbtn.click(
|
815 |
+
load_game,
|
816 |
+
inputs=[ewpwacustom_config, ewpwamediabool],
|
817 |
+
outputs=[ewpwaerror_box, ewpwagame_log, ewpwadescription, ewpwachoices, ewpwacustom_config, ewpwagame_session, ewpwamedia]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
818 |
)
|
819 |
+
with gr.Accordion("Can copy in the Test Example State Machine tab - only linear path for now", open=False):
|
820 |
+
gr.Markdown("# Story and Timeline Generator")
|
821 |
+
gr.Markdown("Click the button to generate a random timeline and story based on UI elements and story events. <br>Ask an LLM to use this to write a story around")
|
822 |
+
with gr.Row():
|
823 |
+
ewpgame_structure_output_text_with_media = gr.Code(language="json")
|
824 |
+
ewpgame_structure_output_text = gr.Code(language="json")
|
825 |
+
with gr.Row():
|
826 |
+
ewptimeline_output_with_assets = gr.Textbox(label="Timeline with Assets Considered", lines=20)
|
827 |
+
ewptimeline_output = gr.Textbox(label="Timeline (Order might be different for now)", lines=20)
|
828 |
+
ewpstory_output = gr.Textbox(label="Generated Story (Order might be different for now)", lines=20)
|
|
|
|
|
|
|
|
|
829 |
with gr.Row():
|
830 |
+
ewpgenerate_no_ui_timeline_points = gr.Slider(minimum=1, value=10, step=1, maximum=30, label="Choose the amount of ui timeline points")
|
831 |
+
ewpgenerate_no_media_timeline_points = gr.Slider(minimum=1, value=5, step=1, maximum=30, label="Choose the amount of media timeline points")
|
832 |
+
ewpgenerate_with_media_check = gr.Checkbox(label="Generate with media", value=True)
|
833 |
+
ewpgenerate_button = gr.Button("Generate Story and Timeline")
|
834 |
+
|
835 |
+
@gr.render(inputs=ewpwacustom_config) #ewpgame_structure_output_text_with_media
|
836 |
+
def update(ewpwacustom_config):
|
837 |
+
return show_elements_json_input(ewpwacustom_config)
|
838 |
+
|
839 |
+
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])
|
840 |
+
|
841 |
+
with gr.Tab("Some Workflow Helpers (Removed as built into Semi-Auto)"):
|
842 |
+
gr.HTML("Song / Random Scenario to 'full game' manual or auto is end goal ")
|
843 |
+
gr.HTML("Main Priority is to make rails for the story to work on as a simplified view of a game is a linear path with loops (gameplay mechanics) <br> Below = Manual Edit (At bottom you can save the changes and copy it to test) <br>For LLM edit copy either the Timeline")
|
844 |
+
gr.HTML("The problem is the assets generation isnt free and using spaces as api also clogs them (no way to know when ZeroGPUs are at lowest usage) so using iFrame is better for now <br> So worklfow -- Make Skeleton -- Use Iframe to get media -- then ask for details / story / gameplay loop ideas and add back to config")
|
845 |
+
with gr.Tab("Schema First"):
|
846 |
+
gr.HTML("Some Kinds of game skeletons ideas - Timelines, Graph as State machine paths, Economy ecosystem")
|
847 |
+
gr.HTML("One prompt to be used to test models - <br>Please make 10 python lists for the types of media files and their purposes in a game and then use those lists to random generate a timeline of 20 items when the function is called <br>Great next suggest ways to improve this function to create better timelines")
|
848 |
+
with gr.Accordion("Test for config to gradio components order - ignore for now", open=False ):
|
849 |
+
gr.Markdown("Asset Generation")
|
850 |
+
gr.HTML("Splits by new line - The idea here was to allow for saving the file ")
|
851 |
+
input_text = gr.Textbox(label="Input Text", lines=10)
|
852 |
+
output_group = gr.Group()
|
853 |
+
|
854 |
+
@gr.render(inputs=input_text)
|
855 |
+
def update(text):
|
856 |
+
return show_elements(text)
|
857 |
+
with gr.Accordion("Proto Config Assist"):
|
858 |
+
with gr.Accordion("Can copy in the Test Example State Machine tab - only linear path for now", open=False):
|
859 |
+
gr.Markdown("# Story and Timeline Generator")
|
860 |
+
gr.Markdown("Click the button to generate a random timeline and story based on UI elements and story events. <br>Ask an LLM to use this to write a story around")
|
861 |
+
with gr.Row():
|
862 |
+
game_structure_output_text_with_media = gr.Code(language="json")
|
863 |
+
game_structure_output_text = gr.Code(language="json")
|
864 |
+
with gr.Accordion("JSON with no edits"):
|
865 |
+
with gr.Row():
|
866 |
+
timeline_output_with_assets = gr.Textbox(label="Timeline with Assets Considered", lines=20)
|
867 |
+
timeline_output = gr.Textbox(label="Timeline (Order might be different for now)", lines=20)
|
868 |
+
story_output = gr.Textbox(label="Generated Story (Order might be different for now)", lines=20)
|
869 |
with gr.Row():
|
870 |
+
generate_no_ui_timeline_points = gr.Slider(minimum=1, value=10, step=1, maximum=30, label="Choose the amount of ui timeline points")
|
871 |
+
generate_no_media_timeline_points = gr.Slider(minimum=1, value=5, step=1, maximum=30, label="Choose the amount of media timeline points")
|
872 |
+
generate_with_media_check = gr.Checkbox(label="Generate with media", value=True)
|
873 |
+
generate_button = gr.Button("Generate Story and Timeline")
|
874 |
+
|
875 |
+
@gr.render(inputs=game_structure_output_text_with_media)
|
876 |
+
def update(game_structure_output_text_with_media):
|
877 |
+
return show_elements_json_input(game_structure_output_text_with_media)
|
878 |
+
|
879 |
+
generate_button.click(generate_story_and_timeline, inputs=[generate_no_ui_timeline_points, 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])
|
880 |
+
|
881 |
+
with gr.Tab("Asset First"):
|
882 |
+
gr.HTML("Make Asset and make the transitions using LLM")
|
883 |
+
|
884 |
+
with gr.Tab("Export Options"):
|
885 |
+
gr.HTML("Placeholder - My Custom JS, Playcanvas, Unreal Engine")
|
886 |
+
|
887 |
+
with gr.Tab("Asset Generation Considerations"):
|
888 |
+
gr.HTML("With some ideas from gemini-1.5-flash-api-0514 and reka-flash-preview-20240611 <br><br>Licenses for the spaces still to be evaluated")
|
889 |
+
|
890 |
+
with gr.Tab("Save files"):
|
891 |
+
gr.HTML("For Dynamic events overnight or when player is not active what can LLMS edit? <br><br>eg. Waiting for a letter from a random npc can be decided by the llm <br>eg. Improved Stats on certain days (eg. bitrthday) <br>Privacy <br>User Directed DLC eg. Rockstar Editor with local llm guide")
|
892 |
+
gr.HTML("Some ideas - In game websites eg. GTA esp stock markets, news; ")
|
893 |
+
gr.HTML("Placeholder for huggingface spaces that can assist - https://huggingface.co/nvidia/Nemotron-4-340B-Instruct (Purpose is supposed to be synthetic data generation) ")
|
894 |
+
gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist (9b and under) <br>initial floor for testing can be https://huggingface.co/spaces/Qwen/Qwen2-0.5B-Instruct, https://huggingface.co/spaces/Qwen/Qwen2-1.5b-instruct-demo, https://huggingface.co/spaces/stabilityai/stablelm-2-1_6b-zephyr, https://huggingface.co/spaces/IndexTeam/Index-1.9B, https://huggingface.co/microsoft/Phi-3-mini-4k-instruct")
|
895 |
+
|
896 |
+
with gr.Tab("Images"):
|
897 |
+
gr.HTML("Concept Art, UI elements, Static/3D Characters, Environments and Objects")
|
898 |
+
gr.HTML("Image Caption = https://huggingface.co/spaces/microsoft/Promptist, https://huggingface.co/spaces/gokaygokay/SD3-Long-Captioner, https://huggingface.co/spaces/gokaygokay/Florence-2, ")
|
899 |
+
gr.HTML("Images Generation Portraits = https://huggingface.co/spaces/okaris/omni-zero")
|
900 |
+
gr.HTML("Images Generation General = https://huggingface.co/spaces/stabilityai/stable-diffusion-3-medium, https://huggingface.co/spaces/PixArt-alpha/PixArt-Sigma, https://huggingface.co/spaces/stabilityai/stable-diffusion, https://www.craiyon.com/, https://huggingface.co/spaces/prodia/sdxl-stable-diffusion-xl")
|
901 |
+
gr.HTML("Images Generation Posters with text - https://huggingface.co/spaces/GlyphByT5/Glyph-SDXL-v2")
|
902 |
+
gr.HTML("Images Generation Very Specific position and shape - https://huggingface.co/spaces/linoyts/scribble-sdxl-flash")
|
903 |
+
gr.HTML("SVG Generation = Coding models - ")
|
904 |
+
gr.HTML("Vision Models for descriptions <br> https://huggingface.co/spaces/gokaygokay/Florence-2 <br>https://huggingface.co/spaces/vilarin/VL-Chatbox - glm 4v 9b <br>")
|
905 |
+
gr.HTML("Upscalers (save data transfer costs? highly detailed characters?) - https://huggingface.co/spaces/gokaygokay/AuraSR")
|
906 |
+
gr.HTML("Placeholder for huggingface spaces that can assist ")
|
907 |
+
gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist")
|
908 |
+
|
909 |
+
with gr.Tab("Audio"):
|
910 |
+
gr.HTML("Music - Background, Interactive, Cutscene, Menu <br>Sound Effects - Environment, character, action (environmental triggered by user eg. gun), UI <br>Speech - Dialouge, narration, voiceover <br>The new render function means the Config can be made and iframe/api functions can be ordered as neccessary based on the part of the config that needs it to streamline workflows based on current state of config ")
|
911 |
+
gr.HTML("Placeholder for huggingface spaces that can assist")
|
912 |
+
gr.HTML("Audio Sound Effects - https://huggingface.co/spaces/artificialguybr/Stable-Audio-Open-Zero")
|
913 |
+
gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist")
|
914 |
+
|
915 |
+
with gr.Tab("Video"):
|
916 |
+
gr.HTML("Cutscenes, Tutorials, Trailers")
|
917 |
+
gr.HTML("Placeholder for huggingface spaces that can assist - https://huggingface.co/spaces/KingNish/Instant-Video, https://huggingface.co/spaces/multimodalart/stable-video-diffusion, https://huggingface.co/spaces/multimodalart/stable-video-diffusion")
|
918 |
+
gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist")
|
919 |
+
|
920 |
+
with gr.Tab("3D"):
|
921 |
+
gr.HTML("Characters, Environments, Objects")
|
922 |
+
gr.HTML("Placeholder for huggingface spaces that can assist - https://huggingface.co/spaces/dylanebert/3d-arena, https://huggingface.co/spaces/Wuvin/Unique3D, https://huggingface.co/spaces/stabilityai/TripoSR, https://huggingface.co/spaces/hysts/Shap-E")
|
923 |
+
gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist")
|
924 |
+
|
925 |
+
with gr.Tab("Animations (for lower resource use)"):
|
926 |
+
gr.HTML("Characters, Environments, Objects")
|
927 |
+
gr.HTML("Placeholder for huggingface spaces that can assist - image as 3d object in video https://huggingface.co/spaces/ashawkey/LGM")
|
928 |
+
gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist")
|
929 |
+
|
930 |
+
with gr.Tab("Fonts"):
|
931 |
+
gr.HTML("Style of whole game, or locations, or characters")
|
932 |
+
gr.HTML("Placeholder for huggingface spaces that can assist - there was a space that could make letter into pictures based on the prompt but I cant find it now")
|
933 |
+
gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist")
|
934 |
+
|
935 |
+
with gr.Tab("Shaders and related"):
|
936 |
+
gr.HTML("Any output that is not understood by the common person can be used as special effects eg. depth map filters on images etc.")
|
937 |
+
gr.HTML("Post-processing Effects, material effects, Particle systems, visual feedback")
|
938 |
+
gr.HTML("Visual Effects - eg. explosion can turn all items white for a moment, losing conciousness blurs whole screen")
|
939 |
+
gr.HTML("Placeholder for huggingface spaces that can assist - https://huggingface.co/spaces/EPFL-VILAB/4M, https://huggingface.co/spaces/EPFL-VILAB/MultiMAE ")
|
940 |
+
gr.HTML("Placeholder for models small enough to run on cpu here in this space that can assist")
|
941 |
+
|
942 |
+
with gr.Tab():
|
943 |
+
gr.HTML("Social media that shows possiblities")
|
944 |
+
gr.HTML("https://x.com/blizaine")
|
945 |
|
946 |
with gr.Tab("Custom JS Config Creator"):
|
947 |
gr.HTML("-- Incomplete -- Companion Space for zerogpu / client api workflow planning for a way to send a zip to the Basic Game Engine at the bottom of https://huggingface.co/spaces/KwabsHug/TestSvelteStatic (Also to test how much can be done majority on cpu)")
|
|
|
1019 |
|
1020 |
with gr.Tab("LLM as custom controllers Considerations"):
|
1021 |
gr.HTML("Controls changed the scope of the game eg. mouse vs keyboard vs console controller vs remote vs touch screen <br>LLM can be vision/surveilance based controler (eg. MGS/GTA camera gauged by an actual camera in real life) or it can be a companion (offline/off console game progrssion ideas)")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1022 |
|
1023 |
with gr.Tab("Other Considerations"):
|
1024 |
with gr.Tab("General"):
|