Thursday, July 15, 2010
How does KS actually get made? What is the everyday developement work like? I've tried to write about this topic before, but honestly, it's extremely difficult to concisely express the way our team works in this project. We are an extremely organic, dynamic and free-form group, while at the same time it often feels we are too stagnant, too ass-backwards, too carefree. It is a little bit paradoxal and I can't (and indeed, am not even going to try to) explore all the intricacies and quirks that we ourselves have grown to accept a fundamental part of this team. But will talk about some things, for you, and maybe for myself to better understand who we are. Here we go:
The two primary challenges with our work is the gigantic scope of our project, and managing the large amount of people working on it. I think we all freely admit that we are basically completely unqualified to handle something this big. Still, we manage to get things done, it's just not all that easy. Our method of working is mostly without strict hierarchy (maybe we just lack a dev of the type required for that). Everyone has very clearly defined assignments, and they work towards completing them largely by themselves. We have a few slavedriver types who do take more global responsibility, and periodically prod the lazybutts into working harder, but imposing hard deadlines is obviously not possible in a project like this. Without a concrete motivator, it's really tough to stay on target sometimes. Duty, camaraderie, passion and such are good things and they drive us, but in the middle of the sea of developement hell, the faraway shore sometimes feels too distant. Anyway, everyone has their own job and they work towards completing it at their own pace.
That is the theory. In reality we spend an awful lot of time discussing about KS, our ideas, methods, giving and taking feedback about various parts of the game and so on.
Ideas and theories are the most open discussions, often leading to unexpected insights and new approaches that improve the game a lot. They are also the most stress-free discussions and often pretty fun. At this stage we often put a lot more stress to practicality and feasibility than other values, regardless of how cool an idea someone comes up with. We basically have a very strong picture of what the finished game will be like. Discussing work in progress is optional and sporadic. Usually it happens when someone is uncertain of how to proceed, or there is a disagreement of ideas between two or more people. Often interested parties have a general discussion, and either a consensus is formed or the ones with most stake or most compelling arguments bend others to their will. We also have a couple of options to solve complete deadlock situations (they are rare). Because art is much easier to grasp even when incomplete, it gets discussed much more often in the WIP stage than other areas. When an asset (means an element of the game, such as a bit of writing, a production art piece, a bgm track, a directed scene) is completed, it goes through round of commentary from everyone who is interested. Sometimes you really have to force people to give feedback, especially the less vocal devs. This feedback ranges from appraisal and approval to nitpicking on details to full-blown, brutal critiquestorm, at worst from multiple people at the same time. More work is done and when everyone relevant feels happy, it's approved as final(nothing is actually ever approved, it just means that nobody disagrees anymore, at least not enough to raise an issue). Generally, nothing that ends up in game is done by a single person only, but everything gets touched on by others, such as artists doing colouring and tweaking for each other, editors editing all script, writers helping each other, direction affecting absolutely everything and so on. An important thing here is that nothing ever satisfies everyone. There is a very intricate pattern of what must be according to whose standards, but every one of us has learned that working on something like KS is a game of give and take. It's sometimes okay to accept that not everything has to be exactly like you want. Sometimes you have to understand that something you want done is, in practical terms, impossible. In general, everyone has equal creative freedom, and this creativity we try to direct into a collective direction through our developement discussions. We hope that KS will end up looking and feeling like a game made by 15 clearly separate people, who share one unified idea about the game.
So how does all of this get done? We have five primary developement "tools", basically just methods of managing game data, information and communication: forums, IRC, MSN, SVN and Trac.
Unlike the rather... free-form public IRC channel, the developement IRC channel is strictly business-only. Sometimes some discussions that are not directly related to KS are held, for example often we discuss VN developement in a general sense, and a lot of meta discussion is held as well, but random banter and derailing is not tolerated. From this it follows that the channel is completely dead unless someone has some issue they want to bring up, in which case everyone who is around usually activates to throw in their two cents. The IRC is easily the most brutal, the most honest, the most direct and the most useful tool this project has. Right this moment, as I'm writing this, I'm also idly following and occasionally participating in a 50-minute long discussion about Hisao's penis in one of the Lilly path H CGs.
Important issues, especially ones where it's important to have a permanent recording, are handled on forum. Our spread across timezones and the necessity to make the posts more formal and concise than a freely flowing dialogue on IRC make having actual discussion on forum very clunky. One could say that forum is for longevity and IRC is for dynamic discussion. Many one-on-one conversations are held with instant messenging over MSN, often mixed with bantering about unrelated things, as many of us like just chatting with each other too. A key thing to understand here is that we all are unique. Some devs are way more passive than others, some talk only about certain things, and everyone has their own unique personality. Over time, devs have managed more or less to learn the best ways to communicate with others, but I can't say that we have it perfect by any means. Often there are conflicts of personality, misunderstandings and friction. There are some devs who barely ever talk to some other devs. In short, the network we form is not a perfect one, where everyone is connected to everyone else, rather everyone is connected to the devs they need to be, and to the devs they want to be connected to (Perhaps someone should do a 4LS relationship chart, hahaha). This also is a case of organic growth, evolution and adaptation. Everyone has managed to find their own niche in the dev team.
SVN is a version control system that allows all 15+ of 4LS devs to work on the same project simultaneously. Basically, it holds the master version of KS (as well as a memory of all previous versions, called revisions) and makes sure that all devs are kept up to date when new work is done. We average around 60-80 revisions per month, which means that new material or improvements/fixes on the KS project happen about two or three times every day. Naturally this is not an even distribution, sometimes nothing is changed for a week or so, and on the other hand for instance the week before Act 1 was released we were working at around 15-20 revisions per day.
Trac is a tool that is used by far the least, but it's invaluable near releases. It's a tool that keeps track of assignments, bugs, issues and problems, basically a huge TO DO-list. We feed it with everything that bothers us and needs fixing, and it tells us what everyone has to do before KS is done and can be released. It also has a wiki, but we barely use it, because of an interesting (and totally horrible, never ever do this on your own project) aspect of KS project: its documentation. A vast, vast majority of information of how the setting, characters, working methods, how ANYTHING works is not written down anywhere, in some neat documentation files. Instead all of that knowledge is shared between us devs, in a hivemind of sorts that has been growing for years now. As an example, there is not a single character with an official, written biography, but the devs to whom that information is relevant have it memorized, somewhere in their heads.
I looked at what I just wrote, and heaved a sigh. Once again, I think I ended up just talking about the superficial aspects, the mechanical way of how everything happens, and completely failed to really grasp the essence of this group. Maybe it's just proper. In reality, every day is different, every week something new comes up, every month something goes wrong in a catastrophic and spectacular way. But we go with the flow in our own way, holding ourselves together, working together, laughing together, mocking each other, getting angry at each other, because this is the only way we know.
» Discuss this post on the forums