Monday, December 12, 2016

How do you make a game?

Today I'm going to take a break from what I've been writing about lately to talk about new lessons I've learned as an indie game developer (and why it feels weird to call myself that). While I won't be talking about programming issues (at least not directly), I'm going to instead discuss some of the other lessons I've learned the last couple of months.

So hopefully someone out there finds this useful. I need a break from the usual thing anyways.


I've said here before that making games is hard. And this is a thing that I don't believe will ever not be true. You can start small, sure, but that won't really get you very far in terms of experience. Eventually you're going to want to get bigger, better, more complicated. And that's why making games is hard - there are so many hats to juggle, and it can be a right challenge to keep it all in order.

When I started to write a novel almost two years ago now (crazy how long ago that was), I learned a great deal of lessons that I think will apply here. The first was to set goals that can serve as guideposts. For context, I wanted a novel to be approximately 60k words. I wound up surpassing that amount, even after cutting out an entire section because I felt it would drag things out too much. In retrospect, it probably would have sent my total closer to 80k before editing, and that felt insufferable to me.

However, I didn't write anything for a good six months because I ran into a very real problem around the midway point: I had no idea where to go next. I knew what things kind of roughly needed to end up at, but I had no clue how to get there. So I stalled, and did nothing because I had no clue what I was doing.

Eventually, I fell back on the wisdom of all those creative writing classes I took in elementary and middle school: I wrote an outline. Then I wrote a timeline of events. I detailed all the story beats, and left myself plenty of wiggle room to adjust plans as necessary. It's the reason why the person I slated as being the main character actually wound up taking a back seat to the real main character, who I discovered to be a far better fit for what I was writing.

Why does all of this matter? Well, it's because it all ties into a theme. See, there was one other lesson I learned when I was writing, and that it was to set a very real goal for myself: Write 300 words a day. That was it. Just a small thing, and I could go over it all I wanted, but I had to try to average that as much as possible. Knock out 1500 words in a night, cool, that's almost the entire week in a single sitting. Knock out double that? Heck that's almost the next two weeks' worth. It also helped give me a deadline to finish it by - the end of February. I wound up meeting that goal with a few days to spare.

Henry Ford once said "Nothing is particularly hard if you divide it into small jobs." I took this approach seriously, and what once seemed to be an insurmountable task was suddenly very attainable. At 300 words a day minimum, I could knock out an entire 60k words in a mere 200 days. That's about 7 months. Adjusting for writing over target on a fairly regular basis, you could easily push that down to six months.

This is important to the story because it ties into what got me into writing a Visual Novel in the first place. Because you see, once I finally finished the novel, and sat back and look at what I'd done, I said to myself "if I can write a novel, I can make a VN."

The thing here is that writing a VN is vastly more complex than merely writing a novel - especially when you start complicating matters with branching paths, conditional statements, and skill checks. When you start adding more and more moving parts, it becomes a nightmarish mess.

Let's pretend that you want to make a Mario game. That's a simple game, right? You could make a single level in, oh, let's say two hours. Congratulations, you've done a thing. But now you must do that thing fifty times over. Two hours becomes a hundred hours. Then you have to tie everything together. You'll need the levels to have similar themes during 'worlds', you'll need to create all of the art assets to build with, you'll have to get the sound effects and the music and everything else all tied together. That doesn't even count creating a title screen, passwords, secrets, linking the stages together, crafting a narrative (loose though it may be), and setting up all of the core game mechanics.

That's a lot of workload to juggle, even for one person. And that is a 'simple' game.

When I began work on Cranberry Jam (our project title, but not the title of the game itself), I thought to myself that this was a project I would work on by myself. Truth be told, had I done that, I likely would never have gotten as far as I have. I've had a partner in crime from the start who has been instrumental in pushing me to the point I've come to - the point where I'm on the cusp of releasing the first alpha build for people to test.

Let me tell you, that is a scary thought. People going through this thing I have poured literal months of my life into. It's downright terrifying.

I let my partner do a lot of the writing. She took the ideas that I put down, crafted some characters, and together we assembled the setting, and made a lot of decisions about the setting itself. But the game flow, the programming, and all the management hurdles was a thing that was squarely in my domain. This was my vision to begin with, but I was merely borrowing some of her ideas and helping adapt them for the project.

Making a VN is a simple task compared to what I proposed. This wouldn't be a linear experience, but rather it would borrow a lot of the philosophies I use when creating a narrative experience for D&D games. I wanted to try to make something that felt like you were playing an actual roleplaying game. So what I decided on was a VN with some Dating Sim elements - a daily routine with a time limit, and choices to be made by the player on a regular basis.

