HeroEngine Sapphire
From HEWIKI
Release: HeroEngine 2
Codename: Sapphire
Internal Branch Version Base: 2.0
Release Dates: November 2012
Notes
This release requires client graphics device support for Direct3D Shader Model (SM) 3.0 or higher.
Major Feature Summary
The following is a list of major features expected to be included in this release and is not a guarantee of the availability of the feature in the final release.
Middleware
- Awesomium web-ui integration
- SpeedTree 6.0
- XInput for gamepad, joystick, steering wheel, etc input support
Graphics
- High Dynamic Range (HDR) rendering
- Custom, configurable shader support
- Improved default shadows (which you can always rewrite completely)
- FreeType font support
- Whitebox world layout tools Whitebox Layout Tools
- Support for non-HeroMaterials in Max and Maya
- Performance improvements
- Faster shader loading, and improved support for local shaders and editing
- Material Instances
- Nvidia 3DVision stereo video support
- Correct color support for sRGB textures, linear color space calculations
- Autodesk Max 2013, Maya 2013 support
- New GM Notes drawing functions including lines, circles, squares, and polygons
- .RAW 8/16/32 is the default terrain import format (Leveller is still supported)
Client / Editor / Server / Tools
- New HeroBlade UI / UX
- New Repository Browser UI
- Fine-grained account permissions and permission groups
- Localization
- Automated server package application
- Overall client performance improvements
- Large address aware client, and certain server processes
Scripting
- New render panel options exposed through HSL
- Foundation Framework: Lobby System
- Foundation Framework: Social System
- Foundation Framework: Chat System
- Foundation Framework: Item System
Obtaining the Release
- Source or object licensees contact your support list
- HeroCloud users stay tuned for deployment announcement
HSL and Foundation Framework
Behavior Changes
- Due to changes in the Windows API for cursors, the SetCursor() external function no longer accepts offsets. The appearance of a cursor offset can be accomplished by changing the cursor art.
New Features
- HSL functions to enumerate fullscreen and window multisample modes and quality levels, and function to get and set the mode and quality level
- GetFullscreenMultisampleModes: list of pairs of valid multisample modes and quality levels
- GetWindowMultisampleModes: list of pairs of valid multisample modes and quality levels
- bool SetMultisampleMode(int dwSamples, int dwQuality): sets the current multisample mode and restarts the graphics device
- GetMultisampleMode: returns a pair which is the current multisample modes and quality level
- DynamicSkyColorBlend is a new float property on MirrorNodes.
The default value is 0, which renders as before.
If dynamic sky is enabled, as the value increases toward 1.0 the water's color blends toward the color of the sky at its zenith. (The alpha value of the DiffuseColor property is still used to determine the strength of the color tinting vs. the cubemap.)
If dynamic sky is disabled, has no effect.
- New External Functions Raycast3D_ListMeshes, RaycastMouse_ListMeshes, RaycastFromScreen_ListMeshes (140362)
Enhancements & Corrections
- The BOLD RED "You have been disconnected" message has been changed to scale according to the viewport size and be centered at the top of the screen.
- Added in edit header GUI to add and customize headers for spec oracles
- Strengthen the error checking in _CSSFixAccountCharacterList (by way of _GetRootNodeChildren) to properly remove partially-created characters from an account during character selection
- Fixed a bug in HE_ControlPanelClassMethods which prevented World Server (area 0 instance 0) system node instances from being properly updated upon addition/removal of a class
- Fixed a bug in _TravelDataClassMethods:_ProcessTravelQueueFailure which threw a script error when an area failed to spin up due to the world being over the prescribed area_count limit
- Fixed a bug in _TravelDataClassMethods:_RequestTravelAreaSeamlessLinksForArea in which seamless links could be incorrectly reported to newly spun-up area instances
- Adjusted HE_WorldPropSpecOracleClassMethods to properly write out prop specs to the repository on initial world load (this fixes script errors in which props that have a client-side component may fail to download/load their specs from the repository)
- Added clarifying tooltip to the fxEventPropertyPanel_v2 GUI's child CheckDynData control and fixed a typo in the name of the Start_IF control
- Fixed a logical error in SpecOracleClassMethods::_getAllSpecsForIndices; passing "undeleted" or "-deleted" now properly omits deleted specs
- Added _PROPS system node to the HEControlPanel listing for client and server
- Abstracted 'AssetSpecReady' callback for props to allow all decorators to respond to the callback with '_OnAssetSpecReady'
- Fixed a bug in _CharacterSelectionClassMethods which prevented overriding the _CSSDeleteCharacter method
- Fixed an incorrect reference in _CharacterCreationClassMethods::_CCSSelectStartingAreaInstance which used to point to $CHARACTERSELECTIONSYSTEM to now point to the correct system node: $CHARACTERCREATIONSYSTEM when determining whether an HE_ override is present
- Fixed an typo in BaseSpecClassMethods::OnCreateNotifySpecDeocratorClasses which incorrectly called BaseSpecClassMethod::OnInstantiationFromSpec twice
- _GUINodePropertyEditorCellTextInputBox checks for invalid data for vector3, TimeInterval and DateTime field types
- Added _StateRootAssoc association definition to fix script error in _StatesClassMethods' _GetStatesRoot method
- Fixed the GUIEditor generating alphamask xml incorrectly in some situations
- Added _OnPropFieldUpdated to prop classmethods scripts to relay field updates to glommed classes
- Fixed a bug where seamless travel would not remove players from edit command queues when leaving an area, which resulted in recent changes not being delivered to the client upon reintroduction; the fix now correctly removes and reintroduces players from edit command queues as necessary
- Fixed a potential error with ObsListener::GetMySubject on the client/sever. This method will now throw an error if the listener has more than one subject. Added in a new method Named GetMySubjects if your listener may have more than one subject.
- Fixed bug in the server-side obsListenerNodeClassMethods script in which a script error would occur if the callbackNode had been deleted inside its EventRaised method
- Fixed bug in CharDriver _DriverAddPointsWithEndRotation so it now properly calls the correct HE override method
- Fixed bug with the SpecEditor where it now will let you submit changes to specs when lookuplists are present in the spec
- Removed incorrect usage of args.MouseTarget in _InputHandlerClassMethods:BuildContextMenu. This is a behavior change for HeroicMouseEvents that expect args.MouseTarget to have a valid ID. If it still desired to have this functionality use the HE_ServerMouseEvent override to add in the target for args.MouseTarget and send the additional message.
- Fixed Bug 140208: Sound system node cannot be overridden by game-specific code
- Behavior change: HE_TravelFailure() on $Travel system node: HE_TravelFailure() now returns a boolean to allow clean engine code to be processed if HE_TravelFailure() is present on $Travel
- Fixed spelling error in the alert window when editing clean engine GUI controls
- Added in HE override for _OnClientWindowFocusChange
Deprecated Functionality
- HSL Decal system functions: CreateDecalFunc, ReleaseDecalFunc, ClearDecalsInBoxFunc, ClearDecalsSpecFunc
- A number of graphics option switches have been deprecated, valid options can be listed using the external functions to enumerate them
HeroBlade Editor and Client
New Features
- Awesomium web-ui integration
- SpeedTree 6.0
- XInput for gamepad, joystick, steering wheel, etc input support
- High Dynamic Range (HDR) rendering
- Custom, configurable shader support
- Improved default shadows (which you can always rewrite completely)
- FreeType font support
- Whitebox world layout tools
- Support for non-HeroMaterials in Max and Maya
- Performance improvements
- Faster shader loading, and improved support for local shaders and editing
- Material instances
- Nvidia 3DVision stereo video support
- Correct color support for sRGB textures, linear color space calculations
- Autodesk Max 2013, Maya 2013 support
- New GM Note drawing functions including lines, circles, squares, and polygons
- .RAW 8/16/32 is the default terrain import format (Leveller is still supported)
- New HeroBlade UI / UX
- Fine-grained account permissions and permission groups
- Localization
- Automated server package application
- Overall client performance improvements
- Large address aware client, and certain server processes
- Integration of password reset and news web views for heroblade and player client
- "Bypass Distance" checkbox on Grass tab of terrain panel
- Third party logos are now displayed on service directory login UI
Enhancements
- ALT+Enter displays property panel
- SpeedTrees won't drop to billboard level if they are tilted more than a little bit.
- Minor adjustment to SpeedTree LOD distances
- "Bright Light" debug mode ('B') also temporarily disables HDR
- Removed DreamManager HeatPicker
Sapphire.e: Enhancements
- HSE CTRL+F4 closes the active script
- HSE CTRL+SHIFT+F4 closes all scripts
- HSE panel tabs are color coded based on their usage: GUIXML == green, Client == blue, Server == golden
- slight performance increase in HDR due to changing technique from using string to handle
Corrections
- fix: The last line of gamekeybindings.ini is ignored
- fix: script error panel to color code client errors vs. server errors
- fix: AmbientColor & DiffuseColor correctly default
- fix: GUI Editor color picker no longer displays invalid timeline options
- fix: Terrain panel dynamic details now all types flash when selected
- fix: Asset Library, right click Grab Selected now asks to Name the Prefab/Content
- fix: HSE Space in Regular Expression works
- fix: Save all open scripts invalid shortcut
- Material/texture refcount fixes
- Fixed foreign language character processing of FQN names during repository compare. (BugzID: 846)
- Fixes for various Unicode string issues
- Library/Repository menu items on HeroAssetGrid are active on all leaves of the tree
- Fixes to various minor renderer artifacts
- Safety check for excessive triangles returned by character controller collision
Sapphire.a: Corrections
- fixed: Cloud rendering could leak system RAM and GPU RAM
- fixed: miscellaneous crash reports
Sapphire.b: Corrections
- fix: Move Instance error caused by IsPlayerUsingEditClient in remote area script errors
- fix: Incorrect timeout message when logging in with invalid password
Sapphire.c: Corrections
- fixed: Backface culling was set to NONE by dynamic sky rendering. this could cause terrain or other objects to incorrectly render
- fixed: LargeAddressAware flag is correctly set on all HeroBlades and player clients
- fixed: terrain import errors & dpvs recalculation
- fixed: crash 1427 (device lost with GUI-linked billboard nodes)
Sapphire.d: Corrections
- fix: dream manager: drag & drop user causes crash by removing incorrect drag & drop functionality (1430)
- fix: HSE task list not correctly marked as a tool window, which could cause it to behave incorrectly
- fix: HSE options are correctly saved and restored
- fix: tool windows could be incorrectly maximized (dock == fill) under some undocking circumstances
- fix: tool windows can only be tabbed with other tool windows, and regular windows can only be tabbed with regular windows
- fix: HSE if the last window closed is a tool window, it no longer causes shortcuts to stop working without a form focus change
- fix: many physics-related crashes on client
- fix: saving HSE attributes no longer warns when overwriting the previously saved value
Sapphire.e Corrections
- fix: potential d3dx compatibility issue with Large Address Aware memory addressing
- fix: HSE workspace window docking was corrupted, which would mean that resizing / maximizing the window could fail in weird ways
- fix: mismatched suspendLayout without resumeLayout in window resizing could cause weird issues
- fix: issue resizing panels below other panels
- fix: resizing panels can no longer be “outside” the parent workspace
- fix: resizing panels can no longer collapse adjacent panels as they now have a minimum width / height
- fix: if a panel container is being resized and application focus changes, the resize is abandoned
- fix: vertically stacked panels would incorrectly resize
- fix: size issue when docking panels overwide or overtall vs the docking edge
- fix: viewport window is not resized / reset until end of panel resizing operation. this fixes a performance issue, and potential crash
- fix: potential crash closing the active panel when exactly 2 panels were open in a single tabbed container
- fix: missing HSE context menu is now correctly displayed. what was being displayed was some weird default menu
- fix: if a panel prefers to float, but the user has saved it as docking, the user’s preference overrides the default float ability when loaded. this resolves an issue loading UI layout, e.g.: the DOM editor is docked
Player Client
This section includes Player Client specific changes. General client changes are listed above under HeroBlade
New Features
- New default modern, game-agnostic UI skin
Enhancements
Corrections
Client Tools
New Features
- New Repository Browser UI
Enhancements
Corrections
- Fix: clicking in the local file area with nothing selected no longer displays context menu
- Fix: Local path will get confused and show multiple directory delimiters at the root, e.g.: E:\\foo
- Fix: when dragging and dropping, the target directory highlight doesn’t reflect the actual drop target. it appears to randomly choose something else
- Fix: dragging and dropping a directory structure into the repo does not prompt to replace / update existing file(s)
- Fix: UI "forgets" about all the undeleted sub-dirs that still exist when a sibling is deleted
Server Processes
New Features
- Authentication system 2.0
- Game localization support
Enhancements
- Specific server processes are now large address aware
Corrections
- Physics improvements
Sapphire.d: Corrections
- fix: many physics-related crashes on client and server
Server Tools
New Features
Enhancements
Corrections
Source and Object Notes
Database