Lewis the Robot

Version 0.1, alpha demo
March 2003

Version 0.1

If you like this demo, check out my resume.

Current Premise

Lewis the Robotic Photographer has gone haywire and entered "Kill All Humans" mode. He is equipped with a pistol, a shotgun, a laser gun, a camera flash, and numerous sonar sensors. Evil Lewis clones and large green alien bugs are trying to attack him. Fortunately for the humans, they haven't discovered this game world yet.

This game is a copy cat of Crimsonland. I have re-created everything from scratch, including all sound effects and graphics. Using this as a basis for the game design has allowed work to progress at a brisk pace, as no game design issues need to be solved.


Control Lewis with your left hand on the A, S, D, and W keys. Aim and fire the weapons with your right hand on the mouse.


The only libraries used in the production of Lewis the Robot are:

mpg123 - mp3 playback, required significant interface/buffer management code.
freetype2 - OpenGL font library for rendering anti-aliased TrueType fonts
OpenGL - for graphics
DirectSound - for sound
Win32 - for windowing and messaging system, user input, system stuff

All other code was created from scratch using Visual C++ 6.0 in the span of a few months, working in my free time. It was developed on two machines:

P4 2Ghz, 1GB ram, GeForce2 video, Windows 2000
P3 450Mhz, 256MB ram, Matrox G400, Windows 2000 - runs at acceptable 20-30 fps

Lewis the Robot has not been extensively tested on other operating systems or video cards. Use at own risk.

Known issues: game over on Windows XP machine seems to crash.

Future Premise

Lewis the Robotic Photographer has been assigned to work at an office party. His job is to snap quality photos of the people there. Unfortunately, many attendees are shy and do not want their picture taken; they will run and hide from Lewis. Others are flamboyantly persistent in always jumping in front of the camera. And at any office party, there is always the loud drunk guy who stumbles around, disrupts peaceful discussions, and makes a fool of himself; who wants hundreds of photos of this guy?

Lewis must attempt to take a well-balanced mix of photos of the attendees; the photos must be well-composed (rule of thirds, etc), the subjects should be looking AT the camera, and the lighting should be pleasing. Essentially, his score is based on following generally accepted snapshot rules.

In addition to his camera and flash, Lewis will be able to acquire additional items to aid him, including a laser range-finder, upgraded motors, improved navigation systems, humanoid parts (to make him more approachable), a water sprayer (for herding people), and many others.

The player must navigate Lewis within the party and snap photos. These will be briefly displayed and automatically scored. The objective is to achieve a high score before the party ends.

A Note on the Source Code

Included in the distribution is the entire source code to Lewis, minus a library or two. This is production code. That means I need to clean it up a bit and document it a bit more, but this probably stems more from my perfectionist tendencies than an actual need.

Is the code C or C++? Well, it's predominantly C with a few C++ things thrown in, such as mid-function variable declarations. I chose this design because it is quicker and simpler than using strong OOP principles. This is a small, quick, dirty game demo after all. My last game, Bytor, got bogged down in over-complex OO design, so this game demo is somewhat of a reaction to that experience. The extensive use of globals in Lewis works beautifully, believe it or not. A little inheritance and polymorphism would have been nice, but I decided to stick with the C style, mostly as a programming exercise. Fun fun.


(c) 2003 Big Green Ball Software / Kevin Goodier