Archive for the ‘Blog Series’ Category

Conversation: Some unusual topics

Thursday, July 21st, 2011

Here’s a couple videos from the series, some of the more odd things I’ve posted.

The first is a response to a topic of inspiration posed by Andy Moore. I try to get out for walks as often as I can, and I bring with me a camera phone… here’s what I see:

Next was something from this past weekend. I picked up an iCade, which is an arcade controller for an iPad, and I got it working with something NOT an iPad.

It’s a neat device. You can get more details about coding for it here.

This catches up my queue. I have some videos about some of my thought process on the new game, but I’ll bring those up at a later time once I have more to say.

Nope, not this time

Wednesday, July 20th, 2011

No sir. Do not pass go, do not collect $50,000.

However! All is not lost!

I am still eligible for a the $10k “Developers Choice” award, which means you, you developers! Visit and cast your vote (For Smiles HD). 😀

I might win something…

Wednesday, July 20th, 2011

The latest in the world of Mike, I might win something again.

I’m less than an hour away from finding out if it’s true, so here’s me killing minutes as I wait.

Conversation: Business and Fear

Wednesday, July 20th, 2011

From Monday, Gianfranco (whom I abbreviate as GB) was concerned that some of the guys might have been fear-mongering after a recent set of very sad sad videos. That catapulted me in to a rant about… well… yeah, it’s actually that way. Indie truths a-plenty.

The first begins on the subject of “big games are extremely risky”, despite doing one myself right now.

I had some upload issues with the prior video, which lead me to watching my video a few more times, and expanding on the subject of indies and failures.

Finally, I explicitly DON’T apologize for fear mongering, because we need it.

And there we have 17 some minutes of rant. I’m left feeling a little worried about some of the things said, but I’m glad to have said them.

Today is Wednesday now, so like I touch upon in that first video, I might have an announcement… or not… CMON YES!!!! I WANNA HAVE GOOD NEWS!!! RRRRRRRR!!!!

Introducing: The Indie Indie Conversation

Tuesday, July 19th, 2011

Hello there! I figured now was a good time to talk about a project I’ve been involved with for the past couple months now. Something we like to call, the Indie Indie Conversation. The conversation is a YouTube channel shared amongst a group of indie game developers where we talk about what we do, the challenges, and the lifestyle of creating games independently for a living.

I’ve personally failed many attempts at starting a regular video log here on my blog, and in retrospect that may have been the uncomfortable feeling of “talking to a wall”. All these attempts seem to lack the personal charm (not to say I’m charming) and comfortable honesty I think they needed to really work.

Mike Hommel, a friend, fellow indie developer, and fellow former co-writer with me on GameTunnel’s Monthly Round-up pitched the idea: Why don’t we try talking to each-other? Hence the conversation was born.

I didn’t announce this right away, as I wasn’t sure we were going to keep it up. Plus, I wanted to be sure and finally comfortable with my … ahem… “performance” in the video. I’m no public speaker, but recently I’ve been doing some of my best improvised recorded video work, and I’d like to start sharing them.

Above is a video where I talk about regrets of the past 6 years, being a full time indie. I think it does a great job capturing what we aim for in the series, and perhaps what’s special about it (honesty, trials, tribulations).

We create A LOT of content though, as the point is it HAS TO BE quick for us to make. As of this writing, we’re nearly at 150 videos, and 12 hours of content. Seeing how this is my blog, I’ll be picking, choosing, and sharing some of my best videos with you here, as I do think they are topical to my reader (hi mom).

If you’re an indie game developer that’s in the mood to burn away a day (or two), I recommend you dive in to the archives. Videos are added to the channel chronologically, and YouTube lets you sort in reverse order by clicking the field names, so make good use of that! Check us out:

I’ll be back with a few more posts of these, and content specific to me and my own games soon.

The Development of Smiles, Part 0

Friday, January 2nd, 2009

I know my track record for completing a blog series is pretty lousy, but this one should be easier. I kept a personal log with pictures during the development of Smiles, so most of the work is done for me. I just need need to go through it and regurgitate my notes.

To start, I’m going to give a bit of insight in to what happened when I stopped writing my Engines, Names and Evolution blog series last year.

I apologize, but I am going to skip a significant follow up to that series for now (the Hammer engine), but this series should bring us back up to date.

Here we go.

– – – – – – –

Late 2007 and early 2008 were spent working on libraries, and foundation for my new engine Playground.

Playground was the successor to Hammer (PuffBOMB HD… will talk about this another day), which in turn succeeded Freedom.

– – – – – – –

