SkookumScript Acquisition & Retrospective

As everyone knows now, Epic Games has acquired Agog Labs, the creators of SkookumScript. I’m excited for the future and happy for the team. I’ve been using SkookumScript since January 31 of 2016. I’ve written a ton of SkookumScript code over the last few years, I even got to demo one of my games at the SkookumScript booth at GDC in 2017.

GDC 2017 – Epic Games Party with SkookumScript team.

I wanted to ramble for awhile about my personal history with SkookumScript, gather my thoughts about the acquisition, the community’s response to it and chime in with what I see as the state of things and the future of SkookumScript.

println(“Hello world”)

Back in 2014, we decided to switch game engines to Unreal Engine 4. Due to various happenings with the previous engine we were using, I made the decision that going forward I would never use another engine for which I did not have the full source code.

Unreal Engine was great and all, but going from a LUA environment to C++ meant that our iteration times basically went straight into the toilet. Through various internet whispers, I eventually found SkookumScript and on January 31, 2016 I got beta access and started kicking the tires.

I was instantly hooked, I wanted to use it for everything, so I started doing just that. By April I had plumbed it into an Xbox One game we had been working on, the only problem was that SkookumScript didn’t support Xbox One. I sent an email to Conan asking how to get Xbox One support and he replied with a proposition: I would write the Xbox One support in exchange for the pro version of SkookumScript.

One thing I’ve learned, it never hurts to ask for things.

An afternoon after getting the pro version of SkookumScript I was running Arconia on our Xbox One. I still remember that moment when everything really clicked for me. I had our game running on the Xbox and had the SkookumScript IDE connected from my PC to the Xbox. I typed in something like:

BP_Asteroid.instances.do[item.@rotating_movement.@rotation_rate := RotationAngles!yaw_pitch_roll(45 45 45)]

I pressed F4 and instantly all of the asteroids on the screen started rotating. My eyes went wide, I jumped around the room, fist pumping the air, yelling excitedly.

YEAH, WHOOO, THAT’S WHAT I’M TALKING ABOUT!

Me as I realized the power of SkookumScript

I can’t recall many things in life that have evoked that kind of reaction from me. The facts are that SkookumScript was radical, innovative and amazingly convenient – all the things that C++ was not. It was a language and technology stack that kept me in a flow state. The days of tweaking code, hitting compile, waiting 5-7 minutes and testing were done and I wasn’t looking back.

The Team

In March of 2017 I was invited to show Arconia at the SkookumScript booth at GDC. It was my first GDC and the SkookumScript booth was adjacent to the Epic booth!

Epic booth setting up for GDC 2017

I got to spend a few solid days with the SkookumScript team, putting faces to the internet handles. I arrived early to the expo floor to make sure I was all setup for demoing the next morning and I found the team of mad scientists puzzling over various things. Should we raise the tables? Yes? No? Too high? Black table-cloths? Are they long enough? Maybe remove them? Is that TV going to fall on someone?

You learn a lot about people when you share in some menial tasks like constructing a GDC booth. Several tasks required a hammer which led to my favorite memory of Markus when he remarked:

We need to timeslice this hammer.

Markus Breyer (with charming German accent)

Something that had never been said of a hammer and will probably never again be said. I can only sum up these guys by saying they are truly great human beings, geniuses, kind-hearted and appreciative. I loved every second of GDC and the privilege of hanging out with true industry veterans. From hearing them reminisce about various hacking tales to soaking up game industry inside stories, I was just honored that they felt my presence at the booth was helping the case of SkookumScript in some way. I also got a cool SkookumScript T-shirt.

The Acquisition

On May 27, 2018 I became an official member of the Agog Labs team. Conan was busy integrating Python into UE4 on a contract with Epic while Markus was working at Tesla. I was brought on to help keep SkookumScript supported and to try and get the 4.20 product working.

I started seriously digging into the codebase and learning my way around. It’s some pretty crazy code, by far the most complex codebase I’ve ever developed in. Most of this is the craziness that is hooking into Unreal Header Tool. It took me awhile to come up to speed, and after a rough start and nearly destroying the entire codebase I was able to do the bulk of the work to get SkookumScript running on 4.21.

The idea that Epic would possibly acquire SkookumScript was always there but the fate of SkookumScript was unknown until the acquisition was finalized. My hope was that SkookumScript would just continue on with a larger team and unlimited funding after the acquisition went down. Once the acquisition talks were going, I was interviewed by Epic along with the other 5 folks on the team, this made sense to me, they’d probably want to bring on people familiar with the codebase and language.

In the end, Conan and Markus were brought on to Epic and their marching orders were to let SkookumScript sail quietly into the sunset, like a viking funeral. Once I heard the news, I was a little disheartened about the plan, but also excited for the future they’d be bringing us at Epic. I didn’t want to encourage anyone in the community to keep using SkookumScript now that I knew it would be end-of-life so I withdrew from the community until the news broke, the gag order was lifted and I had time to organize my thoughts.

Now that the dust has settled, I think the 6-18 month future of SkookumScript is largely unwritten. Epic is a company that has a track record of doing the right thing. They might be super cool and accommodating of the existing community of enthusiasts whose dream is to make UE4 game programming more bearable. They also might not care at all. I’m optimistic that there is a way forward for a community supported version of SkookumScript that doesn’t step on the toes of whatever is in the works at Epic.

General Thoughts on Community Response

I think the professional response in the community has been overwhelmingly positive. The majority have the mental elasticity to see the unique value proposition, while some in the vocal minority don’t.

