Spirit Level, Laser Levels & Construction Measuring Tool Leader. With innovative features like our GreenBrite® technology which makes Johnson laser levels 400% brighter than traditional red laser levels, Johnson Level is the clear leader in levels, lasers and all construction measuring, marking and layout tools. The industry leader for over 70 years in spirit levels (bubble levels), Johnson.

AbstractVideo games are part of our culture like TV, movies, and books. We believe that this kind of software can be used to increase students' interest in computer science. Video games with other goals than entertainment, serious games, are present, today, in several fields such as education, government, health, defence, industry, civil security, and science. This paper presents a study around a serious game dedicated to strengthening programming skills.Real-Time Strategy, which is a popular game genre, seems to be the most suitable kind of game to support such a serious game. From programming teaching features to video game characteristics, we define a teaching organisation to experiment if a serious game can be adapted to learn programming.

IntroductionSince the first boom of video games in the80s, the gaming industry has held an important place in the world market.According to the Entertainment Software Association figures accessed 26 August2008, in 2007 the market of U.S. Computer and video games amounts to $9.5billion.

This is almost equal to the U.S. Moviemarket accessed 26 August 2008($9.6 billion in 2007). Students currently in university were born with videogames, which are as much a part of their culture as TV, movies, or books.However, to progress in video games, the playermust at the same time play and learn. Serious games use this feature tointerest players in specific topics, teach some specific educational content, ortrain workers to specific tasks. The idea is that entertainment can lead to learning ifsome specific constraints are respected.On the other hand, all over the world,students are becoming less interested in science. In computer science, forexample, according to Crenshaw et al. and Kelleher , the number of students is shrinking.

Moreover, “ colleges and universities routinely reportthat 50% or more of those students who initially choose computer science studysoon decide to abandon it” , page 39. Our university experiences the samephenomenon with a decrease of 16.6% over the last four years in studentsstudying computer science.Therefore, in the computer scienceeducation research field, there is an important area directed to therecruitment and retention of students. A promising way explored by this specific researchis using games to teach and learn programming.

It allows students to better learn in a familiarand playful environment. Moreover, it promotes collaborative learning and spursstudent to learn.We propose to study if serious games,which can be collaborative learning games, could be of value in order to teachprogramming and to attract and keep computer science students. The questionis: Is it interesting to use a seriousgame for teaching programming?Toachieve this goal, we propose the methodology of design experiments : “ prototypically,design experiments entail both “engineering” particular forms of learning andsystematically studying those forms of learning within the context defined bythe means of supporting them. This designed context is subject to test and revision, and thesuccessive iterations that result play a role similar to that of systematicvariation in experiment.” The intent of this methodology in educational research is toinvestigate the possibilities for educational improvement by bringing about newforms of learning in order to study them.

Because designs are typicallytest-beds for innovation, the nature of the methodology is highlyinterventionist, involving a research team, one or more teachers, at least onestudent, and eventually school administrators. Design contexts areconceptualized as interacting systems and are implemented with a hypothesizedlearning process and the means of supporting it. Although design experimentsare conducted in a limited number of settings, they aim to develop a relativelyhumble theory that targets a domain specific learning process.

To prepare adesign experiment, the research team has to define a theoretical intent andspecify disciplinary ideas and forms of teaching that constitute theprospective goals or endpoints to student learning. The challenge is toformulate a design that embodies testable conjectures about both significantshifts in student learning and the specific means of supporting those shifts.In our experiment, the theory we attempt to develop is the process of learningprogramming through serious games. In this paper, we discuss how to build adesign context that will allow us to construct several conjectures to test ourtheory about an original form of programming teaching.In therest of this paper, wedefine briefly what a serious game is and what its learning aims are. Afterpresenting programming teaching features and associated environment, we analyse some of them in reference to learning objectives and seriousgames features. Because there is currently no serious game dedicated to thisfield and suitable to design experiments, the rest of the paper presents theserious game we built. Section presents how we chose the video game that supportsour serious game. Section details the implementation of our serious game.Section describes how learning objectives are mapped into thegame from the student, teacher, and knowledge points of view.

