Game Development Reference
In-Depth Information
A build can avoid unnecessary compilations by simply determining the hashes
of inputs and outputs and using them to update the dependency graph. Cascading
this process can complete large regions of the DAG. In the best cases, a build
may replace several compiler executions by repeated hash retrievals, completely
bypassing any intermediate results that are needed to produce the final files.
1.7 Minimizing the Impact of Build Failures
In a production environment, it is as important to implement the right technology
as it is to ensure a seamless operation of the system. Build systems are operated
as part of organic environments where new content is delivered in increasingly
tighter deadlines. The evolution of every project will impose a relaxation of the
assumptions that were accepted during the initial design process. All of this pushes
against the stability of the system and may imply frequent system updates.
As worrying as it looks, a progressive degradation of the system is to be ex-
pected. On the brighter side, there are simple approaches that can improve the
chances of success. These methods, without tackling the source of the problems,
will surely raise user satisfaction.
1.7.1 Exploit the Difference between an Error
and a Warning
Most content creators are interested in propping and previewing their assets in
game and are not so concerned about the latest version of every asset. With this
in mind, the system's priority becomes completing partial builds that accurately
represent views of a reduced set of assets. This is true even if, on the global picture,
some other second priority areas may display artifacts.
Let's assume every system incidence is treated as an error and, as such, forces the
build to stop. Applying simple statistics, if we consider that each asset is processed
with a nonzero probability of failure, the chances of successfully completing a build
are extremely low.
It becomes evident that a correct level of criticality needs to be assigned to
each build message. For example, in the context of a geometry compiler, finding
polygons with irregular shapes may be a reason to avoid generating the processed
mesh. In the context of the whole build, this situation certainly has a less dramatic
relevance.
Fatal errors should be the exception. In many cases, failed compilations can
be logged as a warning, and their outputs replaced with placeholder assets. These
fallback mechanisms do not fix the source of the problem, so additional maintenance
will be added to the workloads of the support team. The issues may be solved
via changes in the code and data, or, in some other cases, they will involve the
artist updating the assets. Clearer messaging will increase the opportunities for
the content creators to be able to identify and fix the problems by themselves.
Search WWH ::




Custom Search