How did this game (Timberborn) create their stylized voxel terrain (specifically the cliffs)?

2022.01.24 02:43 QuietFluid How did this game (Timberborn) create their stylized voxel terrain (specifically the cliffs)?

How did this game (Timberborn) create their stylized voxel terrain (specifically the cliffs)? I love games with fully destructible terrain. Recently I came across this cute city builder / colony-sim game Timberborn.
Many games with destructible cube worlds don’t hide their grid (Minecraft, Kubifaktorium, Stonehearth, Gnomoria, etc..) and instead embrace their 16bit style. This is where I find Timberborn refreshing. The devs and artists have tried to make it not feel so “16 bit gritty”, and instead has a beautiful steampunk vibe. I like that they embrace the fixed grid, but “upgraded” their visuals.
I am especially interested in how they might have generated this cliffside terrain mesh.
If you’re not familiar with the game, you can destroy any cube in the game.
Here is another perspective.
https://preview.redd.it/mnbgu778okd81.png?width=1809&format=png&auto=webp&s=66086a66ad1ac3d558a7db958653ff32b54ae6d2
I think they did a really nice job on the terrain. I quite like the low poly cliff-face aesthetic. It’s difficult to find any sort of repeating pattern here.
I spent some time looking at this image trying to figure it out if it is generated by some algorithm, or if they have multiple options for each face variation to keep it looking non-tiled.
In the following two images I picked out some of the patterns.
Grid for comparison
Patterns
Some observations:
  • In the “Pattern” image, you can see that patterns appear to be offset by 0.5x and 0.5y.
  • There appears to be some “partial” patterns. If you look at the yellow squares, two are the same, but the third matches only half of the pattern.
  • In two of the orange patterns, the block to the right is .5x and 1y with the same shape. But in the bottom right orange pattern, the block to the right starts out with the same shape, but is much wider than the other two.
  • In the patterns showcased by circles, the circles with the same colors mostly match, but there are some subtle differences in some of them. To me, this says that the mesh is not present, but either generated, modified, or composed at runtime.
  • Something you can’t see in the still photo, but when you add and remove 1x1x1 cubes, the neighbouring patterns update, sometimes even several blocks away. This to me suggests that they are doing some sort of greedy meshing or tile grouping when regenerating the mesh.
It seems to me the patterning is a variety of pre-made rock shapes, with some code to stitch the rock shape meshes. It seems like there is still some 1x1 grid patterns in there, with some randomness, and offset 0.5x - 0.5y.
Here are few ways I, an inexperienced game dev, can imagine how to recrate this effect, or something similar.
Method 1) Think of each cube as 6 faces. Consider all the possible face variations required. There are 8 btw, ignoring top and bottom. See this diagram, it’s a top-down perspective. The green dot indicates the face normal, or the outside direction.
The green dot indicates the face normal, or the outside direction.
Then I could model a few variations for all 8 faces. The tricky part here would be that the edges of each face would need the same geometry as all of it’s possible neighbours, limiting the randomness a bit. Or, at run time I guess you would need to “meld” the mesh verts between neighbours? Is this possible?
I am not a 3D artist, but here is a blender screenshot of all 8 face. Actually there are more than 8 faces here, but some faces a just linked duplicates to fill in the figure and give all faces a neighbour. This would make it easy to model the face edges to match it’s possible neighbours.
https://preview.redd.it/7lpsvnmqokd81.png?width=1922&format=png&auto=webp&s=693dfdb223c881c2cb76eb0e0bc86b2a37fcef35
Then I could create a single mesh in unity with these mesh faces.
The problem here is vertex count. Timberborn has a max world size of 256x256x (I’m not sure of the height) lets say 16. So 256x256x16. I tried to count the verts require per face, I came up with about 75.
~75 verts

In blender I made each face have about 100 verts, to simulate something comparable. When generated this 256x256x16 world in Unity, it had 33 MILLION verts. Yikes.
https://preview.redd.it/3kvmh71pokd81.png?width=1922&format=png&auto=webp&s=206c0ea2275b1a543a909fb8a7a5b682ff3a4dc0
Now, this is a single mesh, so if I split it into 16x16x16 chunks, I would benefit from frustrum culling. I could also use unity’s LOD system to render further chunks as flat faces (4 verts per face), and things could be much more reasonable, I think. I haven’t tested this yet.
This doesn’t feel like an amazing approach, but maybe it could be useable? Thoughts?
It doesn’t achieve the same level of randomness, and I think requiring each face to share the same edge shape/profile as any matching neighbours could make it seem very tiled. I’m not sure how to avoid this though.
Method 2) Assume all the same from method one, but instead of creating the face mesh geometry in blender, use a displacement map/vertex displacement shader and create the PBR texture. This doesn’t solve the vert count issue, because you would still need the same amount of verts to displace.
Method 3) This idea builds off of method either one or two.
Instead of having each face variation be predetermined, I was thinking you could have a much larger premade mesh, say 10x10. Each face would pull it’s geometry from a 1x1 section of the 10x10 mesh depending on the faces world space. So, a face at 1,1 would pull from 1,1 of the 10x10 mesh. A face at 13,2 would pull from 3,2 of the 10x10 mesh. This would help with the constraint from method one/two of needing face mesh edges to be consistent with it’s neighbours and help create a more organic feel. Although, it is just making the grid large, not disappear.
The problem I have with this approach is how to deal with rounding corners. I can think of two ways to solve this:
  1. Algorithmic stitching/adding/round of the two mesh edges. But this sounds too difficult for me.
  2. Have a rounded mesh that clips through each of the two faces. I don’t know how good this would look though. Also, it’s wasteful due to the verts/faces inside the obj that would contribute to overdraw.
