Monday, November 12, 2012

Conclusion of Fall 2012

I gave my final presentation on Agon and Alea (AaA) today, just a few short days after submitting to the Indie Games Conference.

And How Does That Make You Feel?

It's difficult to describe the sensations going through me. I am at once joyful/hopeful/relieved/excited/satisfied and sad/self-critical/panicked/dissatisfied. I think the joyful is winning.

I wanted to do more. It was both expected and hoped that I would be able to do more. But I did a ton,  learned a lot, and grew immensely. Did I succeed?

Let's hit this from a side perspective. My limiting factor is neither talent nor time, but rather faith. Emotional faith in myself. In my own power. In my own awesomeness. When I have this faith, I am able to live my life with joy and inspiration; when I lack it, everything is a panic. Faith means I can do anything. Lack of faith means I'm paralyzed. And I've been having less and less and less "Working" faith as the years have gone by. Which means I've been plummeting into a pretty big, self-facilitating hole.

Right now I am playing a self-help game called SuperBetter in order to help me overcome my limiting factor. So my end goal for the semester wasn't to network, make friends, conduct a team, develop a game, launch a product, enter a competition, or further my eventual master's thesis. My end goal was to restore some of my faith in myself. To emerge from the fall semester, inspired and ready to go

Basically I need to start a positive feedback loop. If I can get to the point where I start feeling better about myself, the work will just start happening by virtue of my inspiration.

Starting that loop is hard. Especially if you look at the fact that certain things I'd wanted and expected to do, I didn't end up doing. Especially when you think that I'm already emotionally exhausted by my game, which I'd begun to feel I'd never actually make a dent in completing. I also kept feeling like I was performing a role (programming) that wasn't really my own, like I was being forced to 'waste my time' implementing something that I should have been able to hire someone else to do.

In light of that, we need some objective form of measurement. What is it that I feel like I'm failing at? What is it I could have succeeded at? Independent of my own mood, what tasks was I working at that could be used to gauge my success?

Well I'm a college student. And I'm trying to get the most out of my college experience so that I can one day end up working at the job that will make me happiest. Surprisingly, that definition of my actual goal doesn't say anything at all about teams, projects, modules, or what I did or did not get done. Logically, if I can demonstrate that I've grown towards this goal, I should be able to prove that I had a successful semester/quarter, and boost my own feelings on the matter.

So why don't I just make a long list of everything I learned this semester?

