Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411496 Posts in 69373 Topics- by 58428 Members - Latest Member: shelton786

April 25, 2024, 06:53:12 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsPond Water - A visually rich artificial life simulation game
Pages: 1 [2] 3
Print
Author Topic: Pond Water - A visually rich artificial life simulation game  (Read 10100 times)
Fuzzy Branch
Level 0
***



View Profile WWW
« Reply #20 on: August 27, 2018, 05:52:16 PM »

These are a very similar set of issues to the ones I've been dealing with, so I can commiserate. It's tough to cut away potential but I think you're probably making the right decision. With the direction you're describing, I imagine this game could have the same sort of appeal as Viridi (which really seemed to click with people).

Really hope everything goes smoothly!

Thanks! I hadn't heard of Viridi before - yeah, it looks like a similar vibe. I'll have to look into it more deeply and see if I can pull some good lessons from its gameplay.


Last week's goal was to implement the bare-bones core gameplay loop, so I updated the menu flow, added HUD UI and actions for the player, as well as a graph panel to record and display historical trends.

The biggest change was probably implementing Player Actions, in the form of a Toolbar. Currently implemented tools are:
-Stir Tool:  Drag the water currents (and everything inside them) around.
-Inspect Tool: This highlights all creatures on the map to make it easier to find them, and allows player to lock'on to individual creatures to autofollow them and provide basic diagnostic info (like health, energy, age, etc.)
-Feed Tool: Player can inject food and nutrients into the water at will.
-Mutate: Set a global mutation parameter that determines how drastic and common genetic mutations are.





This week I'll be trying to fix up some of the broken areas of the simulation algorithm and mechanics, and try to squeeze in some time for a couple graphical updates.


Logged

cottagePi
TIGBaby
*


View Profile
« Reply #21 on: September 05, 2018, 01:57:58 AM »

Hi,

I signed up to TIG purely so that I could comment on how amazing this looks! I've often contemplated making a game based around evolution and ecosystem simulation, I really hope you pull this off, I'll be following with interest.

The art style is beautiful, I was wondering if you could do a post at some point on how you've achieved the flowing water and the the way the colours and trails mix? Failing that, do you have any resources you could point me towards?

If you ever need a play-tester - let me know!
Logged
Fuzzy Branch
Level 0
***



View Profile WWW
« Reply #22 on: September 18, 2018, 04:17:10 PM »

Hi,

I signed up to TIG purely so that I could comment on how amazing this looks! I've often contemplated making a game based around evolution and ecosystem simulation, I really hope you pull this off, I'll be following with interest.

The art style is beautiful, I was wondering if you could do a post at some point on how you've achieved the flowing water and the the way the colours and trails mix? Failing that, do you have any resources you could point me towards?

If you ever need a play-tester - let me know!

Thank you so much! That means a lot!

I've written a little bit about how it works at the bottom of this post -- let me know if you have any questions and I'll happily go into more depth.


Just a little update on the state of the project:
This past weekend I was fortunate enough to exhibit an early build of the game at the OMSI (Oregon Museum of Science & Industry) Mini Maker Faire, with  local game-dev organization PIGSquad (Portland Independent Game Squad). It was a cool event, with myriad exhibitors (like woodblock printmaking with a steamroller; 3D printed musical instruments; aerospace club showed off their rocket; and lots more). The demographic of attendees was heavily skewed towards younger children, who actually make excellent playtesters because they try everything and really stress test the game well!

Overall the feedback was pretty good -- people liked the visuals, and although it's certainly not a game that everyone will enjoy, there were a number of people who it seemed to really resonate with so that was encouraging. Hopefully I can carve out a decent niche in the Evolution Simulator genre. Perhaps unsurprisingly, the main complaint/weakness was the question "so what do you do? what's the goal?". I think this is really my primary challenge with this game: to really clarify what it is and the expectations for the player. This will be a focus for me in the coming weeks/months.

My current plan is to give the player various methods of indirectly affecting the simulation, with the goal of achieving various novel milestones, which would reward the player with more/stronger abilities to influence the sim/environment.  For example, the first time a carnivorous species emerges, the player would be notified of this event and rewarded with points/unlocks that they can spend on new abilities, like targeted mutations, a nutrients dispenser, altering the water currents, or possibly terraforming. This would form the core of the main gameplay loop.



In regards to the fluid simulation architecture, the spine of the system is a 2D grid-based fluid simulation run on the GPU. I started by following the GPU Gems article which is an amazing resource: http://developer.download.nvidia.com/books/HTML/gpugems/gpugems_ch38.html

