FRG for Android

Hi - I’d like to announce the release of FRG for the Android platform.

FRG is an arcade-style overhead 2-D shooter where you pilot your robot into battle against advancing enemy robot hordes. Unlock and use a variety of weapons and robots as you progress through many levels of increasingly difficult challenges. After completing the game, see if you can win all achievements! FRG includes smooth graphics and a retro-soundtrack.

Download FRG onto your Android phone now at the Android Market!

FRG Lite features:

4 Levels
3 Weapons
1 Playable Robot
Achievements

FRG Deluxe features:

16 Levels
6 Weapons
4 Playable Robots
Achievements
[Future downloadable content when available!]

Very basic website up at http://www.woogames.com! Thanks for your time!

Lovely presentation. Got stuck on the “Loading…” screen here for the first level though :frowning:

On a Hero btw.

Kev

Worked on a G1. God I hope my ADC2 submission works on a Hero!

Cool game! Love the menu style. Gameplay is neat and seems like it could have a bit of that SmashTV feel, which is great. I read I should tilt the phone to better view the playing field, but I couldn’t tell that the view was responding to my tilting. Since I couldn’t control it, sometimes the view would work against me and keep me from seeing nearby enemies.

If I can work out the controls, I could see myself coming back and playing this again and again. Hopefully later levels through some really cool enemies at you and/or maybe just tons of them!

I’m reminded of the ninja woman you fight in the warehouse in the original Half Life. Those ninjas were sweet!

I was really afraid of that. If you don’t mind - did you see anything interesting in logcat?

Thanks - that probably deserves more explanation - wasn’t sure how to explain it without putting a wall of text just for the camera control. Just orient the phone in “portrait” or “landscape” and the game will adjust the view such that the area that is “up” takes the most screen real-estate. When you press the touchscreen to shoot, the camera will quickly/temporarily adjust in the direction you are shooting.

I didn’t have log cat on, but I’ll try it tonight.

Kev

Doesn’t look like you changed anything (still version 1.0) but I downloaded fresh and it let me into the game. I did get a bunch of these in logcat during loading though:


09-05 09:31:15.002: WARN/BinderNative(112): Uncaught exception from death notification
09-05 09:31:15.002: WARN/BinderNative(112): java.lang.NullPointerException
09-05 09:31:15.002: WARN/BinderNative(112):     at android.app.ActivityThread.removeDeadProvider(ActivityThread.java:3796)
09-05 09:31:15.002: WARN/BinderNative(112):     at android.app.ActivityThread$ProviderRecord.binderDied(ActivityThread.java:1116)
09-05 09:31:15.002: WARN/BinderNative(112):     at android.os.BinderProxy.sendDeathNotice(Binder.java:345)
09-05 09:31:15.002: WARN/BinderNative(112):     at dalvik.system.NativeStart.run(Native Method)
09-05 09:31:15.012: WARN/BinderNative(112): Uncaught exception from death notification
09-05 09:31:15.012: WARN/BinderNative(112): java.lang.NullPointerException
09-05 09:31:15.012: WARN/BinderNative(112):     at android.app.ActivityThread.removeDeadProvider(ActivityThread.java:3796)
09-05 09:31:15.012: WARN/BinderNative(112):     at android.app.ActivityThread$ProviderRecord.binderDied(ActivityThread.java:1116)
09-05 09:31:15.012: WARN/BinderNative(112):     at android.os.BinderProxy.sendDeathNotice(Binder.java:345)
09-05 09:31:15.012: WARN/BinderNative(112):     at dalvik.system.NativeStart.run(Native Method)
09-05 09:31:15.012: WARN/BinderNative(112): Uncaught exception from death notification
09-05 09:31:15.012: WARN/BinderNative(112): java.lang.NullPointerException
09-05 09:31:15.012: WARN/BinderNative(112):     at android.app.ActivityThread.removeDeadProvider(ActivityThread.java:3796)
09-05 09:31:15.012: WARN/BinderNative(112):     at android.app.ActivityThread$ProviderRecord.binderDied(ActivityThread.java:1116)
09-05 09:31:15.012: WARN/BinderNative(112):     at android.os.BinderProxy.sendDeathNotice(Binder.java:345)
09-05 09:31:15.012: WARN/BinderNative(112):     at dalvik.system.NativeStart.run(Native Method)

