Bullfrog 2

Bullfrog exceeded all my expectations. Even though it was only supposed to be a learning project and was developed with a tiny budget, downloads have been non-stop since it made its way on to the big Mac download websites.

Watching as the high scores have gotten higher and higher over time and reading all the extremely positive feedback has been feeding the game developer monster inside of me.

Finally, I can’t resist any longer. I’ve decided to begin development on the sequel to my little arcade game. But, this time the plan is a little different.

Take Two

The first time around I didn’t know any Objective-C or Cocoa, had a budget of almost zero, and developed the entire game from scratch.

Bullfrog 2 will benefit from all the experience I earned the first time through, an existing code base, a larger media budget, an existing user-base, and a new development partner.

Marcus Zarra and I thought it would be fun to team up and develop Bullfrog 2 together as a joint venture between Outer Level and Zarra Studios.

Sharing the Journey

Neither of us are real “game developers”, so we’ll be working through some interesting challenges on the way to releasing Bullfrog 2.

With this in mind, we’ve decided that sharing the design and development process on our blogs would be fun and hopefully interesting to gamers and fellow indie developers.

Bullfrog 2 is still very early in the design stage, but we already know some of the challenges we’ll be facing.

The first Bullfrog engine was built entirely in Objective-C and Cocoa and had some “interesting” performance challenges. One of the early design decisions I made was to avoid using OpenGL so I would not have to learn two entirely new frameworks to get the project completed.

This time around, one of the big goals is to migrate the rendering engine to OpenGL. We hope that this decision will lead to some huge performance benefits that will allow us to add new fun game-play features.

So we’ll probably have much to say on the OpenGL switch along with other technical hurdles we’ll likely face.

Stay Tuned

If you are interested at all about game development on the Mac, look for articles coming down the pipe about all things Bullfrog 2: design, development, brainstorming, and marketing.

Marketing on the Cheap

I finally had a couple of hours this morning to catch up on my neglected news feeds. I subscribe to several hundred focusing on a large variety of topics.

This morning I found several related and informative articles on the topic of low budget marketing for the micro-isv. I thought that they might be interesting to my fellow indie developers.

Guy Kawasaki writes DIY PR:

So what I am recommending is not howto manage an agency, but something more radical: not hiring an agency at all. Here are ten reasons why.

My Micro-ISV with A great alternative to 30 day free trials:

What really got my attention is how Textexpander’s trial period works…

Because of a friend’s recommendation, I’m a TextExpander user myself. I too find the trial mechanism very good, not to mention helpful.

Coding Horror reveals How to Get Rich Programming:

What’s truly exciting about this is how the internet has created economic opportunity for a single programmer working alone.

Patrick McKenzie talks about Community-oriented Marketing:

If you attempt to sell something directly to the members of a community you are not a part of, you risk a great chance of falling afoul of community norms and an almost certain chance of wasting your time.

Daniel Jalkut examines Marketing a Negative:

You’d like to replicate us, but it just can’t be done.

LicenseKeeper 1.1.2

This is a minor maintenance release that fixes a few issues. It is recommended that all LicenseKeeper users upgrade to this version.

Release Notes:

  • Fixed: Crash with embedded HTTPS resources in HTML email
  • Fixed: Some multipart formatted emails were mistaken for HTML
  • Fixed: Repeated “File Too Large” messages on certain email attachments
  • Fixed: Attaching email or files when no product is selected.
  • Fixed: Added “lk_license” as a valid license file extension because of Yahoo Mail munging the file name
  • Fixed: Check for Updates on startup

Mac Pro Heat Issues

As the temperatures here in the North Eastern United States have risen so have my Mac Pro hardware crashes.

There seems to be a direct correlation with internal temp and hard system freezes. This mostly occurs when playing certain computer games (Age of Empires III, Redline, and WingNuts 2).

When I experience the system freeze, a hard reboot results in only a black screen.

After a long search of the interwebs, I found mention of this little fan controller utility that seems to have solved the problem: smcFanController.

I created two profiles, one for normal daily use and one for gaming with the following settings:

	Power Supply = 600 RPM
	All other fans set to 500 RPM 
	PCIe/HDD = 1468 RPM
	All others same as above

Then I just switch my profile accordingly. I’ve been running with this setup for the past week and haven’t had a single crash. Prior to that I would have several during any particular gaming session.

Hopefully, this helps someone else fix their crashing Mac Pro.