Section explains how we will conduct our first experiment. Serious Games 2.1. DefinitionsFor Zyda , a serious game is “ a mental contest, played with a computer in accordance with specificrules, that uses entertainment to further government or corporate training,education, health, public policy, and strategic communication objectives.”Thus, any video game built to differ from pure entertainment can be consideredas a serious game. Serious games represent, therefore, a wide range of digitalgames. Blackman gives a synopsis of the gaming industry and itsapplications.

Sophisticated video game graphic engines are nowadays used fornongame applications because they offer real-time rendering and physicalmodels. Applications such as simulators can use such video game technologies.Serious games are not restricted to video games; they can also be based onsimulators. Figure illustrates the relationship between video games,simulators, and serious games. Relation between video games, simulators, and seriousgames. Example of Serious GamesTo highlight the relationship between thetarget public and serious game objectives we present three examples of seriousgames following different aims: “Darfur is Dying” accessed 30 November 2008, “Tactical Language & Culture”accessed 30 November 2008, and “America’s Army”accessed 30 November 2008; “Darfur is Dying” is a game developed in partnership with theReebok Human Rights Foundation and the International Crisis Group. The purposeof this game is to increase publicawareness of the crisis in Darfur. The player controls a Darfurian whoforages for water and develops his/her camp.

Because the objective was to reacha maximum of people, “Darfur is Dying” is a minigame based on a platform game genre easy to play even for nongamers. Itis free and accessible by everyone.“Tactical Language & Culture” is agame started in 2003 as a research project at the University of SouthernCalifornia’s Information Sciences Institute under funding from the DefenceAdvanced Research Projects Agency (DARPA). Its purpose is to teach foreign languages and culturalknowledge needed to conduct tasks effectively and safely during bothdaily life and military missions. Currently, it offers courses in Iraqi Arabiclanguage and culture ( Tactical Iraqi),Pashto language and culture for the Pashtun regions of Afghanistan ( Tactical Pashto), and French as spokenin the countries of Sahel Africa ( TacticalFrench).

“Tactical Language & Culture” is a complex game targeted forservicemen. It is based on a role-playinggame genre to enable an immersivecommunication with virtual avatars in the game.

It is played ininteraction with a virtual tutor who evaluates the learner’s speech and givesfeedback on errors.“America’s Army” is a game launched inJuly 2002 designed by the Modelling, Virtual Environments, and Simulation(MOVES) Institute at the Naval Postgraduate School in Monterey, Calif, USA. It was initially built as a recruitingtool for the United States of America’s army. However it became thefirst really successful serious game and is currently one of the ten mostpopular PC action games played online. “America’s Army” is a complex game basedon a shooter game genre to immerse the player in action. It is afree multiplayer game requiring a team effort.These serious games use entertainment topursue different learning objectives: “Darfur is dying” tries to raise publicawareness; “Tactical Language & Culture” aims to learn foreign languagesand cultures; “America’s Army”tries to attract young people to join the US Army. Video GamesSerious games are mainly based on videogames that define their usability.

According to the aims of the serious game,the video games characteristics of game genre, game mode, and game complexitydefine the target audience. The game genre is used to classify videogames.

Percentage of players whoplay multiplayer games.Thus, to be adapted to our targetaudience, our serious game should be based on a multiplayer strategy game. What Is a Strategy Game?Strategy games are, by and large,represented by Real-Time Strategy (RTS) games. In this game genre playersevolve in a virtual environment, where resources are scattered on a map. RTS istraditionally structured around three main phases closely linked: harvestingresources, building structures and units, and fighting opponents. To win agame, the player has to destroy all structures and units of opponents orachieve a specific goal.

To build a strong army, a good economy is required andprotection of strategic areas is essential.A strong player should show abilities inplanning and know how to anticipate and react. She/he has to command hundreds ofunits, which leads to a large cognitive load. Moreover, RTSs have an importantfeature: the “fog of war.” This hides the movements and actions of opponentsuntil they come into the line of sight of one of the player troops. The playerevolves in a virtual world with incomplete information, which increases thegame interest.Traditionally, RTSs provide two types ofgame: Campaign and Skirmish. Campaigns attract the player and teach him/her how to play, andskirmishes extend the life of the game.

