Unity 5 - capabilities for highly procedural games?

I haven’t used Unity before, and a question I haven’t quite settled for myself, which I’ve been thinking about for a future game idea I have, is; how well suited is Unity to highly procedural games? I’m talking about the kinds of games where almost everything is heavily procedurally-generated, both from scratch and from modified baseline assets, with unused procedural assets being frequently unloaded as well to make way for new content as it is generated. Assume that all of these things are to be generated by an external server application that is not running the client engine, and the raw data streamed to clients on demand, to be constructed, cached, destroyed, modified, etc. by the game client. Examples of the sorts of things I’m talking about:

  • Terrain meshes, generated on a server and streamed to the client in real time, possibly containing a combination of voxels and polygon meshes (including dynamic level of detail and so forth)
  • Materials and textures, generated from scratch, and/or applied to a baseline with many parameters affecting output
  • Creature models and animations (again, heavily modified procedurally from base assets)
  • Sound effects to a degree
  • Weather, lighting, etc.

Let’s not worry about the feasibility of my idea, I’m just curious whether Unity would fight me if I attempted to do the above, or if the API design and engine capabilities are flexible enough for this kind of thing.

I don’t know of any potential problems with the examples you’ve listed. Unity is very capable of assembling resources at runtime. There are a number of procedural-based assets in the store to prove it (voxel systems, procedural dungeon generators, etc).

If you want to use voxels for landscape you’ll either have to roll a custom solution or use one from the asset store as Unity’s is simply a heightmap-based polygon terrain. It doesn’t support voxels. When it comes to textures you may want to investigate Allegorithmic’s Substance Designer as it is a procedural texture system.

Once you’re getting into procedural generation, you can pretty much generate any kind of thing from scripts, but because you’re going procedural, you’re probably going to mostly be bypassing Unity’s editing tools to create those objects… e.g. you’ll be greating meshes, maybe textures, etc at runtime from code. So it involves usually a lot more programming and less use of the GUI. You can do all of the things that you asked about.

Ok, thanks, I’ll have to have a deeper look.

I don’t see anything there that Unity can’t handle. If you are going to stream all of that I would suggest using web sockets.