making maps is really really fun (Today)

@TommyRefenes YAYE YAAAAAAAAYE (Today)

Prototyping some kinda map and level loading system in Otter for who knows what (Today)

@theBanov see you soon! :D (Today)

@torahhorse the xXSSJ4GotenksXx life (Today)

@Froodjakle nice! looking forward to it ;D (Yesterday)

@gabetelepak jesus christ that sounds amazing *waits for MLG pro video montage* (Yesterday)

RT @TrentKusters: After 4.5 years Armello's finally out! A GoT x Ghibli board game brought to life! RT pls <3 http… (Yesterday)

@DiscordGames @RoboDodd I really enjoyed the new build at PAX :O Played through 3 times. (Yesterday)

@mcclure111 T SPIN CANCEL INTO DOUBLE TETRIS (Yesterday)

My feedback for all games at PAX: I want to cancel all moves into other moves and do crazy execution tricks let me do this in every game thx (Yesterday)

@TomFulp @askiisoft @PuffballsUnited I would do that. Just gotta dust off the project and remember how actionscript works. (Yesterday)

@TomFulp @PuffballsUnited <3 <3 <3 (Yesterday)

@MattThorson looks like an avocado milkshake (Yesterday)

RT @MattThorson: I’m testing one last, new item for the TowerFall Editor update. This chalice fills up with your... (Yesterday)

@ChevyRay @legobutts @djcoreynolan it was PAX and avocado milkshakes that did us in rip in peace (Yesterday)

RT @ZackBellGames: Slipped through the cracks, but an INK postmortem is up on @gamasutra. Buy it on Steam: t.… (Yesterday)

RT @saint11: I made the smallest pixel font I could think of, and it's free. Like, public domain free… (2 days ago)

RT @LunarRayGames: Hurray! Timespinner now has a Coming Soon™ page on Steam :D (2 days ago)

@ChevyRay @MllePilgrim @djcoreynolan @MattThorson leaving on sep 9th. Getting into the train station at 2pm today ;D (2 days ago)

posts filed under: general

2015 - 8 - 25 / 4:21 pm / general

Otter Example: Tilemaps

Otter Example: Tilemaps

The next Otter example is up and deals with the wild world of using tilemaps. The following example is a way to drop some tiles into a scene and also use the mouse to edit them.