What’s Next?

Recently, I’ve been getting questions from customers and friends asking “what’s next?”

It has only been about three months since the release of LicenseKeeper and there is plenty of work to do. I have a whole list of requested enhancements and ideas to get to. And get to them I will.

But, I’ve been keeping an eye looking forward. My long range plans are to publish several products. I fear the “all the eggs in one basket” problem that other indie Mac developers have faced in the last few years.

So, work on the “next great thing” has begun. At this point, it’s only early design work, but I’m already struggling with how much to reveal and how soon to let the cat out of the bag.

Do I go with the “mystery app” buzz builder approach and use a super cool code name to build interest? Or do I keep the whole thing secret until it’s ready for release.

Hmm… What to do, What to do.

Where Cat Tales and Dog Dreams Come True

A little off topic, but my sister also runs a small business. Pam started her company a short time ago but has had enormous success selling her high-fasion dog & cat collars, leashes, and harnesses.

She is a great example of someone pursuing her passion and ignoring the naysayers to reach success. Pam left a very lucrative position in the medical/surgical equipment industry to chase her dream.

With just an idea, she started hand sewing her products, hired a web designer, and started marketing her tail off. Now, her products are featured in boutique stores around the country and her business is growing fast.

Lola & Foxy

She recently got a little extra publicity by a blogger in her area when they were nice enough to post about meeting Pam at a recent pet expo.

It’s been fun to watch as my little sister has developed into a savvy business woman in such a short time.

If you need a stylish collar for your pet, check out her online store.

LicenseKeeper 1.1.1 Released

Version 1.1.1 of LicenseKeeper is now available.

This is a maintenance release that fixes several important issues. It is recommended that all LicenseKeeper users upgrade to this version.

If you have “Check for Updates” set to check on startup you should see the notice the next time you launch LicenseKeeper. If not, you can download it from here:


Release Notes:

  • New: HTML and MIME encoded email is now fully suppported (pre 1.1.1 email is handled as plain text)
  • New: Quoted-Printable encoded email is now fully supported
  • New: Importing Email now automatically imports any email attachments
  • New: Scanning now picks up TO: email address as the registeration email, if a serial number is found.
  • New: Email attachments can now be directly drag & dropped to LicenseKeeper.
  • New: Added “Send Feedback” menu item
  • New: Added disk space checks to library upgrade
  • Changed: Library backup has been rewritten to use straight file system copy instead of data migration for improved performance and safety.
  • Changed: Files larger than 100MB are no longer allowed as attachments.
    (NOTE: Huge files were causing performance and corruption issues, this limitation will be fixed in a future version)
  • Changed: Updated help pages.
  • Fixed: Attachment Printing
  • Fixed: Printing HTML email now prints background colors and images
  • Fixed: New library was not being marked with current version when created.
  • Fixed: Full email raw source is now stored in attachment
  • Fixed: Email w/o content encoding are treated as plain/text.
  • Fixed: Export email attachment now saves the email’s complete original raw source (for email attached in 1.1.1 or later)
  • Fixed: Parsing of email header info would get confused with certain types of header tags
  • Fixed: Improved email header parsing
  • Fixed: Serial Number Scan of BuddyPop format
  • Fixed: Email Scanning for BareBones Super Get Info
  • Fixed: Crash in rare circumstances occurring during check if the LicenseKeeper record is selected.
  • Fixed: Crash while checking file attributes for plug-in type
  • Fixed: Rare crash caused by certain sorting operations.
  • Fixed: Crash during library backup when upgrading.
  • Fixed: memory leaks in library upgrade process
  • Fixed: Print menu is only enabled for attachments viewer.
  • Fixed: Check For “Newer” library versions.
  • Fixed: threading issues in Export to XML

New Theme

Finally, after more than a year and a half of blogging with WordPress I got tired enough of the default Kubrik theme to do something about it.

I spent most of today hacking together a basic template that fits into the main site a bit better. Please, let me know if you see any weird layout issues.

Debugging Cocoa

Thought I would share my growing list of handy tools and techniques for debugging Cocoa applications on the Mac. If you have any to add, share the love in a comment.

Debugging Memory Issues

Debugging Crash Reports

Logging Techniques

Debugging Tools

  • F-Script – Interactive scripting environment for Objective-C and Cocoa.
  • Class-Dump
  • OTX – Cocoa UI for otool.
  • BSInspector – Xcode plug-in for viewing detailed object information.