|
Post by dodothecoder on Jul 30, 2016 13:50:07 GMT
Hey,
I wonder how complicated and perhaps over-tech the baking and texturing process is, i.e. bakingCamera in WorldOven.
It complicates a number of features such as "map modes" (in the event that the player wants the same map with the same textures, just colored different) that are common for strategy games. You use RenderTexture, for instance, that is an expensive way to handle procedural landscapes. I suggest to use chunks with LOD and a smart loader based on viewport. The landscape itself is actually pretty simple and inexpensive compared to, say, voxel-based rendering or complex static levels. No need for your complex and expensive approach. Imagine a game like No Man's Sky or terrain heavy games such as ARMA 2 that would bake textures like this. It does not mean that your approach is not smart, because it's cool (kudos to you!), but it is more complex to adjust and extend in the long term, I suppose.
Before I alter the process, is there an easy way to color a single hex blue or red, for instance? Any way to easily change the material of a single hex? Or, say, the texture or color of a single hex?
With best regards
|
|
|
Post by khash on Jul 31, 2016 11:09:40 GMT
you can look into honey 2 wip package in honey, it have eal time texturing which allows you to update hex on the fly. Also in base honey you can use hex markers to mark/color any hex you like.
System selected for the honey is there as much optimized as I could and bypassing rendering to texture will limit the way it works and performs, but I do work on next honey iteration which hopefully will give you
|
|
|
Post by dodo on Jul 31, 2016 14:10:41 GMT
Hey,
thanks, great. WIP seems not to work, in my version at least, but I'll look into it.
Sure, no offense, really. Well done. More ideas than actual critic. I have experience myself with voxel-based worlds such as No Man's Sky and huge terrain data loaders in AAA companies, that's why, and it is pretty okay these days to do fancy terrain LOD systems at 1000 fps. I would do it myself, and maybe it turns out this way, but so far I'd like to save time on the terrain system, that's all. What I mean is basically this:
- let's consider a 10,000 x 10,000 hex world - create a control map for such world - but render only a 100 x 100 viewport, for instance (actually, 150x150 for the event that the player moves too fast) - leaving perhaps 10x10 per chunk, so you still render chunks - you move the viewport with the player and render missing and remove hexes (or chunks) out of bounds - then you put your energy into the terrain shader with texture splatting etc., up to 16-32 textures per shader (with tricks) - use 32 textures and 8 control maps (R, G, B, A for 4 textures, like you do already), but start with 4-8 textures - what is cool too is that you can with such meshes whatever you want in the shader too, such as crazy vertex effects etc.
The issue is that rendering on the CPU is always more expensive than on the GPU. Since you already prefer DX11, it is okay to assume that your customer PC's will be better than average anyway.
And, frankly speaking, games like Thea or Civ are not exactly performance heavy, so there is no shame in doing the No Man's Sky, if you will. NMS in terms the inpossibility to prerender or bake anything due to the vastness of a planet with n LOD's, right?
Bear also in mind that, say, if one would use your implementation and zoom out far enough to see, say, the whole world, you might end up with tons of chunks and strange looking textures, right? An LOD system prevents you from this by rendering chunks according to the camera distance, which means, LOD0 at your distance, but perhaps LOD3 (quadratic) at world level, right? It would be better looking and faster, and also with a much smaller memory footprint, than anything you can achieve.
Bear in mind that you create a lot of memory holes on the heap too. With that many big allocs you end up with a pretty unstable game the longer it runs, which is an issue in C# used by Unity. Unity's C# does not clean up memory holes, which is not an issue in smaller games or static level games, but as soon you go procedural it is a nightmare after 2-4 h into game. The less you alloc, the better, and texture manipulation, RenderTexture in particular, is the worst.
But these are just thoughts on a long Sunday. Wish you all the best and look forward to the next major update! Great stuff. ; )
|
|
|
Post by kenamis on Aug 4, 2016 1:57:09 GMT
Can you try to elaborate? Are you saying you wish he has an LOD system and/or a procedural generation for the terrain?
|
|