Sunday, February 1, 2015

Dont Break The Chain: One Week In

A few of my Facebook friends have recently posted articles about a goal reaching system called Don't Break the chain. Don't Break The Chain is a methodology supposedly invented by the legendary comedian Jerry Seinfeld. It involves making or purchasing a large calender and then every day that you do something to increase progress towards your goal you cross that day out. After hearing about it on Facebook I also heard it mentioned on the popular lets play channel Game Grumps. It was then that I decided to try the system out for myself.
Paper Wins Again!
Instead of buying a calender I just cobbled a couple pieces of graph paper and marked off 2x2 Sections for each day. As you might not see, my goal currently is to edit, promote, or post to my blog everyday. Originally my goal was to work on my projects everyday however after doing that for a few days I realized that the frequency that I worked on my projects was not a problem. It was actually more the length that I worked on the projects each day. When I realized that the Chain wouldn't work well with that goal I decided that my goal would be to improve my blog. The day I write this marks the first week I complete without breaking the chain. Hurray!!

Although this system had a rocky start, I think I will get a ton of blogs posted using it. I will make another post in the future letting you guys know if it continued to work or not. Well actually you will know if it works if I do actually post blogs all the time but I will make a post later containing the details. 



Saturday, January 31, 2015

Paper! Its the Next Big Thing!

I am writing this blog post in 2015 and while I am all for making use of innovative technologies in these years of great technological growth, I cant pry myself away from using good old paper. Why you ask? Well because paper feels good. It feels good crush it, good to fold it, good to to cross out words on it. I use paper because it is satisfying to make progress when you keep track of your progress on a physical object. I use paper for any sort of temporary list and then as I complete tasks on the list I cross that item out. Each line drawn through an item is its own tactile reward. And when the list is all crossed out I crumple it up and slam it in the trash bin. VICTORY!!!
I keep a note book for keeping notes and then I have a list of tasks on a piece of graph paper.

Another Benefit to keeping track of these things on paper is that it isn't as easily hidden as an Excel document is. When my tasks have a physical presence I tend to remember that they exist which helps with reminding me to keep track of my progress. 

Paper obviously has limits. For example working on paper in a team is much more difficult. In team based situations I like to use a Dry Erase Board or as recently discovered during the game jam, Sticky Notes. Paper also has the downfall of not being electronic so backing your tasks up doesn't prevent them from being lost or being thrown out accidentally but that happens very rarely. Call me a Cave Man if you want, Paper Development is super rad.

Friday, January 30, 2015

New Year New Jam!

The Global Game Jam has come and gone once again. This year yielded surprisingly good results compared to my previous two years. On my team this year was Myself(Jon Harwood), Noah Hildebrandt, Jack Cieczka, Jeremy Lecus and Scott Schmeling. All a bunch of awesome dudes that I love working with. Our game this year winded up being a sort Lemmings/Puzzle platformer type game called How To Game Design where you play as an unseen human wielding a dry erase marker that must guide the stick man Mr.Lemmings to the end of several Levels.
As you can see the art style uses photographs of the actual white board that we had in the room where we were devving. I dont think I could be more a fan of this art style. I think just such a clean and sensible style for a jam game. I also really enjoyed the developing the primary mechanic of the game. The primary mechanic is that you use your marker to place down a green circle and when an object touches the green circle they teleport to the polar opposite side of the circle. Its a Mechanic that I don't think was fully explored in this game so i'm thinking that I might use it for another game at some point.

 My role on the team was general programmer and build master. Overall this game was very simple to program and didn't have very many challenges. Development was overall a very smooth and pleasant experience this year which I enjoyed greatly. Not that that I don't like a challenge but it was refreshing to do a project that actually went entirely according to plan for once.
Our Progress about 24 Hours in.

Overall I would say this jam was a huge success. We made a successful game and even got the majority of the vote when it came to who at MATC had the best game this year. I'm immensely satisfied with HTGD. Please Check it out! :3

Global Game Jam Page:
Kongregate:

Friday, December 26, 2014

Korrasami has Destroyed My Life.

I'm not typically one for doing Fan Art but the Legend of Korra Finale is hitting me super hard right now. So hard that I decided to do some Fan art in the style of the game I am making Dusk Runner.

Saturday, December 13, 2014

Dusk Runner: A New Project Has Begun

