(Driving Without) Artistic License


Wow, last night was tough going. I did manage to complete all the Tournament Organisation logos that I wanted to do – and some of them still require tweaking, to a certain degree – but everything seems to take so long with so little reward when you’re messing about with images. I am so dysfunctional with all this graphic design nonsense.

I’ve got them all in the app now, though, and it does make the tournament “scene” more varied. I still need to implement that HashMap<Integer, String> which stores the actual proper name of each tournament organisation. But anyway…

I did a couple of those “badges” too, just in basic greyscale “steel” looking form at the moment. I will have them all the same colour for now, and I’ll be putting them in the tournament intros on Saturday morning hopefully. I need to create a HashMap<Integer, String> for these badges too, to provide the name/description of each  one.

Most importantly, perhaps, I swapped a load of “doubleToInt()” calls for “(float)” casting, as planned, meaning that (hopefully) the text rendering is a lot more accurate, and some of the image rendering. I say some because I came up against the brick wall of having to use Rect – as opposed to RectF – for defining the bounds of the rendered image. I need to have a good think about solving that. Where possible, I kept it to the very last minute before converting double x and y values into ints for the Rect boundaries, but it doesn’t feel ideal.

Also, many simple integer based Point objects are being used to store object’s locations. So, to that end, I’ve included a FloatPoint class in the library, but not yet used it. Switching over to that might be a painful and not entirely necessary step right now, but the option is there for the future.

So yeah, that’s where I’m up to. I will do the tourneyOrgNames HashMap and hopefully get the badges working on Saturday morning, just in time for my planned demonstration on Saturday afternoon…





Keeping A Float


I fucked up.

In my haste to “just get anything on screen”, way back at the start of my Androiding, I fell into the trap of using integers to position graphics (well, actually, storing them as doubles until the last minute, and then converting to int).

This is bullshit.

I didn’t foresee the implications of smoothness when it comes to displaying movement – the jerkiness that comes from forcing a float value to decide which whole number it wants to be. I see that now. Which means I have to spend a fair bit of time removing a ton of pointless “doubleToInt()” calls etc. and replacing with a simple cast to (float) – whilst being careful not to inadvertently fuck something else up.

Annoyed at myself.

Anyway, I shall fix that tonight and hopefully see a billion percent improvement in the rendering awesomeness. Or maybe not. I will also be doing a ton of extra graphics (the tourney orgs, gyms, badges and sponsors), and almost certainly a couple of other bug fixes.

Still, ’tis all good. The amount of time and effort that I’ve put into this project, I will be making damn sure I’m proud of it at the end.




Bugs, Badges And Logos

Interesting band.

Right, my plan for tomorrow (Thursday) night is as follows:

  • Implement “forced debug” function
    • Where, even when debugModeOn is false, we still directly write to the debug log
    • All calls to this method must be expressly removed before any release
    • Use this to debug the fuck out of the onTouchListener() and processClick() methods
  • Create the nine “achievement” badges
    • These will be visible firstly in tourney/championship intros
    • I will figure out where to put them in stats/match history pages
  • Create the five other tournament organisation logos
  • Create the three other gym logos
  • Possibly create three other sponsors
    • Will need to start thinking about distinguishing between fictitious and actual companies, and will need to stress that the actual companies are not actually sponsoring you actual money in actual real life

Simple as that. I might even ask m’lady if she doesn’t mind me spending half an hour on doing the “forced debug” thing tonight, just so I can have a go at solving that “freezing” bug tomorrow.

On Saturday morning, I intend to start putting those badges and logos into the app. It’s going to look smart as yer nana.

Oh well, back to (actual) work…



All Mapped Out


Well, that’s it, done. v1.0 of the Option Map has been completed, including all energy requirements, linked skills, inherent difficulties and point scoring.

Been a long while coming, this has. No doubt I will immediately find some issues and have to re-fix things, but still, I’m happy that I can tick off another one of those long-term project goals.

I’m still on a mini-break from programming, but I will do a few bits on Saturday morning, most likely. Gotta get shit done!




v0.1.01 Done


Probably a strange milestone to mark, but there has been so much added to the app since v0.1 that it’s quite a big shift.

I finished the first version of the Tournament Intro Sequence on Saturday, and I’m really quite pleased with it. Of course, it will be a billion times better when all the other players have proper images – as opposed to black silhouettes (against a dark purple background) – but it’s still pretty slick.

