Hey Coach!


2 o’clock this morning I finally completed the coaches images, and gave them proper names (no more “Master Baiter” etc.), which was one of only 7 or so remaining tasks until release.

I comfortably missed my arbitrary 9th April release date, so I’ll come up with a new and equally meaningless date later. Nothing like having a specific goal to ignore!

But yeah, quite pleased with the current state of things. It has taken 5 years to get here, but it has taken shape nicely and I’ll be proud of the body of work no matter how successful – or otherwise – the app ends up being.

Next few steps will be to get the sponsor logos implemented properly, do a little bit of work around what gets displayed in the sponsors node and the sponsors page, and then I’ll be able to sign off the character generation stuff completely.

After that, a few minor tidy-up tasks and then it’ll be off to Kaobon to check if it’s okay to include the gym in the credits before I release it. Whenever that might be.





Character Building


Last week I received the completed work for my GrappleApp character generation templates from my man Amund (amundfarifteh.com), and it was exactly what I wanted.

Aside from the fact I love his style, he produced it in precisely the format/system I required – I was able to immediately slot it into the pre-existing structure that I’d already implemented in my app. Superb value for money and a really good guy to work with, I’m already lining up some follow-up work that might need doing.

The remaining tasks for the character generation system (and related) are:

  • Save resultant images in same size as source templates
  • Render image in correct dimensions on all pages, info panes etc.
  • BUG: Image generation on-the-fly during tourney intro writes the same image to subsequent profiles
  • Use better +/- icons
  • Do proper relief-shaped sponsor logos for body/chest
  • Redo generic profile image to be a silhouette from new system
  • Confirm that new .cif and image files are created for new whitebelts that are added after a promotion/resignation
  • Look at/improve performance of tourney/championship intro
  • Add pure white as a hair colour option (and possibly lighten the pure black)
  • Manually put eyeballs into eye templates, and remove eyeballs as a variable option in the editor etc.
  • Edit image templates to remove artifacts that become apparent after colour replacement
  • Get coaches’ images sorted

That covers it, really. Gonna be done soon – I promise!




All Sequences Complete

Yesterday I finally completed the sound sequences for all move sequences in GrappleApp, marking a milestone in its development.

I actually thought I’d already done this a while ago, but somehow 40 or so sequences managed to slip through the cracks. All sorted now.

I’m now full-swing into finishing development on GrappleApp, and have a pretty comprehensive plan to get this done over the next 3 months. I’m getting excited again.

I made a list of blockers to release, with 25 items on it, and so far I’ve done 10 (putting me at 40%) but – for some indication of the pace I’m working at – I expect to have 5 more done by the end of tonight.

I have commissioned a guy to work on the character images too, and I’ll reveal more about this as he starts to send work over. Pretty exciting 🙂

That’ll do for now. Watch this space!



InterpoLATE Update

I did manage to solve the previously mentioned interpolation bug, but ended up completely sidetracked into refactoring the entire system of interpolated rendering, hence the late update now.

I think I just have one tiny issue to fix, regarding auto-centering, and then interpolation is done: Basically, there is the occasional situation where the screen is redrawn in between a device’s location moving and the screen being auto-centred, producing a slight jump effect.

I will get this sorted later today by synchronising all selected device location changes with auto-centering.

Aside from that, I just need to diagnose and fix an issue where zoom level change detection is broken and then I can draw a line under this phase.

I will return to work on GeeOhTileProcessor – a tiny refactor for handling error responses better – and then do a “final” pre-loading run, before coming back to the mobile app and finishing it off.




Between The Lines


So, as previously hinted at, I have been working on implementing “always on” interpolation (toggleable in the options menu) – which I have already managed for “this” device – and I have nearly got it sorted for all external devices too.

I’ve just been trying to make the Interface as efficient as possible, not overdoing the number of methods etc. required, but I think I’m just going to bite the bullet and make getters/setters for all the essential variables.

This will be the last “big job” I do before Gee-Oh! Mobile is ready for release. I think I will have a few business decisions to make before then (ie. dividing the business up into smaller companies – one per product – to remove confusion for potential investors etc.), but as far as technical decisions and implementations go, I’m just about done.

I also did some improvements to the map tile pre-loading application (and also to the memory management, how it’s deployed etc.) and I’m now estimating just a further 10 days before the main map tile server pre-load is complete.

Edging ever closer to getting this shit done!



Self-Centred No More


The cheesy title suggests I’m starting to blossom into a caring, generous pillar of the community. Nope 😉 The actual purpose of this post is to talk about the work I’ve been doing in allowing auto-centre to be applied to external devices – not just the device the app is running on – in Gee-Oh! Mobile.

This is a pre-cursor to full integration with Gee-Oh! Server, allowing full tracking and communication between networks/groups of devices. Exciting shit.

Now let’s get into the boring technical detail…

I’ve had to literally rip the guts out of the main class, with all its references to global variables etc. and update this with getters/setters, kept in check by adding additional method references to the device interface. While I “had the bonnet up”, I did a ton of additional fixes, and it ended up being probably the biggest single commit I’d ever be comfortable making, but there you go.

Very pleased with the way it has gone, though. I even snuck in a little “loading” graphic to remove the jerkiness while we wait for interpolation to kick in.

It’s these little details that will make all the difference.

Let’s have a little recap on all the remaining tasks before release:

  • Finish pre-loading server with UK data
    • Currently ~59% complete
  • Confirm that all “centre on selected device” work is done for now
    • Including making sure “test flight” debug mode works with replay etc.
    • In actual debug mode, substitute replay or flight devices with “this” device
    • Highlight selected device/waypoint, whether or not we have GPS location for “this” device
    • Refactor selected waypoint logic to be the same as for selected device
  • Look at implementing “always on” interpolation
    • Move point pair stack into individual devices
    • Each device must have its own interpolation thread running
      • Must retain global control of this
  • Shrink waypoints as we zoom out
  • Replace current waypoints menu with proper pop-up menu
  • Look at implementing “proper” double buffered rendering
  • Make placenames updatable via server API
  • ProGuard builds

I think that just about covers it. I’m not going to add any more features, I just need to clear this list and Gee-Oh! Mobile is getting shoved out the door.

Can’t happen soon enough.



Gee-Oh! Mobile Update

Gee-Oh! Logo B_512

Just a vague update on the commencement of Gee-Oh! Mobile development. Since I got the server back on track and processing squares again last week, I’ve dived right back into the world of Android.

I managed to score a few quick wins from my previous “barriers to release” list, including the rendering of placenames (fading in and out accordingly), and also added the fading out of motorway/main road labels as we zoom out to particular values.

I did a little bit of housekeeping, removing a superfluous ViewThread class that was never really being used as intended, and lots of other little bits, too many to remember fully. Been a busy boy.

My latest venture is a very large refactor to incorporate multiple devices (for now, only a replayDevice and the debug testFlightDevice) and allow auto-centering on these also whilst preserving our actual location indicator on screen. I’ll do a separate blog on this, actually – ’tis a big ol’ topic.

And so this ends.