All Projects → weigert → Territory

weigert / Territory

3D rendered proc-gen world test. C++ homebrew voxel engine for agent-driven prodedural generation / world simulation

Programming Languages

procedural
45 projects

Projects that are alternatives of or similar to Territory

Space Nerds In Space
Multi-player spaceship bridge simulator. Captain your starship through adventures with your friends. See https://smcameron.github.io/space-nerds-in-space
Stars: ✭ 516 (+194.86%)
Mutual labels:  procedural-generation, simulation
Complete street rule
The Complete Street Rule for ArcGIS CityEngine is a scenario oriented design tool intended to enable users to quickly create procedurally generated multimodal streets.
Stars: ✭ 81 (-53.71%)
Mutual labels:  procedural-generation, simulation
Pioneer
A game of lonely space adventure
Stars: ✭ 979 (+459.43%)
Mutual labels:  procedural-generation, simulation
differential-growth
adrianton3.github.io/differential-growth/
Stars: ✭ 27 (-84.57%)
Mutual labels:  procedural-generation, simulation
Physics3d
A 3D physics engine
Stars: ✭ 101 (-42.29%)
Mutual labels:  opengl, simulation
Game Dogfight
Air to air combat game, created in Python 3 using HARFANG 3D.
Stars: ✭ 41 (-76.57%)
Mutual labels:  opengl, simulation
Pgdrive
PGDrive: an open-ended driving simulator with infinite scenes from procedural generation
Stars: ✭ 60 (-65.71%)
Mutual labels:  procedural-generation, simulation
Conways Gol
Conway's Game of Life implemented with Go and OpenGL.
Stars: ✭ 84 (-52%)
Mutual labels:  opengl, simulation
Openrct2
An open source re-implementation of RollerCoaster Tycoon 2 🎢
Stars: ✭ 10,115 (+5680%)
Mutual labels:  opengl, simulation
2012sourcepack
The sources for our intros up to and including Chaos Theory
Stars: ✭ 84 (-52%)
Mutual labels:  procedural-generation, opengl
Df Style Worldgen
Fantasy Worlds Procedurally Generated
Stars: ✭ 130 (-25.71%)
Mutual labels:  procedural-generation, simulation
Anothercraft
A Minecraft clone demo
Stars: ✭ 130 (-25.71%)
Mutual labels:  procedural-generation, opengl
Sparkle
🎇 A modern particle engine running on GPU, using c++14 and OpenGL 4.4.
Stars: ✭ 162 (-7.43%)
Mutual labels:  opengl, simulation
Stylized Planet Generator
A stylized procedural planet generator written in Godot 3.0.
Stars: ✭ 166 (-5.14%)
Mutual labels:  procedural-generation
Simmer
Discrete-Event Simulation for R
Stars: ✭ 170 (-2.86%)
Mutual labels:  simulation
Hty360player
HTY360Player is a 360 degree panorama video player for iOS.
Stars: ✭ 1,991 (+1037.71%)
Mutual labels:  opengl
Avogadrolibs
Avogadro libraries provide 3D rendering, visualization, analysis and data processing useful in computational chemistry, molecular modeling, bioinformatics, materials science, and related areas.
Stars: ✭ 164 (-6.29%)
Mutual labels:  opengl
Visbrain
A multi-purpose GPU-accelerated open-source suite for brain data visualization
Stars: ✭ 172 (-1.71%)
Mutual labels:  opengl
Ns3 Mmwave
ns-3 module for simulating mmWave-based cellular systems. See https://ieeexplore.ieee.org/document/8344116/ (open access) as a reference.
Stars: ✭ 169 (-3.43%)
Mutual labels:  simulation
Dagon
3D game engine for D
Stars: ✭ 165 (-5.71%)
Mutual labels:  opengl

territory

3D rendered proc-gen world test

C++ homebrew voxel engine for intelligent agent-driven (NPC) procedural generation / world simulation.

Blog: https://weigert.vsos.ethz.ch/

Compiling

Use the make file to compile the binary.

make all

Tested on Ubuntu 18 LTS. I have been informed that on Ubuntu 19, the install folder for libnoise is different and needs to be fixed in the 'territory.h' header file.

