Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 4 additions & 7 deletions src/content/h3/engine/ai/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,13 @@ AI in Halo, outside of scripting and specific task flags, do not have the abilit

Sound levels in as defined by tags like [weapons](~weapon) and [projectiles](~projectile) act as a sort of bounds that fall within the hearing distance value in the [character](~) tag, for example an AI with a hearing range of 20 WU will hear a "medium" sound at ~9 WU, but if the hearing range was increased to 40 WU, the AI would instead be able to hear a "medium" sound out to ~18 WU, this topic needs further research as results are not entirely 1 to 1 reproducable and factors such as the direction the AI is facing and their alertness may play a part.

AI sharing a squad will update squadmates about the location of hostiles, sometimes even without dialog. Things that can/will cause a target location update:
AI sharing a squad will update squadmates about the location of hostiles, sometimes even without dialogue. Things that can/will cause a target location update:
- Seeing a target directly
- hearing a target fire a non-silent weapon
- hearing a projectile detonate (like grenades), this can sometimes be traced back to the target who threw them with the [sense_target](~style) flag, otherwise update target to the detonation point of the projectile itself
- An ally shoots at a target, even if we have no line of sight on this target
- Taking damage, even if we have no line of sight from who did the damage to us, unless it's a grenade; that requires [sense_target](~style), this is not limited to squads or tasks
- An ally taking damage within hearing distance, including death.
- Entering search mode
- Prediction of target hiding can allow some updates based on predicting where the target may go when hiding, usually for only a few moments after losing contact when in search mode, requires [sense_target](~style)

Expand All @@ -62,13 +63,9 @@ AI use a level-specific navmesh to move around the environment, this is set up v

# Danger and scariness

{% figure src="danger_values.jpg" %}
Pictured: From the AI globals section of the globals, we can see the various actions that contribute to the danger value an AI perceives
{% /figure %}
![Global danger values](danger_values.jpg "From the AI globals section of the globals, we can see the various actions that contribute to the danger value an AI perceives")

{% figure src="scare_value_8.jpg" %}
Pictured: In this example, the brute shown has a scariness value of 4 and his carbine adds 5, versus 7 for the masterchief biped and 10 for the sniper rifle, resulting in the brute perceiving a scariness of 8 from his target
{% /figure %}
![Scaring the brute](scare_value_8.jpg "In this example, the brute shown has a scariness value of 4 and his carbine adds 5, versus 7 for the masterchief biped and 10 for the sniper rifle, resulting in the brute perceiving a scariness of 8 from his target")

Scariness is calculated by taking the scare value of the AI's biped and adding the scariness of the weapon they are holding, and then comparing it against their targets biped/character and their held weapon.

