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]

Book Review: Game Programming All In One, 2nd Edition

Game Programming All In One, 2nd Edition — by Jonathan S. Harbour

Before starting this book, I had partially read at least half a dozen game programming books over the past ten years. They covered topics ranging from simple game programming to 3D engines mostly for Windows on the PC. Since my switch to the Mac shortly after Mac OS X Jaguar was released, I’ve been looking for resources on game programming that would target the Mac, or at least not be so directly tied to Microsoft’s DirectX framework. Finally, this book was what I was looking for. Basic 2D game development using the cross-platform game framework, Allegro.

The book starts off with a general introduction to game development and the author’s history writing games, presumably to establish authority and to give you a sense of what types of games he has worked on. Then, Harbour quickly runs through Allegro and how to install it and compile it for the platform you are running — as long as it’s Windows or Linux. There aren’t any instructions at all for the Mac, but as I covered in my previous article on Allegro, there are instructions online.

Once you have the framework installed (with little to no help from the book) you quickly start writing code to excercise the framework and get used to the general layout of an Allegro game loop. All goes smoothly and looks very promising. Harbour then progresses through the basics of putting together a simple but relatively feature rich, two player tank game throughout the rest of the book. He does take some detours to teach some specific topics about vertical scrollers and horizontal scrollers, but always returns to the tank game as a basis of a progressivly more complex game engine. Overall, he does a pretty good job of keeping explanations simple and to the point with out getting too caught up in technology specific implementations. This makes it very easy to take the ideas, algorithms, and approach of building the game engine to any platform and technology you desire.

The only negative I would point out is that the version of the Allegro framework that the book covers is sorely out of date. If you use a newer release, some adjustment of the code is necessary at points to get correct functionality — but your compiler should give you adequate warnings about deprecated methods and structures and the online documentation should help you find adequate replacements for the outdated methods.

Game Programming All In One is a terrific learning tool for picking up the basics of how a 2D game engine is built. After working through the examples and seeing how the pieces fit together, I feel ready to move forward on my own projects. In the end, the book has provided one of the best return on investments of any technology book I’ve read in quite some time.

No Regrets

The other day my wife and I were invited to a floor party in our apartment building by a couple in their sixties. We’ve been friendly with them ever since we moved in three years ago, but have never really gotten to know them.

We spent an amazing evening listening to their life stories. They shared adventures about working in the movie industry in California; about following their dreams and not having any regrets about how they spent their lives; about doing what they love and spending their time with the people that they love and enjoy.

Neither one followed the typical path of working for a large corporation, toiling away in a dingy gray office complex. They shared photographs of themselves with people such as Mariel Hemingway, Lyndon Johnson, and Frank Sinatra. They told us stories about the Gabor sisters and working on movie and theater sets. They took us through their adventures of marathon races and moving across the country simply for a change of scenery as their eyes would light up as they shared their memories and life experiences.

It was an amazing, inspirational evening. Not only did we create a stronger friendship with our neighbors, but it strengthened my resolve to follow my dreams and not someone else’s; to aim for a full life with no regrets.

Game Project Plan Update: Describe Game Idea

I’ve marked off “1. Describe the basic game idea” in the “Write a Design Document” section of my project plan. I’m now working hard on the next three sections:

2. Define the game play (players, enemies, goals, etc)
3. Define game engine requirements (view, player movements, controls, save & load, etc)
4. Sketch graphics ideas (players, enemies, world levels, scenery, etc)

More to come on this soon.

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]

Power of Passion

I’m amazed at what I can get done when I’m passionate about something.

I’m an independent software contract developer during the day. The majority of work I perform for clients is firmly planted in the corporate financial world. It pays pretty well, but I find it extremely boring and unfulfilling. I spend many hours a week developing software that will make or save other people and corporations a ton of money, but these projects rarely inspire me. Infact many days I wish I could leave the industry all together. Maybe it’s the mystical burn-out that I’ve heard so much about, but I believe it’s just the lack of interest, inspiration and passion.

