A 2d side-scrolling physics-based game which I never finished. It no longer even compiles, because it
depends on pre-C++0x11 tr1 libraries. I plan on attacking it and getting it running again, because
it's too neat to let succomb to bitrot.
Destructible terrain, where cut-off geometry is dynamic, and part of gameplay
SVG-based geometry representation of monsters, game items, and player, allowing me to design
them in Illustrator
SGF / SRE
SimpleGameFramework & SimpleRenderingEngine: 3D Game framework written between 2007 and 2010.
Written from ground-up ( as-in, I started with an
empty project, and wrote it all myself) in C++ and some ObjectiveC, and with rendering in
Physics, using the OpenDynamicsEngine and Bullet, as pluggable modules
Shadow mapping for directional (using CSM), point and spot lights (using depth cubemaps), with
culling of light volumes
Quirky materials framework
Voxel-based terrain, editable in real-time, with Lindstrom-Turk edge-collapse mesh optimization,
uzing the CGAL library.
Threaded Python scripting for the physics system - mainly used to make autonomous robotics
simulations that can query their environment and send commands to servos/motors/actuators/etc
Automatic environmental greebling details like grass, decals, etc using 3d perlin noise to keep
Automatic monster spawning based on the capabilities of the player
Cute pixelated graphics
APCO Champion Brand
A very illustrative site, whimsical and fun. The build uses a dynamic tiled background (approx 130
tiles), panning across a large spatial map, loading tiles on-demand using a visibility-based
priority queue. Building the site required me to write a tiling tool in C++, a simple
google-maps-like tiling engine, and a smoothing vector path traversing system. And the site's fully
responsive, to boot!
CNL Securities app (Android, iOS)
Mobile app developed for CNL Securities, providing full access to their content. I was responsible for design, UX and implementation.
Appropriate UI for phones and tablets
Briefcase functionality for offline content access
Shopping-cart-like functionality for ordering print copies of articles
User interface design, prototyping & programming, user experience design
Real-time graphics programming
Basic AI (game entity control, behavioral systems, flocking, etc: not high level intelligence stuff which is completely beyond me)
1995-1999:Bachelor's in art,
printmaking (intaglio,lithography) & painting at the University of Virginia.
1997-1999:Graphic designer, UI designer, & UI programmer, University of Virginia, Darden School of Business.Responsible
for designing and building educational tools in Macromedia Flash & Director.
1999-2016:Art Director & Client-side/Interaction programmer, mobile application developer, APCO Worldwide.Designer
and implementer of client side user experience for websites, mobile apps, and so on.
1990-1999:Learning to program and getting hooked on graphics programming.Wrote
a simple software 3D graphics rasterizer in C/C++, supporting texture mapping, depth buffer, and simple
gouraud shading — this was a great exercise in learning
fast integer math. Wrote several experimental user-interfaces in Java, to make various day to day
like file browsing and designing finite state machines more intuitive.
1999-2004:Wrote a primitive robotics simulation toolkit.I got
very interested in behavioral
artificial intelligence and decided to build a toolkit for hosting and testing autonomous agents. It
was a fun sandbox! Plus, I got hooked on OpenGL.
2004-2010:Wrote several 3D game engines.Robotic
simulation required visualization, and that spun into writing 3 different (and increasingly capable) 3D
game "engines" with physics, scripting, and so on. They never came to anything really, but were a
tremendous learning experience, making me a better programmer.
2010-2013:Development of side-scrolling action game "Surfacer".While
riding my bike to work one day I had an epiphany about destructible verlet-integrated meshes for game
It was a total dead end! But it led to a concept for a side-scrolling 2D game where
the character must reshape the environment, making new dynamic shapes, to solve spacial puzzles. Plus, I
got to write a 2d version of the marching cubes alrgorithm.