Ian Ooi

Computer Science · Game Design


About Me

I am a game designer, computer scientist, and game developer, with a fondness for both the realistic and abstract visuals that can be produced by computers. I recently completed my Master's thesis in Computer Science at Rensselaer Polytechnic Institute as part of the co-terminal program, a 4+1 bachelors and masters program. My undergraduate degree is in Computer Science with a dual major in Games and Simulation Arts and Sciences. My research focused on physics-based animation of a humanoid character, as described in more detail here. Other areas of interest include non-photorealistic rendering, realistic lighting techniques, landscape and city generation, participating media, and hardware acceleration of graphics techniques.

Game Design

My game design interests are varied, but I tend to create games with short storylines that incorporate an interesting visual effect, usually with puzzle-based or competitive games with very little story. I enjoy incorporating non-photorealistic techniques into games, such as the watercolor effect used in Mar. In past situations, given a game project to be completed, I have found a way to make the project something I enjoy and will be proud of, whether the genre, style, or type of game is something I normally play or not. One of my ambitions is to create an MMORPG, though I also aspire to work on a competitive game and short story based titles.

Outside of Work

Outside of work I am an avid martial artist and have practiced Tae Kwon Do, Eskrima, and most recently Capeoira. Additionally I amuse myself with origami, playing music on flute and piano, and fiddling with various code projects. I am also a gamer, playing League of Legends consistently, though I have in the past played numerous MMORPGs such as FlyFF, Cabal, Rappelz, Megaten, Lord of the Rings Online, and Guild Wars 2. I have also played a fair share of Team Fortress 2 and Terraria, and made my way through a number of single player games, my favorites of which include Spyro the Dragon, Jak and Daxter, Mirror's Edge, Antichamber, Limbo, Borderlands, Thomas Was Alone, and Dishonored. The list of games I like and have played is constantly growing and changing.
  • Education
    • Rensselaer Polytechnic Institute (expected graduation date Spring 2016)
      • Computer Science M.S.
      • Computer Science B.S.
      • Games and Simulation Arts and Sciences B.S.
    • Honeoye Falls-Lima HS (graduated June 2010)
  • Work Experience
    • FactSet Charting Team Intern (charting infrastructure for desktop applications)
    • Nvidia Corporation Software Engineering Intern (CUDA Tools)
    • Rensselaer Center for Open Source: Open source application development
    • Junior Engineer at Deadmans Productions: Web application and game development
  • Programming Languages
    • C++
    • C#
    • C
    • Python
    • JavaScript
    • GLSL
    • Cg
    • PHP
    • Tcl
    • Haskell
    • Matlab
    • Java
  • Libraries/Technologies/APIs/SDKs
    • OpenGL (Most familiar with 3, inexperienced with compute/tesselation shaders)
    • Direct 3D (DirectX 11)
    • OpenFrameworks
    • WebGL
    • CUDA
    • GLFW
    • pygame
    • Android SDK
    • LaTeX
    • HTML
  • Software
    • Unity 3D
    • LaTeX
    • Maya
    • GIMP
    • Blender
    • Audacity
    • Vim
    • git
    • Perforce
    • gcc/g++
    • clang/clang++
    • gdb, cuda-gdb
    • valgrind
    • nvcc
    • Linux (I have previously used Ubuntu, Linux Mint, OpenSUSE, Fedora, and ArchLinux systems)
    • Windows
    • Visual Studio
  • Computer Science and Programming Experience
    • Physics-based character animation
    • Cloth simulations
    • Fluid simulations
    • Ray tracing
    • Photon mapping
    • Real-Time Hatching (Hoppe et al)
    • Example-based texture synthesis
    • Watercolor rendering
    • Front-end web development
    • Web application development
    • Machine learning techniques including the perceptron, order transforms, data normalization, and neural networks
    • Computer vision techniques including feature detection, matching and object detection, color correction
    • Matting
    • Match moving
    • Web game development
    • Android game development
    • OpenGL and Direct3D drawing
    • Polygon triangulation
  • Game Development Experience
    • 2D/3D physics
    • 2D/3D rendering
    • Lighting and shading
    • Image/Screen-space effects
    • Level design
    • Mechanic design
    • Particle systems
    • UI/Overlays
    • Narrative/Writing
    • Basic environment and terrain modelling
    • Basic character modelling and rigging
    • Basic initial concept art
Note: All games produced with a group unless otherwise noted.
I’m a real boy!

I am pleased to announce I have accepted an offer with General Dynamics Mission Systems and will be migrating myself and my files to Massachusetts.  I get to be a real adult now!

Nov 16, 2016
View on Tumblr

I escaped segfault land and now I’m in screen-is-black-but-i-don’t-know-why land.

Oct 09, 2016
View on Tumblr

There are some things about the design of Windows that are absolutely amazing and ingenious.  Then there’s the determination of a user’s home folder.  I really want an explanation of why it’s not a string stored somewhere or an environment variable or a registry entry and why above all it’s required to be on %SystemRoot%\Users.

Windowsseriously can someone explain this to me
Sep 28, 2016
View on Tumblr

The Windows 10 Anniversary edition so far has only impressed upon me that you can’t favor pushy sales tactics over user experience.  The fact that Windows is more desperate for me to use their software and settings than let me configure my system and decided what to do is really not making me want to keep using Windows.  

Surviving off the “you don’t have an alternative for XYZ” is really not a strong place to be either, seeing as most of what prevents me from jumping ship is video games and development that requires Windows.  Maybe this is the beginning of the end for them, but I hope both Microsoft and Apple realize that it’s better to enable the users to do more always, INCLUDING and ESPECIALLY when it involves turning off or uninstalling features.

Overall extremely disappointed by this trend of removing user choice and the resulting software/hardware.

microsoftwindowsi really want cortana to go awaylike yes i understand that it's there to add more featuresbut having a digital assistant is really not something I wantI want to be my own digital assistantappleapple and that stupid headphone jack removalit was an interesting idea but oh so sillywhy not phase it out by offering the option but heavily pushing the bluetooth headsets?probably because the bluetooth headphones were really not great and were super expensive
Sep 28, 2016
View on Tumblr

hmm. apparently that was NOT actually the efi partition. how exciting.

on the bright side I am now more familiar with how efi and dual booting with newer windows versions works.

i have sinnedand i have since had to reinstall my os several timesthrilling
Sep 25, 2016
View on Tumblr

I’m playing with GameMaker because it was cheap in the HumbleBundle and there’s no user defined functions? Why you do this? I mean I get that it keeps the language complexity etc. down and you can sort of do it by calling a script from another script but still…

gamemakergame development
Sep 11, 2016
View on Tumblr
Aug 08, 2016
View on Tumblr

Gah, I still can’t get solid testing for safari. Oh well, I’ll just have to keep searching. I thought I had more friends with iphones but I guess not. Maybe the apple store will let me test drive.

Aug 08, 2016
View on Tumblr

There’s some sort of compatibility issue that I don’t know about for iPhone Safari and Chrome and I think desktop Safari that’s preventing my webgl code from drawing. Hmm, I’ll have to find a friend who’s willing to be my tester for a few hours or something.

webglcompatibilitywebdevweb developmentjavascripti thought it was array.from because that was a problem before but i think i fixed thatso apparently i have more errors or non-cross-browser functions that i'm using
Jul 14, 2016
View on Tumblr

So I fixed one problem, but it still squishes.  It just squishes slower now.  Aaaaggggggghhhh.

The problem was that I wasn’t normalizing my input vector for axis/angle rotations.  Well, a problem.

Jul 02, 2016
View on Tumblr