namespace TilemapExample {
class Program {
static void Main(string[] args) {
// Create a Game.
var game = new Game("Tilemap Example");

// Create a Scene.
var scene = new Scene();
// Add the Tiles Entity to the Scene.
scene.Add(new Tiles());

// Set the mouse visibility to true for this example.
game.MouseVisible = true;

// Start the Game.

class Tiles : Entity {
// The Tilemap Graphic to use for rendering tiles.
public Tilemap Tilemap;
// The grid size to use for the Tilemap.
public static int GridSize = 32;
// The current selected tile to place.
public int CurrentTile;

public Tiles() : base() {
// Create the Tilemap the size of the game window using the defined grid size.
Tilemap = new Tilemap("tiles.png", Game.Instance.Width, Game.Instance.Height, GridSize, GridSize);
// Add the Tilemap to the list of Graphics to render.

// Place some tiles.
Tilemap.SetTile(0, 0, 0);
Tilemap.SetTile(1, 0, 0);
Tilemap.SetTile(2, 0, 0);

// Place some more tiles.
Tilemap.SetTile(0, 4, 1);
Tilemap.SetTile(1, 4, 1);
Tilemap.SetTile(2, 4, 1);

// Even more tiles.
Tilemap.SetTile(0, 8, 2);
Tilemap.SetTile(1, 8, 2);
Tilemap.SetTile(2, 8, 2);

// Want more tiles?
Tilemap.SetTile(0, 12, 3);
Tilemap.SetTile(1, 12, 3);
Tilemap.SetTile(2, 12, 3);

public override void Update() {

// Determine the grid position of the mouse.
var gridX = (int)Util.SnapToGrid(Input.MouseX, GridSize) / GridSize;
var gridY = (int)Util.SnapToGrid(Input.MouseY, GridSize) / GridSize;

// Switch the current tile to place based on the mouse wheel movement.
CurrentTile += Input.MouseWheelDelta;
CurrentTile %= 4; // Make sure the current tile is always 0 to 3.

if (Input.MouseWheelDelta != 0) {
// Log the current tile value.
Console.WriteLine("Current Tile is now {0}", CurrentTile);

// Place a tile when the left mouse button is down.
if (Input.MouseButtonDown(MouseButton.Left)) {
Tilemap.SetTile(gridX, gridY, CurrentTile);
// Remove a tile when the right mouse button is down.
if (Input.MouseButtonDown(MouseButton.Right)) {
Tilemap.ClearTile(gridX, gridY);

Make sure to download the tilemap source image as well. The final result should end up something like this:


Even more examples on the way!

No Comments

2015 - 8 - 20 / 9:41 am / general

Status Report

Status Report

It seems like 2015 is really flying by and once again I'm trying to figure out what happened to it! Obviously I have kind of shifted my priorities again to maintain some sort of sanity and happiness. What started out as a year of working on the island game tentatively titled Stratoforce has turned into working on a bunch of smaller stuff. The stress of working on one big thing for a long time got to me so I took a break, and now that break is pretty extended.


I'm still working on finishing Super Sky Sisters which is probably 98% done at this point. There's just a few more things to do, like figure out how I'm releasing it. I've gotten a lot of feedback from people that suggests I should put it on Steam or something, but that honestly sounds like more trouble than it's worth. My current plan is to release on for a small amount of dollars.


Other than that I'm working on a prototype involving dice. I've posted some gifs and such of it from time to time. I haven't spent a super long time on it yet so there's no real game yet, but I've been trying to figure out how to make rolling digital dice feel cool and not like a chore.

I currently have a contract gig that is taking up some of my time. I'm doing some character art and level tile art for an upcoming indie game that for now I don't think I can say what it is, but it is pretty cool to work on!

On top of that I'm still trying to flesh out all the examples I can for Otter. I think pretty soon I'll be able to call it version 1.0 and figure out what I want to do with it after that. I have tinkered around with some other frameworks and engines, but I still always go back to Otter... I just wish it were easier to export to Mac and Linux.

I think that covers everything! I'm staying busy, still just living that indie life I suppose. Eventually I will have to buckle down and release a new proper game, but for now I still think I'm having fun and keeping my emotional health up which can be very important. Working on small projects that have no expectations is way more comfortable for me, but I know that eventually that won't be paying my bills.

No Comments

2015 - 8 - 16 / 10:02 am / general

Back from Break!

Back from Break!

As you may or may not know I live in the desert out in Arizona, and in the summer it can get to be quite hot. Just a few days ago we hit an almost record high of 117F! That's 47.2C for those of you outside of the US. So for the past two weeks I fled the desert and returned to my native land of the east coast.


I spent a lot of time visiting family and friends that I don't get to see often because of living on the opposite side of the country. I did bring my laptop and had the best intentions to try to sit down and do some work while I was on the road stopping from place to place, but it just didn't happen. I decided pretty early on to turn the trip into a proper vacation and not do any work, or think about any work for the entire duration of my trip. That's a pretty big deal for me because I can't really think of the last time I actively tried to not do anything for that long! Overall I think it had a pretty good effect on me.


Now I'm back in the desert where unfortunately it's still 110+ degrees outside for the time being, but that's all the better reason to stay inside and work on games and other stuff. I'm going to try to catch up on posting on my blog, work on some of my projects, and catch up with Otter examples. At the end of the month I have another trip coming up for PAX, so I gotta squeeze in as much time as I can before that.


Now resuming normal operations.

No Comments

2015 - 7 - 11 / 1:43 pm / general

Otter Updates

Otter Updates

Some quick Otter updates!

* OnAdded() timing has been changed for Entities. When an Entity is added to a Scene the OnAdded() method is now called after the Entity has updated its component lists. This is so that a component can register with the Entity's OnAdd method before the Entity is added to the Scene.

* Added GetTopEntity() and GetBottomEntity(). These methods allow you to pass in a bunch of Entities and find the top most and bottom most entity in the rendering.

* Added GetComponent() shortcut methods to Component.

* Added CollideEntities<T> method that will return a list of a specific type of Entity.

* Possible graphics changes. I want to explore the possibility of reworking the rendering system to allow for multiple transformations to be applied to graphics. This would possibly allow easier parent to child relationship transformations and more. Mostly because I noticed when working on games that I want to have multiple scales, rotations, and translations applied to graphics at times, and it would be nice if Otter had built in support for it.

That's all for now!


No Comments

2015 - 7 - 6 / 8:06 pm / general

Dev Log: Dragging Dice

Dev Log: Dragging Dice

I swear I'm finishing Super Sky Sisters... I had a friend try a copy of it for his multiplayer game night and apparently it was a big hit there, so I'm feeling pretty good about it! It's extremely tough to test it since I'm playing it by myself most of the time.

In the mean time between all of the other stuff I'm working on I've been playing around with getting a drag and drop system working in Otter.


I have an idea for a thing that involves dice... and I think a big part of it might actually having the dice be "physical" objects. I have a little prototype going, but that version doesn't have dice rolling and instead just buttons that show you what you rolled, but that doesn't seem that fun compared to actually seeing the dice bounce around on the screen. I don't know if this idea will work at all, but for now I'm having fun getting some of this drag and drop stuff working. I might be able to extend the system I made into something generic enough for other uses, like maybe some sort of basic editor for Otter games.


2015 - 6 - 30 / 1:10 am / general

Dev Log: Imp Anims

Dev Log: Imp Anims

The animation train has kept rolling on somehow with some animations for the Imp enemy. Although I'm not totally satisfied with this, it is better than the static image version for now. I don't know how much I'm going to be motivated to keep going over animations until they're perfect.


For now that just leaves the player animations left. Then when those are done I'll really have to figure out what I'm going to do with this game...

No Comments



Hi there, my name is Kyle, and I'm a kid disguised as a grown up. 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.

blog stuff






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 :)