I always laugh (to myself, because I have manners) when someone says to me
“You make games? Oh, my nephew made a game in one weekend.”
– Proud but clueless auntie
Artificial Intelligence in Game Development
Maybe I should have led with the AI tag since that is the buzziest of buzzwords these days. Our games do not have artificial intelligence in the way that some people think of machines learning from data collected from users. Maybe I should call it AnnMaria Intelligence. (More mature people might call it a decision tree.)
We program in our knowledge of how children learn – or don’t learn – mathematics
Let me just give you a few super-basic things I did this weekend programming a few math problems related to salmon fishing. Why salmon fishing? Because that is important in the history and culture of the people with whom we are developing this game.
Thinking like a kid, first, we start with a story, artwork and voiceover for the problem, answering the question, “Who cares?”
We explain that there were plenty of salmon in the Columbia River and why that was important. The above two screens give you an example. I am waiting on the voiceover for these pages because some students would like it read to them, some students just cannot read very well and, for those students who did not want it read, they can just continue in the game without using the “read it to me” feature.
Because classrooms have a range of abilities, the math problems in this game range from second to fifth grade.
Of course, it would be easier for us to make a game that just had, say, problems with reducing fractions to lowest terms, but that would not be as helpful for the teacher in the classroom who would need to come up with three different lessons for the students who were at grade level, one or two years below.
In this game, math challenges start with an easy problem almost any fifth-grader should be able to do, then, students can attempt two problems of increasingly greater difficulty. Harder problems give students more points, which they can spend in the game to buy stuff.
You need to think like a student and think like a computer
The computer is going to compare the number entered to the correct answer, which, the computer considers to be 15000000. However, a student is going to enter 15,000,000 or “15,000,000 pounds”. It’s a simple fix to add a line of code that removes everything but the numbers before doing the comparison. The developer just needs to remember to do that. Here is what I did.
your_answer = $("#numer").val().replace( /[^0-9]/g, '' ) ;
It’s a simple fix but it’s also the difference between whether or not the student is frustrated by being told “15,000,000 pounds” is the incorrect answer when it is mathematically correct and we are just splitting hairs saying, “No, it’s actually 15,000,000.” Kids hate that. I know. I used to teach middle school.
You need to think like a math teacher
What are the mistakes students are most likely to make? In this example, the two most probable are that they will reverse the numerator and denominator or they will not reduce the fraction to lowest terms. Because students sometimes rush through problems and don’t pay attention to feedback, when they have an incorrect answer, we don’t simply tell them it is incorrect but change the font to red, explain why they are wrong and sound a foghorn. (I am not kidding about the foghorn.)
Not only are there probable incorrect answers, but there is often more than one way of looking at a problem and, consequently, more than one correct answer. That’s the topic for another post.
As you can see, just creating half of one math problem is a non-trivial task if you do it right. We do have a secret sauce that makes it possible for us, called 7 Gen Blocks – but that’s a WHOLE bunch of more posts (most of which actually don’t exist because I am busy making games).