I want to take a texture, say a basic black/white checkerboard, and apply it to a complex shape (a bit of level geometry for a game in this instance). At the target scale, it will be much smaller than the target object, maybe 1/5th of the width of the bottom square area in my image, but it should tile to fill.
Deformation is not desired, so for example even if there is a hill in the geometry the checkerboard texture should be the same as-the-worm-crawls distance from square to square everywhere.
I have tried fiddling with texturing options but it seems mostly it is made for simple shapes, and treating this shape like a cube or sphere leads to understandably strange looking results.
I also thought about getting orthographic projections and applying UVs but it seems like a bit of an intensive workflow and it will also lead to deformation in the shape when texturing hills and the like.
Below is the actual kind of end result I'm going for, so eventually I'll also want to find a way to tack on these "edges" to the shape, but for now I'd like to just start with a looping texture. Note that because my target end result looks like this, I only care about the top and bottom of my shape separately when it comes to looping textures and thus there doesn't need to be consistency between the sides.
Any advice would be appreciated! I'm very new but I know that I could do this already in one of several painful ways. I'd rather do it right, from the beginning since I will have to generalize this process to many other geometries later on.
Edit: Here is an example of the simple approach of getting a UV map from an orthographic projection causing some warping on slopes, which I'd like to avoid if possible.