Category Archives: Proton SDK

Relating to my C++ mobile focused open source cross platform development framework

Dev Diary: Tanked – A new way to develop (for me)

What is Tanked?

It’s my new game.  It’s been sort of stealth-released for nearly a month.

The idea was simple:  In just a couple of button presses, you should be able to jump into satisfying online eight-person 3D Quake-ish style combat (with world rankings and text chat) while waiting for a bus on any iOS/Android/webOS device.

If you haven’t played it, you can get an idea from this user-made video.  (hey, is that guy flipping us off?!  Also, you only need to hold down the white circle to move, don’t know why his finger is dragging it way up there.. hrm)

Unconventional development

Usually I write a game, make a youtube video, send press releases and promo codes around the interwebs and cross my fingers.  But with this game I’ve taken a more relaxed and organic approach.

  • Game is free, with a foggy plan of IAP or ads when it makes sense
  • Put out versions early and often without fanfare
  • Not bothered with press or even made any trailers/videos yet, waiting until the game is better and ready to handle it, server-wise
  • Allow live text chat so I can see peoples honest comments and complaints (“how do i move my  tank?” is asked 10+ times a day, this tells me my controls aren’t obvious enough)
  • Development is a fluid iterative process that has me working on whatever I see as the biggest issue of the day or what I’m personally interested in at the time
  • User device type and country is prominent and leads to zany “kill the Canadian!” or “kill the android users first!” type smack talk
  • Game is never “done” but constantly evolving.  Well, if I have time.
  • Not popular and nobody cares?  I’ll take that a sign to dump it and move on

Design decisions

  • Game designed to be  ‘playable’ over crap connections (3g, etc) – at worse, about a 500 ms ping. (This is why I use slow turning/accelerating tanks instead of jumpy-ass Quake guys)
  • Uses only basic GLES 1.X, runs fine on an iPod Touch 1st gen, a Palm Pre, a Nexus 1, iPad, touchpad
  • Multi-player only – either online or local splitscreen play  (4 players on a tablet, 2 on a smaller phone device)
  • Custom server written to run on windows or linux capable of handling hundreds of simultaneous games (currently running on’s linux VPS)
  • Each device automatically gets one player account that does not require a signup, you can change your name as much as you want but a permanent two letter “id tag” is always appended to your name, mostly so other users can figure out if one annoying guy keeps changing his name, or tell the difference between two people with the same name
  • Swearing is converted to #@%^#@ type stuff
  • No vertical aiming.  Yes, I know it’s a tank but.. circle strafing on a touch-screen is hard enough without throwing that into the mix

It’s fun being big brother

Watching the server like a loving father has given me some big time Bulletin Board Era nostalgia.

It warms the cockles when I see a player answering an earnest noob’s desperate cry of “how do I move?” with a tender hand instead of the standard “sux 2 be u” reply.

And, well, to be honest, it’s Deeply Satisfying™ to ban trouble makers or rename offensive user names to “Sparkles” or “Fluffy”.

Getting weird

Being a single developer with complete freedom is fun.  Would a normal person do this?

  • Added a tavern chat area with a fully functional vegas-style slot machine to gamble career points (It’s just text, but it’s strangely addictive, really!)
  • Re-used a dog (beagle) 3d model from an older game as a strange projectile power-up

Conclusion and the future

In less than a month the online player rankings have grown to 44,614 and is growing by the thousands every day.

It’s been an interesting (and educational) challenge having three platforms smoothly play together despite annoying week-long app submission processes.

Will I keep working on it and add team play and more items and ways to interact?  That’s the general plan but I also have some other work stuff going on so.. hmm.  We’ll see.

For info on the cross platform framework I wrote that this uses check the Proton SDK wiki.

To download the game, click here.  Or better yet, wait for V1.04 to become available first as it improves things quit a bit.  But then again, I say that about every version… developer thing.

Proton SDK news update – Android NDK R6, HP Touchpad now supported

