@ChevyRay I think you're really dang good at it to achieve that pace. It takes me like forever and a million years for editor features ;_; (Today)

@infinite_ammo cancel all my meetings that i didn't have. looks like i have other plans for today. (Today)

@infinite_ammo hahahh fuck I dont remember that and I should be all caught up. I must have missed that... (Today)

RT @Draknek: The Stugan deadline is coming up soon and @bnhw and I want to work on a new project there, looking for a 3D artist: t.… (Today)

@infinite_ammo oh god he's slamming the baby in the toilet. it's only a matter of time before he turns his toilet seat into a subwoofer too. (Today)

@infinite_ammo my fav is my upstairs neighbor who slams his toilet seat down also now apparently has a screaming baby in his apartment?? (Today)

@ChevyRay ugggghhhhh I LOVE MAP VIEWS OF THINGS AHHH (Today)

@jwaaaap I don't think you need to be SUPER HARDCORE but you def need platforming skills and the map system can seem kinda brutal at first (Yesterday)

@ChevyRay hi here is my tutorial on regular expressions this is how to verify an email address s/g+.a-Z0-9[]{/gi-?@/f-[a-Z]0-9??/gmail.com (3 days ago)

@TommyRefenes the lengths you'll go to become a metal gear solid boss amaze me (3 days ago)

@shaneneville t.co/9H8F5KlgFA (4 days ago)

@shaneneville well that sounds rad as fuck jfc (4 days ago)

@shaneneville tell me more (tabletop / pen and paper rpg systems are super duper fascinating to me) (4 days ago)

@Fruckert depends on my pace. if I'm working super fast I'll just have a text file in my csproj folder. if I'm slower I'll use trello. (4 days ago)

@ADAMATOMIC I'm not far into this talk yet but do they discuss how most of the costumes make characters look entirely different and incompre (4 days ago)

I'm excited to make games today! *checks task list* Oh right I'm stuck on like 50 bugs I don't know how to solve. (4 days ago)

@ADAMATOMIC just now realizing that I need a giant motivational poster of nasir over my desk at all times (5 days ago)

@obskyr YEAH I was bummed that the Hollow Knight soundtrack turned a bunch of the loops into short songs or arrangements :I (5 days ago)

I humbly request for video game soundtracks to feature more than one loop on the tracks that normally loop in the game~ (ESPECIALLY BOSS TRA (5 days ago)

RT @bitmOO: Hi, I make playful art! :) If you like my work please consider supporting me: 🐮 t.co/dFSRVxbXzf ☕️ t.co/F2hPwao… (5 days ago)

posts dated from: march 2014

2014 - 3 - 31 / 2:31 am / general

Dev Log: Coroutine Example


Thanks to knowledge passed down from Chevy Ray I was able to get Coroutines working in Otter recently! Coroutines are magical chunks of code that are able to yield their execution and remember their state. It's bonkers what you can do with them using this power.

I added an example to Otter to hopefully help out any folks that are looking into using them:

using Otter;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CoroutineExample {
class CoroutineScene : Scene {

public Image ImageBox = Image.CreateRectangle(50);

public Color NextColor = Color.White;
public Color CurrentColor = Color.White;

public CoroutineScene() : base() {
// Center that box.

// Gotta draw the box.

// Set the box position.
ImageBox.X = 100;
ImageBox.Y = 100;

public override void Begin() {

// Start the coroutine, yo.

/// <summary>
/// The main coroutine to execute. This will move the box around and change its color.
/// </summary>
/// <returns>Whatever a coroutine thing returns. Sometimes 0 I guess.</returns>
IEnumerator MainRoutine() {
// Wait for 30 frames.
yield return Coroutine.Instance.WaitForFrames(30);
// Set the next color.
NextColor = Color.Red;
// Move the box to the top right.
yield return MoveBoxTo(540, 100);

// Wait for 30 frames.
yield return Coroutine.Instance.WaitForFrames(30);
// Set the next color.
NextColor = Color.Yellow;
// Move the box to the bottom right.
yield return MoveBoxTo(540, 380);

// Wait for 30 frames.
yield return Coroutine.Instance.WaitForFrames(30);
// Set the next color.
NextColor = Color.Green;
// Move the box to the bottom left.
yield return MoveBoxTo(100, 380);

// Wait for 30 frames.
yield return Coroutine.Instance.WaitForFrames(30);
// Set the next color.
NextColor = Color.Cyan;
// Move the box to the top left.
yield return MoveBoxTo(100, 100);

// Start a new coroutine.

IEnumerator MoveBoxTo(float x, float y) {
// Used to determine the completion.
var initialDistance = Util.Distance(ImageBox.X, ImageBox.Y, x, y);

float currentDistance = float.MaxValue;
while (currentDistance > 1) {
currentDistance = Util.Distance(ImageBox.X, ImageBox.Y, x, y);

// Determine the completion of the movement from 0 to 1.
var completion = Util.ScaleClamp(currentDistance, 0, initialDistance, 1, 0);

// Lerp the color of the box.
ImageBox.Color = Util.LerpColor(CurrentColor, NextColor, completion);

// Spin the box along with its movement.
ImageBox.Angle = Util.ScaleClamp(completion, 0, 1, 0, 360);

// Actually move the box.
ImageBox.X = Util.Approach(ImageBox.X, x, 5);
ImageBox.Y = Util.Approach(ImageBox.Y, y, 5);

// Wait until next frame.
yield return 0;

// Done moving. Update the color.
CurrentColor = NextColor;

I'm actually totally not sure if I'm doing it correctly in the example, but it seems to be working out well so far. Going to try using them for various things now in my current projects!


2014 - 3 - 31 / 1:27 am / doodle

Doodle Post


Colored this with 20% monitor brightness so hopefully it came out okay.

No Comments

2014 - 3 - 30 / 4:16 pm / general

Otter Updates

Otter Updates

Over the past week I've finally pushed some updates to Otter after managing to rip out the Spine animation stuff. It turns out that in order to use the Spine runtime you need a purchased copy of Spine, meaning that if I include the Spine code in Otter everyone that uses Otter would need a copy of Spine... not ideal. (I wish Spine wouldn't license their code like this.)

So now the Spine runtime for Otter lives in a separate repository. It can be used along with Otter if you import it into your solution also using Otter. After you import it you need to give it a reference to Otter (also in your solution) and then give your game project a reference to OtterSpine. Then you should be ready to roll with SpineAnimation.cs.

Other updates to otter include:

* Renamed GetClass to GetEntities on Scene
* Add Vertices graphics type
* Added Color.Mix()
* Corrected issue between game angle and graphics angles
* Fixed issue with BoxCollider constructor
* Fixed some collision bugs
* Added shortcut of Left-Alt in Debugger to hide debugger (useful for screenshots)
* Minor updates to Particle
* Added LerpColor to Util
* Slight changes to Vector2

If there's any bugs or horrific things broken then let me know in the Otter forums!

No Comments

2014 - 3 - 29 / 3:55 pm / doodle

Doodle Post



No Comments

2014 - 3 - 28 / 3:29 pm / general

TowerFall Tournament Finals

Check out me playing TowerFall at the Humble Bundle 2014 World Invitational Tournament vs. my good friend and training buddy Will Courtney. It was a best of 5 set and each of us had to play through amazing opponents to get to the finals. Good times!


2014 - 3 - 27 / 12:35 pm / offspringfling

Humble Weekly Sale!

Humble Weekly Sale!

Just a quick heads up, Offspring Fling is currently in the Humble Weekly Sale along with seven other amazing games.

This particular bundle is in support of the software and tools that we use to create our games, including FlashDevelop which was used for Offspring Fling.

It works the same way as a regular bundle, and you get more amazing games if you pay enough moneys. You also get Steam activations for all of the games.




Hi! My name's Kyle, and I make video games most of the time in Denver, Colorado. 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 :)