
| Link | Description | |
|
Galaxxon Legacy (OSX .dmg) Galaxxon Legacy (Windows .zip) |
Year: 2007-2009 Platform: C/C++ Mac OSX, Windows XP (KDE version originally developed, but is presently discontinued) - PowerPC or Intel processor (500MHz or higher recommended) - OpenGL graphics card capable of basic texturing (multitexture support recommended) - Audio hardware recommended Info: The year is 3107. Generations have passed since the Galaxxon Wars of the late 30th and early 31st centuries. Fact has grown into legend, legend has grown into myth, many tales have been handed down of the great air and space battles waged by enlisted pilots and freelancers, not to mention the Legendary Pilot who almost singlehandedly repelled two invasions and chased the Alien threat back to the Great Rift where they were sealed for many years. The current era of peace does not sit well with the youth who grew up to the stories of yesteryear and are itching for adventures and daring heroics of their own. Join the story of this new generation of pilots as they explore and expand the known universe and carry on the Galaxxon Legacy. Features: * Complete chains of plot-driven missions across a wide range of worlds! * Build your flagship into a unique and incredible fighting machine! * Amass and arm your own fleet with nearly any ship and weapon in the game! * Create your own ships, weapons and missions with easy ASCII editing! * Be blown away by parallax backgrounds and bump-mapped sprite graphics with environmental lighting! * Rock out to an original soundtrack rendered in real time by the proprietary chiptune audio core! What I did: Since my original partner, Matt Fister, dropped off development, I have touched nearly every part of the code. During original development, however, I was responsible for the basic engine / game mechanics, graphics, and pretty much everything connected to the menu system (including shopping, upgrades, save/load, mission hierarchy), and of course, the IP. Matt designed the mission code, enemy AI system and particle system. I have since integrated chiptune audio, revamped the particle system to handle a wider range of effects, and added a couple new AI and level features, plus a few more assets. As a final act on the project, I successfully resurrected the Windows build under Cygwin, which was an exercise in hating Windows, but needed to be done. |
|
| Galaxxon IV (Unreleased) |
Year: 2005 Platform: nbasic / Nintendo Entertainment System (emulator) Info: The aliens have been quiet. Too quiet. As Earth's greatest alien expert, not to mention grade-A pilot, it was your task to pass through the great rift, sealed for so many years behind a class 6 force field, and explore the aliens' home universe. What you find there, however, is enough to change humanity's very concept of the alien threat! Features: * Explore a vast, interconnected maze of subterranean caverns as you find your way ever nearer the alien military core! * Battle swarms of military drones and huge secret boss weapons! * Discover new technologies beyon Earth's wildest dreams and adapt them to your own use! * Meet and interact with a host of lifeforms from beyond the rift! What I did: Very little, I'm sad to say. The idea was for a hybrid side-scrolling shooter + search-and-explore. Something like Blaster Master or else Metroid meets R-Type. I spent a few weeks hacking away in nbasic trying to prototype an engine. I really wanted to try this on the NES, but for the volume of map data required for my concept, I would need a pretty snazzy compression scheme. What I got almost working was a routine which would take a binary array of tile 'solidity' data from memory and fill in the gaps, smooth the edges, etc. before rendering it algorithmically from a fixed tileset. Graphically the system worked wonderfully, however I couldn't quite get the visual output to line up with the mechanical level map, particularly after turning around and scrolling 'backwards' a ways, and ultimately decided it would be far easier to do the game justice on a platform where I wasn't having to work out brilliantly convoluted solutions to its most fundamental and mundane problems. The game is still on my backburner, indeed it very nearly became Legacy, and I may try it as a 3D PC/Mac sidescroller once I'm satisfied with Legacy. Addendum: After writing some NES demos in pure 6502 Assembly, I've pinned down some bugs in the NES assembler I was using for Galaxxon IV, notably in the left and right bitshift operations, which were a fundamental part of my map algorithm. Couple that with the fact that nbasic itself has some known flakyness and it could very well be that my algorithms themselves were quite sound, but weren't destined to work short of my embedding actual bytecode in from the start. And again, at this rate I'm more likely to reenvision the game in C++ or Actionscript than pick the nbasic source back up. |
|
| Galaxxon III (NES ROM + docs) |
Year: 2004 Platform: nbasic / Nintendo Entertainment System (emulator) Info: After confronting the vicious alien fleet twice, the Unified Countries of Earth decide to take the fight to them, liberating the worlds they have overrun and tracking down their home system to put an end to them permanently. To do so, Earth's greatest engineers construct a weapons system capable of eradicating a whole fleet at a time. The catch? It needs to be calibrated. To that end, you have been called back one last time to pilot your trusty GalaxTec Mk. 2 into the fray and stream back data. The fact that Earth isn't expecting you to handle the threat yourself, however, somehow fails to be reassuring as soon as you see what you're still up against... Features: * Visit 6 colorful and distinct worlds with original soundtracks! * Battle waves of up to 6 aliens at once. Be prepared for varieties you've never seen before! * Achieve up to 5 levels of power with a new upgradable blaster! * Race against the clock in a unique time-based level system! * See the MMC3 mapper pushed to its limit to deliver remarkable transparency and color blending effects! What I did: The works. Start to finish. In a half-semester. Kudos to Bob Rost for providing and teaching the nbasic and nesmus languages without which I wouldn't have had a clue where to begin. What I'm probably most proud of in Galaxxon III is the MMC3 graphics trick. By bank-switching part of the tile map every frame and creatively using the sprite masking flags I pulled off "transparency" and upwards of 10 perceived colors from a single 4-color palette. |
|
| Galaxxon II (zip'd Mac classic binary) |
Year: 2001 Platform: C++ MacOS Info: It's happening again. As you step into your brand new enhanced Mk. 2 GalaxTec fighter, you can't help but think back to the great Galaxxon wars of 2996. At least you now have the advantage of the InstaLock homing nuclear mine, a notable step up from the lately retired GalaxTec smart missile. The government is even letting you test a new, top-secret short-range teleport unit, should you find yourself stuck on an alien's windshield with an overheated cannon. You feel rather smug as you scream through the strasosphere. Then you see the aliens... Features: * Experience 50 levels of increasingly fast-paced shooter combat! * Utilize new technologies like the feintwarp and smart mine! * Play head-to-head against a friend as they take control of the kamikaze alien invaders! What I did: Everything. This is the first Galaxxon I made solo. The lack of quality is less to do with my lack of teammates and more to do with I had just learned OpenGL, and had started C++ only a year earier. |
|
Lost to the ravages of time and the inexorable march of technological progress. |
Year: 1996 Platform: LOGOWriter Info: Pilot your GalaxTec space fighter against wave after wave of invading alien! Features: * Enjoy limitless gameplay at ever-increasing difficulty! * Fight with standard blaster or intelligent homing missiles! * Experience the thrill of electronic gaming in COLOR (where available) and audio effects from your PC speaker! What I did: Honestly, I don't remember point by point. I worked on it with a friend at a summer camp between 5th and 6th grade, and we both had our hands in pretty much everything. It was agreed, however, that this was more my game, whereas others were more his game. |
|
| Link | Description | |
| Electric Storm Slots |
Year: 2009 Platform: Panda3D/Python + Flash AS3 Info: WMS Gaming next-gen video slots prototype. Features: * Game-reactive light symphony! * Eye-catching communal networked bonus event! * In-game tutorial! What I did: I was effectively lead programmer on this, my final ETC project. Out of respect for our client, WMS Gaming, I won't disclose too many technical details (although I still haven't signed anything forefeiting my rights on the project). My biggest contributions were writing the initial working reels (slots) mockup in AS3, implementing nearly all of the 3D communal top-screen scene and bonus event code in Panda, and doing a major streamlining and bugfix on the reels game at the end of the project. However, I also integrated ideas from the entire team and created what became the final project logo, created all the symbols and a collection of other 2D assets for the reels game and top-screen, helped construct and then single-handedly plumbed the electronics (1 server, 3 client PCs, 3 DMX dimmers, 23 light fixtures, 18 Phidgets I/O devices, 12 speakers and a network hub) on the team's physical slots-bank mockup, and composited the first and only video showing the physical cabinets, lights, and all game screens running in parallel. |
|
| Steam Roller |
Year: 2008 Platform: Panda3D/Python + Wiimote (Windows) Info: A 3D test of speed and navigational skill. Features: * Active Wiimote(TM)-driven gameplay! (where available) * Realistic 'driving' on terrain of all angles- even loops! * Adaptive sound effects! * Flexible/rearrangable segmented track implementation! What I did: This was the official TA 3D game project for the 2008 National High School Game Academy. I was the only programmer on the game, working with 2 3D modellers. Working from a vague concept given by the program director, we pinned down the game details and aesthetic. I then wrote the engine, mostly from scratch (Panda is giving me collision registration, but I take the physics from there) and adapted the Panda3D Wiimote interface I'd built for Classroom of the Future. I also ended up doing all sound effects for the game, as well as the various flats, font/display elements, title screen and skybox texture. It is possible to create a packaged installer for Panda3D games, but since this one has different operational modes (with vs without Wiimote) and relies on some external non-Panda background apps, I'm leaving it as a zip archive with teh various source and batch files eneded to run the game. The Panda3D engine required to run the game may be freely downloaded from panda3d.org. Wiimote functionality is contingent upon having a working Wiimote bluetooth setup. Various Bluetooth drivers exist, and compatibility is always fluctuating. I've had the best luck with certain older versions of BlueSoleil, but you'll likely need to google the current best solution. |
|
|
Year: 2007 Platform: Python/Panda3D Info: A series of virtual carnival shooting galleries wrapped in a physical Disney park ride. Features: * Ask Google. What I did: I signed a NDA, for one, so I can't say too much. I wrote some specialty audio code, helped with simulation and debug systems, and tweaked a couple bits of core content. Schell Games in general handled the bulk of the design and implementation and may or may not get / pass on clearance from Disney to say more. |
||
| Roto Ninja (QuickTime movie preview - 83.6MB)
If the movie does not work as-is, try downloading it in a zip file |
Year: 2007 Platform: C/C++ PC (KDE linux) Info: A classic ninja puzzle platformer with an unusual spin on gameplay. Features: * Run, jump, wall-grab and rotate the whole world to traverse a series of mazes! * Use your keen ninja senses to find nearby exits! * Design your own levels to share with friends! What I did: This game was a solo project for a Game Programming course- the same one Galaxxon Legacy was born in. The assignment was to take a standard ascii-based level file format containing a mix of walls, windows, floors, open squares, mild hazards, severe hazards, and stairs/doors to adjacent levels and make a game which parsed the level files and did something interesting with them. The general sense was that the level format was designed for FPS-type games, but I've never really been into FPS, so I got creative. Walls became blocks, floors became aesthetic walls, windows became aesthetic blocks, mild hazards became special regions that could not be jumped through or within, and severte hazards became kill traps. Part 2 of the assignment was to implement an A* search process. I didn't really want to bother with enemies since all my level collision code was pretty much hardcoded to be player-centric, so instead I implemented "ninja sense"- a flickering lightning trail which would, briefly, show the shortest clear path to the level exit. If you look closely, you'll also notice that I prototyped Galaxxon Legacy's bump-mapped sprite code on the various background textures in RotoNinja. I have since heard from other students taking the Game Programming class that the professor is still showing RotoNinja off as an example. |
|
If you have a Verilog simulator, let me know and I'll see if I can dig up the source. |
Year: 2006 Platform: Verilog, FPGA Info: The CPU of the NES, reproduced in Verilog and synthesized to a prototyping board. Features: * Cycle-accurate instruction handling * Interface with other NES components * The ability to run actual cartridge code What I did: This was my part of my ECE graduation capstone project. The entire project was to design or reproduce a hardware video game, likely at an '80s level of technological advancement. My group bit off a little more than we could chew- the whole NES on a protoboard- and very nearly made it. We certainly got farther than any other academic team in a single semester. My contribution was the CPU, designed to spec from the most detailed documentation I could find online. To be honest, I did not in fact write the ALU within the CPU, but having written numerous more complex ALUs for other chips in other classes, I used the ALU as an instructional tool for a team member who had never worked with Verilog, and between my suggestions ahead of time, my coaching during development, and my debugging of said team member's final module, the end result was just about as I would have implemented it. We did not have time to debug the final assembly of all components, but we were able to plug in actual NES cartridges and I verified that instructions were executing correctly to the extent of my understanding. Commercial games did not play on the final assembled system, my best guess is because the video chip was not holding the vblank interrupt line long enough for my CPU to see it. This is understandable- no documentation we found was quite clear on whether it was the video chip's responsibility to hold the line for 3 of its own cycles to make 1 of the CPU's cycles, or for the CPU to use special edge logic to latch a signal present for less than its half-cycle, but the logic required either way was going to be ugly by the time we recognized the problem. Since practically all NES timing is done based on the display framerate and vblank interupt, any game we tried quickly found its way into a wait loop which we had no designed way to break. |
|
| HexS (NES ROM + docs) |
Year: 2004 Platform: nbasic / Nintendo Entertainment System (emulator) Info: HexS is a strategic thinking game in the vein of Go, Othello and Checkers. Starting with a limited number of pieces, you must plan each move to capture as many of your opponant's pieces as possible while leaving your own pieces safe. Features: * Experience the game of strategic board conquest! * Pursue different strategies to yield infinite game variety! * Play alone against computerized AI, play against a friend, or watch 2 AIs duke it out! * Edit the board itself for over 4 septvigintillion possibilities! (that's 4 quattuordecillion for you Brits) What I did: I implemented HexS from the ground up. The gameplay, however, is almost straight from an old DOS shareware game 'Hexxagon' by Jason Blochowiak. I changed the endgame logic up a bit to make it easier for the NES to assess, and made the board editing more flexible just because I could. Once I'd converted the game's hexagonal grid to a rectangular memory array, I figured I might as well use all the screen realestate. The whole hexagon-to-rectangle thing also proved tricky for the graphics since the game is so color-sensitive but the NES assigns palettes in large rectangular blocks. If you look closely, you'll notice the corners of some border green/teal hex cels have a teensy bit of red/blue coloring, and that the hilight/shadow on the red and blue beads is actually green/teal once they're placed. Another tricky bit was making the AI for the game. The NES has barely enough memory to store one game state, let alone a large search tree. Thus, I make use of a shallow greedy algorithm trying every move the AI can find from the current state and choosing (theoretically) the one with the best pieces-gained to pieces-exposed ratio. There's a glitch somewhere which makes it unpredictable in even this simple decision, but it was still good enough to beat me a few times during development, so I left it. On another tech note, since the only good way to do timing in NES games is by framerate interrupt, I had to break up the AI search loops to distribute them across multiple calls so the vertical blank wouldn't kill the AI and it in turn wouldn't stall the framerate. |
|
| JDE core (.zip of .jar and assets) Won't be much use without Demo dances (.zip of dance directories) Or just try it! |
Year: 2003 Platform: Java (applet) Demo provided as-is and without warranty. It is known to have odd behavior such as continuing to play music long after being shut down. You have been warned! Info: A rough and crunchy DDR engine for Java. Intended for use on websites. Features: * Play DDR in your web browser! * Make your own tunes and dances to set up a JDE arcade of your own! What I did: I made this between the time I discovered DDR and the time I actually had a DDR rig of my own. Development kinda stopped once I got Playstation 2... Still, the game is playable if you can tolerate a few Java quirks (for instance, click outside the applet box and keypresses stop registering). I'd only had a little formal algo training at this point, so working out how to store the dance data, register timed hits, and not keep steps around hogging memory if the player missed them was challenging. This may be the only game I have made to date for which I designed a content editor (presently lost to posterity), since manually tapping in steps as the music plays is much easier than going through with a stopwatch and a microscope typing out ascii values. |
|
| TI RPG (.zip of TI Connect assets) |
Year: 2000 Platform: TI-83 calculator TI-83 Plus, Silver or later model strongly recommended for speed. Info: A semi-graphical Final Fantasy style RPG framework written completely in TI-83 BASIC. Features: * One of the only party-based RPGs for the TI-83! * Fully graphical battles, ASCII graphical maps! * Fits completely within the original TI-83 memory! * Written in TI-BASIC, not ASM, so it won't risk locking your entire system! * Included documentation so you can write your own content! What I did: I got bored on a family vacation abroad, so I started making an RPG. I got bored during pit orchestra rehearsals the following semester, so I finished it up. I'm proud to say that of the RPGs available for TI-83 back when I was working on this, my own cleanly trumps pretty much anything else I found, including many games written in TI-83 assembly language. Unlike numerous plot-based TI games, I use significant amounts of ASCII and bitmap art rather than relying solely on menus. Unlike even the best ASM games of the day, I support a full party of 4 characters chosen from 6 distinct classes. The one big downside is that the game runs SLOWLY. This is in large part due to the ways I found to encode and decode large binary arrays without access to any data format other than standard TI calculator floating point variables. Knowing what I know now about operation speeds, optimizing repeat actions, and stack management I could probably speed the code up substantially if I combed through all of it again. Unfortunately, there's so much code and data that if the game is run for too long, a TI OS/interpreter memory leak will cause the game to crash, and because of the constraints of the language that whole huge memory-filling codebase is a hodgepodge of completely uncommented conditionals, gotos, and unnamed variables, so I'm content to call the project dead. |
|
| Link | Description | |
| Mobius Strip |
Year: 2008 Platform: Irrlicht Engine C++ Info: It's a secret to everybody... Features: * Ask in 2013 What I did: This was my second full project with the ETC. Our client was Sharp Corporation; I was the producer on the team consisting of myself, a single 3D artist, a single sound engineer, and a single interface designer. Primarily, I served as lead programmer, learning the Irrlicht engine as I went. I was also the lead engineer, assistant interaction design, webmaster, campus IT, and assistant video tech. I was also starting my side-project Tekunoma as an elective. Unsurprisingly, this was the only semester during which I found myself devoting all of my cycles to academic work. |
|
| Mandelbrot Set (NES ROM + source) |
Year: 2008 Platform: 6502 ASM / Nintendo Entertainment System (emulator) Info: Take a point called Z in the complex plane and let Z1 be Z^2+C... Features: * Trippy colors! * For-real fractal rendering via quasi-direct-draw system! * A whopping 16+ bits of custom-coded mathemtical precision! * Bad-ass ****ing soundtrack remixed from Jonathan Coulton! What I did: I wrote this more or less just because I could. After listening to some Jonathan Coulton, I decided some of his tunes would sound really awesome remixed for NES. The obvious question is what to put in the background so it's not just a dead black screen with music. Mandelbrot Set gave some pretty explicit instructions, so I decided "Why not? I'm decent enough with digital math to hack 16-bit fractional complex algos on an 8-bit integer CPU!" About 5 evenings later, I had the fractal rendering. 3 more evenings and I had controls, palette cycling, a few minor efficiency tweaks, and the soundtrack. Of course, it's all about the soundtrack. The graphics just look pretty and don't interrupt ;) |
|
| Gray Box (NES ROM) |
Year: 2008 Platform: 6502 ASM / Nintendo Entertainment System (emulator) Info: Back in the 80s, Nintendo released a huge sucess... Features: * 8-bit nostalgia What I did: I decided that the NES dev scene needed a little fresh something in celebration of the Famicom's 25th anniversary. So here's to 25 years of the blinking gray screen of death! |
|
| chiptune (.zip of Intel & PPC command-line binaries with docs) |
Year: 2005-present Platform: C/C++ unix (most recent builds currently only available for OSX) Audio engine also available as a c++ library for other projects. Info: A simple PCM audio synthesis package designed to recreate the sound of the basic waveform audio chips in classic console games like the NES, GameBoy, GameGear and C64. Features: * ASCII parser for an arbitrary number of channels given as separate files * Rectangular, Triangular and Sine pulse waveforms, plus white noise and 16-step mock-triangle pulse * Volume, envelope, frequency sweep, and panning control, plus automated vibrato & tremolo * 8- or 16-bit PCM wav output * Ring modulation between arbitrary numbers of channels What I did: After being a game music enthusiast for many years, I took a student-taught course on NES game development and learned how exactly the NES pAPU sound chip worked. I was then inspired by Pixel-san's .org sound engine used in his Doukutsu Monogatari (Cave Story) PC platformer and available as a stand-alone player for Windows. I decided to create my own simple unix-based sound synthesis tool I could run under OSX and have been gradually fleshing it out ever since. After making it competent enough to create enjoyable music (versions 1.x), I ripped apart the old codebase and split it into an independent library and a CLI wrapper (versions 2.x). The chiptune audio library is currently being used in Galaxxon Legacy. |
|
| Raytracer Gallery |
Year: 2006 Platform: C/C++ Info: A Computer Graphics course ray-tracer which I put some extra effort into. Features: * n-bounce raycasting * transmissive/refractive material handling * anti-aliasing What I did: For the lab we were given just enough stub code to tie our hands as far as how we could implement the raytracer. We were required to do a basic recursive n-bounce raycaster that could output a jpeg, and encouraged to experiment with other more advanced concepts such as reflection, refraction, spatial partitioning and photon mapping. I put all my extra effort into accurate reflection/refraction/transmission modeling, including going back after the project was over to tune a couple equations based on my old high school physics/optics notes. I have also added anti-aliasing since the course ended. If I ever revive the code on my new laptop, I'll probably try to make it multithreaded and possibly add photon mapping / caustics. While I understand spatial partitioning at a concept level and can see how it greatly improves efficiency, I'm not sure I grasp how to implement it without doing more calculations to determine where geometry lies than I gain back by not checking all geometry during casting. |