Game Name: Code Combat
Designer/Developer: Code Combat
Platforms: Browser
High-level instructional goal: Computer Science Fundamentals
Link to game: https://codecombat.com/play
Learning Objectives
There are 9 sections, with 1 mystery section at the end. Each section has one over-arching learning objective. The first section teaches general syntax and programming fundamentals. The last non-mystery section teaches “Advanced Techniques”. The game also uses sections to describe the type of coding that you are learning/doing, with each section having a little blurb that describes the learning goals. There are also smaller intermediate sections that teach more specific types of coding, with real-world implication (such as “Web Development” or “Game Development”). The larger sections seem to be more on general programming fundamentals and problem-solving, while the smaller sections are more focused on specific types of programming. In summary, the game seeks to mainly teach about programming concepts in general but uses the smaller sections of “Web Development” and “Game Development” to allow for real-world practice.
The game has a few different programming languages that you can choose from: Python, C++, or Javascript (Python is initially the only freely available one). Because players are basically forced to choose Python, I think the game is less focused on teach specific syntax of each language and more on teaching a conceptual programming framework and how to break-down coding problems.
Game Elements
The game allows you to “Choose Your Hero” from several predetermined options. Each ‘Hero’ has a set of attributes, such as “Difficulty”, “Type” (i.e., Warrior), “Weapons”, “Damage”, “Health”, and “Speed.” There are 4 freely available heroes and each of them are effectively the same exact hero with the same exact stats, just different names, and sprites. As soon as you choose a character, you are brought to an inventory screen. This inventory screen initially prompts you to equip a pair of ‘boots’ which allow you to move your hero up and down the screen. There are inventory slots for a wide variety of items from armor pieces to accessories to pets. There is also a character upgrade system in the game, with achievements that help boost XP and loot drops upon level completion. When you finish a task/level or unlock an achievement, you are given ‘XP’, ‘Gems’ and some item-based loot. To improve your character (Health, speed, etc.), you must gain the necessary XP to ‘level-up ‘their stats. You can also improve your character by buying gear with Gems. To buy additional items to upgrade your character, you need to have the necessary number of gems for each purchase.
There are two different game modes. One is the standard “Code Combat” Dungeon where you must complete a sequence of levels organized into different ‘worlds’ (Mario-style) to progress. This game-mode is used for introducing learning content. Each level in the standard game mode requires you to help your character safely traverse a dungeon, where the goal is to avoid dangerous obstacles and collect all the gems. The game breaks each level down into steps, and each step must be completed to successfully pass the level. There is a code editor on the right-hand side of the interface, which is where you control your character by inputting in the correct code. If stuck on a problem, the game has a hint tab displayed on the right-side of the interface.
The other game mode is Blazing Battle. This is a game-mode where you can compete against other players using programming techniques to construct a tower-defense system. The player that survives the longest, wins. This game-mode doesn’t do much teaching but allows players to put learnt skills to practice.
Learning Principles
The game does a good job of segmenting, by splitting the game into sections, where each section is focused on a specific learning objective. In conjunction with this, the game utilizes Linking. I think the linking strategy employed here is very effective, because the learning content here is very broad in category. So, for a game with a high-level instructional goal of teaching programming concepts (which is very broad), this game does a good job of demonstrating how different programming concepts relate to each-other and build each other up.
There is very minimal pre-training, but this is remedied by the game utilizing the Goldilocks principle and having a very accessible initial difficulty level that ramps up gradually and naturally. The game never feels too difficult or too easy, but at the right kind of difficulty most of the time. The game also introduces new elements or obstacles that gradually help to increase the challenge of the levels. The game provides ample opportunity for player application of newly acquired knowledge and skills. This is also like Quizzing, but on a more regular level. Each level in each section is effectively a test/quiz of what you have learned thus far. Each level in each section builds upon previous knowledge, so each new level offers a fresh challenge. Additionally, there is the Blazing Battle game mode that players to compete against each other on their coding skills.
If the challenge of a specific level is too difficult, the game also offers help in the form of both Immediate Feedback and hints. The Immediate Feedback occurs after an unsuccessful run of a level or directly after you make a mistake. The feedback tells you what level goals you were unable to complete and provides a hint on what you were doing wrong and how to fix it. The game also breaks down each level into goals and re-introduces helpful concepts/strategies before having you tackle the level.
One of the most salient aspects of the game’s design is its use of “Interest.” The game fully structures the learning content around the framework and setting of a generic dungeon-crawling RPG-type game. Through this, the game uses the setting to help introduce new learning content. For example, to introduce new methods (in programming), the game will introduce a sword that you can call upon to attack enemies (‘attack’ being the new method). To this, the game uses the principle of “Anchored Learning” interestingly. I think it could be argued that the game engages players in realistic problem solving, by virtue of the setting being so familiar. But it could also be argued that the problem solving is not realistic at all, because of the setting being fictional and fantasy based. I think there is an interesting discussion here on whether it is more important to demonstrate concepts through familiar metaphors with a fictional context or whether to demonstrate concepts through realistic examples with a real-world context.
Overall Critique
I think there is too much extra content and fluff content to make it seem more like a standard entertainment-based game rather an educational/instructional oriented game. All this extraneous content, while interesting, can potentially distract from the learning content. Additionally, some of this extra content is not immediately obvious as to how it impacts gameplay. Allowing players to choose their own character can be a very good way to get players engaged, but it is hard to tell initially how these attributes help in the actual gameplay, or what each attribute corresponds to from a gameplay standpoint. It says Captain Anya Weston has high damage and health but low speed, and it is not immediately obvious how these translate to gameplay. I think the game could benefit from breaking down the different gameplay elements and how they impact both learning and gameplay (such as Gems, XP, inventory items). As when first starting the game up, trying to make sense of the game’s systems and mechanics can take away from the learning content. I also think that some of this extra content was mostly done as ‘fluff’ for appearance, as the four free characters have literally the same exact attributes.
I think if a game is trying too hard to be like a standard entertainment-oriented game when it is obviously an instructional game, then the dynamic feels a bit off. The individual game elements do not seem very related to the high-level instructional goal. The gameplay itself, which is coding and solving coding problems, is directly related to the high-level instructional goal, but the setting and the extraneous content are attempts to make the game more standard. There is an interesting question of whether it is most important to have an interesting setting (so as to draw new players in that may or may not be initially interested in the actual learning content) or to solidify the game as a resource for learning (so as to focus on the players that are previously interested in the learning content).