Script Timing Issues

From HLKitWiki
Revision as of 16:15, 21 November 2008 by Rob (Talk | contribs) (How to Recognize a Timing Issue)

Jump to: navigation, search

[Context: HL KitBasic Concepts and TerminologyDebugging Mechanisms]

Overview

We'll start this section off by answering the obvious question. What's a timing issue?

The evaluation cycle controls the order in which everything is processed for each character, and it's up to the author to make sure that every task is assigned an appropriate phase and priority. A timing issue is the result of scheduling a task in the wrong sequence, which causes the evaluation cycle to yield the wrong final results. This section provides some tips on how to recognize and resolve timing issues.

How to Recognize a Timing Issue

It doesn't matter how experienced you are as an author, script timing issues will crop up if the game system has even a modicum of complexity. The trick is in being able to recognize when you are dealing with a timing issue.

The first diagnostic step is always to review each of the tasks involved in the behavior you're implementing. For each task, you need to double-check the associated tag expressions and/or script code. Then check the appropriate info windows to see whether all of your assumptions are being satisfied. Do fields contain the values they should? Are all the proper tags assigned where they should?


You may also find it useful to insert a few "debug" or "notify" statements into pertinent scripts to verify that values and tags are

appropriate info windows.


There are two primary types of timing issues that can arise, and each has slightly different symptoms. For both, however, the first diagnostic step is to review the appropriate info windows.


contents of info windows is wrong, but the scripts are performing the correct actions

everything looks good via info windows but the expected behavior still isn't being performed properly

Using the Task List

intra-hero timing issues inter-hero timing issues (masters/minions)

Script Timing Output

debug output of script timing

Debug Output Tracing

debug output of each step in evaluation to monitor the timing and flow