Saturday, August 23, 2014

My Color

I have thought about inclusive-ity and diversity a TON lately.  I didn't like that my only option was to scream "Hey [under represented group] I want you to be a member of our community!"  There had to be something else I could do.  What was I missing?!?

Today I had an epiphany.  Today I realized for the very first time WHY I wanted the diversity.  It wasn't so I could champion about that I am inclusive.  It finally dawned on me that I WANT to tell the under represented groups they are needed and why they are needed.

We are drawn to things that are like us!! :D  I recently found out the founder of Adafruit is a girl!!  I was so excited!!  A girl!  Someone like me!  Doing something techy!  How cool!!  Google's "Made with Code" is about girls (like me!!) using code (I can do that!!).  I read an article in the Star Tribune featuring the La Semana Culture Camp for adopted kids from Latin America.  The highlighted quote was 'All the kids are my color.'  Meggan Scavio recently recalled a conversation she had with Rami Ismail on how he felt seeing Farsi on a slide at GDC and how moved he was.  It was because there was something he resonated with, something "my color."

That is it.  THAT is what its all about!!  Finding "my color" is why I want to scream from the rooftops:
"Please be a member of the Imagine Me community!!! Be the "my color" for someone.  Please bring your friends.  Find your "my color" with us.  Let me know how I can make that happen for you!  I want it to be a place you feel safe.  A place you can find your color :)"

You may not understand why it's such a big deal to me - especially right now.  That's okay ^_^ I just wanted to tell you, I've found "my color."

Monday, July 14, 2014

Tools: GitHub & Cloud9


GitHub, the world's largest code host.  Generally terminal command line, the instantly confusing black box with white Courier font, can be intimidating.  It feels if you type one wrong command, or miss a single letter, you could destroy your entire project!  Let's face it, with all these fears you could end up avoiding the tool rather than embracing it.


Familiarity.
I find I am most scared of the unknown or unfamiliar.  Get comfortable with GitHub.  CodeSchool has an awesome course entitled "Try Git" for free.  It teaches you the basics in a very practical and immediately applicable manner.  The "Advice" box to the right of the tutorial explains the vocabulary used within GitHub.

As you progress through the tutorial, you recognize you are starting to understand what "version control" means and most importantly, how to use it.

Freedom.
While Git is social (sharable), for an independent developer it is often just you, or just me.  I don't want to be stuck in my house at a desk all day long.  What if its nice outside?  What if an awesome coffee shop/cafe just opened down the road?  What if I'm feeling lazy and want to work from the couch?  GitHub makes that super easy!  I can download my entire project in a .zip and work away.

Cloud 9 IDE


Flexibility.
Downloading and setting up an IDE can be a bit cumbersome and working from Notepad might not offer me all the flexibility I want.  Enter new tool Cloud9 IDE.  This online platform connects with your GitHub repository (tutorial).  You can customize the development environment to suit your needs, then use the console to commit just like you would otherwise.  You cannot debug in Cloud9 as C# and JavaScript are not supported languages to Run/Debug (but the awesome-est language Ruby is!!!).  Just test back at your computer with Unity installed.

Your new ease of mobility can take you anywhere!  The "home office" isn't so limited anymore.  So, what do you think?  Where would you find yourself with this new freedom and flexibility??


Friday, July 11, 2014

30 Days of C# Unity and the Lifetime Love



Hey everyone!!

The Hiatus.
Its been a while.  Let's rewind a little bit.  I started 30 Days of C# Unity in April and have since then used Unity on a daily basis.  The reason for my absence?  We needed me to learn faster.

Imagine Me.
I worked on Imagine Me, a 2D-platformer, in various roles up to this point.  On May 16, Chris and I decided to pull the plug on our current random generation system in the game.  We were not happy with it (understatement) and neither was the community.  Chris was (and is) working a full time job.  The indie dev thing is something we have done in our home life because we love it.  He didn't have the resources (time and energy) needed to rewrite the random generation AND continue development on the rest of the game.  We desperately needed a second developer.

Refined by Fire.
The job fell to me - the novice, C#-hating, Unity hesitant, just-getting-her-feet-wet girl.  I was thrown into the fire with a community full of expectations waiting on the other side.  It couldn't have worked out better.  I used the tools already enlisted from my "30 Days of C# Unity" They were a huge help and I stand behind each one listed in this blog.

