Recently, my four-year-old son asked me, “Daddy, can we make a game together? Can it be a kitty game?”

I’m a gamedev dad. I’ve made 35 games on my own: mostly little freeware game jam entries, but also lots of client projects. The answer was yes, of course, since every parent loves to share their passion in life with their family.

I’m teaching him concepts of design and coding, but it’s a very collaborative process where he draws something in crayon and I turn it into a 3D game as he sits on my lap.

The project continues to be a huge success. I’d like to share my experiences in the hopes that you too will be able to enjoy making a game with someone young in your life.

Why Games, Specifically?

The advantages of early exposure to STEM (science, technology, engineering, and math) have become well established in recent years. No parents need convincing that this knowledge is important, not just for future jobs but because technology surrounds us. Understanding how the world around us works is what growing up is all about, and teaching our children about the world is a primary goal of parenthood.

Unfortunately, many think it too daunting a task to sit down and teach their kids algebra at a young age, and question how younger kids (who don’t yet understand math or know how to read) could possibly understand how a game is made. Luckily, motivating kids to learn how games are created is made immeasurably easier by one key fact.

They’re Cool

“Here was something that could turn a bunch of rowdy, crazed, mini-monsters into avid creatives and creators, genuinely excited to learn.”—Gabriel Williams, ProCore3D

Kids like to play and like to build. There’s a tremendous satisfaction in the creation of something. It’s empowering; it gives them a sense of accomplishment and self-worth; it’s a thing they can call their own.

Don’t forget that making a game is something that kids can boast about to their peers: gamedev is officially cool. This is something teachers can and should take big advantage of.

Kids Are Smarter Than We Think

Consider a typical four-year-old’s worldview. They might not understand the principles of physics, but they do know that objects fall to the ground when dropped, they know balls bounce off walls, and they know cars speed along with the help of wheels.

There’s plenty of room to experiment within these simplistic parameters; you don’t need to know how to calculate a dot product to explain collision response and restitution, and kids know that some things are more slippery than others. Friction and drag and other concepts related to rigid-body Newtonian physics are the perfect subject matter for curious young minds.

Kids Love Physics

Sound crazy? Well, what child doesn’t get a thrill out of smashing a tower of blocks, or sending a train off a cliff, or throwing snowballs? In game terms, it’s easy to imagine a younger child wanting to explore game mechanics inspired by Angry Birds (a ballistics simulation).

Physics allows youngsters to do things they can’t in the real world. They can smash cars or push buildings around. They can jump around and cause general mayhem. This instant feedback in a physics simulation is why I warmly recommend making a game with real-time physics.

With a physics simulation implemented within your game’s basecode, kids can experiment with cause and effect to their heart’s content by spawning cubes, spheres, and prefabs aplenty and simply throwing them around and pushing them off cliffs with a simple character controller.

Benefits for Adults

“For my daughter, it was about getting some one-on-one time with an otherwise very busy and preoccupied daddy. It could have been any activity, really. The focus was on togetherness.”—Ryan Henson Creighton, Untold Entertainment

By undertaking a creative project together, you also help yourself. There are obvious benefits for us mentors to reap, from personal interactions leading to deeper bonding, to the simple fact that teaching something often helps you learn it better.

“There is no better way to feel re-invigorated or inspired than by kids, purely because their imagination knows no limitations or boundaries.”—Stacey Mulcahy YoungGameMakers

Working with children refreshes your own imagination and motivation. It lights a fire under your inner critic, and reawakens your inner child, ready to play in earnest, unironically, unselfconsciously.

How I Did It

Here is my personal story. It is an ongoing project, currently taking place in my home office. Not all this advice will apply to your personal situation, and my student may be quite unlike yours, but with luck some of the wisdom I’ve learned in making a game with my preschooler will help you on your own quest.

Keep Things Simple

It probably goes without saying that one key to retaining a child’s attention is to keep it short. Nothing ruins the fun of learning more than boredom. Twenty minutes is all you’ve got.

If you’re working with the very young, don’t try to teach them how to write source code at all; in truth this is more like a “field trip” and less like actually teaching them to program. We’re not trying to make a commercial game that is ever polished and ready to sell. That’s something for older kids working on their tenth jam game. The goal here is to build something fun together, much like a fort out of couch cushions, or a treehouse. You’ll do most of the work, but you’ll both reap huge benefits.

Prepare Yourself First

Although prep work and asset gathering is the typical first step in any creative endeavour, if your child wanted to paint a painting they’d often be disappointed by a shopping trip to the art store.

If you’ve never made a game before, this first prep stage will prove to be a significant challenge. A fun one, but not something you should expect a child to sit around watching. Join a few game jams solo, first, and then share your newfound skills. You don’t have to be a master game developer, just enthusiastic and with tools in hand.

