Hi. This is my personal website (as you probably assumed). I spend most of my time programming games and then squeeze the rest of my life into the time that remains. I just finished a game/simulation programming degree from DigiPen Institute of Technology. This year I have been working on my senior year project Rev.Eng. It has been especially exciting since my team is not only composed of programmers (the DigiPen norm), but also has some really cool artists. We will have a finished project by May, but you can check out our progress in my portfolio.

- Nick Raines

Rev.Eng

Worlds Beyond

Resonance

View Nick's Full Portfolio

View Nick's Code Samples

Multithreaded Roads

Whenever I’m on a long driving, I unavoidably start think about multithreading. It just seems to me that there are some good practical analogies between the two. Here’s some basics “hardware architecture” of what I mean:

Traffic Entitiy Programming Equivalent
Single Lane Road Single Core CPU
Train Single Core CPU with some serious SIMD
Two Lane Road Dual Core CPU
X Lane Road X Core CPU
Cars Instructions
People, Luggage Data
Planes, Boats, Etc. Network Communications (data, instructions, queries, etc.)
Speed Limit CPU Speed (And lots of people overclock both…)
Parking Space/Lot/Garage RAM or Hard drive (depending on where you’re parking)

Ok… so that’s the basic idea… not a whole lot of value yet. Let’s examine a few other, perhaps, “software” techniques of traffic:

Traffic Construct Programming Technique
Lane Switching Locking to exchange data is probably the best analogy. When traffic is heavy, the overhead of the switching seems to really slow traffic down. Alternatively, when traffic is light you don’t really notice the overhead of the lane change (it’s also a lot easier to perform). This lane switching is obviously needed since most roads have a “general purpose” of getting you to many places.
Traffic Lights A Sync Point for traffic so that two separate lines of traffic (threads of execution) can exchange across some common section of road (data).
Roundabout An alternative to Traffic Lights, this probably most analogous to Lockless Programming Algorithms. This could even be the drive through at a fast food restaurant, and many people choose it over parking.
Lane Change Restrictions Data Parallelism by removing the number of lane changes (Locks) and ensuring that the cars ideally don’t slow each other down.
HOV Lanes Data Parallelism that is taking advantage of SIMD.

There are a lot more analogies between computer science and traffic (perhaps a toll booth represents security validation), but that’s a good amount of the ones related to multithreading. Some of these problems were solved practically in traffic before we even encountered them in computer science. I’m not sure that traffic is ahead anymore (and traffic seems full of hacks anyway… perhaps another similarity with some multithreaded code), but perhaps there are still thing we could learn. And maybe one day, traffic designers will look at computer science and realize more efficient ways to get traffic around (but then when would I find time to think up such absurd analogies)… well that’s probably some wishful thinking. At least it is a little easier for us to change our code than it is for construction workers to reroute roads.

Code Samples and Rev.Eng Trailer

I just finished gathering some code samples from Rev.Eng to put on my website and added them. Also, one of my teammates, Abe, from the Rev.Eng team has made a trailer for our game. Let me know what you think!

++Portfolio;

I’ve added a lot of pictures and information about some of the more graphic projects I’ve accomplished as a student. These projects cover Graphics Rendering and Optimization, AI, Math and 3D Modeling. Hopefully they prove interesting. I think I’m pretty much done adding content that can easily be viewed in web-form… perhaps I’ll start making more interesting posts soon. Check out the new projects pages via my Portfolio.

Portfolio Page

I’ve just completed the Portfolio page which currently contains my DigiPen student games. Soon I will add some non-game projects I’ve worked from my adventures at DigiPen. Enjoy.

Website?!

Hi, my name is Nick Raines. I am a video game programmer and this is my new personal website. From time to time I’ll update this to contain relevant information on what I have done and will be doing.

Return top

Nick Raines

Hi, I'm a game programmer working at Irrational Games on Bioshock Infinite.

I recently graduated from DigiPen with a B.S. in Real-Time Interactive Simulation.