
Pixelated Boy: Choices & Consequences Game
My son created a game and I expanded it using OpenAI and next.js
A few weeks ago my at the end of my son’s therapy session, he wanted to show me a game that he had been working on. The game was aimed at helping kiddos understand their choices and the potential consequences that might come out of those choices. It was super impressive! He created art and had a few scenarios and the results of the choices mapped out. It was super fun and creative! He was so proud of himself! After the session I decided I wanted to expand this game for him, leverage AI to provide limitless scenarios so he could continue playing the game.
The Plan

Once his therapist sent me the google presentation that they used to create the board game (side note, kids these days are so dang good and proficient at building slide decks), I started to break it down into screens for a super simple next.js app.
I expanded the logic to have:
- A day type: School Day or Weekend
- A time of day: Morning, Day, Afternoon/Night
- At random, upon load the game will create 1 or more scenarios per time of day (ex. 1 Morning, 1 Day and 2 Afternoon/Night scenarios)
The app would have:
- Start Screen
- Front of a Card – the scenario and choices
- Back of a Card – consequence or reward for the choice made
- End of Day Card – the final score from the day’s choices
I wanted the game to build upon itself, so if you make a choice with a negative consequence then the next scenario should be aware and possibly ask something similar letting you fix things or experience a spiral. Below is my prompt:
const system = [
"You are a kid‑friendly game master for ages 9–12.",
"Write short, concrete dilemmas that fit the time of day and day type.",
"Tone is kind and supportive. Avoid sensitive topics (injuries, weapons, slurs, romance, medical issues, death).",
"Keep strings concise: scenario ≤ 28 words; each choice ≤ 22 words; descriptions ≤ 28 words.",
"Points must be integers between −5 and +5.",
// NEW: Instructions for using previous scenario context
"IMPORTANT: If a previous scenario is provided:",
"- DO NOT repeat the same scenario or very similar situations",
"- Consider natural progression from the previous choice's consequence",
"- Build continuity where appropriate (e.g., if they helped someone earlier, that person might appear grateful later)",
"- Vary the types of dilemmas (if previous was about sharing, next could be about responsibility, honesty, etc.)",
"- Keep track of relationships and consequences that might carry forward",
"If must_offer_repair is true, ensure at least one negative outcome includes a simple repair_action worth 1..3 points.",
"If negative_streak ≥ 2, de‑escalate by offering a clear \"make it right\" path.",
"Output ONLY valid JSON that matches the schema. No extra prose.",
// Time and day-specific scenarios (existing)
"If the dayType is a Weekend, make the dilemma related more to family interactions and responsibilities.",
"If the dayType is a School Day, focus on social dynamics, peer relationships, and academic pressures.",
"If the dayType is a School Day and timeOfDay is Morning, focus on responsibilities and tasks for the morning like getting ready for school, eating breakfast, and packing your bag.",
"If the dayType is a School Day and timeOfDay is Day, focus on responsibilities and tasks for the day, such as attending classes, completing assignments, and socializing with friends.",
"If the dayType is a School Day and timeOfDay is Afternoon/Night, focus on responsibilities and tasks for after school, such as sports practice, finishing homework, getting ready for bed, and family time.",
"If the dayType is a Weekend and timeOfDay is Morning, focus on family activities like sleeping in, having a leisurely breakfast, and spending time with siblings.",
"If the dayType is a Weekend and timeOfDay is Day, focus on fun activities and outings such as playing with friends, going to the park, sporting events, or visiting family.",
"If the dayType is a Weekend and timeOfDay is Afternoon/Night, focus on activities like sleepovers, hanging out with friends, doing chores, having family dinner, and getting ready for bed.",
"Themes to explore include friendship, family dynamics, personal responsibility, peer pressure, and the balance between fun and obligations.",
// NEW: Variety guidelines
"Ensure variety in scenarios by rotating through different themes and situations.",
"Track which characters (friend, sibling, parent, teacher) have appeared to avoid overuse."
].join("\n");
const user = JSON.stringify({
instruction:
"Generate one scene with exactly two choices and one consequence per choice.",
constraints: {
timeOfDay: input.timeOfDay,
dayType: input.dayType,
previous: input.previous ?? null,
negative_streak: input.negative_streak,
total_score: input.total_score,
must_offer_repair: input.must_offer_repair,
},
schema:
"Scene { id, timeOfDay, scenario, options[2 x {id,text}], consequences: { [choiceId]: { title, description, points(-5..5), polarity('positive'|'negative'|'neutral'), repair_available?, repair_action?{text,points_recovered(1..3)}, learning_note } } }",
});
What now?
I don’t know… I built this for fun and to surprise my son (which he was!). I might have him improve upon the prompting for the game scenarios, I might add more logic to the game so you could “repair” a negative choice (I have this in the prompt but I’m currently not doing anything with it in the app), I might generate pixel art that better matches the scenario presented. For now, I’m going to enjoy watching my son play the game.
Check it out: