Friday, 28 August 2015

Meet Your Maker

GameMaker: Studio

Many tools have been released over the years that claimed to make game development accessible to all. Software like Klik ‘n’ Play and DarkBASIC promised an easy route into game design, either through simplified programming languages or avoiding coding altogether. But there’s a difference between making game design accessible, and making professional game design accessible.

That’s where the other apps fell short, and where GameMaker: Studio is different. “I think that when we released Studio, the product changed and the user-base changed,” says Stuart Poole, head of production at YoYoGames, the makers of GameMaker: Studio. “People are now using this as a tool to make a living.”


Once a hobbyist development tool, lately GameMaker has formed the basis of several massively successful games, including Hotline Miami, Nuclear Throne, and the original version of Spelunky. Since 2012 its user-base has grown significantly, attracting professional programmers to its simple interface alongside curious first-timers. This success hasn’t come quickly or easily. For almost a decade GameMaker was supported by just one person, and its lengthy and somewhat eccentric development means YoYoGames has spent the last few years working with one hand tied behind its back. Nevertheless, GameMaker seems, finally, to be making its mark.

GameMaker was created in 1999 by Dutch computer scientist Marc Overmars. Originally conceived as a 2D animation program called Animo, GameMaker gradually evolved into a simple-to-use game-design toolset.

The core of Overmars’ idea was to make game design simple, and in pursuit of this he created the two features which remain most prominent in GameMaker today. Its drag-and-drop interface allows users to quickly put together simple 2D games with no knowledge of coding required (technically GameMaker can build 3D games, but few developers have explored that avenue). Through a simple series of button presses, you can define actions such as movement and jumping, and attach those actions to objects in the game world.

For more confident users who want greater control, GameMaker facilitates programming through its GML scripting language, which combines colour-coded commands with rigorous error-checking and a detailed help library to make coding as straightforward as it can feasibly be.

THROUGH THE CEILING


For the best part of a decade, Overmars worked on GameMaker alone, chipping away at updates and fostering a small but amiable community of enthusiasts. Then in 2007 he partnered with Dundee-based outfit YoYoGames, with the intent of expanding GameMaker’s potential from getting people interested in game development to getting them building and releasing full commercial games.

“Whatwe had before was that folk would kind of grow up with GameMaker, and then they would hit this ceiling,”says Mike Dailly, head of engineering at YoYoGames. “Whether it was just they felt they were struggling with it or ‘it’s time to grow up and use a big-boy’s tool now’, and then they would move on. With GameMaker: Studio, we made a conscious effort to get rid of that ceiling so you could just keep going.”

Released in 2012, the development of GameMaker: Studio involved several threads. Prior to Studio, GameMaker could only run games on Windows, so the team at YoYoGames wrote a new runner component to make it compatible with other platforms. They also designed a new compiler component to connect the maker and the runner, sogamesdidn’t just compile their entire source-code on start-up, (making them extremely vulnerable to piracy). Lastly, they added a host of new features to the Maker itself, including a room editor for the quick construction of 2D environments. “There was a couple of hundred thousand lines in the original, and we’ve added a million and a bit with Studio,” says Dailly.

The aim was to make GameMaker commercially viable for developers over the duration of a project, and that work seems to have paid off. Not only are popular and successful games being created with GameMaker now, but YoYoGames itself has expanded considerably since 2007. When they first partnered with Overmars, the GameMaker development team consisted of just two people working in a basement near the University of Abertay. Now YoYoGames employs 30 people in a spacious office overlooking the Firth of Tay. This is still a small team compared to those employed by engine behemoths like Unity and Unreal, but demand for their product is increasing all the time.

Bar a few extra features, the version of GameMaker: Studio released in 2012 is fairly similar to the one available now. We’ll go into the reasons behind this shortly. But in its current form, what is GameMaker like to use from the perspective of a developer?

AUSPICIOUS DEVELOPMENTS


Tom Francis is a former PC Gamer writer who became a full-time developer after the release of his first, GameMaker-made game, Gunpoint. Francis was attracted to GameMaker after learning that the original version of Spelunky had been created with it. “I didn’t really do any further research to find out if it was the absolute best choice,” Francis says. “If it was good enough for Derek Yu, the only question was whether it was easy enough for me. And after doing his and GameMaker’s own tutorials, I found it was.”

Gunpoint – a side scrolling stealth game about spies and hacking – formed gradually out of Francis’ experimentation with the software, initially through the drag-and-drop icons and by following tutorials. “I learnt almost everything else by reading reference docs,” he says. “That’s daunting, so it was great to be able to do it only a bit at a time, and keep working with the very basic icon-based stuff to keep it interesting as I went.”

His experience with GameMaker raises a couple of interesting points. At the time of his initial encounters with it, GameMaker still wasn’t entirely adept at explaining itself to newcomers, especially the transition from drag and drop to GML coding. Indeed, Francis decided to create his own tutorials for GameMaker after experimenting with Unity between projects and finding it a struggle. “By far the most helpful thing I found were Alec Holowka’s videos on it,” Francis says. (Holowka is a Canadian independent developer who in the past has collaborated with Derek Yu). “I realised if I’d had videos like Alec’s for GameMaker, I probably could have jumped straight into the coding side of things and it would have been much quicker.”

