2016-03-16

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.

Show more