PointClickPress and The Great Underground Adventure Postmortem

In the Beginning

Before I launch into my next programming adventure I should figure out what went wrong and what went right with the development of both the PointClickPress engine and with The Great Underground Adventure game. Its important to learn from your mistakes, so here we go.

I started this project because I wanted to learn a PHP framework and I thought it would be straight forward (and fun) to make an in-browser point-and-click style game. Maybe that could’ve been true but, between major life changes outside of this project and getting bogged down in game-engine hell, it ended up taking two years.  I think that is way to much time for the small game that was ultimately the result of the project, but then again, its not like I was working on it full time. Sometimes maybe I got an hour a week between changing dirty diapers.  I think other people would’ve (wisely?) abandoned this project when so little progress was being made for such little results, but for better or worse I stubbornly stuck with it.

What went right?

1. Choosing the Kohana Framework

I spent a lot of time researching and testing frameworks before I selected one to learn.  I’ve touched on this subject before.  Kohana made the development of the PointClickPress game engine very straight forward. The framework allowed me to stay organized, leverage existing libraries, and be productive very quickly without getting bogged down in framework guts or configuration.  I was even able to find a Kohaha module that came with fully developed user registration, authorization, and admin sections which allowed me to focus on building the game engine and not go through the dry exercise of user management again.  Of course, I had spent a weekend building the user admin already by the time I found that nice module.

2. Breaking the project into phases

I broke PCP development into manageable chunks that would be functional and releasable when completed.  Software development is an iterative process and you can’t plan for everything along the way.  Marking out stopping points in the development allowed me to make sure that I’d get something released. Nothing keeps up my motivation like releasing something playable for people to try.

3. Mobile & desktop support

Right from the start I made sure that PointClickPress was going to work as well as in a mobile browser as it did on a desktop. Every design decision considered mobile.  I think it would have been very difficult to ignore mobile and then try to shoehorn the site into a mobile browser after the desktop was done.   Everything works equally well on large and small screens. I did go overboard keeping by javascript to a minimum however.

4. Using photos for game art

I really like how the photos came out for The Great Underground Adventure. I think they look great and since you are (for the most part) exploring real locations it adds an extra level of interest to the  game.  Scouting and taking the photos was also an adventure that lead me to all sorts of interesting places.

What went wrong?

1. Getting lost in game engine hell

Despite choosing a light framework that had many built in libraries I still over engineered the PCP game engine and administration area way beyond what was needed to make a straightforward point-and-click adventure game.  If I had just kept my head out of the clouds and built only what I needed to get my game working I’d have finished a year earlier. I kept wanting the engine and admin to be “perfect” before I started building the game. I was re-architecting things constantly and still finding ways to refactor and abstract.  Eventually I just had to stop!

I also stubbornly refused to use ORM, so as my database model evolved I was constantly tinkering with the SQL. Later on I was constantly fixing SQL bugs rather than just loading the ORM library at the start and being done with it.

I greatly admired how WordPress allows a user to add additional functionality easily. I wanted the engine to have plugins, to be extensible, so that end users could easily add features that I hadn’t thought of.  I spent way to much time thinking of how to de-couple functionality from the engine “core” than was healthy.  Depending on the ability for users to extend the existing functionality by adding their own clickable actions was also a trap that eventually doomed the idea of a public PointClickPress portal game website due to security issues.

2. User-created extension security issues derail game creation

I consider this the biggest problem with the current version of PointClickPress.com. This is not an issue for the stand-alone version however.

The first iteration of PointClickPRess was as single-user, multi-story creator.  The use-case was that an author could self-host an installation of PCP and build “stories” (aka games) with it. In this use-case PCP supported only a few out-of-the box clickable actions such as linking two locations together.  The plan was that an author could easily write any intermediate to advanced click actions directly in PHP and connect to the PCP API. It is very straight forward to create a small action file and place it in the action directory. Then it was available to use.  Alternately there was an out-of-the-box clickable action that was simply a PHP eval() call. This allowed the user to type PHP in from the admin area without needing to create a file.  This ability to create new actions easily allowed PCP to support whatever an author would want.

Of course neither of these options is viable on a multi-user public installation such as PointClickPress.com.  The authors no longer have access to the filesystem, and allowing the use of eval() is also out of the question for security reasons.  This loss of extensibility severely hinders game development.  The built-in clickable actions by themselves don’t do much. They were only meant to be shortcuts for simple tasks.  Now an author on PointClickPress.com must chain many simple actions together to equal what one action on a self-hosted version of PCP could do. This is what I have done for The Great Underground Adventure. Often there is a cascade of three or four clickable actions that are called behind the scenes as the result of one click. Chaining actions together is a fairly arduous task. And I don’t expect anybody to enjoy using the public site for this reason.

