Chapter 05

Communication Students Can Code. Teaching Core Programming Concepts in a Course on Mobile Gaming

by
Aaron Delwiche

Author Biography

Every fall, for almost a decade, I have taught a course titled “Mobile Gaming” to communication undergraduates at Trinity University. The course focuses on game design and criticism, but it is also a stealth programming course which attempts to convince liberal arts students that they can and should learn how to program computers. In this class, students approach the topic of game design from multiple perspectives. As players, they play, modify, and analyze both digital and non-digital games. As designers, they create games with careful attention to graphic design, user interface considerations, level design, and game mechanics. As developers, they build digital games and animations using tools such as Adobe Animate CC, Adobe Photoshop CC, and Construct 3.

Course Overview: Students

Capped at 15 students, the mobile gaming course is composed primarily of communication students with a handful of computer science students and new media minors added into the mix. Although the course involves extensive hands-on work, students are not required to have prior technical experience before taking the class. The only requirements are an open mind, a willingness to explore new and unfamiliar technologies, and the desire to play games. A sense of humor and moderately compulsive tendencies are also a plus.

In a typical semester, approximately half of the students express anxiety about their ability to master technical material. “I am very nervous about coding and knowing video game jargon,” stated one student when replying to the first-day survey. “I have never been the best with digital devices or coding,” said another student. Often, the students who express the most anxiety about learning how to program end up creating some of the best work in the class.

It is wonderful to see the look of accomplishment on someone’s face when he or she realizes they are capable of understanding how to code, they are actually good at coding, and they enjoy the process.

Course Overview: Assignments & Grading

Over the course of the semester, students are asked to complete four significant projects.

  1. DIY Assignment. Students tackle a completely new and unfamiliar activity such as creating goat cheese in their dorm room, modifying a clock so that it runs backward, making a wallet or purse out of potato chip bags, or creating a wifi signal booster with a Pringles can.
  2. Animation Assignment. Students to create a 60-second animated movie using the application Adobe Animate CC.
  3. Platform Game Assignment. Students create a basic platform game using a game development tool called Construct 3. This tool is optimized to create 2D games in HTML5.
  4. Final Game Project. Students create an entirely new game from scratch using Construct 3.

For each of these projects, when students turn in the creative deliverable, they must also write an extensive blog posting explaining the rationale underpinning their creative decisions while also making connections to assigned readings. The bulk of their grade is based on this written component.

At least three times a week, students turn in small homework exercises that emphasize skills necessary for completing larger projects. After completing each assignment, students send a short message to the class mailing list in which they discuss specific problems, share solutions, and pose big picture questions about the material. Student feedback helps me adjust the pace of the class, and it also helps me identify what topics need to be explained in greater detail at the beginning of each class period.

How does this course fit into our university curriculum?

This course satisfies multiple curricular requirements at Trinity University. In addition to counting as a media messages elective for communication majors, the mobile gaming course satisfies two of Trinity University’s general education requirements: the “Creative Expression” approach and the “Digital Literacy” capacity. It also counts toward the new media minor.

Upon successful completion of a creative expression course, students are expected to have demonstrated the ability to “create an aesthetic artifact or performance that demonstrates and understanding of disciplinary techniques” and “reflect on and critically assess their creative work.” Upon successful completion of a digital literacy course, students should be able to “manipulate digital information by programming, scripting, or executing structured sequences of commands to solve problems or engage in artistic expression.”

Course Overview: Meeting Times

It would theoretically be possible to teach this class on a Tuesday/Thursday schedule, with 75-minute class meetings, but experience has taught me that a MWF schedule is essential for maintaining momentum when students are attempting to master new and unfamiliar material.

This four-credit course typically meets for one hour on Monday, Wednesday, and Friday mornings. There is also a mandatory evening gaming session on most Tuesday evenings from 7:00 to 9:00 p.m. During most of the evening sessions, we play board games, parlor games, or videogames, paying close attention to game mechanics. Three evening sessions are set aside for intensive training in the use of Adobe Animate and Construct 3. A complete list of evening lab topics can be found below in Table 1.

