Hi everyone,
Last month we (Badgerhammer) released our OpenFL puzzle game Idioctopus on Steam, Itch, iOS and Android. Here’s the website: http://idioctopus.com
It’s taken a long time time in on/off development (It was an NME game before the fork to OpenFL and an AS2, AS3 then XNA game before that) as we’ve been making it alongside other jobs and mainly bringing it out as a project to learn new programming languages and ecosystems, before it grew into a releasable game.
It’s a nice feeling to have finally released it and I’d like to thank all the OpenFL contributors, and the creators of the libraries we used(listed below)
Libraries used:
msignal
Since starting to use them on Idioctopus I really love signals, I tend to create a signal box class that holds them then give access to the other classes that need to listen for them being called.
crash dumper
This didn’t ship in the game but was a big help early on, particularly for remote testers reporting problems.
haxe-ga
We collect some game statistics using Google Analyitcs. I set up a website structure with folders for level-start, clear, death which then contain the the name of the level inside. e.g. level-start/level-1 or clear/level-30. We can also use the stats to upset ourselves with how many more people are playing on Android than have bought it on the play store.
Tools used:
After Effects
The majority of the game animations are created in After Effects then saved out to sprite sheets.
Spine
After it’s kickstarter I became aware of Spine, and saw the benefits skeletal animation could add to the game. Particularly for cut scene like full screen animations in the title page, menus, and post level animations. At the time we started looking at spine there was no runtime for haxe so I wrote one myself, this chewed up a load of dev time in future I’m going to try to avoid writing too many tools.
Flash AS2
The editor for the levels is laughably written in AS2, as that’s what I was using on the game at one point, and never felt I had the time to rebuild. I guess it got me through making the 80 levels in game though so maybe it didn’t really need a rewrite
Sublime Text
Due to moving between Mac, Linux and Windows near the end of production I eventually settled on Sublime text as my haxe editor. I also use FlashDevelop and HIDE along the way, but in the end having the same editor on all the machines won out.
Notes:
Graphics.drawtiles()
The game heavily uses Graphics.drawtiles() as this was the fastest method at the time I started working with OpenFL, and I wrote a display list like system to make it a bit more user friendly, but it was never as user friendly as the standard OpenFL/Flash display list. The performance, particularly at the time we started on OpenFL was fantastic though so it was worth the battle
Spritesheets also got full quite quick with all the After Effects animation for the characters and environment. Had we had Spine from the start, this would not have been an issue.
Haxelib.txt
As the project was developed over such a long period, the libraries we were using were updated fairly often, breaking parts of the game requiring engine fixes. Where possible I decided to freeze my haxelib libraries, so added a haxelib.txt file to the root of my project to paste my current haxelib state to each time I updated any libraries. This made reinstalling or moving between computers far less painful as I could easily install the required library versions.
Thanks for reading
Nick H