I think I understand what an L-system is, but I don't really get how I can use one for this? I tried googling both for samples of L-systems and L-system based map generation but didn't really come up with anything useful. It seems easy to use to create tree shapes and presized islands, but arbitrarily sized maps? Got any tips or resources on how I can use L-systems for my purposes? Can I use an L-system to sample for a value at a point?
You need a tiny bit more abstraction/indirection. Your goal is not merely "sample an X/Y point and find out what biome it is." Your real goal is to generate regions of X/Y space that conform to biome patterns and exist near each other according to some (as yet unspecified) rules for the game.
Think of the L-system as generating a sort of tree-like structure. Each branch of the tree can turn left, go straight, or turn right. Your mission is to generate a tree (or, probably, several trees) that follow these rules:
- Pick a direction
- Expand in that direction until you hit either SOME_MAX_BIOME_SIZE or run into another biome's boundary
- Pick the midpoint of where you started and where you stopped
- Generate a node expanding left and a node expanding right from that midpoint
- Recurse arbitrarily
This is not a perfect algorithm and you will need to solve a few edge cases to make it do exactly what you want. But that's the idea here; you know what you want, we do not... so you're in the best position to solve this.