@TomFulp @NoelFB @amora_b @saint11 let's do this sometime this weekend! (Today)

@NoelFB @amora_b @saint11 hey let's get sushi! (Today)

Ah the towerfall builds aren't updated so I can't use my secret character (Today)

@Tellous I guess sign ups were all day and people signed up mad early (Today)

The pax towerfall tourney is already full so the assassin prince will have to sit this one out ; ( (Today)

RT @Livelyivy: I'll announce the Gravity Ghost release date and platforms on Sept 8 (my b-day). Y'all can still preorder here: t.co/… (Today)

RT @brandonnn: why won't this vine go viral what is wrong with literally all of you t.co/GVnU7NaWJX (Today)

@JassonMcMorris haha I am the worst <3 (Yesterday)

You'd figure after flying so much I would have less crippling anxiety about it, but nope. (In Seattle now, see you at PAX!) (2 days ago)

@infinite_ammo snow problem. ice to meet you. cool party. chill out. what killed the dinosaurs? THE ICE AGE (3 days ago)

@NoelFB Ohhhh shit did you watch season 3 of Korra? (4 days ago)

RT @saint11: Heeey we finished our Ludum Dare game! Chaos Heart: t.co/XdVc7Jbh5d #LD48 with @amora_b @NoelFB @MattThorson @ashly_bur… (4 days ago)

@ADAMATOMIC @mossmouth YEAH I only played one game so far but it was fun on a bun. (4 days ago)

RT @mossmouth: Time Barons: t.co/oEDzoPVcH0 New 2P card game by me and my friend @perryjon! Fast, brutal, lots of freedom. t.… (4 days ago)

@soundofjw You searchin for sfml2 dot net on mac stuff? (5 days ago)

@TommyRefenes @Spotify Okay no Beasty Boys but how about this DUB STEP REMIX OF BEASTY BOYS YEAAAAH (5 days ago)

@mikekasprzak Responsive web design! I recently made a responsive site and listed some resources I used here t.co/zu0mhAgC7B (5 days ago)

@dom2d My favorite form of progression in a procedural game is none ;p Maybe Spelunky's ability to practice areas through warp doors. (5 days ago)

@___discovery @Demruth @Sosowski are you making bets with sos's dog now? (7 days ago)

@pietepiet omg @djcoreynolan needs these (7 days ago)

posts filed under: general

2014 - 8 - 28 / 4:31 pm / general

Game Jam Procedural Generation Part I

Game Jam Procedural Generation Part I

My latest game jam game still isn't quite ready for release, and unfortunately at this point it will have to wait until after PAX, but I can still share some source code from it that will maybe help people out when it comes to procedurally generating things in their games.

The premise of my jam game is that you play as a space explorer type person who is flying a ship around the galaxy searching for planets with shiny ore on them. When the game starts the entire galaxy is procedurally generated. This is a fancy way in saying that a bunch of random things happen and hopefully it works out.

for (var i = 0; i < 99; i++) {
var size = Rand.Int(8, 64);
planetSupply -= size;
if (planetSupply <= 0) {
size = 8;
var x = Rand.Float(Width);
var y = Rand.Float(Height);
var d = new Destination(x, y, size);


while (d.CloseToOtherDestination()) {
d.X = Rand.Float(Width);
d.Y = Rand.Float(Height);

This is my CreatePlanets() function for the map scene in the game. What this does is just creates 99 planets and places them in the scene at random X and Y coordinates. The map scene has a Width and Height defined earlier in the game (in this case I believe its 5000 x 5000 pixels.)

The scene also has a planetSupply field that is defined earlier. Whenever a planet is generated, its size is subtracted from the planetSupply. If the planetSupply is less or equal to 0, all planets created from that point on will be the smallest possible size. This was to control how many huge planets were created in the scene. read more

No Comments

2014 - 8 - 19 / 5:30 pm / general

Dev Log: Game Jammin

Dev Log: Game Jammin

Over the weekend I went to a local game jam in Phoenix. I haven't jammed since November and this was another cool opportunity to put Otter to the test!

The game isn't quite ready for release, but here are a few screen shots of it for now:





And you can see some of it in motion right here.

This jam I decided that I wanted to really limit myself in terms of art so I could spend more time on more stuff in the game. I wanted to restrict myself to a game boy palette, so my first thought was to go for a shader. I ended up getting a shader up and running really quickly that emulates sort of a game boy look. Here's the shader code:

#version 130
uniform sampler2D texture;
uniform sampler2D palette;
uniform float shift;
uniform float offset;

float rand(vec2 co){
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);

void main() {
vec2 pixpos = gl_TexCoord[0].xy;
vec4 pixcol = texture2D(texture, pixpos);

float gray = (pixcol.r + pixcol.g + pixcol.b) / 3;

gray = round(gray / 0.25) * 0.25;

gray += (rand(pixpos + offset) * 2 - 1) * 0.03;

pixcol = texture2D(palette, vec2(gray, shift));

gl_FragColor = pixcol * gl_Color;

The shader also does some extra stuff like randomly generates a very faint noise over the entire screen. I couldn't figure out how to make the noise scale with the screen though, so if you are playing with the screen scale at 2x or 4x or whatever the noise will still be every 1 pixel.

The shader also needs a palette to go with it that is passed in through the palette parameter. You can also shift the palette up and down on the texture. Here's the palette file I used:


When the game starts it's using the palette from left to right on the very top of the image. The shift parameter in the shader can be used to read colors from anywhere on the y axis on the image, so if I want to make the game use the blue palette on the bottom I can set the shift to 1. (Texture coordinates are 0 to 1 in shader land.) The shader also reduces the amount of colors with some division and rounding.

The last thing I did to help out with the shader is add a full screen dither texture to the game. This is actually being rendered in the game and not in the shader. It's a very very faint texture of black and white pixels overlaid on the screen at an alpha of 10%. This will add a dithering look between all of the main colors of the palette. This idea was inspired by Dan Fessler's HD Index Painting tutorial. (Actually most of this shader was inspired by that tutorial!)

I think that covers everything with the shader. Hopefully soon I can release the game itself. Just need to fix some bugs and fix some sound issues first. I ended up getting awards in the technical, art, and design categories, and overall I got 2nd place at the jam which is pretty cool!


2014 - 8 - 11 / 11:54 am / general

Behavior Tree Experiments

Behavior Tree Experiments

As I dig back into my main project one of the upcoming things on my to do list that has been bugging me has been getting the enemies working in a fun and compelling way. Something where they feel smart enough to be challenging to take on.

Usually the way I've always done enemies is through finite state machines which is a pretty fancy term that you shouldn't look up on Wikipedia unless you're going to become incredibly confused. Basically a finite state machine can be used to separate an enemy's behaviors into a bunch of different distinct states. A state can then link itself to other states. So an enemy might have attack, confused, hurt, or defeated states, and depending on what's happening in the game it will switch between them to act on things.

A behavior tree is way more fancy than that and apparently is more powerful in a lot of ways. Ways that I'm not sure that I understand yet, and ways that I've been trying to figure out over the past however long I've actually been working on this game.


I've started putting together a quick behavior tree library that covers the basics that I learned from this article here. For now I'm calling it Kodo and you can check out the full source on BitBucket. I'm not sure how well it works at all, so be warned. Currently I'm using it for some tests using Otter, and so far it seems like things are working but I haven't stepped into the realm of incredibly complicated trees yet.

One of the toughest things for me right now is understand how exactly I'm supposed to be building behavior trees. Finite state machines have always been easier for me to implement, and understand, and going from that to behavior trees has left me completely clueless for the most part, but everywhere I go on the internet assures me that behavior trees are ultimately worth it in the end!

1 Comment

2014 - 8 - 4 / 11:52 am / general

Dan Adelman Web Stuff

Dan Adelman Web Stuff

News is spreading fast that the famous Dan Adelman has left his job at Nintendo to pursue helping indie game development teams with business development and marketing. How awesome is that! What's even more awesome is that I got to make Dan's new website for him. Check it out!


The site is actually created as a custom Tumblr theme which ended up being pretty straight forward to set up. I find it way easier to work with than WordPress, although you don't have as much freedom to host it yourself. Working with Tumblr definitely has its kinks though. The work flow can get pretty weird towards the end of the development... I ended up having to copy and paste the entire template for the site over and over again to update things which is pretty strange, but hey it works!

This is also the first site I've done with any sort of real responsive design. Check out how the site changes when the screen width changes.


It can be squeezed down pretty far in case you're viewing it on a Game Boy.


I had a lot of fun making this site! Haven't really taken on any web development work in awhile, so I had to shake a lot of the rust off, and I got to learn a lot of new things along the way.

No Comments

2014 - 7 - 22 / 1:25 pm / general

Taking a Quick Break

Taking a Quick Break

Whoops! I think this is the longest I've ever let my blog go without an update in a long time. I've been traveling a lot this month and haven't really had a whole lot of time to sit down and do a lot of cool game dev work to talk about.

I was at EVO just two weekends ago, and this last weekend I spent visiting my old college roommates, and some high school friends that I haven't seen in a billion years. Yesterday I was in New York City, and now for the rest of the week I'm in Upstate NY where apparently it's totally okay to convert the shoulder into a driving lane whenever you want. On Saturday I'll finally be back in Phoenix!

I have been working on a little side thing experimenting with near-infinite level generation. It's a little game in Otter right now with just boxes and the game scene is filled in as the player travels through it. Areas of the level also unload when the player gets too far. I wanted to try to make something in which the player can go out in any direction and keep finding stuff, and not have it be bound by any walls or anything like that. I started it on the flight out to the east coast, and worked on it a little bit in a coffee shop in NYC more, but right now it's just a bunch of squares that aren't that exciting.


I think for my developer/mental health I should start working on tiny experiments like this more. It's something that I used to do often, but now I feel like I don't want to take time away from my main project, but that usually ends up being a bad attitude... more thoughts on that later!

Should have more time this week to work on some stuff though before I go back to the west. Sorry about dropping off the face of the internet for awhile!


2014 - 7 - 9 / 4:20 pm / general

Assassin Prince 360 Controller Mod

Assassin Prince 360 Controller Mod

I play a lot of TowerFall. So much TowerFall that I broke a 360 Elite controller within one month of purchasing it. I bought the "elite" controller because it was supposed to have that awesome d-pad that can transform and all that good stuff. Well it turns out that using the d-pad excessively results in the shell of the d-pad just cracking and breaking off.


At this point the controller is already broken, so I figured trying to mod it would be the best bet. I grabbed a new d-pad off of ebay, as well as a set of pink controller parts. The d-pad came with the screw driver needed to take apart the controller. After looking at a quick video on how to take apart the controller, here's the result!


Now I am totally ready to take on all opponents in style.




Hi there, my name is Kyle, and I'm a 27 year old kid with adult powers. I'm making video games and living the indie game developer life in Tempe, Arizona. Here you will find my thoughts, games, websites, doodles, and other stuff like that. I worked on Snapshot, Offspring Fling, and a whole bunch of other games. I also created and maintain Otter, a 2d game making framework. If you want to get a hold of me use the form on the bottom of the page, leave a comment, or just tweet at me. I try to post three times a week. Thanks for stoppin' by! You're the coolest.



Do you want to make a Let's Play of one of my games, or a just a video featuring footage of my games? You have my full permission to do so! Even if you are monetizing your videos, you still have my full permission to use any footage from any of my games. Go for it!


Your message has been sent! Thanks :)