Table 1. Topics Explored During Evening Gaming Sessions
  1. Explore competition and cooperation in the board game Settlers of Catan.
  2. Dissect game mechanics, user interface, and graphic design of casual mobile games.
  3. Explore cooperative play in Five Minute Dungeon.
  4. Intensive Training: Animation Tools.
  5. Investigate strategy and resource management in the board game Lords of Waterdeep.
  6. Think about chance, narrative, and player cooperation in the board game Betrayal at House on the Hill.
  7. Intensive Training: Coding with Construct 3.
  8. Intensive Training: Coding with Construct 3.
  9. Consider the ways that games can be used to promote empathy by playing This War of Mine.
  10. Experiment with modification to the roles for the board game Settlers of Catan.What happens when an additional chance mechanic is added to the game?
  11. Console gaming night: single-player narrative games and “couch coop” games.

Course Overview: Readings

Students are often surprised to discover that a hands-on course also involves quite a bit of reading. This includes a combination of theoretical readings, trade publications, and short articles emphasizing practical game development tips (see Table 2).

Table 2. Assigned Readings
Phase
Readings
DIY Project

During the first two weeks, while students are working on their DIY projects, we begin with a set of readings about game design fundamentals. These readings introduce concepts related to game mechanics, user interface design, and graphic design.

  1. Alan Bradley (2017) “6 examples of UI design that every game developer should study,” Gamasutra, January 24.
  2. SYH (2017) “Video game typography Parts I and II: Effectiveness,” Medium –The Space Ape Game Experience, September 1.
  3. Brenda Brathwaite, "Chapter 1. The basics of game design" Challenges for Game Designers, 2009.
Code Academy

Before tackling the animation project, the students spend some time exploring basic programming concepts using Python and Code Combat. This batch of readings explains why coding is important and introduces ideas related to game narrative.

  1. Douglas Rushkoff, "Purpose," excerpt from Program or Be Programmed. [Short manifesto excerpt. 17 pages.]
  2. Tasneem Raja (2014) "We can code it! Why computer literacy is key to winning the 21st Century," Mother Jones, June 2014. [Magazine. 17 pages.]
  3. Jody Macgregor (2015) “Telltale’s choices aren’t about plot, but something more significant,” PC Gamer, July 12.
  4. Alex Castro (2018) “Toxic management cost an award-winning game studio its best developers: How the $36 billion industry burns out its best employees,” The Verge, March 20.
Animation

During the animation unit, we continue reading up on graphic design and game mechanics.

  1. Graham Shaw (2016) “Why people believe they can’t draw and how to prove they can,” TEDx Talks YouTube, April 1.
  2. Herman Tulleken (2015) “Color in games: An in-depth look at one of game design’s most useful tools,” Gamasutra, July 29.
  3. Tyler Seitz (2012) “Picking a color palette for your game’s artwork,” Envato Tuts. October 22.
  4. Tracy Fullerton, Chris Swain, and Steve Hoffman (2013) Improving player choices," Gamasutra: The art and business of making games. [Trade publication for game developers. 13 pages.]
Platform Game

During the platform game developing unit, we read about level design, game tutorials, and game storytelling.

  1. u/LordNed et al. (2018) “A no nonsense ‘How to get started’ guide,” Reddit: /r/gamedev.
  2. Diorgo Jonkers (2011) “11 tips for making a fun platformer” and “13 more tips for making a fun platformer,” Dev.Mag, January.
  3. Desi Quintans (2013) “Game UI by example: A crash course in the good and the bad,” Envato Tuts, January 22.
  4. Derek Yu (2010) “Finishing a game,” Make Games, September 17.
  5. Matteo Sciutteri (2018) “Interactive storytelling: Linear storytelling” and Interactive storytelling: Nonlinear storytelling,” Envato Tuts, June.
  6. Paul Suddaby (2012) The many ways to show players how it’s done with in-game tutorials,” Envato Tuts, August 31."
Final Game