A campaign is divided in missions thatgradually introduce game contents and complexity. Skirmishes require a better control of the game. The player fightsagainst computer AIs or other players. Moreover, to increase the gamechallenge, it is always possible to find better or equivalent players on theInternet.In RTS games, a player gives orders tohis/her units to carry out operations (i.e., moving, building, etc.).Typically, these instructions are given by clicking on a map with the mouse.

AnRTS game, where such instructions can be given through programs, might be theanswer to our serious game. The idea is to stimulate the player to give ordersthrough programs. These programs will assist the student/player during the gameand should increase his/her probability of winning, if they are efficient,relevant, and suitable to the game. Moreover, when they test their programs,students will still use the same environment (the game).

Are Strategy Games Compatible with Teaching Programming?As we have seen before, serious games forteaching programming alreadyexist and are used. In particular, Colobot is based on a sort of RTS. InColobot, teaching is provided through an interactive library available forconsultation but a teacher using Colobot cannot modify or adapt it to his/hercourses. And there is only one course level for novice programmers (PF).Learning how to program requires writingprograms. A priori, RTS and programming activities are incompatible: real-timegames are dynamics and have a strong interactivity with the player, andprogramming tasks require time for design and implementation of programs.Integrating programming activities in an RTS should then modify foundations ofthe game. Colobot and Robocode found two different solutions to solve thisproblem.(i) Colobot isbased on a modified RTS to enable in-game programming.

The common rules of thegame are modified by this fact, and it demands a specific skill from the player.For example, the player cannot control several entities in the game at the sametime. (ii) Robocodedistinguishes between programming and playing activities. First, the playerwrites an AI, and then she/he runs them. Thus the player is inactive during thesimulation and is merely a spectator of his/her AI. ImplementationRTSs are very complex programs, with morethan tens of thousands of code lines. Because our goal was not to develop a newRTS, we decided to use an existing engine. This engine had to be open sourcedto allow us to develop the specific features of the serious game.

Game Engine ChoiceWe found two open source multiplayer 3DRTS engines: the Spring project accessed 2 February 2007, and Open Real-Time Strategy (ORTS).ORTS has been developed to provide a programmingenvironment for discussing problems related to AI. This game is designed toallow the user to easily program and integrate his/her AIs. It is aimed atusers who already know how to program. Spring is a project aiming to create anew and versatile RTS Engine which was built to reuse some game data from acommercial game called Total Annihilation.

Currently, Spring is more successfulthan ORTS. A gamer community plays Spring everyday on the Internet. Thiscommunity helps to discover bugs, which are fixed by a development group. Thisprocess is not present in ORTS which is experimental. We chose the Springengine instead of ORTS because of this community. Characteristics of SpringAlong with the Spring engine, several“mods” exist accessed 26 August 2008, (mods constitute additions to a game that change the way it works). For ourexperiment, we chose to use “Kernel Panic”accessed 26 August 2008; Figure presents a screenshot of Kernel Panic, where threeplayers (red, green, and pink) fight on a map.

Kernel Panic uses computerscience metaphors, like bits and pointers, which is an asset for our trainingpurposes. Moreover, Kernel Panic is a simplified RTS with the followingfeatures: there is no resource management except for time and space; all unitsare free to create; it has a small technology improvement tree with less thanten units; it uses low-end vectorial graphics, which match the universe.These characteristics emphasize strategy and tactics in an action-oriented gamewhile always remaining user friendly. Kernel Panic.

Serious Game ImplementationTo adapt the Spring engine to the seriousgame we wanted to build, we had to take into account some constraints: (i)allow players to write code plugged dynamically into the game; (ii) protect thegame engine against player’s code bugs; (iii) hide the complexity of the gameengine; (iv) support different programming languages. The integration of theplayer’s code in the engine must be interactive (without stopping the game) inorder to maintain the progress and coherence of the game.In some previous works we used an implementation based on a dynamiclibrary. Use of dynamic libraries turned out to be inadaptable to interpretedlanguages.