I store information about the fluid at every cell of the grid (2D Texture), like color, velocity, and pressure. Each frame, I update the state of these textures using a Compute Shader to calculate the fluid flow equations. I also extended the simulation to inject color at certain locations: In order to have the colors of creatures 'bleed' into the water, I use an additional camera (top-down orthographic, aligned to the main simulation area) and render a simple pass that only contains the creatures and save the result to a RenderTexture. I can then use a shader to combine the result of that render with the existing Fluid Color Texture2D, which is then simulated, mixed in and carried along with the water currents.

My next major milestone/goal is to have a playable build up on either itch.io, gamejolt, or another smaller online marketplace, so I'll definitely let you know when that happens!
Logged

Fuzzy Branch
Level 0
***



View Profile WWW
« Reply #23 on: October 08, 2018, 04:11:14 PM »

OK, so this might be a long one...

The Tree Of Life



The current overarching focus for the project is to upgrade the core simulation and the creatures themselves. Right now there's hardly any range of diversity or novelty between individual creatures -- their only differentiating traits are color, size, and mouth-type (carnivore/herbivore). The game sorely needs some meaningful variety in creature form & function, which requires a shift to a more modular creature framework, where creatures' genomes are described by a collection of modules -- Examples of modules include: Fins, Teeth, Eyes, Scales, Venom, Ink Spray, Heat/Cold Resistance, etc. This way creatures can be constructed by gluing building blocks together.

If creatures are no longer one-size-fits-all, then there needs to be a meaningful way to separate and categorize them: an upgraded Speciation system. The existing setup was to have one big fixed-size pool of creatures, cut into 4 equal parts. Each of the 4 "species" would never go extinct or have a variable population size, and no new species could be created. A better solution was needed.

In the new system, creature genomes are separated and assigned into different pools "Species". Each "Species" holds a list of member creatures, as well as a single genome that serves as the template/representative -- creatures that are most similar to a particular Species' representative individual therefore belong to that species. Species themselves are organized into a hierarchy, where new species branch off of their parent species, starting from a single root species. If there are too many species, they are compared against each other to see which ones are the most adept survivors. The least-fit species are then killed off, making room for new ones to emerge.

However, all of this is completely invisible to the player unless they know exactly where to look, so I thought it was necessary to create a UI Element to convey the state of the simulation. This would give the player some tools to more easily parse the world, locate specific creatures, see which creatures are thriving, etc. It also serves as a visualization of the entire history of the simulation run, and shows long-term changes that might be difficult to perceive normally.

The Result: (so far)

*A member of Species 3 is highlighted in the environment



New Species Emerging:



The player can click on each species for more information about it:
  • A portrait of the representative creature in the top-left - what does it look like?
  • Extra information about that species' traits, its ancestor, history, mutations, etc.
  • Highlights members of that species currently living in the environment so that they are easier to find