https://preview.redd.it/s0dyghorpkd81.jpg?width=122&format=pjpg&auto=webp&s=e187ef6c0a96c2f2a118f97b3e0aae829f8ade14
Method 4) There is a “cheating” method. If you removed the geometry, and just used a PBR texture with base/height/normal/ao maps, you could save a lot of the mesh and performance trouble, but it would lose its stylized charm and real geometry depth.
Summary I don’t feel like any of my outlined methods are great ways to achieve something similar. I can’t think of good methods to introduce a similar level of randomness.
I’m wondering if I’ve overlooked something that might be obvious to a more seasoned game devs, or if it’s just complicated to implement.
I’m really interested to hear what some of you think about this! Thanks for taking the time.
submitted by QuietFluid to howdidtheycodeit [link] [comments]


2022.01.24 02:43 Stuttz9000 2D/3D Motion designer/VFX editor/animator for hire! (URGENT) [low budget but paid, continuous work+no experience needed]

My name’s Chris and music producer and mixing engineer from London and I’ve just started a new creative media company called RLD (Red Light DISTRKT Ltd) which will cover a majority of services in the media creative industry.
I will pay as appropriately as possible and would love someone to work with long term even it is remote lol. As everything is self-invested and I’ve just completed startup costs for the company, I have little to no budget at the moment but am need of an enthusiastic 3D graphic designer who can take care of quality VFX and motion design for myself and clients. There will be lots of work and great projects especially as the company/brand grows and budget will also grow too.
PLEASE FEEL FREE TO DM ME OR EMAIL ME FOR MORE INFO AT rldstrkt.media@gmail.com
submitted by Stuttz9000 to MotionDesign [link] [comments]


2022.01.24 02:43 yoon1735 In a dark place. Feeling lonely. Heres a smile from a happier time this last year.

In a dark place. Feeling lonely. Heres a smile from a happier time this last year. submitted by yoon1735 to FreeCompliments [link] [comments]


2022.01.24 02:43 Delicious-List-7031 Can I have dreads without the crochet method? this is my hair ,and how can i do it? I am new at this idk to much about it

Can I have dreads without the crochet method? this is my hair ,and how can i do it? I am new at this idk to much about it submitted by Delicious-List-7031 to Dreadlocks [link] [comments]


2022.01.24 02:43 BLUE_HOOD69 Aye finally got him I also have his gears who should I pair him up with? Black manta?

Aye finally got him I also have his gears who should I pair him up with? Black manta? submitted by BLUE_HOOD69 to Injustice2MobileGame [link] [comments]


2022.01.24 02:43 Johnnftcollector Loaded Ape Club giveaway. upvote and drop your wallet

Loaded Ape Club giveaway. upvote and drop your wallet submitted by Johnnftcollector to NFTsMarketplace [link] [comments]


2022.01.24 02:43 oofmania Does anyone know what show this image may be from, it's driving me nuts! The image is from 2007 and it aired on the disney channel. I don't know if this is the right sub, but I thought this was the best option.

Does anyone know what show this image may be from, it's driving me nuts! The image is from 2007 and it aired on the disney channel. I don't know if this is the right sub, but I thought this was the best option. submitted by oofmania to Whatisthis [link] [comments]


2022.01.24 02:43 notabollywoodfan Pallavi Singh’s wedding look.

Pallavi Singh’s wedding look. submitted by notabollywoodfan to InstaCelebsGossip [link] [comments]


2022.01.24 02:43 jefferd82 Going kinda old school.. how do i zig zag my antenna ? Heat gun ?

Going kinda old school.. how do i zig zag my antenna ? Heat gun ? submitted by jefferd82 to Minitrucks [link] [comments]


2022.01.24 02:43 Perfect_Bee_ Cheeto

Cheeto submitted by Perfect_Bee_ to catsnamedafterfood [link] [comments]


2022.01.24 02:43 Either_Apartment_303 [Serious] So reddit, how is the next 1000 years going to look?

submitted by Either_Apartment_303 to AskReddit [link] [comments]


2022.01.24 02:43 EveryDayCarry_Addict Barney's first EDC contribution

submitted by EveryDayCarry_Addict to spyderco [link] [comments]


2022.01.24 02:43 Snoo-86161 [Tenant - VA] “Covid bill”?

