Sunday, April 22, 2012

Game Level and Rapid Prototyping Demo

Wow what a ride! I can't believe that 2 days ago I had nothing and now I got this really cool partially complete game, with many fun and cute characters.
In this Game Level and Rapid Prototyping Demo I showcase how easy and natural it is to edit the game state and entities real time.You can even replace the entire Update method and plug your own in to test different ideas.
Also you can see how well the pieces fit together. All I have left is the bad guys and some Game Mechanics... which is pretty much the other 50% of the game.
I really enjoyed being part of Ludum Dare 23. I am going to do it again. It has such a great reward bringing my "pet project" to the next level and watch it grow up over the weekend.
I got big plans for RaptorGL which I wont talk about until each of them becomes reality.
Watch the demo and let me know your thoughts about it. And YES I will finish this game up, I kind of have to anyway my boys hardly can wait to help Captain Ant protecting his "Tiny World"

New game music, Level1, full Menu and Scene swapping

Wow, what an amazing productive weekend, and it's Not over yet.
This demo you can see I updated the main character to carry his gun. Also added new music created by me. I used my iPad for music making and Audacity for editing it. Also implemented a full on Menu system to navigate in the game and turn on and off the background music.

The transition to the menu and Level1 uses Scenes. I wasn't happy that I had to use the instance as the reference so I re-wrote the swapping to use text ID instead. Very happy with it.
Watch the video enjoy.

Saturday, April 21, 2012

Demo video of game opening scene and RaptorGL sound demo

In this video you can see the opening scene of my game with a small animation and also watch as I demo the sound module.
Very proud to announce that thanks to Ludum Dare and the ambition that came with participating RaptorGL has a brand new cross browser multi channel sound module. You can play many sounds at the same time, and also have a sound loop and all the other sounds will play on top of it.

This is a huge accomplishment and LD23 is already a huge win for me!

Created a game poster, Introducing the game characters

Finished the art for the bad guys. I was going to code first and use simple surfaces, but I got carried away and got in the zone so I cranked out the art.
I actually like it this way. I have a visual feedback on what characters are going to be in the game. It also gave me even more idea for adding levels etc.. That is definitely not my goal for this weekend, but it could turn into a bigger project.

So here it goes the Game Poster:

Friday, April 20, 2012

Here is my Game and concept art for LD23

It's the 5 hour mark of Ludum Dare 23, and I finished the game concept art.
My game is::

Captain Ant: Protector of his Tiny World

Captain Ant was walking in the forest. As he walked he came across a bottle he jumped on top of it to walk over it. BUT he did not pay attention and fall into the bottle through the crack. He was unable to climb out of the bottle so he made him self home with grass and other things the wind blow in through the crack on the bottle. It was his "Tiny World".
But just when he thought he can relax other bugs started to show up and trying to invade his tiny world he worked so hard. He had no choice left but to grab his good olde trusty Bug Buster HD45 and protect his tiny world from invasion.

First game art from my Ludum Dare game

Game concept art is done, all its left are the bad guys. Very happy how it turned out
Here is the first of many images, I have to post the gun first of course.

Ludum Dare 23, Let's have fun!

As blogged about it before I am participating in Ludum Dare 23 a 48 hours game jam, and going to use RaptorGL to see it's strengths and weaknesses. I made a ridicules mistake last night and started a re-write of the Sprite class, so I have to finish that before I can get going on the game.

LD23 Theme: Tiny World.

I got a few ideas to explore and surprisingly only one of them is a platformer. I say surprisingly because I really like platformers and always in the look out to find an excuse to make one.
There is lots of way to interpret the theme. Large player trying to get through a tiny street in a Tiny World, Player can jump from one continent to an other since it is well Tiny World etc... and the list goes on.

I got everything ready at my office where I will camp out for the next 2 days as you can see in the image. I am going to post updates as I go, so stay tuned

The other tenants at my office are Very supportive about my game jam. They just can't get over that I will actually spend my weekend making a game. One of them (Theresa) especially, she left these notes on my door. She is working tomorrow morning so she is going to come and visit what I got done, talking about pressure.

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.

Thursday, April 12, 2012

History of RaptorGL, my pet project Part 1

The Birth of RaptorGL
It all started back in 2008 with a need for a project I was working on. A client needed an animation for their corp. intranet site.  Since their network blocks flash they were looking for an alternative. So I created a simple DOM based animation with a bunch of div's and the images set as their background. It worked great and everyone was happy. The implementation wasn't the prettiest, but it worked and I did not have to worry about other javascript code getting in the way.

But something was really intriguing about it that I could just use a browser and some divs and animate it with Javascript. A Love Affair started...

So I decided to spend a weekend and experiment on how I could improve it and make it modular to be able to reuse it. I decided that the first thing I have to do is move away from DOM and use the Canvas. Thanks to lots of articles on the internet it was a quick and painless move. Once I got a working copy of the same lib using canvas I started to refactor the code and put it into it's own namespace. I had to come up with a name and Javascript Animation and Game Studio was born, or jsAGS for short. The empty repo is still on Launchpad and I'll leave it over there for historic reasons :)
I was changing it so rapidly and breaking compatibility with previous versions that I decided not to make the code public. Didn't want any angry users.

Over the years I added a lot of great functionality inspired mostly by PyGame. My 2 favorites are SpriteGroup and Surface

SpriteGroup allows you to group related sprites into one object, like bullets. Which is really cool because each update the game loop needs to call updates only on the SpriteGroup and not on every bullet sprite. Then the SpriteGroup can loop through the array of sprites and update them as needed.

Surface allows you to prototype a game or animation without any image. It supports simple shapes like rectangle, circle, and triangle. This gave a Huge boost to development and as far as the Sprite is concerned it's an image, so when the dev is ready he can just swap the surface out with an image.

Development stagnated in 2010 and it I stopped using it altogether due to lack of time. Last year in 2011 the interest sparked again to write some simple games we can play in the browser. I quickly polished off my code and it was used as the basis of this new project. 

I was unhappy with the name so a friend and I were brain storming on it, after many choices I came up with Raptor. Basing it off of movies I liked how smart they were, agile, and fast. So Raptor Game Library or RaptorGL was born.

We were rapidly working through the code and iterated lots of changes. I was writing the core code and he was writing examples/tests for each feature. We made good progress but then again life and work got in the way. By August I was the only one committing to the code base and RaptorGL became a single developer project again. Then I lost interest again...

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