3. Using photos for game art

Using photos for game art was a million times harder than I thought it was going to be. I talked about this already in a blog post here.  I estimate I took around 3000 photos over the course of two years. Many I got on vacations, but also I scouted locations around me. Probably about 400 of these photos made it into the game either by themselves or as part of a composition.  I’m not a strong “Photoshopper”, so creating the composite photos, such as the views surrounding the cable car area. Took many evenings to get right.



In the journey from the start to the end of this project the game felt as if it became an after-thought unfortunately and the PCP admin seemed to be the central focus. Maybe I’m just born to be a back-end programmer. I certainly accomplish my goal of learning a PHP framework from this project.  I did plan on making other games using this engine, but now that I am finished I find myself brainstorming the next project around learning new technologies. I’d like to play with the canvas and try designing a multiplayer game. Maybe learning Python and Tornado, or Node.js, at the same time.   I’m not sure many people but me will enjoy playing The Great Underground Adventure, but I’m proud of it. I think its charming in its own decidedly low-tech way. The same goes for the PointClickPress engine.

If anyone wants to try their hand at building a game you are welcome to give it a try at PointClickPress.com or you can download and host your own copy. PointClickPress  is open sourced under the BSD license and is available for download at SourceForge.net.

CFBuilder, we need to talk

Dear CFBuilder,

I tried, I really tried. You came with a great reputation, and everyone stuck up for you. And though we’ve fought every single day for two years now I can honestly say that I’ve tried to make this relationship work.

I loved your code introspection. The ability to click on a method call and jump right to where that method is defined was a great help. And your ability to intelligently refactor code was also wonderful. There were little things too, like your built-in server controls. And of course I’ll never forget that your code hinting was completely up to date with CF9.

But living with you every day was difficult. Despite my 64bit 8gig machine you still managed to drag my entire system to a crawl. And I can never just start fresh with you; I think in files and code, but you were always demanding I make projects. I’ve already organize my project into folders on the drive; I’m not interested in duplicating the process for your benefit. But you never listen; it was your way or the highway. You threw a tantrum every time I tried to go around you and open a file directly from explorer.

You often get confused with files that contain a mix of SQL and Coldfusion or HTML, JS, and CF. This kills your code hinting and your syntax highlighter. Speaking of your syntax highlighter: it always dies on larger files, and has horrible refresh lag. I shouldn’t have to wait 30-45 seconds with each tab press when indenting codeblocks. I’ve wasted so much time waiting for you.

But I’ve said to much already. Afterall, its not you: its me. I’ve discovered that I’m more old fashioned than I realized. Despite all your bells and whistles all I really want is an IDE that is responsive. An IDE that will listen to me. All I really need is a solid text editor with syntax highlighting. You’re a lot of great things, but a snappy text editor is not one of them. I can type faster than you can think: and that’s not how it should be.

I don’t know whether I’ll run back to my ex, Dreamweaver, or if I’ll finally get serious with Notepad++, but neither have hesitated when helping me in the past.  Its time to move on. We can try to be friends. Give me a call when Twister comes out.


-Pirate Gaspard

The Great Underground Adventure is finished!

I’m happy to announce that my first PointClickPress game is finished and ready for playing!

The Great Underground Adventure is a low-tech web adventure game I’ve been working on for a while.

Explore some interesting locations, save the day, and try not to get eaten!

Play “The Great Underground Adventure ” here.

You are standing west of a white house.

Damn Good Developer Available

I was informed on Friday that PongoResume is laying off all its developers. This puts a lot of great developers back on the market.

One such developer is my good friend Glenn Gervais aka “RabidGadfly“.  I worked closely with him at both Pongo Resume and before that at Hasbro inc. His primary focus has lately been on Flex 4.5 application development. Before that he built and maintained a very popular games portal for Hasbro written in Flash(AS2). We also worked closely together to build a massive custom content management system written in Coldfusion using the Modelglue (and Coldspring) framework that helped to manage marketing information for Hasbro.com. Beyond that he completed hundreds of smaller projects that each helped save the day in their own way at Hasbro. He was also something of a mentor to me and for that I will always be grateful.

If you could use a Flex/Flash/Coldfusion guru on your team and you are in the Massachusetts or Rhode Island area you should contact him directly at:
Thank you.

Snots by the Lots

