Monday, March 29, 2010

Animation support

Spent the weekend extending my model format to support animation frames, which led to optimizations in the converter to reduce the number of indices generated, which led to writing a new model exporter that can export animation frames, which led to learning how to rig and animate in Blender, which led to writing an animation playback control system, which, finally, led to (simple) animated trees in Silhouette.  So, next update will have trees that sway a bit every so often.  Sweet.  Doesn't sound like a lot of payoff for a bunch of hours of work, I guess, but I'm happy it's there.  =P

The main thing here is that now I've got all the necessary tools to handle real animation, so can make use of that in future projects.  Swaying trees was a good, simple, starting task.  I think the plan for this week is going to be another live wallpaper and I'll be exercising the new tools with it.

Currently the animation is very simple vert-cloud style, which works nicely with OpenGL ES's vertex-buffer centric approach.  Next upgrade will be for proper interpolation between frames -- currently there isn't any so it works best for subtle motions.  I'll see how much the next project calls out for interpolation to determine whether I tackle that sooner instead of later... for now all the data's in place and that's the worrying part.

Thursday, March 25, 2010

Synergy review

A nicely positive review of Synergy!

Galactic Core v1.2

- Update: Smaller file size
- New Feature: Touch sensitive camera movement

A couple times now, I've tried reducing the background texture's filesize by changing it to a JPG.  The problem is, JPG images rendered to the screen result in a pretty horrible moire pattern as they get rotated (a side effect of the compression, I think, because it's not there at all for PNG).

After a couple of failed attempts I discovered that Gimp's JPG exporter lets you control which style of subsampling is used, an option I don't think I've ever seen in a JPG options menu before.  Switching to 1x1 subsampling largely fixed the moire issue, and allowed the image size to drop by almost 700k.  I'll call that a win.

The other meaningful change is touch sensitivity.  If you enable this in the prefs, the camera position will move based on where you touch the screen.  I tried to keep this relatively slow and non-crazy, in keeping with the philosophy of the wallpaper being a backdrop and not a toy.

Monday, March 22, 2010

Silhouette v1.0

Continuing with the Live Wallpaper theme, we've got an animated sunset!  A bit simple in some ways, but looking through what's available it seems to me there's a lot of gimmicks out there but not necessarily a lot of live wallpapers that are just designed to be a good looking background one-upped with motion.  I'm going to try a few experiments there and see what comes out of it.

Silhouette takes a classically styled dramatic sunset photo and adds in moving clouds and sun, with settings for backdrop colors, motion speed and direction, etc.  It's attractive looking but should be non-distracting for the user.  Hopefully folks like it!

Galactic Core v1.17

- New Feature:  Spin direction pref
- Update:  Performance improvements

It's becoming more apparent to me that these phones are very fill-rate limited.  In the name of staying as sharp as possible, I had the wallpaper rendering all its passes with the same image (doing some flip flopping and blend mode changing).  The problem is, without mipmapping (and GL10 doesn't support this very well), this means that it's got to render every pixel of that high res texture every pass.  I yanked the alpha channel out of the high res texture (allowing it to get much smaller) and made separate lower-resolution images for the blends.  This made a noticable framerate difference and saves some memory besides, while still looking basically the same.

Friday, March 19, 2010

Galactic Core v1.0

Spent the last few days putting together a new Live Wallpaper called Galactic Core!  I spent a fair bit of time trying to port over my OpenGL stuff written for Synergy before coming across Robert Green's GLWallpaperService example, which made life much easier.  All my TextureManager, MeshManager, Timer, etc code more or less dropped right in once I switched over to it.

The end result is a very pretty (in my opinion) rotating spiral galaxy with multiple layers of rotation moving at different speeds and scales.  It seems to work well so I'm tossing it out into the wild.  I've got plans for some other wallpapers along these lines -- very attractive background images with motion added -- for the next week or two.  We'll see how the feedback goes, hopefully people will let me know if there's any issues.

Wednesday, March 17, 2010

Generala 1.55

- New Feature: Animated dice!

A couple minor (probably invisible) bug fixes, but the main thing is I finally got around to putting some simple dice animation in place.  Hope folks like the addition!

Saturday, March 13, 2010

Synergy updated to v1.16

- Bug Fix: Default high scores were incorrect if session went to sleep then resumed
- Update: "Drop Sensitivity" pref's "low" setting is now lower.  High is still the same.
- Update: Different title screen background art
- New Feature: Dramatic Camera Angle, because that's next-gen
- New Feature: Moving starfield when player is halfway through a level
- New Feature: Trackball support (with sensitivity prefs)

Nothing huge, but some fun additions.  Dramatic Camera Angle is a joke more than a useful feature, but the game's completely playable that way, so if you like it go to town.  The main impetus to this update was to fix the high score bug, which mostly was visual -- it never affected real human player scores.

You'll now see an animated starfield fade in behind the playfield once you're more than halfway through a level.  It's subtle and non-intrusive, but lends a bit more motion to the screen.

For those who're still in Blackberry mode, you can now control the game entirely with the trackball!  This works pretty decently, well enough that I can get through a dozen levels of Endurance mode with it.  High/medium/low sensitivity settings are in the preferences.

Friday, March 12, 2010

Synergy updated to v1.1

- New Feature: Added Race game mode