During the final weeks of the semester, there are fewer assigned readings and most of the articles focus on practical elements of game development.

  1. Darran Jamieson (2017) “Keep things clear: Don’t confuse your players,” Envato Tuts, December 6.
  2. Brenda Brathwaite, "Chapter 13. Designing games to tell a story," Challenges for Game Designers. 2009. [8 pages.]
  3. Stone Librande (2010) “One Page Designs.” This is a PowerPoint document.
  4. Sherri Puchalsky (2016) “What some experienced game developers learned from making their first game,” Kongregate Developers Blog, August 23.

Approximately 25% of the course readings focus on game mechanics, game narrative, and genre classifications. Similar to the theoretical articles one might encounter in a film studies classroom, these articles are situated within the emerging field of videogame studies.

Another 25% of the readings approach view game design through the lens of the game industry, discussing business models for subsidizing small game projects, innovations in game distribution channels, the implications of emerging technologies for casual game design, the increasing diversification of the game audience, and working conditions within the game industry. Many of these articles come from a trade publication, Gama Sutra [See note 1 below], and others are excerpted from online technology publications such as The Verge and Ars Technica.

The remainder of the readings are short, practical essays that provide concrete tips on game programming, level design, color theory, and graphic design. We learn about effective game tutorials, visually pleasing color palettes, platform level design, user interface considerations, interactive narratives, and workflow considerations. These essays are plucked from a range of sources, including publications grounded in the Medium platform, tutorials published by envatoTuts, and articles in Gama Sutra.

Like most professors, I often wonder “are students really doing the reading?” In the first incarnation of this course, short pop quizzes were used to determine whether or not students had kept up with the reading. This approach was a complete disaster. Rather than thinking deeply about the ideas, students focused their energy on memorizing the names and key points of each reading. Some people aced the quizzes because they have a knack for memorization; others bombed the quizzes despite diligently doing all of the reading.

For this reason, I have abandoned reading quizzes in the mobile gaming course. Instead, I ask students to post 200-word reading log entries on the course blog. In these public posts, students identify one or two useful ideas that they took away from the assigned articles. Perhaps most important, all four of the major assignments require that students make connections to specific ideas from the reading when writing up their major projects. They can also earn extra-credit points by making highly specific connections to the readings in the comments section of their game code (see Figure 1).

/* User Interface Design: Although I at first stated I wanted my user interface to be centered like discussed in Alan Bradley’s article, and wanted the important information such as health and score to fade in and out to only be seen when it was needed, I instead decided to take a different route once I began my game. For this game I wanted to create one large layout so the player could see the entire level without having any surprises jumping out, and I wanted the user interface information to be delivered in a very easy manner. Therefore, my game is one screen so the player can see everything happening on each level, and the 'Health' and 'Score' are presented simply at the top the entire time, without causing distraction to the player throughout the game. See: Alan Bradley (2017) “6 examples of UI design that every game developer should study,” Gamasutra, January 24. See: Desi Quintans (2013) “Game UI by example: A crash course in the good and the bad,” Envato Tuts, January 22. */

Figure 1. Students are asked to make specific connections to assigned readings in the comments section of their source code. In this excerpt from the platform game assignment, a student explains how she incorporated principles from the assigned readings about user interface design.

Teaching the Art of Programming

Since the earliest days of the computer revolution, technical experts have mystified the art of coding, making it seem inaccessible to ordinary human beings. The computer pioneer Ted Nelson alerted us to the dangers of this situation in his 1974 masterpiece Computer Lib, writing:

The people who know about computers often seem unwilling to explain things or answer your questions. Stereotyped notions develop about computers operating in fixed ways – and so confusion increases. The chasm between laymen and computer people widens fast and dangerously [4]

Nelson’s book was dedicated to the belief that everyone is capable of understanding how computers operate. Unfortunately, millions of intelligent human beings have managed to convince themselves that the exact opposite is true [1]. trend toward defining digital literacy as the ability to use computers rather than the ability to code those machines.

Using computers is not enough; we should also be teaching our students how to program. As Douglas Rushkoff argues in his manifesto Program or Be Programmed:

They [digital technologies] are not just objects, but systems embedded with purpose. They act with intention. If we don’t know how they work, we won’t even know what we want. The less involved and aware we are of the way our technologies are programmed and program themselves, the more narrow our choices will become; the less we will be able to envision alternatives to the pathways described by our programs; and the more our lives and experiences will be dictated by their biases. [6]

Teaching the Art of Programming

What programming concepts should we be teaching?

Computer processing power has been growing at an exponential rate for the past fifty years. Even as our ability to miniaturize transistors has slowed, new approaches such as “chiplets” and “in-memory computing” promise to continue this trend for the foreseeable future [8]; [10]. In an era characterized by accelerating change, it is impossible to predict our technological future with any certainty.

Will we project symbols on bendable digital surfaces that can be rolled up like a newspaper or will we heads-up displays be folded into eyeglasses and contact lenses? And what of computer input? Will we use keyboards, the human voice, or the kinesthetic gestures famously imagined in the film Minority Report? What programming languages will be used to control these machines?

We don’t know the answer to these questions, but there is one thing about which we can be (mostly) certain: human beings will still use some sort of programming language to develop applications for these machines. The words Python, JavaScript, C++, and Swift might someday sound as dated as “23 skidoo,” “honkey tonk,” and “automat,” but something else will take their place.

In order to prepare our students for this unstable future, we should focus our efforts on fundamental computing concepts that transcend the syntactic and metaphorical peculiarities of individual programming languages. Our students should understand variables, data types, objects and properties, conditional logic, methods, functions, loops and arrays.[See note 2 below]

The specific toolkits used in the mobile gaming class are less important than the core programming concepts that students learn from the process of developing their own games. By the time they have finished the course, students will have been exposed to Python, HTML 5, and Construct 3, but these are simply intended as ‘on-ramps’ to the world of coding.

In 2012, I taught this course with a combination of Adobe Flash, JavaScript, and modules from Code Academy. In 2018, we use Adobe Animate CC, Construct 3, and modules from Code Combat. Things have changed on the surface, but the core concepts remain the same. The development tools used in the gaming course are the means, not the ends.

Teaching the Art of Programming

Tackling programming-related anxieties with the DIY assignment

In the mobile gaming course, students often enter the class with huge trepidation about their ability to program. Although comfortable with multimedia production tools such as Adobe Photoshop and Adobe Premiere, many of these students are convinced that coding is difficult and out of reach. This class is designed to convince them that they can and must learn how to program.

The DIY assignment is the first step in defuse programming-related anxieties. This assignment forces students to tackle an unfamiliar activity, requiring them to track down and use different types of tutorials, and encouraging them to reflect on how they learn best.

The most important requirement of this assignment is the fact that the project should be outside of the students’ comfort zones. If a student is a hardware junkie who knows all about the latest digital devices, her project must not involve gadgets in any way. Similarly, if a student regularly creates his own costumes and props for cosplay at fan conventions, his DIY project should not involve textiles or costumes.

After reflecting on their own learning style, students must track down at least five different types of tutorials that will help prepare them for the project. They document their progress with photographs, screenshots, journal notes and video clips and summarize their experiences in a succinct, three-minute class presentation and a footnoted blog posting.

Something almost always goes wrong when students are pursuing their DIY projects. The nails are the wrong size. Ants escape from the ant farm and invade the student’s dorm room. The glow stick recipe turns out to be an Internet prank. Tablespoons and teaspoons get mixed up in the bread recipe. Things go wrong, but the earth continues to spin on its axis.

The DIY project provides an ideal opening for talking about the role of failure in the creative process. We discuss the fact that things always go wrong when one is coding. The program won’t compile. An instance variable is used instead of a global variable. A function sets the Boolean variable to true when it should be set to false. A flipped ‘greater than’ sign accidentally creates an infinite loop, causing the entire system to crash.

One of the most important lessons that students take away from this assignment is the realization that it’s OK to make mistakes. Many also report a desire to tackle the DIY project a second time, modifying their workflow based on what went wrong during the first attempt. The second omelet will taste better than the first, the second bar stool will be less wobbly, and the second bedsheet dress will fall more comfortably off the shoulders.

Teaching the Art of Programming

Code Combat: A gamified approach to foundational coding concepts

