DI-Guy Data History
For an overview of data changes please see release notes:
DI-Guy Version 12.5
DI-Guy API
Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.
Version 12.5.1
Version 12.5.0
CRITICAL api changes
- C++ callback:
float AltitudeFunction( diguyScenario* scenario, float x, float y, float old_z);
has been replaced with
float AltitudeFunction( diguyScenario* scenario, float x, float y, float old_z, int * valid);
code will need to be updated before recompiling.
Graphics API
- bdiGraphicsInitGraphicsAPI.use_4x3_shader_matrices must be set to 0 if you aren't planning on upgrading shaders to use 4x3 matrices.
- As a performance optimization we are no longer transposing our internal matrix representation in C++ before sending to OpenGL. 4x4 matrix bind should get updated to
glUniformMatrix4fv(m_bind_location_ufrm_link_matrices,
num_mats,
!get_transposed_matrix_data(),
mat_data);
where bdiGraphicsInitGraphicsAPI.transpose_shader_matrices has been properly set see diguyOglGraphicsShaderProgram.cpp for example.
New Features
- New adaptive guide allowing characters to fix dead reckoning errors with appropriate step and strafe motions. Now the default in the networking system as well as featured in the guide example.
- New texture variation system allowing for infinite variations on next-gen characters. See diguyCharacter::set_use_texture_variations().
- Next-gen characters now have a number of multiple available head appearances.
- Motion engine should now be fully multi-threaded, thread control api is part of diguyApp.
- New C++ documentation system, utilizing doxygen.
- Fixed matrix update issues with motion lod system and skinned characters, motion lod system can be used again with them, same issues had been happening with segmented characters as well. We recommend using multi-threaded pipeline instead of motion lods at this point.
- New ground clamp option 'g' - approximation based on ground clamping vehicle bounds
- Scene objects can now be collada DAEs.
- Added support for bump maps on scene objects.
- New multi-threaded asynchronous texture loader, controllable via scenario UI and diguyCharacter::set_texture_load_behavior() and diguySceneObject::set_texture_load_behavior()
- Fixed bug with T-in/T-out and review data on scene object characters.
- Updated perl header file examples with lua equivalents.
- Character viewer debug shader can now be used on scene objects
- Fixed bug on blinking characters when t-in was not 0.
- Fixed Expressive Faces pop when interacting with gaze code.
- Added the ability to pause the shadow map update and lower the update frequency.
- Added controls for adjusting the shadow map frustum and shadow acne fudge factor.
- Character culling is now based on the base link, not the position link.
New DI-Guy Author APIs:
DI-Guy Scenario
Version 12.5.0
- New lighting system triggered by particle effects and weapons fire.
- Improvements to 3d visuals for path editing.
- Merged some subwidgets in character page.
- Improved interactive Face Expression Editing.
- Improved determinism of fast forward, and setting current time via the VCR UI.
- Streamlined performance settings. Crowd Load Manager, Load Manager tabs have been phased out, settings are now located in the performance page.
- Changing camera settings will now force a motion update on all characters.
- Property tree UI's now have slider widgets, easier to change values interactively.
- Labels above character's heads now autoscale and draw z-sorted.
- Right click menu now contains a shortcut to turning on the debug label.
- Right click on log window selection can now go to package selected or Character selected.
- Shader UI includes the ability to edit character variation texture colors.
- Physx library has been rewritten to use Physx 3.2, this is upgraded from version 2.8, Physx installer should no longer be needed.
- Fixed a number of sound looping issues.
DI-Guy AI
Version 12.5.0
- Improved turning motion system, now on by default.
- Variant system now treats the normal variant as an indicator to automatically pick an appropriate variant for the character. Controlled by diguyCharacter::agent_set_auto_variant_selection()
- System will now cycle through appropriate motions randomly.
- LuaCharacter - sleep_ignore_messages avoids resuming the coroutine.
- AI movement callbacks are now queued up and triggered at the end of the multi-threaded update.
- New AI State Inspector - mini lua watch window, activate via right click menu.
- Added diguyCrowdProfile::create_character() short cut for using a profile to create a character.
- Significantly improved speed of collision influence calculation for crowds.
- Crowd profiles have been updated to use new variation system.
New API functions:
Graphics API Changes
Version 12.5.1
- Added functionality to support color picking intersection testing for scene graph implementations.
- Added sample code demonstrating intersection testing with OpenSceneGraph.
New API Functions:
Version 12.5.0
- Modified diguyOsgGraphicsMesh::build() to load appearance textures on demand instead of pre-loading all appearance textures.
- Added support for 4x3 skinned matrices, saves 25% of the bandwidth and uniform constants sent per character draw call. Now the default for OpenGL. Configurable via bdiGraphicsInitOgl.use_4x3_shader_matrices and bdiGraphicsInitGraphicsAPI.use_4x3_shader_matrices. diguy_graphics_get_osg_defaults() and diguy_graphics_get_dx9_defaults() have been added to make it a bit easier to get the defaults set up.
- Added sample code demonstrating use of 4x3 matrices for transform data.
- Greatly expanded shader techniques API, diguyGraphicsShaderTechnique can now be subclassed and end users can create new shaders on the fly with diguyGraphicsShaderTechnique::find_or_create_shader_variation(). End users can override existing functionality and return alternatively compiled shaders depending on their own criteria, sample code is provided demonstrating conditionally compiling in point light support but only using shader when necessary.
- Fixed matrix transpose mistake in diguyOglGraphicsLink.cpp
- Cleaned up computation of local space camera.
- Removed use of display lists from diguyOglGraphicsMaterial.cpp
- Cleaned up diguyOglGraphicsShaderInstance.cpp to reflect the use of shader techniques.
- Added sample code demonstrating updating lighting state for simple point lights on characters.
- Added sample code demonstrating using #defines to control compilation of various shader features.
- Added support for variation system to sample code, this is shown in diguyOglGraphicsShape and diguyOsgGraphicsShape.
- Added diguyOglGraphicsShaderTechnique demonstrating how to modify built-in shaders and overriding our existing shader LOD system.
New API Functions:
DI-Guy Networking
Version 12.5
- DIGUY_CUSTOM_PDU_ID_SET_CHAR_APPEARANCE Now contains a second optional string for head appearances
DI-Guy Version 12.0
DI-Guy Scenario
Version 12.0.1
- Added visualization option for gaze vectors.
- Restored missing default face expressions and chain settings libraries to new.dss.
- Added display of more callback information to the Event Mapper User Interface.
- Fixed bugs with water shader.
DI-Guy API
Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.
Version 12.0.3
- Updated network model map for vehicles and also resolved issue with vehicles stuttering on paths.
- Made fire and detonation PDUs use matching event ids. Added velocities to Fire PDUs. M16 velocity is used by default for all weapons but can be overridden in munition config file.
- Fixed DI-Guy Scenario bugs in copy/paste paths, action spreadsheet.
- Fixed minor content bugs involving missing torso on insurgent.
Version 12.0.2
Version 12.0.1
- Updates to FaceFX sample content.
- Streamlined shader bind and unbind calls.
- Fixed issue where even with only 1 update thread was used some of the multi-threaded infrastructure was active.
- Added warnings to various add_callback_script functions to warn if the same callback is repeatedly added.
- Update Middle Eastern AI's to avoid perpetual memory growth.
- Changed multi-threading to only use the Qt threading framework when more than one thread is allocated to DI-Guy.
Version 12.0.0
DI-Guy AI
Graphics API Changes
- See the 11-12 transition guide in the SDK user manual for a complete overview of the changes between 11 and 12
DI-Guy Version 11
DI-Guy API
Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.
Version 11.6.0
Graphics API Changes
Version 11.6.0
Version 11.0.x
- Turned off character shadow disks by default when using SDK; they're still on by default in DI-Guy Scenario.
Version 11.0.4
Version 11.0.2
Version 11.0.1
Version 11.0.0
Version 10.5.1
Version 10.1.7
Version 10.1.6
Version 10.1.4
Version 10.1.3
Version 10.1.1
Version 10.1.0
DI-Guy Scenario
Version 11.5.1
- Fixed intersection test issue with scene objects
- Fixed bogus fog changed notification
- Improved sound history recording and playback
Version 11.0.1
- Fixed crash with using qt_invoke without lqt loaded.
DI-Guy Motion Editor
Version 11.0.1
- Fixed Motion Arc extended info handling.
- Fixed issue with the poser not being available on some skinned character links.
Version 11.0.0
- Initial support for handling skinned characters.
DI-Guy Character Viewer
Version 11
- Added Shadow and normal previewer.
- Added LOD picker.
DI-Guy for Vega Prime
Version 11.5.1
- Initial support for vegaPrime 5.x.
- fixed crash on exit using some modules.
- Changed setScriptPerlEnable default from true to false.
Version 11.0.1
- Initial support for vegaPrime 4.x.
DI-Guy Networking
Version 11.0.1
- Fixed a number of bugs with transmitting gazing and aiming behavior over network.
- Improvements to log messages.
DI-Guy Applications Version 10
DI-Guy API 10
Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.
Version 10.0.10
- Impact processing on characters now considers mind wakeup callbacks when deciding how the impact affects the character, in addition to the straight callbacks that are considered now.
Added functions:
Version 10.0.8
- Added merging of regions during scenario merge.
- Fixed merging of crowds to include merging of crowd behavior regions.
- Added diguyScenario::CALLBACK_ID_PLAYBACK_MODE_CHANGED.
- Added diguy_set_diguy_base_dir_path() function.
- Added remove_on_scenario_load argument to most add_default_*_callback() functions; allows for "permanent" callbacks to be added that persist through scenario loads. The default is 0, meaning remove the callback when a scenario is loaded.
Version 10.0.6
- Fixed visual issues of skinned appearances when the character is scaled or is using a motion LOD greater than 1.
- Fixed issue where default scenario callbacks were not being called.
Added functions:
Version 10.0.5
Version 10.0.4
Version 10.0.3
Version 10.0.1
Version 10.0.0
- The DI-Guy Graphics API example directories osg_12_examples and osg_22_examples have been removed. They have been replaced with osg_2_examples.
- The osg_2_examples reference implementation now has support for skinned appearances. It uses the DI-Guy built-in geometry loader instead of OSG's, as DI-Guy has some specific requirements for loaded skinned geometry.
- diguyScenario::add_callback() and diguyScenario::add_callback_script() have been modified with an addition argument that specifies whether the callback should remain after a new scenario has been loaded. The previous behavior was for the callback to not be removed, which could cause problems. Users will now need to explicitly request that the callback remain.
Version 9.1.5
Version 9.1.4
The way that weapon sounds are handled has been changed.
Previously weapon sounds were largely determined by the
character's default weapon sound setting, as set by
set_default_weapon_sound(). Weapon sounds (and other data) are
now set automatically based on the munition type(s) of the weapon
the character is carrying. The default munition type sound can
be overridden by calling set_weapon_sound_override(). Note that
existing, deprecated calls to set_default_weapon_sound() will
have the same effect as calling set_weapon_sound_override().
- Added diguyViewPainter class that allows the drawing of lines and other primitives in DI-Guy Scenario 3D view windows. For access to this object call diguyApp::get_painter().
- Added diguyScenario::CALLBACK_ID_POST_DRAW, allowing the scripting engine a chance to draw in the 3D view in DI-Guy Scenario. Characters with minds are also given the opportunity to draw; see the default luaCharacter script.
Version 9.1.2
- Scripts are no longer limited in length (was 32K).
Deprecated functions:
Version 9.1.1
- Added new plugin function, post_reset(). Allows plugins to do reset operations at the end of a scenario reset, instead of only at the beginning.
Version 9.1.0
DI-Guy Scenario 10
Note that most changes to the DI-Guy API also apply to DI-Guy Scenario.
Version 10.0.2
- Fixed the appearance of state functions in the code browser.
Version 10.0.0
- Added the "Appearance Wizard" to places where character type and appearance can be selected. The Appearance Wizard provides an interactive UI for selecting desired attributes of the character to be created, such as category, age, sex, race, military branch, carried object, etc.
- Character types and appearances are now marked as "Recommended" and "Not Recommended". Many older character types and appearances have been nominally replaced with newer versions which should be preferred over the older ones. By default DI-Guy Scenario will show only the preferred ones, but can be changed to show all of them. Scenarios that currently use now not-recommended character types and appearances will still work as before.
Version 9.1.3
- Improvements to autocomplete, including DIGUY_* constants as well as dynamic analysis of lua objects.
Version 9.1.2
- Added new documentation viewer, accessible under the help menu.
Version 9.1.1
- When selecting which agents' parameters are going to be edited, multi-select can now be used.
- Replaced Scenario Elements, Character Elements, View Settings, Event Handlers, and DI-Guy AI Elements windows with a single revamped Scenario Elements window that has collapsible tab groups.
- Removed experimental, incomplete "Merge Blitz" capability.
Version 9.1.0
Script editing now uses an editing component based on Scintilla, this provides syntax highlighting/coloring, line numbering, basic auto-complete, and code folding. Currently supported control keys:
- Ctrl '{' or Ctrl '}' - jump to matching brace
- Ctrl f - find dialog
- F3 - find again
DI-Guy AI 10
Version 10.0.4
- Added new AI_Populate SDK example; demonstrates populating the environment with lua minds based Agents via the SDK.
Version 10.0.3
- Improved behavior of paintbrush far from origin and at different heights.
- Added bright red log/package indicator on lua syntax errors.
- Improved behavior of code browser recompile button, pops up log window on syntax errors.
Version 10.0.2
- Fixed hard crash in path planner when pursuing with no behavior region set.
- Fixed a number of bugs with agents colliding with props.
- Fixed bug with crowd awareness code far from the origin.
Version 9.1.4
- Significant improvements to A* path planning performance, 10x speed up in most cases.
Version 9.1.3
Version 9.1.2
- Added diguyCharacter::CALLBACK_ID_AGENT_VEHICLE_COLLISION; this callback is triggered on a vehicle when a vehicle hits an agent.
- Added diguyRegion, an API wrapper for painted meshes. Retrievable with the function diguyScenario::find_region().
- Vehicle bounds are now smoothed when the vehicle changes speed.
- Added simple gazing model into agent focus behavior.
- Added Idle Behavior, agent will stop moving and be responsive to focus and simple requests but won't spontaneously move.
- Added diguyCharacter::agent_begin_behavior() allows starting a behavior by name. Typically some of the more elaborate functions are preferred, but this can be useful for idling and such.
- Changes to None behavior. Agent will attempt to do less and clear out some transient state to make the behavior of the behavior more consistent.
Version 9.1.1
DI-Guy Motion Editor
- Added support for filtering the action table editor, eases editing of large action tables.
- Added code to reverse motions.
- Grabbing a pose on a Linear Offset should interpolate properly.
- Motion arc list and action table motion list are now in sync.
DI-Guy Character Viewer 10
Version 10.0.0
- Added "Appearance Wizard" button to make selecting an appropriate character type and appearance easier.
DI-Guy for Vega Prime 10
Version 10.0.4
- Initial release compiling with vp 3.0.
Version 9.1.2
- Added support for turning on DI-Guy AI from vpDiguySettings UI. DI-Guy AI functionality is limited inside of Vega Prime
- Added support for turning on Lua scripting module from the the UI.
- Fixed long standing issue with character's having link offsets applied multiple times. (Also in 9.0.4)
DI-Guy Networking
Version 9.1.6
- Fire PDUs position should now be the muzzle of the gun, the entity type should match the munition type fired, and the velocity should be the normalized direction of the muzzle.
- Fixed issue where agents on non-flat terrains were sending erroneous z values.