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.



I.) Past Editions, Subscribe

II.) Beginner - Programming Asteroids

Example Game Source

Compiling on PC/Windows

Compiling on a Mac

Compiling on Linux


III.) Intermediate - Particle Effects Code

What are Particle Effects?

Benefits of a Fixed-Size Array

Code, Applied to Asteroids Source

Modified Source


IV.) Advanced - On the Meaning of Alice in Bomberland

Accidentally Learning from Accidental Teachers

Edutainment

Activity Learning

Mental Models are Metaphors (That's a Metaphor)

Learning from Experience

The Compromise

Keeping the Player Playing

Why Alice's Adventures in Wonderland

Introduction to Alice in Bomberland

Symbolism

Item: Lost Page

Alice

White Rabbit

The BazHookah Smoking Caterpillar

The Cheshire Cat

The Hatter

The Queen of Hearts

Humpty Dumpty

The White Queen

The Red King

Contradictions as Options

Playing the Odds

Item: Read Ahead

Other Power-ups

Story Juxtapositions

Thought Prizes

Awards for Experimentation

Back to Reality

Conclusion

Appendix A: Credits

Appendix B: Dedication to MTJ

Appendix C: Purchase Alice in Bomberland


V.) Free E-Book: 10 Years of Indie Game Takeaways


VI.) Donations



I.) Past Editions, Subscribe


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


Example Game Source


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.


Compiling on PC/Windows


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.


Compiling on a Mac


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.


Compiling on Linux


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


What are Particle Effects?


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:

  • Particles don't influence gameplay. They don't knock things over, respond to being stepped on by enemies, or inflict damage. A game that has particle effects, generally speaking, would play out exactly the same without the particle effects.

  • The game needs to move and draw many particles at once. Dozens or even hundreds of particles may be constantly present - perhaps as rocket thrust, boat wake, or damage smoke - and during intense action the game may need to handle many thousands of particles. This means they must be small in memory and require minimal processing.

  • Particle effects are dynamic. Particles spin, rotate, fade, bounce, drift, fall, and sometimes even produce sounds (when they start, fizzle out, or hit the ground).

  • The number of particles must be limited to protect the game's framerate. Drawing and moving thousands of particles every second can pose a serious risk to game performance.

  • Particles spawn with some randomness. Because many particles can be spawned from a single event, introducing slight randomness into the initial location, velocity, and lifetime avoids particles overlapping one another, increasing the odds that each one using processing and rendering time gets seen.

  • Particles only last a few seconds. What makes particles exciting is their movement. Once the particle's action is complete it needs to be made available for a future effect.


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?

  • Arrays are extremely fast to access.

  • Arrays avoid overhead from memory allocation or deallocation, and in so doing also avoid cumulative memory fragmentation.

  • The usual downside to using fixed-size arrays - that they have a maximum number of elements allowed at once - is desirable for particle effects! This ensures the number of particle effects are kept within a sane limit.


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.


Modified Source


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.

Edutainment


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).

Brain Games


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."

Activity Learning


"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.

Learning from Experience


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.

The Compromise


Rather than...

  • ...simply make a fun game then hope someone smart learns from it, or...

  • ...build a reaction-time trainer, or...

  • ...make software to emulate the functionality of a book or lecture, or...

  • ...facilitate brief group activities as a way to make a moral memorable, or...

  • ...presume that we can declare success simply by connecting a metaphor between gameplay and experience...

...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.

Keeping the Player Playing


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).

Symbolism


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)



(2.) A threat that provides inadequate warning must be handled as an imminent threat.
(3.) A break from pressures should not also be a break from working on your goals - that's the best and easiest time to work on them!
White Rabbit


Weapon:
Dynamite Sticks
Weapon Effect:
Floats in from left or right side of level. Pulses moments before it explodes. Also detonates on contact.
Weapon Symbolizes:
Prudence.Though the explosive pulses moments before it explodes, the warning time is not enough for Alice to wait for flashes before dodging. (2)







Item:
Pocketwatch
Item Effect:
Pauses all bombs in time for several seconds, allowing Alice to fall safely past.
Item Symbolizes:
Rest. Although the bombs halt, the power-ups (which Alice requires to proceed) continue to appear. (3)



(4.) If you wait to react, you won't have time to. (Get health insurance. Drive defensively.)
(5.) The joy and magnetism of beauty is not an arbitrary waste - going after it leads us to more efficient and successful behaviors.
The BazHookah Smoking Caterpillar


