Wednesday, March 2, 2016

Let's Make a VN!

It's been nearly four years since I last dusted this thing off. Well, this seems as good a place as any to talk about things, and I could definitely use an outlet to talk about my latest project. It may be interesting to keep a development blog for this, as I can remind myself of any lessons I might learn.

So, I'll just walk through my thought process. For so many years, it's been my desire to make a game. But I was always limited by something or other. I wanted to break into the video game industry somehow, but things always seemed to get in my way. It didn't help at all that the industry tanked, and I simply don't have the experience necessary.

The desire to create, however, has never really abated, and after a very long period of debate, I decided that there was only one way for me to get what I wanted. I would have to just take matters into my own hands. If I wanted to make a game, then by god, I was going to make a game.

Making games is hard though. I bounced between different engines and concepts, talked with some friends about one idea or another. Thanks to some collaborative projects I've done with one friend in particular, I settled on trying to deal with something that is well within my grasp.

I've come up with some pretty cool pitches before, all of which are rather difficult to implement the first time around. I may revisit those ideas at some point in the future. But the important thing, or so I have been told around the Internet, when getting started with game design is simply to make a game. It doesn't necessarily matter what kind of game it is, so long as it is a game. It probably won't even be very good. But if you can play to your strengths, and design around your weaknesses, you can create something that people enjoy.

Which brings me back to a thought I had nearly fifteen years ago: I should make a Visual Novel.

Over the years, I have continued running games, creating settings, and making characters. I like to think that in the last year or so, I've really been bringing my A-game. I've been thinking about how to make the most effective experience I can with the tools available to me. And I've also helped craft a few tabletop systems in the meantime too. So now, I think I have a fairly solid idea of what all goes into making a simple sort of game.

And let's just be honest with ourselves: If games like Go Go Nippon! can succeed, then by god I can do something at least marginally better.

I realized that a programmer wouldn't be very likely to fall into my lap, and my work schedule being what it is, I'd need a project I could work on in my spare time anyways. A VN seemed like the perfect fit. I have an art degree, I know animation and such, and there are plenty of tools available to me that I can use to craft the experience. Moreover, writing a VN should be a far simpler programming task to accomplish. But before anything can really be announced, I had to create the core game mechanics, and ensure that they worked.

This led me to Ren'Py - a game engine that was first conceived about fifteen years ago. I remember when it had just come out, and to my surprise it is still very much in development. So I began to poke around, and ask myself: How hard would it be to actually create a game in Ren'Py?

Not very, I soon learned. Thankfully my basic programming experience let me settle in pretty easily. I can read code to an extent, and while I'm no coding wizard, I can definitely read documentation and fumble around until I find the right answer, which is just my sort of pace. By proving that I could create even a very basic, linear experience within a couple of days of picking up the engine, it seemed much more likely that this could easily be done with a two-person team - with me assuming most of the workload, as it were.

I partnered with my friend, who had a pretty neat concept lying around, and helped her flesh it out. We created a basic world, and populated it with a variety of nations with which we could pull NPCs from. Within a week, we had a pretty decent background to set the game in, and I was beginning to consider how the game would actually function.

We had a setting, we had a game concept, and soon enough we had characters. But there was still one thing we didn't have: a working game engine. So with the background elements in place, I started working through figuring out how I could create something a little more complex than just a typical linear VN. I wanted to make something more like how I've set up some of my more recent tabletop games. I wanted a game that was a little more open-ended, that was more of an interactive story with multiple choices. A combination of the Mana Khemia series in terms of story - where things happen, and a plot progresses, but really the main fun is just hanging out with your friends for a year at school.

From there, the pieces just started to fall into place. I had a basic concept for how the game would progress, and as far as I'm aware, this isn't an approach many people take when trying to make a VN.

But of course, I know how I can be, and that I have a tendency to go a bit overboard sometimes. So I came up with some guidelines to follow, and once I've completed the playable demo, we'll see where things go from there.

The basic game itself (the demo, as it were) will only take place over a period of one month. 30-ish days, really. This cuts down on the work that needs to be done. But it's also very important to ensure that all of the game mechanics can be expanded to a full year if need be - since that is the original scope of the game. If this moves beyond the demo stage, I would like for players to be able to take their save data from the demo and pick up where they left off in the full game. It may be a small detail, but it's important to me, and it forces me to think further ahead as a result.

So I am left with the following problems to consider, as this is my first real attempt at making a video game:

- Creating core mechanics that are simple and engaging, which can easily be expanded if the game is ever moved beyond the prototypical demo stage.

- Keeping things simple enough so that my head doesn't explode from too many choices.

- Crafting an enjoyable experience where the choices the player makes actually influence the game, even if in subtle ways - I'm tired of skills being static things that don't really have an impact on how stories play out.

- Ensuring that no matter what a player does, the game is still somehow 'winnable' - whether they like the outcomes or not is besides the point. They aren't required to make friends with everyone, just to survive to the end one way or another.

- Letting the player's choices be dynamic and meaningful. The choice of what skills to progress during the course of the game should affect how the player progresses. Playing an angry warrior type should feel different than a laid-back artist, for example.

- Lastly, and perhaps most importantly: Make sure that all of these things remain simple enough for anyone to pick up and play.

They're fairly tall orders, but I think I can say with confidence that I can now achieve all of these goals. It will take a bit of time, but this is a labor of love, and if the demo is well received, that will let me know that I've done something right. In the event I've only managed to make a horrible trainwreck of  a game, well that's fine too - at least I'll have learned something along the way.

That having been said, here is what I have managed to accomplish in the day I've picked the project back up again:

- Implemented the skill system, imposed a class choice at the start (to determine your starting skills), and ensured that it functions as intended.

- Tested hiding certain choices if the player does not have the requisite skill - feature functions as intended.

- Tested conditional modifiers of choices - having skills at a certain level will cause the scene to play out differently. Feature appears to work as intended.

- Tested and confirmed working adding skill points as necessary.

All in all, I'd say this is a good start. Now while the core skill system is now in place, I need to consider the next major hurdle - implementing the class schedule, and ensuring that it plays out as intended.

Most of my work before today was poking at menus, figuring out how to adjust them as necessary, and moving them around to better fit all of the information I required. That was fairly easy work, I'm finding, but now I know which bits to fiddle with, and that makes this far more attainable.

Now comes the difficult part: working on the class menu, and making sure the schedule plays out as intended.

For anyone that cares, I decided to use the DSE (Dating Sim Engine) Day Planner and Event Manager to make my life infinitely easier. It comes with most of what I needed already built-in - skills and values for them, and most important an event manager that automatically checks to ensure sequences play out as intended. If you decide to go to the library in the afternoon and the lake in the evening, you can choose that at the start of the day and, barring something catastrophic occurring that would interrupt the next event, it will play out. (If you wind up passing out from an assassin's dagger in the library, well, you're clearly not going to be visiting the lake that evening.)

I'll wrap up this big long spiel with one last take on what I plan to accomplish in the coming weeks. I intend to ensure the core class mechanics work. Once those work, I can begin working out how to set up a rotating schedule for the five interactive NPCs with story arcs - as well as testing for events to play out in specific locations on specific dates.

I foresee the classes thing being a huge headache, but not nearly as troublesome as choosing which location to visit in the scheduler. Ren'Py doesn't support drop-down menus for some reason, so I will need to find some kind of workaround for that. One thing at a time though - first we focus on the class schedule, then we work out the rest.

It's going to be a fun project, and I suspect the biggest hurdles are now in front of me.

No comments:

Post a Comment