And eventually:
  • Integrate this dynamic tree of life object with a new version of the historical graphs, so that the Tree can re-arrange and sort itself in different ways. For example, the player wants to see which species' are currently thriving, so selects 'avg. lifespan'. This brings up a historical graph showing each species' performance over time (color-coded to match species' color), as well as sorting the Tree by pushing the highest performers to one side and the poorest ones to the other, making it easy to compare at a glance.
  • 2-Way interaction, where selecting an individual creature in the world would update the UI to show stats/info about that creature's species.

Player Interaction:



It needs a lot of work but I feel I've already spent way more time on it than I'd like so I think I'll leave it for now and come back to it after implementing a bunch of the upgrades to Creatures.

Next task is to start implementing a modular creature system, upgrades to creature brain function, and then a visual overhaul of creatures themselves to show off the new modules and make them really stand out from one another.
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #24 on: October 08, 2018, 08:08:19 PM »

Wow, that looks beautiful!

Quote
Fins, Teeth, Eyes, Scales, Venom, Ink Spray, Heat/Cold Resistance, etc. This way creatures can be constructed by gluing building blocks together.
One thing I dislike about these systems is that they typically are implemented in exquisite corpse fashion, where you can just swap fangs for elephant trunks, or something. I remember Spore feeling very random in this sense.

If these modular blocks were mapped out like a connected a network of possible mutation paths instead, then I bet evolving through them would feel much more natural.

This Nautilus article has some cool thoughts on it.
Logged
Zireael
Level 4
****


View Profile
« Reply #25 on: October 08, 2018, 11:38:05 PM »

I like the tree visualization.
Logged
Devilkay
Level 2
**

Hi! First game-dev experience!


View Profile
« Reply #26 on: October 08, 2018, 11:47:17 PM »

"Once Upon a Time... Life" , the Game XD
Logged
JobLeonard
Level 10
*****



View Profile
« Reply #27 on: October 09, 2018, 02:48:34 AM »

"Once Upon a Time... Life" , the Game XD
Confusingly, that's the one about the Human Body! :D The one that involves evolution was just the first episodes of the original "Once Upon A Time" series



Logged
Fuzzy Branch
Level 0
***



View Profile WWW
« Reply #28 on: November 05, 2018, 11:56:06 AM »

Thanks everyone!
JobLeonard, that nautilus article was really cool!


This past month was kind of rough, so I didn't have as much time to work on this, but I was able to start on the new creature system:

https://www.youtube.com/watch?v=7WgEONhR_VI&feature=youtu.be

It took awhile to figure out how to approach the creature construction problem. For now, I've decided to go ahead with a geometric math-based approach, starting with simple primitive shapes (cylinder, sphere, arc) and warping/modifying them with a series of operators. There are still a ton of unsolved problems, but I think it will be able to achieve my goal of having a wider variety of creature shapes and sizes that can be encoded into a genome deterministically.



I start with a line (roughly representing the spine -- all creatures are chordates, for simplicity) which is the primary axis.

This is then subdivided into different sections (tail, body, head, snout) which can have different proportions.

Each sub-section encodes the width and height of creature body at that position along the spine.

Then a sheet of brushstrokes (points) is generated in the form of a cylinder wrapped around the spine, and sized appropriately based on its position. This has the advantage of organizing the brushstrokes into a nice 2D grid so I can easily assign UVs, and also find nearest-neighbors by index.

After this, the genome contains a list of operations that sequentially modify the body shape. Think of these like pinching, inflating, push-pull the surface of the body.

These modifications are composited on top of each other using different masks, so that they only affect certain regions of the body. Once this is complete, I have a complete creature composed of points in a neutral bind pose.

Final step is to calculate normals, tangents, and brushstroke sizes needed for rendering. I also sort them by depth so they draw in the correct order.

Animation is possible because each point saves its position along the spine as well as other attributes so I know how it should be warped when swimming.



Next I have to figure out how to add things like eyes, fins, teeth, etc.
From a visual standpoint I think I can use a similar math-based approach for constructing their shapes, but I'm worried about some of the technical hurdles of animation/depth-sorting being integrated with the main body.

« Last Edit: November 05, 2018, 02:27:27 PM by Fuzzy Branch » Logged

JobLeonard
Level 10
*****



View Profile
« Reply #29 on: November 05, 2018, 02:21:28 PM »

 Kiss

It's gorgeous, I love it!
Logged
Fuzzy Branch
Level 0
***



View Profile WWW
« Reply #30 on: November 18, 2018, 02:27:35 PM »

Kiss

It's gorgeous, I love it!

Thank you!

For this week's update, some more procedurally-generated critters, now with eyes and some fin decorations:






While there is still a ton of work to do on creature generation & graphics, I'm going to put it on the backburner for now.

The underlying functionality of the simulation itself has been put on hold for too long and could really use some attention, so that is where I'm going to focus for the next couple weeks. What this means:

-I want the evolutionary algorithm to produce a wide range of creature types occupying different ecological niches while co-existing. My goal(hope?) is that this will produce novel emergent behavior patterns for the Player to observe. The different species should vary in physical size, appearance, diet, and survival strategies.

-Improved Lifecycle mechanics: I'd like to have it be the case that the Player can follow a creature from its moment of spawning, all the way through reproduction and onto the next generation of its offspring, and repeat. I'd also like to have variable population sizes to introduce some feast/famine cycles and other consequences.

-Food & Nutrients System: I need to overhaul the way that food and eating works in order to support the above goals. Creatures should be able to specialize in diet, without there being a single clear optimal strategy.

-Introduce/Refine Tools for the Player to understand the state of the simulation. Right now, a lot of functionality is completely hidden from the Player's view so a lot of cool stuff is completely invisible. I need to provide ways for the Player to learn and understand what is going on in the sim so they can better manipulate/influence it. In the short term, this will be in the form of pre-processed data/graphs and other UI data visualizations, plus a historic timeline with Event markers to help the Player identify cause & effect. Also, some improvements to the camera follow behavior.


All right, that's it for now!
Logged

Zireael
Level 4
****


View Profile
« Reply #31 on: November 18, 2018, 11:36:19 PM »

Nice fins, even though I completely agree on prioritizing the simulation itself.
Logged
JobLeonard
Level 10
*****



View Profile
« Reply #32 on: November 19, 2018, 02:23:03 AM »

Quote
While there is still a ton of work to do on creature generation & graphics, I'm going to put it on the backburner for now.
Well, you already have drifting particles and water ripple effects, it looks plenty good for a prototype I say!
Logged
Vakey Rujevic
Level 1
*



View Profile WWW
« Reply #33 on: December 04, 2018, 08:14:54 AM »

The visuals for the game have improved a lot since the last time I saw your work. And really loving the change in the camera angel (from top down to side view).
Logged

Currently developing Life Of Sundura. Website | Devblog | Twitter | Tumblr
Fuzzy Branch
Level 0
***



View Profile WWW
« Reply #34 on: December 08, 2018, 10:30:55 PM »

Nice fins, even though I completely agree on prioritizing the simulation itself.
The visuals for the game have improved a lot since the last time I saw your work. And really loving the change in the camera angel (from top down to side view).

Thank you!

Quote
While there is still a ton of work to do on creature generation & graphics, I'm going to put it on the backburner for now.
Well, you already have drifting particles and water ripple effects, it looks plenty good for a prototype I say!

Well that's good to hear! I have a tendency to get a little compulsive when it comes to visuals so I have to remember not to overfocus on it Smiley


The Past Couple Weeks:

Recently I've been working under-the-hood of the core of the simulation mechanics. I wanted to add some complexity to the system so that there was more room for novel and weird creatures & behaviors to emerge. For the most part I don't think it went as successfully as I would have hoped, but it seems to be in a slightly better spot than before I started so at least there was some progress. It proved very difficult to construct/design the system such that the desired behavior naturally happens (big surprise?).

Attempts:
-Concentrating Food Regionally:  Rather than having food for creatures evenly spread around the entire map, concentrate it in a small number of spots.  This was meant to force more creatures into closer contact with each other and in that regard was successful, but also added a bunch of noise to the learning algo since creatures born in food-poor areas were at such an unlucky disadvantage.
-Different Brain<-->Sensor Logic:  I tried altering the way the creature's brains interpreted objects in the world. This hasn't as of yet produced noticeable novel behavior or strategies, but after some experimentation, it is clear that the creatures' sensor loadouts and their function has a HUGE effect on their activity/tendencies. This is an area I should look into more closely later on.
-Mouth & Diet Types:  The world should include a variety of food sources to encourage different specialized species adapted for each type.  How should different mouths be handled though? Previously there were only 2: carnivorous & herbivore. However, now there are 3 types of food (decayed, plant, and meat). Should there be 3 mouth types? 10? Continuously Variable? How to control peaceful feeding bite vs. aggressive attack bite? Tried out a few different configurations but wasn't super impressed with any of the ones I've tried so far...
-Game Balance:  The simulation needs to support an array of different viable survival strategies to avoid being really boring, so I want to avoid situations where one particular strategy is clearly the best and blocks out everything else. I haven't come up with the solution to this yet but have been adding more fine-tuning controls to a Sim Settings Manager so it will at least be easier to dial in the balance down the road.
-


The Upcoming Few Weeks:

The goal is to have a decent playable build by the end of basically 2 weeks from today, that I can have a handful of friends/family test over the winter break, and then push for a public early access / alpha release early next year (Maybe Feb?) to start getting real player feedback to help improve the game.

The biggest missing piece is a UX layer to help demystify the game a little and make it more approachable/engagable?

So the better part of the next two weeks will be dedicated to two major areas:
1) The Tree of Life Tool: Expanded
I plan to combine the existing Tree Of Life widget with the existing graph panel, and make it into a one-stop-shop for information about the state of the sim world for the player. Basically it acts as a dynamic Encyclopedia, displaying the history of the simulation run, notable events, and historical trends, rise/fall of species, etc.
2) The Events System:
This serves as the primary gameplay mechanic for player interaction. Points are accumulated over time and can be spent on player-directed events of various types. For example, the Player spends 5 points to trigger a severe food drought. Events are limited by player resource "Points" as well as a shared cooldown to prevent spamming. Events should equip the player with a way to influence the simulation in various ways and observe how it adapts to those changes.