Landlord charging me for a “covid bill” that’s over $1000? I live with 3 other room mates and I was the first out of the 3 to get exposed to omicron, landlord now charging me “covid bill” and his only excuse is because I “didn’t tell anybody” which a) is a lie and b) not something that’s stated in my lease agreement. Gave my other room mates covid and caused an “inconvience” because he had to pay for a hotel room that he had to put his new tenant in so he wouldn’t get exposed to covid (which I quarantined at another house for). I also get rental assistance and he’s trying to exploit that resource to pay for the “inconvenience” I caused which I feel like is totally illegal? Said I was going to talk to a lawyer and he said “me too, and I can tell you right now I’d probably win!” Don’t know what I should do, do I reach out to the county Human Resources and rights center? Help me please!
submitted by Snoo-86161 to Tenant [link] [comments]


2022.01.24 02:43 draculadied This purple sweater on Marianne in Normal People?

This purple sweater on Marianne in Normal People? submitted by draculadied to findfashion [link] [comments]


2022.01.24 02:43 ALMCTOKEN Price Fall In Crypto

Have you heard that the token will also decrease by 10% every year?? We are talking about crypto coin token!! No it's real just check how our ALMC token decreases every year..
http://www.almcofficial.com visit us

#cryptocurrency #everylifematter #savelife #invest #investandsafe
submitted by ALMCTOKEN to shamelessplug [link] [comments]


2022.01.24 02:43 chanagrc 012322 SOUL on Twitter

012322 SOUL on Twitter submitted by chanagrc to P1Harmony [link] [comments]


2022.01.24 02:43 AyyLMAOdazdank Decaf coffee messes me up way worse than regular, am I tripping, or is there something to it? I'll drink 2 cups of decaf and feel jittery and tired, but I can drink like 5 regular and feel fine.

submitted by AyyLMAOdazdank to NoStupidQuestions [link] [comments]


2022.01.24 02:43 reiichiroh Intellivision + Amico customers: Harbingers of Doom

Intellivision + Amico customers: Harbingers of Doom submitted by reiichiroh to Intellivision_Amico [link] [comments]


2022.01.24 02:43 TheJuanfrom Francis going full on wrestling and Usman knocking people’s heads off… I fucking love the UFC

Francis going full on wrestling and Usman knocking people’s heads off… I fucking love the UFC submitted by TheJuanfrom to ufc [link] [comments]


2022.01.24 02:43 Drathar [H] $$$/Paypal [W] Kamoteph the Crooked [Loc] US/ND

My local store lost their manager 1 week before the anniversary and I lost my shot at Kamoteph the Crooked, I'd still love to pick up one.
submitted by Drathar to Miniswap [link] [comments]


2022.01.24 02:43 mrbojanglez69 U.S. weighs sending 5,000 troops to Eastern Europe to counter Russia : NPR

submitted by mrbojanglez69 to worldnews [link] [comments]


2022.01.24 02:43 khayrirrw Rigel and the Witch Head Nebula

Rigel and the Witch Head Nebula submitted by khayrirrw to ScienceImages [link] [comments]


2022.01.24 02:43 TheSuperSagor How can I scrape places from Google Maps?

How can I scrape places from Google Maps? There are two procedures to scrape places from google maps: standard procedure and easy procedure that involves GMap leads generator. The standard procedure involves going to the web page and looking for google maps or directly going to the google maps application if installed.
The next step is to enter the places' direction/name; it will provide multiple options for the search. Now identify the one you are looking for, create a loop via selecting for the extraction purposes, after which the data will start extraction and the retrospective place will be scraped from google maps.

https://preview.redd.it/kqhabm9zpkd81.png?width=1920&format=png&auto=webp&s=d57c1dbf73ed291e6db48707ffb70313e4c67c9f
An alternative and better procedure are to approach this purpose through GMap lead generator- a strong google maps scrubber to produce google map leads for your business.
This instrument is simple to utilize and you won't require any programming information to utilize it. Simply look for a business on Google Maps subsequent to introducing it on your program. Click on the "Produce Leads" button, close to the query items. The software will set aside some effort to scratch information and observe their substantial messages then, at that point, click on the "View Results" button to show your information on the LeadStal result page. You can channel your information from that point before separating them.
It involves direct entering of the place's identification in the search bar, after which the data will start scraping automatically through the softwares' capability of extraction and the results will be displayed accurately without any effort and time.
submitted by TheSuperSagor to GoogleMaps [link] [comments]


2022.01.24 02:43 tinhayvip Nhờ vào Microsoft, CEO Activision muốn game Candy Crush có nhiều yếu tố xã hội hơn

Nhờ vào Microsoft, CEO Activision muốn game Candy Crush có nhiều yếu tố xã hội hơn submitted by tinhayvip to hongtinmoi [link] [comments]


2022.01.24 02:43 rebootedtwink It took literally 16 hours. But im victorious.

It took literally 16 hours. But im victorious. submitted by rebootedtwink to dragonquest [link] [comments]


http://ilyaantokhin.ru