If you’ve made several games, you’ll know that at the onset of every project is a ramping up of productivity as you assemble tools, create new folders, add empty scripts to your project, and collect art assets.

Skip Square One

“Start at the finish line! Begin with a simple game… and modify it until interest wanes.”—Farbs, creator of Captain Forever

Preparing a “basecode” or “skeleton project” is essential if you want to hit the ground running. Before you even sit a child down in front of a game project, you should prepare an MVP (minimum viable product) that contains the bare necessities for a game: some inits, and the ability to move around, trigger a sound, and detect collisions.

One quick way to do that is to download one of the hundreds of “starter kits” on your engine’s asset store, or rip out the core of an old game you made, such as a game jam entry. These starter kits, available both for free and for a few dollars, encapsulate all the mechanics a simple game needs, whether it is a platformer, shooter, or puzzle game.

Before you create a basic MVP project ready for tinkering, you’ll want to talk with your new apprentice and get a general sense of the kinds of things they imagine doing. You have a lot of leeway here to suggest features or gameplay mechanics that you feel are within the realm of “technically possible” and “easy to implement”. The younger the child, the more likely that what they request will sound suspiciously similar to their current favorite game.

In my personal case, our only shared game experiences have been LEGO games, which are some of the most accessible AAA titles around. I started by searching the Unity Asset Store and buying a cheap platformer starter kit. If your student is passionate about Minecraft instead, you should work in voxels, for which plenty of starter kits are available for the price of a pizza.

Skipping square one also ensures that you will always have a blank canvas that “just works” as a testbed for experiments and to get right into the action within a few seconds. Don’t bother trying to set up a fresh new project while your child watches; by the time you’re ready for their input, the moment will have passed.

I didn’t sit my son in front of a keyboard and expect him to start typing. I engaged him in a conversation about what we were trying to accomplish, and did all the work myself under his enthusiastic direction.

A Typical Lesson

My son sits on my lap for ten minutes at a time and tells me what he’d like me to implement. He loves to playtest each build and offer suggestions for improvement. He designs characters in crayon, and asks me to try to make 3D versions of his imaginings.

It’s actually worked quite well, and without ever so much as mentioning it to him I find he keeps begging to work on it some more, a couple times a week, just for fun.

It’s like building LEGO spaceships with him, an activity I’ve put quite a large number of happy hours into over the last few years, in that it’s a collaborative experience where we build something together.

Once I had kitties running around, I showed it to him. He was enthralled. Overjoyed. It “just worked” for him and his clumsy hands. He couldn’t die. The game never told him he failed. It was finally more a “toy” than a game.

The Ongoing Process

We sat together, and I built whatever he wanted.

“It needs things to smash. Can you make it so you can smash everything? Can I push the cars off the cliff?”

Once implemented, he would beg to play the game, and when allowed he would meticulously push cars off the cliff at the edge of the map for as long as I’d let him!

We would play together and smash holes in the buildings and eat sushi for what felt like idyllic hours of pure summer holiday fun—free from any rules, without a “you lose game over” condition. He’d laugh, I’d laugh, and it felt like building sandcastles at the beach or climbing playground equipment.

It sounds corny, but I know these moments will be some of my happiest memories, ones I hope to savour decades from now. My son and I, playing a game he’d helped me make.

The End Product

Sure, it’s broken, buggy, cheap, unpolished, and held together with duct tape. It’s like a spaceship made out of a cardboard box with crayon buttons and wires drawn all over it. A child’s half-finished messy painting, a non-game, a mess.

But it’s so much more than that for me. For me, it’s the culmination of a lifelong dream, a few happy afternoons tucked away, free from stress.

For you, Kitty Game is a physics sandbox with up to eight silly cats running around destroying cars and houses, being chased by evil dogs, and eating delicious sushi.

There’s no real point to the game—but the funny thing is, many people go on to play for quite a long time.

Tips and Tricks

“There’s no better way to ingrain a hatred for something in a kid than to make it mandatory.”—Tom Farro

Avoid the Keyboard

Keyboard controls are confusing. Faced with over a hundred buttons, each with a complex glyph that may or may not be understood, children will hesitate. They’re worried about pressing Delete or Escape, and the keyboard is likely in use by the teacher.

Most kids have been taught by nervous adults that some keys on the keyboard are booby-trapped and could cause terrible things to happen. Who hasn’t admonished a child that they might delete our work if they messed with our keyboards?

For this reason, I recommend implementing gamepad controls immediately. Even kids as young as two years old can use a joystick and push a button on a gamepad.

Alternatively, if the game runs on a touch-screen device, you’ll find kids are more than happy to mash away at the screen.

