This is voxel-based game in C++11 and OpenGL. At the moment,, the basic rendering engine is nearly complete, and we are starting work on building the landscape scenery for the game. iVoxely is under active development by two developers: pcm2718 (Parker M.) and I.
- OpenGL 3.0 (GLSL 130). I highly recommend proprietary vendor drivers.
- The GLEW, Freeglut, GLM, and png++ libraries.
- The Linux operating system. Mint/*buntu/Debian preferred.
Freeglut are used to create the window. GLEW helps load OpenGL, which powers the rendering. The GLM library performs linear-algebra operations CPU-side, and png++ is used to load .png textures.
Currently the only way to install iVoxely is to compile it. Luckily, this is pretty easy, especially in Linux. The main trick is to ensure that the necessary components are installed beforehand, otherwise there will be errors during the compilation process. Thankfully, installing these libraries is very straightforward with the following command:
sudo apt-get install libglew-dev freeglut3-dev libglm-dev libpng++-dev cmake build-essential
Then it should be ready to compile. This project supports two compilers: Clang and GCC. I prefer the former because it compiles faster, seems more intelligent, has better diagnostic messages, and for other reasons. I have shell scripts set up in the src directory that make it easy to compile and run the project. To run them or to compile manually, navigate into the src directory, and run either ./ClangCompileRun to use Clang, or run ./compileRun for GCC. This compiles and launches the produced executable.
I develop iVoxely using Clang under Linux Mint 14, which inherits Quantal's (12.10) packages. I'm running the nightly developer's build of Clang 3.4, which you too can get by running:
- sudo echo "deb http://llvm.org/apt/quantal/ llvm-toolchain-quantal main" > /etc/apt/sources.list.d/llvm.list
- sudo apt-get update
- sudo apt-get clang-3.4
Pcm2718 is helping develop using GCC under Slackware. It can take some time to install all the libraries and properly set up the build environment in Slackware, but it is possible.
There are three main branches:
- The master branch is the stable development edition. The version at the end (not in the middle) of this branch will compile and run generally as intended, though it may have bugs and features may not be in their final state. This is basically a working snapshot of the project.
- The packaging branch is the stable edition. The master branch will merge into this when particular milestones and sets of features have been finished off and generally smoothed out. These builds will be available for installation through my Launchpad PPA, though this is not available at the moment.
- The *-dev branches are unstable development. These are cutting-edge development, and builds here are not guaranteed to compile or even work. I'll pull from master, develop a feature or fix something, and then merge my JesseV-dev branch with master when I finish.
The clean.sh script in the src directory is useful for cleaning out the files generated by CMake when it builds and compiles the code. Since this process is dependent on the working directory and environment, it makes sense to me to run this script to clean the build environment before I push to Github.
Wherever reasonably possible, the programming style strives to follow http://geosoft.no/development/cppstyle.html with the exception of #85.