Weapon:
BazHookah - fires Rocket Propelled Grenades
Weapon Effect:
Streaks in quickly from left, right, or top of level. Detonates on contact with either Alice or the ground, causing a medium explosion.
Weapon Symbolizes:
Anticipation. Especially in the later levels, the rockets move too quickly to be dodged. If Alice lets a rocket catch her flatfooted on the ground, it's already too late. (4)




Item:
Visions Hookah
Item Effect:
Messes up Alice's vision.
Item Symbolizes:
Aesthetics. The visual effect makes it harder for Alice to achieve her goals, yet most players enjoy getting this item. Secretly: the way that a player moves during low visibility - constantly and semi-randomly - is also the best way to dodge the BazHookah rockets. (5)



(6.) Action must be followed with readiness for reaction; taking action exposes new vulnerability.
(7.) The opportunities available to us now will enable us to reach more opportunities later if taken, but they'll pass us by if ignored.
The Cheshire Cat


Weapon:
Plane Bombs
Weapon Effect:
Tumbles in from the top of the screen, gaining speed as it straightens toward the ground. Creates a medium-sized explosion upon hitting either Alice or the ground.
Weapon Symbolizes:
Adaptability. The medium explosions from ground collisions make being up the air safest, but with new bombs pouring in from the top, Alice often needs to dodge laterally. (6)





Item:
Invisibility Grin
Item Effect:
Causes Alice to flash for several seconds, during which bombs and explosions cannot harm her.
Item Symbolizes:
Opportunity. Take it the moment you can. It won't wait for you (the item vanishes). If you don't use it now you may no longer be around to use it later. (7)



(8.) We must take care when dealing with things, that we do not turn little problems into big ones.
(9.) Going faster is not always better. Our first desire may be wrong. Outside aid cannot take the place of practice.
The Hatter


Weapon:
Dynamite Bundles
Weapon Effect:
Comes in on a wire from the left or right edge, stops for a second, pulses, then releases a huge explosion. Bundles also detonate on contact.
Weapon Symbolizes:
Grace. Although the explosions are huge, their timing is revealed when the bundle halts in its final position. Hatter levels involve careful maneuvering through space, moving away from imminent explosions but without bumping other bundles. (8)




Item:
Mad Tea
Item Effect:
Causes Alice to move fast for 10-15 seconds.
Item Symbolizes:
Haste. The rash desire is to be able to move away from pulsing bundles faster. This power-up grants that wish, demonstrating that it is not greater speed needed (this leads to hitting more bundles), but more practice. (9)



(10.) Panicking out doesn't help in a hectic situation - keeping calm does. When faced with madness, focused action will get through it.
(11.) Take on tasks in batch to improve efficiency. Time efforts to have the greatest impact.
The Queen of Hearts


Weapon:
Wild Shells
Weapon Effect:
Enters from left, right, or top edge, going in any direction, abruptly changing direction every 1-2 seconds. These detonate after a brief timer, or on contact, and instantly burst other Wild Shells in their range.
Weapon Symbolizes:
Composure. Other weapons encourage spending a lot of time in the air - but the unpredictability of these bombs makes it safer to walk along the ground between power-ups. The gameplay rewards "calming down" even though the frenetic music, action, bursts, and threatening character all suggest panic. (10)



Item:
Ace of Hearts
Item Effect:
Detonates every visible bomb currently in the level, awarding points for each.
Item Symbolizes:
Cleanliness. Letting things accumulate between cleaning is most efficient. (11)



(12.) It's easier to shift ongoing momentum in your favor than to create new momentum.
(13.) As the old saying goes, "You have to spend money to make money."
Humpty Dumpty


Weapon:
Hand Grenades
Weapon Effect:
Appears for one moment, bounces toward where Alice is, detonates into a medium-sized shrapnel blast on a timer. Contact with Alice does not prematurely set off the explosion.
Weapon Symbolizes:
Misdirection. The bombs favor targeting where Alice last was - Alice needs to keep moving. (12)
Item:
Egg Shells
Item Effect:
Alice loses 1000 points. Although not explicitly stated in the game's description of this item, collecting it causes the next item to appear almost instantly.
Item Symbolizes:
Skepticism. The game warns against collecting these, both verbally, and through direct gameplay cues since they cause a loss of points. A player willing to experiment with defying the seemingly right strategy will realize there is a tradeoff to be made between points vs time, and that time is often worth the temporary setback of points. (13)



(14.) Being in the wrong place at the right time or the right place at the wrong time is just as bad as being in the wrong place at the wrong time.
(15.) Getting something too early can be devastating. Value depends on timing and context.
The White Queen