The reason I love having an alternative control device in the child’s hand is that they retain the feeling of control, while being sequestered away from the actual code.

An ideal format is to have two chairs in front of your computer. The child is holding a gamepad, and sits beside the adult, who types into the IDE and runs the builds for testing. You have a gamepad as well, so the two of you can play together with each iteration.

Do this often: after every line of code or tweak to a few variables in the editor. Doing so keeps boring work sessions short, and rewards the child’s patience with a gaming session.

More Play Than Work

“With younger kids I do the programming but they tell me what to do every step of the way. I get them to draw the art and pick colors.”—Sarah Northway, creator of Rebuild and half of Northway Games

One way I’ve made our sessions so enjoyable is by allowing generous timespans for each playtest session, while keeping work sprints ultra short—in the two- to five-minute range.

After each session, I ask my student what changes need to be made. Examples of requests include “Can we give him a lightning sword?” and “We should be able to jump higher”.

These iterative development loops teach some central lessons required of all developers: discipline, patience, and an experimental, iterative mindset. The value of small improvements over time, and an acknowledgement of the limits we all face.

Expect and Accept Failure

You’ll invariably be asked to implement something that would take you too long, or that would be technically not feasible given the engine you’re working with.

Kids are okay with this, in the same way that they appreciate that not all LEGO designs are destined to stay standing, and not all finger paintings look the way they initially envisaged.

This acceptance of imperfect results, outcomes that are typically less awesome than those in our heads, is the key to being a software developer. You try some things. They blow up in your face. Finally you get it to work, and you move on, even if the feature turned out a little less spectacular than you’d imagined before work had begun.

The more ambitious the imagination, the greater some creative disappointments are going to be. I feel that this is a very powerful life lesson. Not a negative or cynical worldview but instead a healthy way to live. Grownup life will be filled with slower progress than planned, frustrations along the way to great destinations, and the occasional roadblock.

Patience and Iteration

For very young children like my son, they’re not yet actually learning to code—they’re just learning that doing anything takes much patience. He now knows what a “bug” is, and how grownups fix them: trial and error, over and over, until what was broken starts working, like building a very tall block tower.

This “try, try again” work ethic is central to all engineering and science, and goes beyond the foundations of software development through to personal development. Back to the drawing board! Time for a redesign! The first version wasn’t stable! These are all phrases we often exclaim while playing with LEGO, train sets, sandcastles, or building blocks. It doesn’t always work on the first try, but through a process of iterative refinement we can build amazing things.

Realistic Goal Setting

Just like an overly-optimistic, top-heavy tower of blocks, children and adults alike begin with dreams too big to be realistic. The patience and positive reaction to small failures along the way in big projects will serve children well for their entire life.

Nothing will work perfectly on the first try, whether now, sitting on Dad’s lap making a videogame, in a decade, when he is building an RC car, or as an adult, working on NASA’s next amazing rocket engine.

Fundamentals of Software Development

By explaining concepts and roadblocks along the way, we’ve covered some pretty hefty topics. My eager student now vaguely understands concepts such as collision detection, sound effects, gravity, cameras, and what source code is. He gets the difference between the editor and a compiled executable.

He’s wrapping his head around prefabs and particle systems, and understands projectiles and pickups. He groks main menus and HUD overlay score counters, timers and events, what “respawning” is, and how we can intercept triggers like onCollision to run some custom code (like cause something to explode).

You’d be amazed at the level of understanding of game systems and simulation even a pre-school kid can reach, within reason. I think these concepts (simulation, gravity, and event-driven coding principles) will send him rather well prepared into kindergarten when he goes next September, and they don’t require true math ability—even little kids can estimate based on their real-world experiences, and even pre-schoolers think about gravity.

Even at this most basic level, my pre-schooler has learned lessons not just about specifics like what a level is, gravity, collision, simulation, and so on, but also about design and project management: dealing with frustration and repetition, trial and error, discipline to work on something that takes more than one session to finish. These are valuable tools that kids already deal with when building LEGO structures that are initially unstable. The “back to the drawing board” mentality that game development requires is also what growing up requires.

“Kids learn how to embrace both art and technology with game making… it’s a great way to open the door to the potential of a technology career as it does encompass so many different disciplines.”—Stacey Mulcahy, YoungGameMakers

Make a Game Together!

Perhaps you have a little person in your life who loves games. Have they asked about how they’re made? You’re the kind of person who reads gamedev tutorials. You may have already made your own games. Have you shared this knowledge and enthusiasm with them? It’s never too early.

Why not dive in and share in the bonding experience, the learning opportunity, and the pure joy of collaborative creation with someone you love. Make a game with a young child. It’s feasible and will benefit you both. You might be surprised just how smart kids are, if they’re given a chance. Good luck!