Skip to content
46c3078
Compare
Choose a tag to compare

Snapshot from RAII refactoring

inexor_logo

Join our discord: https://discord.gg/acUW8k7.

This is our third tech demo of our new C++17 game engine which is based on Vulkan API. We are currently refactoring our engine so it makes extensive use of RAII. This means there is nothing new to see here compared with 0.1.0-alpha-2, but a lot has changed under the hood which is of interest for game engine programmers.

It is very important to keep testing when doing a refactoring. This way, we make sure everything that worked before refactoring is still working after it :).

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.

v0 1-alpha 2

FAQ

Check out our website www.inexor.org
Join our discord: https://discord.gg/acUW8k7.

Overview for v0.1-alpha.3

Feedback

We need your feedback! Join our discord: https://discord.gg/acUW8k7.

Does my graphics card even support Vulkan?

Update your graphics card before testing :)

  • Keep your graphics drivers up to date! They contain bug fixes and performance improvements.
  • You can check if you graphics card supports Vulkan API on this site: vulkan.gpuinfo.org

Usage

Hold down left mouse button and move the mouse to rotate the octree.

Compare
Choose a tag to compare

Let there be octree..

inexor_logo

Join our discord: https://discord.gg/acUW8k7.

This is our second tech demo of our new C++17 game engine which is based on Vulkan API. In this tech demo, we added a simple implementation of an octree data structure which is being converted into vertex geometry.

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.

v0 1-alpha 2

FAQ

Check out our website www.inexor.org
Join our discord: https://discord.gg/acUW8k7.

Overview for v0.1-alpha.2

  • Added a simple C++17 implementation of an octree.
  • Added event system using boost::signals2.
  • Use boost::bitstream for data processing.
  • Convert octree data structure to vertex geometry (a mesh buffer).
  • Support arbitrary indentations of octree geometry.
  • Added a descriptor set layout for simple octree geometry.
  • Ported Vulkan Memory Allocator library (VMA) to Linux.
  • Fixed a bug that would render every model twice.
  • Improvements considering C++ code quality standards.
  • Added a simple camera movement class.
  • Write spdlog console output to a logfile.

We are working on a proper glTF 2.0 implementation.

Feedback

We need your feedback! Join our discord: https://discord.gg/acUW8k7.

Does my graphics card even support Vulkan?

Continuous Integration (CI)

Thanks to the help of our contributors, we maanged to set up Travis and GitHub actions CI.

Update your graphics card before testing :)

  • Keep your graphics drivers up to date! They contain bug fixes and performance improvements.
  • You can check if you graphics card supports Vulkan API on this site: vulkan.gpuinfo.org

Usage

Hold down left mouse button and move the mouse to rotate the octree.

Compare
Choose a tag to compare

It has begun..

inexor_logo

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

Click here to download it!

Update: AMD v-sync bug is fixed!

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?

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?

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?

vulkan_check_warning

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?

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:
v0-1-alpha-1

  • You can start inexor-vulkan-renderer.exe directly or you can use start_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: info@inexor.org.
  • The logfile does not containt any personal information about the system.

Overview for v0.1-alpha.1

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:

Kaspersky security scan

Virustotal security scan

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.