After completing the DIY assignment – but before starting the animation unit – students spend approximately three weeks in the world of Code Combat. This resource gamifies the learning process, encouraging users to write code (Python or JavaScript) that will steer a game character through a series of puzzles and traps in a fantasy role-playing environment.

For example, the Code Combat unit “Computer Science 2” contains 46 puzzle levels which can only be solved by typing blocks of Python code. By the time they reach the end, students have experimented with objects, properties, conditional logic (IF and IF ELSE statements), while loops, methods, parameters, arguments, functions, and string manipulation (see Figure 2).

The Code Combat interface
Figure 2. The Code Combat interface is divided into three segments. The left side of the screen displays the game puzzle and program output, the middle column contains a list of methods and parameters, and the right side of the screen contains a text editor that the student can use to enter her solutions.

Code Combat introduces these foundational concepts to students in a non-threatening way. Later in the semester, when students begin working on their game projects, Code Combat lessons serve a convenient reference point for talking about game development.

Student reaction to the platform has been very positive. “I previously had withdrawn from a computer science course that was basically just a python screen,” said one student. “I did not understand what was going on, and it felt like I was not learning. I thoroughly enjoy Code Combat because I am actually learning how to code,” he added.

Teaching the Art of Programming

Animation Assignment: Introducing objects, properties, and naming conventions.

In the animation assignment, students create a 60-second movie using Adobe Animate CC (see Figure 3). The key requirements are that the movie include a creative title slide and visually unified ending slide, at least two moving “characters” that appear to be interacting, clearly labeled layers, reusable symbols, sound effects, and movie clips that have nested timelines.

Focus
Figure 3. In "Focus," Rachel Lopez tells the story of a student who is constantly distracted during math class.

As with all projects in the mobile gaming course, the bulk of the points on the grading rubric stem from the written component. Students explain the creative rationale underpinning graphic design choices (e.g. color schemes, choice of typeface, and consistency of graphic elements), they reflect on the project workflow, describe frustrations encountered along the way, and explain the steps they took to solve those problems.

This assignment serves several purposes in the context of the course objectives. For one thing, the vector graphics tools in Adobe Animate are an excellent introduction to the concept of ‘objects and properties.’ Shapes such as circles, rectangles, and rounded rectangles are the fundamental building block of Adobe Animate. They can be used to create compelling visual images (see Figure 3), but these shapes are also examples of objects. Each instance of these shapes can also be described in terms of its underlying properties such as width, height, stroke, stroke width, stroke color, fill color, x position, and y position. When we transition to programming with Construct 3 during the second half of the semester, it is a natural transition.

In addition to introducing the foundations for object-oriented programming, the animation assignment is an excellent opportunity to get students thinking about the importance of clear and consistent naming conventions for their files and multimedia assets. This might seem like a relatively unimportant topic, but – as any programmer who has spent hours pulling out her hair attempting to ferret out a bug caused by improperly named variables can attest – filenames are important.

Teaching the Art of Programming

Platform Game Assignment – Introducing the basics

After the animation assignment is complete, we turn our attention to game programming. Students are asked to create their own platform game. In platform games such as Donkey Kong and Super Mario Bros, players control a running and jumping character, avoiding obstacles, defeating enemies, and solving environmental puzzles [3].

Up until quite recently, this component of the course was taught with the help of Adobe Flash. Once viewed as the “driving force of the ‘you’ revolution and web interactivity [7], the Adobe Flash Player gained a bad reputation due to its many security flaws and lack of compatibility with web standards [2]. By crippling the ActionScript component, the product was no longer suitable for most game design applications. This was an enormous loss because the Flash and ActionScript were so well suited for teaching object-oriented programming to first-time programmers.

Luckily, Construct has emerged as a viable alternative to Adobe Flash. This visual development environment makes it easy to rapidly develop and test game ideas (see Figure 4). I originally ruled this environment out as a possibility because Construct marketed itself by saying “No programming required.” Upon closer examination, I realized that Construct actually is a powerful system that could be used to teach variables, data types, objects and properties, conditional logic, methods, functions, loops and arrays -- the foundational coding concepts described above.

