create account

GAME DEVELOPMENT: The Inception of the Color Grid - Technical Game Development Post by dwinblood

View this thread on: hive.blogpeakd.comecency.com
· @dwinblood ·
$74.03
GAME DEVELOPMENT: The Inception of the Color Grid - Technical Game Development Post
Greetings,

I used to post on Steemit quite fanatically.  In fact, there was a time I think I was ranked within the top 20 for posters in terms of quantity.   With that stated it has been a couple of years since I posted anything.   I thought I'd come back with a post about something interesting I've been working on awhile related to game development.

If any of you have developed games you know that textures and materials can be the bane of your game for several reasons.   Every material you need tends to result in additional draw/setpass calls.   These can impact FPS.   As non-developers this typically translates to the install sizes of games getting larger and larger.    Do you want really lush environments and a lot of great textured people and creatures?   If the answer is yes then understand that this translates to a lot of textures.   In my experience the only thing that tends to use up more space than textures in development is using video.    Audio can use up space as well but if you convert it to OGG Vorbis format or something like that it is generally not as big a deal as textures.

One trick many developers use is finding out the smallest texture they can get away with that still looks acceptable.   Then they will often put multiple textures on a single texture which is known as a texture atlas and be able to use a single material rather than many materials.    This can and does help.   It is a very common go to technique.

Awhile ago when I believe I was still using Steemit regularly I came up with this idea I was calling a Color Swatch.   I thought what if I were to average the colors of all the pixels on each triangle of a model and then map that triangle instead to a square color on an atlas of color boxes?   If it actually worked well and looked good enough then in theory I'd only need a single texture, and a single material to make any number of models.   I was also curious if that would make art that had it's textures made by different artists look well together with less of the uncanny valley problem.

The end result was YES it does work.   It has use cases where it works great and provides a distinct look of its own.   It also has some cases where it does not work so well.    In this initial post I am going to simply show you some of my findings.   The thing to keep in mind is in these screenshots every single model shares a single material (one setpass call) and a single texture.   There are more cool details I'll go into if people seem to be interested after trying out this initial post.

HERE IS A SCREENSHOT FROM ONE OF MY EARLIEST EXPERIMENTS:  These are models made by different artists with very different texturing.   They have all been converted to my earliest attempts at Color Grid (Color Swatch).

