🤑 Indie game store🙌 Free games😂 Fun games😨 Horror games
👷 Game development🎨 Assets📚 Comics
🎉 Sales🎁 Bundles

Blocks of Life (Conway's Game of Life meets Tetris)

A topic by Bit Outside the Box created 26 days ago Views: 87 Replies: 10
Viewing posts 1 to 11
(Edited 1 time)

Hi all!

Frustrated with my latest developments, I decided to work on a small scale game, which I plan to finish in just 1 or 2 months.

Introducing: Blocks of Life

(I'm going all-in the "great artists steal" thing :P)

It's a game-of-life simulation, but using lots of different cell-types, which interact differently with one another. I'm using natural elements, biomes, etc for cell types (for now: water, plain, forest, mountain). Eventually add complex things, like human villages (or cities, as the game-time progresses), maybe animals.

So where does Tetris come in?

You receive "blocks"(cells), just like in Tetris, and you can place only the head of the stack, after which the next one will be available.

So not only you have to manage the simulation going on (and try to make it Thrive!), but also paying attention on how to use the blocks you have available.

The game map is limited when you start, and will slowly increase to allow you to expand (think mini-metro)

Here's my first screenshot :D

While my mind races with ideas on how to expand and make this a complex-and-interesting-enough simulation, I'm for now trying to come up with a "minimum viable product" and then iterate from there.

I'm basically trying to decide on the cell "types", and how the interaction is done during the simulation. For a start, I'm considering a basic set of : plains, water, mountains and forest.

Unlike Conway's game of life, the simulation wont happen per "cycle", but will be more realtime. I don't want tiles to change suddenly, but to allow the effect of neighboring tiles to affect them gradually. When a certain threshold is met, then the tile changes.

The question now is how to make each tile affect tiles around it, and what are the conditions and triggers to begin affecting tiles.
I've been thinking in a way of how certain tiles help others to thrive (in terms of life), damage it, or are neutral.

For instance, a water tile is beneficial to a forest tile. But perhaps if there is too much water surrounding just one forest tile, it might turn it into something else, like a swamp (forest+water). In this case, it gets really complex, because I need to consider how each tile might affect other tiles individually, not just in terms of being positive or negative.

One way to do this was to give each tile a certain quantity of each of the natural elements, and hardcode how much each type has of each natural element. Let's say: forest has "10% water", "20% earth", "70% wood", while a water tile has "100% water". So the water tile next to a forest tile, would GIVE Water*100*Z(some variable here), and receive Earth*0.2*Y + Wood*0.7*Y

In the meantime, I decided to change the gridmap a bit, and is now a bit more "hex-like", each tile has 6 neighbors instead of 8

I figured out that my previous approach to make a nice simulation was taking too much time and getting me in a big risk of boring me out of this game  Cheesy

So for now I'm making it simpler just to get things moving, and then I'll come back to it later to add more complexity and realism.

I expanded the cell types to 7, now including desert, marsh and swamp.
I've also redone the sprites for each cell type and converted the map to an isometric style, looking much better Smiley

Tomorrow I'll begin the simulation itself, so the game will actually start to come to life Smiley

(+1)

Ok, first basic simulation code done.

Here's nature getting in balance, and forests taking over :D

pretty cool concept. Though it still sounds very complex for a game that has to be finished in 1 or 2 month, but I could be wrong :) wish you the best!

(+1)

made some minor UI improvements, and also coded a few options to allow for (possible) future gameplay modes.

first, the player "square" color changes to highlight if it is or not possible to act on the current tile

secondly, a mode where the playable map "grows" as you place blocks, and can never place any block unless its edging an already existent one

Moderator

It occurs to me (belatedly) that you could use this code to generate maps similar to those in FreeCiv, perhaps for a game in the same vein. How complex is the code?

I'm at a "fork on the road" right now, trying to figure out where to go from here.

Still not sure if the whole Tetris thing is going to be too disruptive to the simulation aspect or not.
Right now, this is how my idea looks like for the game progression (totally subject to change):

The game is divided into Eras(levels), which will advance as time passes by.

Each Era has its own game speed (on the simulation level), and introduces more complexity to the game.

1st Era is like a terra-gen level. You can only place mountains, deserts and water tiles. Basically, laying out some parts of the map.

2nd Era life begins. You can now place grasslands, forests, and the simulation will also create marshes and swamps.

3rd Era life develops. Animals and pre-historic human beings?

4th Era. Modern human beings

5th Era ??

So the goal is? Dont know  :lol: Perhaps it could be something like having the greatest biodiversity of species, or helping humanity to develop in a nice way and achieve some goal? or just a time based goal? (game ends when everything is destroyed and there is no life left)

Not sure how to pull this, but as humans develop they will have an impact in the tiles around them. For instance, in the modern era, too many cities in one place means water will become polluted and forests die out.

I'm also thinking about introducing tiles that are not placed on the map, but affect the map. For instance, a "fire" tile will begin a wildfire at that tile. A meteor will destroy tiles in a certain radius, etc. (inspiration from simcity 2k :D)

Not sure if the player would also "place" life in tiles, or it would develop by itself...

Any cool ideas to enrich this simulation? :D

Hello folks!

Today's update includes many new shiny things (well, almost).

Camera
Now the game has a camera, which moves around with the player, so the map can be bigger than the screen.

Volcanoes
Volcanoes are a thing! They erupt, burning or creating new tiles around them. They will be more likely to appear at the initial stage of the game, during terraforming. But they also last an unexpected span of time... so you never know when one might erupt again Smiley When a volcano becomes extinct, a mountain takes its place. GIF below (sorry, there is no visual feedback on when the volcanoes erupt, you just see the surrounding tiles changing)

Wasteland
A new tile type, which is basically a burnt grassland/forest. Results from volcanoes and wildfires (see below)

Wildfires
This will be one of the "disasters" that will appear in the game. Not sure if the player will "place it" at will, or if it appears by its own.
Fires spread according to tile types. GIF below

Eras
Right now the game has 4 main eras (stages). Each era has a different speed for the simulation, and different tile types become available of disappear.
In the first era (terragen), the player can only place water, desert/bare, volcanoes and mountains. In the 2nd era, life is introduced (not sure how), so grass/forests and everything else will appear.

More to come sooooon Smiley

Recorded a live playing of the game, with me narrating whats happening and mumbling about ideas and questions :D

(Edited 1 time)

Back from a 1+week of no work due to work and life stuff...

Anyway, I'll post soon some new gifs of small changes I did, that allow for more varied play modes. I'm doing this to keep possibilities as open as possible, since I'm not totally clear where to go with the game Wink

Not much done with the simulation part, except improvements to the fire spread which is now more realistic and not totally devastating Smiley

In the meantime, I also spent a few minutes to improve the UI a bit, because I was getting tired of transparent rectangles :D

here's a screenshot of how it looks now