Let me just put this soapbox down for a second and stand on it for a few paragraphs. The UE4 community at large is ignorant of SkookumScript and everything that it offers. Reading through some of the mixed reactions across the internet, I’m amazed that so many programmers are so myopic about syntax and so reluctant to try new and more powerful tools.

Why can’t they just use C# or LUA?

Every armchair language designer commenting on the SkookumScript acquisition.

Is everyone just a lazy Unity programmer looking over the fence for greener pastures? Hint: those languages suck for making games.

To paraphrase a great analogy from Conan.

“We want shovels with nicer handles” said the diggers.
“Hey guys, instead of a nicer shovel we made this cool thing called a backhoe, it digs super fast.” exclaimed Conan.
“Why is it blue and yellow? Can’t we just get some sharper shovels?” complained the diggers.

Conan on building tools.

Very few people have written any SkookumScript code which in my opinion makes them unqualified to comment on the efficacy of its syntax. Sometimes I just want to reach out and slap people complaining about syntax (I’m not violent, I’d never actually slap anyone, maybe in VR though). I imagine Leibniz might have felt the same way about armchair mathematicians whining that Calculus used different symbols than algebra, I mean why can’t Calculus just use the algebraic symbols and operators that everybody knows instead of these strange new things?!?

New ideas require new ways of thinking and I feel like Conan got that aspect of the language right. Also, I never once accidentally started coding in SkookumScript across various python, javascript, C++ and C# windows in my projects… In the same way I’ve never accidentally double integrated a line item with respect to time when balancing my checkbook. Ok, putting the soap box away.

SkookumScript Community Response

The response from the SkookumScript community has been mostly positive with mixed apprehension about where that leaves those that have invested significant time and money into SkookumScript. Some people have projects they’re trying to ship and having future support of the language suddenly drop off the map sounds terrifying.

For those that are upset about the lack of communication regarding the acquisition, you might be less upset if you understood some of the mechanics of a basic acquisition. It goes something like this:

  1. Lawyers come in and make you sign a document that says blah blah blah, we pay you 3 peanuts you give us 1 banana and you won’t tell a living soul anything about this otherwise we have the right to sue you.
  2. Deals happen, money changes hands, lawyers eat lunch.
  3. Months later a press release is issued.

So don’t be upset that nobody decided to face legal repercussions to let the community know what was going on… and in the process jeopardize the acquisition, the financial future of their family and all the work put in for the last decade. Being upset about this aspect of the acquisition is short-sighted, unhelpful and fails to acknowledge the reality of business.

Now, regarding the somewhat bleak future of the language and the lost investment in learning it, I can identify with these concerns. At this point, it’s easier for me to count the number of projects I’m working on that don’t use SkookumScript, because I use it everywhere. I have made a significant time investment in the language and I’m not ready to write it all off.

The Future

The future of Unreal Engine is surely brighter with Conan and Markus at Epic helping cook up whatever deliciousness they have in store. I’m excited to see what they dream up at Epic and I guarantee that I will be the first guy on the block to kick the tires on whatever they release.

But right now, we’re talking vaporware and I’m not ready to go back to my sad C++ days. So until we have a worthy successor, SkookumScript will have to be pried out of my cold dead hands.

Here’s my personal plan, note that some steps will be timesliced.

Step 1 – A Test Project

I will be releasing an updated version of my open source Space Invaders clone that uses SkookumScript 4.21. This will act as the test project for any updates or fixes that I manage to make. It’s a comprehensive enough project that touches most areas of the engine to make sure nothing breaks in-between releases.

Step 2 – Get Permission

I am going to talk with the folks at Epic to see if I can get a sanctioned path for pushing updates to the community. Some aspects of the code are open source licensed while others are closed source. I have the full source as a licensee but it’s unclear if I can legally push new compiled versions of these closed source libraries out. Technically this is exactly what I do when I publish a game… so while it seems ok, I want to have the go-ahead before doing something stupid.

Step 3 – Establish a HUB

We need a github repo with issue tracker that is going to stay put and not change hands or get deleted. I’m investigating what the fate of the AgogLabs repo will be to avoid future issues were it to get yanked or go private, I don’t want a fork to be suddenly out of our control.

Step 4 – Manage the Project

The majority of this will be managing an ever-growing todo list in the issue tracker. On my short list already are:

  • Runtime Stability fixes. Always at the top of the list, there’s a UMG crash I need to fix…
  • The remaining UE4 containers. One challenge of SkookumScript pre-Epic was the thought to keep everything non-engine specific, this made implementing some data types more difficult. Say goodbye to that.
  • IDE investigation. The SkookumIDE is going to be the most difficult to maintain aspect going forward and the largest impediment to supporting new versions of the engine. I’d like to propose writing a VSCode plugin to replace it. This has many aspects to it but even small steps could lead to a pretty great quality of life in VSCode.

Step 5 – Do the Work

This will hopefully be a community effort. I’ll do my best in the spare time that I have between various contracts and small game studio life. For those that are going to continue on with me, I think our mutual primary goal should be getting stable versions of SkookumScript in place.

Our goals may not always align so while you may want a certain feature or fix, it might not be a priority for me in the limited free time I have available. I’m always happy to point out areas of the codebase to help people help themselves and people can always fork if they don’t agree with my decisions 🙂 The more people that know the code, the more cool stuff we can do.

I plan on using and maintaining SkookumScript for my projects until something better replaces it. The mad science lab is still open, I’ll turn the lights off when I leave.

A self-portrait from a trip to Utah. Standing alone and illuminating an epic setting… seemed appropriate, don’t read too much into it, it’s just a cool photo of me holding a lamp.

Be the first to comment

Leave a Reply