![ColorGrid2019.png](https://files.peakd.com/file/peakd-hive/dwinblood/23u5bTpr5EYAghtHh9mhXf6TJg8VLTmC7Z4oo4awAL84UuVe3N5dS829iL847UsRQWxpC.png)

The head there is a DAZ Studio Head (I believe Michael 7 or Michael 8) that I also decimated it a little bit.

More recently I've been working on a complete character system for a couple of games I am working on and that my son will likely use for some of his projects.

I have been converting DAZ Studio Genesis 8 Male and Female characters to the Color Grid format and have 4 LOD levels.   I'll show you some of the LOD 0 levels here.


![ColorGrid2021_1.png](https://files.peakd.com/file/peakd-hive/dwinblood/23tGwVSwN1rk1FpBVcQktnoLNvkVpDn7atbGyBHsZFX7BEWtqxoBZuQm8RgPfvzmy2rGt.png)

Now one of the things you will notice here is the faceted hard edge look.  At the moment that is one of the requirements I've found for converting to this style.   When the edges are smooth with triangles often sharing vertices the color mapping technique does not work as clean because where one triangle may be one color it's neighbor may not flow smoothly on the actual texture.   Therefore I convert every triangle to have unique vertices.  This results in this faceted look.   I kind of like it.  It is unique.

Now if you are a modeler or developer you may look at this and say "***Why don't you just use vertice colors?***"   Well.   Using this technique I actually can add some PBR techniques in and the end result responds to dynamic lighting better than vertice color based models do.   If not for that then I probably would just use vertice colors.

In this current figure that is a default skin.  The hair is a default white color.

I am using another technique I may explain later.  For now I'll share some insane statistics (*at least to me*) which you developers will likely understand.

That female there...

- Base LOD 0 Model = 13.37MB
- Number of Different UV Mapped Skins = 304
- Space used up by Skins = 27.39 MB
- Total Space = 40.86 MB

Yes, that is 40.86 Megabytes for that model plus over 300 skin variations.  One variation (the default) is showing in that screenshot.  Normally that would take over 300 textures, and might be reduced some by atlasing.

Please let me know if this interests you.  There are some tricks I use to get things that reduced that I didn't describe.  Oh, I also have 552 blendshapes (morphs) for that body.  The technique I use for those takes up 36.2MB.  I can make her fat, skinny, old, young, into an alien, into a werewolf, etc.

👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 24 others
properties (23)
authordwinblood
permlinkgame-development-the-inception-of-the-color-grid-technical-game-development-post
categoryhive-140217
json_metadata"{"app":"peakd/2021.03.9","format":"markdown","description":"Reducing texture requirements for models in a game while creating a unique look and feel.","tags":["gaming","gamedev","development","art","3dmodels","technical"],"image":["https://files.peakd.com/file/peakd-hive/dwinblood/23u5bTpr5EYAghtHh9mhXf6TJg8VLTmC7Z4oo4awAL84UuVe3N5dS829iL847UsRQWxpC.png","https://files.peakd.com/file/peakd-hive/dwinblood/23tGwVSwN1rk1FpBVcQktnoLNvkVpDn7atbGyBHsZFX7BEWtqxoBZuQm8RgPfvzmy2rGt.png"]}"
created2021-04-01 23:58:57
last_update2021-04-01 23:58:57
depth0
children4
last_payout2021-04-08 23:58:57
cashout_time1969-12-31 23:59:59
total_payout_value37.364 HBD
curator_payout_value36.667 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length5,297
author_reputation383,232,067,634,988
root_title"GAME DEVELOPMENT: The Inception of the Color Grid - Technical Game Development Post"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id102,757,268
net_rshares72,663,154,261,770
author_curate_reward""
vote details (88)
@hivebuzz ·
Congratulations @dwinblood! You received a personal badge!

<table><tr><td>https://images.hive.blog/70x70/http://hivebuzz.me/badges/pud.s3.png?202104020001</td><td>You powered-up at least 100 HP on Hive Power Up Day! This entitles you to a level 3 badge<br>Participate in the next Power Up Day and try to power-up more HIVE to get a bigger Power-Bee.<br>May the Hive Power be with you!</td></tr></table>

<sub>_You can view your badges on [your board](https://hivebuzz.me/@dwinblood) and compare yourself to others in the [Ranking](https://hivebuzz.me/ranking)_</sub>


**Check out the last post from @hivebuzz:**
<table><tr><td><a href="/hivebuzz/@hivebuzz/pud-202104"><img src="https://images.hive.blog/64x128/https://i.imgur.com/805FIIt.jpg"></a></td><td><a href="/hivebuzz/@hivebuzz/pud-202104">Hive Power Up Day - April 1st 2021 - Hive Power Delegation</a></td></tr></table>
properties (22)
authorhivebuzz
permlinkhivebuzz-notify-dwinblood-20210402t010038000z
categoryhive-140217
json_metadata{"image":["http://hivebuzz.me/notify.t6.png"]}
created2021-04-02 01:00:39
last_update2021-04-02 01:00:39
depth1
children0
last_payout2021-04-09 01:00:39
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length879
author_reputation369,459,108,740,973
root_title"GAME DEVELOPMENT: The Inception of the Color Grid - Technical Game Development Post"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id102,758,231
net_rshares0
@yaluna ·
$0.02
If I develope a game, especially the grafic design I try to use and also design textures with more higher or the highest quality of textures I can create or can use. But my games have only 2D Grafics, and I know, the design of 3D models is way more complex.
Good job! It looks realy nice^^
👍  
properties (23)
authoryaluna
permlinkre-dwinblood-qqxtrg
categoryhive-140217
json_metadata{"tags":["hive-140217"],"app":"peakd/2021.03.9"}
created2021-04-02 13:07:30
last_update2021-04-02 13:07:30
depth1
children2
last_payout2021-04-09 13:07:30
cashout_time1969-12-31 23:59:59
total_payout_value0.010 HBD
curator_payout_value0.010 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length289
author_reputation36,672,450,279,854
root_title"GAME DEVELOPMENT: The Inception of the Color Grid - Technical Game Development Post"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id102,767,916
net_rshares39,699,641,323
author_curate_reward""
vote details (1)
@dwinblood ·
In general when you are making textures it is better to design the source textures you work from to be high resolution like you are doing.  However, when you are ready to publish the game you can create variants by reducing the size of the texture as small as you can get it and still have it look exactly the way you want.  This will result in less memory, and disk space use and potentially make it more performant on more platforms.   You likely already knew this.

The thing about textures.   While there are some scale up algorithms that can generate some detail in textures the reality is it is near impossible to go back and make a more detailed texture.   It is very easy to make a less detailed texture from a more detailed one.  For this reason you should always start with the more detailed one.
👍  
properties (23)
authordwinblood
permlinkre-yaluna-qqy2xm
categoryhive-140217
json_metadata{"tags":["hive-140217"],"app":"peakd/2021.03.9"}
created2021-04-02 16:25:03
last_update2021-04-02 16:25:03
depth2
children1
last_payout2021-04-09 16:25:03
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length806
author_reputation383,232,067,634,988
root_title"GAME DEVELOPMENT: The Inception of the Color Grid - Technical Game Development Post"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id102,771,574
net_rshares9,091,903,627
author_curate_reward""
vote details (1)
@yaluna ·
$0.02
Thats all right. I think the same way.
👍  
properties (23)
authoryaluna
permlinkre-dwinblood-qqy48d
categoryhive-140217
json_metadata{"tags":["hive-140217"],"app":"peakd/2021.03.9"}
created2021-04-02 16:53:00
last_update2021-04-02 16:53:00
depth3
children0
last_payout2021-04-09 16:53:00
cashout_time1969-12-31 23:59:59
total_payout_value0.010 HBD
curator_payout_value0.010 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length38
author_reputation36,672,450,279,854
root_title"GAME DEVELOPMENT: The Inception of the Color Grid - Technical Game Development Post"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id102,772,111
net_rshares40,510,203,298
author_curate_reward""
vote details (1)