Comments (10)
You are correct in the core idea that I am doing, but we can discuss more in some messaging on Discord if you want since I could also share with you some additional details and features along with some peer documentation that I was looking to also use as a guideline as well. My discord handle is TallyLC
from vulkan-renderer.
Hello!
Inexor is no longer a fork of any other project. It's a completely new engine written from the ground up in modern C++ using Vulkan API :)
Inexor does not use one single line of code from any cube-engine project. Porting Cube2 or any other cube-engine project to Vulkan is not possible I believe because the cube engine code is very hard to modify in the core. Furthermore, cube-engine follows an overall engine architecture that is outdated nowadays since it is entirely single threaded and uses only a main rendering loop. This was fine in 2002, but not enough to power what we envision.
While some brave projects try to refactor cube-engine, I highly recommend not to do so. The list of technical reasons for this is long. Therefore, Inexor trusts in our new engine. Understand that it will take time until it is in a presentable state, but we believe it's worth it.
Join our Discord for more info :)
from vulkan-renderer.
Once again, I would like to point out that a major challenge in porting Cube2 to Vulkan API is the overall difference in technology. Cube-engine uses OpenGl, and the difference between it and Vulkan API are massive.
I recommend you should watch Adam Sawicki's talk "Porting your engine to Vulkan or DX12": https://www.youtube.com/watch?v=6NWfznwFnMs&t=33s
And Dustin Land's "Getting explicit: How Hard is Vulkan really?": https://www.youtube.com/watch?v=0R23npUCCnw
More links can be found in our docs, enjoy: https://inexor-vulkan-renderer.readthedocs.io/en/latest/links/main.html
from vulkan-renderer.
This is our Discord Server: https://discord.com/invite/acUW8k7
from vulkan-renderer.
Hello,
Thanks for the information and I have joined the Discord server.
My purpose is to build a very specialized voxel type engine that actually has many of the similar features that your inexor engine has been discussing, but a few more different ones as well.
I was also wondering about the development effort on the project as it seems that it has not been worked on in 5 months and just wanted to see what timeline is on it?
On this discussion, I also came across Imprimis:
https://project-imprimis.github.io/www/
https://project-imprimis.github.io/libprimis/index.html
https://github.com/project-imprimis/imprimis
Which uses the libprimis engine part and is composed of a rework of Cube2 Saurbraten and Tesseract although it does not have Vulan but seems to have an interesting base and has addressed some of the pipeline things that you mentioned.
Any thoughts?
Have a great day
from vulkan-renderer.
Hey
The Inexor engine is being developed through pull requests, so we do not push directly into the main branch. This means you will see a lot of progress being merged at once every few months. Currently, we're working on the new continuous integration which prevents a lot of work from being merged, but it should be fixed soon. Our current work can be seen in the pull request tab.
A voxel engine? nice! Inexor uses a cube-engine approach where there's an octree and a 6-directional heightmap on every face of the octree. It should be possible to implement a voxel in our engine now already, but the rendering features are still under construction (rendergraph is being refactored atm and there is a ton of features we need to implement in terms of rendering).
About imprimis: I respect them for what they do, but while they made impressive progress and put a lot of work into it, there are some problem I see. One problem is that you are not really refactoring the core of the engine. I don't think they will support Vulkan ever, because the underlying cube-engine code is not suited for it. Also, refactoring cube-engine introduces a lot of new bugs and I know they had problems with several segfaults which came after refactoring. Also, cube-engine itself has bugs and problems that are not fixed until today. I don't see any benefit in dealing with this any further, we just want to write a completely new engine. I don't believe that our progress is slower than the progress of imprimis because they have the benefit of starting from a working full game engine. But understand that once we reached a stable basis in our engine, we will be able to introduce new features faster because of our modern code structure and engine architecture. It's tempting to modify cube-engine to support simple features, but changing the core of the engine is a task that is pretty much close to impossible in my opinion.
from vulkan-renderer.
Hello,
Thanks again for your wonderful insight and I will explore your engine more to see if maybe it is a good starting point for what I envision as well.
One of the many changes that I am targeting is in the area of P2P and an infinite (virtually) universe such that users will run a P2P node that will, in effect, make up parts of a highly distributed octree in that each node will hold parts of the new tree as well as replicates for part of other user's node tree for redundancy.
In general, the idea is to have a massively distributed P2P octree that can grow and be shared by the users in an attempt to provide for a type of 3D engine agnostic system. Users of different types 3D engines, like maybe one day Unity, Unreal, CryEngine, Flax, O3DE, Godot, and others will, one day maybe, be able to have a "plugin" for their 3D engine that will allow them to connect and interact with the API of the P2P Octree (was also considering BSP and others, but octree seems like the best general option) and thus be able to create worlds, modify them, and interact with others in the P2P universe all from different 3D engines.
Yea, that is a HUGE goal and dream, I know.
from vulkan-renderer.
Amazing! We had a similar idea at some point as well. The good news it that in contrast to cube-engine, Inexor supports an arbitrary number of octree layers. Each layer will have its own position, scale and rotation. Your use case could be implemented by stretching the octree in the xy plane while squashing it in the z plane. This non-uniform scale is not supported by our engine atm, but it would be possible to do this and it would not even have an impact on the performance, because the octree traversal would be the same
Note that while the octree collision pull request is in its finishing states, the octree itself still needs some more work (better API, documentation, using pool allocators for octree nodes, implementing edit history, material system for rendering...)
from vulkan-renderer.
So what you would want to do is really to create a big octree which
- has a big size
- has a big depth until the deepest node is reached
- has a non-uniform scale, the xy plane being stretched and the z direction being squashed. This could be set so that the squashing is a multiple number of the xy stretch
So in total, your game world would be very wide, but only as deep into the ground as needed (similar to Minecraft which has only 256 blocks in z). You could have 4 servers and each server is assigned to 2 octants for example.
An "infinite" game world could be done by streaming adjacent octrees (pretty much how Minecraft streams its chunks).
Note that Inexor is still in early stage and we have neither network support nor do we support octree streaming yet.
from vulkan-renderer.
Alright, see you on Discord! I want to close this issue then :)
from vulkan-renderer.
Related Issues (20)
- Swapchain is not properly destroyed during exit
- Random world generator with non-uniform child cube depth HOT 2
- Remove recommonmark requirement
- Make another versoned tag release HOT 1
- Migrate to Conan 2.0 HOT 2
- Refactor buffer and descriptor management into rendergraph HOT 12
- Please support MSYS2 MINGW64 HOT 4
- Fix gest and benchmark in Windows CI HOT 1
- Use VK_PRESENT_MODE_IMMEDIATE_KHR when vsync is turned off HOT 1
- Fix automatic generation of releases in GitHub actions HOT 10
- Why is readthedocs not updating correctly? HOT 3
- Show drop-down-list to select gpu in ImGui
- Use VK_EXT_debug_utils instead of VK_EXT_debug_report
- Use new memory statistics API from Vulkan Memory Allocator 3
- Validation error: Hazard WRITE_AFTER_WRITE vs. layout transition HOT 4
- Remove incorrect manual use of VK_LAYER_RENDERDOC_Capture!
- gpu_info.cpp doesn't print any info HOT 2
- Tell people to download latest Vulkan SDK in our docs before trying to build
- Documentation error HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vulkan-renderer.