Construct's layout editor
Figure 4. Construct's layout editor is visually similar to the stage view in Adobe Animate CC.

In Construct, developers use a ‘layout editor’ to visually organize 2D game spaces (see Figure 4). The layout view is actually very similar to the stage metaphor that is used in Adobe Animate CC and Adobe Flash CC. The left side of the screen is used to position elements within a visual game space and the ‘project window’ on the right side of the screen is used to track the project’s multimedia assets. As in many graphical development environments, the user can also create multiple stackable layers.

These layouts are then made interactive with the help of “event sheets.” Linked to layouts, commands listed on event sheets are run from top to bottom approximately 60 times per second. As depicted in Figure 5, the event sheet includes a ‘conditions’ column checks for certain events (e.g. “Check to see if the bullet is colliding with a monster”) and an “actions’ column that contains a sequence of commands that are executed after the event is fired.

sers apply logic to their game
Figure 5. Users apply logic to their game by adding commands to the project ‘event sheet.’ Each line of the event sheet is executed sixty times per second.

For example, consider this excerpt of event sheet code that Kali Dawson used to handle object collection in her platformer Gameboy Takes All (see Figure 6). Her code begins by defining an event (e.g. “player collides with a coin”) and it also specifies a sequence of commands that should be executed when this event happens. The coin should be destroyed, the player’s score should be increased by 10 points, and the game should play an appropriate sound effect.

The Event Sheet
Figure 6. This section of the event sheet checks to see if the player has collided with the coin, the diamond, or the mushroom.

Once students have been introduced to Construct basics, they are asked to apply what they’ve learned by creating their own fully-functioning platform game. At a minimum, these games should include the following characteristics:

  • Levels: Splash page, two playable levels, and a game over page.
  • Gameplay: Ability to find and use a weapon (broadly defined), escalating difficulty, puzzles.
  • Objects: Player displays walk, jump, stand animations, multiple enemies, platforms, power-ups, treasure, “weapon,” and “puzzle objects.” Again, all of these can be broadly defined.
  • Multimedia: Game should include sound effects, and background music is optional. Homework sprites should not be recycled for this project. It is OK to use public domain assets or "free honor bundle" assets, as long as you give credit. Please do not purchase assets without first talking to me about this.
  • Code: Objects and layers should follow consistent naming conventions, code in events sheet should be thoroughly documented with comments and groups.

Students are also required to explain their platform game in a concise game design document posted on the class blog. As Tim Ryan [5]explains in a classic Gama Sutra article:

The purpose of design documentation is to express the vision for the game, describe the contents, and present a plan for implementation. A design document is a bible from which the producer preaches the goal, through which the designers champion their ideas, and from which the artists and programmers get their instructions and express their expertise.

In the context of the mobile gaming class, the game design document is an effective way of nudging students to make connections between theoretical course readings and the games that they’ve created. There are many different ways to create a game design document, but I ask students to follow an outline adapted from a template that Lee Stemkoski and Evan Leider describe in their book Game Development with Construct 2 [9] (see Table 3).

