How I started coding, and how you should too
By: Matt Cielecki
Tags: Mapmaking, Coding, Getting Started, Programming, Warcraft

I’m finally finished! I had been working for weeks on a new custom game for Starcraft 2 called Partycraft. Starcraft 2 is a real-time strategy game, where you build up armies, and defeat your enemies. Alongside that, there is a custom game experience that allows creators to build just about any type of game they see fit within the Starcraft 2 game engine (similar to apps in the app store). I was gratified that I had reached my own deadline for launching my game before the 2010 semester started. I would finally get to play it with players around the world and show off all the hard work I had done. However, the sense of accomplishment was quickly fading.

Each day I went to play my game, it was lower in the game list rankings than the day prior. When the game first launched it would get around 10–15 plays per hour, but now the host rate was down to a measly 10–15 per day, with no rebound in sight. Was the game broken? Did it just suck? Did I pick the wrong college major? Either way, the motivation to keep going was dwindling.

Then one night, everything changed. After a long shift at work serving tables, I came back to my college house with a friend of mine named John. I wanted to let him play my game to get some feedback and to see if there was something glaringly wrong with the game. As soon as we sat down, I clicked down to page 8 where the game last resided (it had fallen that far since launch). It was nowhere to be found. Page 9, nothing. Page 10, nothing. Page after page, the disappointment and shame grew.

Then John said, “I could have sworn I saw Partycraft on the first page.” How could that be true? How could a game instantly skyrocket to the top of the game list in a matter of hours? I was not prepared for the rush of euphoria and fulfillment that was about to overwhelm me. There it was. At the very top of the list. Featured by Blizzard Entertainment, a company I had admired for most of my childhood. The developers at a triple-A gaming company played my game, liked it, and wanted to share it with the rest of the world.

Partycraft, the first UMS in Starcraft 2 to be featured by Blizzard (August 2010)

Over 13,000 games hosted per hour with 10 players in each game netting 130k players per hour. These were numbers I had never dreamt of being a part of. The reassurance was quickly coming back. Maybe I can do this. Maybe the college major I am pursuing is the right one. The interviews with gaming news sites and publications came in the following days, and the taste of victory was all too sweet. This is an event in my life I will never forget, and will always look back on. I had learned very early on, that…

Opportunity = Luck + Preparation

But how did I get to this point?

Video games have been a big part of my life for as long as I can remember. From playing Sonic, Mario, and Zelda when I was very young all the way to Fortnite and Warcraft recently. Video games have engrained core characteristics in me. I had formed a genuine curiosity for how things work while shaping and developing core problem-solving skills.

In 2002, everything changed. Warcraft 3 released. This game was a masterpiece, it had it all. Not only did it have a rich single-player campaign, but it had a robust online service called Battle.net, where players could compete with one another. Part of the online service included “Custom Maps” which was a crowdsourced collection of fun highly customized games.

I became immersed in the custom game scene. Have you ever heard of League of Legends? How about DotA, short for Defense of the Ancients? That game was first created in the Warcraft 3 engine, by fellow mapmakers just like me, with similar passions and desire to create. That’s how powerful the map editor was, it was capable of constructing the foundation to a billion-dollar genre.

DOTA2 held at Seattle’s Key Arena in 2017. (DOTA2 / Instagram)

Enter the Warcraft 3 Map Editor

I had always fiddled around in the map editor, but I never created anything complicated. My curiosity continued to grow day by day, and I decided I wanted to start producing something a little more customized. I opened some of the Warcraft 3 single-player campaign maps and took a look under the hood.

I had played the campaign several times, so I had a lot of knowledge about the levels and how they worked. I started looking at the triggers (code) within the maps to see how certain aspects of the levels worked. I concentrated in particular on how in-game cinematics worked because I wanted to make one of my own.

Warcraft 3 World editor, how the sausage is made.

Working with the world editor was delightful. Everything seemed very intuitive, and the barrier to entry was low. It was fascinating discovering all of the creative ways game developers achieve certain effects within their games.

