GameDevLessons.com has migrated to HobbyGameDev.com - please update links!
Chris DeLeon's GameDevLessons.com Text Lessons
Vol 9 - December 31, 2009
Hello!
I'm Chris DeLeon (about me), and thank you for joining me for my monthly videogame development Text Lessons, Vol. 9. This series is one of the ways that I aim to help new game developers get started, while helping current game developers take their work in new directions.
II.) Beginner - Programming Asteroids
III.) Intermediate - Particle Effects Code
Benefits of a Fixed-Size Array
Code, Applied to Asteroids Source
IV.) Advanced - On the Meaning of Alice in Bomberland
Accidentally Learning from Accidental Teachers
Mental Models are Metaphors (That's a Metaphor)
Why Alice's Adventures in Wonderland
Introduction to Alice in Bomberland
The BazHookah Smoking Caterpillar
Appendix C: Purchase Alice in Bomberland
V.) Free E-Book: 10 Years of Indie Game Takeaways
VI.) Donations
To read previous editions, or subscribe: http://gamedevlessons.com/?page=free
If you would like to be notified when the next edition is available, you can join the mailing list. It only takes a minute, I will never send out more than one e-mail each month (only to announce these text lessons), and it's easy to unsubscribe at any time.
Though these lessons are not intended to be cumulative, the various topics in each may prove helpful. If you're new to these lessons, I recommend Newsletter Vol. 1 for its non-technical conceptual introduction to programming, and the links it contains to free resources for image editing, audio work, 3D modeling, and other asset creation.
II.) Beginner - Programming Asteroids
Asteroids Starting Game Source
To play, you'll first need to compile the source into an executable. This can be done in only 5-10 minutes following the steps below, and is the first step to your exploring the elements of programming. Unzip/copy these files into a new folder before continuing (you can unzip them anywhere; creating a "Projects" folder on your desktop works).
Use Left and Right keyboard arrows to turn the ship.
The Up key applies forward thrust.
Spacebar "fires" (drops) a green laser.
Press the Escape key to quit.
Are you only seeing a small white line on an otherwise completely black screen? Perfect! That's all there is to the program in its current form. The rest, as you'll find outlined in the comments of the code (the core.cpp, main.cpp, and core.h files), is up to you.
Once you have the program compiling - on whichever operating system you prefer - for next steps, read through the comments in the project's main.cpp file. See if you can figure out how to modify the text to perform some of the remaining tasks. For a conceptual explanation of programming, check out Text Lessons Vol. 1. For a detailed introduction to different programming structures as they relate to videogame programming, check out Text Lessons Vol. 5.
Download and install Dev-C++ 5.0 beta 9.2 (4.9.9.2) (9.0 MB) with Mingw/GCC 3.4.2.
After it's installed, run Dev-C++, check the "Tools" menu for "Check for Updates/Packages", then under "Select devpak server" choose "devpaks.org Community Devpaks". Press the "Check for Updates" button, then check the boxes to install Allegro (the library for audio, input, and graphical functions) and Allegro Supplement (documentation and sample files) - if you're having a hard time locating those options in the list, click the heading of that names column to alphabetize the listings.
Next, use the File menu to create a New -> Project, type Empty Project, with the "C++ Project" radio button filled. Name it "Asteroids" and save the "Asteroids.dev" project file in the same folder as the downloaded source files.
To add the project's files to the project, use the Project menu to find the option for "Add to Project", then select all 3 files that were copied from the downloaded asteroids_ex.zip file (core.cpp, core.h, and main.cpp). Click on any project file in the left hand project view to see the contents of that file - main.cpp is the most interesting, as it's where the game-specific action takes place.
Before we can compile, we need to add the Allegro library to the project's setup. Under the "Project" menu, open "Project Options", then flip to the "Parameters" tab. Under the right-most dialog box, the one headed "Linker", type in "-lalleg" (minus the quotes). Press Ok.
Lastly, use the menus to go to Execute, then "Compile & Run". The game (at this point only a white line on a black screen) should open, which you can interact with by using the arrow keys and spacebar. Press escape to quit.
Any time you make changes to the program source, you can update the game itself by repeating that last step to "Compile & Run". Each time the game is compiled, the "Asteroids.exe" file in the same folder as the source files will be updated. That file is the program which you can share with others.
Download Xcode for Mac-only Development from Apple's website to get all developer's tools installed. Also download the Allegro source for Linux (I found that here). Double click that downloaded allegro tar.gz to turn it into a folder, then use the Terminal to 'cd' command your way into that new allegro-4.2.2 folder (need to learn the Basic Terminal Commands?), then type the following lines into the terminal to install Allegro:
chmod +x fix.sh
./fix.sh macosx
make
sudo make install
sudo make install-man
sudo make install-applehelp
sudo make install-framework
make
sudo make install
Followed by using the Terminal to navigate into the folder containing the Asteroids game sample source. Then type in this command:
g++ main.cpp core.cpp -o asteroids-mac `allegro-config --libs`
NOTE that the ` is a BACKTICK on the same key as tilde (~), NOT a single quote/apostrophe from the same key as the parenthesis (").
To edit the code, open main.cpp using any plain text editor (TextEdit, TextWrangler, DashCode...). To recompile the program to reflect changes made to main.cpp, repeat the step above for typing "g++ main.cpp...[and the rest]" in the Terminal.
If you're using Linux, I think you can figure this out. :)
Pro Tip Hint: check out the instructions for the Mac section.
III.) Intermediate - Particle Effects Code
Puffs of dirt kicked up from tires, smoke after explosions, empty shell casings ejecting from automatic rifles, and splashes of water are all particle effects. Shattered pieces of scored gems in a puzzle game, splatters of blood from gunfire, broken glass, chunks of wood, snowflakes, sparks, and shards of plants are all particle effects.
Particle effects are categorically different from most other objects in a videogame. Note the following differences:
|
Benefits of a Fixed-Size Array
There are dozens of container structures that are more complex, robust, and flexible than fixed-size (i.e. normal, basic, no frills) arrays - linked lists, vectors, and so on. Why do I recommend using fixed-size arrays for particle effects?
|
Code, Applied to Asteroids Source
In main.cpp of the sample Asteroids source...
After:
#define ROCK_NUM 25
Add:
#define PFX_NUM 1000 // maximum number of particle effects
After:
obj_typ ast[ROCK_NUM];
Add:
struct pfx_typ {
float xv, yv; // component velocity
float x, y; // position
int life; // frames until it vanishes
int color; // color of this particle
};
int pfx_alive = 0;
pfx_typ pfx[PFX_NUM];
Before:
void drawThings() {
Add:
void pfxJet(int spawnNum, obj_typ *fromObj) {
int toSpawn;
if( pfx_alive + spawnNum >= PFX_NUM ) {
toSpawn = PFX_NUM-1 - pfx_alive;
} else {
toSpawn = spawnNum;
}
float cosPower = -cos(fromObj->ang) * 0.5;
float sinPower = -sin(fromObj->ang) * 0.5;
int colorForThisSet;
colorForThisSet = 224+(rand()&0x1F); // shade from 224 to 255
if(rand() & 0x01 == 1) {
// bold reds
colorForThisSet = makecol(colorForThisSet, 0, 0);
} else {
// bold yellow
colorForThisSet = makecol(colorForThisSet, colorForThisSet, 0);
}
for(int i=0;i<toSpawn;i++) {
pfx_typ *effect = &(pfx[pfx_alive]);
effect->x = fromObj->x - 3 + (rand()&0x07);
effect->y = fromObj->y - 3 + (rand()&0x07);
effect->xv = fromObj->xv+float(-127+(rand()&0xFF))*0.002+cosPower;
effect->yv = fromObj->yv+float(-127+(rand()&0xFF))*0.002+sinPower;
effect->life = 60+(rand()&0x7F);
effect->color = colorForThisSet;
pfx_alive++; // raise the particle count to include the newest one
}
}
Before:
drawLine( &ship , makecol(255, 255, 0) );
Add:
// move and draw particles in the same pass
// remember that we may have a TON of particles,
// so it's good to only iterate over the list
// as few times as possible
for(int i=0;i<pfx_alive;i++) {
pfx_typ *effect = &(pfx[i]);
if( --effect->life > 0) { // move and draw it
effect->x += effect->xv;
effect->y += effect->yv;
circlefill(screenBuffer,
int(effect->x), int(effect->y),
int(effect->life>>6), // radius as life/64
effect->color);
} else { // remove it from the list
pfx_alive--; // decrease number of live particles
if(pfx_alive >= 0) { // providing we had more than 1 particle left:
pfx[i] = pfx[pfx_alive]; // copy last particle onto this one
i--; // reconsider this particle
}
}
}
After:
ship.yv += sin(ship.ang) * thrustPower;
Add:
pfxJet(10,&ship);
That's it! The code includes a number of strange optimizations - none of which I benchmarked (feel free to inform me if I've been silly to cache the array accesses into pointers, etc.). A few examples of minor optimizations shown here are bit shifting for division, bitwise AND as alternative to modulo to limit rand, and end-swapping in an array to avoid gaps without element shifting. Because particles can number in the thousands, particle programming is one of the areas where otherwise outdated or trivial optimizations (that otherwise should be avoided to keep code readable) can make a significant difference.
Here's an updated example main.cpp file with the above changes made, in case the above insertion hints proved tricky to follow: Asteroids main.cpp with particles.
(Note that this requires core.cpp and core.h from the main source.)
IV.) Advanced - On the Meaning of Alice in Bomberland
NEW: View/Download PDF of this Paper, Ready for Print
Accidentally Learning from Accidental Teachers
"If you want to, you can design your games so that they will improve people's lives, but you will probably need to do this in secret... if you make a game that is really good for people, but no one likes it (the game version of a broccoli smoothie), you haven't helped anyone."
-Jesse Schell
The Art of Game Design: A Book of Lenses (2008)
When I was much younger - much too young to have the attention of professional adults - videogames instilled in me a sense of urgency, the value of practice, the importance of strategy, and an absurd level of ambition on par with saving the world. In the mid 90's, with only a few years of reading experience, Myst taught me the importance of taking notes, by making it impossible to proceed into new areas without jotting down every number, date, and sequence presented. MechWarrior 2 stretched my little brain by introducing variety in mission objectives, squad management, and vehicle configuration. Difficult games on NES like Ninja Gaiden and Mega Man rewarded practice and focus, presenting a consistent challenge each and every time, making these experiences feel much more closely tied to my improvement than what did or didn't happen on a field full of baseball or soccer players. Super Mario Kart gave me a chance in last place, training me not to give up (for details, see GameDevLessons Text Lessons, Vol. 2).
Those learned lessons, in hindsight, were largely accidental. The NES ports of arcade games were hard because they were designed to chew through quarters in arcades, keeping play time to roughly 3 minutes. The PC games that I played pushed me because they weren't intended for players my age. Videogames designed for young players gave me a fighting chance when I was in last place because Nintendo didn't want players getting frustrated and quitting.
James Paul Gee's What Video Games Have to Teach Us About Learning and Literacy is chock full of examples he learned from his own game playing experience, including lessons learned from Deus Ex, RollerCoaster Tycoon, and Tomb Raider. But again, those products were not, so far as we can know as outsiders, designed with the cultural or mental advancement of the player as a priority.
Does learning from videogames have to be an accidental side effect of what's entertaining? Can a videogame be specifically designed to push a player to develop the mind in a positive way, and succeed in doing so? I set out to attempt just this - but not until I first conducted a survey of existing research and development in this domain.
Educational Entertainment, or "Edutainment", is not the answer. Mario is Missing in 1992 didn't teach me anything. I played Where in the World is Carmen Sandiego? by guessing, not much caring whether I won or lost. The Oregon Trail, despite its exalted status as an icon for Generation Xers, taught us only 3 things: "ford" refers to an unsafe way to cross rivers, "dysentery" is a potentially fatal disease related to diarrhea, and a responsible head of the family loaded as much ammunition as they could into their wagon so that no one would get bored on the prairie.
My identity wasn't invested in those games. Even inputting my name didn't make any difference. They all felt like rather roundabout ways of taking a multiple choice quiz (Mario is Missing), studying a map (Carmen Sandiego), or being told a couple of new vocabulary words between playing a hunting game (Oregon Trail). Those old education games failed in the same way that My Spanish Coach on the Nintendo DS fails; it is effectively an overpriced deck of flash cards that, impressively, manages to be less versatile than a deck of paper flash cards. (Paper cards enable faster flipping, isolating, reviewing, and customizing than their software equivalents.)
I believe that edutainment has failed to capitalize on the advantages of digital media by wading in the kiddy pool of Progression (linear/deterministic) gameplay, rather than through interaction with Emergent (dynamic/procedural) systems (terminology from Jesper Juul's The Open and the Closed, 2002).
Although they're certainly compelling as games, and are a curious market anomaly given the relatively low costs of development, the merit of reaction time trainers may not be useful in the real world. Practice will improve performance on virtually any task, but whether the gains from that practice will apply outside of that context is unknown - even by the people making that software. As quoted by Kelly Greene in the Wall Street Journal, Perrin Kaplan of Nintendo said of Brain Age for the Nintendo DS, "It can make you feel sharper, but we don't want people to think it's a medical thing."
"I've failed over and over and over again in my life and that is why I succeed." Michael Jordon taught us that. Wayne Gretzky famously said, "You miss 100% of the shots you don't take." These exemplary sportsmen, no less than the neighborhood coach or young softball player's mother, find a type of wisdom through their activity that is completely unlike what classrooms cover.
Activity learning teaches very different lessons than what thousands of years have discovered can be taught well using linear, verbal, and visual instruction.
An entire industry has sprang up around the professional extensions of classroom learning activities - and works like Experiential Learning: A Best Practice Handbook for Educators and Trainers (by Colin Beard and John P Wilson) outline countless team building activities focused on communication, perspective, hierarchy, leadership, differences, and conflict resolution. These topics are not far from what Chris Crawford aspired to convey through making Excalibur ("Leadership") (from The Art of Computer Game Design, 1982). Of course, the divergence between Crawford's work and consumer interest prevents this similarity from being stronger support of this direction. At least one very intelligent man went mining on that mountain, and has not come back with gold.
John Dewey, in How We Think, offers the following warning with regard to the educative potential of activity-based learning:
Educational practice shows a continual tendency to oscillate between two extremes with respect to overt and exertive activities. One extreme is to neglect them almost entirely, on the ground that they are chaotic and fluctuating, mere diversions appealing to the transitory unformed taste and caprice of immature minds; or if they avoid this evil, are objectionable copies of the highly specialized, and more or less commercial, activities of adult life. If activities are admitted at all into the school, the admission is a grudging concession to the necessity of having occasional relief from the strain of constant intellectual work, or to the clamor of outside utilitarian demands upon the school. The other extreme is an enthusiastic belief in the almost magical educative efficacy of any kind of activity, granted it is an activity and not a passive absorption of academic and theoretic material. The conceptions of play, of self-expression, of natural growth, are appealed to almost as if they meant that opportunity for any kind of spontaneous activity inevitably secures the due training of mental power; or a mythological brain physiology is appealed to as proof that any exercise of the muscles trains power of thought.
[Emphasis added]
That is, while we may perhaps learn some things from engaging in meaningful activities, what learning does occur isn't necessarily useful. This makes sense, as it's unclear how to guide what (if anything) is taken away from a divergent, self-guided and self-evaluated subjective task, as opposed to a convergent one that can be steered toward a particular answer then objectively tested.
Mental Models are Metaphors (That's a Metaphor)
George Lakoff and Mark Johnson, as their central theme in Metaphors We Live By and its spiritual successor Philosophy in the Flesh : The Embodied Mind and Its Challenge to Western Thought, posture that the mind's fundamental device for understanding (and thus language) is metaphor, giving hope that we may teach concepts through digital media simply by offering new (or perhaps new to the user) metaphors. Fortunately - as in, fortunately this research was done before we got carried away with the overstated thesis from Lakoff and Johnson - Steven Pinker in The Stuff of Thought pretty well disassembled, or at least clarified and brought back to Earth the idea, through reason supplemented by studies in cognition and linguistics, that while metaphors are useful tools to understanding, we are not slaves to them. We are not purely creatures of metaphor. The metaphor route is perhaps useful, but certainly not a panacea or silver bullet in understanding what (or how) to convey mental models.
There is also the angle of experience to consider. Presumably, when a headhunter in the videogame industry is seeking a new hire that has such-and-such a degree and at least 2 years in the industry, they are not simply hunting for someone with 2 years of experience as a sanity check (though that may be part of it), in the sense, "they tolerated this work culture for at least 100 weeks without going nuts". There are simply things that can be different between two brains that cannot be taught or studied in the conventional sense, things conditioned onto the mind through experience, a versatile toolset of in-context past experiences which can not only be explicitly tapped into for insight by parallels (that part can be written - here are highlights from 10 years of mine), but counted on to have trained and reshaped the developer's decision making process.
These should not be training simulations, because the context effects on memory that users recognize and respond well to (a finding by Sim Ops Studios while developing HazMat Hotzone and later the firefighter training game) risks oversimplification of the problem. This is the same sort of distortion that Ian Bogost identified regarding Lockdown: A School Shooting Game in Water Cooler Games: stopping a school shooter is not like playing Counter-Strike. Likewise, fighting a virtual fire is simply not the same as fighting a real fire, and virtually developing a videogame (short of actually developing a videogame) is not the same as actually gaining the real experience.
A simulation, or rather a simplified model adapted for gameplay, is a form of analogy, with its very existence asserting, "I am, in an important way, like the real the thing." John Locke's warns of analogy abuse in education, for its role in derailing learning, in Some Thoughts Concerning Education, "But here we must take care that we keep ourselves within that wherein the analogy consists... we mistake that for analogy which is not, and suffer our understanding to be misguided by a wrong supposition of analogy where there is none," sounds the same alarm, that we cannot give the impression of parallel experience when it is not, or we risk falling into another warning by Dewey from How We Think, that if weak understanding doesn't derail learning it may yet sit taking up its place: "Genuine ignorance is more profitable because it is likely to be accompanied by humility, curiosity, and open-mindedness; while [poor learning practice] gives the conceit of learning and coats the mind with a varnish waterproof to new ideas.".
If we get wrapped up in the Serious Games fray, we're left struggling between the user experience that focuses on learning (prerequisites, rigor, attention) and the semantics or affordances associated with videogame technologies (play, player, entertainment, fun, and the like), we face a Catch-22. Either we make something fun and misrepresentative, with a point so shallow it can be explained in less time than it takes to play, or we make something accurate but otherwise lacking the compulsions which motivate the stickiness and determination to overcome hurdles at whatever cost (even if it means learning or practicing). The project is either serious, or the project is a game, but to truly be both is to fail at both, for the same reason that comedy club and lecture hall have not melded.
Rather than...
|
...I decided that the best bet was to (a.) keep it fun and presentable (b.) give the user a non-trivial, multi-variable task (c.) avoid the sort of lessons we know how to convey through traditional methods (d.) incorporate unit operations suggesting granular decision making models and mental processes instead of pre-packaged positions and (e.) employ minimal metaphor other than somatic displacement from player into avatar.
To clarify (e): it's important that the learning is player learning, rather than in character learning; for reflection to occur, and transfer of knowledge beyond the game's context, the player must have personal accountability in the form, "I need to try a different strategy", as opposed to a removed third person concept, e.g. "Alice keeps dying". This way, the absurd question, "What would Alice do in that videogame, if she were in my position?" is replaced in real life with simply, "What, based on my own experiences, should I do?" (This is closely connected to James Paul Gee's "Identity Principle" from What Video Games Have to Teach Us..., and is at the heart of why I believe Super Mario Kart did a better job of teaching me determination than The Little Engine That Could.)
The most important of those, however, is (d.), which depends upon the transfer of unit operations from game space into the player's mind. Unit operations were introduced by Ian Bogost in his suitably titled Unit Operations: An Approach to Videogame Criticism, where he described the concept as "...modes of meaning-making that privilege discrete, disconnected actions over deterministic, progressive systems." In other words, my goal was to convey isolated pieces of thinking to the player, which may interplay with one another, rather than packaged decisions or rigid processes.
This requirement and training of considerations and thought processes is, in part, why the levels are randomly generated. It's critical to the internalization of a new mental model, or to the adaptation of our decision making heuristics, that we're up against a system that defies sequence memorization. Note that Carroll satirized rote learning throughout Alice's adventures, and the problem they pose in education is precisely why they have been avoided here. It is of no real interest that the player learns to conquer a particular level, however it is of great interest that the player learns a different way to reflect, adapt, and better handle to a novel situation on the fly.
Whereas a narrative may carry a moral message, and whereas artistic representations may embrace expressions of love or struggle or madness, gameplay trains and tests particular ways of thinking. I built the gameplay of Alice in Bomberland specifically to require some of the basic considerations and thought processes that I perceive to be parts of sound thinking.
To borrow from the introduction written by Locke's editor for Some Thoughts Concerning Education (John William Adamson), "Not amusement nor distraction, but the desire to effect some cherished purpose is the strongest motive that can move the learner." That is, we press ourselves to learn the most not when the activity in itself is educative, but when learning and mental adjustment is necessary to achieve a desired end, whether that end is seeing one more boss, a sense of completion, or learning the rest of a story.
In this case, the desired end is to read, see, unlock and discover more of the game's art, writing, and gameplay content.
Various compulsions are set up through the gameplay - appealing art, story snippets, Thought Prizes (like fortune cookies at the end of each level), 8 different level/weapon types, 24 kinds of power-ups (a new one is introduced, on average, every other level), Awards/Achievements, and unlockable features - to keep the player always close to the next goal. Each gameplay style is designed to require a different way of thinking to progress. The need for the player to have adopted or understood the level's intended decision making considerations is especially important in the harder stages, meaning the 4th-6th occurrences of each enemy character, since those levels have more demanding challenges.
Why Alice's Adventures in Wonderland
My choice of narrative backstory - twisting works of classic British children's literature from the mid-late 1800's - was made for several reasons. Importantly, it's public domain, meaning that it's old enough that I could use it for free (this is the same reason why old cartoons cultured us with classical music by Wagner and Strauss). It's also powerfully recognizable, as the Alice stories are required reading within high schools for many industrialized nations, and there are dozens of film, cartoon, and videogame adaptations as evidence of deep resonance across many generations and cultures. Lastly, the Alice universe is rich with dozens of characters, magical items/"power-ups", wildly varied settings, memorable quips, and time-warping size-shifting surrealistic nonsense on par with the flying turtles and plumbing teleportation found in Super Mario Bros.
In fact, that similarity between the nonsense of Super Mario Bros and that found in Alice is no coincidence. Shigeru Miyomoto, the creator of Mario, said in an interview, published in the Nov 2005 edition of BusinessWeek, "Mario ended up being too big, so we shrank him. Then we thought, 'What if he can grow and shrink? How would he do that? It would have to be a magic mushroom!' ...then we started talking about Alice in Wonderland."
Lastly, Charles Lutwidge Dodgson (the real name of Alice author Lewis Carroll) was a mathematician and logician - it seems entirely within his capacity to have constructed his stories with an intention to impart greater significance and meaning to his readers than the outward silliness would have us first suspect. In the preface to his later work Sylvie and Bruno, Charles noted, "It is written, not for money, and not for fame, but in the hope of supplying, for the children whom I love, some thoughts that may suit those hours of innocent merriment which are the very life of Childhood; and also in the hope of suggesting, to them and to others, some thoughts that may prove, I would fain hope, not wholly out of harmony with the graver cadences of Life." [emphasis added] It is with the same hope, as I will now explain, that I developed Alice in Bomberland.

"What we’re trying to as designers is build up these mental models in the player. The computer is just an incremental step, an intermediate model to the model in the player’s head. The player has to be able to bootstrap themselves into understanding that model."
-Will Wright
Sims, BattleBots, Cellular Automata God and Go
A Conversation with Will Wright by Celia Pearce (2001)
Introduction to Alice in Bomberland
If you have not yet played Alice in Bomberland, check out this video to see how it looks in motion. It's less than 45 seconds long, and taking a moment to watch it will make what follows a lot easier to understand. Here are some screenshots.
High Concept:
The player controls Alice as she tries to avoid a variety of explosive weapons fired at her by major characters from the stories. Artifacts from the books make their appearances as a wide variety of power-ups, causing her to shrink/grow, go backwards in time, etc. Art from a number of different artists, and excerpts from the books, in both cases often twisted to be more relevant to the "Bomberland' idea, help compel the player to continue through the game.
Core Gameplay:
The in-game action consists of collecting enough power-up points to meet a level's target score before either running out of time or dying from being hurt too many times. The player is given unlimited attempts to replay any mission attempted. Alice has some number of hearts, depending upon her progress through the game, ranging from 4-10. Hearts can be lost in half or full increments. In a floating level (White Rabbit or Red King themed), Alice can move in any direction. In all other level themes, Alice can run left or right, and jump to avoid bombs – jumping up to two more times in mid-air after leaving the ground. Each of the eight major characters has six levels, for a total of 48 levels. The characters are presented interleaved and staggered, such that no two levels in a row are ever for the same character theme, but the first Red King (boss) levels don't appear until nearly 3/4 through the game's levels.
On the Violence:
Despite bearing a title that sounds just as violent as any other videogame, Alice in Bomberland never requires, rewards, or even enables violence by the player. Violence never advances Alice's goals, and is presented as the primary obstruction. While I openly defend action in videogames (see my Text Lessons Vol. 2), I didn't want to lose Alice's characteristic innocence, or risk making the game something parents would wish to keep away from young players.
Note that without the bomb vest (temporal pressure) and enemy weapons (spatial complications) presented as dangers, no one would play this game. As a story needs characters and settings of interest to pull the reader through, so a videogame needs challenges to be overcome in order to maintain a player's attention. The important thing, to me as the developer, was to ensure that the action had meaning (of the type that I detailed in Text Lessons Vol. 8).
Let us begin now by introducing the first item that Alice encounters, and then move on to examine the characters and weapons of Alice in Bomberland:
![]() | Game Item! This is a Lost Page. It shows up more than any other power-up in the game. It's worth 1,000 points, and is the only item that has no side effects (other than score) on Alice or the world around her. It's an ongoing reminder that the real, original Alice's Adventures in Wonderland is a book (!) - not a cartoon, videogame, or film. |
![]() (1.) Action videogames capture attention by connecting game goals to survival imperative. The player is pressured to respond within less time than it would take to question the validity of the stimulus, carrying the player from action to reaction as soon as play begins. |
Alice
Alice Symbolizes: Confidence despite confusion Naïveté amidst danger Reason surrounded by nonsense ![]() Weapon: Ticking Time Bomb Vest Weapon Effect: The vest is her time limit. Its detonation does not further her goals. Weapon Symbolizes: Sense of urgency. As Read Montague points out in Why Choose This Book?, "All outcomes, including doing nothing, are choices... This is why organisms are desperate... Out of the pressure of desperation comes efficiency." Urgency is at the root of valuation, efficiency, and action. Sense of urgency is a principle, recurring theme of the gameplay's lessons. (1) |
Aren't there contradictions in the above symbolic lessons? Isn't the game suggesting both wild action (Caterpillar rockets) and staying calm (Queen of Hearts shells), or both taking opportunity immediately (Cheshire Cat grin) and waiting until it counts most (White Queen looking glass)? It is. The gameplay's mental models are offered as a toolkit, not a one-dimensional morality lecture declaring that "the hammer is best" or "always use a screwdriver". The meta lesson embedded into the gameplay is that which mental model to use depends on the context. Success isn't as simple as a few rules of thumb, one proposed business strategy or obeying a few things our parents once said - but accumulating a rich variety of these things, and a sense of how/when each is appropriate offering the best advantage, is likely to increase anyone's odds of success.
We now return to the randomness of levels. Besides forcing the player to internalize ways of responding (rather than memorizing a sequence, as is the difference between Ms. Pac-Man and Pac-Man), the underlying message here is that you can, at best, improve your odds. The later White Queen levels, which are only beatable if the player performs well and is lucky enough to get looking glass items a couple of times in a row as time nearly runs out, provoked red hot anger, fury, and malicious reviews from some players (this happens once every few plays). If things outside your control don't line up in your favor, it doesn't really matter how you act. The point I hoped to communicate was that if things outside your control do line up in your favor, that will only matter if you've done all the right things to prepare in order to capitalize on that luck. It's the lesson of poker hands, business networking, education, job promotion, politics, and survival in the wild. If you don't feel like the current context you're in affords a strong enough connection between the quality of your decisions or efforts and your outcome, consider changing things up when an opportunity like this one arises:
![]() | Game Item! This is a Read Ahead. It randomly switches to another character's level for 5-10 seconds, during which time all score values are doubled. |
Including the per-character items, there are 24 kinds of power-ups in the game. The ones not covered here in detail are those that change Alice's size (Drink Me bottle and Eat Me cake), items that change the speed of time (Orange Marmalade), items that flip the world or turn off gravity or absorb damage or reveal explosion radii or teleport Alice or wrap the screen edges or turn bombs into power-ups or enable infinite multi-jump... all of them symbolize something about thought, problem solving, or decision making, although I leave their interpretation up to the reader/player.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Following James Paul Gee's suggested learning principle that videogames offer "Just-in-Time" learning (also from What Video Games Have to Teach Us...), each power-up is introduced immediately prior to the first level that it appears in:

I became aware of Seth Grahame-Smith's Pride and Prejudice and Zombies in September 2009, and it hit the nail on the head of what I was going for with the Alice in Bomberland action-literature mash up. Mashing classically cute characters with explosives worked very well for the character illustrations, and certain excerpts of text were equally successful using the same technique, including in-game story text for Alice, White Rabbit, Caterpillar, Cheshire Cat, and The Hatter, like this text from White Rabbit:
"Suddenly a White Rabbit actually TOOK A STICK OF DYNAMITE OUT OF ITS WAISTCOAT-POCKET, and looked at it, and then hurried on..."
...or this example from The Caterpillar:
Alice stretched herself up on tiptoe, and peeped over the edge of the mushroom, and her eyes met those of a large caterpillar sitting on the top with its arms folded, his long BazHookah quietly smoking, and taking not the smallest notice of her or of anything else. At last the Caterpillar blew the smoke from his BazHookah, and addressed Alice in a languid, sleepy voice...
Early in the game's story text, I added these explosives references more frequently. My hope in doing so was to lure the player into reading - or at least skimming - the game's story text. If the player has already read the original novels, there's still reason to read the story text: to find the changes. If the player has previously avoided reading the original novels, they also may find a spark of interest in browsing for the in-line changes. As the game goes on, the text has fewer and fewer modifications, until the player is (hopefully) reading the original versions of Carroll's Jabberwocky and Lobster Quadrille, and some of the original dialogue exchanges entirely as they were originally penned. Perhaps in some part of their mind, they're reading looking for bomb edits - and perhaps in another part of their mind, they've found themselves tricked into enjoying (or rereading) literature from the third quarter of the 19th century.
![]() Early in the game, the story text has weapons silliness mixed in, in much the same way that weapons were added in sharp contrast to the classical characters holding them. |
![]() For later levels, the silliness is just the original 1860's/1870's writing by Lewis Carroll, with only the minimal edits required to ensure it fit the space available on the screen. |
In April 2009, I wandered up a small mountain to visit a tree. I found the trip inspiring, and it motivated me to get back into writing aphorisms. Quotable lines quickly piled up. In August, I wanted another way to add value and distinction to each level. Reflecting on overproduction, and having my office one block from a Chinese restaurant, I realized that I could pick out the best and most fitting 48 to serve up like fortune cookies after each level. My friend and editor Sarah York helped me weed out the particularly negative, preachy, and banal ones, leaving behind some of my better aphorisms for use in the game as the final set of Thought Prizes.
Thought Prizes serve several functions. The offer intellectual perspective in a far less ambiguous way than the game mechanics - this at once ensures that (a.) every player, even if they aren't paying attention to the mechanics, will come away with some interesting thoughts, and also (b.) it attempts to hint to the player that there's something fundamentally deeper, something more, going on in the game than first impression reveals. It's at once a straightforward offering, and an effort to invite the player to tune in carefully for the less straightforward. The other purpose of Thought Prizes is to discreetly elevate the worth of these words. The typical trophy, ribbon, or medal is of very little inherent worth, but ascribed with value when earned, because ownership of it is a symbol of personal accomplishment. (The game's only indication that these words are my own, not Lewis Carroll's, is buried in the unlockable Developer Commentary. There's a decent chance that my Thought Prizes will find their way onto the internet as quotes "by Lewis Carroll".)
The placement of the Thought Prizes at the end of the round serves an important role in how they are received. The lines are presented after gameplay is over from the round, making it likely that the player is desiring a few seconds to rest before the next round. The Thought Prize is presented on the same screen as the end-of-round performance stats, which players like to read and reflect on (whether here, in online deathmatch, or laser tag), so there is reason to suspect that the player will be primed to pay attention to information on that screen. Lastly, this causes the player's view of thought prizes to be paced at least 30-60 seconds apart, one at a time, reducing the trivializing effect of skimming that is likely to occur when presented by a crowded quote collection.
There are 21 awards in Alice in Bomberland. These operate like Achievements - they recognize obscure and arbitrary player feats. Only 1 Award can be earned per round of play, and the earned awards accumulate on a separate Awards page off the game's main menu. The awards are named after other characters from the original novels.
Besides providing a way to include the remaining characters from the books, this feature is also in the game to promote gameplay experimentation - the awards titles are hidden until earned.
![]() The initial awards menu offers no clues. |
![]() The completed screen showing all awards. |
It's difficult, or perhaps impossible in present circumstances, to test whether this game has a positive effect on anyone's thinking, decision making, or problem solving ability.
I don't suspect that many players will read into this game's mechanics in the way that I intended. Whether positive effect is more likely to be had given a deliberate analysis by the player, or left up to subconscious influence, or in neither case, is another question left open.
People only spend $2 on this game. That's not much more than the cost of individually bottled water. Most people play it for anywhere from 5 minutes (if they don't like it) to at most a few days. Needless to say, no scholars are writing about this game, no classrooms are putting together lesson plans on it, and most player's responses have ranged from "that's really cute" to "how strange!"
Over in the Facebook fan page for Alice in Bomberland, which has 1,700 members at the time of this writing, a high school junior that I've never met posted, "I love this game". I've had much older people compliment the art and concept. Using the Facebook fan page as a sampling of the game's audience, it has been well received not only by a wide range of ages, and also fairly equally by players of both genders. To be fair, this is likely to be more a product of familiarity with Alice's Adventures in Wonderland, than an effect of the gameplay design.
This was but an early attempt at focusing on meaning through gameplay. In terms of projects that I have assembled, Alice in Bomberland feels far less confusing than the crude attempts at InteractionArtist.com (in particular: IsItVegan, BeeDifferent, TopograTouch, DoAsTold, Amor, Roots, VotingRight, and Empty), and less shallow than the tactless message delivery in SolarSFUN.com.
The completion of Alice in Bomberland has given me a concrete example that I can point to, and learn from, in future discussions about meaning through gameplay. Its existence enabled me to write this article, for you and others to read. Hopefully discussion of this work may help advance the conveyance of useful mental models through gameplay.
If someone does choose to read into Alice in Bomberland, much has been planted to be found. If players uncover the thought fragments that I put there deliberately: excellent! And, if players read something else from it entirely - as perhaps I did from the games I played, or as James Paul Gee did while preparing his book - then more power to them. If, at the end of the day, my effort to embed different ways of thinking into the game's design yielded little more than a greater variety of distinct gameplay challenges than the game would have included otherwise, which in turn led to a few more people enjoying Jabberwocky or silly things said by the White Queen, then perhaps some good has yet been done.
Lewis Carroll wrote the original books. John Tenniel drew the versions of the characters seen in the books. Sonic Boom published the game. These fine people did the art, audio, programming, design, and additional writing for Alice in Bomberland:

The original concept is my own. I also selected, directed, and compensated the other contributing developers. Here are the complete credits, as they appear in the game's menus.
At the very end of those complete credits, you'll see a dedication to MTJ. Fukio "MTJ" Mitsuji created Bubble Bobble, which has been my favorite videogame for the past 20 years. Fukio Mitsuji passed away December 11, 2008. In his memory, Alice in Bomberland has many allusions to Bubble Bobble:
|
Appendix C: Purchase Alice in Bomberland
> > View/Buy Alice in Bomberland via iTunes, for iPhone or iPod Touch < <
V.) Free E-Book: 10 Years of Indie Game Takeaways
In 2007, on my way out of Carnegie Mellon's Game Creation Society, I wrote The Young Videogame Developer's Journal as a way to leave behind some of the lessons that I learned from my previous decade of making homebrew videogames.
After finishing the first edition, I got feedback from peers, and things slowed down to a halt while I was preparing a second revamped and extended edition. A couple of years later - this past week - I realized that the old text in its unpublished state wasn't helping anyone, and that along the way, I've picked up an ongoing audience of readers that are into hobby videogame development. I decided to go ahead and share the previously unpublished first edition: It's free! Read: The Young Videogame Developer's Journal Please feel free to browse, print, share, and link to this e-book however you'd like. Interested in playing any of the games mentioned in that e-book, to put the text into context? Most of them are available at the Archives page at InteractionArtist.com. |
These Text Lessons are developed to help the community, and although I like writing them, making them can be very time consuming! If you find these lessons valuable, and can afford to make a small donation of $10.24, $13.37, or more to show your support, it would be greatly appreciated and help me continue setting aside the time needed to keep quality a priority in the text lessons. PayPal makes the transaction safe and simple - you don't even need to have a PayPal account if you have access to a credit card!
Chris DeLeon
PS I am writing this newsletter series to help people, and I want the contents to reach as many people as possible. Please pass along this link if you know someone that might find this useful: http://gamedevlessons.com/lessons/letter9.html Sending the link works better than copy/paste, since that way they'll see the latest updated version with Q&A or corrections.
PPS If you'd like to be kept up-to-date with these monthly mailings, simply subscribe to the GameDevLesson.com Text Lessons: http://gamedevlessons.com/?page=free