Saturday, April 14, 2012

History of RaptorGL, my pet project Part 2

Part 2 - the final part of the History of RaptorGL, my pet project.
If you haven't read Part 1 yet you should!
The Rebirth of RaptorGL

In September 2011 I attended the  360iDev conference in Denver. It was life changing!!! No really it was. I met so many amazing developers, many of whom I have been following and communicating through Twitter. During one lunch panel they showed off all the games they built the night before on the game jam. It instantly reminded me of raptorgl and how perfect it would've been to prototype a game together and then just stick it in a UIWebView shell. Before I got back from the conference I started to read up on the latest changes in javascript and animation to see what new I could adopt. To my surprise there was a lot of new developments just in the past 6-8 months.

After reading up on the most relevant subjects I began the work on raptorgl. But after 4 months of coding and constant changes/fixes I came to the realization that I am just duct-taping the current code. As much as I hated to admit it, for raptrogl to be... well... like a raptor (fast, agile, and smart) it needed a re-write. Not just any re-write but a re-write from the ground up, a full re-write.

March 2012 - after doing my last checkout from the old repo I deleted it and recreated a fresh new one.
RaptorGL died... Long live RaptorGL!

I began my journey of the full re-write. To my biggest surprise I found many advantages working as a single developer. I believe it helped quicken the progress of the new development since I didn't have to schedule who would work on what. Also I could make major changes in any part of the library without worrying that it will break another developer's code/implementation. Another surprise to me was how much the code for each feature changed, I mean the name was the same rgl.Sprite but the implementation was totally different. It was simpler, faster, easier to read, and it compressed to a much smaller size. By the end of the month I had a very solid codebase which had the most important features but almost none of the code from the original.

I felt really good about it so I was looking for an opportunity to test it out. That's when I remembered that what started the spark again was the 360iDev game jam and there is a game jam I have been dying to be part of... Ludum Dare 48 hours online game jam event. Wow, what a better way to find bugs and test it's features than Ludum Dare. So I went ahead and created an account and started to get ready. But I also realized that to make sure I won't back down or come up with excuses I better get some help to hold me accountable. I started to tell everyone about Ludum Dare and that I will participate in it. I also posted a link to the RaptorGL website on twitter. The response I got was amazing and extremely inspiring, I am so glad I did it. So right now I am busy getting RaptorGL ready for Ludum Dare and finishing up the major features so I can release it by the end of the summer.

Writing these posts gave me a great opportunity to reflect on the ups and downs of the project and a new appreciation for what it takes to start and continually work on a side-project. The process requires commitment and desire (which both tend to wane as time goes by) but sticking it through can lead to an overwhelming sense of accomplishment and satisfaction. Hopefully this will help others get the spark back for their pet project.

In the next couple of weeks I am going to start posting Code examples and a couple of short Videos that show off some of the features that would be hard to write about otherwise.

If you haven't yet, take a look at the RaptorGL website and spread the word.