No syntax or compile errors, no documentation to read. Just select what you want

You could do a couple of major things in the world editor: Place units, modify the attributes of units, place terrain and create the environment, place regions and cameras, customize the sound, and the most powerful thing of all, create triggers.

The best thing about working with triggers within the world editor is the learning curve is very low. When using the GUI, you can’t get compile or syntax errors, there is no documentation to read, and the code reads just like English. You’re essentially clicking and dragging little pieces of logic together to create a custom experience.

I built my first custom map in a matter of hours, that was simply some cameras panning around the map, showcasing different areas, with fades and transitions. I hosted this map to the public, just trying to get some feedback. Two people joined who would end up changing the course of my life for the next year or so, Koga73 and TriggerThis.

They said the map was “pretty good for a beginner” and suggested that I join their map-making clan, so we could work together on making more advanced maps that the player base would find more engaging. From that day forward we spent a lot of time working together and recruiting like-minded map makers. We worked together, playtested each other's maps, helped create things together, and released many custom games to the public, some of which became very popular in the community.

I spent a lot of time with Koga73 on AIM (remember that chat application?), asking him questions about how to write triggers for certain things I wanted to accomplish. He would teach me things he had learned in his classes like arrays, variables, loops, conditionals, data structures, debugging, and memory management. I didn’t know it at the time, but I was learning core computer science and programming principles.

I loved it. It was addicting. Being able to create your own worlds, share that experience with other players and see the joy it brings them is something that is hard to reproduce elsewhere. I released several maps within a couple of years, and each one was more engaging, fun and complex than the last. I rose to the top of the clan, and ultimately became a mentor and leader for other aspiring map makers. Some of the most fun Friday and Saturday nights were in that chat channel, talking about making games, scheming how to take down our rivals and competitors, and just playing games together. Not once did we talk about making money, or starting a career. It was just about having fun.

I didn’t know that what I was doing was coding, or programming, let alone a career path. I just knew I was having fun creating games with a great group of people.

Well, that’s a great story and all, but how do I get started?

When I look back, there were four important keystones that helped me stay inspired and motivated me to keep going.

Having a passion for what I wanted to build. A great tight-knit community of like-minded people to grow and have fun with. A low barrier to entry, easy to use development environment. The ability to easily show off and share my creations.

I think it is important when first learning how to code, that you’re able to easily interact with what you’re creating, share it, and show it off. This was harder 17 years ago. iOS and Android development weren’t a thing. Unity didn’t exist. AWS wasn’t a thought in anyone's head yet.

I can’t emphasize enough how important a community of support is. I joined and built up a clan full of aspiring map makers who not only helped me learn the basics but motivated me every day to keep getting better. There are plenty of Discord and Slack groups of developers looking to partner up on exciting new projects.

I would recommend considering one of these ways to get started.

Gaming

There is a great development platform called Unity that I have seen several colleagues of mine, and gaming studios have a lot of success with. There are several sample projects where you can look under the hood and check out the inner workings. You have all the tools you need to make a simple prototype or the next big thing! Some notable games built with Unity include Hearthstone, Cuphead, and Ori and the Blind Forest.

Mobile

iOS or Android development. I have 5+ years of iOS development experience, both contributing and leading teams, and Swift is one of the best languages I have worked with. Swift Playgrounds, by Apple, is a great way to get started. Kotlin for Android development is following in Swift’s footsteps and is gaining a lot of traction and love from the community. Mobile is king in today's world, gaining more adoption every year and has no signs of slowing down.

Web

It’s never been easier to get into full-stack web development. You can host a website extremely quickly (and mostly free) or build a back end with a plethora of services such as AWS Codestar, Heroku, and Firebase. You can write both your front end and back end in Javascript to keep things simpler when learning. A lot of web traffic has shifted to mobile web browsing, so keep that in mind when developing on your laptop or desktop.

Or the route I took…

Warcraft 3 is getting a “Reforged” makeover on January 28, 2020. This will hopefully breathe new life into the map-making community, which will bring with it many opportunities to meet friends, and build great things together.

Happy building!