Godot 3.0: Splitscreen Demo (Using Viewports)

Introduction

In this demo, we’ll consider a local multiplayer game - a topdown-style maze game with two players (one using arrow keys and the other using WASD controls). This is not a problem if our game world all fits on one screen, but if the map is large, we’ll want to have a “split screen” view tracking the two players separately.

We’ll also look at a quick way to set up a minimap display.

Read more...

Godot 3.0: Simple Mobile UI (with transitions)

Mobile UI Building the UI is usually the least fun part of your game. When I’m working on a project, I tend to ignore this part for as long as I can. On the plus side, once you’ve built a few game screens and UI systems, you can often use them across mulitiple projects. In this tutorial, we’ll make a small UI system for a mobile game. We’ll focus on the UI screens only, with the goal that you can plug this into your own game to jump-start construction of your various game screens. Read more...

Topdown Tank Battle: Part 9

In this tutorial series, we’ll walk through the steps of building a 2D top-down tank game using Godot 3.0. The goal of the series is to introduce you to Godot’s workflow and show you various techniques that you can apply to your own projects.

This is Part 9: Obstacles (and tool scripts)

Read more...

Topdown Tank Battle: Part 8

In this tutorial series, we’ll walk through the steps of building a 2D top-down tank game using Godot 3.0. The goal of the series is to introduce you to Godot’s workflow and show you various techniques that you can apply to your own projects.

This is Part 8: Tank explosions and shooting effects

Read more...

Topdown Tank Battle: Part 7

In this tutorial series, we’ll walk through the steps of building a 2D top-down tank game using Godot 3.0. The goal of the series is to introduce you to Godot’s workflow and show you various techniques that you can apply to your own projects.

This is Part 7: Enemy tank health and explosions

Read more...

Topdown Tank Battle: Part 6

In this tutorial series, we’ll walk through the steps of building a 2D top-down tank game using Godot 3.0. The goal of the series is to introduce you to Godot’s workflow and show you various techniques that you can apply to your own projects.

This is Part 6: Tank damage and UI

Read more...

Topdown Tank Battle: Part 5

In this tutorial series, we’ll walk through the steps of building a 2D top-down tank game using Godot 3.0. The goal of the series is to introduce you to Godot’s workflow and show you various techniques that you can apply to your own projects.

This is Part 5: Enemy shooting and improved enemy movement

Read more...

Topdown Tank Battle: Part 4

In this tutorial series, we’ll walk through the steps of building a 2D top-down tank game using Godot 3.0. The goal of the series is to introduce you to Godot’s workflow and show you various techniques that you can apply to your own projects.

This is Part 4: Player shooting

Read more...

Topdown Tank Battle: Part 3

In this tutorial series, we’ll walk through the steps of building a 2D top-down tank game using Godot 3.0. The goal of the series is to introduce you to Godot’s workflow and show you various techniques that you can apply to your own projects.

This is Part 3: Enemy tank movement

Read more...

Topdown Tank Battle: Part 2

In this tutorial series, we’ll walk through the steps of building a 2D top-down tank game using Godot 3.0. The goal of the series is to introduce you to Godot’s workflow and show you various techniques that you can apply to your own projects.

This is Part 2: adding terrain using TileMap.

Read more...

Topdown Tank Battle: Part 1

In this tutorial series, we’ll walk through the steps of building a 2D top-down tank game using Godot 3.0. The goal of the series is to introduce you to Godot’s workflow and show you various techniques that you can apply to your own projects.

Read more...

Godot 3.0: Visibility with Ray-casting

This tutorial shows how to use the ray-casting feature of Godot’s physics engine (not the RayCast2D node) to make entities that can’t see through walls.

We’ll use a TileMap for walls and create some rotating turrets that look for the player and shoot when they can see it.

Note: This is not a beginner-level tutorial. It assumes you have a general knowledge of Godot. If you’re not there yet, start here.

Read more...

Godot 3.0: Using KinematicBody2D

Godot offers a number of collision objects to provide both collision detection and response. Trying to decide which one to use for your project can be confusing. You can avoid problems and simplify development if you understand how each each works and what their pros and cons are. In this tutorial, we’ll look at the KinematicBody2D node and show some examples of how it can be used.

Read more...

Godot 3.0: Inheritance

In this tutorial, we’ll explore how inheritance works in Godot. You can use inheritance in Godot to reuse code and create powerful hierarchies of object and scenes in your game.

We’ll imagine we’re making a classic top-down RPG and use Godot’s inheritance capabilities to create two different kinds of characters in the game.

Read more...

Godot 3.0: Rigid Bodies

At the time of this writing, Godot 3.0 is nearing release, and many new users are trying it out. Recently I’ve seen a lot of confusion around physics and physics bodies, especially rigid bodies, which are Godot’s “true” physics nodes.

In this tutorial, I’ll explain when (and when not) to use rigid bodies, how they work, and demonstrate a few handy tricks to bend them to your will. The examples will use RigidBody2D, but the lessons apply equally to 3D.

You can watch a video version of this lesson here:

Read more...

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...