final code - few changes remaining
This commit is contained in:
parent
59e5aacac5
commit
cee6fbbc18
3 changed files with 66 additions and 159 deletions
Binary file not shown.
|
|
@ -1,8 +1,6 @@
|
||||||
import streamlit as st
|
import streamlit as st
|
||||||
import asyncio
|
|
||||||
import autogen
|
import autogen
|
||||||
from autogen.agentchat import GroupChat, GroupChatManager
|
from autogen.agentchat import GroupChat, GroupChatManager
|
||||||
from bs4 import BeautifulSoup
|
|
||||||
|
|
||||||
# Initialize session state
|
# Initialize session state
|
||||||
if 'output' not in st.session_state:
|
if 'output' not in st.session_state:
|
||||||
|
|
@ -92,41 +90,27 @@ if st.button("Generate Game Concept"):
|
||||||
"temperature": 0,
|
"temperature": 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Define a task-provider agent
|
||||||
|
task_agent = autogen.AssistantAgent(
|
||||||
|
name="task_agent",
|
||||||
|
llm_config=llm_config,
|
||||||
|
system_message="You are a task provider. Your only job is to provide the task details to the group chat.",
|
||||||
|
)
|
||||||
|
|
||||||
# Define agents with detailed system prompts
|
# Define agents with detailed system prompts
|
||||||
story_agent = autogen.AssistantAgent(
|
story_agent = autogen.AssistantAgent(
|
||||||
name="story_agent",
|
name="story_agent",
|
||||||
llm_config=llm_config,
|
llm_config=llm_config,
|
||||||
system_message="""
|
system_message="""
|
||||||
You are an experienced game story designer specializing in narrative design and world-building. Your task is to:
|
You are an experienced game story designer specializing in narrative design and world-building. Your task is to:
|
||||||
1. Create a compelling narrative that aligns with the specified game type and target audience
|
1. Create a compelling narrative that aligns with the specified game type and target audience.
|
||||||
2. Design memorable characters with clear motivations and character arcs
|
2. Design memorable characters with clear motivations and character arcs.
|
||||||
3. Develop the game's world, including its history, culture, and key locations
|
3. Develop the game's world, including its history, culture, and key locations.
|
||||||
4. Plan story progression and major plot points
|
4. Plan story progression and major plot points.
|
||||||
5. Integrate the narrative with the specified mood/atmosphere
|
5. Integrate the narrative with the specified mood/atmosphere.
|
||||||
6. Consider how the story supports the core gameplay mechanics
|
6. Consider how the story supports the core gameplay mechanics.
|
||||||
|
|
||||||
Structure your response using these XML tags:
|
Provide your response in a detailed, well-structured report format. Do not use XML tags.
|
||||||
<story>
|
|
||||||
<world_overview>
|
|
||||||
[Describe the game world, its history, and setting]
|
|
||||||
</world_overview>
|
|
||||||
<main_characters>
|
|
||||||
<character>
|
|
||||||
<name>[Character name]</name>
|
|
||||||
<role>[Character role]</role>
|
|
||||||
<motivation>[Character motivation]</motivation>
|
|
||||||
<arc>[Character development arc]</arc>
|
|
||||||
</character>
|
|
||||||
</main_characters>
|
|
||||||
<plot_structure>
|
|
||||||
<beginning>[Opening act]</beginning>
|
|
||||||
<middle>[Main story development]</middle>
|
|
||||||
<climax>[Story climax]</climax>
|
|
||||||
<resolution>[Story resolution]</resolution>
|
|
||||||
</plot_structure>
|
|
||||||
<key_moments>[List of pivotal story moments]</key_moments>
|
|
||||||
<gameplay_integration>[How story elements connect with gameplay]</gameplay_integration>
|
|
||||||
</story>
|
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -135,33 +119,15 @@ if st.button("Generate Game Concept"):
|
||||||
llm_config=llm_config,
|
llm_config=llm_config,
|
||||||
system_message="""
|
system_message="""
|
||||||
You are a senior game mechanics designer with expertise in player engagement and systems design. Your task is to:
|
You are a senior game mechanics designer with expertise in player engagement and systems design. Your task is to:
|
||||||
1. Design core gameplay loops that match the specified game type and mechanics
|
1. Design core gameplay loops that match the specified game type and mechanics.
|
||||||
2. Create progression systems (character development, skills, abilities)
|
2. Create progression systems (character development, skills, abilities).
|
||||||
3. Define player interactions and control schemes for the chosen perspective
|
3. Define player interactions and control schemes for the chosen perspective.
|
||||||
4. Balance gameplay elements for the target audience
|
4. Balance gameplay elements for the target audience.
|
||||||
5. Design multiplayer interactions if applicable
|
5. Design multiplayer interactions if applicable.
|
||||||
6. Specify game modes and difficulty settings
|
6. Specify game modes and difficulty settings.
|
||||||
7. Consider the budget and development time constraints
|
7. Consider the budget and development time constraints.
|
||||||
|
|
||||||
Structure your response using these XML tags:
|
Provide your response in a detailed, well-structured report format. Do not use XML tags.
|
||||||
<gameplay>
|
|
||||||
<core_loop>
|
|
||||||
<primary_loop>[Main gameplay loop]</primary_loop>
|
|
||||||
<secondary_loops>[Supporting gameplay loops]</secondary_loops>
|
|
||||||
</core_loop>
|
|
||||||
<controls>
|
|
||||||
<input_scheme>[Control scheme details]</input_scheme>
|
|
||||||
<player_actions>[List of player actions]</player_actions>
|
|
||||||
</controls>
|
|
||||||
<progression>
|
|
||||||
<character_development>[Skills, abilities, stats]</character_development>
|
|
||||||
<unlockables>[Items, features, content]</unlockables>
|
|
||||||
<achievements>[Key milestones and rewards]</achievements>
|
|
||||||
</progression>
|
|
||||||
<game_modes>[List and description of game modes]</game_modes>
|
|
||||||
<multiplayer_features>[Multiplayer mechanics if applicable]</multiplayer_features>
|
|
||||||
<balance>[Game balance considerations]</balance>
|
|
||||||
</gameplay>
|
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -170,40 +136,15 @@ if st.button("Generate Game Concept"):
|
||||||
llm_config=llm_config,
|
llm_config=llm_config,
|
||||||
system_message="""
|
system_message="""
|
||||||
You are a creative art director with expertise in game visual and audio design. Your task is to:
|
You are a creative art director with expertise in game visual and audio design. Your task is to:
|
||||||
1. Define the visual style guide matching the specified art style
|
1. Define the visual style guide matching the specified art style.
|
||||||
2. Design character and environment aesthetics
|
2. Design character and environment aesthetics.
|
||||||
3. Plan visual effects and animations
|
3. Plan visual effects and animations.
|
||||||
4. Create the audio direction including music style, sound effects, and ambient sound
|
4. Create the audio direction including music style, sound effects, and ambient sound.
|
||||||
5. Consider technical constraints of chosen platforms
|
5. Consider technical constraints of chosen platforms.
|
||||||
6. Align visual elements with the game's mood/atmosphere
|
6. Align visual elements with the game's mood/atmosphere.
|
||||||
7. Work within the specified budget constraints
|
7. Work within the specified budget constraints.
|
||||||
|
|
||||||
Structure your response using these XML tags:
|
Provide your response in a detailed, well-structured report format. Do not use XML tags.
|
||||||
<visuals>
|
|
||||||
<style_guide>
|
|
||||||
<color_palette>[Color scheme details]</color_palette>
|
|
||||||
<art_direction>[Overall visual direction]</art_direction>
|
|
||||||
<reference_materials>[Visual references]</reference_materials>
|
|
||||||
</style_guide>
|
|
||||||
<character_design>
|
|
||||||
<main_characters>[Main character visual details]</main_characters>
|
|
||||||
<npc_guidelines>[NPC design guidelines]</npc_guidelines>
|
|
||||||
</character_design>
|
|
||||||
<environment>
|
|
||||||
<world_aesthetics>[World design principles]</world_aesthetics>
|
|
||||||
<key_locations>[Notable location designs]</key_locations>
|
|
||||||
</environment>
|
|
||||||
<vfx_animation>
|
|
||||||
<effects_style>[VFX guidelines]</effects_style>
|
|
||||||
<animation_principles>[Animation guidelines]</animation_principles>
|
|
||||||
</vfx_animation>
|
|
||||||
<audio>
|
|
||||||
<music>[Music style and themes]</music>
|
|
||||||
<sound_effects>[SFX guidelines]</sound_effects>
|
|
||||||
<ambient>[Environmental audio]</ambient>
|
|
||||||
</audio>
|
|
||||||
<technical_specs>[Platform-specific considerations]</technical_specs>
|
|
||||||
</visuals>
|
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -212,52 +153,25 @@ if st.button("Generate Game Concept"):
|
||||||
llm_config=llm_config,
|
llm_config=llm_config,
|
||||||
system_message="""
|
system_message="""
|
||||||
You are a technical director with extensive game development experience. Your task is to:
|
You are a technical director with extensive game development experience. Your task is to:
|
||||||
1. Recommend appropriate game engine and development tools
|
1. Recommend appropriate game engine and development tools.
|
||||||
2. Define technical requirements for all target platforms
|
2. Define technical requirements for all target platforms.
|
||||||
3. Plan the development pipeline and asset workflow
|
3. Plan the development pipeline and asset workflow.
|
||||||
4. Identify potential technical challenges and solutions
|
4. Identify potential technical challenges and solutions.
|
||||||
5. Estimate resource requirements within the budget
|
5. Estimate resource requirements within the budget.
|
||||||
6. Consider scalability and performance optimization
|
6. Consider scalability and performance optimization.
|
||||||
7. Plan for multiplayer infrastructure if applicable
|
7. Plan for multiplayer infrastructure if applicable.
|
||||||
|
|
||||||
Structure your response using these XML tags:
|
Provide your response in a detailed, well-structured report format. Do not use XML tags.
|
||||||
<technical>
|
|
||||||
<stack>
|
|
||||||
<engine>[Game engine choice and rationale]</engine>
|
|
||||||
<tools>[Development tools list]</tools>
|
|
||||||
<languages>[Programming languages]</languages>
|
|
||||||
</stack>
|
|
||||||
<pipeline>
|
|
||||||
<asset_workflow>[Asset creation and management]</asset_workflow>
|
|
||||||
<build_process>[Build and deployment process]</build_process>
|
|
||||||
<version_control>[Version control strategy]</version_control>
|
|
||||||
</pipeline>
|
|
||||||
<requirements>
|
|
||||||
<platforms>[Platform-specific requirements]</platforms>
|
|
||||||
<performance>[Performance targets]</performance>
|
|
||||||
<networking>[Network requirements if applicable]</networking>
|
|
||||||
</requirements>
|
|
||||||
<resources>
|
|
||||||
<team>[Team composition and roles]</team>
|
|
||||||
<hardware>[Hardware requirements]</hardware>
|
|
||||||
<hosting>[Server infrastructure if needed]</hosting>
|
|
||||||
</resources>
|
|
||||||
<timeline>
|
|
||||||
<phases>[Development phases]</phases>
|
|
||||||
<milestones>[Key technical milestones]</milestones>
|
|
||||||
<risks>[Technical risks and mitigation]</risks>
|
|
||||||
</timeline>
|
|
||||||
</technical>
|
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
# Create the group chat
|
# Create the group chat
|
||||||
groupchat = GroupChat(
|
groupchat = GroupChat(
|
||||||
agents=[story_agent, gameplay_agent, visuals_agent, tech_agent],
|
agents=[task_agent, story_agent, gameplay_agent, visuals_agent, tech_agent],
|
||||||
messages=[],
|
messages=[],
|
||||||
speaker_selection_method="round_robin",
|
speaker_selection_method="round_robin", # Ensures agents speak in order
|
||||||
allow_repeat_speaker=False,
|
allow_repeat_speaker=False, # Prevents agents from speaking more than once
|
||||||
max_round=12,
|
max_round=5, # Each agent speaks exactly once
|
||||||
)
|
)
|
||||||
|
|
||||||
# Create the group chat manager
|
# Create the group chat manager
|
||||||
|
|
@ -268,37 +182,30 @@ if st.button("Generate Game Concept"):
|
||||||
)
|
)
|
||||||
|
|
||||||
# Function to run the agent collaboration
|
# Function to run the agent collaboration
|
||||||
async def run_agents(task):
|
def run_agents(task):
|
||||||
await story_agent.initiate_chat(manager, message=task)
|
task_agent.initiate_chat(manager, message=task)
|
||||||
return manager.last_message()["content"]
|
return {
|
||||||
|
"story": story_agent.last_message()["content"],
|
||||||
|
"gameplay": gameplay_agent.last_message()["content"],
|
||||||
|
"visuals": visuals_agent.last_message()["content"],
|
||||||
|
"tech": tech_agent.last_message()["content"],
|
||||||
|
}
|
||||||
|
|
||||||
# Run the agents and get the result
|
# Run the agents and get the result
|
||||||
loop = asyncio.new_event_loop()
|
result = run_agents(task)
|
||||||
asyncio.set_event_loop(loop)
|
|
||||||
result = loop.run_until_complete(run_agents(task))
|
|
||||||
|
|
||||||
# Parse the result and update session state
|
# Update session state with the results
|
||||||
soup = BeautifulSoup(result, 'xml')
|
st.session_state.output = result
|
||||||
|
|
||||||
# Extract sections
|
# Display the outputs in expanders
|
||||||
st.session_state.output['story'] = str(soup.find('story'))
|
with st.expander("Story Design"):
|
||||||
st.session_state.output['gameplay'] = str(soup.find('gameplay'))
|
st.markdown(st.session_state.output['story'])
|
||||||
st.session_state.output['visuals'] = str(soup.find('visuals'))
|
|
||||||
st.session_state.output['tech'] = str(soup.find('technical'))
|
|
||||||
|
|
||||||
# Display the outputs in containers
|
with st.expander("Gameplay Mechanics"):
|
||||||
with st.container():
|
st.markdown(st.session_state.output['gameplay'])
|
||||||
st.subheader("Story")
|
|
||||||
st.write(st.session_state.output['story'])
|
|
||||||
|
|
||||||
with st.container():
|
with st.expander("Visual and Audio Design"):
|
||||||
st.subheader("Gameplay Mechanics")
|
st.markdown(st.session_state.output['visuals'])
|
||||||
st.write(st.session_state.output['gameplay'])
|
|
||||||
|
|
||||||
with st.container():
|
with st.expander("Technical Recommendations"):
|
||||||
st.subheader("Visual and Audio Design")
|
st.markdown(st.session_state.output['tech'])
|
||||||
st.write(st.session_state.output['visuals'])
|
|
||||||
|
|
||||||
with st.container():
|
|
||||||
st.subheader("Technical Recommendations")
|
|
||||||
st.write(st.session_state.output['tech'])
|
|
||||||
Loading…
Reference in a new issue