In case you are not a frequent visitor of the r/evnova subreddit (or just missed it), Peter Cartwright recently announced a project to revive and remaster Escape Velocity Override. So what does this mean for OpenNova? Well OpenNova will becoming the foundation for the new version of EV: Override. Additionally the engine itself will be adopting the name Kestrel.
Good news to everyone who has been following OpenNova for a while. Kestrel will be open source. Whilst the exact license has not yet been decided, it will be a generally permissive license as to allow people to use the main engine as a basis for their own games.
The biggest question in deciding a license is going to be around forks pushing changes back to the main Kestrel project, commercial limitations and attribution requirements. For the time being these are still being considered and weighed up.
Kestrel will not be source available during the initial run of development. This is mainly because I may decide to make sweeping changes to the foundation of the game and I don’t want to worry about managing the project and merge conflicts whilst I’m in this initial phase.
What will become of this blog?
This blog will become the primary development blog for Kestrel. I’ll discuss design decisions, structure and implementation details of Kestrel. Some of the posts will be more technical than others, but I’ll generally try and keep them understandable.
I’m also going to try and aim for weekly/bi-weekly updates. In the past OpenNova has been an infrequent side project for me and as a result has not allowed for many posts to be made. Kestrel on the other hand will be much more active, with me dedicating a couple of hours a day (where possible) to it.
The structure and format of this blog may change over time and evolve as the project develops and the community grows.
Some information about Kestrel
Disclaimer: The project is still in its very early stages, so do not take all of this information as being set in stone. Things may change and/or evolve.
Kestrel is being developed from the ground up in an engine dedicated to accurately representing the Escape Velocity experience. Further to this it will maintain backwards compatibility with all of the old plugins and data files, whilst bringing in some new features. There will be a follow up post on the future of plugin compatibility in Kestrel in the coming days.
As it stands at the moment, I am developing Kestrel in C. This may evolve in to C++ in the future, but for the moment I’m wanting to keep it to C. This is mostly a personal preference and that C can compile to anything.
The result of this is that there will be several components of the project.
- The core library of Kestrel
This will include all of the graphics layer abstraction, basic engine functionality etc. This library should generally be platform agnostic.
- The main Kestrel game library
This library is the main functionality of Kestrel. The actual game itself. This library should be completely platform agnostic.
- The platform specific binaries
These are the foundational code bases that are used to make an actual executable or application bundle. The core library and main game will be linked into these to produce an actual functional game.
For example; one of the macOS versions of the game will use Metal to render any graphics. The platform specific game will setup the environment and Metal for use, and provide any hooks that the core library will use to render sprites to the screen, and receive events.
There will be some overlap between these components, but in general it should be minimal. Once again there will be a blog post about the architecture and structure of the engine in the future.
The functionality for old Macintosh features such as ResourceForks, QuickDraw, etc will becoming from the Diamond Project and not directly replicated into Kestrel.
So what is the current state of Kestrel?
Well I’m currently getting the Metal rendering pipeline and functions setup for macOS, and dispatching rendering commands from the main Kestrel game library.
This may not look like much, and to an extent it is not, but this actually has much of the graphical requirements fulfilled for Kestrel. The ability to render quads, textures (sorry that the texture is just a yellow square), move objects around, etc. The only missing aspect is the rendering of text, key presses and mouse interaction.
Once these aspects are implemented, it will be on to developing the actual game.