v0.1 Completed

So, v0.1 is in the bag. I am very pleased with the level of progress I’ve made in the last year, so many excellent features, and it really is playable right now.

The level of depth is extremely high, and it will only get deeper.

Yes, of course, I’m already making lists of what needs to be done to improve it, and there are a number of existing bugs that still remain (for now), but I’m well on my way to conquering them. It’s all well in hand.

That’s me done for 2013, though. I won’t be resuming any programming until next year, and I’m looking forward to the break from it to be honest.

Definitely gonna come back with a vengeance though, and I will be tackling the following issues amongst my first tasks:

  • Implement displayDebugOnScreen variable
    • Which, when active, displays the following variables’ states on-screen, in semi-opaque font
      • renderDisplayInProgress, renderImageInProgress, infoPaneVisible, etc.
  • Fix crash on player stats screen (already caught cause in debug)
  • Make a start on the character templates
  • Look into implementing continuously moving backgrounds

And that’s all for 2013, folks. Bye!

TRP

Visual Account Of What’s Left

wpid-20131220_111841.jpg

This is where v0.1 is at, in comparison to where v1.0 will be.

Simple as that – although there should really be about a million percent more columns, all fully green, to represent the actual proportional total of work completed so far.

Not long to go for the finished v1.0, really! But after less than an hour’s work remaining tonight (ironing out a couple of minor bugs), I am done until after New Year. Gonna take a fresh run at it in 2014.

Wish me luck!

 

TRP

Don’t Stop Moving

It’s a toss up between S Club 7 and The Outhere Brothers as to which song is stuck in your head right now – provided, of course, that you were a teenager in the 90’s. Anyway…

I’m keen on implementing non-stop moving backgrounds in the app. Currently, you click a node and it highlights that node whilst the screen pauses – and all the pre-processing is being done for the next screen – before showing the new screen and the background starts moving again.

Feels amateurish.

Here’s a brief outline on what needs doing:

No longer kill off moving background by default when you successfully click a node. Here is the code to determine if kill off is required (it will return “true” if currentMenuIndex is not in list of moving background screens, or infoPaneVisible, or !menuActive)

if (killOffBackgroundRequired(currentMenuIndex)){
    // kill it off
}

Place all “pre-processing” code required to set up new menu screen into a Thread, and hold back change of globalMenuIndex until we are ready to show the new screen


while (t < pauseAfterClickTime && preProcessingInProgress){
    // sleep
}
// NOW flip the menu change

Or, instead of holding back the globalMenuIndex change, we just use tempGlobalMenuIndex during refresh method, in conjunction with the preProcessingInProgress boolean…


if (preProcessingInProgress){
    menuIndex = tempGlobalMenuIndex;
}
else {
    menuIndex = globalMenuIndex;
}

… or summat similar.

Right, I reckon that covers it in enough detail. Now, whether I get a chance to have a crack at this tonight – whilst minding the kids on my own so that m’lady can re-live her teen years watching Ocean Colour Scene – remains to be seen…

 

TRP

Some Visual Indication

wpid-20131218_143320.jpg

Just thought I’d post the progress of that diagram I drew a little while back. It’s starting to flesh out quite nicely, and things are really improving with the app.

Too much good stuff happening to mention right now, except to say – trust a brotha – it’s well on its way to being fucking awesome.

Probably got just under three hours to do on Friday, while m’lady is out having Christmas drinks with her mates, and then I will be drawing a line under version 0.1.

Sound.

 

TRP

v0.1 Is Coming…

Been making great strides lately – and I don’t mean that I’ve been manufacturing trousers in Greater Manchester.

I’ve decided to tie things off as v0.1 once I’ve achieved the following:

  • Implemented entire sponsorship structure
  • Finished off Special Skills GUI
  • Done v1.0 of the Credits Screen

 

I need to do a couple of bug fixes also, but that about covers it. Even without the move sequences, this app is in danger of actually becoming playable.

Watch this space! Possible screenshots coming soon! (yeah, yeah)

 

TRP

Complete Task List

Update this, as appropriate, until project 1.0 is finished.

  • Sponsors Screen
    • Need to do the logic which decides if you get a sponsors offer or not
  • AI
    • As ranks go up, AI improves
    • Implement PATHWAYS to target submissions/point-scoring positions
    • Record relevant TRANSITION nodes into a HashMap<Integer, Integer>, where first integer is the nodeID, and the second Integer is the “rank” of the move
        When calculating next move, scan all nodes…

      • if (aiHashMap.get(moveID) != null){
        if (aiHashMap.get(moveID) <= highestRankingNodeID){
        highestRankingNodeID = aiHashMap.get(moveID);
        potentialAIMoveVector.add(moveID);
        }
        }
      • At the end of this, we randomly pick from the equally valid nodes, or we skew the decision based on the relative percentage skills of the eventual target nodes?
  • Coach’s Advice
    • Sit out the first tourney
    • First time you can choose special skill
    • Think about when to introduce “swipe to skip”, “3 taps quits” and “null press”
    • If you get smashed by a higher belt, advise that – although it’s good to roll with better fighters – you should train with a lesser rank than this particular one for now
    • If you get smashed by someone at your own belt rank, advise to pick a different guy with lesser skill, or take more of a rest between training sessions
    • BUGS:
      • Seems to wait until next match to say “congrats on your first submission” if your first submission is in competition
      • Have a look at how points scoring moves are handled
      • Advice mentioned something about resting in certain positions doesn’t afford energy recovery, but I was in side control bottom
      • I saw advice about 100% moves shown TWICE
  • Player Promotions
    • Fix a couple of known bugs
  • Nationalities
    • Put some more nationalities in?
      • Russia
      • China
      • India
      • Thailand
      • Spain
      • Poland
      • South Africa
    • Put flags next to country names in the nationality chooser?
  • Info Panes
    • Implement a yes/no infoPane
    • Implement an OK/Do Not Show Again infoPane, to stop showing advice
  • General
    • Stats
      • Produce graphs of ranking performance over time for ANY player
      • Include “time trained” for each player (slightly randomised for CPU players)
        • Keep track of actual age of CPU players, so we can use this as another method of retirement (otherwise, we only have bad players retire, with poor records)
  • New Game
    • Disallow double-clicking on New Game nodes
    • Auto-capitalise first letters of each word/name
    • Disallow numbers
  • Sound FX
    • Crowd anticipation/excitement
      • When close to a submission etc.
    • Crowd disappointment
      • When move failed etc.
    • Perhaps some logic to decide who is the crowd favourite, and then tailor responses accordingly
  • Character Graphics
    • Need to have a rethink about this
  •  General Bugs
    • Incorrectly refreshing (and rendering choices) due to null presses (after a move has already been executed, and something has been read out, for example)
    • Figure out correct actual day when player starts game, and handle that accordingly
      • Perhaps running a whole load of tournaments beforehand will make this easier?

 