Expand Down
Binary file added src/content/h3/engine/pathfinding/cchint.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/content/h3/engine/pathfinding/climbhint.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/content/h3/engine/pathfinding/flighthint.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/content/h3/engine/pathfinding/floodhint.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/content/h3/engine/pathfinding/gianthint.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/content/h3/engine/pathfinding/jumphint.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
59 changes: 45 additions & 14 deletions src/content/h3/engine/pathfinding/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ The highest level of the AI pathfinding system for gameplay purposes, [objective
| Zone properties | Description
|-------|----------
| Manual bsp index | Allows the level designer to bypass the automatic bsp assignment for a zone, defaults to *on*
| Giants zone | Marks the zone for use with [Scarab units](~h3/guides/scarab#overview)
| Giants zone | Marks the zone for use with [Scarab units](~h3/guides/units/scarab#overview)
| Manual bsp | Lets you set what BSP this zone should be assigned to

## Areas
Expand Down Expand Up @@ -109,19 +109,18 @@ Most hints will have two general flags:
- bidirectional : AI can use this hint going fowards and backwards across it, some exceptions apply
- closed : Unknown/needs additional research

{% figure src="wellhint.jpg" %}
Pictured: How correctly set up well and flood hints are seen from the view of the well hint selection, note how the well hints draw paths that enter and exit the flood hint
{% /figure %}

| Hint type | Description
|-------|----------
| well | Using right click you draw a path for certain AI to take to jump on or off flood hint sectors, closing the path with left click
| jump | Using right and left click you draw a set of vectors (starting from the top two points) that detmermines a direction for AI to take jumps in, can also be used for for vaulting, a section below will detail additional flags
| climb | Using right and left click draw a verticle path from which AI will attempt to climb up using their hoist animations
| flight | Using right click draw a path of points in which flying AI can use to fly around an area without the use of firing positions, close with left click
| cookie cutter | Using right click you create a box that you can alter the dimensions of, inhibits *all* pathfinding through the area of the cookie cutter box
| flood | Using right click you draw an enclosed area that certain AI will climb on or off, seal this area with left click, typically used for drones or flood pureforms to climb on, walk around and attack from walls, needs well hints
| giant | Consists of two sub-types: sector hints and rail hints, sector hints are used to define the area in which scarabs will pathfind (Used *with* scarab zones) and rail hints are used for the scarab to transition between different sectors, use right click to create vertices in the sector or the starting position of the rail and left click to seal the sector or end the rail, **see [the scarab usage guide ](~h3/guides/scarab) for more info about setting up scarab units for gameplay.**
## Well hint

![Correct well hints](wellhint.jpg "How correctly set up well and flood hints are seen from the view of the well hint selection, note how the well hints draw paths that enter and exit the flood hint")

Using right click you draw a path for certain AI to take to jump on or off walls or ceilings that contain [flood hint sectors](~pathfinding#flood-hint), closing the path with left click.

## Jump hint

![Corrct jump hints](jumphint.jpg "Note how the middle two hints are bi-directional and have a two-way yellow arrow, while the outside hints are single direction only")

Using right and left click you draw a set of vectors (starting from the top two points) that detmermines a direction for AI to take jumps in, can also be used for for vaulting, a section below will detail additional flags.

| Jump hint flags | Description
|-------|----------
Expand All @@ -130,10 +129,42 @@ Pictured: How correctly set up well and flood hints are seen from the view of th
| railing | Treat this hint as a vault in which AI will try to vault over the obstacle using their vault animations
| vault | Unknown/needs additional research

![vault hint example](vjumphint.jpg "An example of a vault hint, the obstacle is flanked at both ends by the hint which makes the red fenceline encase the obstacles width")

## Climb hint

![Correct climb hints](climbhint.jpg "Note how climb hints are constructed with only two points, with the white line showing a perfect vertical climb with no deviation")

Using right and left click draw a vertical path from which AI will attempt to climb up. Depending on the height of the hint AI will either use hoist step, hoist crouch or hoist stand animations. Place starting point near the base of the climb with the end point slightly inland from the exit of the climb for best results.

## Flight hint

![A correct flight hint](flighthint.jpg "Note how the hint is constructed with multiple points that can be moved around")

Using right click draw a path of points in which flying AI can use to fly around an area without the use of firing positions, close with left click.

## Cookie Cutter hint

![A cookie cutter hint](cchint.jpg "Best practice is to make sure the cookie cutter overshoots geometry you want to block off, such as sinking through the floor by a tiny bit")

Using right click you create a box that you can alter the dimensions of, inhibits *all* pathfinding through the area of the cookie cutter box.

## Flood hint

![Correct flood hints](floodhint.jpg "How correctly set up well and flood hints are seen from the view of the flood hint selection, note how the flood hint creates an enclosed space that well hints then draw a path into")

Using right click you draw an enclosed area that certain AI will climb on or off, seal this area with left click, typically used for drones or flood pureforms to climb on, walk around and attack from walls, needs [well](~pathfinding#well-hint) hints. For AI to move around on ceilings and walls they will need "climb" mode animations, while wall clinging and perching needs the "perch_wall_left(or right)" mode animations.

## Giant hint

![Correct giant hints](gianthint.jpg "How correctly set up sector and rail hints are seen from the view of the sector selection, note how the rail (yellow) hints draw a path between the sector hints")

Consists of two sub-types: sector hints and rail hints, sector hints are used to define the area in which scarabs will pathfind (Used *with* scarab zones) and rail hints are used for the scarab to transition between different sectors, use right click to create vertices in the sector or the starting position of the rail and left click to seal the sector or end the rail, **see [the scarab usage guide ](~h3/guides/units/scarab) for more info about setting up scarab units for gameplay.**

## Object hints

Objects such as [crates](~crate) have the ability to use dynamic hints such as vaulting, mounting and hoisting, these are defined by markers on the [render_model](~)

# Debugging

When spawning in AI, you may notice certain issues with them, among these are colored triangles above their heads: green means no objective set or no firing positions available within the current task of that AI, yellow can appear if there's a rather limited number of firing positions for the number of AI in the task, or if the AI cannot pathfind to the assigned firing positions. There is also a red triangle but it is very rare and will need additional research and replicable methods of attainment to know it's effects.
When spawning in AI, you may notice certain issues with them, among these are colored triangles above their heads: green means no firing positions available to that AI. Yellow can appear if there's a rather limited number of firing positions for the number of AI in the task, or if the AI cannot pathfind to the assigned firing positions. Finally a red triangle can appear if the AI lacks the idle and alert [style](~) behaviors when in those states [(assumed combat status 1 and 2)](~ai#combat-status-and-alertness), but there may be more conditions it can appear under that are not yet known.
Binary file added src/content/h3/engine/pathfinding/vjumphint.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/content/h3/guides/tags/alt-fire/2trigger1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/content/h3/guides/tags/alt-fire/2trigger2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/content/h3/guides/tags/alt-fire/charge.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/content/h3/guides/tags/alt-fire/latchauto.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/content/h3/guides/tags/alt-fire/latchzoom.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/content/h3/guides/tags/alt-fire/pp_glow.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
58 changes: 58 additions & 0 deletions src/content/h3/guides/tags/alt-fire/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
title: Weapon alternate fire
img: pp_glow.jpg
caption: An overcharge alternate fire
keywords:
- alt-fire
- overcharge
- alternate fire
about:
thanks:
odchylanie_uderzenia: Writing and research
---
[Weapons](~weapon) in Halo have a variety of different mechanics and firemodes, some of these include the ability to use an alternate form of attack such as an overcharge or a scoped-in fire mode, this page will serve as a guide for setting these features up within your weapon tag.

Alternate fire modes in Halo are mostly hard-coded behavior types associated with specific [trigger types](~weapon#new-triggers), as such these will be our alternate fire methods.

Make sure to reference the **weapon tag** page itself for more in-depth details of the fields and how they work.

## Latch autofire

Easily the most common type used in the franchise, the plasma pistol is notable for using this trigger type, behaving as latch when tapping the trigger or fire keys quickly, but if the key or trigger is held for longer than the *autofire time* the secondary barrel begins charging, to be released upon command when fully charged, or should the barrel overcharge.

After setting your trigger type to latch autofire, you may then specify your barrels, the primary barrel will be when the weapon is not charging, and the secondary will be for fully charged, assign your barrels to these as you desire

![The setup for latch autofire](latchauto.jpg "Note the autofire and charging times")

## Charge

The quirky sibling of latch-autofire, charge behaves in almost the same way except with the focus being on charging the secondary barrel and only firing the primary barrel if the secondary fails to be fully charged when the key is released.

Can be set up the same way as latch autofire, but ignores the autofire time field.

![The setup for charge](charge.jpg "Note the charging time")

## Spew Charge

As common as the spartan laser itself, this unique trigger type is only used for that specific weapon, but generally it's an automatic fire weapon that fires it's first barrel while charging it's second, once the second barrel finishes charging it then takes over firing as a semi-auto or burst attack.

After setting your trigger type to spew charge, you may then specify your barrels, the primary barrel will be when the weapon is charging, and the secondary will be for fully charged, assign your barrels to these as you desire

![The setup for spew charge](spewcharge.jpg "Note the charging time")

## Latch zoom

Perhaps the easiest to understand and set up, this type of alternate fire is used for semi-auto/burst weapons that gain an alternate fire mode when zooming in, due to the limitations of this trigger type, no automatic fire modes are possible.

After setting your trigger type to latch zoom, you may then specify your barrels, the primary barrel will be when the weapon is unzoomed, and the secondary will be for zoomed, assign your barrels to these as you desire

![The setup for latch zoom](latchzoom.jpg "")

## Secondary trigger

Being the most archaic method of implementing an alternate fire, this method doesn't use any special trigger types at all, but instead uses a whole seperate trigger with it's own button input, this allows the issues of prior types to be ignored, but comes at a cost.

Simply add another trigger block and assign it to a differing input such as melee or left trigger, be aware that these buttons have preestablished functions such as melee, zooming or vehicle boosting, for handheld weapons it would advised to disabled binoculars and grenade throwing so there are no keybind conflictions across keyboard or controller.

![The first trigger](2trigger1.jpg "Note the lack of a secondary barrel, because this trigger is spew")
![The second trigger](2trigger2.jpg "Note the lack of a primary barrel, because this trigger is charge")
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions src/content/h3/guides/tags/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
title: H3 tag guides
stub: true
---

{% childList /%}
6 changes: 6 additions & 0 deletions src/content/h3/guides/units/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
title: H3 unit guides
stub: true
---

{% childList /%}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ keywords:
thanks:
Rataz: Writing this guide
RejectedShotGun: Streaming while adding a scarab to a map
redirects:
- /h3/guides/scarab
---
This guide provides general info on how to set up the scarab in a custom scenario. The Scarab is a fun opponent to add to custom scenarios, but requires more steps to set up than other AI characters.

Expand Down
2 changes: 1 addition & 1 deletion src/content/h3/tags/damage_effect/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ Flags used for special properties to be applied to this damage effect when hitti
| Flag | Description
|-------|----------
| does not hurt owner | needs additional research
| can cause headshots | When this melee or projectile attack hits a [model](~) damage section with the 'headshottable' flag enabled and the region is unshielded, the unit will instantly be killed, regardless of remaining health or shields
| can cause headshots | When this melee or projectile attack hits a [model](~) damage section with the 'headshottable' flag enabled and the region is unshielded, the unit will instantly be killed, regardless of remaining health or shields. Will also enable tracking projectiles to specifically track the headshot region of a target
| pings resistant units | Unknown/needs additional research
| does not hurt friends | Unknown/needs additional research
| does not ping units | needs additional research
Expand Down
Loading