RT @theBanov: ICYMI, @CoinCrypt's 50% off + new expansion came out this week. Deck-building roguelike! t.co/mmT1HqqS76 t.co/i… (Today)

@saint11 c'mon be unsafe what's the worst that can happen (Yesterday)

@NoelFB @theBanov rip rip rip in peace (Yesterday)

@TeddyDief there would be a lot of public safety ads about not getting telefragged (Yesterday)

@soylent I placed an order for 2.0 back on 9/20 and haven't heard anything since "Label Created." Didn't hear back from support either :( (Yesterday)

@MattThorson hmm probably should have forward momentum into the slash so I can slash dash cancel into a leap and then ground pound. (2 days ago)

@goldbuick huh? o_o (2 days ago)

Pure Entity Component systems stuff look super cool and fun but I never have any idea how to apply it to my projects t.co/RC1et7D4Ba (2 days ago)

@gabrielviolence damn you got a free midnight raccoons show #jealous (3 days ago)

@Capn_Andy yeah they had those in august it was fucked up man (3 days ago)

@sgricci Wow nice :O (3 days ago)

@sgricci Yeah I unfortunately have no idea how to make it run in linux x_x (3 days ago)

There's now examples all the way up to "Sound and Music" for using my game making framework, Otter! t.co/E1a9eHjHSP (3 days ago)

@raiganburns @MattThorson Oh all of my bugs right now are currently caused by the slopes haha, gonna dig in some more today. (3 days ago)

@raiganburns @MattThorson they all take turns moving 1 px until all movement is done. I don't want any frames of showing overlap :o (3 days ago)

@gabrielverdon what the hell this is breaking my brain (4 days ago)

@braceyourselfok fun is the perfect random reward schedule timing to make sure levels of dopamine peak with anticipation of course!11 (4 days ago)

@larsiusprime Yeah this is Otter. I mean if I can understand the logic it shouldn't be an issue to port it over to C# Otter code. (4 days ago)

@larsiusprime Hmm I should check it out at least though! always can learn stuff from other approaches (4 days ago)

@larsiusprime I mostly just want a system of things that can be pushed and carried that applies to all the game objects, with slopes! (4 days ago)


2015 - 9 - 24 / 12:38 pm / doodle

Doodle Post


No Comments

2015 - 9 - 23 / 6:33 pm / general

Dev Log: Platforming Frustrations!

Dev Log: Platforming Frustrations!

Game development ain't all birthday cakes and flowers as some may have you believe. As I move forward with this platformer game I'm realizing how much I actually don't know about platforming! You might think I know a lot with so many platformers under my belt, but now my ideas are way outpacing my abilities as a programmer.

Right now I'm trying to code this system and I'm making little to no progress even though a lot of code is being written. For example I'm currently working on the structure of how objects will update. The simplest way at first is to have each object go through its platforming operations one at a time in their execution order, but this leads to weird issues down the road. An object higher up in the order will have priority over other objects, and this is not something I want!

My new approach is to have each object update in parallel with one another, one pixel at a time. Each object will calculate its speeds and then buffer them into their remainder. Then a PhysicsHandler object goes through and moves all of the objects one pixel at a time each in parallel. This might not make any sense at all, but it's a set up for objects being able to push one another. For example if two moving objects collide, I want them to collide in the right spot, and I think the only way to do this is to move them one pixel at a time in parallel.

So I'm also working on the ability for objects to push one another. I have a simple box that I want to be pushable, but also solid so that objects can stand on it, and also I want it to be carried by other objects as well... but so far that is presenting a lot of challenges for how I've already coded things. For example I have no idea when I should be registering collisions on the side of a moving object now that objects can be pushed.

My assumption was that when I went to move one pixel to the side I could simply check for a pushable object and push that object to the side... however with the current way I check for surrounding collisions the results are not quite what I want. If an object can both collide with, and push the same object, the push only happens for one or two pixels and then the pushing object believes it's in front of a wall so it no longer moves.

As you can see I've already rambled for a number of paragraphs and I feel I haven't even scratched the surface of what's going on! I've been looking at my old Game Maker games platforming code to see if I can learn anything from my past self, but unfortunately the code leaves a lot to be desired. In Verge I did have boxes working that could be pushed, carried, and stood on, but I didn't cover a lot of corner cases and designed levels around not having huge bugs appear. I'm totally sick of designing levels around bugs though and I want to do this right! Unfortunately that means I'm driving myself insane as I try to handle all the possibilities I can imagine with this platforming engine.

I'm not feeling super great and I feel like everything sucks right now, but I guess I'll keep working on stuff and hope I can figure out small bits of it at a time.

No Comments

2015 - 9 - 23 / 2:38 pm / doodle

Doodle Post


Drawing on a tiny tablet on my laptop is definitely an adjustment.

No Comments

2015 - 9 - 21 / 1:55 pm / doodle

Doodle Post


The first thing I've drawn in weeks aahhghghhg.

No Comments

2015 - 9 - 19 / 4:38 pm / general

Dev Log: Shoots and Ladders

Dev Log: Shoots and Ladders

I'm continuing on my journey of focusing on my little platformer prototype and ignoring all of my other projects for the time being. I'm still having fun with it, and it's what I've been working on when I set up in coffee shops around the Phoenix area. I'm still in the middle of moving so I've just been working on my laptop. I no longer have access to four monitors for the time being, but maybe that's a good thing?


I've been poking around with adding ladders to the potential game idea. I like the idea of ladders that can bring the player (or any platformer object) through solids. I don't think I see ladders in many platformers and I'm starting to see why as I try to code these things. I thought it would be pretty straight forward but it's a little bit more tricky than I thought.

Having ladders that can pass an object through solids can create a way to totally separate different spaces of a level which I like, the only problem is the weird edge cases that appear because of those rules. I have ladders mostly working now, but if a moving solid interacts with the player currently on a ladder then some pretty messed up stuff happens. I still have to figure out what's going to happen in that case.


Another thing to consider is moving ladders! Which might make things a little crazy. Right now all of my platforming objects operate independently, but I might move to an approach that involves a manager object that controls the order of execution of certain events. For example having all moving solids, moving ladders, etc, do their thing first might make things way easier. Also having objects check for neighboring objects all at the same time before and after movement would be more ideal than each object just moving and checking in its execution order.

That's it for now. Back to work! I have to catch up on some things I've been neglecting for this project, whoops.

No Comments

2015 - 9 - 17 / 12:20 pm / otter

Otter Updates!

Otter Updates!

I've been pretty productive on coding stuff lately so with that comes some updates for Otter! Here's some of the things that have changed or been added lately in the dev branch:

* OgmoProject has a lot more utility methods now like GetValue() and GetLayerData(). If you need to check out level data before actually loading a level into a Scene this can be pretty useful.

* Added OgmoProject.RemapAsset() for when you need to assign a different path for an asset being referenced in your Ogmo projects. For example if you need to take the path of a tilemap from the ogmo project and reassign it to something else when being loaded into the game.

* Fixed a thing that I broke in SetHibox on Entities.

* Util.Clamp now supports Vector2 input and output.

* Added shortcuts to Scene methods like GetEntity<> on Entity just to make code a little bit less verbose at times.

* Added Button.LastPressed and Button.LastReleased. These are both timers that will count up since the last button press and release respectively. Pretty useful for doing input buffering type stuff, or waiting until an input has been released for some amount of time before changing state, and all that kind of stuff.

* Added GetFillRect() to NineSlice.

* Made Debugger.RegisterInstantCommand() public and added Util methods to go along with it. You can now add debug commands that can be used immediately instead of executing them at the next update. Also fixed some bugs in the debugger related to this.

* Fixed the rendering of GridCollider (it was too large by 1 pixel for each cell.)

* Added GetTileIndex() to Tilemap and GetIndex() to TileInfo.

* Texture.CopyPixels now actually works (warning: blittng operations are very slow.)

* More Collider parameter options in all of the Collide, Overlap, etc methods.

* Added Scene.GetEntitiesWith<> which is a weird way to grab a list of Entities that have a specific set of Components. This is probably very slow and should be used sparlingly, but it might be useful to some folk.

* Various small fixes and tweaks that don't really effect end users.

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