Before PuffBOMB HD was shelved in late 2007 (Hammer engine), I was working alone on the project. Amicably, but that’s a series for another day.

The core issue with Hammer is that it wasn’t very reusable. As a whole, you could certainly build a new project based on it, but it’s elements were poorly isolated. Triangulation and collision testing code was embedded right in to the physics engine, so I couldn’t use the same code elsewhere without a lot of waste.

I prototype games regularly, and the product of this year of development (2007) wasn’t as useful as it could be.

– – – – – – –

Late 2007, I was at a crossroads. I still had savings left, but only enough to support myself. I needed a break from PuffBOMB HD, so I coined a new project. A suite of libraries and tools I could personally use for prototyping and developing games faster and more efficiently. The end goal may have been to build a Metroidvania derivative, but the core of the project was to build me some tools. If the project was going to fail again, at least I’d have a foundation to try the next thing. This was the Playground project.

Here’s where I get technical.

As mentioned, Playground is a suite of libraries and tools. It started with me collecting what usable parts I could extract from Hammer, and my Ludum Dare games and framework.

I should also mention that by library I’m referring to an element. A directory of files. Either copy the directory in to a project, or set up an SVN External for it. Only a crazy person would compile their work in progress library to a .lib/.a file and install it. If that’s you, you’re crazy! 🙂

One of the first and most useful elements I built was the Data and Serialization library. I decided to finally stop using C++ streams for binary File I/O, but wanted my file reading syntax to be nicer than fopen. The syntax for loading an arbitrary binary file from disk is as follows.

DataBlock* MyData = new_DataBlock( “Data.bin” );

Nice and easy. A DataBlock is an incredibly useful and lightweight basic type. It represents an arbitrary block of memory with a size stored in the first 4 bytes. It’s defined as followed.

struct DataBlock {
    size_t Size;
    char Data[0];

Pretty simple. For completion, the Data and Serialization library includes similar calls for normal non DataBlock data, but they’re so lightweight and flexible I use them anyways.

The great part about writing your own I/O wrapper is you can seamlessly integrate things like compression, munging, CRC’s and checksums. For example, load and decompress a file in 3 lines (one cleanup).

DataBlock* Compressed = new_DataBlock( “CompressedFile.zlib” );
DataBlock* Uncompressed = unpack_ZLIB_DataBlock( Compressed );
delete_DataBlock( Compressed );

The library is also written in such a way that, while it supports many compressors/hash methods, they are not required to be built or linked against the project unless explicitly used. In other words, if I don’t use BZIP2, I don’t need the BZIP2 headers or C files. As lightweight as you can make a library.

The vector math library is borrowed right from Hammer, cleaned up and isolated to be vector, scalar, and matrix math only. Types for rectangles and simple primitives are a library. Coding niceties like template types containing a,b,c or r,g,b,a components are a library. Strings, parsing a whitespace delimited file, and debug console logging as well.

Collision tests, and everything you do between primitives is a library of functions. Extremely long names, but they’re now modular in such a way they can be used in a physics engine, in a primitives library or a GUI/Menu system.

if ( Test_Point_Vs_Polygon2D( ... ) ) ...

Where this one returns a boolean value. I wont bother listing the arguments, but it’s a global C-like function. It takes direct types and pointers where appropriate. The functions follow the form “Action_What_Relationship_Who( … );”. Action is the operation, What and Who are the terms being tested, and the Relationship is the rest of grammar required to describe the operation.

Nearest_Point_On_Chain2D( ... );
Nearest_CornerPoint_OnEdgeOf_Polygon3D( ... );

Where the Smiles story begins is the Grid library.

Grid was a library created for a Ludum Dare game Pillar Caterpillar.

Here’s some concept art.


Pillar Caterpillar wasn’t playable within the compo timeline. It however still featured some great pre-production work, and a useful chunk of code that became it’s own library in Playground. Further work was done on the project, but that mock-up is the coolest looking part.

For the time being, only minor changes were done to Grid.

– – – – – – –

Shortly after the iPhone SDK was official announced in March 2008, I started prototyping some game concepts. The first, Magtraction (since Magnetica was taken, by a game completely unrelated to magnets).


A prototyped game concept deemed “too boring“.

The second, Dungeon Legion.


A prototype game concept deemed “too awesome“. Too awesome to finish in a short period of time. 😀

Both of these prototypes were the projects used to get the geometry tests up and working again.

You might hear more about Pillar Caterpillar and/or Dungeon Legion in the coming months (both projects are on my list I’m considering).

For the 3rd prototype, I wanted to revisit Grid.