Ah. There isn't quite anything like starting a brand new project. All the old flaws and quirks of your old project have become a thing of the past and you can focus on moving forward onto a bright and prosperous future. My last title was a infinite runner/launch game called Combo Princess. After I finished development on that project I took a break from solo development and I worked for Forever Interactive and Digital Iris for a while which was an incredible experience and I learned a ton of new technical skill and a lot of new things about how teams function in a non school atmosphere. With that knowledge in tow I am ready to dive back in to developing solo with my new game Dusk Runner. Dusk Runner is a Retro 2D Metroid Vania game that takes Inspiration from a number of nes titles. Including Batman, Ninja Gaiden and Kirby.

Tuesday, December 9, 2014

CSG Post 8: Living, Eating, Breathing by Reference

Up until very recently I never knew the true value of reference types. If you are not familiar with reference types, a reference type is a data type that stores the machine location of a piece of data instead of the data himself. The benefit of  this means that you can set this one data value from anywhere you have the reference. Another benefit is that it allows you to store and pass a lot of data without passing a lot of data. This particular benefit has been making my life a lot easier recently. On SOY I will often need to get data from a one object to another object. At first what I would to was assign a value directly using the get component method.

varINeed = targetObject.GetComponent<TargetScript>().desiredVar;

However a better way to do it is to just store a reference type of the object that I need access to.

var varINeed;

TargetScript  targetScript = targetObject.GetComponent<TargetScript>();

varINeed = targetScript.desiredVar;

This way is much much better because now you can also access any other data that you need from that object.

Monday, December 8, 2014

CSG Post 7: The Wonderful World of Enumerators

Ive known that Enumerators have existed for some time now. But Ive never quite realized how powerful they were before I Started working on SOY. Enumerators allow you to perform operations on a timed delay that can be closely controlled. My first run in with Enumerators was at the 2014 Global Game where I used them with: "yield return new WaitForSeconds();" pretty much exclusively. This Enumerator function is plenty useful however soon after coming onto SOY I learned the power of combining loops with Enumerators. With loops you can have Enumerators delay indefinitely until a certain criteria is met. Another trick I learned is that you can substitute the Update method with an Enumerator and have the enumerator run at lower speeds resulting in a better performance Update Methods.

IEnumerator DelayTilCriteria()
{
   while(critera < 80)
  {
    critera++;
    if(breakOut == true)
     {
       break;
     }
    yield return new WaitForSeconds(1.0f);
  }
}

This snippet shows how you can Delay, Increment and Exit an Enumerator Coroutine.

Wednesday, December 3, 2014

CSG Post 6: Jack Black Jacks Black Jack Blacks Black BlackJack

As a proof of concept for SOY I was requested to make a Networked Black Jack game that would prove that we could create a Networked Multiplayer game. That Project is Here:
http://www.mediafire.com/download/feaumouqpfsf0am/SOYBlackJack4.7.11.2014Jons+%281%29.zip

CSG Post 5: Managing Networks Like a Boss

I have worked on projects before involving networked play however I have agreed not to talk about it. Luckily Scoundrels of Yen does involve network play So I can talk about all the things I learned then now and also the things I've learned now now. Its important to note that I have only have extensive experience with RPC method based games. I would love to do a state sync based game but currently that type of project has not arisen.


One thing that I learned from doing networked unity programming is the value of keeping your code organized. Before learning networking I would always format my scripts however I so pleased. This was important early on for experimenting with different code formats but as coding became more and more complicated an organized structure of where certain methods were located became more and more relevant. If you aren't familiar with RPC Methods, the way it works is that you First create a method beginning with [RPC], put and functionality that you need into the method. Then use NetworkView.RPC(); to pass in the string name of the method you want to call crossed the network. Followed by the rpcmode and any parameters of the method. This winds up needing quite a lot of methods. For any piece of data that you want to transfer crossed the internet you now need a RPC method for it as well as a Public Method that triggers the call crossed the network. Because of the large amount of methods I adopted a system where there is a summary at the top of the script followed by any getter setter properties or methods.(I prefer properties). Followed by any methods built into unity. Followed by private methods, Followed by public methods. Followed by RPC Methods if any are needed. Followed by Ienumerators.

bool variables/constants;
bool GettersSetters;
void UnityMethods();
private void PrivateMethods();
public void PublicMethods();
[RPC]void RPCMethods();
Ienumerator IEnumerator();

Ive stuck to this structure for a while now and I really like knowing what section to look in depending on what type of method a certain functionality uses. Eventually I would help to define the Raid+ tech reqs using these standards and I am very glad I made that decision.

Wednesday, October 1, 2014

CSG Post 4: Tooled Up

One of my first Tasks for SOY was to make a tool for unity that would make it easy to place game objects with a single click. Due to NDA related reasons I cant talk to much about it but I have made another script that has very similiar functionality to the SOY tool. That can be found Here.
Check It Out!