Table 3. Game Design Document Template
  1. Overall vision
    1. Summary. Two or three sentences summarizing the game.
    2. Genre. How would you describe the genre?
    3. Target audience. Who is the audience? What sort of equipment do they need to have to play this game?
  2. Mechanics: Rules of the game world
    1. Character goals. What goals does the character have?
    2. Abilities. What abilities does the character have? For example: moving, jumping, attacking, unlocking doors.
    3. Obstacles. What sorts of obstacles or difficulties must the player solve? This includes both environmental obstacles and enemy monsters.
    4. Items. What items can the character collect? How often do they appear?
    5. Resources. What resources must be managed? This might include things like health points, lives, and power-ups.
  3. Dynamics: Interaction between player and the game
    1. User interaction. What hardware is required? What keys/buttons are used, and what are their effects? How is the player informed of these things (e.g. a help page, in-game tutorial, etc.)?
    2. Proficiency. What type of proficiency does the player need to develop to become proficient at the game?
    3. Gameplay data. What gameplay data (health, points, items collected, time, lives) is displayed during the game? Where is it displayed on the screen? How is it conveyed (e.g. text, icons, health bars)?
    4. Controlling the game. How does the user start, stop, and pause the game?
  4. Aesthetics
    1. Overall. In no more than two sentences, describe the style and feel of the game.
    2. Game art. Does the game use pixel art, line art, or realistic graphics? Are the colors bright or dark, varied or monochromatic? What special effects are used?
    3. Sound. What background music and ambient sounds are used? What sorts of sound effects?
    4. Plot. In no more than two sentences, what is the backstory of this game What sort of story unfolds?
    5. Emotional state. What emotional state does the game try to provoke in the player?
    6. Fun. What sorts of gratifications are provided by this game? Some possibilities: fantasy, role-playing, nose-thumbing, competition (against others or against oneself), cooperation, compassion, discovery, overcoming challenges, collecting items, or engaging in social aspects).
  5. Credits
    Almost all of the tiles and environmental assets in my game were created by a Netherlands-based game design studio called “Kenney.” I relied heavily on their “Classic platform pack” as well as the “platform brick pack.” (Hyperlinks should point back to the pages where you got these assets.) My sprites were made possible by a pixel design artist named Jason Mercado who shared his RPG Sprites Pack with the community on the site Open Game Art. (Link back to the author’s individual page if it exists, link to the specific page.

Teaching the Art of Programming

Final Game Assignment

During the last few weeks of the semester, students are tasked with creating a complete, playable game that does something different than their platform game.

Students have quite a bit of freedom at this stage of the process. Some students choose to reskin and modify one of the game templates described in Lee Stemkowski’s Game Development With Construct 2, but most end up creating their own games from scratch without following a template.

A collection of games created by students
Figure 7. A collection of games created by students in the mobile gaming course can be found at bit.ly/gaming-arcade.

From a pedagogical standpoint, the final weeks of the mobile gaming course are simultaneously terrifying and thrilling. On the one hand, it can be difficult to support and guide fifteen students who are heading off in entirely different directions. For example, some students might be focused on a narratively-driven game that uses branching dialogue, some might be trying to create an isometric racing game, some might be focusing on ways of using a PS4 controller to handle user input, and others might be working on creating a small role-playing game.

It is difficult to exaggerate the creative possibilities that have been unleashed by the use of Construct instead of Adobe Flash and ActionScript. In previous incarnations of this class, there was only so much ground that could be covered over the course of sixteen weeks. Adobe Flash could be used to create games involving simple collision detection and basic conditional logic, but students had to work much harder, navigating a tedious maze of syntax errors, in order to create a very simple game.

Although students still spend quite a bit of time coding and developing logical algorithms, Construct 3 makes it easier for students to concentrate on game design, graphic design and user experience. After only two or three hours of exposure to the toolkit, students are given one day to create a small dungeon-themed collision detection game as a homework assignment. In most cases, these mini-games rival (and surpass) the games that students were creating as their final projects back in 2012.

It is thrilling to see what students do with the final projects once they understand the basics of Construct. For example, one student learned how to handle touch events and incorporated this in a reverse-shooter emphasizing the importance of avid hydration, another student created a ‘visual novel’ about a young woman who dates a series of abusive men, and a third student developed a powerful point-and-click adventure game demonstrating how mental illness affects everyday life. Interested readers can interact with these and other games that students have created during the past three years by visiting the gaming arcade page posted at bit.ly/gaming-arcade. (see Figure 7).

Concluding Thoughts

We have come a long way since the days of punch cards and vacuum tubes.

As computers continue to become faster and more powerful, the tools that we use to program computers have also evolved to become more intuitive and accessible. Machine code and assembly language were replaced with more accessible languages such as Basic, Pascal and C, but our development environments were dominated by plain text, mathematics, and the command line. These programming tools were hardly intuitive.

In the 1990s, as graphical user interfaces became widespread, we witnessed the rise of visual development environments such as Visual Basic and Microsoft’s Visual IDE. Many programmers looked down their noses at these environments for “dumbing down” the art of coding, but visual development environments eventually became the norm because they are more intuitive.

Over the past fifteen years, the trend toward more accessible toolkits has continued. Development tools such as MIT Scratch and Scirra’s Construct 3 have made it even easier for students to express their creative visions. Computer-literate students always need to understand core programming concepts (e.g., variables, data types, objects and properties, conditional logic, methods, functions, loops and arrays), but visual game programming tools make it even easier for first-time programmers to understand these concepts.

Chapter 5 Citations

To cite this article:

MLA: Delwiche, Aaron. “Communication Students Can Code. Teaching Core Programming Concepts in a Course on Mobile Gaming.” Coding Pedagogy, edited by Jeremy Sarachan, 2019, ch. 5, http://codingpedagogy.net. Accessed 1 Apr. 2020. [update access date]

APA: Delwiche, A. (2019). “Communication Students Can Code. Teaching Core Programming Concepts in a Course on Mobile Gaming.” In J. Sarachan (Ed.), Coding Pedagogy, ch. 5. Retrieved from http://codingpedagogy.net.

Chicago: Delwiche, Aaron, “Communication Students Can Code. Teaching Core Programming Concepts in a Course on Mobile Gaming,” in Coding Pedagogy, ed. Jeremy Sarachan, ch. 5, Coding Pedagogy, 2019. http://codingpedagogy.net.

  1. Delwiche, Aaron (27 Dec. 2010). “We are all programmers now: The rise of participatory culture.” TEDx San Antonio. YouTube. www.youtube.com/watch?v=_M3p0cbnVhU
  2. Gear, Brian (25 July 2017). “Adobe finally kills Flash dead,” Wired Magazine. www.wired.com/story/adobe-finally-kills-flash-dead/
  3. Minkkinen, Toni (2016). “Basics of Platform Games (Senior Thesis) Kajaanin Ammattikorkeakoulo University of Applied Sciences”. https://www.theseus.fi/bitstream/handle/10024/119612/Thesis%20-%20Toni%20Minkkinen.pdf?sequence=1
  4. Nelson, Theodore. Computer Lib/Dream Machines. Self-published (1974). linkedbyair.net/bin/Ted%20Nelson%20Computer%20Lib%20Dream%20Machines%20-%201st%20edition%201974.pdf
  5. Ryan, Tim (19 Oct. 1999). “The anatomy of a design document part 1: Documentation guidelines for the game concept and proposal,” Gama Sutra. http://www.gamasutra.com/view/feature/131791/the_anatomy_of_a_design_document_.php
  6. Rushkoff, Douglas (2010). Program or be programmed: Ten commands for a digital age. New York: OR Books. rushkoff.com/books/program-or-be-programmed/
  7. Salter, Anastasia (2014). & John Murray. Flash: Building the interactive web. Cambridge, MA: MIT Press. mitpress.mit.edu/books/flash
  8. Simonite, Tom (November 2018). “To keep pace with Moore’s Law, chipmakers turn to ‘chiplets’,” Wired Magazine. www.wired.com/story/keep-pace-moores-law-chipmakers-turn-chiplets/
  9. Stemkoski, Lee and Leider, Evan (2017). Game development with Construct 2: From design to realization. Garden City, NY: Apress. www.apress.com/us/book/9781484227831
  10. Sullivan, John (15 November 2018). “Merging memory and computation, programmable chip speeds AI, slashes power use,” Tech Explore. techxplore.com/news/2018-11-merging-memory-programmable-chip-ai.html

Footnotes

1 In recent years, much attention has rightfully been paid to the fact that women are serious underrepresented in the gaming industry and in the larger world of computing. Although I appreciate a good pun as much as the next person, I always feel somewhat embarrassed about asking students to read articles from a publication that derives its name from The Kama Sutra – a classic Hindu manual on human sexual behavior. Despite the problematic name, the articles are in Gama Sutra are often quite good.

2 Eagle-eyed readers will note that these are the same concepts identified by Cindy Royal in her essay “Teaching Mobile App Development in a Mass Communication Program” elsewhere in this collection.

Comments

Last: Chapter 4