Francis also decided to stick with GameMaker for his next game, which is significant considering that a big part of thinking behind GameMaker: Studio was to encourage this. Nor is Heat Signature a typical GameMaker game. It’s a space exploration game that involves large open environments and makes heavy use of procedural generation. Francis had some reservations regarding how well GameMaker would cope, but found it surprisingly accommodating. “I was expecting to have to fake a lot of stuff to make a big space game in GameMaker. Switch you to a separate map mode instead of zooming out, despawn anything off-screen, have a generic infinite universe instead of anything with persistent places. But actually it’s handled it all rather well.”

SPAGHETTI LOOPS


With Studio’s attempt to professionalise GameMaker a success, the main ambition now is to modernise it. Over mars programmed GameMaker in a language called Delphi. “It’s effectively an engine that has grown up from 1999,” says Dailly. “So the code base is just spaghetti inside. Change one thing over here, five things break over there. You try to fix them and another twenty things break.”

Since the release of Studio, YoYoGames’ priority has been to completely rewrite GameMaker in C#, to make it more stable and above all faster to iterate with. “We’ve had cases where something in C# that would take us ten minutes, would take us four hours in Delphi. So the simplest thing just takes forever,”Dailly says. YoYoGames is also using this as an opportunity to update and introduce new features to the program.

Building a tool for other people to make games with is something of an odd position to be in. Yet aside from being a little less creative and a little more pragmatic, the principles behind doing so aren’t vastly different from game development. You figure out where the software’s limitations are and what developers want from it by speaking to users and testing the program extensively yourself. “I use it a lot at home, and because I use it a lot at home, I know all the bits that really annoyme for the current one,” Dailly says, “That’s why we’re talking to developers, to make sure that my most hated bits are theirs as well, andwe’reallmoreor less aligned.”

That said, GameMaker has the extra problem of being intended as an entry-level program, which means altering or expanding its capabilities must be done without compromising its accessibility. In future, YoYoGames plans to approach this by retaining a basic vanilla program, while separating out the more complex functions as plugins.

“Long-term,we’re looking at reducing the core of GM, but having more of these things as extensions rather than just the core,” says Russell Kay, chief technology officer at YoYoGames. “So we’re trying to simplify things down, but also expand what we can actually do.” These extensions won’t have to be manually installed, either. YoYoGames hopes to have GameMaker automatically target required extensions so the developer doesn’t have to seek them out.

SHADERS OF GREY


The last stage in modernising GameMaker is to increase its technical fortitude. YoYoGames has already added a couple of features with this in mind, namely liquid-physics simulation and programmable shaders. The latter are a good example of how YoYoGames is introducing more complex programming into GameMaker. “Each of the shader languages has its own syntax, to the point where OpenGL and DirectX are basically two different programming languages,” says Dailly. “So what we do is let you program in OpenGL ES [a subset of OpenGL used by smartphones, etc], and then we will automatically convert and generate these other ones. So you’re only having to learn an initial language.”

For those wanting to avoid more complex tasks like shader programming completely, YoYoGames recently introduced the GameMaker Marketplace, where developers can buy, sell or share technology, including shaders. The results are already beginning to emerge. One of the more visually impressive GameMaker games currently in development is Orphan, a 2D platformer about a young boy in the midst of an alien invasion. “I had always wanted to make a game but thought programming was too difficult for me,” says Brandon Goins, creator of Orphan. “I watched a video tutorial on YouTube about basic platforming and literally laughed out loud at how easy it was using GameMaker.”

Orphan’s visual style is a combination of Goins’ experience in graphic design, and taking advantage of GameMaker’s simplicity. “Many parts of Orphan originate from photographs, whether it’s simply a photo dropped into GM as a background, or part of a photograph that I’ve traced to create some small object in the game,” Goins explains. “In the end I’ve been able to get all the graphics effects I wanted from pure raster graphics and the only shaders I’ve used so far were ones I got from the GameMaker Marketplace for distortion and blur effects.”

Goins is extremely happy with how GameMaker has enabled him to create a game for the first time – he even goes so far to describe it as “life-changing”. However, there are certain aspects he would like to see improved. “The universal complaint people have about GameMaker is the room editor and I have to agree. It needs support for separate object layers as well as group selection tools.”

Tom Francis also has one or two issues he’d like to see addressed. “The only way to save the code or resource you’re working on without saving the whole project is to close the window and open it again, which is pretty mad,” he says. “And faster compile times, or some built-in tool to live-edit certain variables, would be great for tweaking aesthetic things.”

STUDIO REFURBISHED


YoYoGames is reluctant to discuss specific features of the upcoming C# version of GameMaker right now. But they confirm that a new room editor is coming, and there are rumblings that other editors, such as the sprite editor, will be getting an update too. The dev team recently did a closed-doors showing of the new version at Develop, and they claim the response was positive.

“Fundamentally, we’re going to be doing Studio 1.x as the next one,” Dailly says, “with a very solid foundation that can expand – but modernise all the editors that are in it. So it’s like a modern 1.x. Then we can scale up.”

Given how much GameMaker’s reputation has grown while running on such outdated code, it will be fascinating to see what a completely modern version is capable of.