gamedevtecnico / cubos Goto Github PK
View Code? Open in Web Editor NEWA still very barebones game engine focused on voxels and data-oriented programming
Home Page: https://gamedevtecnico.github.io/cubos/
License: MIT License
A still very barebones game engine focused on voxels and data-oriented programming
Home Page: https://gamedevtecnico.github.io/cubos/
License: MIT License
Instead of having options for using submodules or not, we can use find_package
by default. If find_package
fails, the submodule is used as a fallback.
The README.md file is missing the contribution guidelines:
#ifndef
include guard#ifdef
, ...)namespace impl
, which can be used to hide implementation details (check cubos::gl::impl
)///
style, check already existing files)There should also be a mention to the gh page with documentation.
Change cubos-engine to be library, "entry point" should change to a cubos::init(...) function
Depends on #15.
Implement loading and storing settings.
What do you think about this? I think it is a more fitting name.
Since we'll start working on the engine systems, we now need to separate the core sources from the engine sources.
The current src
and include
folders should be moved to a core
folder.
A new engine
folder should be created which contains the engine sources.
With this change it makes sense to also move the samples
and tests
folders to the core
folder.
Properties for each voxel in a model will be defined using a palette.
Palettes can use different index sizes (8-bit, 16, 32) depending on how many materials are needed for the model.
Palettes can be shared between models.
First Implementation of voxel structures:
(IDEA)
2 Different palette types:
This issue is a follow up of #9
A OpenGL implementation of cubos::gl::RenderDevice
will be provided on includes/gl/ogl_render_device.hpp
.
The targeted OpenGL version will be 3.3, since it has wide support.
Implement the Stream interface for a compressed stream.
The usage should be similar to this:
Stream& originalStream = ...;
CompressedStream compressedStream = CompressedStream(originalStream);
Such that when any data written to/read from the compressed stream is first compressed and then written to the original stream/read from the original stream and then decompressed.
The Zlib library may be used to implement the compression/decompression.
This feature will be useful for implementing compressed archives for loading engine resources.
The settings functionality needs to be enhanced:
Allowing local setting instances will be useful for reading/storing settings separately for the engine and the game.
The building pipeline should be able to generate:
cubos-core
with an entrypoint
that is responsible to load all assets into a game. Also includes all the systems necessary to execute the game (e.g. rendering, input, etc...)cubos-core
and helps creating assets that will then be loaded by cubos
CMake fails with:
include could not find load file:
googletest
Even if googletest was found (or added as a submodule).
We should provide an implementation of Archive
for mounting compressed files/directories to the virtual filesystem. This would require adding an external dependency such as zlib.
SCons may be a better alternative to CMake.
We should discuss it in the next milestone.
Since .qb files mix voxel and palette data, they must first be converted to their equivalents in the engine's core (palettes and grid/octree as described in #83)
Just like the GLFWWindow
was moved to the src
folder, the OGLRenderDevice
should too.
Use an option to determine the executable being generated.
By default the engine should be run as the game engine: invoking entry.cpp's main function.
In the other cases, it should run the test executable.
Properties of each triangle:
As it is, the Window
class isn't abstract and the implementation is chosen using macros. This should be changed to having an abstract Window
, and another class GLFWWindow
which implements the previous one.
This way we can switch between different window implementations (eg.: GLFW vs WinApi) at runtime which would also allow us to easily switch from OpenGL to DirectX, without recompiling the engine.
Consider SPDLOG
talk about vscode, vs, emacs
compiling toolchains
cmake
- [ ] Parse Settings File
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.