Inside Big Nerd Ranch's OpenGL Bootcamp
Oct 01, 2012—
The Phone Call — Editor’s Note
In the dead of night, I was awoken by a phone call. Calls at this time of night are not uncommon given the high level status iDevGames has in certain corners of industry and powerful unnamed global organizations, but nobody likes being woken from a dream involving glorious pages of code. An unfamiliar voice on the other end of the line told me of a mission with critical importance, and I was to select a top tier candidate to be sent to bootcamp in a remote forest for intensive training. Lives were at stake, so I had to choose carefully…
Actually, none of that is true. What really happened is Big Nerd Ranch asked iDevGames to send one developer to their OpenGL Bootcamp to vet and review their popular training series. iDevGamer Alex Diener reports…
OpenGL Bootcamp at Big Nerd Ranch
In July 2012, I attended the OpenGL Bootcamp at Big Nerd Ranch. The class was held at Historic Banning Mills, a unique country retreat in the woods an hour outside of Atlanta, Georgia. Each student was provided with their own cabin to stay in for the duration of the class. Accommodations were quite excellent – everything I needed was provided. The food was exceptionally good. Breakfast and lunch were served buffet style, and dinner was brought to each person in the dining hall based on your selections at the beginning of the week. Every meal was something different, and it was all impeccably prepared.
As for the course itself, the breadth and depth of material covered was remarkable. I’ve been working with OpenGL for 8 years, and in just one week, pretty much everything I learned on my own was touched upon, and by the end of the week we were in territory that was new to me. The pacing of the course was very fast, but never exhausting, nor rushed – the materials and examples provided were excellent, and the instructors went well out of their way to make sure everyone understood everything before moving on. It is definitely geared for OpenGL beginners; experienced developers won’t get as much out of it as if you’re brand new to OpenGL, but regardless of your skill level, you’ll certainly learn something new and get to meet some great people.
Dr. Jay Anderson was an amazing instructor. He was both highly knowledgeable and completely relatable. OpenGL concepts were presented in rapid succession, but at any point, he was happy to slow down and explain something in depth if a student wanted more information about it or was having trouble keeping up. I was honored to have been able to attend his final class at Big Nerd Ranch. His mantle is being taken up by Mr. Don McElheny, who is also extremely well-versed in OpenGL, and was frequently seen during the week helping students work through problems one-on-one.
The format of the class was roughly equal parts instruction and exercises. Dr. Anderson would talk us through a set of slides that introduced a new concept, and we’d then start with an exercise template and implement something we’d just learned. Quite a lot of uptime was packed into each day – we started at 9 AM, took a short lunch break at 12:30 and went right back in as soon as we were done, then finished for the day at 6:30 PM. There was also an optional afternoon break to either go outside for a bit and rejuvenate our brains, or catch up on anything we hadn’t quite finished.
On Monday, we first went over some basic concepts, then jumped right into exercises that had us writing OpenGL code. To help newcomers to OpenGL get started, we used a framework called GLTools from the book OpenGL SuperBible that abstracted some of the concepts that would later be touched on in the course so that we could get to the interesting stuff right away. This actually worked out really well – over the course of the week, GLTools was phased out little by little as the functions it abstracted were taught directly. It made it possible to defer teaching some of the nuts and bolts that might not have made sense until the overall concepts were covered.
On Tuesday, we covered more broad concepts, with exercises for working with textures, hidden surface removal, colors and lighting, blending, and model loading. Each afternoon we took a break to go for a walk in the surrounding woods. It broke up the day quite nicely, and gave us a chance to rest our brains and socialize a bit before getting back to work. It seemed to me like the class attracted some of the most interesting people in the world. Every student there came from a fascinating background and had lots of stories to tell, and I greatly enjoyed getting the chance to meet all of them.
On Wednesday, we got into a lot of what we’d been allowing GLTools to handle for us, and learned enough to write our own vertex and fragment shaders. Everyone in the class was provided with the OpenGL SuperBible (fifth edition), either in physical or e-book form depending on each student’s preference, which served as an excellent reference for everything we were learning. All exercises, solutions, and slides were available both physically and digitally for future reference. Parts of the class were also being actively improved upon during the week – several times, a USB drive was passed around the room with updated versions of exercises we were about to do to make sure we had the most up-to-date materials.
On Thursday, we learned about modern OpenGL programming practices specific to Mac OS X and iOS, offscreen rendering, and geometry shaders. In the evening, we got to have dinner with Aaron Hillegass, the founder of Big Nerd Ranch. Students were also offered a chance to go on the onsite zipline course and woodland canopy tour. A long tour and a short tour were both offered. I chose to go along on the short one, which included three zipline runs, and quite a bit of climbing around on bridges strung through the treetops. It was fun, refreshing, and exhausting – a nice way to escape from your computer chair and get some real exercise during the week!
On Friday, everything was wrapped up and we said our goodbyes. Travel logistics were made easy. Shuttle service to and from the airport was provided, and staff went out of their way to make sure everyone was accommodated.
This course has something for everyone. To get the most out of it, you’ll want know C pretty well and bring a Mac, though one student wasn’t very familiar with C and was able to follow along reasonably well. While it’s certainly Apple-centric, a few of the students were working on other platforms and managed to keep up with the rest of us. iMacs were available during the week for students who hadn’t brought a Mac of their own, and instructors and assistants went well out of their way to make sure everyone was able to work effectively.
I already had a lot of OpenGL experience going into the class, but it served as an excellent refresher and taught me a bunch of new stuff by the end of the week. I’d only done a little bit of work with shaders prior to the class, so I was somewhat shaky on some of the concepts, but after we did a few exercises I had a really solid understanding through and through. I was able to apply the knowledge I gained in the class to both to my professional and personal projects, and can now write shaders with much greater ease and confidence.
Though the price tag may seem a bit hefty, you really do get your money’s worth. Every aspect of the experience was impeccable. As I mentioned before, the class covered everything I learned in 8 years of self-taught OpenGL and more, so it could save you quite a lot of precious time compared to learning the hard way. If you get a chance to take this class, you definitely won’t regret it!
About the Author
Alex Diener is the developer behind Sacred Software and the creator of uDevGames 2011’s Best Gameplay entry “Convergence”, and well-regarded tutorials on game update loops and linear algebra. In his spare time you can find his legs blurring above a DDR pad, or narrating Minecraft adventures.
About the BNR Course
OpenGL Bootcamp is an intensive 5-day training course, teaching students the understanding to create advanced cross-platform visualizations (ie for 2D and 3D gaming), as well as using the GPU for more general performance-intensive applications. More info about the course.