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 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.

Backups Revisited

After more than two months running my backup system, it’s time to reevaluate the results.

I’ve been running Dantz Retrospect to backup all my files to one external firewire 250GB dual drive RAID. Up to this past week, everything seemed to be going smoothly.

Last Friday, Retrospect reported an error: “Disk Volume Full”. How can that be? I’m backing up data from two drives to this RAID that add up to approximately 55 GB. So I started digging around and I discovered a few problems.

Retrospect archives changes, deleted files, etc. Over time (not a long time), this space was used up. So, I looked into cleaning up the archives and filtering out files I didn’t care about. This turned into a pretty complicated procedure. In other words, I failed at figuring out how to do this.

Additionally, I discovered that one of the drives in the mirrored RAID and become corrupt. I would never have seen this, if the disks had not filled up and I not checked them in Apple’s Disk Utility application. Thankfully, it was easy to fix by simply having Disk Utility rebuild the corrupt drive. It took about three hours, but no data was lost and it was a 1-click procedure.

What did I take away from this? Two things, I need new backup software and being very paranoid, I need another backup RAID.

I decided upon ChronoSync from econ Technologies after some testing of several products. I chose ChronoSync primarily because of the interface. It was intuitive, easy to use, and had built-in email notifications of backup status with summary and errors (which Retrospect seems to lack). It also provides advanced file filters and update triggers that allow for a pretty customized backup solution. On top of that it can act as a synchronization tool between my G5 PowerMac and my PowerBook.

Now with two distinct external RAID systems, I can divide up my backups onto two targets so if one goes, I don’t lose everything. It also doubles my available disk space. Hopefully, this will last me a while.

Open-Source Shareware Registration Framework

Are you looking for a way to setup a registration system for your shareware software?

There are several commercial products out there, but Aquatic has released a free (donations accepted) open-source framework: AquaticPrime. It supports both Cocoa and Carbon integration and also includes a php-based library for use on your online e-commerce shopping cart system.

AquaticPrime utilizes the strong one-way encryption algorithm, RSA to provide for a powerful way of locking down your product.

Aquatic also has simple Developer Documentation available to help you along your way when integrating the framework into your product.

Subversion Revisited

A while back I wrote about moving to Subversion for revision control. To this point it has worked well for the little I have needed it. But as I begin ramping up my development efforts I find that I spend more time on my PowerBook than I previously have. This has introduced a new wrinkle into my development process.

I initially only setup the Subversion client tools which support local code repositories, but do not provide any mechanism for remote or networked repositories. So, I set off to remedy this problem.

After some effort tracking down the right order to do things, here are the steps that I took:

  1. Remove any existing installations of subversion client and server (svnserve)
  2. Download and install the subversion Mac OS X binaries from Martin Ott [SubEthaEdit]
  3. Add the subverion binaries to your unix command line path. I did this by adding the following to my .profile file in my home directory.

    export PATH=$PATH:/usr/local/bin
  4. Open the ports TCP:3690 UDP:3690 through the firewall properties. You’ll probably need to add a new service.
  5. Run the svnserve daemon
    svnserve -d --root=/Volumes/CodeVault/Subversion/
  6. Create a new Repository

    svnadmin create --fs-type fsfs //Volumes/CodeVault/Subversion/[repository name]
  7. Configure repository for remote access by following the steps outlined in the Built-in authentication and authorization section of the Subversion Docs.
  8. Import project into new repository

    svn import ./[project name] svn://localhost/[repostiory name] --message 'Initial repository layout'
  9. Verify repository locally

    svn list svn://localhost/[repository name]
  10. Verify access from remote machine

    svn list svn://[machine name]/[repository name]

The Mac Gaming Market

Thanks to radioact1ve for passing on a link to this article over on Next Generation in the comments section of my recent Fruitful Weekend post:

The Evolution of Mac Gaming
by Christian Svensson

Aspyr director of development, Glenda Adams, sheds light on the challenges and opportunities facing game developers and publishers on the Mac.

The article covers some interesting economics on porting PC games to the MacIntosh gaming market. Glenda Adams throws out some intriguing figures about how many copies they need to sell in order to make a profit and how they select which titles they think will reach these numbers.

Glenda Adams estimates that they will sell only 3 – 5 percent of what a title will sell on the PC side of the world. She goes on to say the following:

“This is one of the reasons Aspyr has focused on the really AAA titles like Sims 2 and Doom 3, since it is difficult to make money on a game that might only sell 5-10K units on the Mac.”

5-10K units? This may be peanuts to Aspyr, but this sounds to me like there is an enormous market opportunity for small game developers and publishers for the Mac. If a game sells for $20 through internet only sales and sells even 5000 units over it’s lifetime, that’s still $100,000. Maybe, I’m missing something… but if targeting games that aren’t in the AAA classification keeps me from directly competing with Aspyr and the like and still leaves room for $100k per title… this sounds okay to me.

How many times have we heard the same complaint, “there aren’t enough games for the Mac”? Well, fellow aspiring Mac game developers… maybe it’s time we stand up to the challenge and more importantly, the opportunity.

[Update: added a link to radioact1ve’s web site]

Mac Game Programming Links

This is a short list of valuable links for game programming for the Mac. If you know of any that I’ve missed, please leave a comment.

Game Programming on the Mac:

Objective-C & Cocoa Programming on the Mac:

General Game Programming:

[Update 08/24/2005: Updated list]

Mighty Mouse

Apple finally gives up on the idea that we only need a one button mouse. Of course, they can’t just give us two or more buttons, they give us none! Leave it to Apple to one-up everyone else. Even when they admit they were wrong.

The coolest thing is not the lack of buttons or the nice looking design, but the 360 degree track ball instead of a two way vertical scroll wheel. There has to be some fun game features that can be designed around that!

Distinctly Mac

As I progress through my Game Plan for developing my first computer game, I’ve been keeping a journal of various game ideas. I recently reviewed what I had and noticed a trend: all were based on my past experience playing games. The listing included “cool features” from games on various platforms, but none of the ideas were distinctly Mac. They could all be implemented on other platorms or consoles. Not that this is necessarily bad, but the reason I want to make Mac games is because I like the Mac platform. I like to work inside the distinctly Mac environment.

So, I’ve changed my focus, or rather I’ve widened my focus to try and include features that I have not seen before. I’m now looking for features that are very much Mac centric, I’m now trying to embrace the Mac feel and the Mac experience. As Ian pointed out in a comment on my Allegro Framework entry, a game played on a Mac should feel like it’s being played on a Mac, not like it was ported or copied from another platform as a second thought.

What are these ideas? Ah, you’ll have to wait and see what makes it into my design document. I’m still brainstorming, but I like what my mind is seeing.

More from Wil Shipley

Drunken Batman has a great interview on his Druken Blog with Wil Shipley and all things Delicious Monster. Wil is an interesting personality who has a great perspective on the software industry and is very willing to share his experiences gained by founding two incredibly successful software companies.

Wil has also posted a followup to his first code review post that caused such a heated debate over class initialization in Objective-C and Cocoa.

Cocoa Radio

Podcasts have burst on to the scene and up until now I had not even tried one. With the update to iTunes, making it completely brain dead to subscribe to them and sync them with my iPod, I thought I would go hunting for something to try out.

CocoaRadio brings the life of Cocoa developers to your iPod. Their first episode interviews Jesse Grosjean of Hog Bay Software, what he does, how he does it, etc.

It should be interesting to see where this goes and who they may interview. This could be very inspirational and informative, plus you can listen on your iPod.