Indeed, dynamic libraries solve problems in a single process: thegame engine. This process controls student's computer programs. But interpretedlanguages also require an interpreter which is carried out in its own process.Thus, we discovered limits of the use of a dynamic library containing theplayer’s code.Considering this drawback, we designed anew system. Students’ programs are not included in a dynamic library loaded andperformed by the game but are running in an independent process andcommunicate with the game.

This enables the use of compiled or interpretedlanguages. A set of techniques exist for exchanging data among processes. Weneeded a portable and fast solution designed for process communication and notjust threads communication. We chose to use the Boost interprocess library accessed 26 November 2008, that provides shared memory functionality. Moreover, this library offers the possibilityto use complex data, like vectors or maps, in the shared memory.The UML component diagram in Figure expresses the dependencies between the player’sprogram and the game engine.

These two components interact through the GameEngine Interface (GEI). The “Supplier GEI” is used by the game engine. We haveintegrated into the game engine some modifications. When the game starts, itcreates the “Supplier GEI,” and then the supplier interface can be used through the subroutines in Table. Table 2GEIs use the Boost interprocess library tointeract with the shared memory. GEIs hide the synchronization complexity ofthe shared memory and make communication with the game easier.

At the requestof the student program, pertinent data is copied into the shared memory. Toavoid incoherent situations, students’ programs work on this copy.

In this way,at any time, the player can change his/her code and carry it out to use theshared memory and to communicate with the game.All languages that are able to use a Clibrary can use the “Client GEI” and communicate with the game engine.Currently, we propose interfaces for the “Client GEI” in C, Java, VisualBasic for Application (VBA), and an interpreted language called “Compaglo” (used in aspecific course at our university). Mapping Learning Objectives into the GameIs the built serious game compatible with learning objectives?Different viewpoints can be envisaged: the student view, the teacher view, and theknowledge view. The Student Point of ViewThe first step for a student is to learnhow to use the serious game. Especially at the beginning, students have tounderstand what they can program and how they can do it through the “clientGEI.” A campaign seems to be very suitable for game appropriation wheremotivation is maintained by a story.When players are over with all themissions, they should be able to control the serious game and develop their ownAIs for skirmishes. To build these AIs, players need to call upon their skillslearned during the campaign. They have to design and implement each AI. Thedeveloped AIs span from simpler ones for novices, to very complex ones forexperts.In skirmishes, a student can play againstthe computer or against his/her friends.

Multiplayer sessions encourage them tocarry out new challenges. The motivation is maintained by competition betweenplayers.The player defines a strategy, composed bya set of tasks, to win. She/he can choose to carry out some of them through AI.If the developed AIs improve the game, students will be better when they play.They will then perhaps find interest in programming, spend time to perform itand so increase their abilities in programming practice. The Teacher Point of ViewThe serious game we built can be adaptedto the programming language chosen by the teacher. According to the languagecharacteristics, she/he can build activities for different course levels from PFto complex AI algorithms. Moreover, if s/he chooses to use the multiplayermode, she/he can use individual, competitive, and collaborative pedagogicalmethods.

The Knowledge Point of ViewBecause unlike Colobot, the tool has notan interactive library of programming skills, it cannot be used without anappropriate teaching environment: students need to be assisted by teachers andpeers to write their AIs and, after playing, an institutionalization stage is necessary to carry out collaborativelearning. Simon defines institutionalization as a phase where ideas“ constructed or modified during problemsolving attain the status of knowledge in the classroom community.” PFskills are gradually introduced through the missions, which initial aims are toprogress in the story.GEI is a fairly complex ApplicationProgramming Interface (API) which is not simple for novices to use.

