Monday, October 15, 2012

Hopes and Fears

So it's Monday Night and I haven't gotten done what I wanted to do over the weekend. In fact, looking back, it feels like I worked on a single problem, and that the problem I worked on wasn't the most significant of problems to the overall program. Nor, in fact, did I come up with the perfect solution, either!

This isn't true, of course, but in ways it IS what it feels like. I decided I wanted my character to be velocity driven because collision detection and gravity would work the most intuitively if I could work entirely with composited vectors. Also, I knew that I would be working with parts of Unity like Linear Interpolation and Coroutines that I didn't know anything about, and wanted to learn.

I also did a lot of brainstorming on my Fuzzy State Machine and what the finished Machine and the Baby Machine will look like.

But let's face it, I'm a newb! I've never been on a team that's going through Agile Development. As much as I say that my game is on a rapid development cycle and I'm taking an 'Agile' approach to designing it, that's not exactly true. The final scope of my project is definitely an Agile sliced of a final work, yes. But as for what I do day-to-day, I tend to spend my time solving problems the 'best' way I know how, instead of the quickest. And then if I have to abandon the 'best' way due to time constraints, well I just end up with the worst of all worlds.

Let's take this as a learning experience, however. I still have a number of weeks before the semester ends. But it's become clearer and clearer that I and my team are just not going to hit the October 31st deadline. That's okay. I didn't expect the HKDC deadline when I started up my project. I also didn't expect losing a grand total of 20% of my overall programming time to getting food poisoning (which is what the entire weekend DID amount to).  February is actually a very realistic date to shoot for, and if we can hit the November IndiePub deadline along the way, so much the better. Technically the SCAD winter break is very long, and it's more likely I can get a few freelance volunteers over the winter than during the grueling fall.

So you know what? I'm going to sit back and relax and just get what I CAN get done for the end of the class. I'm going to believe in myself a little more. And instead of worrying about deadlines, I'm going to worry about learning and developing my game. This is school, Am I right? So I'm going to study. Here I shall learn how to manage, how to think in terms of Agile development (I've got a few more weeks left to figure out what that means, and I can try again each week), how to network, how to increase my productivity, how to ignore my Email, and how to just keep my anxiety levels low.

The first thing I have planned for the upcoming week? To talk to myself! See, here I go:

Implement everything easy first. Pick the easiest implementation that exists. Okay, you wanted to use vectors for movement? Very well. You did it. Milk the functionality out of that ASAP. Your vectors give you the phenomenal bonus of being able to include gravity, so include it. You have a pose filter sitting around gathering dust. Implement it. After you have gravity, all you need is a simple marker with a bounding box to implement the hand plane. Even before you have gravity, you just need a marker with a bounding box to activate the wand. These are all 'simple things'. Leave the big projects like rewriting motion engines and creating fuzzy state machines for the weekend- leave the thinking for your emptier days. You have tons of tiny tasks that you can get done while your brain is half off and your emotions are crazy. Use them to reward yourself and abandon them for the moment if they resist you.

Utilize the time you have according to your ability. You know you have a lot of time at tutoring hours that no one takes advantage of, but you're too distracted to do much. Write blog posts in this time. Create homework for the students. Check your email. (Oh, btw, you have to check Student Universe to make sure your airline tickets updated, and call Air Canada about your cat). Put together your ACC portfolio. Research scholarships.

Or take these 'little things' that are easy to implement, and implement THEM. Use your 'half brain-dead anyway' time to get that stuff done.

The thing that I've figured out about maintaining anxiety is to be your own biggest fan and your own coach. I could be feeling stressed out about the fact that I implemented a single line on my task list, I'm a week behind, and I'm going to have to drop a deadline. But I'm not. I'm amazingly confident about the fact that this is going to work.

I look at the people around me and I know some of them are capable of pushing out code faster than me. I know a lot of it has to do with frustration- that stress, distractions, and any sense of doubt can chew hours off programming time. A surprisingly quantity of the time I set aside for programming sees me waking up in the middle of surfing Wikipedia going "How the hell did I get here? Wasn't I looking up Matrices?" And I know that I run into a lot of hurtles simply because I'm unfamiliar with the Unity 3D API and have to try a hundred things of varying complexity before I settle upon the most streamlined set of commands that gets what I want to do, done.

But then, I remember. I remember- as by now you should realize- to remind myself that I am not a programmer. I am actually extremely good at doing something that isn't even my job. I'm a game designer, a game developer, a leader, a person who solves problems by technical means in a creative fashion, but I'm really the gal who's supposed to be making the UML diagram, not implementing it. And here I am hacking away at command terminals and trying to find out the right way to multiply inverse Quaternions to write an engine for a style of game that doesn't even exist yet.

I started my game with six weeks of production time. I'm working with augmented reality. I have a reference for how long this kind of stuff should take, too. Game Company X, which I am familiar with, took two months and a fully fledged game programmer and another fully fledged artist, to create a game that can't do many of the things MY game can currently do.

If I'm lucky, it will take one more week and weekend to write all of the code necessary to implement the 'hard' parts of the game, that is, the Pos filter (so things aren't vibrating violently all over the place), the hand plane, the wand, gravity, and the ability to poke and pat my character and have him react to that poke and pat. Theoretically speaking, if I were SUPER lucky, I could comment back in my DeviceMotion support and it would work almost out of the box.

But what's really going to make my game shine is the fuzzy logic engine. I know that I'm supposed to be Agile- and I'm going to do my best. But that Engine is what makes or breaks my game. It's my prize. It's the thing that's not going to be ready for the October 31st entry date, and it's the reason I'm probably going to pull the game from that show and save it just a little longer. That's the thing I have to get done by November 14th. Not AR, not physics, not pose filters, or cute animations, or neat sounds, or interfaces, or system averages, but /the fuzzy engine/, and the scripted segment that leads up to it.

But I need everything else, too, to give it a foundation to stand on.

I take it all back. This is my goal for Fall Semester: To End Fall Semester with the same passionate drive that I started with, so that I feel compelled to work on my project all Winter Semester. I want to feel alive when November 14th hits. And I want to feel ready. Because February 28th I've got a present in store for the Indie Games community, and I'll be damned if I'm late on the delivery.

Heh. Want to know something funny? I just realized... That that long scripted sequence I'm semi-dreading to implement? Everything I learned today in my programming, and everything I programmed, amounts to the sum total of what I need to have in order to script it. Maybe I really do know exactly what I'm doing after all.

No comments:

Post a Comment