My free cross platform library Proton SDK (a framework that helps you write C++ apps for iOS, Android, WebOS, Win, and OS X) has quietly been receiving improvements across the board:

  • Android support now works with the Android NDK R6 out of the box, Crystax no longer needed.  Binaries still run on Android 1.6+ too!
  • Redid the “Setting up Proton to make Android stuff” page using NDK R6 (wrote as I set up my new computer, so it’s pretty accurate)
  • HP Touchpad/WebOS 3.0 support added (native touch keyboard automatically pops up when needed, full multi-touch enabled)
  • New tutorial added on how to setup GL ES 1.1 emulation on Windows using the latest PowerVR SDK
  • Audio systems across all platforms improved
  • LoopingSound class added, for playing looping sounds with optional intro/outtro effects
  • AudioManagerDenshion added, recommended for iOS and OS X builds
  • A new example (RTPhysics) was added a while back, combined Irrlicht 3D with Bullet physics (shoot cubes to knock down a stack)
  • Irrlicht under Android improved, now provides seamless automatic reloading of fonts and textures after losing/restoring focus
  • Many bugfixes…

Some Proton-based games recently released by other companies:

Dev Diary: Networking and the Fling

Tank game: Networking is go!

Networking test of my new tank game, here is what that jumbled mess in the picture is:

  • iPad, iPhone, and two Windows clients are playing a four player game
  • Game server/matchmaker running on linux-based webserver running in the US
  • The game server lets me telnet to it directly to monitor it and give it commands
  • Using client prediction code, everybody moves silky smooth (it helps that tanks aren’t really able to suddenly reverse course like say, Quake)
  • Using enet with a mix of guaranteed/non-guaranteed packets for networking, it’s rock solid

I’m glad I’m finally getting into the networking side of things, haven’t really done anything real-time like this before and it’s been a blast.  Definitely something I will be focusing on in future titles as well.

RTsoft makes things like funeral parlor simulations,  how can a mundane tank game fit in?

The worrying thing is I really want this game to be unique and interesting and not “another dang tank game”.   This is a game where making a character pregnant or abusive (my usual way?)  just isn’t going to work so I’m going to have to dig deeper and do actual good game design I guess.  Got some ideas…

Using the Fling with Dink

I was sent a couple of Flings – a sort of gamepad for the iPad and by jove, it really works!  With no tweaking at all Dink HD controls absolutely great with it.  Only problem is selecting dialog and items is a bit sketchy, so I will be creating a “Fling-friendly” update soon.  It’s just that good.

Dink Smallwood HD on iPhone/iPad finally gets full DMOD support!

Yep, it’s finally happened, the HD versions of Dink across all platforms (as of today, even iOS) now have full DMOD (user level add-on) support.  This means you can enter any .dmod url (here’s a list from the Dink Network, you can use cut and paste from the phone’s browser) and it will install and play it with its built in front-end!

So that’s like 300 more zany quests/stories/weird to play, you will NEVER get bored again.

Dink HD Audio patch (well, DMOD) released for Android

I made a few sacrifices to keep the download size smaller for the Android version of Dink – but with some prodding finally got around to providing the entire CD soundtrack.

It also includes the classic Dink start/continue screen with those funky animated arrows.

How to install

From the main menu of Dink (you DID buy it from the Android Market, right?!) click Add-ons, then browse, then locate the Dink HD Audio patch and tap install.  If your Android device has trouble playing midi correctly, you should grab the Dink HD Audio Patch Plus which converts ALL .midi files to .ogg counterparts.

Non-android Dink versions won’t show these DMODs as download options.

Special thanks to James Leaver for the prodding and handling the midi->ogg conversions.

What about saved games?

The catch – to experience aural additions you have to play the newly installed DMOD, not the main game from the main menu.  If you’d like to move existing save games over there, you’ll need to copy your save game data from the main Dink user data directory of your SD card into the dmod/hdaudio part.  Hey, you’re an Android user, you’ll know how to do that.