The Learn'ed List

  1. I learned how to work with Flex, Flash Builder, and FlashDevelop (Open Source IDE) to create Actionscript-based projects using resource bundles from Flash and a programmer-oriented framework from Flex. 
    1. I worked with open source projects and found several libraries and 'engines' to download and tinker with that expanded what I knew about rapid Flash games development.
    2. I formulated some ideas for a number of small quick projects that I can do in my spare time, or as part of the portfolio class.
  2. I finally sat down and thought at length Fuzzy State system, did some research  started preliminary investigations, asked some important questions
    1. broke an otherwise opaque problem down into smaller parts. 
    2. Difference between Fuzzy Control, Fuzzy States, Fuzzy Models and Fuzzy Modeling of real-world data. 
    3. Read two papers
    4. Speant a day modeling what our Fuzzy State system will actually look like
  3. I taught myself how to work with two different social coding frameworks
    1. GIT/Mercurial and SVN
    2. I did research to find out the best places to host code online for free (Google Code, Git Hub, Bit Bucket, Personal Server[SVN]) and the tradeoffs between them, including having to make the code open source or to use it for non-commercial purposes.
    3. I made a PBWorks Wiki/webspace and updated it.
    4. I started using Issue Tracking
    5. I learned how to work with the command prompt and type in all sorts of crazy stuff to get the results I wanted.
    6. I downloaded like 30 different GUIs, hacks, work-arounds, and java apps in order to get my social coding framework running on my home computer, my development machine, and in-school machines (mac and PC)
    7. I learned the differences between GIT and SVN. '
    8. I learned about SSH keys, how to generate them, and how to setup the secure file transfer protocol for my social coding, vs. using HTTPS pushes (which was no longer working for big files)
  4. I worked in the Unity3D engine for the fourth time in my life. Previously I'd done a tutorial, made my own level with a character controller that never worked properly and had a buggy FBX export [Ed], and used Unity3D entirely as a platform for plugin development. Let's just say I learned a lot about Unity3D in its entirely
    1. Became a lot more advanced at Unity3D use in general.
    2. Created my own character controllers out of RigidBodies
      1. This is actually a very important point because it's hard, people very frequently want to do it, and people very frequently give up because of how hard it is. 
      2. This is vital for doing a game with a character like Ed, who can turn upside down. 
      3. It was really hard and really cool
      4. It probably actually resulted in something I can contribute back to the community. 
      5. It worked with a moving platform
    3. Learned about the existence of Co-routines and how to use them in conjunction with the 'yield' framework.
    4. Learned to work with local and global coordinates, and parenting, to do some very cool things. 
      1. Learned better ways of doing things than was at first obvious.
      2. Could write a better UML for a finalized engine now
    5. Worked with particle effects to give cool glowing halos!
    6. Imported a character successfully
  5. UV mapped, textured, rigged, skinned, and animated a model all in one night. After modeling it. 
    1. Modeled a complete human
      1. Had never done this before
      2. Had never successfully done a face before
      3. Managed to handle the eye, lips, and nose all extremely well at pretty high polygon
    2. Evaluated end model
      1. End result was reasonably faithful to the sketches, but needs work to look like exactly the character we want
      2. Learned the sheer importance of digital sculpting; it is impossible to create an even reasonably attractive looking model without the normal maps computed from digital sculpting
      3. Learned digital sculpting could help in the future to model faces; allows experimentation with mouth/jaw/cheeks/jowls region, which is difficult to sketch, model, etc. 
      4. Remarkably high quality of facial detail and fidelity achieved.
      5. Came to realize just how hard it is to get a distinctive 3D character with a complex (or simply realistic) facial structure. Ovoid can be hard, but its fixable with good normal control and polygon spread. Non ovoid is insane. 
    3. Discovered the Maya plugin, RoadKill for UV unwrapping and learned how to use.
      1. IT WAS SO EASY MUAHAHAHAHAHA (I'm remembering a week of unwrapping Ed)
    4. Used an Auto-Rigger
      1. Had to learn to export to fbx
      2. Wasn't able to import the rigged character back into Maya, and recalling that it's a common problem that I'll be able to research!
      3. Had a 1 day free trial and used it!
    5. Managed to use all free animations offered by Auto-Rigging site to animate character
    6. Character looks very nice in loincloth. 
  6. Math
    1. Refresher course on 3D geometry
    2. Matrices, Vectors, Quaternions. 
    3. World vs Local space
    4. Velocity, force, and physics
  7. Had to deal with my programmatic urges
    1. Worked with the stress of self-identity and the fear of personal incompetence or misdirection that these urges brought. 
      1. Had to come to accept that I am not a programmer, and that my goal is not to create a perfect end product, but rather to rough in a shape that a programmer would later fill out, by showing it's possible and doing a lot of the necessary preliminary research. 
      2. Dealt with the realization that my goal is to create something testable, not something perfect. The first iteration. The demo. The proof of concept. The equivalent of the Scratch Mockup, but higher level. 
    2. Worked with the frustration of an extremely picky target audience
      1. Struggled with the fact that my audience requires such a high level of polish that testing was difficult without a well-polished product. 
      2. Tried to figure out how to distill the game into its essential parts, so that they could be tested. Tried to figure out what to make so that it is testable with the audience, not just alone.
    3. Gained experience working in a new way
      1. Intended Agile Development
        1. Failed to think Agile-ly!
        2. Got experience in that respect, and will be able to set up later projects better. 
      2. Can now look at project and realize what parts are unnecessary and ended up causing a tremendous quantity of overhead and bugs. 
      3. Ready to try it it out again. 
    4. Created a game
      1. Programmed thousands of lines of code. 
      2. Created an engine that suited my needs.
      3. Could gut it and remake it better now, (a new 'slice') for optimization (unnecessary) or simply to reduce the 'bugs' overhead (streamlining) to make it easier to move forward (might help).
  8. Developed a design thesis
    1. Found Design Philosophy
    2. Realized what I'm genuinely passionate about at my core, what motivates me
    3. Storyboarded new introduction to gameplay. 
    4. Moved from the idea of creating a proof of concept (Which is when I was expected to include more features) to creating a module (An in-depth exploration of certain difficult-to-implement features)

Wow, okay. I think we can stop there for now. We've already got a ton. 

So What Does That Tell You?

Did I shoot myself in the foot a few times in development? Did that slow down development and prevent the integration of the story component? 


Did it matter?

Nope. Turns out my game is fun to fiddle with as a toy, even having no story at all. I could literally box up several augmented reality variants based on my little 'engine' as digital toys and sell them through iOS. Not a bad start.

How do I feel now? All wiggly. I still can't get my feelings to stabilize entirely. I can't still convince all of me that I did a phenomenal job. I still can't be sure I'm going to be excited and curious and filled with new ideas to implement when the morrow comes, I still can't be sure I've outsmarted the anxiety-exhaustion thing. 

But you know what? Maybe its all just a little more human than that. Maybe it's all just a little more nebulous around the edges than having a clear-cut certainty about where one stands. These are emotions we're talking about, after all. Perhaps most important of all is that this semester ends with me focusing on my own emotional state instead of ignoring it and simply trying to be more productive. I now understand my limiting factor, and how to increase my creativity through addressing the limiting factor. I've got lots of ideas, and I don't feel (mostly) like I've 'wasted my time' (which is a common feeling when you're an anxious perfectionist). 

