Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
npc_behaviour [2017/01/25 12:39] – old revision restored (2017/01/08 19:47) stohrendorf | trs:npc_behaviour [2017/11/17 11:19] (current) – stohrendorf | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | {{indexmenu_n> | ||
+ | |||
====== Non-Player Character Behaviour ====== | ====== Non-Player Character Behaviour ====== | ||
Line 19: | Line 21: | ||
Despite the existence of //script files//, here is no any scripting for entity behaviour, like in most contemporary games. This hardcoding makes it difficult to port the earlier Tomb Raider scenarios to the engines of the later games, which could be desirable with their improved hardware support. While textures, models, and animations can be ported, behaviour cannot be. | Despite the existence of //script files//, here is no any scripting for entity behaviour, like in most contemporary games. This hardcoding makes it difficult to port the earlier Tomb Raider scenarios to the engines of the later games, which could be desirable with their improved hardware support. While textures, models, and animations can be ported, behaviour cannot be. | ||
- | However, there is a small change in TR4 and TR5 which indicates that specific entity behaviour can be altered — it’s called //OCB//. It was briefly described in [[meshes_models# | + | However, there is a small change in TR4 and TR5 which indicates that specific entity behaviour can be altered — it’s called //OCB//. It was briefly described in [[trs:meshes_models# |
Sometimes OCB is interpreted as a “packed” field with several values incorporated — like teeth spike OCB contain information about their horizontal and vertical orientation, | Sometimes OCB is interpreted as a “packed” field with several values incorporated — like teeth spike OCB contain information about their horizontal and vertical orientation, | ||
Line 53: | Line 55: | ||
This is presumably the way //TRLE// creates boxes for each level: | This is presumably the way //TRLE// creates boxes for each level: | ||
- | * For each sector, extend one axis until a height difference is reached. | + | |
- | * Then extend this row (or column) perpendicular until another height difference is reached. This is a rectangle with the same height and it //defines a box//. | + | * Then extend this row (or column) perpendicular until another height difference is reached. This is a rectangle with the same height and it //defines a box//. |
- | * Do the same with the other axis first, and you get another box. | + | * Do the same with the other axis first, and you get another box. |
- | * Repeat this process for every sector, maybe extending into neighbor rooms through the portals. | + | * Repeat this process for every sector, maybe extending into neighbor rooms through the portals. |
- | * Make sure that there are no any duplicate boxes. | + | * Make sure that there are no any duplicate boxes. |
There are two variations of box structure — one for TR1 and another for TR2 and any other game version. | There are two variations of box structure — one for TR1 and another for TR2 and any other game version. | ||
Line 85: | Line 87: | ||
}; | }; | ||
</ | </ | ||
- | In '' | + | The '' |
=== Overlaps === | === Overlaps === | ||
Line 190: | Line 192: | ||
==== AI Data Block in TR4-5 ==== | ==== AI Data Block in TR4-5 ==== | ||
- | Beginning with TR4, AI objects are //not kept along with other entities//. Instead, they have their own structure, which is basically simplified [[meshes_models# | + | Beginning with TR4, AI objects are //not kept along with other entities//. Instead, they have their own structure, which is basically simplified [[trs:meshes_models# |
The format of AI object structure as follows: | The format of AI object structure as follows: |