Today.
Today, work is almost done with Imagine Me's new random generation.  I am tweaking a final few things to give it an appropriate feel, and prepping for adding it into the current game.  Later, I will create a "Projects" tutorial of my own to share with you, but for now my 30 Days of  C# Unity has turned into a Lifetime Love for three words: "Made in Unity".

Wednesday, April 30, 2014

Day 4 of C# Unity


It's Day 4 and I'm back to the Space Shooter!  The hands on experience with these projects has become a wonderful compliment to the Beginner Scripting lessons, but more on that later...

Project: Space Shooter
I began today's session by covering a quick review of the last video I had watched in the project.  This was very useful to 1. put my brain in "Unity" mode and 2. refresh where I had left off.  The Camera and Lighting video was an awesome refresher on Unity's orientation.  Remember: Left Handed.  I practiced orientation by putting my left hand in weird positions, then guessing what the camera would show.  It helped a lot!



The next lesson Adding a Background was pretty straight forward.  Create a quad, add texture/material, adjust shader, scale, and transform.  One cool trick I didn't know before involved dragging a texture directly onto the mesh in the scene.  Unity creates a material for you!  While creating a material yourself is not difficult, eliminating a couple steps eliminates possible errors and mishaps - always a good thing.



One thing to note, the shader step was very shallow. The reference material, provided in the links to documentation, was either too vague or too advanced. I really hope to find more on shaders and materials later.



 Moving the Player provided an awesome opportunity for me to practice the Beginner Scripting lessons from Day 3. The lesson reviewed public variables, FixedUpdate, Vector3, and rigidbody. It also provided an introduction for the next lessons in the Topics tutorials including an introduction to data types, GetAxis, and using classes.

I most enjoyed the segment on Mathf.Clamp.  This is probably the first time I've thought C# had a useful function.  Clamp is awesome.  It allows you to constrain a game object to whatever space you define, and all in just a few lines of code!



I followed along quite easily until the last segment using Quaternion.Euler.  Yikes.  When I clicked on the reference material it brought me to Intermediate Scripting.  I knew I wasn't ready for this level of scripting, but felt unsatisfied blindly typing away.



Overall the lesson was perfectly paired with Beginner Scripting.  I highly recommend using the Beginner Tutorial Scripting and Space Shooter project together.  Tomorrow is back to scripting lessons!

Have you found any useful beginner tutorials on shaders?? Please link them in the comments.  I would love to understand them better.

Monday, April 28, 2014

Day 3 of C# Unity

     

     After the weekend break, I'm back at it.  I started today with every intent to continue Unity Gems, however, I realized very quickly "Common Unity Gotchas" was a bit more advanced.  Rather than get frustrated with GetComponent and all the rules and scenarios (and a StormTrooper ??), I switched back to the Unity Topics: Beginner Scripting.

  

Beginner Scripting
     I instantly felt more comfortable.  I worked through lessons 5 - 10.  The first two were awesome "gear ups" reviewing "If Statements" and "Loops."  These bits of code in C# are not terribly different from their JavaScript counterparts.

     Lesson 7 covered "Scope and Access Modifiers".  I already knew Scope. I did not fully understand how Access Modifiers work within Unity.  In my first exposure, I might have complained about the redundancy between setting variables in scripts and then changing parameters in the Inspector tab.  I now wish I would have worked through the scripting primer from the start.

     The lesson used a variable called "alpha" as an example.  When set to public, you can adjust "alpha" in the Inspector tab.  This made so much sense now!  How convenient to be able to tweak a parameter and see the effects immediately?!   The lesson explained the value of a variable can be set in Start().  This overrides the Inspector setting, but once game play is under way, adjustments can be made in the Inspector.  What is Start()? A perfect segue to the next lesson!



     Awake() and Start() were the subjects of lesson 8.  A solid foundation of Unity requires understanding the difference, use, and timing of these functions.  I am a bit shocked I was able to finish a project without grasping how these functions work.  The script calls Awake() first, and Start() immediately before the first Update().  I had a bit more understanding of Update() and Fixed Update(), but truly enjoyed the refresher and iteration.  It does wonders for my coding confidence.

     The final lesson reviewed "Vector Maths."  I must admit how surprised I was to enjoy this lesson.  Speckled with humor, the video covers 2D and 3D coordinate basics, explains how unity is "Left Handed," and provides useful example applications  (Tank! Tank! Tank!).

  


