Showing posts with label Self Pep Talk. Show all posts
Showing posts with label Self Pep Talk. Show all posts

Thursday, October 18, 2012

So What is Agon and Alea?

Agon and Alea is a game for ladies. It's about heroes and companionship. It's on the iPad and uses new technology ("Augmented Reality" to bring a small digital character 'into' the real world, so she can see it standing on her hand (A bit like the Holodeck from Star Trek). This character is a social and emotional toy one can play with, and a little like a digital child, boyfriend, and pet all wrapped into one. Agon and Alea is also an adventure game in which women coaxes this character through story obstacles and enemies to save the day.

When I started Agon and Alea, I put off starting my blog for about a month. I had no inspiration to write anything. Then one day, in the midst of frustration and uncertainty, I logged in to www.blogger.com and began vomiting my feelings and thoughts out into text. This kind of writing is really neat, really therapeutic, really enjoyable- for me. I read my own stuff, and I remember exactly how I felt- it's like a diary of my emotions, my highs, my lows, my epiphanies. Re-reading it is a real big emotional booster for me.

But then some days I just wanna get online and write down the whole cohesive narrative of what the heck I'm doing- instead of tossing around thought vomit ;)

So, what is Agon and Alea?

Graduate school is a doozy; I'm expected to change the world. I came in 'just wanting to make games.' Research sounded stupid. I wanted to make what I played, and play what I made. Strategy games. Horror games. Normal games, I now realize, but better than they had been done before.

Then my Teacher/Mentors stopped me in my tracks with a brick wall of graduate-level questions. I smashed into that wall over and over and over again, crying some days I was so confused about what I was doing wrong. Was something wrong with me? Was I just incapable? Why couldn't I figure out what he wanted me to do?

He didn't want me to do anything; he was trying to make me think about games. This wasn't to say I was adverse to thinking; quite the contrary! Actually, the issue was that we take for granted what we know, and it prevents us from exploring.

Somewhere through my first quarter here at SCAD, I began making breakthrough after breakthrough. Everything about my games changed. The gameplay became richer, more interesting. People started getting excited about what I was doing. I started getting excited about what I was doing. I started off thinking that some of the exercises I was being put through were just that, exercises.

My teacher would ask me to design a game for small children using unique input devices. Blah. That's not a horror game. That's weird edutainment stuff. I got in to this major because I liked Bioshock; not for LeapFrog.  But once I gave it a try, once I pulled out all the stops and really let my mind explore, I started coming up with some things I'd never seen or heard of before. The stuff I was coming up with? Actually meant something in the grand scheme of things.

I meant something. I had power. I could change things. I could invent a product that altered how people thought about something. Me, a game designer! I'm no surgeon, no rocket scientist, no lawyer, no judge. I'd told myself on occasion- whenever I was struck by the thought that 'video game design' and 'novelism' seemed petty in comparison to 'rocket science' (which I would probably also be capable of doing) that I would never want to be responsible for a project where one small mistake could kill a person. Holy crap! Why did I have to tell myself that!? Did I feel like I was wasting my talent? Did I feel like I needed a reassurance, or an 'out', or some explanation for my waste, and that cowardice was an acceptable excuse?

Who knows what I had been thinking. But what I know now is that my chosen career path requires greater courage- and provides for the chance to make greater cultural change- than any rocket scientist ever could. Engineers don't put their stories, their messages, their immersive interactive experiences, into the homes and hands and hearts of today's children. Not really. Not like I can do. I am in an immensely powerful position. My mentor taught me that.

Agon and Alea is an amalgamation of everything I learned about myself and my talents in Interactive Design 101 here at SCAD. And a composite of everything I've learned since. It represents who I am, what I'm good at, what I'm passionate about, where the core of my heart is. For me, games are a way to make the fantastical, real. They let us leave the real world and explore an imaginative space- a fairy world- and then return home safe and sound. To me, each game is a Where the Wild Things Are or a Slumberland. And I'm really big about getting anyone and everyone to get up and let their curiosity lead them off into these worlds, so they can play and escape and relax and wonder for a bit.

Agon and Alea is a video game for ladies. My target audience starts one or two generations my senior and stretches up through the baby boomer dames. My observation is that these are a group of women who just don't get enough play time. No one but Tide Bleach and Better Homes and Garden advertises for them. No one is encouraging them to play, wonder, escape, or relax- unless it's the time share industry (And the damsels and dames I'm aiming for are way too clever with their finances to get sucked into unnecessary time shares.) Even cruise lines prefer to target her children and husband over her and say - "Look, your family will have such a good time, so you should buy this!"

I've been conducting research on my target audience for awhile now. I'm looking both at women in this demographic who already game, as well as women who aren't drawn into gaming- and why. I'm trying to figure out how to make a video game that does something for her akin to what TV dramas do for her- but interactive instead of passive.

Now this is where the research comes in. Because anyone (and I do mean anyone) can look at what I've said about and quickly summon together an opinion about women. I often gets stuff like... let's see... "Hold on a second, you should know that women are more motivated by their families than men." Or "Women just enjoy passive media more than men." For some reason, people can snap together a gut instinct on the issue to explain away the current state of things faster than on almost any other topic.

But that's what my Mentor was telling me all that time ago when I started out my video game quest. You are taking what you 'know' for granted. My job is to stop taking all this 'common knowledge' at face value.  I am disinterested in what women are, or what we know them to be like. If women are one thing, a known constant, an unchangeable pillar, than there are no new products we can pitch to her. If she can't be altered or swayed, if she has no unmet needs, or if her needs are unmeetable, than we have nothing- as designers, developers, producers- to offer her.

But this is not the case. The minivan, tupperware, the microwave, the cellular phone, the right to vote, the dress suit, organized sports in elementary schools- these things changed what it means to be a 'woman,' a 'mother,' etc. forever. These products built on pre-existing utilitarian objects, but they opened up new channels, new forms of culture, new ways of being that previous products never had.

Designers changed culture by designing new and previously unthought of experiences for ladies.

Which means that if I stop accepting the face-value assumption that what women need is a faster can opener, and I start looking at the underlying requirements of her life, I can come upon the startling realization that she doesn't even need cans at all- she needs plastic tupperware. Alternatively, if I stop answering 'why don't women play games?' and I start looking at the underlying requirements of her life, I can find a need that only games could ever possibly meet.

My job is not only to question common knowledge, but to actually ignore facts (effects) about women all together and reach down to find out the forces that drive her. Women love collecting fashion objects? Okay. Why? What does that satisfy in her? What is she longing for? What does she lack? Who did she inherit this practice from? her mother? Her grandmother? Her friends? What need did it satisfy then? How was she first introduced to it?

Zynga asked those questions and realized that women didn't need a game about shoes. They wanted Farmville. They just didn't know it yet.

So Agon and Alea is a game about companionship, social play, emotions, moods, and heroes. It gives a woman a character she can respect- like the protagonist of a TV serial drama- but makes that hero small and slightly vulnerable to her and her alone. He (or she) needs the player's attention and care, and in exchange he is capable of great feats of intelligence, craft, acrobatics, strength, honor, and bravery. He is a character the player can take seriously, drawing in an audience that otherwise despises cartoons and mindless play. A character like Captain Kirk; or the protagonist of I am Legend; or Gregory House.

The character is unique to her, and remembers what she tells him. He has needs, wants, desires, habits (good and bad) and personality quirks. Some can be trained out of him/her; others he will convince the player to accept. The character is intelligent enough to analyze the player, and complex enough to be analyzed by the player, as both attempt to optimize their relationship while at the same time pressing their own needs. He is devoted, loyal, and while occasionally grumbly or aloof, he will always rush to the player's defense in a time of need.

Oh, and she can take pictures with him on her shoulder and send them to her friends.

Agon and Alea is a digital doll, a TV drama hero, a miniature friend, a fun toy, an escape into another world, and a facilitator of play- not necessarily for a  lonely introverted woman- but really for any woman who needs to recapture a little bit of the magic they experienced when watching a movie like Indian and the Cupboard, or from when they once believed their Dolls came alive at night, or Fairies roamed in the backyard garden.

My project with Agon and Alea has another big fundamental component: Distribution. But I'll save that for another blog post. For now, just know that while we spend a lot of time designing this game, we spend a lot more time figuring out how to A) inform ladies about our product, B) get the product to the ladies, and C) lower her guard enough that she'll be willing to give it a try.



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.



Thursday, October 11, 2012

My Relationship With Command Line

When you're talking about networking, social coding, or moving around files, you inevitably run into a terminal app or command prompt.

Which I hate.

I avoid them with a passion, using GUI interfaces even when everyone else around me is using terminal. I find all the latest interfaces with the best merging tools, the slickest designs, the most stability, the best integration.

So then.

How is it no matter what I do, I always end up back at the command prompt?



Sometimes its because people pay money for GUI interfaces, I'm poor, and my command prompt abilities provide me another alternative to shelling out 'the big bucks' or going without. Other times its because GUI interfaces can be buggy, laggy, constrained by strange Operating System Forces, or otherwise blocked by well-meaning school officials.

But really, when it comes down to it, the command prompt just tends to work. Whenever I find myself downloading a bunch of programs online, only to find one doesn't work, one is a 30 day free trial only, one is for the wrong operating system, one is non-commercial only, the other works only for a very specific situation, another is for the wrong software-

Those days? Dragon days?

Those days, all it takes is Google Git Bash Commands and a friendly command line, and I'm back on my way from the brink with a begrudging smile on my face.

Damn You Command Line. Damn you and all your wretched ilk. I suspect this will be a love hate relationship all our lives, in which you provide me with vague but functional data, and while I constantly wander off to date other programs, I always come crawling back to you. Damn you. Damn you for being so dependable.

Could you at least dress up for me once in awhile?

Wednesday, October 10, 2012

Agon and Alea - October 10th


My Cat Is More Interesting Than A Dragon


Today was about my cat.

My cat has something like 30 different pieces of paper, 7 vaccines, 1 microchip, and 20 blood tests to go through in order to get to and from my home in America for the Christmas Season (which, by the way, at the very steep cost of flying a cat, is my only Christmas present this year!)

He has extrasensory perception when it comes to telling when we're off to the vet. He will go outside for any romp or run, but the vet? Oh no. Today we got the rabies vaccine and the microchip, which at least means that he should safely be able to enter the USA. We still need to get three pieces of paper signed by a notary so he can stop over in Canada, all within a very complex time table closely surrounding my trip to Shanghai and departure date. "Time Sensitivity," is the word.

Yes, I know I'm doing an Agon and Alea update.

Agon and Alea - October 10th


In non-cat related news, Agon and Alea is still in development, and doing quite well for itself. Unfortunately, half a week's programming work was lost to food poisoning, and it's going to be difficult for me to make up the lost ground.

To conserve my resources, I'm changing off from showing up during my professor's C++ class, to focusing instead on helping the students through my tutoring hours. My tutoring hours really stacks my 'Time at SCAD' onto Tuesdays and Thursdays, leaving me a relatively clean Monday and Wednesday for development and handling personal issues.

I've spent this week working on a lot of things- getting a lot behind me- given that I was KOed the entire weekend. Most of them were personal, but I did manage to make some important strides with Agon and Alea. Last week I worked on the art bible and saw my game's concept art through to completion while grappling with the in-game math necessary to control my Augmented Reality.

This week I implemented the GUI interface which is going to drive the demo forward.

And today? Today stunk. That's why today is about my cat.


Hacking: Here There Be Dragons


No plan ever survives the first engagement with the enemy. Let that be a lesson to all future programmers out there. If you book every last one of your moments with a small task, you're going to die when a problem ends up taking 100x the duration it should take, and 100 small tasks seem to mount up on your shoulders like a horrific demon of time management.

One of the hurtles when developing with Agon and Alea is that I code on a wide variety of machines (PCs, Macs, and an iPad text editor) and the actual development machine is a seven year old hacked Dell Laptop running an old version of MacOS (Snow Leopard) with a 'clever' XCode and iOS SDK work around to let me develop for iOS 5.0 and 5.1 on my iPad2.  Oh, and it's battery just gave up the ghost a month ago.

Portable and 100% mine, the Laptop is a good solution to the difficulties and dangers of keeping my Apple Developer ID and other potentially sensitive information on an up to date school computer with power cord issues and a different version of MacOS. It also allows me to develop from home on weekends, holidays, and when I don't feel like going into school to compile my code.

On the other hand.... It's a six year old cleverly worked-around Dell laptop. Whose battery just died. The poor baby is flaky.

Now here's the issue. I needed/need a convenient way to get my code around. Dropbox couldn't do version control, and I started having strange errors where files were mysteriously disappearing or being replaced by unknown forces (my cat walking on the keyboard when I turned my back) and I was spending more time chasing down missing files than I was coding.


The Complications: Subversion


At the recommendation of a friend, I switched to using SVN (or Subversion) for all of my coding needs. It handles source code version control, allows me to use my computer as a server to pump code to any other machine I want, and is in general pretty intuitive and useful.

On a Mac. Before I really start using Unity 3D.

Any development IDE, from Xcode to Unity, allows for the editing of the file hierarchy, that is the moving and deleting of files from within the project explorer. The Mac best-solution SVN-integration-with-finder is a far cry from the Windows Alternative (very flaky  gets itself into errors it can't resolve super easy and needs everything to be deleted and rebuilt). Furthermore, any time you delete or move a file or directory in Unity 3D on either system? Everything breaks.

I really didn't know anything about social coding before going to work for Trader Analytics, but I'm very grateful for everything they taught me, and for the ways I was able to help them put together their project. While the GIT framework stumped and confused me at first, I now have an alternative, SVN, to compare it to. I also learned about things like the View/Model/View-Model development scheme (and derivatives).  But let's focus on GIT and SVN for now.

Since approximately 2:30pm I have been trying to take my fully functional code from my Windows PC machine, pull it onto my Dell Machine, and run it on my iPad.

The only significant changes from my last build that I have made at this point have been to swap out a white cube for an animated figure, and to implement the GUI, which is working perfectly on my Windows machine.

Three hours later, and my game still hasn't gotten safely from one computer to another.


Dragons: Have Nothing To Do With Coding


The Dragon in Computer Programming is The Unforeseen, Difficult-to-Pinpoint Hangup That Prevents You From Coding at all.

If you aren't coding, you aren't coding.  Coding is a relatively straightforward, speedy process. Sure, if you're like me, you run off researching unnecessary things every few minutes. But if you can restrain yourself to Googling only once per question coding itself is just a time consuming process in which work gets done.

It's everything else that creates horror, stress, and pain.

It's when there isn't a power outlet, or a broadband jack, or a broadband cable, or a mouse, or a reference, or a resource, or a plan. It's when the tools you're using start showing gaps and holes. It's when the tools you're using end up lacking functionality you expected them to have. It's when you try to do something that seems intuitive and obvious, but the framework you were experimenting in was made for another purpose, and shatters. It's when someone doesn't point out the obvious to you, and you walk headlong into a pillar.

These Dragons not only keep coding from happening because they take up a lot of time (and let's face it, they tend to take up more time than even just coding, because they're vague and amorphous and we really don't even want to solve them we just want to get to work, and then they start getting bigger and bigger, and we end up having to wait long periods of time for file transfers or gaps in our schedule or what have you to fix them) but they send us spiraling off into a mood from which it is impossible to code with any efficiency.

Your fingertips can only code as fast and as efficiently as your mind is working. When you have to sit down and find out why half your files are missing in between shutdown last night and power up this morning, it stresses you out. Your brain, which spent the evening piecing together your thoughts from the previous day and forming new algorithms, has been smacked upside the head and forced to solve a problem it doesn't care about, that isn't going to yield any immediate result on the final project, and which really shouldn't even exist in the first place. By the time you even manage to solve your Dragon (IF you solve your dragon) you are so frazzled and low on time that everything you do seems to result in failure. The next day you might as well scrap everything you did and start over from scratch.

The Computer Programmer Dragon Stinks. Precisely because it has nothing whatsoever to do with computer programming.


My Current Dragon is Subversion


Mine is currently the SVN framework, which doesn't let you edit files from within a project explorer. My solution is to transfer over to a GIT framework, which is going to take time and make it impossible to code until I'm done. On the other hand, once I do it- hopefully- it will make my life a little smoother.

But how do you know when to give up and do things the 'brute force' way of throwing everything on a HDD and saving iterative copies and just praying nothing gets lost? Experience, I'd wager. Only experience- and your gut- can tell you when one solution is bad and needs to be scrapped for another. Certainly you shouldn't rely on frustration. Frustration will just lead you to make a choice you think is 'easier' which will in the long run frustrate you more because your anger and stress will cause you to make all the mistakes you absolutely could not make when using the alternative solution.

Two choices have to be made. One, that the current software is not going to meet your needs. Two, you must decide what of your remaining choices IS going to meet your needs.

So first of all, can Subversion meet my needs? To me, the answer is no. No, it cannot. Why? Because Subversion cannot track when files are deleted or destroyed, it results in a lot of dangerous clutter I have to chase down and delete long after I've actually modified all my files. This is a problem because I want to do as little management of the repository as possible. I can't be hunting down and deleting needed files and trying my game one file at a time to see which ones went missing and which ones reappeared.

Unity really creates a lot of junk when running. A lot of junk. Junk that then becomes surprisingly necessary in order to get the file to run the same way on one computer as it has ran on another. If the junk fails to cache or update or not-update, or whatever the heck it is that the junk needs to do, the whole solution fails for reasons that make sense only to Zeus and the Olympian Gods. I either need to include or not include this junk very precisely, very easily, from update to update, with almost zero management.

Subversion can't do that, because Subversion files migrate out to each and every last remaining tiny directory, and the whole system explodes on me in a MAC every time something goes missing for even a moment. I've deleted my whole repository multiple times for this reason.

So is there a solution? Obviously I could copy the entire thing on to Dropbox, wipe my hands, and call it a day. Except that's where I came from and I know it wasn't working for me. Which means I know the HDD solution wont work for me either. I was losing files. I couldn't keep good-enough track of what was happening from iteration to iteration. as much as Subversion makes me want to kick puppies, I haven't lost anything to it.


GIT is Both a Solution, and a Another Dragon


So what's a solution? I can try GIT. It could be dangerous, it might come with its own hurtles (read: it WILL come with it's own hurtles) and take up even more of my time trying to run than Subversion. But since Subversion- by design- cannot serve my needs, it means I need to get off Subversion and on to something else. And since I can't work with Dropbox, it's time to move to GIT.

From my experience with Trader Analytics, I've been able to use GIT before, and I will be able to use it now. No problem. Should be easy. Still, it's a dragon. It's keeping me from coding, and upsetting me in the process.

How is GIT different from Subversion? Since it tracks from a top down framework instead of a bottom up framework (that's the easiest way I can think of to explain it, please do not judge my computer literacy on that one ;)) it simply doesn't have the issues Subversion has. With Subversion I found myself deleting whole repositories on both sides (server and client)  and using the Terminal to navigate through all my broken folders to find 'hidden' .svn directories and delete them by command line, only to recreate the repository and drag the files in all over again, rebuilding it from scratch.

And I'm not a coder, if you remember. I'm a game designer. If I'm working with the command line, I'm already grumpy ;)

With GIT that just won't happen. Furthermore, I'm more familiar with how to address repository conflicts in GIT than I am in Subversion, which, while it might be a lean mean super process, simply never got explained to me in a way that made any sense at all.

Of course GIT is gonna bite me in the foot and make me swear just like Subversion, but it will at least be able to handle the fact that I frequently move, rename, and delete files from within project explorers, and Unity likes to create mountains of crap to help it make games. GIT shouldn't have any problem tracking that at all. The only problems I should have are the normal repository ones, where I've deleted a file on one computer, changed it heavily on another, and can't figure out how to reconcile the two repositories.


So How Do You Deal With Dragons?


If one of the primary attributes of a 'Dragon' is that it makes it hard for all future coding because you're stressed and behind, how do you handle hitting one?

Easy. You just remember your Cat is a lot more interesting than Dragons.

When you begin having experience in something, when you've repeated a task multiple times, it starts being worth your time to look back and find patterns, to figure out where your best productive moments were, and what sort of pitfalls to avoid to keep the Dragons at bay. But when you're new- as I am- and everything is a shot in the dark before you start, you are never going to be able to stop Dragons from happening.

Let me put it this way: You HAVE no 'most productive' state, because you have no data about yourself to make that estimation by. There's nothing you could be doing better. You are already working hard. You are already trying everything you can think of to do the best project you can.

So Dragons are going to happen. Period. You try an engine, it blows up in your face. You try social coding, it ends up having a pitfall you COULD have known about, but didn't because there just isn't enough time to know everything, and life didn't get you to the tiny subsection of the FAQ you actually would end up needing. And hey, even if it had, you might not have recognized you needed it just yet!

You can't stop the Dragon from happening. You're too inexperienced to figured out when to put your nose to the grindstone (or HOW to put your nose to the grindstone), and when to back off and find another technology. You really have no means of gauging the most effective way to work, because again you have no data, no patterns, no material to make those predictions by. So your Dragons are going to be long, fat Dragons that are hard to get around and impossible to see the dimensions of, and everywhere you turn there are going to be more of them.


That Does Not Sound Like Dealing With It!!!!



Like I said, it's all about Cats. You can't control the pitfalls, only how you behave once you encounter them. You can't control hitting a wall, only how you feel about hitting the wall. You can't control the fact that the Dragon will stop you from coding. You can only deal with your efficiency once the Dragon is past and you're left with your own stress and looming deadlines.

You take some deep breaths. As you work through the Dragon, you focus on other things. The more 'other things' you get done while working on the Dragon, the easier things are going to be because you will regain a little control over your life.  While your code is compiling, you do your taxes. You take a nap. You go for a walk. Need to research? Do it in line for a bank on a mobile device. Or at the park. Or in a library.  Get out of the house.

Find some way to clear your head.

Debug with clear objectives in mind. Think "I am looking to diagnose the cause of symptom X by examining the states of Y, Z, F, and Q, and to do that I am going to write a script for 15 minutes that allows me to print that data to screen and log it for future reference."

Cook a meal that'll last you a week and refrigerate half of it. Make that phone call you've been putting off in between trying stressful tasks. Drink some tea. Drink a beer. Read three pages in a book that's sitting untouched on your shelf. Practice a single sentence in another language. Practice boxing on a punching bag. Go for a single lap swim.

I'm not telling you to avoid your Dragon. I'm telling you that if you focus on it to the exclusion of all else, you'll spin your wheels and accomplish things slower than if you find a way to control your mood through the endevour. This is all about yourself, and controlling whats going on inside your head. The Dragon is just a task- not some personified spawn of satan- and it can be completed through careful application of your task-solving skills. Like everything else.

Its your MOOD that makes Dragons huge. It's your mood that makes problems unsolvable. And if you can find the delicate balance that lets you do your work without avoiding it, while at the same time finding a way to control your mood. This is about ROI. Invest in your own well being the exact amount of capital that you need to in order to start getting a return from your creative/technical side again.

Or, in my case, pay your rent, sort out your plane tickets, get your cat his shot and microchip, take him for a walk to alleviate his stress, figure out your bills, and, setup GIT, and while you're at it realize that the reason that your program wont compile is because iOS is just turning its nose up at something it dislikes in the interface.

A day is almost gone, and no code has been written. And, probably, no code will be written. Not till Friday. Does that bother me? Sure. But nothing could have changed that. And I've a Cat to worry about. And if I can manage to focus on him instead of the Dragon, I'll wake up Friday to find my development environment set up and primed for my use, with my working code debugged, my social coding server largely functional, and all my other obligations taken care of.

And then, if I keep focusing on my Cat, I'll bet you I'll get a surprisingly amount of work done on Friday.

--Gaming Imperatrix.






Thursday, October 4, 2012

Agon and Alea

Agon and Alea is already turning out to be one of the hardest things I've ever done. Of my six weeks of production, two have already slipped by! I know if I don't start recording what I've done, I'll forget that I've accomplished anything at all, and begin to panic!

Ha! But there is no reason to worry, as the project is going smoothly and well.

I've engaged in many very difficult projects before. I built a 3D Real-Time-Strategy-Game engine for Honors Computer Science II, alone, and then carried out a similar feat later on in Flash/Actionscript 3.0 (Although I had help in terms of art assets and interface programming). Hard development work isn't new to me. When I started out Agon and Alea, I had no doubts that it was within my power to finish a game alone and publish it.

Only I suddenly realized that I didn't want to.

It was too simple.

What?

Well I mean sure the Augmented Reality and Fuzzy Logic were scary. They still scare the crap out of me! I'm working with new technology, new paradigms, new target audiences- new everything! And I still have no idea how I'm going to get the Fuzzy Logic engine up and running in the game.

But all of that is just work. There's nothing particularly scary about work. Work is doable, or its not. It takes time and energy. It ends in a product. Work is simple. Work is something I already know I can do. I'm a hard worker. I'm good at working. Work might be high-stress, high-uncertainly, high-fear, but it's not something I've never done before.

What I haven't established yet, is whether or not I am a good leader. Everyone around me seems to feel I'm up to the leaderly task, but the simple fact is that I've always been a loner- not a leader- and that once upon a time I even assumed the two were irreconcilable.

Now I know that I am- and always have been- driving towards a post of Leadership. So the question no longer is: Can I build a game? I already know I can. The question becomes: Can I inspire other people to follow me? My current project is to teach myself to answer that second question with a firm "Yes."

It is the most terrifying and difficult question I have ever asked myself.  I fear the answer, and yet I know I must not fear it- that I must be fearless and keep moving forward. The answer must become yes.  That is not to say I will crumble if this project fails- I know I'm a newb at inspiration and management and that everyone has to start somewhere and fail frequently. But I stake my existence on my ability to transform that answer, one day, on one project, into 'yes'.

Wait, what? But why? Not because I'd die or anything, that's for sure! Not because I'm emotionally dependent on my own success. But because I choose to do this.  I am a woman built on a foundation of strength and free will, and I am building my future. I have chosen to be a leader. And 'her' future existence, and my progressive transformation into her, depend on my ability to be or become fearless.

Why is it important for me to build a game? It isn't. Because I already can. Why is it important for me to build an unusual game? It isn't. Because I already can. Why is it important for me to publish a game? To get my name out? Why do I want my name out? So that someone will trust me to lead.

And so right now the most important thing in the world is not programming, or art, or sound, or job offerings, its not money or publishing or game engines or time. Right now the most important thing in the world is people, my friends, my allies, the people I care about, the people I want to see reach their goals, the people I want to inspire, the people who inspire me. The most important thing in the world is people. Other people. Myself, even!

Agon and Alea is the hardest thing I've ever done, but by no means the hardest thing I'll ever do. For me, it's not exactly a question of building a game. It's a lesson in bravery. The bravery to use new technology, to target new markets, to surrender perfectionism, to surrender control, to ignore fear, to ignore risk, to trust others, to befriend others, to inspire others, to lead others, to express my creativity, to understand my driving motivations, to harness my own energy, to strengthen my passions and convictions, and abandon my fears, and to make one hell of a good game.

I'm scared, now.

But I've already chosen: One day soon, I won't be.