To Vulkan or not to Vulkan, that is the question


I’ve been investigating Vulkan ever since it came out roughly a month ago. Ideally we would be able to port the engine to Vulkan sometime by the end of this year. It’s a radical change and a non-trivial effort, probably a whole man month of work, but the more stuff we build the bad old way the harder it will be to move to the new good way at some point in the future. Also, due to the unique nature of our technology, we could see some pretty serious performance improvements by moving to D3D12/Vulkan.

Unfortunately Vulkan is still very much in its infancy. The drivers are in Beta which actually doesn’t concern me too much as they will probably be stable well before we ship I:B to retail. The bigger problem is the state of its shader compiler ecosystem. To say it’s a complete mess is probably giving it too much credit. A disaster of epic proportions straddles a fine line between being slightly melodramatic and accurately describing the current situation. Recent benchmarks have Vulkan shaders running ~30% slower than D3D11/D3D12 which is an incredible performance differential ( It makes Vulkan seriously unattractive in the near to mid-term. The worst part is that the long-term promise of SPIR-V is actually pretty great - if only Khronos had more cohesively invested in achieving this vision within a reasonable time frame. Lastly Apple hasn’t announced it’s going to support Vulkan which also seriously undercuts it.

So this brings us to D3D12. It’s near identical to Vulkan except everything that’s wrong with Vulkan isn’t a problem with D3D12 - except one major flaw which is that it’s Win10/XB1 only. This seriously puts us in a bind when choosing our next-gen API. If Apple had declared support for Vulkan this would be a no-brainer, the pro’s of adopting Vulkan would outweigh the cons of working through its shader compiler issues, however that’s not the case. No matter what if we want to support Apple platforms we’ll have to implement another rendering backend for Metal. Given that there aren’t many compelling business reasons to support Linux the only real incentive to choose Vulkan over D3D12 is that it supports Windows 7/8/8.1.

Lastly we don’t have the manpower to support both a D3D11 and D3D12/Vulkan rendering backend. The divergence between the old and new is massive and we can’t afford to support something that will become less relevant with every passing day. This means that if we choose D3D12 you will simply not be able to play I:B without Windows 10 - period. Otherwise we’ll have to deal with that 30% shader performance hit which will likely be a major problem in its own right. Damned if we do and damned if we don’t. At this juncture I’m leaning toward saying to hell with Vulkan and implementing D3D12, we’ll just have to deal with being Win10 only which I suspect will be easier than all other alternatives. I’ve been using Win10 for almost a year and so far I’m pretty happy with it. It’s a proper successor to Win7 and I think at this point anyone refraining from upgrading is merely delaying the inevitable.

Lutris/wine request

Sounds to me like Windows 10 is the way to go. Good you brought it up - get it out there now so that potential new players won’t be disappointed.


If D3D12 and Vulcan are that simmilar, couldn’t they be implemented im paralell when revamping the engine?
Sure I have no idea.

Also is there any indication that Vulcans shader problem will or even can be solved in the future?


I always found it odd that you guys seemed far more keen to use Vulkan than DX12. In my opinion, sacrificing performance for legacy compatibility is not worth it. In 18-ish months the vast majority of Windows users should have upgraded to 10.


[quote=“INovaeKeith, post:1, topic:3174”]
but the more stuff we build the bad old way the harder it will be to move to the new good way at some point in the future.
[/quote]In other words, INS want to start getting ahead and stop falling behind.

Microsoft and nVidia is where it’s at. Follow suit! If people want to play your game enough, they will go with a Windows 10 system. Being scared of the outcome from the potential loss of Linux customers is just beating yourself up. My advice, go with DirectX 12 and Microsoft, period!


btw props on that sentence. I actually felt the need to Google that sentence to see if you copied and pasted. nope! smart guy :blush:


Longer term, Vulkan would be the better choice. Steam is slowly trying to get their entire catalogue to be able to run on Steam machines, which is Linux. Steam machines might become relevant if the HTC Vive becomes a major player in the VR field.
But right now, there is no real alternative to Windows 10 for gaming, and that will probably be true for at least another year, probably more. So the choice of D3D12 sounds reasonable for your time frame.

And as Lomsor pointed out; there might be design wins with going with D3D12 right now that potentially makes a transition to Vulkan easier later on, should the need ever arise. At least perhaps in a structural sense.


Sounds like a clear choice to me If linux and apple support isn’t planned anyway. Besides most apple machines have crappy graphic cards anyway (compared to windows and the amount of money you need to spend).


I would have to agree…and, in terms of marketing, Apple isn’t a game changer anyway.

*sorry for the pun. :confused:


Another rewrite of the engine is one the table? I hope you guys don’t get stuck in the engine development cycle for another decade the same way you spent the last decade improving the engine to state of the art. Technology will keep improving, two coders working on a game is a tight schedule, having one of those coders working on the engine just pulls resources from what should be your priority, the game. Rather forget about the engine, focus on the game, make a good one and in two years time when you have a proper company with an office, then think about polishing the engine. Is DX12/Vulkan really necessary at this point, can you guys not make a game without it, I think you know that the reasonable answer to both of those questions is, no.


Good call. Of course, that could be one of those hindsight 20/20 kind of things, but still.[quote=“cybercritic, post:10, topic:3174”]
Is DX12/Vulkan really necessary at this point, can you guys not make a game without it
[/quote]Keith said that it’d only take about a month or two to do.


How about releasing IBS a month or two ahead of schedule or including a month or two more gameplay options than promised, now that would be a much more worthy development?


Yeah, but I think a month isn’t a deal breaker; it’s a small price for performance. As for the somewhat lengthy decade, yeah, it kind of undermined their momentum, but I think they get it. On the positive side, however, this is one hell of an engine! Look at Star Citizen, 4 years on, buggy as hell with a severe cap on players…and not nearly finished. So all things considered, the decade was well spent. Moreover, things are picking up and moving…so much to be optimistic about.


Except that when a programmer tells you something will take a month or two, that means that in the real world it will probably take an average of 4 months if things go well. The only exception to this is when the programmer has a past record of delivering code on time.


I’m confused. Is this a driver issue or an API issue? A compiler optimization issue? Libraries that the compiler links against?


I wouldn’t be so sure about that either.
Although the hardware specs for the end product will be probably higher than the average game, there’s still some ground to cover. Going with a technology that creates a hindrance of ~30% on performance, and that may or may not be fully corrected in the coming year, is a very risky play.

I’m ok with going on D3D12 as long as it doesn’t require a heavy rewriting from D3D11.

I very much agree with @cybercritic: I don’t want to see Battlescape beome the new DayZ (which means struggling to add contents because of engine work).

I’d rather like to see the extra month or two going into an earlier release, or for polishing the gameplay / eliminating the bugs.

I wouldn’t underestimate them even for the near-future. Besides, INovae is on a much tighter budget than CR, so yeah, a month or two does matter.


Well, 30% hit on performance is too big in my books to put out the game a month or two earlier.


30% hit on shader performce compared to D3D12. Not performance in general.

The special case with these new APIs and I-Novae engine is that the engines performance may be boosted significantly.
Is it worth it? What do we prefer? I want a fun game. It looks gorgeous allready and sadly there aren’t a lot of funds arround anyway to do much more work on the engine or visuals. :frowning: So I have to agree with critics suggestions/concerns.


I would continue to develop in dx11. IMO the extra work isn’t worth it, at least if its more than one month of work. If you are sure it will only take a month, then it probably is a no brainer to implement dx12 early on. I think it would be best to finish BS and when its successful (it will be) implementing dx12 or vulkan to the sequel/possible mmo. I don’t believe linux gaming will gain traction any time soon, that why I think dx12 would be the better choice.


Still sounds high. But I understand your concerns. And I also want a fun game but we have to define what ‘fun’ is; for some it’s low graphic quality, high numbers and lots of content. For others it maybe high performance, less numbers and less content. And there is at least a dozen other ways to define ‘fun’. Personally I would love a game with avatars because I think that would be more immersive which is one of the things I highly value. But given the budget I have accepted that isn’t going to happen so I content myself in supporting the technology that will one day make avatars possible. Now if we cut our losses on the shading for avatars I would be amenable to that because I believe it would not only add content but make Battlescape more marketable…

I suppose it really comes down to what justifies projected schedules. Personally I would like to keep the focus on high quality and performance because these presently set I-Novae above all other games. Sure they can drop the shading quality and get the game out sooner but then I-Novae starts coming down to other games like Elite which, like it or not, offers similar gaming options. It’s a tough call though and I would hate to be in the DEV’s shoes - good thing I’m not too because I would be telling everyone Battlescape will be a year late because avatars will be included. lol. Avatars for everyone - muhahaha. :yum:

1 Like