Since I decided to take on this game development project and to write about it here, I’ve found an incredible amount of energy, inspiration, and enjoyment. In a word, passion.

I routinely jump out of bed in the middle of the night to jot down game design ideas. I can’t wait to wake up in the morning to work on my design documents, event though I hate writing them for my clients’ projects. Every Friday, I can’t bear to sit and look at C# code on a Windows PC another minute, but as soon as I get home, hug my wife hello, I attack my Mac keyboard to either record game ideas I had during the day or to tackle another Objective-C programming tutorial. I used to have nightmares about corporate code, now I dream about solutions to how I’m going tackle my projects. At work I hate my incredibly uncomfortable Aeron chair, at home I love my Aeron chair that has been set just perfectly for my body shape.

There’s an amazing abundance of power and energy coming from me that is all generated from the passion and excitement of working on my own software projects. Every day I feel my momentum get stronger. All this makes me feel like I can’t fail. The steps to success feel like they are all laid out right in front of me, I just need to pick them up and put them in the right order.

Obviously, I have not succeed yet — far from it. But when “experts” say follow your passion, do what you love; I believe they are right.

Fruitful Weekend

I entered this past weekend with the goal to spend a significant amount of time on my game project, working on the game design and prototyping a simple game engine. With a ton of coffee, some loud music, and plenty of time, I was able to get a rough first draft of my game design completed.

The design still needs more work, primarily fleshing out the details of game play. But, I did complete most of the general game look and feel — enough that someone could read the design document and get a real good idea of what the game will be like.

I plan on working on the design over this week and then posting at least part of it on this site. Hopefully, it will garner some feedback and suggestions on improvements.

The interesting decision I have to make now is how much of the design to post and in what format. I don’t think I need to worry about people stealing ideas, but the notion does nag at me. Maybe, I’m too paranoid. After all, the idea and the design are only a small part of the picture. Programming and completing the game is the hard part.

Thoughts? Suggestions? Comments?

Game Project Plan Update: Language and Framework Selection

After completing the book “Game Programming All In One” as a tutorial on game development — review coming soon. I’ve been evaluating my options for moving forward. As simple as the Allegro Framework made learning the basics of game programming, I was not entirely happy with the performance that it gave me on the Mac and not entirely pleased with the overall feeling that it was primarily targetting Windows and the other platorms were later added.

I have no idea if the developers conciously did this, but the idea of using graphics content in the Windows bmp format for my game content doesn’t sit well. Especially, since Objective-C and Cocoa have plenty of image manipulation functionality of their own using newer and more Mac friendly formats. The drawing routines seem to be rather slow, I’m not sure what the framework uses under the hood, but I believe that I can get better performance directly using CoreGraphics and definitely using OpenGL.

I did find that there are several plugins to the framework that would add the functionality and possibly the performance I’m looking for. For example there is a plugin to allow for the use of JPEG images and also a complete OpenGL framework plugin. The problem with these is that they are not part of the main Allegro framework and would require two more individual builds and would represent at least two more libraries that I have to constantly monitor for updates and patches.

Given my desire to target the Mac and the benefits of using XCode and Objective-C when it comes to a smooth transition to MacTel or x86Mac or whatever it will be called, I believe my choice has been made.

Also, I have created a page dedicated specifically to my Project Plan which should make it much easier for me to update and for anyone interested to follow along.

So, now that this step can be marked complete, I venture forth in to the wilds of the “Write a Design Document” step.

Indie Game Developer: Net War

I just recently found another indie game developer toiling away at his project and blogging about it.

Carpe Delirium is working on an online game called Net War built entirely with JavaScript to run in a browser. His graphics are simple, but nicely stylized and he has put together a very cool range indicator when a soldier is selected for movement or battle.

I hope he sticks with his project because he has a great start so far.