So lately I've been working on the UI & menu design for these upcoming systems:


Logged

Fuzzy Branch
Level 0
***



View Profile WWW
« Reply #35 on: December 15, 2018, 08:24:02 PM »

This week I worked on getting a first functional pass of the Events System + UI:






Next on the docket is the other half -- the Tree Of Life tool -- basically a digital encyclopedia and timeline of the simulated world and its inhabitants. This will help the player keep track of the current state of the simulation through a variety of metrics. A record of all player-initiated Events is stored and will be displayed along a timeline of the history of the simulation for ease of reference when trying to analyze cause & effect.
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #36 on: December 16, 2018, 06:28:51 AM »

Looking amazing!
Logged
barta
Level 0
**


View Profile
« Reply #37 on: December 17, 2018, 09:01:21 AM »

just some negative feedback... please don't hate me, but...

the earlier sketches looked amazing. truly breathtaking. i think the later 3d implementation is rather disappointing, compared to them.
if this is going to be mostly an 'observation' game, about witnessing an echological simulation, visuals are going to be important.
perhaps the 3D is not the way to go. 2D would give you more instruments with which to accomplish a truly wonderful graphic. transparency and such. It would also allow you to simplify the AI, thus allowing the simulation to process more creatures.
and i say this not to discourage: perhaps it would not be much trouble converting the thing back to 2D, perhaps most of the code would only need just a couple of adjustments. and the graphics, and concept, are fine anyway, even the way they are.
Logged
Fuzzy Branch
Level 0
***