TRP

Task List

  • ESF
    • Store ESF in player files
      • Or [player name]_esf.txt
    • Make fitness a factor in:
      • How much you are able to recover per rest
      • How much energy you ACTUALLY lose per move
      • Max. recovery limit
    • Introduce a cardio session to improve fitness?
      • And lose weight (if that is implemented)?
    • Confirm that sharpness is a factor in move success
    • When clicking on player profile:

 
    if (!humanPlayer && esfHashMap.get(playerName) == null && firstSundayFound){
        // NOTE: Once we pushDayForward() we clear the esfHashMap
        – get each ESF value and slightly vary it
        – save back into file
        – save into esfHashMap
    }

  • Sponsors Screen
    • Set node icon as rashguard with company logo on it
    • Put sponsor logo on shorts
    • Put this rashguard in large on the actual sponsors screen
    • Put some company info (Name, what they do, and a quick bit of feedback on your performance)
    • Put how long left on contract, and how much sponsorship per week
    • When money goes in, show it as a delayed anim on main screen, where old value becomes new value, and “+£50” (or whatever) floats up and fades (accompanied by a cash register sound)
    • Need to do the logic which decides if you get a sponsors offer or not
    • Need to design the screen in which you get to choose between potentially multiple sponsor offers
  • Achievements Screen
    • Put championship trophies in
    • Put player flag and gym logo in
  • Stats Screen
    • Click on each move in list to see example of that move/skill
    • Show “special skills” in diff. colour text
      • May have to include “special skills” into player file? (THINK ABOUT THIS)
  • Coach’s Advice
    • Null press
    • Sit out the first tourney
    • BUGS:
      • Seems to wait until next match to say “congrats on your first submission” if your first submission is in competition
      • Have a look at how points scoring moves are handled
      • Advice mentioned something about resting in certain positions doesn’t afford energy recovery, but I was in side control bottom
      • I saw advice about 100% moves shown TWICE
  • Challenge Matches
    • Put in logic which decides yes or no to a legit challenge
    • Allow challenge matches of any (matching) belt rank to happen at any Championship
    • Show the actual player’s image in infoPane when accepting/rejecting match
  • General Bugs
    • A counter, during a match, incorrectly re-highlighted as “COUNTER: [move name]”
    • Should not show P2 energy requirements if nullPressActive
    • Incorrectly refreshing (and rendering choices) due to null presses (after a move has already been executed, and something has been read out, for example)
  • Date Issues
    • Third place match has wrong date if automated tourney
    • Some matches are recorded in one player file with the correct date, and in the opponent’s file with the WRONG date. How?
  • Player Promotions
    • Make bottom player of new belt rank retire
    • Introduce a new white belt
    • Notify player of both of these incidents in the Players Promoted screen
  • Nationalities
    • Decide nationality first, when generating a player
    • Pick their names from REALISTIC nationality-based files
    • Put some more nationalities in?
      • Russia
      • China
      • India
      • Thailand
      • Spain
      • Poland
      • South Africa
    • Put flags next to country names in the nationality chooser
  • Info Panes
    • Implement a yes/no infoPane
    • Implement an OK/Do Not Show Again infoPane, to stop showing advice
      • Implement an option to re-show all advice infoPanes (maybe a “?” icon on the main screen?)
    • Extend to allow Drawable to be passed in and rendered centrally
  • Red Button
    • Implement basic red button menu
      • Will need a new control boolean “redButtonMenuActive”
      • Menu options
        • Watch previous matches
        • Watch instructionals?
          • Just by watching an instructional, your skill slightly improves?
        • Preview upcoming competitions
  • New Game
    • Disallow double-clicking on New Game nodes
    • Auto-capitalise first letters of each word/name
    • Disallow numbers
  • Sound FX
    • Crowd anticipation/excitement
      • When close to a submission etc.
    • Crowd disappointment
      • When move failed etc.
    • Perhaps some logic to decide who is the crowd favourite, and then tailor responses accordingly
  • General
    • Implement resuming mid-match
    • Render coloured squares after/before match in match history, to indicate at which belt level the match took place
    • At blue belt, allow player to pick 3 GYM-SPECIFIC “special moves”
      • You only get to pick moves from a limited choice available at each gym
      • You don’t have to pick all three at once
        • You could basically gym-hop to get three different ones from different gyms
          • Although there should be some minimum time requirement for you to qualify at each gym (maybe 3 months)

     

That should do for now. Plenty to get my teeth into.

TRP