Announcing LicenseKeeper, a New Blog, and a Company Name

A funny thing has happened to me since I started writing about my pursuit of Mac game development. New needs, ideas, and opportunities have arisen. Some directly related to blogging, some related to running a MicroISV, and yet others related to my normal everyday technology-centric life.

This last item leads me to my first announcement:

Over the past year, my collection of shareware or demo-ware that I’ve downloaded and purchased off the internet has grown significantly. All these products have something in common. They send me a license key to unlock the full version of the software after payment. This license information comes to me via email and I copy and paste or type in this information into the application and it “magically” unlocks its full feature list and I’m ready to go.

So what happens when I reinstall Mac OS X or upgrade my computer? I need to find these emails again and then enter all these license keys and related information. I can use SpotLight or search in Mail.app to help me find all these registration receipts, but that assumes I can remember the applications I registered and their names. Magnify this problem if I ever need to buy multiple licenses for future employees and their computers. What about software running on multiple company servers? It would be nice to have all this information in one place.

This leads me to a new software development project: LicenseKeeperTM.

LicenseKeeperTM is a Cocoa application that keeps track of all the applications a user has purchased, the license keys and serial numbers needed to unlock the software, and all the registration information that was used to purchase each product.

Additionally, LicenseKeeperTM provides me a good way to gain more experience with Cocoa, Objective-C, and CoreData. It also gives me the opportunity to learn about the details of packaging and distributing a Mac software bundle and pushes me to work out the details of my distribution system (i.e. website, payment gateway, etc).

This announcement also brings up a new issue for me. Now that I’m actively working on non-game related software development (yes there are more products to come) and want to share the experiences through a blog, I need a place to do this; MakeMacGames doesn’t feel like the right place to do it. I imagine many that follow this site don’t care about non-game development or about consulting articles.

So this leads us to my second announcement: The Outer Level Blog. This is my new official company blog where I plan to bless the world with all of my non-game programming wisdom.

As I’m sure you’ve derived by these announcements, that my company name is Outer Level. I’ve held off revealing this until now because I wasn’t sure whether to use the same company name I use for my consulting work as my software business. Obviously, I’ve decided to simplify my life and stick with only one company or company name. This reduces paper work and headaches on my side and it may very well turn out that one side of my business benefits the other.

So, if you’re interested in following a MicroISV that is developing applications for the Mac, I hope that you follow me to The Outer Level Blog. But never fear, my gushing about what I’m up to in the realm of Mac game development will continue here on this site.

Family Emergency

I’m heading out of town today, but I’m working on a big announcement for next week.

More to come…

Update: I’m back and ready to move on. Thanks to all who expressed their concerns.

Game Prototype

I have a prototype started for a simple game using Objective-C and Cocoa. It’s been slow going, but I feel like I’m finally getting somewhere. I worked on it on and off while flying around the country the past couple of weeks on vacation (which helps explain the recent lack of updates to this site).

Okay, so it doesn’t look like much, but it’s a start. Have to start someplace right?

Mostly, what I’m getting out of this is a deeper understanding of Mac game programming in Objective-C and Cocoa.

So far nothing really happens visually except that the player gets drawn to the screen. But the window accepts keyboard input and determines what key(s) were pressed and has the structure ready to send commands to various game objects to tell them what to do: move, shoot, etc.

In order to handle this basic functionality, I put together the following class hierarchy:

The class OLGameView is a subclass of NSView and handles the display of the game state. It in turn calls game objects to draw themselves inside a provided NSRect object via the drawInRect:(NSRect)rect method. Object movement is handled by the keyDown:(NSEvent)theEvent and keyUp:(NSEvent)theEvent methods of the OLGameView class which then calls the moveInDirection:(int)direction method of the Player class.

The next step is to add an NSTimer instance that will handle the refreshing of the window that will create the game animation.