Tile based 2D Game(libgdx; open random world; multithreading)

Hi everyone! I want to show you my first video of the game, i’m currently working on.

qtEC8aqPq38

I’m already made the world and biomes random(using seed-value) generator. Implemented some dynamic saving/loading when you walk through the world. All of this operations are made in separate threads. Every biomes can have their own base-texture, corners-texture, shader, color, etc… For now i made just two textures(noise and coral) and one corners-texture for all biomes. Also i made some rendering methods (for static sprite objects[my SpriteCache implementation], dynamic sprite objects[based on libgdx sprite-batch] and meshes[based on libgdx-meshes]) and layers for my GameObject’s. Implement parent-child-GameObject’s relationship(but it pretty much obviously). Full terrain drawing in a few draw-calls (depends on how much biomes with diff textures and shaders on the screen). Terrain vbo rewrite (in other thread) every time, when you walk(some cache-distance). There still contains some twitching and a little delay. It’s more like because of GC or just running out of cpu(i have old one), but it can be managed in the future.

So i have some questions. Is it good practice to make a tile-pool? For now tiles creating and deleting during serialization(when i moved far away) and when GC running i feel some freeze for a half-second :). Is this is normal approach to let GC do his work and don’t bother about it?

Now, i’m working on biom content(walls, resources, items, etc…). I made some temperature and height in tiles. So i thinking about to create some global points(up to 5) in every biome, that can be something like nest, maze, fields, etc, and when generated new tiles, always checking if they are close to those points, and than generate maze or part of the nest or whatever that points mean. If not, than generate “local content”, like some random chest or tree or single rock, etc…? So, what do you think? Any ideas? Maybe there is some better approach?

I also posted this topic on the libgdx forum.