About Design a Space Explorer in Arcade Games

A page for Educators & Parents

Design a Space Explorer provides students with instruction for block-based game development. This skillmap walks through beginner/intermediate game development concepts, teaching them in a beginner-friendly way.

In this set of activities, students will use the power of coding to create a Galaga-style space fighter. Equipped with refillable fuel canisters and a creative mix of space lasers, students’ will code everything they need to defend the galaxy from enemies. We recommend that students using this guide already have familiarity with basic MakeCode elements, but our step-by-step instructions are written to be friendly towards those with little coding experience as well.

Designed for students between the ages of 13 & 16, this experience contains a total of 7 tutorials (approximating 63 minutes of instruction) spread over 2 sessions. At the end of the learning path, students receive a certificate of completion.

Minutes* Game Type Key Concepts
Session 1
Prepare Your Ship 5 Intro velocity, movement
Ready, Aim, Fire! 8 Collector events, projectiles, effects, velocity
Here Comes Trouble! 15 Collector events, velocity, randomization, life bar, effects, game score, destruction
All Shook Up 6 Collector effects, animation
Session 2
Fuel Up! 12 Collector status bar, positioning, events, destruction, velocity, randomization, game score
Level Up! 9 Collector variables, conditional statements, game score, text display, velocity, level design
The Art of Darts 8 Modification arrays, randomization, sprite design

* Minutes are approximate, based on instructions as written. They do not include time spent designing elements or re-aquainting with previously-written code. Providing extra time for creativity and debugging is encouraged.

Objectives

As students go through Design a Space Explorer, they will build a galactic environment in which they can fire projectiles at enemy ships, level up the difficulty of the game, and customize projectile design, all while being cautious about their own health bars and refeuling needs. Throughout these experiences, they will be using various computer science and game design concepts.

Specifically, they will experience the following topics:

Computer Science Concepts

  • Loops
  • Events
  • Conditional Statements
  • Arrays

Game Design Concepts

  • Velocity
  • Projectiles
  • Effects
  • Randomization
  • Hit Points
  • Game Score
  • Destruction
  • Animation
  • Status Bar
  • Positioning
  • Variables
  • Text Display
  • Level Design
  • Sprite Design

Session 1

During this session, students will set up the initial version of their game. These modules walk through spaceship setup, projectile shooting, enemy ship functionality, and animations.

1. Prepare Your Ship

Activity Prepare Your Ship (5 min)
Prepare Your Ship thumbnail Set up your spaceship and galactic backdrop.
Blocks used [scene.setBackgroundImage(img`.`)]
[scroller.scrollBackgroundWithSpeed()]
[let mySprite = sprites.create(img`.`, SpriteKind.Player)]
[let mySprite: Sprite=null; controller.moveSprite(mySprite)]
[let mySprite: Sprite=null; mySprite.setStayInScreen(true)]
Solution option Prepare Your Ship Project

2. Ready, Aim, Fire!

Activity Ready, Aim, Fire! (8 min)
Ready, Aim, Fire! thumbnail Equip your ship with projectiles and special effects.
Blocks used [controller.A.onEvent(ControllerButtonEvent.Pressed, function () {})]
[projectile = sprites.createProjectileFromSprite(img`.`, mySprite, 0, 0)]
[let projectile: Sprite=null; projectile.startEffect(effects.fire, 100)]
Solution option Ready, Aim, Fire! Project

3. Here Comes Trouble!

Activity Here Comes Trouble! (15 min)
Here Comes Trouble! thumbnail Add enemies, enemy functionality, and enemy destruction into your game.
Blocks used [controller.A.onEvent(ControllerButtonEvent.Pressed, function () {})]
[let mySprite: Sprite=null; projectile = sprites.createProjectileFromSprite(img`.`, mySprite, 0, 0)]
[let projectile: Sprite=null; projectile.startEffect()]
[sprites.onOverlap()]
[let sprite: Sprite=null; sprite.destroy(effects.ashes, 0)]
[let otherSprite: Sprite=null; otherSprite.destroy()]
[info.changeScoreBy()]
[info.changeLifeBy()]
Solution option Here Comes Trouble! Project

4. All Shook Up

Activity All Shook Up (6 min)
All Shook Up thumbnail Animate your and your enemies’ ships.
Blocks used [scene.cameraShake()]
[animation.runImageAnimation()]
Solution option All Shook Up Project

Session 2

During this session, students will amp up their game by building in additional game design elements. These modules will walk through adding the need to refuel, an extra level, and some design modifications.

1. Fuel Up!

Activity Fuel Up! (12 min)
Fuel Up! thumbnail Add a fuel gauge to your ship and set fuel drops in your game.
Blocks used [let statusbar: StatusBarSprite = null; statusbar = statusbars.create(20, 4, StatusBarKind.Energy)]
[let statusbar: StatusBarSprite = null; statusbar.attachToSprite(mySprite, -30, 0)]
[game.onUpdateInterval()]
[let statusbar: StatusBarSprite = null; statusbar.value += -1]
[sprites.onOverlap()]
[let statusbar: StatusBarSprite = null; statusbar.value = 100]
[let otherSprite: Sprite=null; otherSprite.destroy()]
[statusbars.onZero(StatusBarKind.Energy, function (status){})]
[game.over(false)]
Solution option Fuel Up! Project

2. Level Up!

Activity Level Up! (9 min)
Level Up! thumbnail Switch to a new level when the player gains an achievement.
Blocks used [let enemySpeed = null]
[myEnemy = sprites.createProjectileFromSide(img`.`, 0, enemySpeed)]
[if (true) {}]
[info.changeScoreBy()]
[let mySprite: Sprite=null; mySprite.say("", 0)]
[enemySpeed = 0]
Solution option Level Up! Project

3. The Art of Darts

Activity The Art of Darts (8 min)
The Art of Darts thumbnail Use arrays and randomization to switch up the kinds of darts fired from your ship.
Blocks used [darts = [img`.`, img`.`, img`.`]]
[let darts = [img`.`, img`.`, img`.`] ; darts._pickRandom()]
Solution option The Art of Darts Project
Game Mod Ideas

After students complete The Art of Darts, they can head back to the skillmap and click “SAVE TO MY PROJECTS”, which will open the game in a window with a full-featured toolbox. Here are some modifications they can try:

  • Add another type of enemy
  • Set the health bar (lives, hp) to display on start
  • Add another level to the game
  • Modify level-up design to include more reward elements
  • Add automated, damage-inducing projectiles to enemy ships
arcade-background-scroll=github:microsoft/arcade-background-scroll/
pxt-status-bar=github:jwunderl/pxt-status-bar