Godot Engine in the Classroom: Getting Started

I began using Godot Engine with a group of students. This is a small group of my most advanced middle schoolers (ages 11-12), with 1+ years of Python experience. I do an “advanced topics” class with them every Thursday after school. They have never used a game engine before.

Here’s how it went.

Read more...

Godot - Animating Tiles Using Shaders

Read more...

Godot 101 - Part 13: KinematicBody2D Collisions Done Right

This is part 13 of “Godot 101”. In this installment, we take a deeper look at how to handle KinematicBody2D collisions in a simple and accurate way, and how to avoid a few common mistakes. If you haven’t already read through the previous parts, please start with Part 1.

About this series

Godot 101 is an introduction to the Godot game engine and how it works. If you’ve never used a game engine before, or if you’re just new to Godot, this is the place to start. If you’re new here, a quick note about this website: we’re called KidsCanCode because we teach programming and game development to kids, but if you’re an adult you’re welcome here, too. We don’t believe in dumbing-down the material for kids, and game development is hard - so it will probably be challenging no matter what your age.

Read more...

Godot 101 - Part 12: Camera and Scrolling Background

This is part 12 of “Godot 101”. In this installment, we add a camera to follow the player, and make a scrolling background. If you haven’t already read through the previous parts, please start with Part 1.

About this series

Godot 101 is an introduction to the Godot game engine and how it works. If you’ve never used a game engine before, or if you’re just new to Godot, this is the place to start. If you’re new here, a quick note about this website: we’re called KidsCanCode because we teach programming and game development to kids, but if you’re an adult you’re welcome here, too. We don’t believe in dumbing-down the material for kids, and game development is hard - so it will probably be challenging no matter what your age.

Read more...

Godot 101 - Part 11: Animated Sprites

This is part 11 of “Godot 101”. In this installment, we’ll add animation to the player character. If you haven’t already read through the previous parts, please start with Part 1.

About this series

Godot 101 is an introduction to the Godot game engine and how it works. If you’ve never used a game engine before, or if you’re just new to Godot, this is the place to start. If you’re new here, a quick note about this website: we’re called KidsCanCode because we teach programming and game development to kids, but if you’re an adult you’re welcome here, too. We don’t believe in dumbing-down the material for kids, and game development is hard - so it will probably be challenging no matter what your age.

Read more...

Godot 101 - Part 10: RayCasts (and Jumping)

This is part 10 of “Godot 101”. In this installment, we’ll learn about how to detect when a character is on the ground, so we can jump, by using the RayCast2D node. If you haven’t already read through the previous parts, please start with Part 1.

About this series

Godot 101 is an introduction to the Godot game engine and how it works. If you’ve never used a game engine before, or if you’re just new to Godot, this is the place to start. If you’re new here, a quick note about this website: we’re called KidsCanCode because we teach programming and game development to kids, but if you’re an adult you’re welcome here, too. We don’t believe in dumbing-down the material for kids, and game development is hard - so it will probably be challenging no matter what your age.

Read more...

Godot 101 - Part 9: Arcade Physics (KinematicBody2D)

This is part 9 of “Godot 101”. In this installment, we’ll learn about how to do simple arcade-style physics using Godot’s built-in physics engine. If you haven’t already read through the previous parts, please start with Part 1.

About this series

Godot 101 is an introduction to the Godot game engine and how it works. If you’ve never used a game engine before, or if you’re just new to Godot, this is the place to start. If you’re new here, a quick note about this website: we’re called KidsCanCode because we teach programming and game development to kids, but if you’re an adult you’re welcome here, too. We don’t believe in dumbing-down the material for kids, and game development is hard - so it will probably be challenging no matter what your age.

Read more...

Godot 101 - Part 8: Tweens and Timers

This is part 8 of “Godot 101”. In this installment, we’ll learn about two of the simplest yet most useful nodes in Godot: the Tween and the Timer. If you haven’t already read through the previous parts, please start with Part 1.

About this series

Godot 101 is an introduction to the Godot game engine and how it works. If you’ve never used a game engine before, or if you’re just new to Godot, this is the place to start. If you’re new here, a quick note about this website: we’re called KidsCanCode because we teach programming and game development to kids, but if you’re an adult you’re welcome here, too. We don’t believe in dumbing-down the material for kids, and game development is hard - so it will probably be challenging no matter what your age.

Read more...

Godot 101 - Part 7: Using Signals