I’ve started identifying rendering issues, with the rendering delay being readout to the screen when in “debug onscreen” mode. It shows quite a rapid decrease in frame rate as the general menu goes on. It’s strange, I thought that programmatically reducing the rate when render times are being missed would lower the strain on the CPU, since it’s (supposedly) not processing frames that will never get shown, but it doesn’t seem to be the case: Whenever I reset the frame rate to the max. rate, everything seems a lot smoother, despite processing many frames that never get rendered.

I think I need to rethink that strategy. I am not making the processing overheads savings that I thought I would.

What else? Really pleased with the sound effects and everything. Overall, it really does feel decent.

Now, to the “crash back down to Earth bit”. To summarise what remains before v1.0 is ready to go, in no particular order:

  • Graphics
    • Tourney Org logos, Gym logos, “Badges”
  • Tourney Intro v1.1
    • With “Badges”, Extra Info, possible white borders around players etc.
    • Re-order player names at start, in order of decreasing importance
  • AI
    • Initial pathways, method of choosing intelligently, considering resting in context etc.
  • Finish off Option Map v1.0
  • Rendering issues
    • Solve the render delay time “improved efficiency” failure, look into imageJump (making sure we do attempt to reset it at the right time) etc.
  • Sponsors
    • Implement proper logic in offering deals
    • Get proper text in from the sponsors themselves
  • Move Sequences
    • Including other sequences, like win/loss reaction, promotion etc.
    • I’ve got a plan, just need to get the final pieces in place and then implement it!
  • Red Button Menu
    • Need proper background (moving?) and to flesh out the current menu screens
    • Need to start recording matches in order to play them back here
  • Player Profile Images
    • Probably will need a Kickstarter campaign for this
  • Backup/Restore game
  • Credits/Permissions
  • Get sound effects in move sequences, working from assets (not just SD card)
  • Implement double tap to scroll etc.
  • Redesign Gym Chooser screen
  • Finish off all coach’s advice
    • And the infoPanes for swipe-to-skip, double tap, tapout and null press
  • BUGS
    • “Freezing” bug at start of new match, usually second match for P1 in tournament
      • Triple tap still works, so not a “proper” freeze
      • Debug what is happening in the onTouchListener()
    • Starting matches with someone else’s depleted energy
    • Point scoring clash with coach’s advice infoPane
    • Removing player as champion from a belt rank he’s just been promoted from causes murder
    • Fix scrolling in All Retired Players screen
    • roundDoubleToXDecimalPlaces() does not work for zero places
    • Multiple instances of the same skill improvements during tournaments where you play certain matches and skip others
    • Remove flicker after enforced counter in explore mode
    • Need to generate special skills for “top up” players?
    • What happens if you challenge a player when all challenge match spots are full?

I’ve probably missed some stuff out, but that will do for now.

Definitely close to finishing this thing! I mean, it may take fucking months, but that’s still very close in comparison to the years I’ve put in (I believe the idea of option maps and all that first popped into my head in 2008…)

Ta ta for now.



Just A Quick Update

I got a lot more done on the Tournament Intro Sequence last night, but there is still a lot left to do. To summarise what was implemented last night:

  • All put on one thread, effectively, to tighten up timing/location of graphics
  • Tourney logo intro screen done
  • Implemented player zoom for any players that need to be singled out for attention
  • Used bold, borderless text
  • Got new music into sequence
  • Not related to Tournament Intro:
    • Got a load of new sounds in
      • New click
      • New app intro tune
      • Notification noises for info panes
      • Telephone noises for challenge match stuff
      • Added, but not fully implemented, boos, cheers and chants

That’s about all I can think of at the moment. I’m quite pleased with things as they stand, although I’ve already written a full page of work that I plan to do on Saturday morning…

No rest for the reluctant.



Sound, Mate


Been gathering lots of sound samples for the app – and, crucially, making a note of their origins and what their terms of use are. I shall be putting them in later, along with the new music I did yesterday.

With the expected completion of the tournament intro sequence tonight, and a whole host of new sounds/tunes, I feel that it’s really taking shape now.

This is the (start of the) end game.

I will probably take Thursday night to really polish off any rough edges for what I have so far, and then most likely demonstrate it to my intended on-screen opponent on Friday night. Not that it makes that much difference if what he sees is perfect or not, but I know he will be much more enthusiastic about the whole thing if I give him nothing to doubt me about.

Not much else to add really. Bye.