Among a couple minor improvements (the high score heading has a stripe behind it!), I added support for timed rankings and added two new "Race" game modes!  Race tasks you with reaching a preset score as quickly as possible, and ranks the high scores by time taken.  This is available in both 5000 and 20000 point variants.

Along with the Time Attack modes, these are nice for playing a quick game when you have a few free minutes.  My best time for 5k stands at 0:50 currently.

Wednesday, March 10, 2010

Generala updated to v1.5

- Bug Fix: Custom name entry now disallows newlines
- Update: Players can zero a score at will

Nothing too crazy here, allowing score zeroing actually simplified some code.  I'd originally not allowed it because I'd thought it wasn't legal (that players must always take a score if one was available), but rereading the rulebook I stand corrected.  Maybe I was thinking of Farkle.

Thanks to Andrew Wickum and John Bendig for correcting me on that one.  The trial version will be updated to 1.5 in a couple of days.

Monday, March 8, 2010

Synergy updated to v1.01

Nothing big, but a number of small improvements.

- New Feature: Atoms now pulse upon touching a matching neighbor
- New Feature: Tap screen on game over to return to title, no need for the Back button
- Bug Fix: Better greying out of 'continue' when invalid
- Bug Fix: Game Over overlay fades in instead of pops in

Sunday, March 7, 2010

Synergy on the marketplace!

It's been some time in coming, but the first round of features are all complete and I can't find any problems.  That means it's time to get uploaded to the market!  This actually can take a little while, as the marketplace listing in many cases is the ONLY thing anyone will see of your product.  Considering the description is limited to 325 characters I spend a lot of time trying to get that to read like something, and have set up the app-specific pages on this blog to help bolster those tiny little descriptions.

Today's main finishing touches were in getting a proper Game Setup screen in place, which lets me hook up the additional high score boards and game modes I got ready to go the other night.  Currently there's four modes -- Endurance and three Time Attack variants.  I'm planning to add a few more over time, but as a starting point this isn't bad.  I'm actually very happy with the overall gameplay state currently, it plays fast and the controls feel very accurate to me.  The visuals look good in motion and are nice to look at.

Can't wait to get some feedback!  The marketplace link is here.

Saturday, March 6, 2010

Synergy at beta

Finally got the last of the big features in -- the game will now state save and restore itself correctly.  This works very well, to the point that you can reboot the phone and start the game again, and it'll restore right where you left off.

I rearranged how the OpenGL surface was being initialized (doing the work in onPause and onResume instead of the constructor) and that seems to have solved the lock-up-at-a-black-screen behavior I was seeing here and there.  With these problems tackled I'm onto the home stretch of tweaking the scoring and gameplay behavior, and optimizations here and there where they present themselves.  This means it'll hopefully be on the market tomorrow sometime after I've had some chance to smoke test the first release.

In addition to this work I added more backgrounds and have some infrastructure in place to make the game pieces feel a little more dynamic, and added some niceties like the game over screen notifying you if you've achieved a new high score.  All this is shaping up pretty well and I'm excited to get the first release finished off.

Thursday, March 4, 2010

Synergy working prefs and high scores

Got the sensitivity preferences hooked up, in addition to customizable player name.  I  now properly use that name to write out and read back high scores, so all that's in good shape now.  Plus, new button graphics!

Primary remaining task: State save.

Portable Alarm upgraded to v1.3

- Bug Fix: Volume is now controlled by alarm channel
- New Feature: "High Pitched" alarm sound available

Got a comment that the alarm wasn't loud enough, which is fair enough and bears looking into.  That led to some investigating and I found that I was actually doing something wrong here.  I was leaving the alarm sound playback on the default channel (probably the same one as media like music), when I should have been specifically assigning that to the STREAM_ALARM channel.  Alarms have a separate volume control than music (and may go higher, in fact) so this should help solve the issue.

I also added a new sound type, which is available in the settings menu.  It's high pitched and screechy, and is based on alarme_4 by davidou of FreeSounds.  I trimmed it and adjusted the range a bit but the core sound is definitely his.

Synergy title screen and high scores

Finally moved on and started getting menus and settings in place. The obvious options are for horizontal and vertical control sensitivity, and I'll likely get a few gameplay options in place eventually (possibly multiple gameplay modes, though that might not be in the initial release). The title screen's looking pretty good so far, though I need to make custom button graphics still that mesh with the background better.

This time around, pictures!

Wednesday, March 3, 2010

Synergy update

Quick-drop bug is fixed, white game piece has been revised, and I found a couple of physics loopholes that are closed now.  I added a proper preview of the three upcoming pieces and got it rendering cleanly to the screen with appropriate art, and the game over overlay is now in place and being handled correctly.

The main thing left now is to get the game to state-save properly, so that answering a phone call then going back to it doesn't cause you to lose all your progress.  After that, menus and some testing to confirm everything's kosher.

Monday, March 1, 2010

Synergy update

The actual game effectively reached alpha over the weekend.  The pieces have real art (though I expect I'll tweak it some more) and the difficulty progresses over time (filling the progress bar increases the gameplay speed and adds more colors over time).  Game Over is in place but isn't handled prettily yet.

I also added the ability to swipe down on the screen to drop a piece instantly, which currently causes a pre-existing collision bug to rear its ugly head in a very obvious fashion.  That's actually awesome, as I couldn't get the problem to happen reliably before.  So, next stop will be revising some of the collision behavior, then after that onto menus and other home-stretch activities.