Monday, October 29, 2012

Indie Games Festival Submission

Agon and Alea is to be entered into the Student Competition part of the Indie Games Festival competition. This is pretty much just a practice entry run (the demo isn't show-worthy yet, and the IGF warns that 'in progress' games have trouble competing against finalized games) but yet it remains very important. This is where we/I learn how to submit games.

Every submission process takes work and attention to detail; but this one is made all the more complex by the fact that I'm scrambling to debug the project AND assemble art assets, all at the very last second. Which is made more complex by worrying about the submission process. For example, how am I going to submit an iOS game? I have no idea. Truth be told, I haven't even looked in detail at the submission process. I'm too busy freaking out about where I'm going to get three high-tracking student made marker designs tomorrow.

I suppose that's the next thing on my to-do list: Stop worrying about assets and worry about submissions. After all, we can keep updating the code forever if it pleases us, leading up to the show, and if we keep updating for a few days its likely those updates will be pulled when our project is judged. And, hey, It's not like we expect to win anything at this stage! We pass/fail solely based on whether we enter or not, not based on whether we win! So clearly I need to look back at my priorities and make sure we're ready to show.

Thursday, October 25, 2012

My Cat Feels Replaced



Tychus J. Findlay has been making it very difficult to debug Agon and Alea lately.

I had to take this screenshot by using my chin and free hand to press the requisite buttons on the iPad.

Tuesday, October 23, 2012

Why is Your Blog Purple?

Why is it that every 'games for girls' site is pink? I mean we are talking about girls playing video games. Nine times out of ten that means smashing down gender boundaries. So why the heck do these sites start off with a hot pink layout? Isn't that in opposition to the point of getting girls involved with games?

Why not green? Black? White? Or heck, just do things the brute force way, and make them red and blue. Can't get any more 'in your face we are tough gals' than that, right?

Now purple is also seen as an effeminate color. Not quite as effeminate as pink. It's the less popular, but nevertheless vitally important  'color to use for girls when you are tired of pink.'

So why is this blog purple?

Well I'm only asking the question so that I can bring us to an interesting topic, which is tagging/branding. For reasons that can probably only be explained by group psychology, certain kinds of products end up having a certain 'look' to them. This look has several properties. First of all, it tends to evolve slowly or not at all- it's tenacious, a 'default setting', and hard to budge. Second of all, it helps us visually group products, making selection, navigation, indexing, evaluation, etc. faster and easier.

Instead of girl's toys, let's use shampoo bottles. How can you tell the difference between a shampoo bottle for women, and a shampoo bottle for men?

I'll tell you how. They both provide visual clues. Sometimes the female bottle is more sensuous. Sometimes it has softer curves. But more often than not, these subtleties are unnecessary for anything but the most artistically designed bottles. After all, they're a little harder to notice from afar. If you want to call someone's attention over from halfway across the room, and you want them to walk to the right side of the shampoo shelf, there is one tried-and-true property that humans can spot from pretty darn far away. Color.

Thickening Shampoo

That's the sum of it. Color helps us sort. Color helps us find what we need. Color is fast, color is easy, color is convenient.

More importantly, humans like to sort. We are pattern matchers.  Our brains work best when we can group things. Humans like help digging through all of their choices. Humans like having decisions made easier for them- especially when they're only half paying attention in the first place. Imagine if every bottle in the store looked the same, and you had to look through each and every one and read the ingredients on the back to find the product that helped give you bouncier curls. And heaven forbid there should be curl-bouncing ingredients on more than one identically looking package! How are you going to decide!?

 Girl toys are packaged in pink because once the convention started, it made it easier and easier to find toys that were most-likely to be appealing to girls in the way everyone assumed was most-normal. After that point, any package not in pink would accidentally and swiftly get shelved into the excluded-from-products-I-need-to-look-through category. These quick mental heuristics, which helped people shop for their girls, created the wrapped-in-pink thing. No product could compete with a near-identical product in pink- Not because pink was 'better', but because without the pink it couldn't be found.

A big chunk of my research is devoted to studying this phenomena, because my target audience is ladies. Ladies who have extensive shopping experience and well-trained mental heuristics to narrow down what products are for them. Which means that if you throw a video game at them in all the normal video game trappings, not a single dame is ever going to touch it. She's too efficient. She can't bother with packages that don't meet her mental model. She doesn't have time to waste on you, just like she doesn't have time to waste on the six thousand masculine first person shooters out there. There are too many products out there vying for her attention.

So you have to find the proper clothing to dress the video game in. You have to meet her mental model. You have to let her know, by the external features of the package, that this product is intended for her. That this is a female product. You need a voluptuous shampoo bottle with a video game inside it. You have to signal to her quick an efficient mind that this game (or whatever it is) should be placed in the 'products I need to look through' category instead of the 'products not for me' category.

Now here's the kicker. The appearance of the packaging is frequently unrelated to the object inside. More often than not, if you unwrap a covered-in-pink item from the toy story, you'll find that the interior contents are not-pink. The doll is dressed in red. Or green. Or yellow. Cause girls get bored of visual sameness much faster than guys, actually. The pink is not the product. The pink is a signal. A tag in the cloud of life. The pink is for sorting algorithms. The pink is not the staying factor, it's not even the hook! It's a tag. Nothing more.

A woman will sort the objects into a 'review this' category based on the tag. Then she will evaluate it's hooks through the title, easily accessible details, and exposed visual details. If hooked, she will turn it over and glance for any issues or problems, such as age unsuitability. But what will make her come back and buy it again and again and again will be her evaluation of what's inside. And usually she has to sort, get hooked, evaluate, buy, and bring home long before she actually gets to the insides.

So why are girl gamer sites pink? To let you know you're in the right place. And why is my blog purple?

Because I am Gaming Imperatrix, and purple is traditionally the color associated with the Roman Emperor.

...

What did you think I was going to say?

...

Look up Sumptuary Laws of Ancient Rome. Only the Emperor was allowed to wear purple, so one could quickly and easily distinguish individuals based on rank. Kinda like identifying shampoo bottles.

Sunday, October 21, 2012

Spartan Dummy Hero Takes First Steps....

Agon and Alea is doing good, though I left my posse alone for a week and they need me to reinvigorate them. I was too deep in programming and didn't surface for air!

Here is the result of four weeks of hard labor: Our dummy spartan stand in takes his first virtual steps into the real world, bug free and lookin' fine!



This is an important milestone, because not only have we reached our first major functional build, but also because this is just after midterms when my team needs something to invigorate and inspire them. I sort of had to neglect them for a week to get this out.

Now I can show them what they have been working on. Now they can see it with their own eyes.  And now they can be absolutely sure I know what I'm talking about, and that I'm not going to let them down. I hope this will give them some of that much needed Vim required to keep a person going in the middle of the semester.

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.



Management and Brainstorming

Management





Brainstorming


























SSH vs HTTP posting for GIT: What it means to be Artistically Technical

Acronyms, right? Do you know what SVN is? GIT? SSH? HTTP?

Tagging People


When a person in my industry self-identifies, they usually give them-self some sort of appellation  There's an adjective, a tag in there. A person may be a Business Person, an Artistic Person, a Technical Person, a Communications Person, a Managerial Person, etc. These aren't related to a person's job, or place in the company- well, not by causation, anyway.  An Artistic Person thinks with the right side of the Cerebrum. A Technical Person thinks with the left side of the Cerebrum. A Business Person thinks with the Cerebellum.

Okay, that was mean. But you get the point.

But as a Game Developer, I find that I get no part of the brain assigned to me. Depending on the phase of the moon and the disposition of the client, I am a Technical Person, an Artistic Person, or a Business Person. There really doesn't appear to be any 'Developer Person' role.

This presents a problem, because, as a Game Developer, I have a totally different purpose than someone who sits soundly within one of these predefined tags. If you just arbitrarily call me an Artistic Person because you know I can draw (a little), it seems then as if I become a FULL ARTISTIC PERSON, bound by the metrics and expectations that that post encapsulates.


Role-playing Metaphors



Let's use a DND Metaphor. This is like there are only three classes that anyone ever talks about, "Warrior," "Cleric," and "Rogue," and then me rolling up a Ranger. After that, give that I can fight, cast a little magic, and sneak around, you call me a Warrior, Cleric, or Rogue respectively, depending on what you need at the time. But doing this is going to frustrate our relationship: I can't live up to any of those three classes. In fact, my purpose is totally different from all three of them. Like I have a pet bear following me around, for starters.

So let me tell you what I'm actually good at. First of all, I can wear a lot of different hats. But second of all, the hats I DO wear, are different from the ones your straight-discipline guys wear.

I wear the hat of leadership. Ordinarily this would mean I'd know how to motivate people and seize the day. But specifically to me, I trade off some of the specialty leadership would ordinarily afford and exchange it for a competent and fairly detailed understanding of the development  process as a whole. A pure-blooded "Leadership Class" person has spent a lot more time learning how to manage time, keep on target, and set goals than I have.

But my derivation of the "Leadership Class" is synergistic with all of my other 'Development' hats. I've traded off some time I could have spent purely on leadership for a set of different skills that affect me in many ways. I know how to talk to programmers, to artists, to writers, to business people. I understand the relationships between the different parts of the whole, and where fractures can cause an entire company's development process to ground to a halt. And a totally self-contained "Leadership Class" couldn't do that.


My Two Hats



Now if you asked me, I wear about two hats. The first hat has to do with Leadership/ Production/ Management /Networking/ Business. This hat is newer, and I'm still working on developing it and integrating it with the rest of myself.

The second hat, much older and more established, is the Artistic/Technical hat. Right now, if you asked me what I am, and 'Designer' or 'Developer' wasn't a good enough answer for you, I'd tell you that I am an Artistic Technician.


Artistic Technician


So what does it mean to be an Artistic Technician? I am obviously not an Engineer or Computer Scientist. I'm not even a Computer Programmer. But I am also not a Writer, not an Artist, not a 3D Modeler, Texturer, or Character Concept Artist.... What exactly is it I do? Certainly I can do SOME of all the above tasks, but none as well as a specialist. To fill in their boots is to be a Ranger filling in the role of an absent Warrior.

Where's the bear that follows me around?

An Artistic Technician's strength comes from their ability to apply a wide variety of unrelated disciplines to a seemingly unrelated problem. We are cross-disciplinary creative problem solvers. At first this sounds like I'm saying I can solve Artistic Problems, but I only have half the Artistic Tools- and that I can solve Programming Problems, but I still only have half the Programming Tools.

Not so!

The real value of an Artistic Technician is that I can solve Artistic Problems with Neurology Tools, and Engineering Problems with Interior Design Tools. Here's a case in point: an Engineer has written a piece of software that can do unusual computations. Right now, he is working on trying to find the perfect technology for programming a computer to drive a car. Everything going on in his mind is related to camera vision. His narrow focus means that he is able to reach out very far in one direction, but simultaneously he is aware of few disciplines outside his own. He can neither pull nor push ideas to or from those other disciplines.

As a Artistic Technical person, I don't have the in-depth understanding of camera vision to program very sophisticated vision software. In fact, I'm not even up to date on all the technical jargon for the discipline  or the latest algorithms. But I have the baseline tools. That is, I have the access tool that allow me to peer into any discipline and follow a quick path from no understanding of a given subject to a functional understanding of a given subject in a very quick period of time. For any discipline.

So although I'm currently designing a game for children that involves spelling, I can A) translate a game problem into generic terms, B) go out, research, and find a few disciplines that may be able to yield solutions to my generic-ified game problem, C) find the engineering paper on computer vision, D) read and comprehend the paper sufficiently, and E) take his work across a wide variety of disciplines and apply it to video games totally unrelated to computer vision, who merely use the technique in order to augment the 'fun' factor.

And likewise I can take anything a fashion designer knows about how the human eye registers distinct visual objects, and talk to the Engineer about it in terms he'll understand. My knowledge might change the way he thinks about the problem he's trying to solve, and inspire a solution from an entirely new angle.


So What are SSH, HTTP, and GIT?


Lately I've been working with Social Coding frameworks in order to make my coding process smoother and more intuitive, and so that I can develop simultaneously on multiple machines. I had never done this before, and so ran into a lot of hiccups as I struggled with alien terminology and command lines.  Of course, the process of working with the Social Coding framework has probably taken up more time than it would have saved- but that's only for this specific six week project. Now that I have an understanding of how social coding works, I am going to be able to understand similar paradigms forever- really useful given that odds are most of the teams I'll ever work on will use some form of Social Coding framework.

A network person might laugh in my face at the difficulties I had. After all, countless thousands of people out there all use Social Coding. It's not like I discovered a new planet, here.  But the issue at hand here is that those people are usually working IT jobs. I'm a Technical Artist. Am I just fooling around with stuff I shouldn't have to know, ignoring my true discipline? Heavens, no!

Just imagine down the line when the IT department and Art department are arguing over an asset that has gone 'missing' in a network Commit, and no one can seem to make the other side understand exactly what the 'problem' is.

My talent is not in understanding everything. I trade off having an in-depth internal library of knowledge concerning every one subject in exchange for having the baseline tools to understand just about anything. And then I only learn tools as I need them. I am an interpreter, not a compiler. And I like that word 'interpret.' Because not only do I absorb skills precisely in the order they become useful, but I also interpret between different disciplines.

 I cannot stress how important this is: because usually the different disciplines of the world all 'know' certain things that they've never shared with other disciplines- things that would make everyone's life a lot easier, and advance technology a lot faster. Imagine if your teacher actually understood how to use all the technical tools available to them through the school. Imagine if they knew how to use every feature of blackboard, and had a thriving internet metropolis of ideas flowing about online as a result. Imagine if the guys who build blackboard could actually talk to the teachers, and redesign the system for increased usability.

Cross-discipline problem solving is everything. For the everyday layman, every technological problem they could ever have has already been solved by someone out there- they just don't know how to find that info or what to do with it if they find it. I'm the missing link.

For games? For one of the most interdisciplinary jobs on this planet?

Cross-discipline problem solving is probably the most valuable skill a developer could have.


Git, Plz


So what did I do? Simple on the face of it. My GIT repository for social coding was having difficulty accepting HTTP posts that exceeded a certain size. Although I was pushing <50MB, the system was slowing down and hanging and the remote server was hanging up unexpectedly. Part of the issue may have been when I re-imported my Spartan King prefab from the Asset store in order to get back some animations that had gone missing along the line.

I simply upgraded my system to use SSH keys, which all in all took about two hours with some setup and troubleshooting guides and an alternative .bashrc script I found on Stackoverflow while Googling. Then it worked like magic and I've been pushing fine ever since.

If you understood a word of that, you still might not understand why my skill set is so valuable because you underestimate the difficulty of what it is you already understand, and you also have no way to gauge how difficult other aspects of my job are, like designing this so that it stretches properly in the Unity 3D engine:


For those of you who didn't really understand a word: rejoice! I exist as a point of communication between you and the tech guys, and I can report back simply this:

I put together a system so you can download the latest version of our project from any computer in the world. It's always up-to-date. We got a bug in the system when the project started getting too big. I fixed it this morning. This means it is going to be easier to back up and archive our art from now on.

Sunday, October 14, 2012

The Terminal and I

I and the Terminal/Command Prompt are on a whirlwind, vicious love affair, which started out as an arrangement of convenience and has quickly exploded into a blazing inferno.

Maybe it's me. I admire a program of high competence .. but more than that... the Command Prompt really communicates with me. No endlessly spiraling beach balls .. no progress loading bars that never move... Hell, even when I don't know what it's saying, it's talking to me.  It's a polyglot after all...

Yeah. Command prompt. I love you. For now. Now get my Mac through this strange remote end hanging up unexpectedly error, please and thank you. We'll keep talking if you somehow figure it out. I'm posed to do the craziest merge since I started this endeavor and I can't afford to be late."

Saturday, October 13, 2012

MonoDevelop

MonoDevelop is the tool that comes with Unity that's used to write scripts. It's invaluable, has phenomenal auto-completion, and really I wouldn't want to code without it.

Somehow I deleted something essential to its operation and it crashes on every save. I'm trying to revive it now with every inch of my technical know how but it may be too far gone.

Edit: (My Solution)


I ended up installing the standalone MonoDevelop, which is actually a much more current version than the one packaged with Unity. It doesn't Sync with Unity quite as well, and you have to be delicate with it, but it's capable of working with a GIT repository on Windows being active in the same folder without crashing (Especially if you disable the GIT plugin), which is more than I can say about the built in Unity version (which was crashing left and right, unable to save anything).

I cannot open files from within Unity, but I can create a complete Unity MonoDevelop project by clicking "Sync MonoDevelop Project" I get all the code completion, the Assembly Browser for Unity functions, the help, the debugging... all I have to do is manually look from the Unity 3D console to the MonoDevelop line number to make everything work. And I can open files from the MonoDevelop project hierarchy. So you know all in all I'm not complaining.

It works 95% of the way, the only inconvenience is I can't directly click on Unity Console errors to have them pop up, and I have to remember to open scripts in the Mono hierarchy, not the Unity one.

Thursday, October 11, 2012

Dynamic Fonts

So remember how I promised myself to get my social coding up and to not worry about programming till Friday? Well, It's Friday. I'm having trouble restraining myself from tutoring (I spent a few hours on it this morning despite promising myself not to). But I got the whole of my social coding beast up and running at about 12:00 (when I stopped tutoring). After that it's been like lightning jumping back and forward between two computers, sharing references across them, debugging on both machines, etc.

I solved an irritating bug in about 15 minutes. Building to the iPad now to see if it will run for me. If it does, it'll be the first glimpse I get of the game running on my iPad with the GUI intact, and I'll take a screen and post it.

Man, GIT is sexy for what I was going for. I usually don't like interacting with the command prompt, but at this point even the command prompt is totally sexy. Like a completely non-issue. Everything is up and running like a well-oiled machine. A purring sports car.  It is an utter relief to use both machines available to me at max capacity- and trade code with computers at school- with no impediments or frustration in the way.

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?

An Interesting Problem to which Coffee is the Solution

School computers always present interesting conundrums for tech folk. On one hand, they are equipped with a lot of software that we- especially if we are the dreaded hybrid creature known as the 'tech-artist'- cannot afford on our lonesome.

And, you know, they provide work stations away from home, enormous screens, additional storage space, and most importantly: the ability to do 'other stuff' when we are supposed to be working. Depending on the school, they may be equipped with powerful hardware. They're ubiquitous; instead of lugging around a high-powered laptop, we can jump on a computer with the same account no matter what building or room we're in.

On the other hand, we don't have administrative rights to them. We can't install anything on them. There are a lot of constraints on the machine. Stupid things don't work. Command terminals are blocked. System Preferences are turned off. Annoying buttons are pre-programmed and can't be disabled. There's a whole lot of any school-based computer system that the average tech person doesn't have access to, restricting what we're capable of doing. And this can be very frustrating when we're trying to accomplish relatively simple tasks.

Given a spot of cleverness, it is of course possible to bypass system restrictions and install programs on school machines. Bare in mind that this means the programs will usually only be installed on a single machine, and these programs wont carry over from compute to computer. Which really causes either a lot of work as you install your programs on every feasible computer workstation you might need to play with, or else a lot of limitations as you are constantly forced to go back to only one workstation. Not an option for licensed tools, assuming you have legit licenses (and usually you don't want to advertise your pirated software all over school computers where, you know, someone potentially could find it...)

Now I'm sure a true nerd could, after a few days of focused meditation in a dark closet somewhere, return and hack in to the school IT department and install their favorite programs anywhere they please, all while avoiding getting caught, and still managing to keep their Apple Developer License information secret and safe and restricted to a single account. But for the rest of us, finding workarounds becomes a useful skill.

It is possible to find portable executables for Windows development machines, and often these are a saving grace. But in an art school, where anyone might divide by zero and open up an inter-dimensional portal at any moment, a chained Mac can be irritatingly dense and inaccessible.

The solution, often, is Java.

I hate Java. I'll be the first one to tell you I hate Java. I hate that Open Office uses Java. I hate that my undergraduate university, The University of Central Florida, had a Computer Science program where the students all learned C, and then Java, and then nothing! They were sent out into the world believing that Java was a gift from the heavens! They were never taught C++ or any sensible programming language! And they wanted to make games! Games! In Java!!!!

While Runescape may be the only Java game that ever succeeds, ever, in the full sum total history of the world, Java serves another extraordinarily valuable purpose on those school computers lucky enough to be installed with self-updating Java run-time environment: Java programs are platform independent, need not be installed, and just work. Java can bypass most of the limitations of a school computer, providing things like command terminals when terminals are disabled, whole suites of software when technical tickets go unanswered, and even just simple productivity widgets like digital flashcard helpers.

And don't get me started on networking! SSH, FTP, SVN, GIT- you name it- if it has an acronym and involves something concerning networking, someone out there made a java app for it. It might be a little flaky, and it might not run correctly until you wiggle a few parts and flop on some duct tape, but Java WILL save your bacon, come hell and high water, no matter what goofy school restrictions stand in the way.


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.