Dependencies

  • gcc
  • SDL2 (core, image, mixer, ttf)
  • OpenGL3
  • GLEW
  • Boost (Serialization, System, Filesystem)
  • DearImgui
  • libnoise

Usage

./territory [world_name] [SEED]

If the world name doesn't exist, it will generate a world with the specified seed. If it does, it will load the world (and ignore the seed input).

By default, the world generation occurs using the SimpleHydrology system (described a separate repository). This can take a little bit, as it simulates erosion and then extracts the voxel data from the terrain.

Controls

Mouse and Keyboard Inputs:

- View Control Panel: ESC
- P: Toggle Pause (**PAUSED BY DEFAULT - BOTS ARE VERY FAST**)
- M: Play Music
- Change Camera Position (Move): WASD
- Move Camera Up / Down: Space / C
- Change Horizontal View Angle: Scroll Left / Right
- Cycle Vertical View Angle: UP- / DOWN-ARROW (for flat and top-down view)
- Zoom: Scroll Up / Down
- Right-Click: Select Block (and give task at that location using the panel)
	- Drag and Release: Select Block Region
	- V: Toggle See-Through Region (for building debugging)
- Fn+F11: Toggle Fullscreen

Panel

In-simulation control panel allows for manipulating the simulation.

- Tab: Simulation:
	- Control the Simulation Speed
	- View Position
	-	 Toggle Debug Messages
- Tab: Population
	- Observe individual bots
		- Follow Bots
		- Check their Task Queue
			- Manipulate their Task-Queue
		- Check the Memory
		- Check their Inventory
			- Manipulate their Inventory
		- Check their Sprite and Animation
	- Interrupt Bots
	- Kill Bots
- Tab: View
	- Change to perspective projection
	- FPS Counter
	- Change Skybox Color
	- Change Lighting Color
	- Change Picker Color
	- Change Render-distance (move out of current chunk to reload chunks)
	- Toggle Rendering Options

Screenshots

Perlin world generation, example of what the rendering looks like and what the control panel looks like. This is in fullscreen mode.

Fullscreen

Dense forest world gen. The leaf colors are varied using bezier curves, parameterized by the hashed block position in world-space (see my blog for more information).

Forest

Example of a "village" (which is really just a spot in the desert where I had the bots build a bunch of houses). It wasn't like this at world gen, but rather the bots built this 100% from scratch. Then I took the screenshot. There are tons of bots in this image.

Village

If you turn the camera just right, your 3D projection becomes this pseudo-isometric projection and looks really nice. Here is an example of a watery world-gen. Again using hashed bezier parameters for color variation.

Water

And zoomed out a bit.

Water Far

Updated world generation using the SimpleHydrology system

Hydrology Zoomed Out

And zoomed in a bit.

Hydrology Zoomed In

Source

Reading

In the wiki, there is a dedicated page to reading and understanding the source code.

You may not be interested in all aspects of this project. In that case, reading certain portions of the source code can give you insight into the system. This is also listed on the wiki page.

Features

A description of features and future plans for various elements of the simulation can be found in the wiki also.

I will try to keep the feature list as complete as possible.

Contributing

If you are interested in contributing to this project, with ideas or source code, please let me know.

I could particularly benefit from experience in the areas of:

  • 3D Rendering with OpenGL / Fast Shader Programming
  • GUI Programming (I am using ImGUI but would like to switch to a custom HUD!)
  • Voxel Data Storage / Large World Storage

There are lots of possibilities to include generative systems for the simulation, so if you have a nice concept I would be happy to see it.

Currently, this is 100% solo.

License

This software is available under the Mozilla Public License. Still, I don't want to clutter the source with header text, so I hope that's ok. Feel free to use and modify the source of this project.

The music and artwork used in the project (everything in /resource/) is not open source. That content was made specifically for this version of this project. If you plan on distributing your own variant of this software, you must use your own music and artwork, or contact me. Using the artwork and music yourself for personal use is fine of course.

Please see the copyright notice on my website for more information.

Articles

For the interested, there are some writeups on the various elements of this project on my blog, explaining the systems and the thought process behind their design:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].