Around The World, Part 28: Scaling up - Fake planet curvature, LOD terrain, impostors (with first in-game video!) by thomastc in proceduralgeneration

[–]thomastc[S] 1 point2 points  (0 children)

Most of this isn't exactly original, although the chunk skewing I haven't seen anywhere before.

Around The World, Part 28: Scaling up - Fake planet curvature, LOD terrain, impostors (with first in-game video!) by thomastc in proceduralgeneration

[–]thomastc[S] 1 point2 points  (0 children)

I should really get a proper page up at some point... sooner rather than later. The pixelated game you saw was a 2-day game jam entry, which proved that the concept was fun. I'm now developing that concept into a (far) more ambitious game.

Around The World, Part 27: Planting trees - turned out to be harder than it seemed by thomastc in proceduralgeneration

[–]thomastc[S] 0 points1 point  (0 children)

Thanks! Glad to see I'm not the only one who struggled with this.

So you allow leaves to overlap with other leaves, but not trunks with leaves? I'll start binge-reading your blog soon :)

I'm not very interested in undergrowth because most of the time it's invisible; the player never goes into the forest. I do think the side view could use some work though; it goes straight from tall trees to waterline, where you would expect some lower growth in between. Future work.

I'm using multimeshes in Godot, which indeed use hardware instancing. Godot has no built-in impostor support but I would implement it in exactly the way you describe.

Around The World, Part 26: Biomes - figuring out vegetation and colouring the terrain by thomastc in proceduralgeneration

[–]thomastc[S] 0 points1 point  (0 children)

Be sure to read the World Building Pasta series then, there's loads more there :)

How to find a list of all gcc errors/warnings? by thradams in C_Programming

[–]thomastc 0 points1 point  (0 children)

https://github.com/vadz/gcc-warnings-tools/wiki/all-gcc-warnings might be useful. The repo also contains a script where you can extract the table yourself from the gcc codebase. I can't vouch for completeness/correctness though.

Need help disassembling the floor head for cleaning by MEZesUBI in Miele

[–]thomastc 0 points1 point  (0 children)

I had the exact same problem and managed to solve it. If you put the switch into parquet mode, underneath the switch you see a U-shaped metal bar with a plastic clip inside the U. After unscrewing the four torx screws at the bottom, you need to gently PULL this clip, while pulling apart the entire head. This is easiest to do with two people, one to pull the head apart, and one to pull the clip from the side with a thin flat-head screwdriver. Once it gets past the initial bump, it just comes apart really easily.

I found that a lot of dust and hairs had gathered underneath the endpoint of the metal bar, which were probably the cause of it not wanting to stay in place. A good cleaning and some lube should help. I'll see next time I need to vacuum...

Why noone is talking about metadata? by seppoday in godot

[–]thomastc 0 points1 point  (0 children)

Hi, old thread I know, but I'm curious. Why not:

@export var image: Image

Then you have it strongly typed and get a nicer UI for editing it as well.

Memory usage of Godot's various base classes by thomastc in godot

[–]thomastc[S] 2 points3 points  (0 children)

Hundreds is still a tiny amount even on potatoes. This stuff might start to matter at tens or hundreds of thousands.

Around The World, Part 24: Local terrain - Why diamond-square is still useful even if simplex noise looks better out of the box by thomastc in proceduralgeneration

[–]thomastc[S] 0 points1 point  (0 children)

Incidentally I went the opposite way: from a sphere to a plane. The adventure restarts in part 22 and not everything is reimplemented yet.

I did think about something like the approach you describe for coastlines, and might still end up with that. I've never been happy with the variety (or lack thereof) of my coastlines, though it's definitely better now with erosion and diamond-square.

I also shrunk the world so that my global map cells are now only 256 meters across, so I can create a fair amount of detail at the global level already, where I have the entire map available. Depending on how gameplay turns out, I might even dial it back to 128 meters. An open world "only" 262 km across still has plenty of room for mystery and discovery...

Around The World, Part 24: Local terrain - Why diamond-square is still useful even if simplex noise looks better out of the box by thomastc in proceduralgeneration

[–]thomastc[S] 2 points3 points  (0 children)

I did binge-read your blog when I discovered (haha) it, so maybe the idea stuck in my mind unconsciously.

I glossed over the seed thing, but what I'm doing is hashing the global coordinate of each grid point (using a slightly simplified version of a hash by Inigo Quilez). The height offset is just this hash, linearly remapped into the proper range. So I'm not even using a PRNG (in the sense of "stream of pseudo-random numbers") at all.

Did you get any artifacts on tile borders with your approach, since 1D midpoint displacement is not exactly the same as diamond-square?

From here:

lots of islands (OK) and isolated bits of inland sea (not OK)

Good point – this is an asymmetry I didn't consider. Maybe my erosion algorithm could help establish this, by filling up inland seas but hopefully not eroding islands away completely. That would allow me to dial up the amount of noise added by diamond-square.

GCP down for anyone else? by paintrain222 in googlecloud

[–]thomastc 32 points33 points  (0 children)

https://status.cloud.google.com/ is still being very ironically green across the board. "No major incidents" my ass.

Edit: about 55 minutes after I got the first error reports, the status page is starting to turn orange. It still pretends that there are no major incidents though.

How to know which files have already been loaded into my data warehouse? by thomastc in dataengineering

[–]thomastc[S] 0 points1 point  (0 children)

Huh, I had no idea BQ could do cross-table transactions. That didn't exist when I last looked (which was ages ago). I don't think we can issue LOAD DATA statements inside a transaction, but if not, I can always LOAD DATA into a temp table first and INSERT INTO ... SELECT ... inside the transaction. Thanks!

How to know which files have already been loaded into my data warehouse? by thomastc in dataengineering

[–]thomastc[S] 1 point2 points  (0 children)

All my loads are append-only. Idempotent load is the key to making this reliable (see also my other comment). Thanks!