v0.1-alpha.1 (Vulkan API test 1) (updated)
Pre-releaseIt has begun..
Join our discord: https://discord.gg/acUW8k7.
This is our very first tech demo of our new game engine which is based on Vulkan API.
Vulkan is a new low-level application programming interface (API) for fast graphics programming and computation.
Click here if want to know more details about Vulkan API.
DOWNLOAD
Update: AMD v-sync bug is fixed!
- The bug causing the application to run at maximum of 60 fps was cause by enabling vsync by default.
- You can now use
-vsync
to enable it if you want to. It is turned off by default. - Ticket: Implement vsync command line argument.
- Ticket: Why is VK_PRESENT_MODE_MAILBOX_KHR not available in v0.1-alpha.1 on AMD graphics cards?
FAQ
What is Inexor?
- Inexor will be a new first person shooter game which is based on a new octree-based game engine.
- Inexor focuses on classic gameplay as we've seen in Cube2 or the Quake series.
- Inexor will be written from ground up new in modern C++17.
- It will offer task based multithreading as a core engine feature.
- You can contribute anything you want: code, content, ideas..
- Inexor and all its content is 100% open source!
What is the point of Inexor?
- We want to create a game which has classic gameplay and a very powerful but also simple to use embedded world editor.
- Inexor is a sandbox: There is no separation between engine editor and the game itself. Creating the game is part of the game.
- People's ideas for for octree-based game will no longer be limited by the underlying engine technology.
- Players can express their map or game mode ideas without any restrictions by us, using a visual scripting enviroment - even collectively in multiplayer.
Who is behind Inexor?
- A collective of game programmers, artists, or people who are very passionate about gaming.
- There is no strict hierarchy behind this organisation.
- Everybody is welcome.
How to contribute?
- Currently, we are in the process of writing the game engine.
- Programmers and testers are most needed right now.
- Artists and mappers are also welcome, but the time for creating maps has not come yet.
Why develop a new game engine?
- We need a new octree-based game engine which is based on a task-based, multithreaded engine.
- Vulkan API is a new graphics API which allows us to gain better performance.
How to get into contact?
- Please join our discord: https://discord.gg/acUW8k7.
- You can also write us:
[email protected]
.
When will Inexor be playable?
- This depends on the speed of our progress.
- We can't forsee this yet.
I found a bug in Inexor, what now?
- Open a ticket.
Which systems will be supported?
- This release contains files for Windows only.
- We are working to get the Linux build working as fast as possible.
- We might support Android in the future.
- Because Apple decided not to support Vulkan API natively, we will not Mac OS.
We are not planing on using moltenVK to get our projects running on Mac OS either.
Does Vulkan require a monster graphics card to even run properly?
- No!, that is a big misconception people have about the API.
- Vulkan uses the same hardware but more efficiently (compared with OpenGL).
Does my graphics card even support Vulkan?
- You can check if you graphics card supports Vulkan API on this site: vulkan.gpuinfo.org
- You can also check here: https://www.khronos.org/conformance/adopters/conformant-products#vulkan
- Help Sascha Willems! Download the GPU info viewer and upload your graphics cards' statistics! This helps developers to see which features are available on which graphics card depending on the driver version.
Will you have an OpenGL fallback in Inexor for old graphics cards?
- The sad reality is: no. It's time to move on.
- OpenGL's core design is way too old! It was designed in the 90s.
- OpenGL's design does not match the architecture of modern graphics cards at all!
- Khronos themselves recommend to move on from OpenGL to Vulkan API.
- OpenGL drivers contain a myriad of hacks which slow down performance.
- OpenGL is single threaded rendering only, so the CPU acts as a bottleneck for the GPU :(
- The age of OpenGL is engine: Apple already removed support already!
- If your graphics card is not capable of running Inexor, you might will have problems with other games as well.
- There is no good alternative for us: OpenGL is deprecated, DirectX 12 is Windows 10 only, Metal is Apple only and thats it.
- Maintaining two rendering engines is tedious and cost way too much time. By the time we would have another engine running most of you would have bought a new Vulkan capable graphics card anyways.
Is Inexor a fork of Cube2?
- No, Inexor is a new code base which has no dependencies in cube-engine.
What will be different in Inexor compared with Cube2?
- It is too early to answer this question as we're in the process of writing the game engine first.
- The answer to this question will very much depend on your input.
Will you use any code parts from cube-engine?
- No. Cube engine is single threaded. This was fine back in the day of its creation but nowadays it acts as a bottleneck for the gpu.
Will Inexor be compatible with Cube2 or other games?
- No, because Inexor's objective is different.
- We don't want to limit ourselves by supporting old technology?
Can I import my maps from Cube2 into Inexor?
- We are working on a map converter.
- It is not ready yet.
What's next?
- v0.1-alpha.2: April 25th, 2020.
We need your feedback! Join our Discord!
We need testers!
Download this alpha and try it out. You should see something like this:
- You can start
inexor-vulkan-renderer.exe
directly or you can usestart_inexor.bat
. - When starting with
start_inexor.bat
, a logfile is generated. - It would be nice if you could send us this logfile by mail:
[email protected]
. - The logfile does not containt any personal information about the system.
Overview for v0.1-alpha.1
- Create a CMake file with conan package manager setup.
- Integrate Vulkan Memory Allocator (VMA) library.
- Integrate RenderDoc support.
- Use spdlog as logger library.
- Integrate tiny_gltf library.
- Mesh buffer manager for vertex and index buffers based on VMA.
- Texture manager based on stb_image and VMA.
- Uniform buffer manager based on VMA.
- Shader manager for loading SPIR-V shaders.
- Load TOML configuration files using toml11. We deliberately won't use JSON for this.
- Vulkan fence manager.
- Vulkan semaphore manager.
- GPU info query functions.
- Vulkan debug callbacks.
- Vulkan standard validation layers.
- C++11
std::chrono
class. - Use glm.
- Depth buffer.
- Let VMA generate memory debug logs.
- Associate internal resource names with memory regions to improve debugging.
- Use separate data transfer queue for cpu to gpu memory copies if available.
- Availability checks for Vulkan features.
- Settings decision maker for Vulkan initialisation.
- Simple command line argument parser.
- Automatic GPU selection mechanism and
-gpu <N>
command line argument for preferential GPU. - Create windows using glfw3.
- Keyboard input based on glfw3.
- Load geometry of glTF 2.0 files using tiny_gltf library.
- Basic camera class.
Command line arguments
Inexor can be started with the following command line arguments:
-gpu <index>
If there are multiple graphics cards installed which support Vulkan API, you can specify which one use with this argument. Just remind yourself that the first index is 0.
-nostats
This will force the engine not to display extensive information about the graphics cards available.
-novalidation
This will disable Vulkan API validation layers. Only relevant for debug mode.
-no_separate_data_queue
This will force the engine to use one queue family for both graphics and data transfer. Keep in mind that this reduces performance! This argument is required to test performance on CPUs which do not offer separate queues.
-no_vk_debug_markers
This will disable Vulkan debug markers. Only relevant for debug mode.
-renderdoc
Enables RenderDoc layer. RenderDoc is an important graphics debugger for Vulkan API.
Antivirus software is complaining
If we would live in a perfect world, signing your .exe
files with a digital certificate would be free or at least cheap. But since we are not living in such a world, this would cost us at least 150 $ a year we guess. We can't handle this yet for the alpha releases.
Because inexor-vulkan-renderer.exe
is not signed (yet), most anti virus programs are not happy with it.
Antivirus software has this tendency to mistrust unsigned binaries by default, which is good btw.
If you don't trust binaries in general, feel free to clone the code and build it yourself :)
Online anti virus scans:
UPDATE YOUR GRAPHICS DRIVERS BEFORE TESTING :)
- Always update your graphics drivers. They contain bug fixes and performance improvements and make everyone happy.
- You can check if you graphics card supports Vulkan API on this site: vulkan.gpuinfo.org
Thank you
- I would like to thank the entire team for making all this possible.
- I'm not going to list up everyone because I might miss someone.
- A big thank you to the amazing Sascha Willems for creating all these Vulkan resources: Example code and this database included :)
- Thanks to the Khronos Forums for supporting us Vulkan developers.