This is part 7 of “Godot 101”. In this installment, we’ll learn how properly communicate between nodes, using a Godot feature called a signal. If you haven’t already read through the previous parts, please start with Part 1.

About this series

Godot 101 is an introduction to the Godot game engine and how it works. If you’ve never used a game engine before, or if you’re just new to Godot, this is the place to start. If you’re new here, a quick note about this website: we’re called KidsCanCode because we teach programming and game development to kids, but if you’re an adult you’re welcome here, too. We don’t believe in dumbing-down the material for kids, and game development is hard - so it will probably be challenging no matter what your age.

Read more...

Godot 101 - Part 6: Area-based Collisions

This is part 6 of “Godot 101”. In this installment, we’ll learn how to detect when two collision areas overlap, so we can make our player run around and pick up gems. If you haven’t already read through the previous parts, please start with Part 1.

About this series

Godot 101 is an introduction to the Godot game engine and how it works. If you’ve never used a game engine before, or if you’re just new to Godot, this is the place to start. If you’re new here, a quick note about this website: we’re called KidsCanCode because we teach programming and game development to kids, but if you’re an adult you’re welcome here, too. We don’t believe in dumbing-down the material for kids, and game development is hard - so it will probably be challenging no matter what your age.

Read more...

Godot 101 - Part 5: Player-controlled Sprite

This is part 5 of “Godot 101”. In this installment, we’ll learn how to use player input to move a sprite around the screen. If you haven’t already read through the previous parts, please start with Part 1.

About this series

Godot 101 is an introduction to the Godot game engine and how it works. If you’ve never used a game engine before, or if you’re just new to Godot, this is the place to start. If you’re new here, a quick note about this website: we’re called KidsCanCode because we teach programming and game development to kids, but if you’re an adult you’re welcome here, too. We don’t believe in dumbing-down the material for kids, and game development is hard - so it will probably be challenging no matter what your age.

Read more...

Godot 101 - Part 4: Instancing Scenes

This is part 4 of “Godot 101”, taking our bouncing sprite and showing how to quickly create multiple instances of it. If you haven’t already read through the previous parts, please start with Part 1.

About this series

Godot 101 is an introduction to the Godot game engine and how it works. If you’ve never used a game engine before, or if you’re just new to Godot, this is the place to start. If you’re new here, a quick note about this website: we’re called KidsCanCode because we teach programming and game development to kids, but if you’re an adult you’re welcome here, too. We don’t believe in dumbing-down the material for kids, and game development is hard - so it will probably be challenging no matter what your age.

Read more...

Godot 101 - Part 3: Scripting (continued)

This is part 3 of “Godot 101”, where we’ll finish scripting our bouncing animated sprite. If you haven’t already read through the previous parts, please start with Part 1.

About this series

Godot 101 is an introduction to the Godot game engine and how it works. If you’ve never used a game engine before, or if you’re just new to Godot, this is the place to start. If you’re new here, a quick note about this website: we’re called KidsCanCode because we teach programming and game development to kids, but if you’re an adult you’re welcome here, too. We don’t believe in dumbing-down the material for kids, and game development is hard - so it will probably be challenging no matter what your age.

Read more...

Godot 101 - Part 2: Scripting

This is part 2 of “Godot 101”, where we’ll introduce Godot’s scripting language, GDScript. If you haven’t already read through the previous parts, please start with Part 1.

About this series

Godot 101 is an introduction to the Godot game engine and how it works. If you’ve never used a game engine before, or if you’re just new to Godot, this is the place to start. If you’re new here, a quick note about this website: we’re called KidsCanCode because we teach programming and game development to kids, but if you’re an adult you’re welcome here, too. We don’t believe in dumbing-down the material for kids, and game development is hard - so it will probably be challenging no matter what your age.

Read more...

Godot 101 - Part 1: Introduction to Godot

This is part 1 of “Godot 101”, where we’ll give an overview of what a game engine is in general, and what Godot is in specific.

About this series

Godot 101 is an introduction to the Godot game engine and how it works. If you’ve never used a game engine before, or if you’re just new to Godot, this is the place to start. If you’re new here, a quick note about this website: we’re called KidsCanCode because we teach programming and game development to kids, but if you’re an adult you’re welcome here, too. We don’t believe in dumbing-down the material for kids, and game development is hard - so it will probably be challenging no matter what your age.

Read more...

Pygame Shmup Part 14: Game Over (and wrapping up)

This is part 14 of our “Shmup” project. If you haven’t already read through the previous parts, please start with Part 1. In this lesson we’ll finish up the game by adding a “Game Over” screen and the ability to play again.