and these…


09-05 09:31:36.012: ERROR/AudioTrack(2727): Error obtaining an audio buffer, giving up.
09-05 09:31:36.232: ERROR/AudioTrack(2727): Error obtaining an audio buffer, giving up.
09-05 09:31:36.392: ERROR/AudioTrack(2727): Error obtaining an audio buffer, giving up.
09-05 09:31:36.432: ERROR/AudioTrack(2727): Error obtaining an audio buffer, giving up.
09-05 09:31:37.072: ERROR/AudioTrack(2727): Error obtaining an audio buffer, giving up.
09-05 09:31:38.052: ERROR/AudioTrack(2727): Error obtaining an audio buffer, giving up.

As to the game it looks ace and very professional. I had a lot of trouble controlling it but that might just be my lack of skillz :wink:

Kev

Definitely unexpected. If there are a lot of those happening from something related to Binders, I bet the problem has to do with grabbing the SensorManager (not much else in the entire Android platform subclasses Binder). I wonder if the problem goes away if you uncheck “Tilt Camera” in the Options menu.

In fact the freezing problem does sound exactly like what used to happen in the emulator before they fixed the SensorManager in the emulator. It would hang whenever the SensorManager was requested from the System Manager. Thank you so much for your input. I really appreciate it.

It’s a valid complaint! I’ve been playing this game non-stop for 3 months now so I think I’m probably a poor judge of the game-play mechanics by now. As other comments on my game and Stroids (that uses a similar targeting mechanism) indicate, some people just don’t like to press where they want to shoot. I’m going to add a traditional aiming widget in the next update.

I notice that the way I aim, I don’t put my finger over targets anymore - I’m constantly maneuvering such that the enemy is actually between my robot and the targeting reticle. That way my finger isn’t blocking the thing I’m trying to destroy. There’s probably a good way to communicate that tactic to the user that I’m not doing right now.

EDIT: I didn’t address them earlier but the “Error obtaining an audio buffer” seems to happen when the SoundPool is starved of available channels. Those will happen during the course of the game since there will occasionally be situations where more sounds are trying to play than I have allocated channels for - I did that on purpose to prevent SoundPool from swallowing too much CPU time.

It works on the Samsung Galaxy, but it runs pretty slow IMHO. Is it using OpenGL?..because in that case, this may apply: http://www.java-gaming.org/index.php/topic,20910.0.html

Thanks for running it on the Galaxy - I had been keeping tabs on that thread for the last couple weeks. Yes FRG uses OpenGL - after seeing your thread I made a big push to make sure even the emulator can run it passably. I’m assuming in its current state, the Galaxy is probably doing software rendering much slower than the emulator running on a fairly powerful CPU.

Do you have contact information at Samsung regarding your request to have this addressed? It couldn’t hurt if more of us started pushing Samsung to fix that.

No, i haven’t. I’m still waiting for a response from them…anyway, it is playable on the Samsung, just slow. The emulator runs at almost the same speed as the software renderer on the phone when run on my machine (Core 2 Quad@3.2Ghz).

Just wanted to mention that today’s FRG update (v1.0.2) tries to address the “finger blocking the darn screen” issue by allowing auto-aiming with a single touch. For the Galaxy users, I think the best I can do now is detect hardware OpenGL support on startup and disable anything that might suck up CPU time (sound, music, and . Unfortunately the only software OpenGL device I have is the Android Emulator so testing has been somewhat limited.

There will probably be an interesting discussion surrounding effective touch-screen use in hand-held games in the near future . . . for now - on to bigger and better features!