Creating Mr. Nussbaum’s Boardwalk Challenge
From time to time, when the stars align just the right way, Greg and I make awesome educational games. He is a fantastic Game Designer, and his games are truly unique.
I usually take the opportunity and push it a bit beyond my own capabilities. This obviously stretches the development time and leaves me drained of all energy. But I enjoy every second, and I am always extremely proud with the end result.
In March 2016 my beautiful son arrives into this wonderful world. Never before I felt so happy in my life. I took a couple of months off, so I can help the new mommy and also adjust to the new parent role.
After 4 months, exhausted, thrilled, still adjusting to this new role and the huge responsibility of being a parent, I slowly go back to my own game development. About this time, Greg reaches out to me with a new game. I said OK, we will do it, but have to start in October. That’s when the baby will be 6 months, and mommy goes back to work, and in my naivety I thought my own game will be finished. But I set a date, and said the work on the new game will start then no matter what.
So it id.
I have received the detailed description from Greg, so the development is officially on the way. Let me take this time to tell you something, Greg’s descriptions document is so good and well planned that it doesn’t change throughout the development. This is extremely rare, and one of the many reasons I enjoy working with him. The majority of software failures are due to a bad or incomplete plan.
I remembered something about HAXE from somewhere, so I started looking into it. After trying out different engines, I found that Flambe was working well across different browsers and OS, and also was able to publish the code to swf. So flambe it is.
Moving from FlashDevelop to HaxeDevelop was easy, making Flambe work, was not. It needed some patch in the source code, nothing too hard, and after some good googling around I find exactly what needs to be done, but I am afraid that for beginners, this might be off-putting.
We are up and running, so actual coding will start soon, but first I need to structure the work ahead, I break down all the major tasks into smaller ones. The game is made up by 5 games. You play the first, game to earn points that you use in order to gain access to other 4 fun games, and you play those games in order to gain points that you can exchange for items in the store. These items, get “printed” on certificates that kids can save to their devices.
The first game requires you to arrange the numbers on the screen in the right order, I named it “Earn Tokens”. Nothing too complicated to do in here, the prototype was up and running in no time.
The second game, is “Whack the Pirates”. By this time, I was already making the layouts, establishing the main themes, but didn’t settled for a look yet. First code and layout, then later when everything pretty much works the way it supposed to, I’ll move on to the artwork.
So far everything works pretty good, there is an annoying thing in Whack the pirates, where because of Flambe limitation, I can’t use masks properly, so that the characters hide when going back into their holes. But things move well and it seems that this new Haxe/Flambe thing is not bad at all, and I am very happy with the progress being made.
At this time it’s worth mentioning that development was being done under some tight schedule, in the time when the baby was sleeping, and, when mommy got back from work. Leaving me with almost zero personal downtime, before going to sleep.
Moving forward to Air Hockey, I realized it’s going to be a bit more challenging, but nothing that I can’t handle. For Air Hockey I just used some simple trigonometry, and simple point/distance collision detection, nothing too fancy, it worked.
Next one will be Ski-ball. After looking at all the SkeeBall games on YouTube that I can find, I realized, I won’t be able to get away with some simple tricks, I actually started to build it using the same tricks in Air Hokey, but it didn’t cut it this time. It needed a physics engine. After some research, I found Nape. It was an excellent choice, it did what I wanted and I will soon discover It did even more stuff that I didn’t even know I needed.
In order to edit the physics shapes you need a physics editor that can export the shapes back to Haxe, for this I bought PhysicsEditor. It does a good job at editing the shapes, but you need to trim the generated output code, so that you can use it effectively inside your game.
Soon after the Ski-ball game prototype was done, we hit a problem. The game won’t scale nicely. There is now way to scale things inside in a similar way to the flash based display list, so to make it work, you need to apply a scale calculation to everything, from math calculations inside the Air hockey game, to individual graphics. At this point I was afraid that I will need to apply the same scale calculations to each and every single node in the data provided by the physics editor, a task that would be extremely time consuming, not to mention every time that you would need to make an adjustment you would redo the whole process. Nightmare! Luckily, the shapes have a scale property, and the task to adjust for the scale is not that bad.
Finally I move to the final game Roll the Ball, and I soon discover the sensors inside Nape and I am in awe. They are awesome! Nape is Awesome!
Without getting too much into details, Flambe is really cool, but beware of the limitations, no sound on some iOS devices, no easy system for adjusting to different screen resolutions, no masking, no printing, no easy way to combine multiple image into a single one, for say download or other uses (like in character customization), and the entity/component system might be a bit awkward in the beginning. But if you don’t need printing, mask, downloading generated images, it’s a pretty solid engine, that works well on different devices, inside the different browsers. The sound issue is a problem not exactly with flambe, rather with Apple’s way of doing things, so much for “promoting” HTML5 on their devices.
After the coding part was mostly done I moved to the Art Work, based on the already made layouts and the place holders characters.
Some of the Art Work was inspired by the works of http://danielmerriam.com
After the Art Work was done, I added background music from http://incompetech.com/ and sound that I recorded with my phone, making noise using the toys my son plays with.
After some more testing, and bug fixing, the game is completed:
I hope kids will enjoy it for many years to come, and if you like it do share it!
Thank you for reading 🙂