Initial commit
This commit is contained in:
@@ -0,0 +1,427 @@
|
||||
// Game Styles Configuration
|
||||
// Defines the guided questions for each game style
|
||||
|
||||
const GAME_STYLES = {
|
||||
action: {
|
||||
id: 'action',
|
||||
name: 'Action/Arcade',
|
||||
icon: '🎮',
|
||||
description: 'Fast-paced games with quick reflexes',
|
||||
examples: ['Space shooters', 'Platformers', 'Endless runners'],
|
||||
questions: [
|
||||
{
|
||||
id: 'movement',
|
||||
question: 'How does the player move or act?',
|
||||
placeholder: 'e.g., jump and dodge, shoot lasers, fly through obstacles',
|
||||
suggestions: ['jump and run', 'shoot and dodge', 'fly and collect', 'swing and grab']
|
||||
},
|
||||
{
|
||||
id: 'damage',
|
||||
question: 'What happens when you get hit?',
|
||||
placeholder: 'e.g., lose a life, shrink smaller, slow down temporarily',
|
||||
suggestions: ['lose a life', 'shrink smaller', 'get knocked back', 'lose points']
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
puzzle: {
|
||||
id: 'puzzle',
|
||||
name: 'Puzzle',
|
||||
icon: '🧩',
|
||||
description: 'Brain teasers and logic games',
|
||||
examples: ['Match-3', 'Sliding puzzles', 'Word games'],
|
||||
questions: [
|
||||
{
|
||||
id: 'mechanic',
|
||||
question: "What's the core puzzle mechanic?",
|
||||
placeholder: 'e.g., match colors, slide tiles, connect dots',
|
||||
suggestions: ['match 3 or more', 'slide tiles', 'rotate pieces', 'connect paths', 'find differences']
|
||||
},
|
||||
{
|
||||
id: 'levels',
|
||||
question: 'How many levels should this have?',
|
||||
type: 'select',
|
||||
options: [
|
||||
{ value: '5', label: '5 levels (quick game)' },
|
||||
{ value: '10', label: '10 levels (standard)' },
|
||||
{ value: '20', label: '20 levels (full game)' },
|
||||
{ value: 'endless', label: 'Endless (procedural)' }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
story: {
|
||||
id: 'story',
|
||||
name: 'Story Adventure',
|
||||
icon: '📖',
|
||||
description: 'Narrative-driven experiences',
|
||||
examples: ['Choose your adventure', 'Visual novels', 'Quest games'],
|
||||
questions: [
|
||||
{
|
||||
id: 'characters',
|
||||
question: 'Who does the player meet along the way?',
|
||||
placeholder: 'e.g., a wise wizard, a friendly dragon, a sneaky thief',
|
||||
suggestions: ['helpful guide', 'mysterious stranger', 'friendly animal companion', 'rival adventurer']
|
||||
},
|
||||
{
|
||||
id: 'items',
|
||||
question: 'Are there items to collect or use?',
|
||||
placeholder: 'e.g., magic potions, keys, treasure maps',
|
||||
suggestions: ['magic items', 'keys and locks', 'collectible coins', 'power-up gems']
|
||||
},
|
||||
{
|
||||
id: 'endings',
|
||||
question: 'How many different endings?',
|
||||
type: 'select',
|
||||
options: [
|
||||
{ value: '1', label: '1 ending (linear story)' },
|
||||
{ value: '3', label: '3 endings (good/neutral/bad)' },
|
||||
{ value: '5+', label: '5+ endings (branching paths)' }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
racing: {
|
||||
id: 'racing',
|
||||
name: 'Racing',
|
||||
icon: '🏎️',
|
||||
description: 'Speed and competition',
|
||||
examples: ['Car racing', 'Running games', 'Obstacle courses'],
|
||||
questions: [
|
||||
{
|
||||
id: 'vehicle',
|
||||
question: 'What does the player race with?',
|
||||
placeholder: 'e.g., a cool car, a speedy bike, a rocket ship',
|
||||
suggestions: ['sports car', 'motorcycle', 'spaceship', 'running character', 'animal']
|
||||
},
|
||||
{
|
||||
id: 'obstacles',
|
||||
question: 'What obstacles or hazards are on the track?',
|
||||
placeholder: 'e.g., oil slicks, ramps, other racers',
|
||||
suggestions: ['barriers', 'jumps and ramps', 'moving obstacles', 'speed boosts', 'shortcuts']
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
pet: {
|
||||
id: 'pet',
|
||||
name: 'Pet/Simulator',
|
||||
icon: '🐾',
|
||||
description: 'Care for virtual creatures or manage systems',
|
||||
examples: ['Virtual pets', 'Farm games', 'Tycoon games'],
|
||||
questions: [
|
||||
{
|
||||
id: 'creature',
|
||||
question: 'What creature or thing does the player care for?',
|
||||
placeholder: 'e.g., a cute puppy, a magical dragon egg, a garden',
|
||||
suggestions: ['cute pet', 'magical creature', 'garden/farm', 'restaurant', 'space station']
|
||||
},
|
||||
{
|
||||
id: 'needs',
|
||||
question: 'What needs does it have?',
|
||||
placeholder: 'e.g., feeding, playing, cleaning, sleeping',
|
||||
suggestions: ['food and water', 'play and exercise', 'cleaning', 'sleep', 'attention/love']
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
trivia: {
|
||||
id: 'trivia',
|
||||
name: 'Trivia/Quiz',
|
||||
icon: '❓',
|
||||
description: 'Test knowledge and answer questions',
|
||||
examples: ['Quiz shows', 'Fact games', 'Educational games'],
|
||||
questions: [
|
||||
{
|
||||
id: 'topic',
|
||||
question: 'What topic should the questions be about?',
|
||||
placeholder: 'e.g., animals, space, movies, general knowledge',
|
||||
suggestions: ['animals', 'science', 'geography', 'movies', 'sports', 'history', 'general knowledge']
|
||||
},
|
||||
{
|
||||
id: 'format',
|
||||
question: 'How should questions be presented?',
|
||||
type: 'select',
|
||||
options: [
|
||||
{ value: 'multiple', label: 'Multiple choice (4 options)' },
|
||||
{ value: 'truefalse', label: 'True or False' },
|
||||
{ value: 'mixed', label: 'Mix of both' }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
music: {
|
||||
id: 'music',
|
||||
name: 'Music/Rhythm',
|
||||
icon: '🎵',
|
||||
description: 'Games synced to beats and music',
|
||||
examples: ['Rhythm games', 'Dance games', 'Music puzzles'],
|
||||
questions: [
|
||||
{
|
||||
id: 'musicStyle',
|
||||
question: 'What style of music?',
|
||||
placeholder: 'e.g., upbeat pop, electronic dance, relaxing jazz',
|
||||
suggestions: ['upbeat pop', 'electronic', 'rock', 'classical', 'chiptune/8-bit']
|
||||
},
|
||||
{
|
||||
id: 'interaction',
|
||||
question: 'How does the player interact with the music?',
|
||||
placeholder: 'e.g., tap to the beat, catch falling notes, dance moves',
|
||||
suggestions: ['tap notes on beat', 'catch falling objects', 'follow patterns', 'build melodies']
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
creative: {
|
||||
id: 'creative',
|
||||
name: 'Creative/Drawing',
|
||||
icon: '🎨',
|
||||
description: 'Express creativity through art',
|
||||
examples: ['Drawing games', 'Design tools', 'Coloring'],
|
||||
questions: [
|
||||
{
|
||||
id: 'medium',
|
||||
question: 'What does the player create with?',
|
||||
placeholder: 'e.g., paint and brushes, building blocks, musical notes',
|
||||
suggestions: ['paint brushes', 'shapes and colors', 'stickers', 'building blocks', 'patterns']
|
||||
},
|
||||
{
|
||||
id: 'goal',
|
||||
question: 'Is there a goal or is it free-form?',
|
||||
type: 'select',
|
||||
options: [
|
||||
{ value: 'free', label: 'Free creative mode (no goals)' },
|
||||
{ value: 'challenges', label: 'Creative challenges to complete' },
|
||||
{ value: 'both', label: 'Both modes available' }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
rpg: {
|
||||
id: 'rpg',
|
||||
name: 'RPG/Battle',
|
||||
icon: '🏰',
|
||||
description: 'Heroes, quests, and combat',
|
||||
examples: ['Turn-based battles', 'Dungeon crawlers', 'Hero adventures'],
|
||||
questions: [
|
||||
{
|
||||
id: 'hero',
|
||||
question: 'Who is the hero?',
|
||||
placeholder: 'e.g., a brave knight, a young wizard, a space explorer',
|
||||
suggestions: ['brave knight', 'young wizard', 'ninja warrior', 'space explorer', 'animal hero']
|
||||
},
|
||||
{
|
||||
id: 'combat',
|
||||
question: 'How does combat work?',
|
||||
type: 'select',
|
||||
options: [
|
||||
{ value: 'turnbased', label: 'Turn-based (take turns attacking)' },
|
||||
{ value: 'realtime', label: 'Real-time (action combat)' },
|
||||
{ value: 'auto', label: 'Auto-battle (strategic choices)' }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'progression',
|
||||
question: 'How does the hero get stronger?',
|
||||
placeholder: 'e.g., level up, find better weapons, learn new spells',
|
||||
suggestions: ['level up stats', 'find equipment', 'learn abilities', 'upgrade skills']
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
sports: {
|
||||
id: 'sports',
|
||||
name: 'Sports',
|
||||
icon: '🎯',
|
||||
description: 'Athletic competitions and games',
|
||||
examples: ['Ball games', 'Olympic events', 'Arcade sports'],
|
||||
questions: [
|
||||
{
|
||||
id: 'sport',
|
||||
question: 'What sport or activity?',
|
||||
placeholder: 'e.g., basketball, soccer, bowling, mini-golf',
|
||||
suggestions: ['basketball', 'soccer', 'bowling', 'mini-golf', 'archery', 'tennis']
|
||||
},
|
||||
{
|
||||
id: 'mode',
|
||||
question: 'Single player or vs computer?',
|
||||
type: 'select',
|
||||
options: [
|
||||
{ value: 'single', label: 'Single player (beat your score)' },
|
||||
{ value: 'vsai', label: 'Vs Computer opponent' },
|
||||
{ value: 'local', label: 'Local 2-player (same device)' }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
physics: {
|
||||
id: 'physics',
|
||||
name: 'Physics/Pinball',
|
||||
icon: '⚙️',
|
||||
description: 'Games using realistic physics',
|
||||
examples: ['Pinball', 'Angry Birds style', 'Marble games'],
|
||||
questions: [
|
||||
{
|
||||
id: 'object',
|
||||
question: 'What object does the player control or launch?',
|
||||
placeholder: 'e.g., a bouncy ball, a slingshot, pinball flippers',
|
||||
suggestions: ['bouncy ball', 'projectile launcher', 'pinball', 'rolling marble', 'swinging object']
|
||||
},
|
||||
{
|
||||
id: 'environment',
|
||||
question: 'What does it interact with?',
|
||||
placeholder: 'e.g., bumpers and ramps, destructible blocks, water and platforms',
|
||||
suggestions: ['bumpers and ramps', 'destructible targets', 'moving platforms', 'water physics', 'gravity zones']
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
freeform: {
|
||||
id: 'freeform',
|
||||
name: 'Freeform (Advanced)',
|
||||
icon: '✨',
|
||||
description: 'Write your own complete game description',
|
||||
examples: ['Any game idea', 'Complex mechanics', 'Unique combinations'],
|
||||
skipCommonQuestions: true,
|
||||
questions: [
|
||||
{
|
||||
id: 'fullDescription',
|
||||
question: 'Describe your game in detail',
|
||||
type: 'textarea',
|
||||
placeholder: `Describe exactly what game you want. Be as detailed as possible!
|
||||
|
||||
Example:
|
||||
A space shooter where you control a cat astronaut. Move with arrow keys, shoot lasers with spacebar. Enemies are alien mice that fly in wave patterns. Collect cheese powerups for rapid fire. The background scrolls through colorful nebulas. Start with 3 lives, game over when all lives lost.
|
||||
|
||||
Include: theme, controls, enemies/obstacles, powerups, scoring, and any unique mechanics.`,
|
||||
maxLength: 2000
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
// Common questions asked for ALL game styles
|
||||
const COMMON_QUESTIONS = [
|
||||
{
|
||||
id: 'theme',
|
||||
question: "What's the theme or setting?",
|
||||
placeholder: 'e.g., outer space, underwater kingdom, magical forest',
|
||||
suggestions: ['outer space', 'underwater', 'magical forest', 'haunted mansion', 'candy land', 'jungle', 'city', 'arctic']
|
||||
},
|
||||
{
|
||||
id: 'player',
|
||||
question: 'Who or what does the player control?',
|
||||
placeholder: 'e.g., a brave astronaut, a friendly robot, a bouncing ball',
|
||||
suggestions: ['brave hero', 'cute animal', 'robot', 'spaceship', 'ball/shape', 'wizard']
|
||||
},
|
||||
{
|
||||
id: 'goal',
|
||||
question: "What's the goal? How do you win?",
|
||||
placeholder: 'e.g., reach the finish line, collect all the stars, defeat the boss',
|
||||
suggestions: ['reach the end', 'collect items', 'survive waves', 'beat high score', 'solve the puzzle', 'defeat enemies']
|
||||
},
|
||||
{
|
||||
id: 'challenge',
|
||||
question: 'What makes it challenging?',
|
||||
placeholder: 'e.g., time limit, tricky enemies, faster speeds over time',
|
||||
suggestions: ['time pressure', 'enemies/obstacles', 'increasing speed', 'limited lives', 'complex puzzles']
|
||||
}
|
||||
];
|
||||
|
||||
// Final configuration questions
|
||||
const FINAL_QUESTIONS = [
|
||||
{
|
||||
id: 'avatar',
|
||||
question: 'Should the game support custom player avatars?',
|
||||
type: 'select',
|
||||
options: [
|
||||
{ value: 'yes', label: 'Yes - Let players customize their look' },
|
||||
{ value: 'no', label: 'No - Use a fixed character design' }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'difficulty',
|
||||
question: 'What difficulty levels should this have?',
|
||||
type: 'select',
|
||||
options: [
|
||||
{ value: 'easy', label: 'Easy only (great for young kids)' },
|
||||
{ value: 'easy-medium', label: 'Easy + Medium' },
|
||||
{ value: 'all', label: 'Easy, Medium, and Hard' }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'musicStyle',
|
||||
question: 'What style of music should your game have?',
|
||||
type: 'select',
|
||||
options: [
|
||||
{ value: 'chiptune', label: 'Chiptune/8-bit (classic arcade)', icon: '🎵' },
|
||||
{ value: 'rock', label: 'Rock/energetic', icon: '🎸' },
|
||||
{ value: 'calm', label: 'Calm/peaceful', icon: '🎹' },
|
||||
{ value: 'epic', label: 'Epic/adventure', icon: '🌟' },
|
||||
{ value: 'spooky', label: 'Spooky/mysterious', icon: '👻' },
|
||||
{ value: 'electronic', label: 'Electronic/synth', icon: '🤖' },
|
||||
{ value: 'silly', label: 'Silly/fun', icon: '🎪' },
|
||||
{ value: 'none', label: 'No music', icon: '🔇' }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'features',
|
||||
question: 'Any special features?',
|
||||
type: 'multiselect',
|
||||
options: [
|
||||
{ value: 'timer', label: 'Time limit' },
|
||||
{ value: 'notimer', label: 'No time pressure (zen mode)' },
|
||||
{ value: 'local2p', label: 'Local 2-player mode' },
|
||||
{ value: 'endless', label: 'Endless/survival mode' }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'accessibility',
|
||||
question: 'Add accessibility features?',
|
||||
type: 'multiselect',
|
||||
options: [
|
||||
{ value: 'onehand', label: 'One-hand playable' },
|
||||
{ value: 'colorblind', label: 'Colorblind friendly (shapes + colors)' },
|
||||
{ value: 'audio', label: 'Audio descriptions' },
|
||||
{ value: 'largetargets', label: 'Large touch targets' },
|
||||
{ value: 'adjustspeed', label: 'Adjustable game speed' }
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
module.exports = {
|
||||
GAME_STYLES,
|
||||
COMMON_QUESTIONS,
|
||||
FINAL_QUESTIONS,
|
||||
|
||||
getStyleById(styleId) {
|
||||
return GAME_STYLES[styleId] || null;
|
||||
},
|
||||
|
||||
getAllStyles() {
|
||||
return Object.values(GAME_STYLES).map(style => ({
|
||||
id: style.id,
|
||||
name: style.name,
|
||||
icon: style.icon,
|
||||
description: style.description,
|
||||
examples: style.examples
|
||||
}));
|
||||
},
|
||||
|
||||
getQuestionsForStyle(styleId) {
|
||||
const style = GAME_STYLES[styleId];
|
||||
if (!style) return null;
|
||||
|
||||
return {
|
||||
common: style.skipCommonQuestions ? [] : COMMON_QUESTIONS,
|
||||
styleSpecific: style.questions,
|
||||
final: FINAL_QUESTIONS,
|
||||
skipCommonQuestions: style.skipCommonQuestions || false
|
||||
};
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user