I moved to a new URL! Check it out!

posts dated from: december 2014

2014: A Pretty Weird Year Part IV

2014: A Pretty Weird Year Part IV
The year is coming to a close... it feels like it just started!

October


October started out as a huge month for Otter with the addition of the polygon collider!

Image


Polygon collisions were yet another thing that I never thought I'd be able to figure out, but finally after all these years the separated axis theorem finally made sense to me... or at least it made enough sense for me to code. I don't think I still fully understand the mathematics behind it other than it's kind of like casting a shadow of the polygons and seeing if the shadows overlap.

Another big thing that was alluding me was a basic skeleton system for entities in Otter.

Image


Something I want to do in Stratoforce is make enemies out of individual pieces that all can be interacted with. Sure there are tools like Spine and Spriter but I couldn't really figure out how to wrangle those tools into giving me a bunch of individual objects instead of just one sprite with some collider data.

Image


I continued on with making enemies that can form a snake, and then a snake made out of entity skeletons.

Image


I'm pretty excited about how I can use this to make huge stuff in my games, but I still have to clean up the API a little bit to have it make more sense. I tried to use it at a game jam, but it turned out a little more complicated than I thought so I need some more practice and refinement with it.

Meanwhile in shader town I was able to get a color grading shader implemented with Otter and that's yet another thing that has been alluding me for a long time.

Image


This is something I've wanted to get working ever since I started trying to use shaders with Otter, and finally I understood what the secret ingredient was: a 3d texture! I never understood how it worked until one day I sat down and everything clicked.

October was pretty awesome in terms of unlocking a lot of things in my brain that I never thought I'd understand or be able to do.

November


November is the beginning of the holiday season which also tends to be bad for productivity for me, but maybe it didn't turn out as bad as I thought it was going to.

First I released a more cleaned up version of my palette index shader for all of the GLSL people of the world to use.

Image


Then came along another Phoenix 48 hour game jam that was cosponsored by Xamarin. This was an awesome game jam and I made a cool (yet to be released) two player co-op game.

Image


I also recorded my screen for the whole thing and released a time lapse of the entire production of the game during the 48 hours:



I also spent some time this month on some productivity booster tools. I noticed some points of friction during the game jam, so I wanted to address those. One of my biggest slow downs is getting assets imported into the game, so I wrote a tool that will parse a directory of files and generate a .cs file with references to all of the files.

I wrote one of these before for Actionscript, so this one is a C# version of that. I also got it hooked into Visual Studio as a keyboard shortcut so whenever I change any files in my assets folder I just hit the keyboard shortcut and my class is immediately updated and now my auto complete knows all the paths to all of my assets.

Along with that I pushed some big updates to Otter and started on some cool stuff like bitmap font support and started to change some of the core logic with how entities are added to scenes and how components are added to entities.

Later that month I started on a clean version of my game jam game from earlier. I wanted to rewrite the game from scratch because the game jam code became really terrible and I also wanted to use this as an opportunity to try a very intense component based game architecture on a small project.

I also started working on a board game with some folks in Phoenix and that's been pretty fun so far.

December


I started December with a big breakthrough with Photoshop animations!

Image

It turns out using the video timeline with a video group of layers is the best thing ever because it actually makes sense and it lets you use onion skinning.

I spent a lot of time working on more board game stuff with my friends in Phoenix.

Image


We're trying to make a truly engaging co-op only game inspired by some co-op games that we've tried over the past year. So many games are all about co-op play until you get to a certain point where it's then one player vs. the rest of the players, or co-op play but there are individual scores leading to players making decisions that will screw other players over.

I'm sure I'll have more to say when the game has progressed further as right now it's still in the early prototype and play test stages.

The rest of December was pretty weird because I got kinda trapped in a pit of crazy anxiety. Currently I'm sitting in my mom's house in upstate New York which means I had to travel and fly to get here. For whatever reason this particular trip gave me terrible anxiety. For about two weeks leading up to the flight I was feeling pretty awful and riddled with depression and panic attacks. Yahoo.

