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.