Technical Problems and Great Man Theory
Welcome to 2016, everyone. I hope you've all enjoyed the holidays.
Over the course of development, one of the most intimidating technical challenges I anticipated was making my game work on Steam. The software Steam uses to get new games on Steam is, perhaps not surprisingly, designed for developers, not normal people, which means learning to use it takes a bit of doing. But more significantly, there's the problem of integrating Steamworks, which, in layman's terms, is what Steam gives you so that your game can actually talk to Steam (as well as a few other features that aren't really relevant to this project). Valve, who makes all this, seems to write pretty much everything in C++, whereas I made Sethian in Python. To get their code to play nice with mine, I would have to figure out their stuff and write a wrapper for it, something which I've never done before and, to be quite honest, still don't really understand. Alternatively, I could just rewrite my entire game in C++, despite have never really used it before. The advantage of this would be that I already know how my own code works, but I don't know how Valve's code works. My idea was that by rewriting my game, I might be able to use their software without really understanding how it works, in the same way that you (and I, honestly) use a computer without really understanding how it works. The other thing is, there are a lot of people on the Internet asking how to write in C++ and getting help with that, but not too many people trying to wrap C++ for Python. Writing a wrapper would be the road less traveled by.
Ultimately, the decision was made for me. On Christmas, I finally upgraded to the newest version of OS X, El Capitan. I found out the next day that it completely broke the modules I was using to write Sethian. When I ran the game, it wasn't just ugly, it was utterly impossible to tell what I was looking at. El Capitan broke other games as well. When I bought Toki Tori 2 during the holiday sale, it either gave me a solid green screen, or a mess of black and white that looked like TV static. Looking into it, I found that users reported similar issues after upgrading to El Capitan. What really gets me though, is that El Capitan was first released on September 30th, just over three months ago. People found these issues almost immediately, and yet they still haven't been resolved. Anyway, it became clear to me that the best course of action was to rewrite Sethian in C++.
The most frustrating part was getting a C++ IDE to work on my machine. (An IDE is a program you write code in.) Apple provides Xcode, but when I tried to do simple things with it, it crashed and gave me an error telling to uninstall it and download it again from the App Store. This took more than six hours as I recall, because the App Store was giving me an abysmal download speed for some reason. In the meantime, I tried to get other IDEs working, but they all seemed to give me some problem or another. In the end, I spent all of Boxing Day trying to figure out what went wrong with my Python code and if I could fix it, then two more days trying to get an IDE set up and get the modules I would need for development working in it. It turned out that Xcode wasn't crashing because there was something wrong with the installation, it was because the modules I wanted to use didn't have sufficient privileges. Thanks for that helpful error message, Apple.
Once I got it working, I went into crunch time. I finished rewriting Sethian in C++ on January 1st. After that, I wanted to see if I could in fact get it working with Steam. Late last night, I did get my first successful build of Sethian on Steam, and successfully installed and ran it through Steam. We're still not out of the woods with Steam by any means, but the journey is already well underway.
As you can imagine, all this technical trouble interfered with other aspects of development. I didn't manage to fully translate my notes, but I have more than doubled the Sethianese vocabulary, so at least I understand now how to discuss all the concepts I introduce in my notes.
I've talked about topics in Sethian before, and I think I've mentioned that I find it hard to link them together. I'm starting to realize the problem is that it's just very difficult to talk about abstract subjects in a language you don't understand well, particularly things which develop over long periods of time, like political movements and cultural trends. It's a lot easier to talk about people, institutions, and events. I think this is because the language lets you talk about what something is, what something does, but not to simply ask what happened. I've considered adding a word for something like "happen", and I don't see a way to do it without completely trivializing the game. Giving the player that ability would turn the game into a narrative, a glorified interactive novel. But I want the player to have to actually apply an understanding of the game's language in order to complete it. If I teach the player how to say "then what happened?", I may as well have everything written out in chronological order, and have the player click when they've finished translating an event to move on to the next one. Some people might prefer something like that, but that's not what I'm doing.
As you may have guessed, I didn't frame Sethianese history in terms of people, I framed it in terms of eras. Broad, sweeping generalizations for periods spanning centuries. I've realized that these things need glue between them, and I think the best adhesive for the task is people. I think some players will see the eras as the glue between the people, and that's fine. What matters is that the player is able to move through the game's history by applying their understanding its language.
This doesn't mean I'm starting over from scratch - far from it. I'm already well into the process of adding more people to my eras and there's not much hassle to it. What actually bothered me when I shifted gears here was something called Great Man Theory. Great Man Theory is the idea that history is shaped by so-called "great men", such as influential statesmen or thinkers, rather than large groups of people, or other factors. I don't really subscribe to the notion, which is why people play such a small part in my original notes, but I'm starting to feel like my gameplay is defining my politics - like I have to promote Great Man Theory because it's just what works best for the game, even though I don't really believe in it. It's weird, and I don't think I've ever heard of anyone talking about something like this in game development, where a developer sort of inadvertently made a political statement because it's just what worked for gameplay. Anyway, I draw pretty heavily on Nietzschean philosophy for Sethian, and Nietzsche was pretty big on great men, so maybe it's for the best.
Now that I've already made quite a bit of headway with what was the most intimidating technical problem, I'd like to say that I intend to release the beta for $10+ backers within 30 days. This is boldest goal I've set for myself in this project so far, but it's necessary to work harder as development nears its end, and I definitely can't keep this going forever. I've come a long way, I've eliminated distracting factors from my life, I've developed a productive daily rhythm, and I'm ready to work my ass off.
In the past, I said that the beta release would be the earliest build with an ending, but now that I have a firmer idea of how the game's ending(s) will be implemented, I don't think this is a good point to focus on. I think this decision will be easier to understand once players see the final product. The beta will still have the vast majority of the game filled out, and give players a lot to play with and experiment with, and I think that's the way it should be. Ultimately, what people think of the end is the last thing I want feedback on - at least right now.
I'll check in again in two weeks. I'll be working on less daunting technical tasks, like support for different resolutions, as well as adding new characters, and ironing out the tutorial, which I'm actually still not satisfied with. I thought what the tutorial needed was to be fast, but I think what it actually needs is to be efficient. Given the slow pace of the game, it's just fine if it goes on for a while, and players don't seem to get frustrated with it because while it asks you to learn a lot, it doesn't force you to learn it all at once, and lets you progress through the game as you learn. Even though, in my mind, it's not "the real game", for the player it doesn't feel like they're kicking rocks around at square one waiting for things to really get started. So I guess it's a pretty good tutorial as is, it just needs to be, well, longer. It needs to be long enough that the player feels like they know what they're doing and understands why what they're doing works. We'll see how it goes.