Hello everyone
After many moons I have launched my first app on the alpha channel of the android play store. It is based on the 80’s classic “Aquatron”. I went through many, many iterations and a few complete re-writes once I got to the point of learning about optimization. Unity rocks! You can do pretty much anything you can dream up.
Here’s a promotional video:
What is the “alpha” channel of the play store? I didn’t know there was an alpha channel.
Is that different than - game is live and available for everyone to check out?
A little feedback - it looks like the subs turning animation is a tween over a couple frames. It might look better if it happened instantaneously, only taking one frame to turn.
Or maybe even better - allow them to go off screen for a split second and turn around off screen. It just looks kinda funny right now.
Thanks for the feedback, the funny thing is the subs used to turn instantly, and an early testing friend strongly suggested I make them like this. Ha! They could go off screen briefly, but only on easy difficulty, on medium and hard difficulties they follow you pretty closely and must turn on-screen.
What I am learning as a first time google play publisher is that the alpha and beta “channels” are two early ways to publish your app to get testing feedback from tons of users who register a alpha testers, plus people who find it and want to test it out. Plus it has automated tools that run your app through a bunch of devices and report errors and screenshots and stuff. This advantage is limited for Unity built apps, but it doesn’t hurt.
I plan to move it to regular “production”, which is what you describe - available to everyone, in a few days.
Does your game world ‘wrap around’ like in defender? How did you deal with the problems of that like collision detection/physics, objects being on two sides of the playing field at once etc?
That’s a great question, thanks for asking - the enemies “wrap around” the edge of world and suddenly appear at the other end, depending upon their velocity and such. they don’t end up existing at both sides in one frame. the collisions bit was a giant pain in the bum to figure out but eventually i settled on having the minimal parts of the enemies active while off screen, their controlling script to keep the red dots doing their thing. Once they come near enough to the screen that a player’s bullet could hit them, then I turn on the colliders and sprites in case the player suddenly accelerates to make them visible early. In essence off-screen enemies are denied the ability to collide with anything, until they get close enough. Some enemies do perform actions off-screen but it’s part of the controller script. Does that make sense? I kept the rigid bodies simulated and static throughout, so the velocity could keep applying while they are offscreen and the red dots keep cruising. At the edges of the world I used either rigidbody.move or transform.translate, I had a giant hidden options screen to switch different methods in-game for profiling, I forget which I ended up with.
I took a few minutes during my day job lunch to publish the thing to the “regular” play store.
Cool thanks. So basically if objects are far enough off-screen then they can’t do physics-y things… so you couldn’t have like objects colliding with each other and maintain the animation off-screen as such, all the enemies and objects basically do not interact right?
Did you have to just manually force enemy coordinates to ‘wrap around’ the play area when they go outside the bounds?
@MBrown42
A good start for a remake of an arcade game. The art can be improved a lots like gradient, colors variations, atmosphere, lighting, particle effects, the whole feeling, so it can feel really a modern remake of a 80’s games which more attractive to catch players’ eye for downloading your game.
One quick question. How did you make the water physics splashing effect? Line renderer? Asset Store? I’m searching for this answer long time ago, including the behavior of Loco Roco 2 in PSP, the main character ball when it gets big. I think the technique behind is almost same right?
I can’t download the game. It said it’s not compatible with my device. LOL. Impossible. What did you done in Unity player settings? Haha. My Android version is Oreo. (v8.0.0)
I did a 2d wrap around game but never finished it. I used 8 copies for each original game object (top-left, top, top-right, left, actual gameobject, right, bottom-left, bottom, bottom-right) and then reposition them like ‘normal wrap’ - if I recall correctly the 8 copies where child’s to the root object and the collisions are recognized in the root object.
If you only wrap horizontally that would be 2 copies + original
ImaginaryHuman -
Yes, in a nutshell collisions only occur on or near screen, left or right.
The enemies are prefab-based, and there are a half dozen or so varieties.
The cruisers do perform actions off-screen, namely dropping of parachutes every so often.
Parachutes turn into submarines that chase after you if they reach the water line.
So off screen, parachutes drop until they reach a certain Y value and then spawn a sub.
Other than that, each enemy is one of a few types that cruise with a rigidbody velocity.
To make them move to the other edge of the world, yes, I do brute force position checks. If they go beyond the edge of the world, I shift them by the world distance using rigidbody.move, i think, (might have used transform.translate for a few based on profiling testing) to the other side. Then they continue with their rigidbody velocity.
AkiraWong89, totally agreed on the artwork, I am no artist by any stretch nor do I work with one directly, so I did the best I could from hand picked cc-0 and cc-by-3.0 licensed open source artwork. And the water wave took huge time, it is based (in part) on a conglomeration of web resources I found for modeling 2D water. On default settings it is comprised of a mesh whose top coordinates are plucked from a cached and highly detailed sin wave curve. (on low background it is only a line renderer, same coordinates).
The wave motion is made up of two components - one is the player’s velocity - which changes the apparent phase of the sin wave by plucking a moving window from the pre-cached highly detailed wave. The second component are impacts from gameplay objects - this is where I hit a limit of computational ability vs framerate.
Now, these impact objects add velocity area of impact which is added to the moving sin wave values, and are adjusted over time using a euler spring model. The result are the impact waves which bounce up and down a bit for effect, which was my main goal. The whole thing used to be a fixed wave image that just scrolled, but I wanted more. It took ages to modify scaling, calc skipping, and other things to get it to run at a decent frame rate.
Finally, thank you so much for the feedback that the damn thing won’t load on your Android. Here are the build settings, which seem to clearly show a very low android version. It loaded fine on my 5 year old HTC One X+ (only test machine).
Can anyone help clue in my newbie arse to what the issue might be? I see now I oopsie left TV and others checked, which I don’t think I support.
I understand that programmers learning art is not easy but if you are willing to achieve it, nothing is impossible. I am 3D artist learning C# at the very beginning, from totally zero knowledge to able to code a simple moderate game now. Just about passion. Slowly and keep learning, you can do it too.
Hmm, nothing seems incorrect in your settings, the Android TV can be unchecked if you are not planning releasing on that platform. My guess is maybe the Unity. What is the Unity version you are using? And what is the build tool version on your Android SDK?
Thanks AkiraWong89, that link to android deployed stats is super-helpful.
I’ll steal some time away from offspring, spouse, job, and commute to try bumping the min api level and get an update published. That is frustrating, most people who get the error will not even bother contacting me to ask why, stupid love hate relationship with technology.
I have a new respect for artwork being an entirely other side of the coin of a finished and polished game. I do OK with photoshop and recently learned gimp to make my player ship. If anyone is interested, here’s my initial pencil sketch of choice and the final finished gimp picture. Up next is blender!
I love messing with all of it, the only real concern is time.
Whoops, not intending to blast, I forgot something.
AkiraWong89, I realized one of the pre-launch reports that Google play ran for me was on Android 8, and it ran without errors. For anyone interested, here is what a pre launch report looks like, it just installs and runs the apk for 300 seconds in this case, and it’s supposed to randomly click around to check for crashes and such. Except that the documentation says unity built apps won’t work and so they rarely go past the first screen, which you can see in the screenshot.
So, now I am wondering why you got an incompatible device error, this stuff can be so annoying sometimes.
Hello again everyone
After digging on AkiraWong89’s suggestion, I did in fact find that I was missing Android 8 from my Android SDK.
Rebuilt with Unity 5.6.1 personal and updated to version 1.06 on the Android play store.
It hasn’t updated from 105 quite yet, but if you have a moment and anyone is still listening, I’d greatly appreciate a re-try once it updates to 106.
Also I did find that per this thread:
I cannot see Android SDK 8 in the targeted platform list, so per the thread I left it as “auto highest”.
I hope my answer to the wave question was legible and makes sense. Sort of rushed type babbling.