Weapon:
Flamethrowers
Weapon Effect:
Flamethrower nozzle appears along any edge, where a red light flashes for a couple of seconds, then flame erupts outward.
Weapon Symbolizes:
Timing. There is no contact detonation, it has consistent timing, and predictable dimensions. Success requires getting to the right place at the right time. (14)



Item:
Looking Glass
Item Effect:
The world flips to a mirror image, and the timer on Alice's bomb vest runs backwards, blowing up Alice if it returns to its starting position. This power-up's effect lasts until another Looking Glass is picked up.
Item Symbolizes:
Planning. Because this power-up reverses Alice's Bomb Vest (gameplay timer), getting it early in the round makes time short, whereas getting it at the last second can double, triple, or quadruple the player's time. (15)



(16.) Bosses may not follow the rules. A leader is as capable as their helpers. Some dangers cannot be softened, only avoided. Success requires risk.
(17.) Sometimes there's a way to win by playing a very different way.
The Red King


Weapon:
Red Rockets
Weapon Effect:
Flies down from the top of the screen. Upon touching Alice, every bomb explodes and Alice dies. This is the only weapon that disregards whether Alice recently took damage, or currently has a protective item. Bombs of other characters appear randomly in Red King levels.
Weapon Symbolizes:
Bravery. This weapon is fast and devastating. The higher the player floats toward the top edge, the greater the chance is that Alice will die instantly. (16)


Item:
Alice Doll
Item Effect:
Alice regains (heals) 1 heart of health.
Item Symbolizes:
Prioritization. Collecting these during the match can offset the damage Alice receives from the weapons other than the Red Rockets. This enables the player to change their focus from "dodge every bomb type" to "collect Alice dolls and dodge Red Rockets". (17)


Contradictions as Options


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.

Playing the Odds


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.

Other Power-ups


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:



Story Juxtapositions


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.


Thought Prizes


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.

Awards for Experimentation


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.


Back to Reality


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.

Conclusion


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.


Appendix A: Credits


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.

Appendix B: Dedication to MTJ


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:

  • Mad Tea - this has the same function as the Red Shoe power-up from Bubble Bobble. It makes Alice move very quickly, even increasing the effect of gravity on her, as if she were simply been seen in fast forward (as opposed to moving with greater force). Its intended message about haste is borrowed from what I learned by the Red Shoe power-up in Bubble Bobble.


  • Infinite Jump - this visually resembles the Red Shoe power-up from Bubble Bobble. This was partly serendipitous, as when the game's animator David Hellman was re-visualizing the Alice portrait Mark Meyers had drawn, he opted to give her red shoes so that her feet movements were easier to see (Alice still wears blue shoes in the illustration, but red shoes in the game). When designing the power-ups, the Red Shoe made for a fine symbol for the Infinite Jump, and another opportunity to remember Bubble Bobble.


  • Magic Heart - visually and functionally mirroring the power-up from Bubble Bobble, the Magic Heart is close to a complete carry over, albeit Alice in Bomberland has weapons in place of enemies. Note that the original "flashing Chack'n Heart" power-up contained a silhouette of Chak from an earlier predecessor to Bubble Bobble (called Chack'n Pop), whereas my version has a silhouette of Big Mama from iZombie: Death March, an iPhone game I previously developed for the same publisher. All of the art in iZombie: Death March - including Big Mama's head - was made by John Nesky, the artist that also did the final, cleaned up versions of Alice in Bomberland's in-game power-up art.


  • Read Ahead - inspired by Umbrella power-up, which gave players an immediate change of setting by skipping several levels the moment it was collected. I wished to emulate that "get out of danger" power, and Alice in Bomberland's low-memory environments enabled seamless, instant swapping between level styles.


  • Letter collection - these are collected to spell out words. In Bubble Bobble, spelling EXTEND earned an extra life and a celebratory screen. In Alice in Bomberland, the player can spell out LEWIS CARROLL and ALICE LIDDELL to unlock bonus content.


  • "Point Poppers" - the floating point indicators, a concept that I also borrowed for my earlier iPhone work Topple for publisher ngMoco in 2008, are a great way to ensure that players notice what various game events do to the score. I don't think Bubble Bobble invented this technique (lots of old arcade games employed it), but Bubble Bobble is where I first came to appreciate the effect that it had on my gameplay choices.

  • Unlimited retries and short level times were both inspired by Bubble Bobble. These qualities make it possible to retry a level many times in many different ways to test different strategies.

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.


VI.) Donations


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

chris@gamedevlessons.com


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