Sam Johnson

Game Developer

"What I cannot create, I do not understand."

-Richard Feynman

Hi! My name is Sam. I'm a programmer and an indie game developer.

I want to work for you! I currently live in Boulder, Colorado, but I am willing to relocate.

Portfolio

I'm working on a fantasy action RPG called Shattered Lords. It's about uncovering the mysteries of a long dead crystal kingdom, overcoming madness, and surviving in the face of all odds. Check out the latest development video:

I built its engine from scratch, with Java and OpenGL. I also did all the animation and modeling myself, in Blender.

Over the past few years, I've written a very complete game library in Java. It forms the backbone of Shattered Lords; and handles math, physics, animation, model loading, sound, window creation, and more. It's open source!

Browse DevilUtil on GitHub

Skills

Having built my own engine, I have a thorough understanding of game programming. I've written systems ranging from collision detection to skeletal animation; optimized and tested them; and weaved them together into a cohesive, modular whole.

My language of choice is Java; but I know C++, Python, Javascript, and Lua; and I'm always willing to learn.

I have a passion for, and deep familiarity with graphics hardware and APIs, especially OpenGL. I'm obsessed with physically based rendering. For the ultra nerdy, here's a list of each graphics algorithm I personally implemented, just for Shattered Lords.

  • Cascaded Shadow Maps
  • Horizon-Based Ambient Occlusion
  • Anamorphic Bloom
  • Screen-Space Reflections
  • Reconstruction Motion Blur
  • Dithering
  • Tonemapping
  • Fast Approximate Anti-Aliasing

I routinely write development tools to make it possible to create games. Whether the need is rendering cubemaps, computing bounding volume hierarchies, or converting assets; I'll make it automatic and convenient.

Also, I love version control, and use it religiously—I use Git, and I've used Mercurial and SVN before.

So often, games are all about simulation! In that vein, I am well versed in physics, optics, and more. Perhaps my astronomy knowledge could beef up your space game. Maybe you need a realistic model of atmospheric scattering... for your space game! Or maybe some special relativity will give you that edge in the highly competitive SPACE GAME market. I LIKE SPACE.

The flip side of science is math. I have extensive knowledge in linear algebra, numerical analysis, geometry, and a dash of calculus.

I can set your world in motion. I have tons of practice making game animations in Blender. I've also used 3ds Max. My technical knowledge complements this skill nicely. I can make the animations; write the tools to convert and process them; and write the engine that blends, plays, and renders them.

I made this website! Good design makes me very happy, and this passion rounds me out as a developer. I'm very experienced with Photoshop, HTML5, and CSS. Programmer art doesn't always have to be bad!

Personality

I will not stop until it works. At the end of the day, this is the quality you're really looking for. When it matters, I am someone who does not give up. Ever.


I will learn whatever it takes. That includes new languages, APIs, tools, or even entire crafts. I will consistently go outside my comfort zone in order to deliver results.


I will treat my work as art. I won't take shortcuts because I'm a perfectionist. This isn't always a good thing—sometimes I keep working on something when others would rightfully call it finished. Of course, quality takes time.


Below you can find my resume and my GitHub page.

Feel free to shoot me an email:

sam@samrj.com