View Profile WWW
« Reply #38 on: December 27, 2018, 10:40:02 AM »

Looking amazing!

Thanks!

just some negative feedback... please don't hate me, but...

the earlier sketches looked amazing. truly breathtaking. i think the later 3d implementation is rather disappointing, compared to them.
if this is going to be mostly an 'observation' game, about witnessing an echological simulation, visuals are going to be important.
perhaps the 3D is not the way to go. 2D would give you more instruments with which to accomplish a truly wonderful graphic. transparency and such. It would also allow you to simplify the AI, thus allowing the simulation to process more creatures.
and i say this not to discourage: perhaps it would not be much trouble converting the thing back to 2D, perhaps most of the code would only need just a couple of adjustments. and the graphics, and concept, are fine anyway, even the way they are.


Not at all, thank you for the feedback! I agree that there were some nice elements of the earlier 2D implementation that have been lost in the initial transition to 3D. While I'm not planning on going back to strictly 2D, I hope you'll be pleased to know that I'm FAR from finished working on the visuals, and I expect the "final" look to be significantly improved from the current state. If I had my druthers, I'd spend 90% of my time just polishing graphics, but recently the areas of the game that have needed the most improvement have not been the visuals. Also, a small note: while the graphics are 3D, the core simulation itself is still purely 2D. I hope you stick around in the future and let me know what you think of visuals as I continue to work on them!


Holiday Update:

This update was actually from the week before Christmas but I didn't get the chance to write out a post until today.

I've been working on gameplay and UI flow for the Player to define the core loop of the game. As I mentioned in an earlier post, I've split this into two main categories: 1) Player influence, and 2) Information feedback

The first takes the form of the recently implemented Events system, where the Player chooses from a collection of actions which influence the dynamics of the Simulation (kind of like Disasters in SimCity). The second is comprised of diagnostic UI tools.

This update focus on the new Tree of Life widget, which attempts to fuse the previous Tree of Life with the historical graph panel. It should provide current and historical data about the state of the simulated world to help the Player identify cause & effect within the Simulation. I also wanted it to seamlessly integrate with the events system and creature selection with mouse clicks.

Overview of its components:

1) Species Portrait
-Rendered image of the founding member of the currently selected Species, so you know what it looks like.

2) Historical Timeline
-Shows the current age of the Simulation and keeps track of all Events triggered by the Player for future reference

3) World Statistics
-Series of graphs displaying information about the Simulation environment, such as global nutrient levels, mutation rates, and climate.

4) Species Historic Statistics
-Series of graphs displaying the average stats of each species, such as average lifespan, preferred diet, brain/body size, etc.

5) Current Species Fact Sheet
-Information about the current state of the selected species




Logged

barta
Level 0
**


View Profile
« Reply #39 on: December 27, 2018, 09:48:19 PM »

Quote
while the graphics are 3D, the core simulation itself is still purely 2D.

so why did you decide to go 3D for the graphics? i mean you clearly have a lot of know-how for visuals, so I'm just wondering, because I thought 2D would offer far more resources to achieve some fanciful visual effects, and the game doesn't seem to require 3D for gameplay purposes...
Logged
Pages: 1 [2] 3
Print
Jump to:  

Theme orange-lt created by panic