I think I might be reaching the point where I'll actually have to do something about my mental issues, but first I'll see how the rest of my time in New York goes, and how my flight back to Phoenix ends up being. I really tend to bounce back and forth with being totally okay with flying to feeling overwhelmed with panic about it.

So now I'm wrapping up 2014 by writing these blog posts about 2014.

--

It seems like these three months were pretty productive! October and November especially which I'm surprised about November. October seemed to be an incredibly huge month for me as I tackled so many things that I thought I would never be able to figure out. Maybe I have been making progress after all! The final next part will be more of my thoughts on the year now that the recap is totally finished. Stay tuned!

2014: A Pretty Weird Year Part III

2014: A Pretty Weird Year Part III
The recap train keeps movin'!

July


July was a pretty busy month for me outside of the world of game development. It started with the annual trip to EVO to watch the world championships of fighting games (although a lot of tournaments seem to be popping up lately calling themselves the world championship of fighting games.)

Spending some time in Las Vegas is usually a terrible idea, but EVO makes it somewhat tolerable, and seeing a bunch of cool indie game developer friends makes it very tolerable. I think I played a solid 5 hours of Street Fighter IV with my training partner Adam in our suite.

I did manage to get some work done as I tried to tackle an overworld map for Stratoforce.

Image


And I worked on getting an enemy HUD up and running.

Image


This is also the month when I broke my relatively brand new Xbox 360 controller with the fancy d-pad. I ended up using that as an excuse to take the controller and customize it with a bunch of cool parts from the internet.

Image


Toward the end of the month I took a trip back to my home town in upstate New York to visit my friends and family from the area. Traveling is always pretty exhausting for me and I don't really get a lot of work done when I'm spending every night in a different place and I don't really have a super solid work station, or even desk set up.

August


August I was back in the desert and able to work more on some various projects including Dan Adelman's website.

Image


I finished the site sometime in August and it launched at the same time Dan officially announced he was no longer with Nintendo. He made some pretty big waves in the press which was pretty cool. I ended up using tumblr as the content management system for the site and that turned out to be a great decision as it makes things like hosting and maintaining it really easy, but the workflow of actually getting the theme hooked into tumblr is pretty annoying.

This month I became really interested in behavior trees and their potential application in the games I was working on, so I spent a lot of time working on behavior tree stuff which was a lot of fun. I ended up making a couple of short demos, but so far I don't know if I'm super convinced that behavior trees are great in action games like mine.

Image


I also did a 48 hour game jam in Phoenix and made a cool game!

Image


I got to use my recently acquired shader knowledge to make a cool looking game boyish game.

At the very end of the month I ventured off into Seattle to start my adventures at PAX Prime.

September


This month started out in the pacific northwest. I went to PAX Prime sort of on a whim since I didn't really have anything to show. I was mainly going just to meet up with people and have fun as a regular ole PAX attendee. I ended up showing some of the stuff I was working on to people with some videos, but I kept quiet for most of the trip.

I also got to start this trip off with a brand new smart phone! If you didn't know, I've been using a dumb phone up until this point. I got a Galaxy S5 right before my trip, and I learned the true power of having the internet in the palm of my hand when traveling anywhere.

After PAX wrapped up I hopped on a bus up to Vancouver and stayed at Indie House for about a week. There I ate sushi and coffee crisps and played Smash every day and night and it was the best week of my life I'd say. I did get some minor work done on wrapping up my game jam game from last month, and managed to release it on the Dreamcast's birthday.

Image


When I returned home to the desert I got back to work on some features for Otter. I did a bunch of bug fixes and clean up and also updated the platformer movement component to allow one way platforms.

Image


This month I was also trying out working out of an office with my friends from Team Colorblind. It was pretty cool, but I fell off the wagon of working out of the office after our next trip which was back to Seattle for an amazing weekend wedding of my friends Tommy and Shannon.

After I got back to the desert my sleep schedule ended up getting flipped up turned upside down and there went my hopes of working out of an office for awhile. I spent the rest of the month trying to get back into the groove of working since my summer of travel was finally done.

--

