Category Archives: Teaching Stem

our third game

After the holiday frenzy we finally had our third class.  We encountered several issues in our second game that I wanted to address in this class.  This class didn’t really see any changes from the player’s perspective, but introduced new topics on the game-developer perspective.  The key here is that sometimes it takes more work “behind the scenes” to make something appear nice and polished (and “easy”) to everyone else.  A good life lesson, I think.

Returning to Start

In our second game, there was a problem for the player in that there was never an indication of where they came from when returning to start from the underground passage..  At the start of the game, we were told there was a tree nearby.  If we returned to start through the passage under the tree (by climbing up the roots), we were still simply told that there was a tree.   It would have been nice to add verbiage indicating exactly what was going on..  There are at least several good solutions to this dilemma, if not more..  The two that come to mind are:

  1. Store a variable that denotes whether or not the player had come from the underground passage.  This is a great choice, but requires more coding skills that is a bit beyond my kids’ current abilities (but we’ll get there eventually!).
  2. Use the <<display>> directive of Twine to have several rooms with different mapping points but all look like the same room to the player.  In other words, one room says “You are in a forest.”  The other room says, “You climb the tree roots and emerge where you started.  You are in a forest.”  Both look like the same place to the player (they are in a forest), but one adds how they got there.  This is simpler to design for the particular age group of this class, so we chose this approach.

The Infamous Maze

Every good game has a maze, right?  Well, maybe not.  But some do.  Not many games have mazes near the difficulty of those found in some Infocom games of yore, but mazes are not terribly uncommon.  I wanted to introduce my kids to the concept of a game-maze, so we threw one in this time around.  The fact that mommy solved the maze on the very first attempt was a little disappointing to them, but they still had a good time creating it.

A Reminder of the Goals

I’ve learned a few things in our short history of classes..  My goals have broadened, but I have tried to not let them become too vague.  Not every lesson has to include every goal, but multiple goals are often realized in each lesson.  My new and improved list of goals now include the following, but the very first goal must remain the one of overall importance.  Without it, everything else goes downhill fast!

  • #1 Goal — Have Fun!
  • Encourage and exercise my kids’ imaginations
  • Develop and strengthen my kids’ creative writing skills
  • Leverage everything above to introduce and develop basic concepts of:
    • computing (hardware, software, interaction)
    • typing (without looking at the keyboard!)
    • game design (organization, user experience, story boarding)
    • programming (purpose, syntax, mechanics, best-practices)
    • engineering (design approaches, problem solving)
    • critical thinking (perspective, weighing choices, decision-making)
    • teamwork / collaboration (leadership, listening, compromise)

In other words, the purpose of my class is to facilitate my kids becoming responsible, respectable, capable, and productive members of society while at the same time having fun and developing important life skills.  The hardest part for me (I’m finding) is keeping it on their level..

Our Third Game

We again brainstormed ideas for our third game, and I again decided to draw out the map ahead of time.  I first used this approach in our second game, but found that while I intended it to present a new way of thinking (stretching those brain cells!), it turned out to also be a great way to bound the story complexity.  When we’re deciding the content of a room with only one exit, and three kids yell out three GREAT but different ideas, we are forced to choose one.  This doesn’t always make everyone happy (thus “compromise” was added to the list of goals above), but it does facilitate keeping the game complexity in check.  Here is the list of ideas and the map that we started with:

story3_brainstorm

We decided on a rainforest, but ironically we never added the phrase “it is raining” to any of our rooms.  So it’s more just a forest.  (Oh well.)  We also threw in a small strip of beach for good measure.  The map underwent a few changes as we progressed, and of course we added the concept of using the <<display>> directive in Twine.  This allowed us to create one true “start” screen that the player would see at the beginning of the game but never be able to return to.  When they tried, the game would take them to a location that appeared to be the starting point but without some of the text that appears only at the true start of the game.  Exactly what we wanted.  Goal accomplished!  We also used <<display>> in other areas of the game where multiple locations could see something off in the distance..  Rather than having to type the same description every time, we only needed to add it once and just include it’s description in each location that needed it.  Awesome!