I'm okay. I'm about where I want to be. I'm afloat. The battle isn't over. But you know, when I woke up today? I was filled with excitement. I wanted to program. Immediately. I wanted to implement this and that and the other. I was filled with vim! I was ready to go! 

I felt it and I know it's there, and I know that I can get it flowing again. It's like an oil well just beneath the surface; all I have to do is tap it juuuust right. It's not going anywhere and I won't lose it. 

I'm not excited right now. This very second. This instant. I'm sleepy and need to go to bed. The old me would have been bummed that I wasn't excited and asked "What's wrong with me!?" as if I could be excited 24/7 365 days a year. The new me knows that if I was excited 30 minutes ago, I could be excited again 30 minutes from now. The new me is adaptive instead of critical; and so the new me is figuring out how to get results. 

My limiting factor will always be my own lack of faith. And though at this precise second I'm down off a 'high' of excitement, I honestly now have faith in my ability to find it again. And I'm peeling back the other stuff on top of it, layer by layer, so now I've started to see the excitement more and more and more frequently. 

That is what I'm going to come out of this with. At the Conclusion of Fall 2012, I have emerged with an acknowledgement and understanding of my own emotional foundation: of how to evaluate it, how to love it, how to nurture it, how to tweak it, how to respect its natural fluctuations- up and down, high and low- and maximize the highs while minimizing the lows.

I left school in May 2012 completely emotionally exhausted and burnt out.

I left school in November 2012 afloat and with 30 minute spurts of excitement about all the things I'm going to tinker with over the break.

 Let's set the next milestone. 

So I proved I can float. Well, when you're learning to swim, that's definitely the first step. So now that I proved I can float, let's start treading water a little.By January 2012 I want a better and more intimate emotional understanding of my own 'bummed' and self-critical periods. Instead of focusing on floating or excitement or accomplishing tasks, I will instead focus on getting to know my self-critic. Bit by bit, we will restore my motive power, my self-faith, my sense of power. 

Gaming Imperatrix: Out!

No comments:

Post a Comment