About this series

In this series of lessons we’ll build a complete game using Python and Pygame. It’s intended for beginning programmers who already understand the basics of Python and are looking to deepen their Python understanding and learn the fundamentals of programming games.

Read more...

Pygame Shmup Part 13: Powerups (part 2)

This is part 13 of our “Shmup” project. If you haven’t already read through the previous parts, please start with Part 1. In this lesson we’ll add some powerups that will occasionally appear.

About this series

In this series of lessons we’ll build a complete game using Python and Pygame. It’s intended for beginning programmers who already understand the basics of Python and are looking to deepen their Python understanding and learn the fundamentals of programming games.

Read more...

Pygame Shmup Part 12: Powerups

This is part 12 of our “Shmup” project. If you haven’t already read through the previous parts, please start with Part 1. In this lesson we’ll add some powerups that will occasionally appear.

About this series

In this series of lessons we’ll build a complete game using Python and Pygame. It’s intended for beginning programmers who already understand the basics of Python and are looking to deepen their Python understanding and learn the fundamentals of programming games.

Read more...

Pygame Shmup Part 11: Player Lives

This is part 11 of our “Shmup” project. If you haven’t already read through the previous parts, please start with Part 1. In this lesson we’ll add multiple lives to the player as well as a nice explosion when player dies.

About this series

In this series of lessons we’ll build a complete game using Python and Pygame. It’s intended for beginning programmers who already understand the basics of Python and are looking to deepen their Python understanding and learn the fundamentals of programming games.

Read more...

Pygame Shmup Part 10: Explosions

This is part 10 of our “Shmup” project. If you haven’t already read through the previous parts, please start with Part 1. In this lesson we’ll some animated explosions when the player shoots a meteor.

About this series

In this series of lessons we’ll build a complete game using Python and Pygame. It’s intended for beginning programmers who already understand the basics of Python and are looking to deepen their Python understanding and learn the fundamentals of programming games.

Read more...

Pygame Shmup Part 9: Shields

This is part 9 of our “Shmup” project. If you haven’t already read through the previous parts, please start with Part 1. In this lesson we’ll add a shield to the player as well as a bar to display the shield’s level.

About this series

In this series of lessons we’ll build a complete game using Python and Pygame. It’s intended for beginning programmers who already understand the basics of Python and are looking to deepen their Python understanding and learn the fundamentals of programming games.

Read more...

Pygame Shmup Part 8: Sound and Music

This is part 8 of our “Shmup” project. If you haven’t already read through the previous parts, please start with Part 1. In this lesson we’ll add sound effects and music to the game.

About this series

In this series of lessons we’ll build a complete game using Python and Pygame. It’s intended for beginning programmers who already understand the basics of Python and are looking to deepen their Python understanding and learn the fundamentals of programming games.

Read more...

Pygame Shmup Part 7: Score (and Drawing Text)

This is part 7 of our “Shmup” project. If you haven’t already read through the previous parts, please start with Part 1. In this lesson we’ll start keeping score and learn how to display text on the screen.

About this series

In this series of lessons we’ll build a complete game using Python and Pygame. It’s intended for beginning programmers who already understand the basics of Python and are looking to deepen their Python understanding and learn the fundamentals of programming games.

Read more...

Pygame Shmup Part 6: Sprite Animation

This is part 6 of our “Shmup” project. If you haven’t already read through the previous parts, please start with Part 1. In this lesson we’ll make our meteors more interesting by adding a little bit of sprite animation.

About this series

In this series of lessons we’ll build a complete game using Python and Pygame. It’s intended for beginning programmers who already understand the basics of Python and are looking to deepen their Python understanding and learn the fundamentals of programming games.

Read more...

Pygame Shmup Part 5: Improved Collisions

This is part 5 of our “Shmup” project. If you haven’t already read through the previous parts, please start with Part 1. In this lesson we’ll discuss how to change the way Pygame handles collisions between sprites.

About this series

In this series of lessons we’ll build a complete game using Python and Pygame. It’s intended for beginning programmers who already understand the basics of Python and are looking to deepen their Python understanding and learn the fundamentals of programming games.

Read more...

Pygame Shmup Part 4: Adding Graphics

This is part 4 of our “Shmup” project. If you haven’t already read through the previous parts, please start with Part 1. In this lesson we’ll discuss how to use pre-drawn graphics in our game.

About this series

