Branch | Integration | Release |
---|---|---|
master |
Ultraviolet is a cross-platform, .NET game development framework written in C# and released under the MIT License. It is heavily inspired by Microsoft's XNA Framework, and is intended to be easy for XNA developers to quickly pick up and start using. However, unlike MonoGame and similar projects, Ultraviolet is not intended to be a drop-in replacement for XNA. Its current implementation is written on top of SDL2 and OpenGL, but its modular design makes it (relatively) easy to re-implement using other technologies if it becomes necessary to do so in the future.
At present, Ultraviolet officially supports Windows, Linux, Mac OS X, and Android. Support for additional platforms will be forthcoming in future releases.
Some core features of the Ultraviolet Framework:
-
A runtime content pipeline
Easily load game assets using Ultraviolet's content pipeline. Unlike XNA, Ultraviolet's content pipeline operates at runtime, meaning no special Visual Studio projects are required to make it work. Content preprocessing is supported in order to increase efficiency and decrease load times.
-
High-level 2D rendering abstractions
Familiar classes like SpriteBatch allow you to efficiently render large numbers of 2D sprites. Ultraviolet includes built-in support for texture atlases and XML-driven sprite sheets.
-
High-level 3D rendering abstractions
Coming in a future release.
-
Low-level rendering functionality
In addition to the abstractions described above, Ultraviolet's graphics subsystem allows you to push polygons directly to the graphics device, giving you complete control.
-
A powerful text formatting and layout engine
Do more than draw plain strings of text. Ultraviolet's text formatting engine allows you to change your text's font, style, and color on the fly. The layout engine allows you to easily position and align text wherever you need it.
-
XML-driven object loader for easy content creation
Ultraviolet's object loader allows you to easily create complicated hierarchies of objects from simple XML files. This is more than just an XML serializer—because it is integrated with Ultraviolet, it has direct knowledge of your game's content assets and object lists, making it possible to reference them in a simple, flexible, and readable way.
The Ultraviolet Framework's source code is available on GitHub. If you're developing on Windows, and you just want to get started making games, you can use the installer provided as part of the latest release. It will ensure that you have the necessary DLLs and install Visual Studio templates for developing Ultraviolet applications.
-
The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\CodeSharing\Microsoft.CodeSharing.CSharp.targets" was not found...
This issue has been fixed in Visual Studio 2015 Update 1.
As of version 1.3, Ultraviolet makes use of Shared Projects in order to share code between its Desktop and Android builds (and potentially a future iOS build). This error means that Visual Studio is not configured to understand this project type, and as a result, Ultraviolet will not load or compile correctly. If you encounter this error, please consult this blog post for potential workarounds.
If you're using Visual Studio 2013, make sure you're using the latest update. If you continue to have issues, try installing the Shared Project Reference Manager extension.
-
Building the Samples
If you encounter errors when attempting to build
Ultraviolet Framework Samples.sln
, make sure that you've previously built the corresponding configuration (i.e.Debug
,Release
, orSigned
) ofTwistedLogik.Ultraviolet.sln
. The first sample project runs a script which copies the latest versions of the Ultraviolet assemblies from theBinaries
folder to theUltraviolet Framework Samples\Dependencies
folder, and this script will fail if they don't exist. -
General Compatibility
Ultraviolet is still in the early stages of its development, and as such it has not yet been fully tested on a wide range of hardware. If you encounter compatibility issues on your machine, please register an issue on GitHub so we can try to address it!
Overview
Sample Projects
- Sample 1 - Creating an Ultraviolet Application
- Sample 2 - Handling Input
- Sample 3 - Rendering Geometry
- Sample 4 - Content Management
- Sample 5 - Rendering Sprites
- Sample 6 - Rendering Text
- Sample 7 - Playing Music
- Sample 8 - Playing Sound Effects
- Sample 9 - Managing State with UI Screens
- Sample 10 - Asynchronous Content Loading
- Sample 11 - Game Pads
- Sample 12 - Ultraviolet Presentation Foundation
Advanced Topics
- Data
- Content
- Graphics
- Android
- Ultraviolet Presentation Foundation
What follows is a tentative road map for the next several major revisions of Ultraviolet. This list is subject to change at any time. Items which have been struck through are basically complete, though they may not yet be part of an official release.
- Ultraviolet 1.4
- Graphics
- Improved 3D rendering support
- Model class or equivalent
- Support for model instancing
- Support for skeletal animation
- Signed distance field fonts
- Graphics
- Ultraviolet 1.3
- UI
Continued work on UPF
- UI
- Ultraviolet 1.2
- UI
Ultraviolet Presentation Foundation (UPF)
- UI
- Ultraviolet 1.1
- Miscellaneous
Android supportPerformance improvementsDesign assembly (i.e.TypeConverter
implementations) for NucleusDesign assembly (i.e.TypeConverter
implementations) for Ultraviolet
- Input
New input device: GamePadNew input device: TouchPad
- Graphics
Support for Direct State Access (DSA)Better support for East Asian character sets inSpriteFont
- Miscellaneous
- Ultraviolet 1.0
- Miscellaneous
First release
- Miscellaneous