In a world where video games constitute a nearly $100B annual market and there are 1.8 billion self proclaimed gamers (plus we all know a closet-gamer or two), it’s surprising to learn that there still isn’t a widely used programming language created specifically with video games in mind. The team at Agog Labs want to change that. Over the past 13 years, they have developed SkookumScript, a new programming language and tool suite that they hope will become the new industry standard.
As I rush into Fort Tectoria on a rainy Thursday afternoon, past the rocketship that greets me at the entrance, I mentally review the notes I read about SkookumScript before making my way downtown. SkookumScript is a scripting language dedicated to the creation of gameplay, the overall experience of playing a game. Conan began developing SkookumScript in 2004 and officially released it in 2016, successfully integrating it with the Unreal Engine, which is used by 25% of game developers worldwide. It was used at United Front to author all gameplay on Sleeping Dogs and Sleeping Dogs: Definitive Edition and Agog Labs plans to integrate SkookumScript with the rest of the major game engines.
My mission at Agog Labs today is to find out whether SkookumScript is really as easy to learn as Conan and the team say it is. Having spent the past five years in graphic design and branding, I have experience working with the Adobe Creative Suite as well as using basic HTML and CSS. The closest I have ever been to programming anything like the gameplay I’m about to be presented, however, is in making 30 to 40-second animations. As such, I’m a unique user case for SkookumScript. Realistically, most people on a game development team will have at least some experience using an integrated development environment (IDE). This includes the sound engineers, artists, and QA testers — roles you wouldn’t traditionally associate with coding. For a list of typical roles on a game development team, click here.
The first thing I see once I get to the Agog office are two incredibly wide monitors filled with an incredible amount of code. Conan Reis, Agog Labs founder and creator of SkookumScript, approaches me to shake my hand and offer me some water. I first met Conan at a pitch event during VIATEC’s annual Experience Tectoria. With his kind and gentle mannerisms he’s just how I remember him from then, minus his awesome mad scientist costume. (Quite frankly, I didn’t know mad scientists even did office casual.) Conan’s background in artificial intelligence and developing AAA games for 24 years is what has led him to his current specialization — devising gameplay and AI aspects of game development.
“I have always had great respect for sane science — but mad science has always been my calling” — Conan Reis
As soon as I sit down, Shadi Dadenji, who Agog Labs recruited from Amsterdam, introduces me to the different windows that appear on the screens. We start by taking a quick look at C++ code in Microsoft Visual Studio, which is what Conan and Shadi use to create and perfect the SkookumScript Integrated Development Environment (SkookumIDE) itself. We then take a look at the user-facing side of the IDE and see how it plugs into the Unreal Engine 3D World Editor. Shadi tells me I’ll actually get to create a few commands and script actions myself using the demo world that Conan created for first-time users: a metallic multi-room area including a hero character and three robots, which I can only assume are the bad guys.
After a few minutes, the flow of screens begins to make a lot of sense. Within the SkookumIDE, Shadi introduces me to SkookumScript’s syntax. We cover some classes, variables and expressions used to select and control certain characters. We play around with different commands, including making the robots run towards the character, race each other, go berzerk, and go boom — and yes, these are the real terms SkookumScript uses. Shadi shows me how in just a few lines you can create real-time commands that would otherwise require paragraphs of C++. Moreover, I’m told that if we weren’t using SkookumScript, every time we reset our robots to try something new (by using “robo_reset” and pressing F4) we would typically have to shut down, recompile, and restart.
What intrigues me most about the lines of code we are plugging in is the readability. Though I lack reference to other scripting languages, the code seems to read like a very rough sentence. For example, the code below is used to move one of the robot characters towards the hero:
Similarly, this code sends a random robot to the character:
So now I can’t help but wonder: if SkookumScript really is so integrable, easy, and efficient, then why hasn’t this been done before? In an industry as enormous as video games, there are sure to be other mad scientists devoting their time to finding a viable solution, if they haven’t already.
In response, I’m told that another scripting language popular for game scripting is Lua, which was created for the Brazilian petroleum industry in 1993. While Lua is simple and portable, it lacks built-in game concepts, a native editor or debugger, and a single, unified company that provides updates and support. Furthermore, to use Lua, each studio needs to essentially create a custom copy of Lua technology which they keep private. As such, when someone who’s familiar with Lua starts working for another studio, they need to learn their new studio’s unique way of using it. Agog Labs wants to make up for Lua’s shortcomings by ensuring SkookumScript is both universal and fully supported.
As my grand finale, Shadi lets me take charge in the SkookumIDE. I write a few lines of commands that set up each of the robots to run simultaneously towards the hero and make the hero explode once all their destinations are reached:
So while SkookumScript likely isn’t for complete newbies to IDEs and 3D world editors, one is able to pick up the general principles with relative ease. This makes me suspect that those working in a video game studio could totally own the experience, no matter what their role happens to be. Using a language that all team members can follow means each member doesn’t have to wait for the engineers to assist them in making small changes. This can result in enormous time and cost reductions.
I can’t help but think of another unique aspect of SkookumScript beyond the realm of video games: its potential for academic use. Though I was only able to spend two hours in the SkookumIDE, it’s easy to imagine what a room full of enthused kids could do given free reign. Over the past few years coding literacy has become a priority in schools around the world. A language like SkookumScript, which Conan says can be used in virtually any area that requires real-time control (such as interactive automation, robotics, aeronautics, Internet of Things, or big data), could prove an awesome and engaging learning tool.
So it turns out the behind-the-scenes of video gaming can be pretty interesting, too. The next time you’re hours deep into an intense gaming session, you might find yourself wondering if the science behind what you’re playing is just a little bit… mad.