Both August and July were filled with a lot of trips. Traveling is usually pretty fun when I'm in the moment of traveling, but a lot of times I feel like traveling really slows down my work which is really annoying. I also have a lot of anxiety when it comes to traveling and the build up of leaving and going somewhere can drive me pretty crazy. I guess a lot of it is that I don't like flying...

Overall I had a lot of fun over the summer, but I still feel like I didn't get enough done! Or I didn't get as much done as I could have... but maybe I'm being too hard on myself. Who knows! Next up is Part IV!

2014: A Pretty Weird Year Part II

2014: A Pretty Weird Year Part II
Let's continue the recap of a pretty strange feeling year for me!

April


Hot of the heels of Game Developers Conference I jumped back into work on Otter and Stratoforce. I got some more basic art stuff done, and finally tackled the topic of 2d path finding. Path finding is something that always felt like it was too complicated for me to figure out, but thanks to some tutorials around the internet and help from some great friends I was able to get something basic working.

Image


Image


I still don't totally understand how it works, and if I had to come up with a path finding solution that isn't detailed in an internet tutorial then I'm pretty sure I'd be screwed. I still haven't really figured out how to make it more efficient, and I'm pretty sure I have to figure out a better way to implement it in my game... argh.

I spent a lot of time doodling this month, and probably spent too much time overall doodling during the year. Oops.

Image


May


Mainly just working on Stratoforce some more this month and got some of the menus up and running.

Image


This month I also spent some time doing some pretty hardcore experiments with rendering in Otter. I was obsessed with the idea of trying to get sprite batching working with everything that is renderable in Otter. A lot of engines or frameworks support batched rendering out of the gate, but unfortunately SFML does not meaning that I have to come up with my own solution.

I ended up hitting a wall that I didn't understand how to pass. I got some basic sprite batching working, but ultimately it seemed like a waste of time because building the batches takes the same amount of time as just rendering everything with a crapload of draw calls.

Without sprite batching a lot of sprites are sent to the GPU when they're ready to go which results in a lot of draw calls. I assumed that this was bad because a lot of engines use sprite batching to reduce the number of draw calls. However when I got a system up and running in Otter to handle automatic sprite batching what I found is that instead of the rendering being slow from a lot of draw calls, the rendering ends up being slow because it has to construct the batch of sprites on the CPU to send to the GPU.

So I felt like I wasted a lot of time here and that was crappy, but it was still fun to try and set up the sprite batching system.

June


June was the month of shaders and web design. A lot of time was spent finally buckling down and learning a thing or two about GLSL.

Image


A lot of what I'm focusing on is post processing shaders for 2d games. Shaders seem to have a near infinite amount of applications which actually makes it pretty difficult to learn them since a lot of tutorials out there on the internet cover stuff that I'm not even going to come close to using. Whenever I got anything up and running I tried to share the source code with the hopes that maybe someday a google search to my blog will help someone with similar goals out.

After some experimentation I ended up getting a cool shockwave effect set up in Stratoforce.

Image


On the web design side of things this month I also started on a project that would ultimately end up being Dan Adelman's site. I had a lot of fun diving back into the web design world and seeing that pretty much everything is completely different. Responsive design is the big game changer, and making everything on the site mobile friendly. Pretty intimidating stuff, but luckily I was able to find a lot of helpful guides and frameworks to move me along.

I also spent way too much time doodling probably.

Image


--

Hmmm... yeah it seems like although progress was being made, it wasn't being made fast enough! Path finding and shaders were two big things that have eluded me for a long time, so getting those somewhat under control in my brain was a huge accomplishment, but I'm still not really satisfied. Getting back into web design for a quick project was fun, but I think I also used that as a distraction because I didn't want to work on my game all that much.

Part III is coming up!

2014: A Pretty Weird Year Part I

2014: A Pretty Weird Year Part I
I feel like 2014 has been a pretty strange year for me. It's been a long time now since both Snapshot and Offspring Fling came out and it's pretty crazy how fast time seems to be moving lately. Snapshot took three years to make and it felt like the longest three years ever, and halfway through 2015 it will be three years since we finished the game. It's also going to be three years since Offspring Fling came out... madness.