Teacherscan develop an overlay adapted to their own subroutines specifications. First ExperimentBefore conducting design experiments withdifferent teachers and students, we decided to test our serious game on some ofour students and first define a simplified design experiment. To comply withthe traditional game mode of an RTS, we first propose to carry out a campaignand then to develop additional programs usable in multiplayer sessions. Wefirst present an example of a campaign, then we show how to organise a skirmishto ensure learning. Our Campaign“Kernel Panic” is only a multiplayer gameand does not provide campaigns.

Therefore, we built a campaign to graduallyintroduce learning topics and enable students to learn how to play and toprogram AIs. We take advantage of the Kernel Panic universe and offer studentsthe following scenario: “ Fora certain number of years, a secret war is rife inside computers. Steadyattacks are led against innocent victims. Today is your turn.

Your aggressorcaptured your mouse controller. You must recover it. Your only solution:programming.”To achieve this objective, five missionsare created.(i) Mission 1.“ You lost a lot of units in the lastattack.

Units currently alive are dispersed on the map. You have only one BITunder control.

You must go to the rally point at position (1056, 1792) to findother units.” To succeed, the player has to make a small program where she/heuses variables, types, assignments, functions, parameter passing, and records. Algorithm shows a solution. (ii) Mission 2.“ You just found a BYTE unit. It tells youthat other units are reassembled not far. It gives you the position (479, 1825)of a BYTE group that it tries to rally. Moreover, it warns you that a group ofBITS is forming at position (1400, 1371).

To retrieve these units, command yourtwo units to meet up with their respective groups.” In this mission theconditional control structure is introduced to give a target position to eachunit according to their type (BYTE or BIT). (iii) Mission 3.“ All units you control are weakened.

Youmust repair them before starting a counter attack. A report indicates that anASSEMBLER is posted at the position (256, 1024). Find it and it will help you.”In this mission the iterative control structure is introduced to iteratethrough each unit and move them on the right position. Algorithm shows a solution.

(iv) Mission 4.“ You found an ASSEMBLER. Use it to repairyour weakened units.” This mission is the most complicated and requiresoverlapping iterative and conditional control structures. The player has toiterate through each units and commands the ASSEMBLER to repair a unit if thisunit is weakened and if the ASSEMBLER is inactive. (v) Mission 5.“ All units are repaired.

Now it is timeto fight back. The mouse device is positioned at (1056, 256).

Good luckcommander”. This mission goal is to reward students with a simple fight. Mission three algorithm. SkirmishesWhen students finish the campaign, theycan write their own AIs and use them during skirmishes. Here are some examplesof strategic AIs which could be written by students and give an “in-game” assetto the player: “Search for opponent” to quickly find the enemy in order toadapt one’s strategy to the adversary’s; “Create a mine field” which may slowdown opponents’ expansion in order to give more time to develop our ownstrategy; “Repair” using specific units to keep strategic units in good health;“Withdraw” to protect units when facing a stronger opponent. All these examplessupport a part of a player strategy and let him/her take charge of the rest,and therefore play the game at the same time.Algorithm shows the algorithm of “search for opponent” whereunits search for the enemy. Random target areas are computed to move each unituntil an enemy is found.

It uses library subroutines, like “giveOrder(u, MOVE,pos)” to move the unit “u” to the position “pos”. Usually, the player does thiswith the mouse and has to select each unit one by one, a long and tediousprocess. The loop allows the player to perform this operation automatically.Moreover, while the player is selecting the enemy units with the mouse, she/hecannot carry out other tasks. With this program she/he can, for example, develophis/her base while the program explores the map. “Search for opponent” algorithm. Organization of the CourseTable shows the schedule of our teaching organization forour first experiment. Two instructors supervise each session: one gamespecialist and one computer science teacher.

During the first session, studentsplay the game to familiarize themselves with it. A discussion about whatcould be done to improve the game and which are the most efficient strategiesfor winning is initiated.

The second session is a presentation of GEI. Thecomputer science teacher proposes that all students carry out missions.The programming obstacles are dealt in concert with the teacher.

During the twonext weeks, students work autonomously but can call upon their instructors.They have to develop their own AIs. If they have no idea of what toprogram, a database of efficient algorithms is proposed such as the “Search foropponent” algorithm. The game specialist guides the students through differentgame strategies to improve the playing sessions. The computer scienceinstructor deals with installations and programming problems.

