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.
Combining genres and target audiences in crazy new ways. Adventure Games For Women: Let's Do This!
Showing posts with label Agon and Alea. Show all posts
Showing posts with label Agon and Alea. Show all posts
Monday, October 29, 2012
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.
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.
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.
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.
SSH vs HTTP posting for GIT: What it means to be Artistically Technical
Acronyms, right? Do you know what SVN is? GIT? SSH? HTTP?
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Subscribe to:
Posts (Atom)