Post Thumbnail

2023/01/29: DevLog – Introducing eVX; a Vulkan Game Engine

Posted on Jan 31st, 2023

Spread the love

As the end of the month comes running in, guns blazing, I’ve finally decided how I want to get things together for my game development as a whole. I missed Ludum Dare 52, Jan 6th to 9th this year, since I was battling to get the correct plan for how I personally prefer to work on games.

Way back, around 8 years ago, I worked on RapidXNA, a simple engine architecture on XNA for Windows Phone and Windows development. A friend started his own fork of it, RapidGame, approximately, and it died out with the last of XNAs days. When that died I bought a license for Unity, this was before Unity moved to the subscription model. You can tell, I don’t want to pay for subscription(s) for game development. I thought a life-time license would last forever, I was mistaken.

Since the start of last year I’ve been back and forth on where I want to take my plans for game development. Suffice it to say, it was fun to take a look at my old DirectX 11.1 implementation. Using my architecture from back then, it’s always fabulous to keep backups of old code – this was when I worked at Microsoft SA for EMEA. Last year, I moved into my own ideas around Vulkan. I had one goal, like my C# wrapping to use DirectX 11.1, I went through the Vulkan Tutorial to start out, and mapped it to C# as much as I could. The C/C++ side was going well for me, but I’ve forgotten the fundamental step to map the graphics architechture into C# and got demotivated with a single troublesome memory leak. With the demotivation, after a few months I stopped.

Around October last year I stumbled upon FNA-XNA. Suffice it to say, it took a while to gather the courage to start again, thank you Ethan Lee, I am now bringing back the project which started on 7th Jan 2014, SokoBomber, as a brand new game idea – ExploPuzzled. Pending name. SokoBomber will forever be playable through the new game as a ‘mini game‘, at least, since it will live on for nostalgic amusement. Instead of the MonoGame I played around with, it will use Vulkan now.

eVX So Far

The idea for eVX is simple – an engine wrapped around FNA-XNA, it specifies use of Vulkan.

A new eVX project will start with the code snippets below as an example:

using Microsoft.Xna.Framework;
using Sample;

using var evx = new eVX.eVX(1280, 720, false, true, true, Color.Black, new SampleGameState());
using eVX;
using eVX.Structure;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace Sample;

public class SampleGameState : IGameState
    public override void Draw()

    public override void Load()
        Engine._ConsoleLog = true;
        Thread.Sleep(8000); // to totally prove this method works

    public override void Loading_Draw()
        Engine.SpriteBatch.Draw(Engine.Content.Load<Texture2D>("loading", "loading.jpg").Texture2D, new Rectangle(0, 0, 1280, 720), Color.White);

    public override void Loading_Update()

    public override void Unload()

    public override void Update()

It’s easy to understand, this is a Console App running on .Net 7 – that is, eVX games will be made with C# 11.

A super simple sample project for testing

This uses the old XNA structure I grew to love, but eVX only needs a simple specification for FNA-XNA as it begins:

Environment.SetEnvironmentVariable("FNA3D_FORCE_DRIVER", "Vulkan");

The debug console, when I need to use it, shows it off:

It’s lovely that I’m in a happy place with my game development projects, and code, again.

One important adjustment I’ve made, I will use manual updates to releases of XNA for eVX – that way if I ever want my own, odd, customisation I can do so. XNA is fabulous on it’s own anyway!


With all of that above, it’s most definitely my personal fun. So far, at least. Back in 2011 I started, and used, RapidXNA – a library that was helpful to make games in a speedy manner. While it would require use of to see more, it’s easy to understand, it dwindled away.

RapidXNA used to be on CodePlex, until around 2012

As a note, in eVX my games aren’t playable yet. I’m still organising my own architecture into eVX. Just to share the starting processes a little:

eVX prototype concept in action for ExploPuzzled
The original game, SokoBomber, I’m reviving

To put it in the simplest terms: SokoBomber will be playable, again, through Vulkan. It’s on the way, at least. I’m excited to bring it back to life with FNA-XNA on Vulkan. This means I can finally work on the plans for the new game to replace SokoBomber: ExploPuzzled – name still pending. I will share more in the near future, if at all possible.

Thanks to DaveRusselZA, and Pomb, back then; the new version is on the way. A new idea for the original game, SokoBomber, with a better name, at least. Note, it isn’t playable in a browser anymore, but I might bring the original Unity web game back in the future.