BackgroundI began developing games in the early 90's, starting with simple B&W HyperCard adventures and WorldBuilder games (greatly inspired by games like the Ray's Maze Adventures) and eventually graduating to more powerful tools such as SuperCard, FutureBasic II, and RealBasic. Eventually I taught myself C & Objective-C, and these days I'm typically using Objective-C and frameworks like SpriteKit for iOS and OS X development.
Along with coding, I've always found the artistic and storytelling aspects of game development particularly interesting, and I enjoy creating the graphics and writing the dialogue / game narration.
You can read about my most recent projects (finished and unfinished) below. As a lifelong Apple user, Mac game development has always been a hobby of mine. I'm a fan of local meetups like Portland's PIGSquad and participate in Apple-specific game dev communities like iDevGames.
Dust is a post-apocalyptic role-playing / adventure game, where Oregon Trail-like travel mechanics meet oldschool turn-based combat in a Fallout-esque world. One of my main goals is to incorporate strong strategic environmental elements. Weather, time of day, food / water rationing, travel risks play a huge part of successfully navigating the world. Combined with this are many traditional RPG elements: turn-based tactical combat, experience-based leveling system, and heavy emphasis on item/equipment management. The game is being developed with Objective-C and SpriteKit.
One of the most fun aspects of developing Dust so far has been leveraging SpriteKit's built-in particle effects via SKEmitterNode to create the various environmental and weather effects in the game. A few of these (sandstorms, rain, snow) can be seen in the preview video above, and in particular the sandstorm effect is shown in a bit more detail below. All of these were created very trivially using Xcode's particle node editor.
ZeroZero was less of an actual game project and more of a fun attempt to prototype a spacey/Sci-Fi RPG akin to Escape Velocity using Objective-C and SpriteKit. Although I ran into a couple hurdles attempting to make SKEmitterNode work the way I wanted for some of the effects (particularly the ship thrusters) I eventually got a fairly convincing build up and running, featuring parallax scrolling, ships, and some fun enemey flight AI.
The video below shows a few clips from the prototype. (Note: although the framerate is jittery it is the result of the screen recording software, not SpriteKit or the game itself).
Zero has basically been shelved permanently, although I'd really enjoy working on a game of this type all the way to completion it's unlikely to be picked up again anytime soon.
Custom ToolsI've built a number of custom tools and game development frameworks / engines which are in various stages of completion. The most significant was BravoSprites, which was developed prior to the release of Apple's SpriteKit and provided a foundation upon which 2D games could be rapidly developed for the Mac.
BravoSprites began around 2009 as the backbone for a game called MechMarine. The earliest iterations of it were based on code written for Mega BrickBash 3000. It was written entirely from scratch in C and Objective-C and shared a number of similarities with frameworks such as Cocos2D. The video below shows BravoSprites in use in MechMarine.
Features of BravoSprites:
- Fast & flexible object-oriented sprites with dynamic layering, rotation, translation, tinting, alpha, shading, and various other special effects
- Integrated Chipmunks physics engine and built-in collision detection
- "Director actions": queueable, groupable actions make it easy to direct sprites in your game in real-time
- Window & UI system: layered windows that can be move, dragged, minimized, and fully contain their own set of sprites, making it easy to craft an entire custom UI if needed in your game
- Particles: smoke, fire, sparks, etc.
- Easy graphical text input and display with custom textured fonts and text-based sprites
- Sound effect playback through OpenAL
- Hardware-independent keyboard and mouse input
- Timed events
- Deformable terrain and sprites
This video demonstrates a WYSIWYG level editor built with BravoSprites, with an interactive console, terrain creation, sprite creation, and instant play testing.
With the release of frameworks like SpriteKit there's now much less of a need for BravoSprites, and as such development on it has ceased, although portions of the codebase are still in use in several projects, such as Dust.
PublishedI've published a number of indie games over the years, especially in the 90s, though most of these are now lost in the sands of time. My most recent games were Rogue Assassin and Mega BrickBash 3000. Mega BrickBash 3000 was released under the BravoBug Software moniker and was a featured listing on MacUpdate and Apple.com.
Mega BrickBash 3000Mega BrickBash 3000 was a breakout clone that featured weapons, power-ups (like lasers, nukes, and rocket launchers) and a number of interesting brick types. It also came bundled with a free level editor that allowed users to create their own level packs. The graphic and sound engines for this game were written from scratch in C and Objective-C and later served as the foundation for BravoSprites.
Rogue AssassinRogue Assassin began as a prototype of a stealth mechanic in which the player's footsteps emitted visible sound waves which deflected off of nearby obstacles. It continued to grow in scope until it was released in the macOS and iOS app stores. Like MBB3k, the macOS version also featured a built-in level editor to allow players to create and play their own levels.
SimonSezSimonSez was an iOS-based memory game that I released in 2009. It featured simple / addictive gameplay that was a throwback to the original Simon, colorful graphics, and a number of sound options for the button sequences. It was the only iOS game published by BravoBug.
Mini-gamesOver the years I've made a number of short game titles, mostly for friends and coworkers around the holidays or just for fun. (While these weren't "published" in the traditional sense, they are completed projects that had actual players :-) Several of the games here use BravoSprites under the hood.
Wild West - A western adventure oriented around dialogue-based choices that enhanced or diminished the player's reputation with various characters and factions in the fictitious town of Goldspirit. The game also featured an experience-based shooting and dueling system for when dialogue was not enough.
Shark Hunter - Inspired by the NES game Jaws, featuring an overhead view for tracking the killer shark in your speed boat, and a side view for diving into the waters to collect conch shells and eventually face the shark itself.
Small Society Xmas - Created for my coworkers at Small Society during the holiday season of 2010, this game featured a Doom-esque shootdown of Santa's sleigh and a present at the end. Don't worry, the bullets are rubber and no reindeer were harmed in the making of this app.
Small Society Fourth - This game was made for Small Society for the 4th of July, 2011. Players must use their innocuous ATF-approved fireworks to down enemy fighter planes to save America. The original version featured a 600ft David Lee Roth who rose up over the Portland city skyline upon victory.
Small Society Halloween - Another holiday game, this one was a very fast-paced side scroller in which the player was asked to help little Billy avoid evil jack-o-lanterns, ghouls, and cracks in the sidewalk while keeping his flashlight charged and his blood-sugar level high with candy.
Adventures of Petey - This game began as a joke in IRC which snowballed until it had become a finished app. Petey is an aspiring Mac developer who recently quit his day job to start his own company: Petey Software. You must help Petey brainstorm for ideas, study APIs, practice design, and write code to create his apps - before he goes bankrupt!
A faux Mail client provides feedback from Petey's users, spam, and occasional emails from other recognizable characters such as Wil Shipley, Aaron Hillegass, the guys at Panic, and the Cocoa-Dev list.
Old ProjectsOver the years I've accumulated quite a graveyard of unfinished game projects. Many of these were quick prototypes or just exciting ideas that wound up taking more time or energy than I was willing to commit. A few were much more ambitious projects that were taken to relatively mature stages of near-completion.
BrimstoneBrimstone was a classic-style 2D fantasy RPG designed in the tradition of games such as Exile and Realmz (and predecessors such as Ultima). It was in the making for about two years and was close to completion when it was sidelined. At this point it is unlikely that the game will be finished, although the project may be released as open source since the game itself features a number of things that would be of interest to budding 2D Mac game developers, including:
- A massive open-ended world that changes with time, weather, and light conditions
- A bundled editor for map zones, game content, character dialogue, items, monsters, etc.
- Intelligent combat system with pathfinding NPCs who can form alliances, ally with the player, and have tactical combat style preferences