HeroEngine Quartz
From HEWIKI
(Difference between revisions)
(→Corrections) |
(→New Features) |
||
Line 54: | Line 54: | ||
*New: Timers now have an additional field 'timerTimeSource' for using local or server-coordinated time. This corrects an issue where client side timers could pause if the estimate for elapsed coordinated time was less than 0 when latency was very high. Default is coordinated time for compatability. | *New: Timers now have an additional field 'timerTimeSource' for using local or server-coordinated time. This corrects an issue where client side timers could pause if the estimate for elapsed coordinated time was less than 0 when latency was very high. Default is coordinated time for compatability. | ||
*New: New builtin method on timers for setting the time source 'SetTimeSource'. | *New: New builtin method on timers for setting the time source 'SetTimeSource'. | ||
+ | *New: Corresponding client HSL scripts have been updated to use the new time source where appropriate. | ||
*New: HSL intellisense updated for added timer method and field | *New: HSL intellisense updated for added timer method and field | ||
*new: auto logon option on login UI | *new: auto logon option on login UI |
Revision as of 14:23, 25 March 2014
Release: HeroEngine 2.5
Codename: Quartz
Internal Branch Version Base: 2.5
Release Dates: March 2014
Notes
Quartz is a major inter-release update to HeroEngine Sapphire. This release includes a number of major feature, functionality, and performance changes and improvements.
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
- Granny 2.9.23.0
Graphics
- Autodesk Max 2014 and Maya 2014 support - HeroEngine Art Pipeline 2014.1
Client / Editor / Server / Tools
- Dream Manager 2.0
- All client tools now support localization of all UI text
Obtaining the Release
- Source or object licensees contact your support list
- HeroCloud users stay tuned for deployment announcement
HSL and Foundation Framework
Behavior Changes
New Features
Enhancements & Corrections
Deprecated Functionality
HeroBlade Editor and Client
New Features
- new: Autodesk Max 2014, Maya 2014 support
- new: HeroScript editor Compile All open scripts button
- New: Timers now have an additional field 'timerTimeSource' for using local or server-coordinated time. This corrects an issue where client side timers could pause if the estimate for elapsed coordinated time was less than 0 when latency was very high. Default is coordinated time for compatability.
- New: New builtin method on timers for setting the time source 'SetTimeSource'.
- New: Corresponding client HSL scripts have been updated to use the new time source where appropriate.
- New: HSL intellisense updated for added timer method and field
- new: auto logon option on login UI
- new: Debug Logging option on login UI
- new: Dream Manager 2.0
- new: HeroScript Editor task list now include script name, and, if applicable, messages from multiple scripts
- new: room creation UI option to select whether selected instances should be moved into the new room (default: true)
- new: HeroScript Editor was now saves and restores UI layout. previously, it was only using the framework as a docking manager. %APPDATA%//Local//%CLUSTER%//HSE2uilayout.xml
- new: context menu function to copy console output to the clipboard
- new: as the conversion of an HGM mesh, skeleton, or animation file from an older version to the current version on load can incur a potentially large performance penalty, these cases are now logged out to the HeroBlade error window. if necessary, the hgmupdater.exe command-line utility available in the 2014.1 art pipeline package can be used to convert and compress older files to the latest format
- new: as the conversion of non-pow2 sized DDS textures causes a performance penalty, these cases are now logged out to the HeroBlade error window. while this can also be a problem for non-DDS textures, non-DDS textures should only be used for UI, and should therefore comprise a far smaller subset
- new: HeroScript Editor task list now has per column sorting
- new: HeroBlade, Repository Browser, and Master Control Console now support localization of all UI text
Enhancements
- change: max graphics update frame rate is now 125 fps (vsync effective 120 fps), because there’s no reason to run the graphics update any faster, and it will improve overall threading and system load and performance. simulation
- change: selected tabs are now LightSteelBlue instead of GoldenRod
- change: Area panel: combined Rooms and Room Visibility tabs
- change: floating panels now save their screen so it can be validated against position on load
- change: selected objects in the active room are boxed in yellow. selected objects in other rooms in the active area are boxed in teal. selected objects in other areas are boxed in red
- change: Area Panel “Outdoors is visible” to “Show Areas Sharing Environment Scheme”
- change: selected regions are now rendered as translucent cubes based on their color
- change: selected triggers are now rendered as blue translucent cubes
- change: selected pathfollowers are now rendered as teal translucent cubes
- change: alpha blended materials no longer automatically make a mesh non-collidable. this addresses the case where a mesh has a combination of non-alpha blended and alpha blended materials. collision, or lack thereof, is driven purely by the collision or node type
Corrections
- fix: organizer drag scrolling is faster if closer to the top/bottom
- fix: reworked dialog for confirming area interlink for visual consistency & allowing for larger numbers of areas
- fix: physics data does not continuously update while scaling with the bounds gizmo anymore, only when complete
- fix: organizer multiselect behaves correctly with the shift key, instead of identically to the control key
- fix: set manual flag which allows for editing a label of a treeviewnode within repository browser and reset the flag after editing. Addressing crash 2686.
- fix: crash in GetNodeMaterialList() when called with invalid node (2694, 2695, 2696)
- fix: pathing should not early-out at short distances when simple direct test fails
- fix: camera behavior for OVERHEAD camera.
- fix: issue with path follower path rendering
- fix: camera false triggering issue
- fix: heightmap nodes snap to full resolution grid (.2 units) regardless of their resolution
- fix: bug that killed wireframes when anything else was using a "dim" effect.
- fix: VirtualStage crash while minimized
- fix: additional check for device ready on unminimize before allowing texture/model loads
- fix: safety check vs. bug 2731 (crash while rendering asset library tabs)
- fix: improved consistency in dynamic texture bank names
- fix: Added null check for crash 2752 when selecting things in the materal instance window.
- fix: when closing all scripts the history panel and functions and methods panel will clear themselves out.
- fix: stitching between heightmap nodes with different resolutions
- fix: GoToSelection across seamless boundaries
- fix: auto-generated enviro schemes Area and Water are written to the server when created
- fix: gui editor buttons that should not have been enabled were, they are now correctly hidden again
- fix: empty animation sequence name bug
- fix: Corrected Issues with fonts loaded from the repository
- fix: corrected bug with word wrapping and fonts while the player client was maximized.
- fix: inserted a NULL check around the GlobalPropBucketManager to help armor against bug #3128
- fix: HeroScriptError exception not being caught when function is not found in a script
- fix: function MaterialInstanceProperties.DisplaySelectedMaterialInstance to fix exceptions thrown when failing to parse a number
- fix: corrected bug with the heightmapgrid window not being movable.
- fix: null reference in PanelManager and condensed/removed unnecessary code
- fix: correct root path when changing local path
- fix: potential fix for the populate glyphs bug
- fix: Shutdown is no longer re-entrant causing a crash
- fix: Shutdown now correctly triggers Heroblade itself to cleanly exit
- fix: modified HeroBlade form closing code to integrate with the main update loop in order to fix a race condition between the two which resulted in a hang or crash on exit. Form closing is now automatically a two-stage process that integrates the signal to shutdown with the update loop handling.
- fix: stackoverflow on GUI error message caused by an opening { tag without a closing one. Fixed by santizing the error message and removing the '{' from the message
- fix: HeroBlade: asset type handling function was using incorrect casting on argument to determine what it was actually handling. also added bullet proofing to detect any actual issue in the future and prevent exception
- fix: HeroBlade: elapsed frame time is used to handle things like camera movement. this value was was hardcoded to fix some old bug which I cannot replicate; however, i assume this was probably due to choppy frame rate. this has now been fixed to smooth the elapsed frame time over the last n frames (currently, n = 30)
- fix: HeroBlade: elapsed frame time was min 0.001f only if NaN. It’s now also min 0.001f if the returned value is < 0.001f
- fix: HeroBlade: main loop re-uses multiple data arrays every frame instead of allocating / gc-ing every frame
- fix: render target and depth stencil textures are no longer reported to the texture manager on destruction, preventing a false error message
- fix: Scripts that are deleted are shown in teal in the pick list
- fix: if you change your display layout or resolution between saving a layout or restarting, you could end up with a window that was 1 pixel onto the edge of your display, making it impossible to grab and move. if more than half the window isn’t on the display, we move it over so it is
- fix: if you changed monitors or the screen name changed between saving a layout or restarting, you could end up with incorrect window position or layout. we now validate against all monitors if we can’t find the one we expect
- fix: if the window is maximized, we just check to make sure the monitor is valid instead of wasting time on validating positioning information
- fix: if the window has been resized very small, which could happen due to driver change, etc, just maximize the window on restore
- fix: MIP debug texture was incorrectly locked before being filled by a separate api code path. i have no idea why this doesn't fail all the time way down deep inside the api, and it probably screws up silently without warning
- fix: added additional safety code to attenuation map fill function because the output mapping from the channel we expect to use (alpha), to the channel that is used for input into the texture is not documented. replicate the same value to all channels ensures that we always pickup the correct value
- fix: restored pictureHELOGO_DoubleClick handler in firestorm login to support debug logging during logon process. this had been inadvertently clobbered during the UI reskinning
- fix: added exception handler for invalid firestorm.net login info
- fix: firestorm.net minor control alignment issues
- fix: attenuation volume map exceeds 1.0 for some number of values. changed from single channel u8 which was clamped to single channel float16. This fixes an issue with hair rendering
- fix: adapter display modes are now correctly returned
- fix: hidden light updates have a costly DPVS and visibility update
- fix: MaterialBucket::AddRenderNode has a combinatoric loop that was called even if a light was hidden
- fix: #ifdef’ed some light count info so it only impacts HeroBlade
- fix: error reloading modified local shaders due to incomplete local path
- fix: local shaders are now automatically reloaded if changed
- fix: organizer folder icons
- fix: memory leak in determination of mesh file type
- fix: multiple memory leaks processing and handling mesh files
- fix: crash double-loading mesh file info
- fix: under high latency, shader code that required compilation could be duplicated due to multiple inflight server requests. this would cause the shader to fail to compile
- fix: issue in node base where even though it didn’t have a parent, or the parent was removed, parent instance wasn’t initialized correctly or cleared
- fix: node “frame last visible” was not correctly initialized. this could lead to extra processing / visibility, or to inadequate processing / visibility
- fix: initial terrain painting states could be wonky
- fix: base shader permutation key wasn’t initialized. this could cause an error in determining whether a shader permutation key had been created
- fix: depending on visibility order and/ or garbage collection due to materials eventually being evicted: 1) regular shader might be called instead of custom shader, or 2) custom shader might be called instead of regular shader, or 3) some effects may think they need to be created when they already exist
- fix: rewrote the local shader directory monitoring code (again) to be more robust by moving to a manually driven low level win32 overlapped IOCP interface, instead of using the event-based high level win32 interface that is prone to not working
- fix: detection of special hair effect came after general setup of effects
- fix: Keybinds for main menustrip were also interpreted by input system
- fix: Main menustrip alt+(key) is not underlined because we only support Alt+Enter (show property window) and Alt+F4 (close)
- fix: Dynamic detail textures/models page was referred to as 'Grass' in terrain panel. (also fixed the internal variable naming)
- fix: camera speed control and movement now uses smoothed frame rate instead of instant frame duration
- fix: camera speed control no longer uses magic numbers or coincidental values, and is now controlled by min and max of the UI control itself
- fix: slowest camera speed is now higher, and highest camera speed is higher still
- fix: there is no longer an issue with consistency of camera speed, as the value is stored and updated atomically through the UI control, and no longer shadowed
- fix: asset library now uses new art for folders
- fix: asset library now has an icon for assets
- fix: asset library tree would show open folder if the folder contained no sub-folders, regardless of it’s open state
- fix: asset library tree could become confused with regards to whether the entry was a folder or asset entry
- fix: asset library tree folders vs items are now differentiated based on the existence of a valid fqn
- fix: HeroScript Editor Toggle Bookmark now correctly named Add Bookmark
- fix: scene analysis panel: removed old options section
- fix: scene analysis panel: move display of textures below list of textures so it’s more intuitive than being above the list of textures
- fix: scene analysis panel: laid in splitter panels so you can resize each section as desired
- fix: add library dialog tab order fixed
- fix: add library textbox now defaults to active control
- fix: asset library: instead of telling you that the you tried to create a library that already existed, it was logged out to a file
- fix: asset library: you can no longer create duplicate categories, and are given an error message
- fix: asset library: add library name is trimmed, and checked for being non empty/null
- fix: new script naming dialog is titled based on the type of script / XML you're creating, so you're not like, "where am i? how do i work this?"
- fix: animation control buttons were at the edge of, or slightly beyond, the panel they were contained in
- fix: animation panel: fixed ui settings and added a base panel in order to fix issue where scrollbars wouldn’t appear when it exceeded the size of its visible container area
- fix: Asset Library “Edit Note” is only active when you have a single asset selected
- fix: Asset Library option is now called "Add Top Level Category" to indicate that you cannot nested categories
- fix: asset grid is no longer hardcoded to put the Particle root into the tree if it’s filtered out
- fix: Area panel label text color was incorrect
- fix: Area panel wouldn’t create scrollbar if it exceeded its container size
- fix: tore out and re-implemented particle creation sub menu to fix some weird C# /resx bug
- fix: HeroScript Editor task list columns are correctly labeled and spelled out
- fix: HeroScript Editor errors are no longer stored on a per script basis and swapped into the task list. the task list now stores the errors themselves, and the script clears them when re-compiled or closed
- fix: multiple fixes for room, environment scheme, path creation, and other places where string input could have trailing whitespace
- fix: null exception in panel manager loading panel that’s not found / valid
- fix: shader builder IOCP handles not initialized to invalid (or valid) if you started up and closed HeroBlade without logging in
- fix: loading fallback for invalid HeroBlade window placement made the window the size of the display, but not truly fullscreen
- fix: if a floating panel was on a display that was resized, or display that was removed or changed, it could appear offscreen. it now is placed on the primary display
- fix: terrain texture layer texture layer UI no longer gets in a weird layout state. takes advantage of whatever height the panel is instead of being restricted. can be resized and will automatically display scrollbars if needed
- fix: terrain panel: remove crazy scrollMePanel and replace with correct settings
- fix: terrain texture layer Remove texture button would incorrectly update its state if it did remove a texture
- fix: HeroScript Editor task list could fail setting focus to a script with an error because it didn’t go through the docking manager
- fix: water/mirror selection box could be double transformed, resulting in incorrect placement
- fix: water translation gizmo scales correctly
- fix: rotate gizmos not drawing correctly, setting duplicate render states, incorrect values
- fix: cleaned up gizmo translate render, removing dead world setTransform
- fix: rotate gizmo now scales with distance like other gizmos. previously, it could also “pop” in size after rotating
- fix: rotate gizmo could generate NaN’s
- fix: rotate gizmo no longer has a max distance in which it can be used, so it now works like the other gizmos
- fix: potential crash cleaning up allocated nodes in world layers since the loop logic could use a stale iterator
- fix: if the granny mesh cannot be loaded due to corruption or being a version newer than what’s supported, a NULL pointer is passed back to prevent crashing
- fix: dynamic detail nodes are now cleaned up when the owning terrain is destroyed. previously, they were placed in a broken, unbounded pool, in an attempt to reuse the allocated nodes
- fix: particle pool is appropriately purged with other systems in AreaSpec::Purge
- fix: if you dock wider / taller a panel with a group that is thinner / shorter, it will resize the group so you don’t have to then do it yourself
- fix GUI Editor Start Dialog: Class selection drop down box populates the items list on open instead of instead of only on list box drop-down
- fix GUI Editor Start Dialog: Resized controls to provide slightly more white-space on either side
- fix: GUI Editor Panel: re-did the way that the popup GUIXML organizer populates its data so that the filtering of the main organizer does not effect it
- fix: HSE Intelliprompt: Crash on uncaught exception when intellisense is querying the DOM for information about the field and the field gets removed be another user elsewhere (#3664)
- fix Interlink Confirm Dialog: changed \n to \r\n so that the area names would be separated by a new line.
- fix: material instance UI updated with a number of usability and bug fixes
- fix: path panel buttons update only once when selections change, preventing race conditions with event dispatch on button press.
- fix: path panel buttons properly change their enabled state when paths and waypoints are selected, deselected, added or removed.
- fix: multiple custom / override material fixes
- fix: a custom material could override the same material on another object
- fix: an overridden material is now only setup if changes are actually made to the base material
- fix: potential leak of overridden materials
- fix: multiple fixes to custom shader loading and handling
- fix: physics, waypoint, particle, lightning, and flare node selection weren’t rendered using seamless transform
- fix: improved mesh, skeleton, etc loading error and warning messages
- fix: if you log on again, the world list is cleared to remove any confusion or stale data
- fix: reloading a granny skeleton (even if it’s wonky) will no longer crash due to an existing skeleton being in use
- fix: physics are properly generated when objects are loaded for the first time. This also corrects physics not being generated on the client correctly at all when using the 'build and publish' and 'test build' buttons in the physics panel.
- fix HeroAssetGrid: Children no longer filtered out when selecting assets
- fix output the message to let the user know a file failed to retrieve due to its size
- fix: scene analysis panel no longer defaults to really long, and now has a scrollbar if needed
- fix: Create Particle dialog is now moveable, and no longer appears in the taskbar
- fix: Paths panel: when you add a new waypoint, it’s now scrolled into view
- fix: Paths panel: now contains splitters and such so you can resize the sections
- fix: New HeroScript Template dialog: now has title and is moveable
- fix: New HeroScript Template dialog: fixes layout and adds titles
- removed: no longer applicable MIP bias from Render panel
- fix: creating a path new also displays the Paths panel
- fix: scale gizmos and translate gizmos could stop scaling
- fix: adding a new library to the asset library initially has the wrong icon
- fix: trigger node and pathing node selection no longer change the look of the whole screen
- fix: cloud layer selection is now always there. previously, it could be selected and active, but not highlighted
- fix: region nodes no longer cause fullscreen color issues
- fix: region, path follower, and bone tracker nodes now respect render filter flags
- fix: when creating a new HeroScript, the description is now persisted; and, displayed in history, etc
- fix: animation sequence change and problem listboxes had invisible entries
- fix: faces of selected regions and trigger nodes are rendered with their main color. their edge colors vary based on active room, active area, or other area
- fix: particle spec now says “MESH”, instead of “GRANNY”. although, “GRANNY” is still maintained internally for backwards compatibility
- fix: terrain panel texture “Remove” button is now correctly enabled when the last texture you clicked on was the default texture
- fix: particles are now correctly influenced by the environment scheme in the room / area of their emitter, and not the environment scheme of the active area
- fix: chat "find" selection set to chat window default colors for unselected text
- fixed AssetLibrary: removed duplicate code/ensured that the library gets saved out to maintain the removal of a category
- fix: incorrect transform caused dynamic detail meshes not to render across seamless boundaries
- fix: incorrect distance culling calculation caused dynamic detail meshes not to render across seamless boundaries, and/ or to fade out too quickly
- fix: Node::GetSeamlessInverseTransformWithoutScale wasn’t actually seamless
- fix: prevent duplicate nodes from being placed on the world layer list
- fix: resizing the left or top of a panel no longer activates docking
- fix: floating panels cannot be resized smaller than their titlebar
- fix: more advanced panel resizing logic to address issues of “am i resizing?” vs “am i moving?”
- fix: it was possible to dock a panel to an invalid docking point
- fix: terrain panel tab highlighting now uses custom color setup and highlights tabs correctly
- fix: potential crash drawing custom tabs on terrain panel
- fix: all tab controls everywhere now use custom rendering
- fix: dynamic detail billboards could be clipped or fade too fast
- fix: when a player seamlessly transitions to a new area, clients that are no longer visible to that area are properly unsubscribed from replication.
- fix: floating panels now have their initial size and location cached off so they don't automatically enter docking when they are created
- fix: you can run on hidden terrain across a seamless boundary. this should also resolve some number of other issues involving hidden assets not loading physics
- fix: all physics actor initial data is now initialized to zero
- fix: a number of physics singleton factories weren’t wrapped correctly, and could be called while being null
- fix: duplicate / namespace-specific copies of game scale and inverse game scale could get out of sync
- fix: removed / variant duplicate math functions and constants so physics is more consistent with other systems
- fix: Field types unsuitable for replication (such as Timers) are now no longer allowed to have replication-related data changed through the CLI or DOM Editor.
- fix: When a player enters an area seamlessly, the area edit command queue subscription flag is carried over from any preexisting reference server player object to the new authoritative object
- fix: HeroBlade UI layout and rendering issues on Korean and other Asian Windows versions
- fix: HeroBlade UI layout and rendering issues due to Windows control panel scaling changes
- fix: ungrouped, individual panels were saved by title instead of internal name. this could cause a failure to find the panel when reloading
- fix: login UI relied on magic button text to allow world login
- fix: Environmental scheme blending now appropriately renders across seamless bounds for areas that share one or more common global environmental schemes.
- fix: Environmental schemes now appropriately preserve 'time of day' and 'time of day delta' when transitioning seamlessly or non-seamlessly.
Player Client
This section includes Player Client specific changes. General client changes are listed above under HeroBlade
New Features
Enhancements
Corrections
- fix: The player client now handles ALT key combinations
- fix: login UI was way larger than displayed background, even though it was automatically resized
- fix: added owned device context flag to prevent issue with incorrectly drawn or missing windows elements
Repository Browser
New Features
Enhancements
Corrections
- fix: overlap at the bottom of the file transfers window in Repository Browser
- fix: crash(2741) when copying files via drag and drop and then attempting to copy files before that finishes.
- fix: settings window is movable again
- fix: settings window is slightly larger to correct some text being cut off.
- fix: Local Directory button is no longer cut off
- fix: The pause buttons for downloads and uploads are no longer cut off
- fix: The pause/play icons have been updated to match the new color scheme.
- fix: The max uploads slider has the proper range, 20, now
- Fix: files in the repository list will have the correct colored background
- fix: if you change your display layout or resolution between saving a layout or restarting, you could end up with a window that was 1 pixel onto the edge of your display, making it impossible to grab and move. if more than half the window isn’t on the display, we move it over so it is
- fix: if you changed monitors or the screen name changed between saving a layout or restarting, you could end up with incorrect window position or layout. we now validate against all monitors if we can’t find the one we expect
- fix: if the window is maximized, we just check to make sure the monitor is valid instead of wasting time on validating positioning information
- fix: if the window has been resized very small, which could happen due to driver change, etc, just maximize the window on restore
- fixed: the button to work correctly with both uploads and downloads (the button doesn't acutally "show full path" it merely swaps the values from the first and fourth subitem for the list view item)
- fixed: drag and drop from local file view to local file view to just do nothing instead of erroring out when trying to copy
- changed: removed message box from popping up when attempting to copy repository file view to repository file view (seemed a little ridiculous to pop up a box for that)
- fix: Open With on repository files could cause a crash
- fix: repository tree and file view windows fully cleared when logging out of a server, or into a new or different server
Server Processes
New Features
Enhancements
- change: Renamed the server-side HeroScript EditorI API's dll loading methods to accurately reflect the documented/published API (e.g. was 'getInterface'/'releaseInterface'; now is 'getHSLInterface'/'releaseHSLInterface').
Corrections
- fix: DudeServer Crash caused from attempting to report a replication error on a node when the the node was associated with the ReplicationReciever that uses the ClientTracker since there is no GOM present for that particular receiver
- fix: physics crash due to bad cooking data
- fix: corrected typos with internal error messages
- fix: debug memory allocator correctly returns values for calloc
Master Control Console
New Features
Enhancements
Corrections
- change: Added tracking for when users connect/disconnect. Connected users can be seen with the show users option from the view menu.
- change: When issuing a shutdown the connected users will be displayed as part of the warning message
Source and Object Notes
Database