Hey all,
After several months of more-or-less continuous work (and recently, many late nights), I have finally completed my first app for Android!
*cheering and clapping*
Now available on:
Scroll down for screenshots and video.
The game is, simply put,
Tesla Toy for Android. It's not called that, obviously, it's called NeoParticle, but that's basically what it
is.
The idea came to me while I was experimenting with the particles in Unity for a different game. I thought, "Well, I need a simple idea for my first app, and this fits the bill; it'll be easy!". Never been so wrong. I started by trying to get it working in Unity, using Unity's built-in Shuriken particle system. That proved nearly impossible because I really didn't know how Tesla Toy achieved the effect you get with four fingers (the particles swirling in a circle). I was convinced I needed a physical simulation; I just put a gravity attractor at each finger and hope it worked. It didn't, the particles just either sucked into a tiny ball on one finger or sucked into a tiny ball in the middle of all fingers.
To cut the story a bit, I spent $50 on a different particle system only to ditch Unity in favour of creating my own particle system in AGK.
It was slow, tedious work trying to get the particles to behave how I wanted, and still I could not succeed. One day it finally hit me: bezier curves! Instead of trying to suck the particles to each finger point in turn in the hopes that they would form a circle, I would create a bezier curve between my fingers and suck the particles along that! Brilliant!
Except that now I had to write a bezier curve library. That was a bit of a maths nightmare, but it worked. The link is in my sig for all to use.
So after that all was good. It was horrifically slow work, but I got there. A month or so later, I realised I needed a GUI library. Nothing else did it for me, so I had to create my own: MarbleX. Once again, the link is in my sig.
Finally, the app was finished. It ran beautifully on PC, if a little slowly. I tested it for the first time (shutup!) on mobiles, and... 11fps with 50 particles...nooooooooooooo! So I set about converting the entire codebase (including bezier curve library and MarbleX) to C++. Noooooooooooooooooo! That took forever, but it worked. On PC, I could run 6000 particles at 60fps and on my Nexus 7 I could run 900-1000. Good enough. My S3 could do 1500-2000. Excellent.
I set up a merchant account and bought a dev account for Google Play, and started working out a description for the app. I uploaded the APK (we're just skipping over the trouble I had generating that APK). I realised I needed screenshots, so I started it up on my phone. I thought, "Hmm...I'm sure it looks better on my Nexus...why does it look so weird on here- OH." I had just realised the S3 wasn't displaying the particle trails. It was force-clearing the backbuffer! Noooooooooooooooo! This was even worse than before! This meant I had to find a new engine. Nooooooooooooooooo!
I started looking around, and decided pretty quickly on Cocos2D-X. I downloaded it, and almost as quickly dumped it again. It was horrid to use. Apparently very fast, but written by Chinese people who don't speak English very well, and...horrid.
I was stuck, until I finally found Gameplay3D. Perfect. Super easy to use, really fast, and ridiculously easy to compile for Android. I then spent the next week converting the code from AppGameKit to Gameplay3D. Took ages, and I had to write my own sprite manager, renderer and a whole depth-based render-queue system.
So. Technically this app is no longer AppGameKit, but it was originally written in AppGameKit and is identical to the G3D version, only it works on mobiles
Screenshots and video:
The video is done! You can view the video on the
Google Play Store (in a couple of hours when it updates), or you can watch it right here (now):
More screenshots on the store listings. Now available on Google Play and the Amazon Appstore!
https://play.google.com/store/apps/details?id=com.aXeHeadGames.NeoParticle
http://www.amazon.com/gp/product/B00L4QK3MO/ref=mas_pm_NeoParticle