Okay, okay, I admit it… I might not know exactly what I am doing. This is Ian talking, and I am the director/programmer on Cosmo’s. As we might have mentioned before, the whole team is made up of artists (including me), so what the hell am I doing here? Good question, I’ll let you know as soon as I figure it out.
I graduated with a BS in Animation (specializing in film style character animation), which had been my goal for a long time. I spent about 2 years trying to get a job in film, but apparently there isn’t a lot of animated films being made in Chicago? Eventually, I lucked out and one of my good friends helped me get a job animating for games. Then, I started bouncing around, from contract to contract, for the next 4-5 years. During that time I learned two major things, how to work with motion capture and how much I hate working with motion capture. Learning those two things is one of the reasons Big Sir even exists. Erin and I would often talk about the purpose of animation and what makes it special and different then live action. If you are just recreating real life you aren’t using the power of animation to its full extent! So we decided to make our own studio to keep that thought at the forefront of any project we made. After months brainstorming, we realized we had to start prototyping ideas to start getting a feel for the thing, so I watched my first intro to programming in Unity video.
I can’t be the only one who has ever watched this video, right?
2 years and a couple of failed starts later, I’m still working on a prototype, except it isn’t a prototype anymore, it’s like a real game, and it doesn’t even crash or anything. I’m still not sure when that happened, the change from prototype to game, but apparently it just did. Over those two years, I have learned a whole lot about programming, most importantly about what is hard or easy. We use that knowledge to drive a lot of our gameplay decisions. What is simple but fun? What is something we can test in an afternoon instead of a week? The whole design of this game revolves around the concept of a ton of very simple tasks happening very quickly and randomly. It is much easier to be fast and funny then complicated and perfect.

Here is an example of something I have learned and how I natively work. I use a lot of lists to help organize things, such as levels, active minigames, or tutorial events, etc. These lists get pretty long and disorganized because Unity doesn’t let you just rearrange them. You can make a custom inspector that lets you rearrange lists, but that adds in a layer of programming complexity, simply for having to work in two scripts instead of one. It also strays away from default unity functionality, which is always something I try to avoid. Unity has already done all this work for me, why should I try to go against it?
So instead of doing all that, I just did this:
[ContextMenu ("ReorderList")] void ReorderList() { levels.Sort(SortByNumber); for (int i = 0; i < levels.Count; i++) { levels [i].orderNumber = (float)i; } } static int SortByNumber(Level l1, Level l2){ return l1.orderNumber.CompareTo (l2.orderNumber); }
This cycles through the list, comparing the public “order number” float on each entry and moving it up or down in the list accordingly. It then cycles through and changes the order number on each entry to match their index so I know in editor which slot they are in. Using floats instead of int lets me easily slide something between two other entries by using a .5 or whatever. The context menu lets me trigger this command in editor with the script drop down menu. So I get all the functionality I wanted, it is a very simple snippet of code and can be used anytime I use a list.
Not having a programming background is both a blessing and a curse. I don’t know whether this solution is a smart one or a dumb one, but it works for me and that’s all the really matter!