I started my last morning of GHC with two presentations in the GFX track, which covers games and graphics. I enjoyed both talks, though the first is particularly relevant to our
Gram's House project.
Image from the virtual world Shahnaz Kamberi worked on in her research.
Gamher: Creating a Game to Increase Girls' Interest in Programming
Shahnaz Kamberi
Shahnaz targeted girls aged 13-17 with a game to increase their interest in programming at a time when many lose that interest. It's nothing new that we want girls to study STEM, but despite all the time, money and effort, we have not succeeded. But maybe game-based learning, which has been proven effective in the past, can work here.
There are two deliverables with Shahnaz's research, which is part of her doctoral thesis project: game design elements list (aesthetics, mechanics, story, and technology) and an educational game that teaches Java programming.
The framework Shahnaz followed is known as the
ADDIE model: analyze, develop, design, develop, implement, evaluate.
During analysis, she realized that she did not want to take a constructivist approach, which covers programs like Scratch and Alice. Rather, she wanted to make an instructivist game, an area that is more lacking. She then decided that she preferred a gender-specific game rather than a gender-neutral game, but wanted to break the stereotype of what gender-specific games look like.
To help with development, Shahnaz prototyped a 2D game in GameMaker and an exploratory 3D world using OpenSim.
To evaluate, Shahnaz compared performance between a group that used the game vs. a group that had traditional lectures with added interactivity. It turned out that the lecture group did a little better than the game group on the post-quiz. This may have been because the facilitator was able to control the classroom's progress, whereas students playing the games may not have finished all the material. The game group has a higher positive response to computer science in the post-surveys, but there was not a significant difference. Interestingly, story appeared in the participants' lists of worst and best things about the game. There was a lot of positive response in terms of whether the girls would play the game again and whether it positively influenced their views of computer science.
My take: it was really nice to see how Shahnaz set up her experiment, and how she dealt with the fact that the game group did not perform better than the lecture group. She realized that she works as a professor, and therefore is paid to teach programming. So if girls were able to learn as much while playing a game, then indeed the game has succeeded! It did as good a job as a professional!
You can learn more about this project on
Shahnaz's blog and
website.
Animation Programming Techniques for Music and Dance Video Games
Jessica S. Scott
Jessica is the lead engineer at Harmonix, and has a mixed background in CS and art. She opened with the question of why we even need character animations. Among the usual answers was the notion of using animation as a user interface. In games like Dance Central, animations tell the user what to do. Then, why do you need programmers for animation? You need to get animations from a 3D program into a game, usually with requirements in terms of memory usage, performance, and response to user input.
Jessica started with some of the basics of computer representation of animation on a computer. For skinning, they use bones that meshes can follow. Animators can pose a skeleton of a character. Keyframes are a way of storing animation poses at points at specific points in time, and movement in between can be interpolated.
Memory and performance issues: Animation often takes up a large percentage of a game's memory and CPU budget. When storing animations, store rotation, position and scale for each keypoint, and use compression and blending techniques.
Game animation special needs: it's more complicated than movie animation! Players get control of characters, and real-time playback is important. Game worlds have dynamic elements that help determine what animations to play.
More about blending: needed for the dynamic choice of animations. Two kinds: combine multiple animations at one point in time, or over a period of time. Blending allows for natural-looking but automatic transitions between different animations. Blending involves a lot of interpolating, for example between rotation values between bones.
Storing animations: quaternions instead of rotation matrices since you only need 4 floats instead of 9, and blending is easier due to easier interpolation.
Inverse kinematics: modifying a character's joint positions and rotations based on physics constraints. Mathematical calculations are applied after regular skeleton posing. Important not to apply to only one set of bones!
Dance Central example: foot slide during blending. Suppose you want to blend two dance moves and the foot is on the ground with weight on it. Takes a lot of effort to get the foot to do something interesting in between. (Showed a funny example with a really long, stretched leg.)
Beatles: Rock Band example: wanted the Beatles to lean in toward the mic during harmonies. Seems like a good idea to just stretch the neck toward the mic, but turns out not such a good idea when the character is too far away from the mic! (Showed another funny example with one Beatle standing too far away, with a super long neck stretched to the mic.)
My take: how cool to learn a bit more about what's behind animations in my favourite games! (Dance Central and Beatles Rockband happen to both be games I've played a lot.) The talk also makes me wish I could spend more time on computer graphics, which I have learned but never get to practice.