Jason Deacutis - Portfolio

GHPC

Gunner, HEAT, PC! (GHPC)

Early Access “Cold War Gone Hot” tank simulation game.
Short for “Gunner, use High Explosive Anti Tank round on enemy Personnel Carrier!” (yes, its nerdy)

/content/GHPC/T-55s_small.jpg /content/GHPC/Night Fire.jpg /content/GHPC/T-72s.jpg /content/GHPC/Abrams_small.jpg

Reticles

Gunsight crosshairs are integrated with the ballistics system, elements are procedurally placed to ensure projectiles always hit their mark as we tweak our ammunition over the course of development. Supports both “old-fashoned” light-blocking reticles, & holographic/reflex reticles. All reticles were meticulously recreated from their real-world counterparts, using written & photographic reference (often difficult to find).

/content/GHPC/Reticles/reticles_small.jpg
Reticles for T-55, BRDM-2, T-72, AT-4 Spigot, TPKU-2B (Russian Commander Periscope), TOW, & M60A3.
Nearly every gunsight since WW2 has an internal light for use at night
(reticles are actually white!).
/content/GHPC/Reticles/t55_labeled_small.jpg
Russian T-55 gunsight with labels
Stadiametric rangefinding allows quickly determining the distance of a target based on its apparent size.
/content/GHPC/Reticles/stadia_small.jpg
T-72 stadia showing a US M60A3 at 500 meter distance increments

Thermal Imaging (FLIR)

Approximation of Infrared light, used to identify heat sources such as vehicles & infantry. Vehicle engines, gun barrels, & tracks are heat sources that can change temperature independently. In addition, the sun’s position is used to determine the ambient environment temperature. Surface details are obtained using a semi-physically-based light model: surface brightness, roughness, & metalness are used to estimate heat emittance, determining how bright or dark it appears in thermal imagers. This achieves decently realistic results without needing much manual labor.

M60A3 TTS's FLIR at night, loosely based on real sources (early WIP).

SDF Maps

2D map rendering is harder than you'd think. GHPC has terrains over 8x8km in size & players need a zoomable map.
A static image needs to be very high resolution, it takes a lot of space, & even still it doesn't support a lot of zooming.
A mesh based map allows infinite zoom, but may be difficult to generate or require level of detail for performance.

Signed Distance Fields compromise & allow low resolution textures to encode vector graphics that can be infinitely zoomed. They enable easy styling of borders & anti aliasing cheaper than traditional triangle MSAA. The SDFs are procedurally generated based on the forest, road, & building masks that we already use for vegetation generation & terrain materials. There's a lot of room for optimization, but there was no need given how fast it was already running (<1ms).

/content/GHPC/SDF/contour.gif
Anti-aliased contour lines rendered directly from the heightmap file.
/content/GHPC/SDF/map.gif
Multiple SDFs allow multiple colors & are combined with shaded relief.

Day-Night Cycle

Realtime sky simulation, based on a simplified solar system model. Takes into account the map’s global coordinates. Includes seasonal sun elevation, moon phases, & earthshine. The moon is also simulated as a light source & its brightness is affected by phase.

/content/GHPC/Sky/sunpath_small.jpg
Sun path over the course of a year
/content/GHPC/Sky/moon2.gif
Moon phase cycle

Driver AI

Developed the first iteration of the driver AI, allowing vehicles to navigate to a destination while avoiding obstacles.

AI Vision Occlusion

Developed the first iteration of the AI vision occlusion. A mesh is used to determine how obscured a target is. PhysX raycasts are very efficient for static meshes, so this actually turned out to be very performant. Houdini procedurally generates a mesh using the forest masks that we use for procedural vegetation placement. The masks are vectorized, extruded, & the triangle count is reduced to reasonable amounts (<10,000 tris).

/content/GHPC/Vision Collider.jpg
Red is the invisible mesh. This prevents AI from seeing through forests.