I'm looking to begin a procedurally generated open-ended sandbox game and would like some educated opinions on a good starting point. (Take a look at the "Engine Specifications" if you don't want to read the whole post) I do not expect there to be an engine/set of libraries that meets all my requirements, but instead meet some essential ones (like rendering/collisions). I realize I will be building many engine components from scratch and appreciate any extra advice you want to include in your answer.
A little background
I am a fairly experienced programmer with intimate knowledge of modern design practices and know most popular programming languages like C++ and C#.
I've dealt with other 3D engines before like the Source Engine (C++) and UDK (UnrealScript) for some personal projects. I'd like to think most of my knowledge is of FPS game design and what the standard components are of FPS oriented game engines.
My design goal
In a nuteshell: I plan for my game to be a procedurally generated open-ended sandbox game that consists of large blocks as the basic geometry. The player will play in the first person.
These uniformly sized blocks will be large enough so that it can act as a segment to a hallway that the player could walk through. A block could also act as a wall to a building, be completely solid, or be completely empty. These blocks are changeable, removable, and placable.
By now this should sound familiar but its important to understand some critical and defining aspects of the game:
- Blocks themselves contain collisions meshes within themselves; a wall can be placed on any of the 4 sides of the cube and a ceiling/floor on the remaining top and bottom faces.
Example of block collision configurations:
Blocks contain (unless they are empty or fully solid) independent visual meshes on each of their sides that contain collision meshes. They will be relatively simplistic and contain generally low resolution textures (the right resolution would come from benchmarking tests).
No complex shaders, effects, or lighting will be implemented. Only very basic implementations for performance.
Blocks contain basic navigation information and when connected to eachother, form a navigation network of nodes. The blocks themselves act as nodes and their connectivity to other nodes are determined by wall placement and so on.
Basic node based pathfinding will be implemented for AI.
The most challenging aspect will be multiplayer I presume.
Simple particle engine
Physics simulation not likely, just basic fps movement physics
I realize I have a sizable workload in front of me as most engines are not geared for this type of game and so common design paradigms will be sparse. However, I believe there is an engine out there that I can work with to speed things up.
Game engines I have knowledge of
- Gamestudio (clight)
- Source Engine (C++)
- UDK (UnrealScript)
- Panda3D (C++/Python)
- Torque3D (C++/TorqueScript)
- Unity (C#)
I don't really prefer to use any of the ones I've listed for different reasons (mostly because they're FPS engines), but if you think one of them would be a good choice let me know.
Do you know of a game engine or technology bundle that would best help me implement my specifications? Apologies for the lengthy post.
Note: I wouldn't mind investing a few thousand dollars if it justifies itself.