You’ve got snots by the lots
And snoogies and boogies
You’re nose is all rosie
You’re feeling all woozie

You’ve come down with a cold
You’re of age now my child
You’ve been to the breeding grounds
Where great germs roam wild

Day care and the doctor’s
The mall food court’s bathroom
you tasted everything
and licked a baboon

So now you are soggy
crusted cranky and crabby
there’ll be no sleep for you
(‘nor for mommy and daddy)

But fear not my child
for some future day
you’ll return to good humor
and go out to play



Sam is sick so I wrote this poem for him with a suggestion from a friend.

Announcing the Campaign to get Yankee Magazine to reprint "Private, Parents Keep Out!" by Austin Stevens

Austin Stevens’ book “Private, Parents Keep Out!” is awesome. Its partly an autobiographical tale about his childhood growing up in the farmlands of New Hampshire and partly an instruction manual on how to build treehouses, secret codes, and other great things for kids. If you didn’t read it when you were growing up you are out of luck. The book is out of print and copies are selling for almost $100 on Amazon. I’m starting a campaign to ask Yankee Magazine to reprint this wonderful children’s book. Below is my letter to the editor:

Dear Yankee Publishing,
I’m writing today to implore you to please please reprint Austin Stevens wonderful book “Private, Parents Keep Out!”.

As a child my brother and I would continually search for “Private, Parents Keep Out!” at my local library. And though the pages were torn and the binding was broken we would pour over the pages attempting to soak in all the instructions that Stevens so kindly wrote down for us. We re-read the adventures of Stevens and his friends to ourselves and shared the book with our childhood friends. We built tree houses, forts, and rope swings. We had crab-apple wars and secret clubs. Our boyhood was echoed in the beautiful illustrations and wonderful narrative.

I’m now married with a boy of my own. And so are my childhood friends. I would love to give “Private, Parents Keep Out!” to my child and friend’s children when they are old enough to read.

Now, during a time when “The Dangerous Book for Boys” and “The American Boy’s Handy book” are in their millionth printing, Steven Austins’ “Private, Parents Keep Out” has a built-in market ready to purchase this great book. Used copies of “Private, Parents Keep Out” are selling for almost $100 on Amazon.com. Its obviously still very popular. Now is a perfect time to bring this modern classic back to market.

Please reprint Austin Stevens wonderful book “Private, Parents Keep Out!”! I’m good for at least four copies.

 UPDATE 9/27/2011:

I received a personal response from Yankee Publishing president Jamie Trowbridge!

He wrote that, though it was a personal favorite of his, the book was not very successful and they would not be reprinting the book for distribution. However, he did say that maybe technology such as print-on-demand would allow them to bring the book back in some format in the future.

I’d like to thank Mr. Trowbridge for his personal response to my email and I do hope that everyone will be able to purchase copies of this fine book in some format in the near future!

Coldfusion Monkeys

I found it incredulous that when I searched for “monkey” in Google, not only is http://www.remotesynthesis.com on the 1st page, but it has two *different* links on the 1st page! I realized I was signed into Google+. I signed out and re-searched. The site is no where in the top 10 pages (though www.codinghorror.com is somehow on page 8?).

I am not sure how Google is deciding this. I have “remember web history” turned off on my Google account. Could it be using the information from my contacts in Google+ circles? Many of the people are Coldfusion people. Its the only thing I can think of, unless Google is breaking the rules and using my web history anyway. Anyone have any ideas on this?

Google you try hard, but personalizing my search for funny monkey photos by filtering on Coldfusion? That just isn’t smart. Some things do go together -like chocolate and peanutbutter- but Coldfusion and monkeys do not. …Prove me wrong people, prove me wrong!

Windows 7: Fixing File Explorer tree to show the folder hierarchy

Since moving to Windows 7 at work this has been driving me nuts. I move between my IDE and explorer all day and by default Win7 doesn’t show you the folder tree, and doesn’t auto expand. (Why are computer UIs always trying to hide the file and folder structures? Its like hiding the books in a library!) Luckily quick Googling found this article on the issue:
Show Folder Tree in Windows 7 Explorer

Alternative Music and Rock Radio

This post is inspired by this Boston Globe article a friend had sent me a while back: 90s rock dominates Boston radio

I’ve noticed that its often impossible to find new music on any of the 3-4 rock stations I listen to during my 45min commute to and from work. On each radio station there is just the same shuffling of what I call “big hits” still on high rotation as if the song just broke to the top of the charts. Whether its Pearl Jam, Stone Temple pilots, or Nirvana the airwaves are crowded with music that is quickly slipping into the “classic rock” genre. While radio has always played classic hits, the airwaves are so choked with these “big hits” and new singles are not given room to flourish.

