Xenko Engine, previously known as Paradox, just released beta 1.6. If you are unfamiliar with Xenko, I have done an in-depth tutorial series here. This release brings quite a few updates, so let’s jump right in.
Updates to Xenko 1.6 include:
addition of prefabs enabling reusable content easily
archetypes, essentially create new objects using the traits of another object
particles can now be created directly in Xenko editor
curve editor inside Xenko studio (currently particle only)
new graphics engine.
experimental Direct3D 12 support
improved OpenGL support
scripts are now components
event system for communications between scripts
game settings improvements
Plus several smaller changes, fixes, etc:
Enhancements
Assets
Engine
The KeyedSortedList now implements ICollection<T> instead of IList<T> and is more consistent with CollectionDescriptor.
Game Studio
Support for prefabs, add a prefab editor
Create derived assets and support property inheritance
Added a curve editor to edit animation curve
Layout is saved on a solution basis. When reloading a project, Game Studio will try to present the same layout and reopen all assets that were edited (this include scenes, prefabs and sprite sheets).
Add a confirmation dialog to enable saving newly created script automatically.
Add a confirmation dialog to enable reloading modified assemblies automatically. This is necessary for the script to appear in the list of components that can be added to an entity.
Physics gizmos are shown by default.
Preview of an asset can be displayed even if this asset is being edited.
Project folder can be opened in Windows explorer from the launcher with right-clicking.
Properties of derived asset are displayed in gray, unless they are overridden. In this case they are displayed in bold.
Rework scene initialization in the scene editor: the scene will be available almost immediately, and content (model, etc.) will be streamed in as soon as they are (asynchronously) loaded.
The entity fixup wizard has been removed. Now when an entity is deleted, all references to it or to one of its component is reset to null.
The gizmo and camera menus are now displayed in the top-right corner.
Entity hierarchy is synchronized (automatically expanded) with the selected entity in the scene.
Graphics
New D3D12 renderer (experimental)
New Windows OpenGL and OpenGL ES renderers (experimental)
Rewrote most of the low- and high-level graphics code to have better performance and better take advantage of new graphics APIs
Properly separated rendering in 4 phases: Collect (collect & cull), Extract (copy data from scene to renderers), Prepare (prepare cbuffer data & heavy computations), Draw (emit draw calls)
Introduced concepts of RenderFeature (entry point for extending rendering), RenderStage (effect selection), RenderView and RenderObject
Render sorting logic can now be customized (culling will be soon too)
Low-level API has been rewritten to match better new API: CommandList, DescriptorSet, DescriptorHeap, PipelineState, etc.
Introduced concept of RendererProcessor which are responsible for pushing component data to rendering
Many other changes, that will soon be covered in documentation
Input
Improved GamePad event management to resemble the keyboard API.
Issues fixed
Game Studio
Fix Scripts thumbnail generation during project launch.
Fix Settings window sharing columns layout with property grid ([#341](https://github.com/SiliconStudio/xenko/issues/341 (new window))).
Fix default IDE settings incorrectly reset to null.
Fix a crash occurring when duplicating an object quickly after selecting it.
Fix an issue with the message box incorrectly resizing.
Tooltips are always visible even if the control (menu, button…) is disabled.
Fix several issues with undo/redo.
Fix drag and drop of components into properties
Sometimes the Game Studio was not asking to save when closed with some changes in a project.
Fix some issues related to folders in scene editor.
Redo does not re-open asset picker anymore.
Graphics
Tangents generation was invalid and might have resulted in various swaps
Physics
Improved collision detection reliability
Fixed collision filter groups
Fixed enable/disable component behavior
Breaking changes
Graphics
Extending rendering is quite different from before. Please check SpaceEscape and other samples to have a better idea while we prepare documentation.
Many methods of GraphicsDevice have been split off into a second class: CommandList
Added objects such as PipelineState, DescriptorSet and DescriptorHeap to better match new graphics API
Game now contains a GraphicsContext which gives access to the current CommandList
GraphicsDevice.BackBuffer and GraphicsDevice.DepthStencilBuffer are gone. Use GraphicsDevice.Presenter.BackBuffer to access the actual backbuffer.
In addition to RenderContext, there is now a RenderDrawContext. Some methods have been changed to expect the latter.
ParameterCollection has been rewritten to be much more memory and performance efficient (data is now stored directly in buffers).
Transferring values from application to shaders and computation of effect permutations used to be done through various inefficient ParameterCollection overrides. This should now be done using RenderFeatures.
Physics
PhysicsComponents are now split into 3 different types (Rigidbody, Character, StaticCollider) which can be added multiple times to an entity.
PhysicsElements are now removed, including the Collider, Rigidbody and Character classes. They now are merged into the new components.
Known Issues
iOS on ARM64 iPhones encounter crashes after a few second. We are currently investigating this.
Sometimes duplicate contacts are detected by the physics engine
Full details of this release are available here.