The paper presents a serious game, implemented as a software application, aimed towards beginner programmers with the purpose of teaching programming languages fundamentals. The application is a top-down 2D game combining elements from the shooter and strategy (particularly tower defense) genres, with high-level visual programming elements, giving it an educational component. The user creates the scripts in a visual manner, creating the flow of scripting elements then programming each element.
Serious games are games which are designed and developed without having entertainment as their main purpose. Instead, their primary purpose is to educate, train, or inform their audience. The meaning of the term has evolved in the last few years and currently it is usually assumed that serious games are video games, rather than physical, non-digital games. Digital game-based learning is a subset of serious games having as a main purpose to educate the player through the use of video games. Video games manage to keep the players interested, even if they find themselves in challenging situations, and this is on account of the intrinsic motivation they achieve to maintain on the players. What makes learning an intrinsically motivating process is similar to what makes a video game intrinsically motivating, this being challenge, curiosity, fantasy and control. Contextualization, personalization, and choice improve the intrinsic motivation of a learner, thus increasing their degree of engagement in the learning process and ameliorating their learning performance. These three properties are often present in most video games. This compatibility between video games and learning makes integrating the one to the other an easier accomplishment.
While some other serious games aimed at programming exist, such as RoboCode, CodeCombat, Kernel Panic, CoLoBoT, CeeBot, CodeSpells, there is still much room for innovation, and our application explores new features and modes of play, focusing more on the program structure and logic than on the syntax.