It would seem that replaying the same music over and over would be an attempt to hold onto an existing audience rather than gain new listeners. Its the equivalent of a television station running Seinfeld & Home Improvement reruns all day: sure those were big hits in the 90s, and there is definitely a built-in audience that will enjoy them, but even Seinfeld is beginning to look dated and how many new fans could the show gain during the current age of Family Guy watchers? Perception and tastes shift over time. A large piece of a work of art’s identity is attached to the age in which it was created. A new audience is coming down the road and they will have their own identity, their own popular culture. In order to survive a radio station needs to be continually picking up new listeners as most of the young crowd grows up and these old farts stop rocking n rolling and start listening to adult contemporary or talk radio (or eventually die).

So why is so little airtime given to new music? Sure with the invention of the internet and the proliferation of portable music players there are many other ways for music lovers to listen to and discover new music. But radio has traditionally been the way major music labels push new music for consumers to discover. However, since radio stations are independently operated from music labels they choose to play the music which they believe will give them the biggest market share. In the past radio stations have gone along with the music labels’ push for new music, but since the end of the grunge era radio stations have not moved forward. Instead it seems they feel that keeping the “big hits” on high rotation is the best way to compete for an audience. It would seem to me that they are instead attempting to keep their old audience. Why has there been a shift to this philosophy?

In the Boston Globe article 90s rock dominates Boston radio Mike Tierney, vice president of broadcast operations for WFNX offers his opinion: “The biggest thing contributing to that [heavily playing 90s rock] is just how fragmented the rock landscape has become…The diversity that runs from Passion Pit to Chevelle and everything in the middle – it’s really difficult for one station to serve all those niches…The ’90s alternative just has a much larger quorum than today’s alternative…There’s just so many more people who can agree on Stone Temple Pilots and Pearl Jam than Vampire Weekend.”

That a radio executive could use both Vampire Weekend and Pearl Jam to describe the same genre of music shows just how muddled the genre of “Alternative” music has become. Alternative music has always been a broad label used to describe any music that is an alternative to mainstream music. Pearl Jam was certainly an alternative to the glam and hair band rock of the 80s, but once Pearl Jam broke into mainstream the band can no longer be considered alternative music. You could still call them “Grunge”, but Grunge is just a sub-genre of Rock. Pearl Jam (and other 90s bands such as Nirvana, Soundgarden, etc) are modern Rock just as Guns n Roses, Led Zeppelin, The Rolling Stones, and The Beatles all were in their time. Vampire Weekend is the true “alternative” of the two, as their syth pop/electronica experimental sound differs significantly from the band-oriented drums, bass, guitar, and vocal Rock sound of Pearl Jam and their fore bearers.

Growing up on the North Shore of Massachusetts I had my choice of many rock radio stations. WHEB in Portsmouth, New Hampshire was the home of tried-and-true rock hits while WBCN and WAAF were locked in a fierce completion to be the best rock station in the Boston market. I always felt that WBCN played a larger mix of “alternative” music while WAAF was clearly the home of cutting edge hard rock. WFNX was the home of all things new and strange. Its no surprise then that WFNX was the first radio station to play Nirvana’s “Smells Like Teen Spirit” on the air.

When Nirvana exploded in the 90s and Grunge became popular the definition for Alternative music became muddled and this is the root of the problem: Radio stations have lost their genre compass. Suddenly “alternative music” was mainstream and Grunge swept away hair-metal as the most popular genre of rock music. Mainstream radio stations jumped on board each announcing that they were the “alternative station” for the Boston market. These radio stations have seemingly ridden the “Alternative” wave for so long that they forget where they came from and are afraid to move forward. Now “Alternative” means a Passion Pit, Vampire weekend, and Neon Trees. You can’t get the same audience that likes grunge playing that.

Its bizarre to think that radio stations such as WAAF are so confused with their musical identities that they cannot forge ahead confidently to choose new music. Maybe radio stations are just waiting for “the next big thing” to come along. But there is already a ton of great new Rock music which would fit well with mainstream rock-oriented playlists such as WAAF’s. Let WFNX play “Alternative” and as the genre changes delve into what alternative means now as opposed to back in the 90s. WAAF should be seeking out bands such as Crash Kings, Manchester Orchestra, Kings of Leon, White Stripes, and Caged the Elephant and stick with what they’ve always played even when they were “Alternative”: Rock.