The playerHelper is an object that starts a daemon at start of play. This daemon checks whether the player is making any progress at all, and also watches the ratio of commands the parser rejects to the number of turns. If this ratio becomes too high (as defined by the errorThreshold property) we offer the player a HELP command. If it becomes very low (as defined by the ceaseCheckingErrorLevel property) we cease checking (i.e. stop the daemon) on the grounds that the player doesn't appear to need the kind of help we want to offer. We first perform a check after firstCheckAfter turns to see if the player is making any progress, and then after each errorCheckInterval turns to see if the player is having difficulty entering valid commands.
The idea is to keep offering HELP to an inexperienced player who clearly needs it, even if the player declined to read any help text at the start of the game.
playerHelper : InitObject
Superclass Tree (in declaration order)
playerHelper
InitObject
ModuleExecObject
object
Summary of Properties
ceaseCheckingErrorLevel
errorCheckInterval
errorCount
errorDaemonID
errorThreshold
firstCheckAfter
firstCheckMsg
startLocation
Inherited from ModuleExecObject
:
execAfterMe
execBeforeMe
hasInitialized_
isDoingExec_
isExecuted_
Summary of Methods
errorCheck
execute
firstCheck
firstCheckCriterion
offerHelp
startErrorDaemon
stopErrorDaemon
Inherited from ModuleExecObject
:
_execute
classExec
Properties
The proportion of rejected commands to turns, expressed as a percentage, below which we stop checking for errors. The default is 5 (in other words if less than 5 per cent of the player's commands are being rejected, the player presumably knows what s/he's doing, so we don't need to keep checking)
The number of turns between each check on whether the player is entering too many erroneous commands.
For internal use only: the number of badly formed commands the player has entered.
For internal use only: the ID of the currently running error check Daemon (if there is one)
The proportion of rejected commands to turns (i.e. accepted commands) that will trigger an offer of help. We express this number as a percentage.
The number of turns that must elapse before we test the firstCheckCriterion to see if the player appears to be stuck.
The message to display if the player seems to be stuck at the start of the game.
The location the playerCharacter starts out in at the beginning of the game. It may be useful to know this in the firstCheckCriterion method.
Methods
Watch for a high percentage of errors in user input
Set up the firstCheck() Fuse and note the player character's starting location.
Check whether the player appears to be making any progress at the start of the game. If not, display a message offering help and start the error checking daemon.
The criterion to apply to see whether the player is making any progress at the start of the game. This method should return true if the player seems to be stuck. By default we simply return nil as there's no way of knowing how to measure 'stuckness' for games in general, so specific games will need to override this method. A game involved exploration might set the condition to gLocation == startLocation (meaning the player character hasn't moved) for example.
The offerHelp() method asks whether the player has played this kind of game before and accepts a Y or N answer. if the answer is NO then it goes on to display a message suggesting sources of help.
This method can usefully be called at the end of the gameMain.showIntro() method, but it's up to game authors to incluse it there if they want it/
We've just offered help, so we'll wait another errorCheckInterval turns before seeing whether to offer it again.
Stop the error check daemon from running
Adv3Lite Library Reference Manual
Generated on 03/07/2024 from adv3Lite version 2.1