The Adventures of Tom Sawyer… student made video games!

What is storytelling like in the 21st century?

Well, one of the methods of telling stories in the new millenium is through video games! As an English teacher in a 5th grade classroom with students who have never been challenged to write anything in a second language before, they are lacking in the ability to write stories.

However, they certainly have stories to tell! One of my students told me about the program Hopscotch that they were using in their tech lessons. I looked it up and found it to be a very easy to use, drag-and-drop programming app that we could use easily on the iPads. Since they had already been exposed to the app in their tech lessons, it was a simple transition.

The first step was talking with my students about what the “adventures” of Tom Sawyer really were. I decided that we would be trying to turn those into the video games. A few examples are:

hopscotch example
Tom is jealous of the bigger boy because he is rich and has nicer clothes.
hopscotch example
Tom and Huck sneak off to the graveyard together to try and cure warts with a dead cat.
hopscotch example
Tom and Becky get lost in the cave together.

As a project at the end of the year, I could not have been more pleased with how it turned out. My students had a blast putting these adventures into the form of video games that they could play on their iPads.

It has also given me ideas on where to take the concept. Learning about Hopscotch pointed me in the direction of other, similar tools, such as: Scratch, Blockly, and Stencyl. Finding these alternative ways to tell a story makes a great project!

M101JS: MongoDB for Node.js Developers (Week 1: Introduction)

I am going to be documenting my progress through the MongoDB University course. It is just an introduction to MongoDB, but I am still so very new at working with Mongo that it can’t hurt to have the extra practice.  And at the end of the course I should have created a few more applications! Here goes…

Welcome to M101JS

  • Course grade is made up of 50% homework assignments, and 50% final project.

What is MongoDB?

  • Simple explanation about the document model and scalability benefits of using mongodb

Overview of Building an App with MongoDB

  • Clients make requests to the node server and the server uses a driver to make requests to the database. Still very simple..

JSON and BSON

  • JSON (javascript object notation) supports:
    • string, number, boolean, array, objects
  • standard key, value pairs
  • BSON is the binary translation of the JSON that mongo uses for storage

Intro to Creating and Reading Documents

  • I am noticing that the instructor uses ‘document’ and ‘object’ interchangably
  • using mongo does not return an object or an array of objects. Instead, it is a cursor object with a few methods of its own:
    • .next() allows you to cycle through the returned objects
    • .hasNext() returns a boolean depending on whether there are more documents in the cursor object

Hello World on Node.js

  • Just a demonstration of creating a simple server with nodejs

Intro to the Node.js Driver

  • require(‘mongodb’) and establishing a connection with the database
  • this section also discusses asynchronous callbacks

Hello World using Express

  • introduces the basic structure of an express server, which I am already familiar with through freeCodeCamp instruction.
  • For that matter, all of the mongo information thus far has already been covered in various assignments I have done through FCC.

Hello World using Templates

  • Discusses the concept of template libraries. ‘nunjucks’ is the engine used in this example.

Express: Handling GET Requests & Express: Handling POST Requests

  • How to extract GET and POST variables from a request
  • Using the body parser for post variables (req.body) and get parameters (req.params)

Homework

  • The homework for this first week was just 3 simple exercises. Each involved using ‘mongorestore’ and ‘npm install’ to find an answer key. Very simple

Challenge Problem: Create Movie Entries

  • Write a Node.js web application that presents users with a form containing three fields and a submit button. The fields should be:
    • title, year, imdb

Aaaaaaaaand, that is it for week 1! Great start. Having done a lot of this with FCC helped significantly, but there were still some new concepts. I had never used ‘mongorestore’ and it is very helpful to know how to import a new db.

Advanced Javascript: Objects, Arrays, and Array-Like objects

Javascript objects and arrays are both incredibly useful. They’re also incredibly easy to confuse with each other. Mix in a few objects that look like arrays and you’ve got a recipe for confusion!

Source: Advanced Javascript: Objects, Arrays, and Array-Like objects

I found this article extremely helpful, especially when dealing with Google Scripts. It is incredibly annoying to have what I think is an array not function like an array!

Finished my PHP course!

gradesI am just waiting on the grade for my final project, but I am finished with the course! I think I did very well, and have even started to enjoy programming in PHP. I started with a hatred of PHP but it did kind of grow on me. I want to link to a couple of the web apps that I created for the course, but I will make a separate post for each of them. This post is simply to brag about the 100% I got in an online course from Berkeley.

First Blender Art

Here are some practice images from my lessons in Blender. There is still a lot to figure out in the realm of animating the movements of characters. I am also wishing that I had more formal sculpture training! Starting with a simple cube and extruding it out and shaping each piece is a very complicated process.

The next step is putting one of these characters into a game world and making them run around!

simple alien simple cat

Unity Survival Shooter

This series of videos is really fun. There is tons of information in the videos with the added benefit of the survival shooter being really fun! I am going to post just a few things that I will eventually want to return to. Link to the project contents is below…

Survival Shooter: Chapter 1

1. Environment setup – not sure how this whole environment was created. Using Unity or some other 3D rendering program?

EDIT: here is a related link I found for this. To read later.

2. Player Character – what programs were used to create the animations?

3. Camera setup – good camera setup guide. Orthographic cameras remove perspective.

4. Creating Enemy #1 – using prefabs to setup the scripts and effects associated with a character who will later be spawned repeatedly.

5. Health HUD – new UI options in Unity 4.6. Should rewatch to get an idea about how to setup a UI.

6. Player Health – scripting with C#

7. Harming Enemies – scripting with C#. Also, introduction to the Raycasting function.

8. Scoring points – scripting with C#

9. Spawning Enemies – deleting the pref and creating spawn points for different enemies. Rewatch this for a detailed explanation about instantiating prefabs at different locations.

10. Game Over – back to the UI. First use of the animation window. Good introduction to very basic uses of the animation window and how it relates to the rest of a project.

As I walked through the steps of this project it became very clear that I would need to learn how to use a program like Blender to create my own assets. I will probably spend this weekend learning what I can about creating 3D models and see if it is something that I can pursue beyond the tutorial level.

Progress

Here is the first real thing that I have created with Unity. There is no sound, no end, and nothing extremely interesting in the game. However, it is an example of me being able to take the things that I learned in the Space Shooter Tutorial and apply them to my own ideas. I really just watched the videos and then tried to recreate something with my own ideas and using the code to fit my own needs. I had to solve several problems along the way. The rotation of prefab quads caused me an annoyance. Also, getting the score to count only when the player collider made contact was difficult. I managed to solve these problems and for now I am done with this. I am going to move onto another tutorial and see what I can create next. This has motivated me to do an actual C# coding tutorial. I think that would really help me to understand the basic concepts behind object oriented programming.

Trashcat Alley Game

*Just a few notes of things that I would have done if knew how…

  • Animate the cats to run across the screen
  • Multiple cat models
  • Tether the player model to a certain point so when releasing the movement keys, he would return to a fixed point.
  • Increasingly difficult waves of cats

Figuring out Unity

There is a ton of stuff in Unity that I can only begin to comprehend at this point. Here are the resources that I am starting with:

Walker Boys Studio Free Unity Training

This is a pretty comprehensive guide to all of the features of Unity. At this point I have only watched the tutorials in video series 1 and have not taken any of the tests. I am waiting on that until I have some more practice actually using said features. I am getting that practice with…

Unity Tutorial Modules

Why not go right to the source? For free tutorials, these have been incredibly helpful. I have been through, and completed, the roll-a-ball and space shooter tutorials and I’m currently working on creating something based on the scripts taught in those lessons. Hopefully I will be able to post that creation soon.