In this series of lessons we’ll build a complete game using Python and Pygame. It’s intended for beginning programmers who already understand the basics of Python and are looking to deepen their Python understanding and learn the fundamentals of programming games.

Read more...

Pygame Shmup Part 3: Collisions (and shooting!)

This is part 3 of our “Shmup” project! In this lesson we’ll add collisions between the player and the enemies, as well as adding bullets for the player to shoot.

About this series

In this series of lessons we’ll build a complete game using Python and Pygame. It’s intended for beginning programmers who already understand the basics of Python and are looking to deepen their Python understanding and learn the fundamentals of programming games.

Read more...

Pygame Shmup Part 2: Enemy Sprites

This is part 2 of our “Shmup” project! In this lesson we’ll add some enemy sprites for our player to dodge. In this series of lessons we’ll build a complete game using Python and Pygame. It’s intended for beginning programmers who already understand the basics of Python and are looking to deepen their Python understanding and learn the fundamentals of programming games.

Read more...

Pygame Shmup Part 1: Player Sprite and Controls

Let’s make our first game! In this series of lessons we’ll build a complete game using Python and Pygame. It’s intended for beginning programmers who already understand the basics of Python and are looking to deepen their Python understanding and learn the fundamentals of programming games.

Read more...

Pygame Lesson 1-3: More About Sprites

This is part 3 of our tutorial series, “Game Development with Pygame”. It is intended for beginner/intermediate programmers who are interested in game development and improving their Python coding skills. You should start with Part 1: Getting Started

Read more...

Pygame Lesson 1-2: Working with Sprites

This is part 2 of our tutorial series, “Game Development with Pygame”. It is intended for beginner/intermediate programmers who are interested in game development and improving their Python coding skills. You should start with Part 1: Getting Started

Read more...

Pygame Lesson 1-1: Getting Started

This is part 1 of our tutorial series, “Game Development with Pygame”. It is intended for beginner/intermediate programmers who are interested in game development and improving their Python coding skills.

Read more...

Coding is a Life Skill

I have often said that I believe computer programming should be adopted as a core curriculum subject in primary school, just like science, history, or math. I often give presentations to this effect for parents, teachers, and school administrators. In this article, I’ll explore a few of the reasons why I believe so strongly in the power of early CS education.

When considering the place of computer science in the curriculum, let’s first look at why we teach other core subjects.

We teach science because we want children to understand the world around them, and the scientific method is a fantastic intellectual tool for investigating the world around you. In a modern society, where scientific advancements directly affect so many aspects of our lives, it is advantageous to have a good understanding of how science works.

In the same way, learning about history or math contribute to a better understanding of the world by providing perspectives and ways of thinking that we wouldn’t otherwise know. In particular, I’ll talk about the use of math in more detail below.

Read more...

Common Struggles

Over the past few years, I’ve taught hundreds of kids to code using Python in workshops, after school programs, and as part of school curriculum. Most of the students I teach are around middle school age (11-14). I find this age to be a great time to start learning. The kids are very engaged and capable - and very motivated to learn, if given the chance.

I prefer Python for teaching kids for a number of reasons, foremost because it’s a very beginner-friendly language. That said, however, there are still a number of very common areas where kids tend to struggle the most.

Read more...

Installing Pygame

Making games is a great way to improve your programming skills while making something fun at the same time. Pygame is a set of tools for Python that make it easy to work with graphics and sound.

Unfortunately, installing Pygame is not as easy as using it is. Below you’ll find the best directions we’ve found for getting it working on your system. Follow the directions below, and let us know in the comments below if you have any problems.

Read more...

Why Python?

There are a huge number of programming languages out there. You’ve probably heard of one or two, even if you’re not a programmer yourself - Java, C++, Swift, etc. But what are they all about and how do you choose which one to learn?

There’s really not one perfect answer to this question, but personally, I prefer Python for teaching kids for a number of reasons. I’ll go into some of those reasons below, but if I had to boil it down to a few bullet points, they would be these:

  • It’s great for beginners
  • It’s not a “teaching” language
  • It’s very widely used

Read more...

Gamification and Education

“Gamification” is the application of game design and gaming mechanics in non-gaming contexts. When you see LinkedIn giving you a “profile score,” that’s gamification at work. Done well, it can be a great method of incentivizing users to be more active. In fact, in the absence of formal gamification features, users will often “gamify” things themselves - from people on Facebook who try and get more Likes than their friends, to drivers trying to time it so they don’t hit any red lights. Read more...