In 2013, people spent $21.53 billion USD on games and game-related merchandise. And games overtook movies long ago as the most popular form of entertainment. Despite their astonishing popularity, games and game development receive woefully little attention at open source events.
As free and open source devotees, we do our cause a great disservice by ignoring this large swath of the software industry. That's why I was so excited to see linux.conf.au host a Gaming Out in the Open: Open Source and Games miniconference in advance of the main event this year. Organized by Tim Nugent and Eloise Ducky, the miniconf featured 10 presenters, a session of lightning talks, and a "play session" for test driving open source games. The presentations themselves fell into four neat categories.
Two talks approached the problem of game preservation from different angles. Ender Brown, a former lead developer on the ScummVM classic adventure game interpreter project, provided a retrospective of some lessons the project has learned over its many years. From zero tolerance for piracy to the importance of code review, Ender shared valuable lessons for how to scale a project while respecting and expanding its original vision.
When game developer Cheeseness isn't creating his own games, he helps studios port their games over to Linux. Using Day of the Tentacle Remastered as an example, Cheeseness first walked the audience through the steps necessary for porting these older games over to Linux, then detailed why it is worth the effort, and explained some of the snags a porter is likely to hit in the process.
Tools and how-to
Night in the Woods, an independent game by Alec Holowka and Scott Benson, had a problem: most game scripting and dialogue systems were too complex and required writers to learn to code. The best option available was Twine, a open source tool for telling nonlinear stories, but its feature set was too limited for their needs. This problem was solved first by Yarn, which is described on its site as a dialog editor based on Twine and created for Night in the Woods. Later it was succeeded by the improved version, Yarn Spinner, described as a Yarn interpreter written in C#, and created by Jon Manning. Manning is one half of the Secret Lab mobile and game development studio. Jon discussed the creation of Yarn Spinner and the special synergies of open source and game development that allowed the project to become successful.
Paul J. Fenwick (or "pjf") entranced the audience with his story of helping to build an escape room game using only open hardware and open source software. The game code was designed as a flexible platform through the use of pluggable game files. pjf also strongly recommended using the open source project Platformio.org for developing, testing, and debugging embedded systems.
While not specifically open source related, Site Reliability Engineer (SRE) Caskey Dickson's talk on handling distributed state was relevant not only to the games audience that it targeted, but also to developers of any complex system, including multiplayer games. Caskey provided an excellent summary of the problems with state management and some of the possible approaches for dealing with it in games, such as delta-based syncs, using game mechanics to hide latency effects, and the dead reckoning of anticipated user state.
Projects inspired by games
Josh Deprez, an SRE at Google, is smitten with the game Shenzhen I/O. It allows for play and experimentation while also being very visual. "Why can't my work be this way?" he said—and thus Shenzhen Go was born. Shenzhen Go is an open source environment for programming in Go. While still experimental, Josh presented the project along with working examples.
RPG's can have rich and complicated worlds, and Mouse Guard is no exception. Faced with the challenge of tracking her campaigns, Rhiana Heath taught herself how to program and created a map-based online interface. Rhiana detailed the design process, including a discussion of the Leaflet.js interactive map library at its core. This project accomplished much more than she originally intended; Rhiana is now a full time front-end developer.
The open nature of closed games
Several speakers talked about how a "closed" game does not mean a closed community or tools.
PICO-8 is a "fantasy 8-bit console system." This console has never existed and the software itself is closed source, yet John Dalton shared his experiences with the very open community that has sprung up around it. The community not only creates and releases games as open source, it also provides a large number of open source tools for developing games and apps for the PICO-8.
Minecraft is another closed source game with a very open ethos around it. If you purchase a copy of the game, the creator Mojang allows you to modify ("mod") the game and distribute the mods to other players. Richard Jones shared some of the open mods users have created, including his own mod, which allows him to use Python inside the Minecraft game and automate various actions.
Independent developer lowlines made an empassioned plea for more games to provide an API, following the example of Destiny. While Destiny is a closed source game, its open API has allowed open source tools, like Destiny Item Manager (DIM), and their associated communities to flourish, increasing the playability and the enjoyability of the game.
All told, I had an inspiring day. Each talk showed yet another way how games and open source can work together to create something magical, especially where communities are concerned. The organizers are already speaking of proposing the miniconf for linux.conf.au again in 2018. If the high attendance and even higher quality of talks at this miniconf are any judge, a 2018 edition of this event will be a valuable addition to your schedule.