I'll probably talk about this some other day, but the very first VN I ever played was one called True Love. It's fantastic, and unfortunately it has spoiled me rotten. I've never really played something of that caliber since. I'm aware that there are other titles like it, but there's something magical about that which has stuck with me for half of my adult life so far. I was aware that there were 'routes', but that didn't feel like the 'right' way to play the game. I was having fun just exploring things, getting to know people, and going about my 'life' and seeing how things unfolded.

I wanted to take that experience, but try to one-up it. I knew it would be a hard task, but that was my goal. I had - and still have mind you - something to prove. To myself perhaps more than to the rest of the world. I wanted to prove that I could do this. That it was possible.

These motivations are pretty important to what I'm talking about here: That there's a very particular way to approach this sort of thing. Whether you're working alone, or working with a team, you have to keep on top of where you stand on all things at all times. Working alone, you can let a lot of things slide, but the instant you add another person to the mix, you absolutely need to keep track of what work has been done, what work is in progress, and what work is left to complete. And you need to be aware that there's probably a lot of other tasks you haven't even dreamed of that will need doing.

It's a daunting, exhilarating, and ultimately terrifying prospect. Not to mention exhausting. But if you do like Henry Ford said and break it down into very small tasks, nothing is insurmountable.

But like I mentioned above, when you have a team working on a project, you're going to need a way to facilitate communication - doubly so if they are working on the same part of said project. Otherwise, you have two people editing the same sections of code at the same time, and now you've just wasted time that one of them could have been working on something else.

There are a lot of tools out there, but I highly recommend using some sort of free, team-based pinboard that you can create checklists on. For example my team is using Trello - it has a lot of cool features that we'll probably never use (like integration with things like github). It provides everyone a set of lists they can look at, to determine what's left to be done, what's being worked on, and what they ought to be doing next.

But setting all of that up takes a great deal of time, and it requires you to break down your very complicated project into very tiny pieces. And every time you add a little more, you need to make those tiny pieces part of the plan so that everyone knows where they stand at any given time.

You're also going to need some way to share information: documents, files, game builds, pictures, etc. I suggest Google Drive - it's done wonders for me so far, but sadly it doesn't allow for everything - that's where Trello came in.

You'll also want to invest time into making spreadsheets to track information too. What kind of information you want to track is up to you, but it seriously helps to visualize information in different ways. Creating flowcharts for your character arcs, for game flow, for how your game operates can also be useful - I've used draw.io for that, which also can be integrated with Google Drive, and can save you some headaches in the long run.

What I've learned these last few months is that even for a small team of two or three or five people is that there is a ton of information to track at all times. Tasks you will never have considered will suddenly pop up once you realize you didn't have a plan for it. Case in point: Hiring an artist. Upon getting positive feedback from an interested party, I realized that after months of working on this thing, we had no central visual design bible. Something that would be invaluable to an artist worth their salt, and so we spent the next week and a half compiling everything we had so that the artist (and any future artists as well) would have a single document they could reference when creating any assets for the game.

After all of these words, it's time to bring this all home and answer the question I laid out at the beginning. How do you make a game?

You make a plan. Get an idea of what you want to make. Then, you break it down into as many tiny pieces as you can. Keep in mind that you'll probably have to break those pieces down too. Set some arbitrary goals and numbers. How many characters, how many plot lines, what kind of structure, what sorts of limitations. Anything you can think of - don't worry, you'll change it later.

Once you have your plan broken down, start figuring out who will do what, and in what order. Does the order even matter? If you're good at the planning thing, this will be evident (obviously, it's smart to set your core game mechanics down before you even start thinking about the art assets).

Then, you start to manage the delegated tasks. And you go through, one by one, checking off all the little boxes until everything is done.

That is how you make a game.

As I'm moving along, I am starting to realize that this mentality goes far beyond making games as well. It applies to any sufficiently large undertaking. Whether it's writing a series of novels, creating a webcomic, making animations or creating a 3D model. This approach can apply to so many walks of life.

I have to wonder if a lot of reasons that people fail is because they lack proper planning. They don't ever have an idea of how long things take, or how much work is left to be done. It feels like nothing will ever get completed because they can't see what's left - or because all they see is a giant hill that they can never climb.

To climb a hill, you must put one foot in front of the other. Ten miles can seem like such a long way, but if you walk two miles at a time, you'll get there eventually.

It's all just a matter of perspective, and that's perhaps the biggest lesson I've learned these last few months.

1 comment:

  1. Thank you for posting this! I came here looking for the difference between "call" and "jump" in Ren'py. I stayed because your situation is almost like mine but I have just started and this is really helpfull so thank you again.

    ReplyDelete