final code - few changes remaining

This commit is contained in:
Madhu 2025-01-12 17:59:33 +05:30
parent 59e5aacac5
commit cee6fbbc18
3 changed files with 66 additions and 159 deletions

View file

@ -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'])