Anyway, let's recap the year and see if I managed to actually do anything worthwhile!

January


I spent half of January last year at Steam Dev Days up in Seattle. Dev Days was a conference put on by Valve I think mostly to promote their new Steam Machines idea that was going to do battle with consoles or something like that. Ever since then we haven't really heard much about the whole Steam Machines idea though... so I don't really know what happened to that.

The conference was fun though and I got to spend some quality time with some Seattle area friends. Afterwards I got to bounce up to Vancouver to visit my lovely friends at Indie House (not to be confused with Indie House AZ.) I spent my time up there working on the beginnings of Stratoforce. I spent a lot of this month developing some of the core systems that I think the game will use.

Image


February


This month was spent a little bit working on some first pass art for Stratoforce.

Image


I also ended up joining Tumblr as another place to post my doodles to. I spent part of this month working on getting Spine animations implemented in Otter, and also made a quick example game showing off some of the basic features of the framework.

Image


This month I also remember being plagued by insanely bad sinus problems. While I was in Seattle in January I had developed some pretty bad sinus headaches. They were probably the worst head aches I've ever experienced, and this made it pretty hard to sit down and work on stuff. I still don't have any idea as to what was causing it, but I know that I do have pretty bad sinuses that often cause me various troubles like this.

Also in February the super smash hit mobile game Threes! came out, and I had the distinct honor and privilege of providing the voice for Torvus: Number 48. My girlfriend Corey also appeared in the game as Number 24. We recorded our dialogue on her mac book one night before going to sleep and somehow it sounded good enough to be included in the game!

March


March is a pretty crazy month usually since it's when Game Developers Conference takes place and I spend a week in San Francisco with a bunch of awesome people. For the conference I stayed with a bunch of people from all over the world in a huge place we found on AirBnB. I spent a lot of time just hanging out with awesome people and eating a crazy amount of good food. I'm not really sure how much appeal GDC has for me anymore outside of those things. Going to sessions for the Independent Games Summit is fun, but the main conference is just too expensive to go to for a little ole indie developer like me.

Later that month I was working on more artwork for Stratoforce and even more featrues for Otter. I managed to implement coroutines into the engine with some help from Chevy. Coroutines are amazing and have been a huge help for me (especially in game jams.)

Image


I should also mention there was a big TowerFall tournament at the end of the week of GDC. It was a 32 person 1v1 tournament with some pretty serious players. At the very end it came down to myself and my friend Will in the final set. It was an awesome experience since both of us were from Phoenix, and all we wanted to do was prove that the Phoenix area had the best TowerFall metagame. Ultimately it was I, the Assassin Prince who claimed victory.

March is also the time where Offspring Fling was in a Humble Weekly Sale which a bunch of cool games supporting open source development tools.

Image


The weekly sale was a huge success, and it's crazy to me that Offspring Fling is able to provide me with the means to cover my living expenses. I feel incredibly fortunate that both Offspring Fling and Snapshot were successful enough to allow me to keep pursuing my dream of making video games.

-

So far so good... but I think looking back on it my progress on everything is so slow! I don't feel like I got anything done in 2014, and thinking back on the year is a little stressful for that reason. I guess I'll find out if that's really the case... stay tuned for Part II!

Dev Log: Otter Updates

Dev Log: Otter Updates
Over the past week or so I've been doing some various changes to Otter as I'm still trying to figure out the best way to add Entities to Scenes, and Components to Entities. Currently in the dev branch an Entity's Added function is not called until the Entity is actually added to the scene at the beginning of the next update, and now for Components their Added function is not called until it is actually added to the Entity which can occur at the start of each update.

For now I just did some minor updates and changes

* Changed how Entity.IsInScene works. Now IsInScene will return true if the Entity is in a scene, or queued up to be added to a scene.

* Added SetColor to the Color class. This is useful for changing all of the values on a color especially when using another color as the source values. Mostly used in cases where you don't want to Copy and create a new Color instance.

* Finally figured out how to get colliders to have separate constructors when using Enums as tags. Now you should be able to specify Enums as tags in the constructors of all colliders.

Doodle Post

Image