Xenko 1.9 Beta Released
Xenko release 1.9 Beta introduces several major new features along with several relevant enhancements to existing features. We are excited to offer three new game templates to speed up your game design time, a brand new script editor as well as expanded copy-paste functionality and the last major new feature is our new Navigation Mesh system.
- .NET Standard
- Breaking changes
- Changelog Version 1.9.0-beta
- Issues Fixed
- Known Issues
Game Templates 🔗
We have added several templates packed with a lot of functionality to help you kickstart your games. Choose from:
- First Person Shooter
- Third Person Platformer
- Top-View RPG
All of them come with basic camera and player functionality found in most games of their respective genres. They also have many production-quality assets so you can easily try different features on your own.
In addition to the game templates, the New Game project now includes optional packages with all the assets we used to build the samples. Unlike the game templates which are trimmed down, the optional packages include ALL assets, including some which are not used by any Xenko sample.
Script Editor 🔗
To ease friction from switching back and forth between the Game Studio and your IDE, we’ve built a new Script Editor. Relying fully on Visual Studio is no longer necessary because you can now edit your code directly within the Game Studio itself. You’ll get full syntax highlighting, auto-completion, live diagnostics and even the ability to auto-reload C# files and projects that changed on your hard drive due to changes in your external editor (e.g., Visual Studio).
In fact, expect:
- Highlight, auto-completion and live diagnostics is available in the Xenko API, your own game code and libraries that you use
- Auto-reload C# scripts and C# project changes that happened in the background
- A Visual Studio like experience for all your code editing!
We had some help from Microsoft’s .NET compiler, Roslyn, so Xenko users will also receive the full benefit of all the latest features of .NET. Adding a Rosyln-based Script Editor makes it easier to keep up with the latest C# updates.
Using the Xenko Script Editor is fairly straightforward. Just follow these steps:
- Create a new project/game in Game Studio
- Add a script in Game Studio
- Edit the script in Game Studio
C# scripts saved on Visual Studio side (or any text editor, for that matter) will automatically be updated in Game Studio without reloading. Same goes for project changes (.csproj): new scripts will appear automatically upon saving. GameStudio will automatically listen for file changes on the hard drive and update them live, or ask you what to do in case of conflicts.
Under the hood, Rosyln is the underlying technology that can process your Xenko source code. But we didn’t stop there! We were fortunate to find AvalonEdit, which provided us what we wanted for the visual appearance of the UI aspect of the Xenko script editor. We also integrated RoslynPad, which connects Roslyn and AvalonEdit together.
Navigation Meshes 🔗
In Xenko 1.9 Beta, you can create a navigation mesh powered by Recast and Detour with real-time feedback directly in the Xenko GameStudio! The navigation mesh is especially useful for RPGs or top-down strategy games, as you can use it to guide characters through complex scenes. The real-time feedback makes it easy to adjust and conveniently customize AI movement and the dimensions of the navigation mesh itself. The green outline of Xenko’s Navigation Mesh shows where the AI comes into play and where the colliders are set.
In the videos, you can see how the AI navigates the level using the logic within the navigation mesh, and how the colliders will automatically be set in real-time. Of course, you can script AI movement manually, too.
Copy & Paste Functionality Expanded 🔗
In the past we only supported copy and pasting of assets, but now you can copy-paste pretty much anything in the Game Studio.
Any entities in a scene are now copyable, as well as any sprites of a sprite sheet, UI elements, or even a single property in the property grid! For instance, you can copy a list and perform any of the following operations.
- Insert it into another list at various positions, for example:
- Copy and insert into the list (by pasting at a list item level).*
- Copy and append to a list, for example, append it to the end of the list.
- Copy and replace the whole list.
A bit more difficult to explain, but perhaps easier to show than write about is copy and replace at an item level. This action (shown in the video below) will remove the item (at its position in the list) and insert the copied ones starting at the same position of the item in the list. In our example below, the copy replace starts from Item 2 in List 2:
Some information about copying entities and prefabs:
An entire hierarchy of entities can be copied from one scene or prefab to another scene or prefab. Prefab instance will keep their reference to the source prefab as illustrated in the following example:
The prefab "MyHero" is copied into the scene. Links to the prefab are maintained.
It is also possible to copy a component from an entity and paste it into another entity.
Any property that can be serialized can be copied. You can copy something from one scene to another scene, from a sub-element in one scene to another scene and even from a scene to a text file, back and forth as needed. You can also copy simple values in the property grid (e.g., primitives such as int, vector3, string…) between separate Game Studio instances if that is something you find practical and useful.
Here’s an example of copying between scripts and transform entities in the GameStudio Property Grid:
.NET Standard 🔗
Starting with Xenko 1.9, shared Game assemblies will be created using .NET Standard rather than PCL.
It offers many advantages: much better API surface for the developer, improved forward and backward compatibility, reduced fragmentation, finer-grained modularity of the framework, easier to write cross-platform apps, more frequent updates, etc.
Newly created applications will target .NET Standard 1.4, but users are of course free to target a different version. Also, your existing PCL projects will still work as is, but we recommend you to update your projects to .NET Standard!
Assembly Reloading 🔗
Iterating on code is very important. So far, Xenko was supporting changes in scripts: as soon as you saved any C# file, Game Studio was offering to recompile and reload the assembly with the updated scripts. If there is an error loading the type, you can still edit other part of the asset, save it back while preserving the parts that could not be loaded.
In this version, we generalized the approach so that any type embedded in your assets can be reloaded! As a result, you can now implement your own classes for anything you want directly in your game or plugin assemblies, and keep editing them without restarting the Game Studio.
This includes renderers, material features, and will soon be extensively used in new assets.
Breaking changes 🔗
Windows Phone and Windows Store Removed 🔗
Windows Phone and Windows Store platforms are both removed.
Please use the newer
Universal Windows Apps (UWP) instead. This platform was previously known as
Projects will be automatically upgraded to reflect this change.
Also, we renamed preprocessor definition
.NET Standard 🔗
The switch to .NET Standard for newly created projects implies that:
- Runtime .NET framework requirement when distributing your projects is bumped from .NET 4.5 to .NET 4.6.1.
- You need Visual Studio 2015 to open and compile newly created projects
- You can upgrade older projects to use .NET Standard using Visual Studio 2015 Update 3 (in project properties)
- From version 1.9, we don't install prerequisites to compile PCL projects anymore. If you have somebody in your team still working on a project created with a previous version of Xenko on a fresh PC, please make them install Xenko 1.8 so that it installs the proper prerequisites (even if the project has been updated to a newer version of Xenko).
Asset Serialization 🔗
We changed how we serialize asset in YAML. We introduced new concepts that improve how we can track overrides between an archetype or a prefab and assets/entities inheriting from it. Although everything happens "under the hood", this is a actually a heavy change that might impact the upgrading of your project.
We removed asset upgrading for projects made with version 1.3 and below (released more than a year ago). It is possible that you experience some issues when upgrading a project made with versions 1.4 to 1.7, but you should properly be able to upgrade any project that uses version 1.8. However a few cases are not supported:
- Dependency Properties of UI elements that are overridden from an UI library will be reset during upgrade. Therefore, properties such as Grid Column and Row will have to be manually restored.
- Some case of overriden materials in the material list of ModelComponent might be improperly upgraded.
Dropping Support for Windows Store 8.1 and Windows Phone 8.1 🔗
To properly support the .NET Standard 1.4 and offer our developers a more up-to-date and robust API, we decided to drop support for Windows Store 8.1 and Windows Phone 8.1 platforms.
As Microsoft seems to be focusing on Universal Windows Platform (UWP), we’ve also decided it was best to refocus on more pertinent and relevant platforms for Xenko users. UWP was introduced with Windows 10, and a whole range of devices already support it.
Of course, you are free to stick with Xenko 1.8 in case you have a project targeting one of those two platforms -- we know this is a big change, and we will make every effort to help our developers with this transition. We apologize for the inconvenience, and aim to bring you a top-notch .NET user experience!
Just as a reminder, we already support Universal Windows Platform (UWP) on x86, x64 and ARM as of Xenko 1.8, which means games and apps developed with Xenko can be deployed on a whole range of Microsoft devices, including Xbox One. Until 1.9, this platform was named Windows10 in Xenko, but we took the liberty to rename it UWP to better match the official naming.
Changelog Version 1.9.0-beta 🔗
Release date 2016/11/24
- From now on, new projects are created as .NET Standard projects rather than PCL projects.
NuGet restoreis automatically run on projects having a
- Bumped FBX SDK to 2017.0.1
- Mesh importing now supports ByEdge smoothing which was previously ignored. If you notice any difference with vertex normals for your models please check your FBX export settings.
- Prerequisites installer will ask for UAC once instead of many times, and perform a silent installation for all of the prerequisites.
Game Studio 🔗
- Previously, when an
EntityComponent(i.e. script) couldn't be loaded because game or plugin assembly didn't compile properly, we kept a Yaml representation of it so that it could be saved or reloaded after a code fix. Now we allow it to happen anywhere, so that you can use and/or implement custom classes for any type of the engine in your game/plugin.
- Improve asset logs and errors to properly display failure/warning icon on all assets, including the one with icon-style thumbnails.
- Improve loading/refreshing of assets in the scene editor.
- Asset editors will display a * in the tab name when an asset is dirty.
- Add editor for C# source code.
- C# files and .csproj files are automatically reloaded as they are modified on hard drive (using a Yes, Yes to All, No, No to All dialog).
- C# files have their own undo/redo stack
- Add a Save All button that saves both assets and source code files.
- The Game Studio now uses AvalonDock as docking system
- Improve DPI support (#454 and #470)
- Asset YAML serialization has been changed to handle overrides in collection in a better way. More scenario of overrides are now supported.
SharpYamlhas been integrated into our codebase as
SiliconStudio.Core.Yaml. Most of the duplicated types have been merged back in the
- Assets don't use a ~Base section nor a ~BasePart.
Asset.Idto be of an
AssetIdtype rather than
Guid, to avoid invalid comparisons with other kind of ids.
- Remove the
Propertiesmember of Package.
- Introduce a new assembly Assets.Quantum
- Overrides of properties is now handled using Quantum instead of
- Remove the asset diff/merge classes.
- DataSerializers are now generated in a file with .pdb information, so that the user can debug them.
- Add Local offsets to procedural models.
IIdentifiableand has an
- Improve compilation speed of audio files
- Normal maps now have the option to
Invert Y, supporting both textures where the green component is facing up or down
- Minor optimizations around vertex buffer building
- Add StopEmitters() method to the particle system, which prevents new particles from spawning without pausing the entire system
- Add Cone collider shape.
- Replace float with
MaxSlopeof character controllers.
Issues Fixed 🔗
- UWP platform now uses UniversalWindowsPlatform 5.2.2 (was previously 5.0.0).
Game Studio 🔗
- Fix many issues with property overrides.
- Fix many issues when setting/overriding materials in ModelComponent.
- Asset logs were not properly sent forward to editor, resulting in an empty log for all assets.
- Sometimes there was a deadlock when compiling effects due to the way we were using the thread pool and task continuations.
- Fix performance issue that could occur when duplicating entities with the same name many times.
- Fix 'Rename' menu entry when right-clicking a folder of the scene editor.
- Fix crashes in the UI editor that could occur when deleting or moving an element.
- Fix crashes in sprite sheet editor that could occur when deleting, duplicating or moving sprites.
- Fix sort order of assets in the asset view.
- Fix tangents of imported meshes, when transforms are negative along some axes
- Several issues with spot lights were fixed, including shadow maps
- Fix flickering of some materials when no ambient light is present
- Fix an issue on OpenGL that caused low frame rates when using post effects, due to blocking GPU-readback
- Fix a bug where an empty animation clip caused a crash
Known Issues 🔗
- On Linux, when switching the underlying Graphics Platform, rendering will not occur or fail. Delete the cache, local and roaming folder on the Linux host and restarting the game should fix the issue.
- Performance issues on mobile (being worked on)
Edit this page on .