Here is the resulting game maps (from our whiteboard and from Twine), and the playable version.  Enjoy!

story3_storyboard  story3_twinemap  (Click Here to Play)

Lessons Learned (Postmortem)

This class showed me that developmentally my kids are in different places.  My oldest child could clearly pick up on the <<display>> concept, my middle child just wanted to keep adding descriptive text and humor (thus the surprise appearance at the end of someone not typically expected to be in a rainforest), and my youngest really struggled to keep up with everything we were cramming into a 30-45 minute session.

Although it occurred sooner than I expected, my wife was right when she pointed out after this third class that it may be time to start assigning separate tasks that the kids could work  individually to ensure each child gets what they need to continue having FUN while learning these skills.  (Remember, goal #1?)  Therefore the pressure is on me as the teacher to adjust my approach to ensure the #1 goal remains successful…every time, every time, every time.

Next Steps

One big next step is to get them typing.  Up until now I’ve stood in the front with my laptop hooked up to the TV, and we all discuss and decide things together (but sometimes the teacher has to make the call on which way to go or which compromise to enforce) and move along a singular solution to the class activity.  I want all my kids to be able to touch-type, so we’ve bought a copy of Mavis Beacon Keyboarding Kidz.  I will soon play with it and get a feel for it and then assign some “homework” for each student to practice typing.

Aside from typing, I will also be deciding what skills to begin individually focusing on for each child to best support my goals for each of them.  I may try to teach some more advanced skills to my oldest child (programming concepts) while encouraging my youngest child to continue developing her skills in storyline development.  Classes may turn into a culmination of individual assignments (storyline development, descriptive sentences, programming techniques) into a single game, where each student has done their part to enable something that none of them could have done near as well (or as quickly) on their own.  That’s a seriously good lesson in teamwork, too!

Until next time..

our second game

So we had our second class the other day.. We built upon what we had already done in our first story, but this time I challenged the team by adding three new twists:

Existing Storyboard

Before we brainstormed story topics, I drew an empty storyboard.  This new twist required everyone to think about how to create a story that had to fit within a particular set of requirements.  Each passage had a pre-determined number of entries and exits.

A Forced Restart

This twist forced the reader back to the starting block.. In other words, this passage of the story only had one exit back to the starting passage, regardless of where they came from.  There would be two ways to get into this point of the story, and both times the only option was to return to the start of the story.

Multiple Endings

The reader would be able to chose between two distinct endings!  This introduces the concepts of choice not where the user is returned to the beginning of the story (like our forced restart traps), but where the reader is allowed to influence how the story completes.  In this scenario, both choices would lead to a single terminal passage that resolved the story.

The Resulting Game

We worked for about 30-40 minutes again brainstorming ideas, and then began to create the story.  When all was said and done, we again played through our game several times with much excitement and laughter.  Their grandmother was in town and was able to see the finished product too..

Below is a picture of the bare storyboard that I drew..

IMG_1136_sm

The brainstorming session looked like this..  we settled on a halloween-ish story since it was almost halloween..

IMG_1131_sm

And finally our resulting game looked like this (storyboard and resulting twine map)..

IMG_1132_sm Story02_Map

Here is the playable version of our second game.. enjoy!

our first game

Our first class started tonight!  I wasn’t sure exactly how to begin, so I just winged it.  It went really well, lasted about 30-45 minutes, and I made sure to stop while they were still having fun so they’d be interested when we pick back up next week..

First, I gave them a very basic breakdown of a “how a computer works.”  I drew on a small white board a happy computer and off to the side two clouds “Operating System” and “Applications,” and said something like this:

This is a computer.  Y’all use them all the time.  Computers consist of three main pieces: electronics (hardware), the operating system, and applications.  You know those “apps” you play on an iPad or iPhone?  That’s short for Application, and it’s a program that runs on an operating system.  Ever heard of Windows?  iOS?  Those are operating systems. 

When you move your mouse around to double-click an app to start playing it, how does that work?  (blank stares)  An Operating System is actually an application!  It helps you DO stuff with the electronics!  Electronics without an application doesn’t do much, and an application without electronics to run it isn’t worth much either.

So, we have three pieces.  The electronics (the physical stuff), the operating system (helps you DO stuff with the electronics), and applications (games, email, cat videos, etc)..  It’s kind of like a house; the bricks of the house are the electronics, the rooms in the house are the operating system, and the furniture and toys in the house are the applications.  (Maybe that’s a really bad analogy, but I winged it.)

happycomputer

Next I I gave them another extremely basic breakdown of computer history — just enough to transition into our first lesson:

Back in the early days of computers they didn’t have all these fancy graphics and stuff..  They just had a box that could show words and numbers..  “What in the world am I going to do with this??” everybody asked (looking highly confused)..   How can I make this fun?  (dramatic pause) I know!  A game!  But just like when books first came out, they didn’t have pictures either– they just had words.  Did you know early books didn’t have pictures?  Did you know early computer games didn’t have pictures?  You don’t need them!  God made your brains so awesome that you can read words and your brain creates the pictures for you! So let’s start with words.. Let’s see what we can do with just words..

At this point I erased my whiteboard (goodbye happy computer and OS and App clouds), and I started writing a sentence.

You are standing in front of __________________ (noun).

It’s kind of like Mad-Libs®…  Give me a noun..  (dinosaur!)   Okay, great!

You are standing in front of a Dinosaur.

Tell me about this dinosaur..  The dinosaur is ..  (Brontosaurus!  Big!  Hungry!)  Great!  (write all three sentences)  What else can the dinosaur be ..  What about some action words?  What about some of these?

The dinosaur is sad.
The dinosaur is staring right at you.
The dinosaur is jumping with excitement.

Can you see the dinosaur sad?  Are you a little scared thinking of a huge, hungry dinosaur staring straight at you?  How do you feel about a huge dinosaur jumping up and down with excitement?  (mimic a happy dinosaur jumping up and down with excitement)

Do you see how important words can be?  We don’t even need pictures!  So tonight we’re going to use words to make a game!  We’ll make it real quick and real simple just to show you what we’re going to be working on together..  Tonight I’ll do all the typing, but as we get better, I’ll have each of you do some of it!  (cheering)

At this point I had my laptop hooked up to our family room TV.  I turned it on, set the font really big so they could see it, and navigated to the Twine Website.  I went into their online Twine Browser Interface, and started a new entry..  our first game!  (Note: I had already looked at Twine many months ago and knew I wanted to use it to teach..  I spent only a few hours learning the basics and that’s all I needed.  I’ll learn more in future weeks as our journey continues.)

I made the first (empty) room and dove in..

Just like the dinosaur story, we have to have a place to start.  For tonight, we need to start simple and keep it short.  Next time we can make a bigger one..  For tonight, let’s make a story about going to get the mail, and let’s start in the garage…  Tell me about the garage…  (silence)  Remember our dinosaur story?  We had to start somewhere!  So when the game starts up and the person playing it is in the garage, what do we tell them?  (You are alone!  You are in the garage!)  Okay, great!  Now what?  We need to let them get to the mailbox!

You are alone, in the garage.

Walk to the [[driveway]].

We spent about the next 15 minutes building up a very basic Twine game and when it was all said and done we played it several times.  We went back and added some additional text to a couple of the story areas in between plays, and then wrapped it up.  I asked them if they liked what we were doing and if they wanted to do something like this again next week, and heard laughing and yes’ing.

Here is the basic Twine structure of our first game (click to enlarge):

our_first_game

And here is the playable version (HTML w/ CSS):

our_first_game

(NOTE: Here are the Twine Browser Requirements)