I am loving the Unity Topics tutorials and can't wait to get back to my Space Shooter project tomorrow!



Thursday, April 24, 2014

Day 2 of C# Unity


Day Two brought me to Unity's own tutorials which they have titled Learn.  Simple and straight to the point.  Under this tab you can find Tutorials, Documentation, Live Training (if something is scheduled), and other Support options.  The Tutorials consist of Topics - specific sessions and assignments that you choose from and Projects - guided, step-by-step from set up to final build of example games.

Scripting
As I am most concerned about my scripting practices, I decided to start with the Topic: Scripting.  There are a total of 47 lessons, over half of which are for beginners.  Perfect!  The topics are a series of YouTube videos, and not interactive, but each provide downloadable code and links to reference documentation.

The first four lessons are foundation builders.  I felt they were there to make sure everyone was on the same page.  Collectively, lessons covered the concept of scripts, basic components, and best practices for conventions and syntax within Unity.  I truly enjoyed all of them.



Project: Space Shooter
If you have not yet done a Unity Projects tutorial, I highly suggest it.  By far it was the best experience for me during the Global Game Jam.  The projects allow you to get your feet wet, experience all the things, and provide links to reference material if you have any questions.

The projects come complete with all the assets you need to finish the game and are awesomely organized. This is a big plus for me as I find Unity's importing and file structure something I definitely need to learn.  I watched the videos, took notes, then completed the tasks on my own.  This helped me iterate what I was learning a couple of times. My notebook is a best friend and I often use it as a reference later.



The one downside: these projects can be a bit over the top with the hand holding.  If you just follow the steps are you really learning it?  The notebook helps, but I try and make sure I don't use it as a crutch.  I also take time to play with the tools outside of the project lesson's "scope."  A good friend of mine recently said "When you get a new tool, you should ask yourself 'How can I "break it"?' and then learn from that process."

The first few lessons in the Space Shooter give you an overview of the game you will make, orientate you with creating a new project, and give you a good understanding for creating a player game object.  Each video has a single concept that is fleshed out in a series of tasks.  I really enjoy the setup.

Day 3 is already here! Let me know if you have a similar "notebook" experience in the comments below. 


Tuesday, April 22, 2014

Day 1 of C# Unity


It's Day 1.   I have checked over quite a few tutorials and guides and will be using the following in my 30 Days of C# Unity:

Now, I must put in a bit of a disclaimer: I have been around Unity for about 6 years and this year I used Unity for the first time during the Global Game Jam.  The vocabulary and UI are somewhat familiar to me.  That said, let's begin!

Unity Gems
    I began with the "Getting Started" card and focused on "Coding Conventions."  Some of you may know I am a huge fan of the book "Eloquent Ruby" by Russ Olsen.  The closer to convention and the more beautiful I can write my code, the happier I am.  "Coding Conventions" provided an extremely helpful foundation in the form of an article.  While I prefer an interactive tutorial, I was very happy with the content and presentation of information.  One thing I didn't notice was the name of the author or contributors.  This might be a useful addition to the site as it appears to have multiple/different contributors.


Unity Cookie
    I continued my Day 1 with Unity Cookie.  This YouTube video based tutorial site was highly recommended to me by my husband ( a Unity veteran of 6+ years).  Chris said it was one of the best tutorials for "Best Practices" within Unity.  I started at the beginning with Crash Course: Learn Unity by Wes McDermott.
    I must admit videos 1.1 - 1.4 moved a little slow for me.  This is where my disclaimer from earlier is most important.  The first video began with an overview of what the next three videos would cover.  The last video was actually a recap of what videos 1.2 and 1.3 covered.  This is excellent practice when giving a talk or presentation, but as each video was divided between links it seemed a bit wasteful.
    As promised, videos 1.2 and 1.3 gave a general overview of all that is Unity 3d. Wes spent time on whiteboards before going into the Unity Editor and identifying items and ideas covered in the whiteboard sessions.  I found it a little dry, but it might be due to the fact I am familiar with Unity's basic concepts already.  If you have watched these videos I would love to hear your opinion in the comments below.  Another perspective is always appreciated.



I stopped there and will begin Unity's Learn Tutorials on Scripting and the Space Shooter project tonight.  Watch for a blog post tomorrow morning on the results!