Not only can you exercise your brain, but it can also improve your imagination. This is an online game, whether you are waiting for a car, in the park, you can play it at any time. Find the exclusive location for each shape and you'll find that it's easy to pass. Play block hexa puzzle online.

User

The students areallowed to communicate with each other. They can then elaborate alliances orcooperation strategies, or simply help each other with programming. When allthe programs are completed and operational, the third session occurs: studentsplay using their own programs.

The game specialist teacher turns hisattention to decipher what really happened during the game: the role of theprograms, the activities of the students, and the strategies used. This observationis the base of the last session: students and teachers analyse games and try tofind the reasons behind victories and defeats. A discussion about theimportance of the programs is held. The learning objective is that our studentscontinue to use by themselves this serious game and improve their programmingskills. Teachingorganization schedule.This experiment will be conducted in ouruniversity this year with novice students. To evaluate the process we will useseveral indicators such as student investment, number, quality and pertinenceof the written programs, student retention, gained skills and exam results. Wealso want to evaluate the “feelgood” factor as defined in.

ConclusionThis paper deals with the compatibility betweena serious game and teaching programming. Serious games are more and morepopular and can meet learning objectives. On the other hand, computer sciencestudents encounter a lot of difficulties while learning programming. Someresearchers in computer science education develop programming environments toencourage and retain students.

Boonie Planet has no reserves and can therefore be placed in the hands of children.In conclusion, the creator of Boonie Planet does not stop updating its application. Boonie planet the game. They are not too difficult to obtain but it will take you time to deal with them!Don’t miss these points about Boonie Planet: It was editedby MovieStarPlanet ApS and has been downloaded 100000000 times by Android users.This application was rather well received by Google Play users, who gave it a more than honourable rating. A feat that is not about to stop!Boonie Planet will allow you to stay totally zen!

Some of these environments can be considered asserious games but they are not adaptable enough to validate our hypothesis inregards to design experiments, which is why we decided to build an adaptableserious game dedicated to programming.As a basis for our serious game we choseto use an RTS, because it is the most played game genre for our targetaudience. Because it was not possible to develop our own RTS engine, we decidedto use the Spring game engine and the Kernel Panic game.

The implementation ofthe serious game led to modifying the engine to enable an interactive andsecure programming activity through an API. The students can command gameentities with their own AIs and have contests with their friends in themultiplayer mode. The game can be adapted to specific programming languages, andteachers can adapt the API to their own specification subroutines. PF skillsare mapped on the game through missions. In order to validate the game, wedesigned a first design experiment with our students.The next step is to conduct thisexperimentation and to adapt it to several contexts with different instructorsand students in order to apply the iterative process of design experiments. Thepossible evolution of the serious game is the introduction of teachingfacilities, like Colobot, and in order to keep pace with the rapid evolution ofvideo game standards, the use of another mod, or the integration of other RTSgame engines.We hope that these experiments will showus the breadth of teaching applications supported by our system as well as therange of potential audiences and teaching methodologies. Analysis of ourexperimentation will explore and resolve potential issues concerning usabilityand effectiveness of learning with serious games.

At the same time, it will beimportant to determine which skills are learned by students when the campaignis finished and how users switch between game play and coding elements. It wouldalso be interesting to evaluate this approach with another video game genre andto compare it with our RTS-based serious game.

. Setup.FilterMode. Setup.MipmapLevel. Setup.Anisotropy.

Setup.MSAA. Setup.ShadowMapping. Setup.OffscreenBuffer (automatically adjusts ShadowRange). Setup.PerPixelLighting (if the new engines will be stable enough). graphics engines. Setup.JoystickAxisBinding0-2, Setup.JoystickAxisInvert0-2, Setup.JoystickDeadzone (see )Settings that will be still available only in colobot.ini:.

Setup.ShadowColor (this doesn't really need to be configurable for the user). Setup.ShadowRange (but we need to make sure the autodetection works well enough).