Thrive Game Development

Development of the evolution game Thrive.
 
HomeHome  PortalPortal  CalendarCalendar  FAQFAQ  SearchSearch  MemberlistMemberlist  UsergroupsUsergroups  RegisterRegister  Log inLog in  
Welcome new and returning members!
If you're new, read around a bit before you post: the odds are we've already covered your suggestion.
If you want to join the development team, sign up and tell us why.
ADMIN is pleased to note that this marquee has finally been updated.
ADMIN reminds you that the Devblog is REQUIRED reading.
Currently: The Microbe Stage GUI is under heavy development
Log in
Username:
Password:
Log in automatically: 
:: I forgot my password
Quick Links
Website
/r/thrive
GitHub
FAQs
Wiki
New Posts
Search
 
 

Display results as :
 
Rechercher Advanced Search
Statistics
We have 1675 registered users
The newest registered user is dejo123

Our users have posted a total of 30851 messages in 1411 subjects
Who is online?
In total there are 3 users online :: 0 Registered, 0 Hidden and 3 Guests

None

Most users ever online was 443 on Sun Mar 17, 2013 5:41 pm
Latest topics
» THIS FORUM IS NOW OBSOLETE
by NickTheNick Sat Sep 26, 2015 10:26 pm

» To all the people who come here looking for thrive.
by NickTheNick Sat Sep 26, 2015 10:22 pm

» Build Error Code::Blocks / CMake
by crovea Tue Jul 28, 2015 5:28 pm

» Hello! I can translate in japanese
by tjwhale Thu Jul 02, 2015 7:23 pm

» On Leave (Offline thread)
by NickTheNick Wed Jul 01, 2015 12:20 am

» Devblog #14: A Brave New Forum
by NickTheNick Mon Jun 29, 2015 4:49 am

» Application for Programmer
by crovea Fri Jun 26, 2015 11:14 am

» Re-Reapplication
by The Creator Thu Jun 25, 2015 10:57 pm

» Application (programming)
by crovea Tue Jun 23, 2015 8:00 am

» Achieving Sapience
by MitochondriaBox Sun Jun 21, 2015 7:03 pm

» Microbe Stage GDD
by tjwhale Sat Jun 20, 2015 3:44 pm

» Application for Programmer/ Theorist
by tjwhale Wed Jun 17, 2015 9:56 am

» Application for a 3D Modeler.
by Kaiju4u Wed Jun 10, 2015 11:16 am

» Translator to Serbian here
by Simeartherist Sun Jun 07, 2015 6:36 am

» Presentation
by Othithu Tue Jun 02, 2015 10:38 am

» Application of Sorts
by crovea Sun May 31, 2015 5:06 pm

» want to contribute
by Renzope Sun May 31, 2015 12:58 pm

» Music List Thread (Post New Themes Here)
by Oliveriver Thu May 28, 2015 1:06 pm

» Application: English-Spanish translator
by Renzope Tue May 26, 2015 1:53 pm

» Want to be promoter or project manager
by TheBudderBros Sun May 24, 2015 9:00 pm


Share | 
 

 Microbial Compounds and Organelles

View previous topic View next topic Go down 
Go to page : Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next
AuthorMessage
~sciocont
Overall Team Lead


Posts : 3406
Reputation : 138
Join date : 2010-07-06

PostSubject: Re: Microbial Compounds and Organelles   Thu Mar 28, 2013 10:16 pm

Spoiler:
 
Here is a yEd flowchart for all of the organelles and processes described in the OP here, excluding pseudopodic movement. Please help me extend this by adding new organelles, processes, and connections.

_________________
Remember our goals: simplicity, science, and playability. Keep them in mind always.
[OE]|[FAQ]|[Wiki]|[My Blog]
Back to top Go down
View user profile
RodGame
Newcomer


Posts : 94
Reputation : 15
Join date : 2013-03-18

PostSubject: Re: Microbial Compounds and Organelles   Thu Mar 28, 2013 10:32 pm

Awesome work! This is exactly what I was looking for while building my prototype.

I like the way you put them as Initial/Secondary. It is clear to someone who want to program this. Also like how they are linked to together. I'll definitly come with some question when I'll update my prototype with those.

Nice work! Keep pulling these chart and add number as you can. I really like them and it is easy to implement afterward.
Back to top Go down
View user profile
~sciocont
Overall Team Lead


Posts : 3406
Reputation : 138
Join date : 2010-07-06

PostSubject: Re: Microbial Compounds and Organelles   Thu Mar 28, 2013 11:11 pm

RodGame wrote:
Awesome work! This is exactly what I was looking for while building my prototype.

I like the way you put them as Initial/Secondary. It is clear to someone who want to program this. Also like how they are linked to together. I'll definitly come with some question when I'll update my prototype with those.

Nice work! Keep pulling these chart and add number as you can. I really like them and it is easy to implement afterward.
I figured this would help a lot. I'll work on describing processes (in terms of input and output compounds) clearly so they're easy to implement, though most of them are probably already on the site somewhere. The forums are a constant reshuffling of information to where it is needed.

_________________
Remember our goals: simplicity, science, and playability. Keep them in mind always.
[OE]|[FAQ]|[Wiki]|[My Blog]
Back to top Go down
View user profile
RodGame
Newcomer


Posts : 94
Reputation : 15
Join date : 2013-03-18

PostSubject: Re: Microbial Compounds and Organelles   Fri Mar 29, 2013 12:43 am

~sciocont wrote:
I'll work on describing processes (in terms of input and output compounds) clearly so they're easy to implement

Yes, please do that. Transferring concept to game design is really helpful afterward. I would also like a quick description of how you see the process being used in actual gameplay(I.e : How will external digestion be used ? Do you need it to gain new organelle ? Do you need it to eat some particular compound ? What is the difference between having a engulfment prevention or not? Having 1 prevent you from being eaten by anything ?)

As you see, more than Input/Output are needed for gameplay. If you see other aspect given by organelle (Such as compound limit increase by vacuole ? Different movement design depending on movement organelle (same speed in all direction, faster forward..), please but them on paper right there.

~sciocont wrote:
The forums are a constant reshuffling of information to where it is needed.

That's where I think the wiki should come into play. Forum concepts are always moving but still available to everyone. It's hard to tell if a concept from 2011 is still good or not. You need to read all the thread which can be long sometime.

We should work towards having an updated wiki which represent the current true concept and information related to it which link to the forum discussion if you need further investigation to understand the concepts. I know it's not that easy but it would be a good goal to have.

edit : I'd really like to have an easy to access to all those graph being thrown around easily on the wiki. That could be a good start to upgrade it slowly.
Back to top Go down
View user profile
~sciocont
Overall Team Lead


Posts : 3406
Reputation : 138
Join date : 2010-07-06

PostSubject: Re: Microbial Compounds and Organelles   Sat Mar 30, 2013 12:41 pm

RodGame wrote:
I'd really like to have an easy to access to all those graph being thrown around easily on the wiki. That could be a good start to upgrade it slowly.
I'm sorry, I don't quite understand what you mean here. Do you mean that you want all of the flowcharts being made available on the wiki? That can be done easily.

_________________
Remember our goals: simplicity, science, and playability. Keep them in mind always.
[OE]|[FAQ]|[Wiki]|[My Blog]
Back to top Go down
View user profile
untrustedlife
Regular


Posts : 252
Reputation : 19
Join date : 2013-03-26
Location : [Classified]

PostSubject: Re: Microbial Compounds and Organelles   Sat Mar 30, 2013 11:01 pm

This is extremely helpful, i will use this to make MY prototype more realistic so we can get more realistic creatures popping up.
Back to top Go down
View user profile
NickTheNick
Overall Team Co-Lead


Posts : 2312
Reputation : 175
Join date : 2012-07-22
Age : 20
Location : Canada

PostSubject: Re: Microbial Compounds and Organelles   Thu Sep 19, 2013 1:59 am

With the recent release of the saving and loading update to the Microbe Stage, we need to get a full list of organelles to implement them into the game. Many organelles and their related processes have been described in the thread, but now we need to take them and list them clearly and extremely specifically, so that it is in a code-able format. Do not assume the computer will know anything that you have not described.

There are several things to describe for each organelle. What does it enable in the cell it is placed in, what does it cost in MP (the maximum MP that can be spent in each editor session is 20), etc.

Here is a starting list just to show you what format to use, not all of these are finished so please help fill them out where possible:



Organelles
---
Mitochondria - X MP
Aerobic Respiration:
1 Sugar + 6 Oxygen = 6 Water + 6 Carbon Dioxide + 38 ATP

Chloroplast – X MP
Photosynthesis:
6 Carbon Dioxide + 6 Water = 6 Oxygen + 1 Sugar
Note: Light intensity factors into the reaction rate of the chloroplast. In a spot of 100% light intensity, the chloroplast will react at maximum reaction rate. At 50% light frequency, the chloroplast will react at only half speed.

Thermoplast – X MP
Note: Heat intensity factors into the reaction rate of the thermoplast. In a spot of 100% heat intensity, the thermoplast will react at maximum reaction rate. At 50% heat intensity, the thermoplast will react at only half speed.

_________________
Look at how far we've come when people thought we'd get nowhere. Imagine how far we can go if we try to get somewhere.
Back to top Go down
View user profile
NickTheNick
Overall Team Co-Lead


Posts : 2312
Reputation : 175
Join date : 2012-07-22
Age : 20
Location : Canada

PostSubject: Re: Microbial Compounds and Organelles   Mon Oct 28, 2013 7:08 pm

With the recent work by the coders on the compound system and processing organelles, here is Seregon's documentation on the microbial processes, for use by the programmers.  

EDIT: Screw it, the forum won't let me format it the way I want, so here are pictures of it on Microsoft Word.

Spoiler:
 

_________________
Look at how far we've come when people thought we'd get nowhere. Imagine how far we can go if we try to get somewhere.


Last edited by NickTheNick on Mon Oct 13, 2014 11:31 pm; edited 1 time in total
Back to top Go down
View user profile
crovea
Programming Team lead


Posts : 310
Reputation : 59
Join date : 2013-10-07
Age : 26
Location : Denmark

PostSubject: Re: Microbial Compounds and Organelles   Tue Oct 29, 2013 7:40 am

NickTheNick wrote:
With the recent work by the coders on the compound system and processing organelles, here is Seregon's documentation on the microbial processes, for use by the programmers.
Thanks i'll put that to good use!
I assume glucose and sugar is the same agent?
Also, the discussion we were having was how to assign input agents if multiple organelles consume the same agent. For example, a single organism capable of Agent Synthesis (that produces what??) and capable of RpAse Synthesis, assuming if all other agents are abundant in the cell, which organelle does a the sparse sugar go to? equally to produce each, according to priority of organelles or how?
Back to top Go down
View user profile
NickTheNick
Overall Team Co-Lead


Posts : 2312
Reputation : 175
Join date : 2012-07-22
Age : 20
Location : Canada

PostSubject: Re: Microbial Compounds and Organelles   Tue Oct 29, 2013 7:40 pm

Yes, glucose and sugar are the same. However, note the difference between compounds and agents. A compound is a resource, element, or mixture in the game, like water, iron, textile, or glucose. Agents are chemicals released by cells to affect other cells in a specific way, like damage their membrane, slow them down, etc.

If there is, say, 1 oxygen, and two different organelles that want it, it should just be randomized who gets it.

_________________
Look at how far we've come when people thought we'd get nowhere. Imagine how far we can go if we try to get somewhere.
Back to top Go down
View user profile
crovea
Programming Team lead


Posts : 310
Reputation : 59
Join date : 2013-10-07
Age : 26
Location : Denmark

PostSubject: Re: Microbial Compounds and Organelles   Wed Oct 30, 2013 4:18 am

Difference duly noted!
Randomized, that sounds odd, but i will naturally oblige. What is the reasoning behind randomized instead of equal distribution?
Back to top Go down
View user profile
Nimbal
Programming Team lead


Posts : 258
Reputation : 24
Join date : 2013-03-17
Age : 32
Location : Ratingen, Germany

PostSubject: Re: Microbial Compounds and Organelles   Wed Oct 30, 2013 8:41 am

NickTheNick wrote:

A compound is a resource, element, or mixture in the game, like water, iron, textile, or glucose. Agents are chemicals released by cells to affect other cells in a specific way, like damage their membrane, slow them down, etc.
From a programming perspective, it doesn't make much sense to differentiate between agents and compounds like that. Take oxygen for example, which I guess could be classified as "resource" (and element, if you mean it in the chemical way). I don't think we've talked about the specifics yet, but I assume that it will eventually be possible to design microbes that excrete oxygen, so it's also a chemical that is released by cells. Furthermore, oxygen can affect cells in a specific way, namely by filling up their oxygen vacuoles (if any). In other words, oxygen is also an agent.

crovea wrote:

What is the reasoning behind randomized instead of equal distribution?
I can't speak for Nick, but I would also vote for a "random serve" system. There are several approaches for sparse resource distribution. As an example, let's talk about  a microbe with 2 organelles. Organelle A wants 1 oxygen for producing 2 RpAse per second and organelle B that wants 2 oxygen for producing 1 glucose per second (it's an alchemist organelle). The microbe receives 1 oxygen per second.

Here are the four approaches I can currently think of:


  1. Equal distribution, scale output: Each second, A and B each receive 0.5 oxygen (would that be ionized oxygen, or radioactive beryllium?). A consumes that oxygen and produces 1 RpAse (half its normal output). B consumes its oxygen also, producing 0.25 glucose (a quarter its normal output).
  2. Equal distribution, wait until there's enough for everyone: A and B only get to process oxygen once there's at least 3 oxygen available. So every 3 seconds, A consumes 1 oxygen and produces 2 RpAse while B consumes 2 oxygen to produce 1 glucose.
  3. Randomized, skip if not enough resources: At each timestep, iterate through the organelles in a random order. If the organelle can't grab enough resources, it does nothing. Better luck next time.
  4. Randomized, reserve resources: At each timestep, iterate through the organelles in a random order. Each organelle moves resources from the microbe's storage into an internal storage. If the internal storage has enough resources, consume them and produce the output.


My personal opinion on those four options:

  1. Option 1 has the obvious flaw that some organelles may be producing miniscule amounts that hardly matter while others work pretty normal.
  2. Option 2 might feel a little strange to the player. The stored amount of resources would always rise to a certain level, then jump to zero again.
  3. Option 3 is my personal favorite, it allows organelles with small resource requirements to keep working while big resource hogs are starved. At the same time, a sparse resource actually stays sparse, never going above the level that the most frugal organelle can consume.
  4. Option 4 can confuse the players because they can't see that internal storage, unless we do some fancy stuff to change the organelle graphics depending on the filling level. That makes it pretty unpredictable which organelles will keep working.
Back to top Go down
View user profile
crovea
Programming Team lead


Posts : 310
Reputation : 59
Join date : 2013-10-07
Age : 26
Location : Denmark

PostSubject: Re: Microbial Compounds and Organelles   Wed Oct 30, 2013 10:35 am

With your option 3, a "resource hog" would never produce then, that would be more confusing for a player to add an producing organelle that would never actually do anything.
On option 4
Nimbal wrote:
That makes it pretty unpredictable which organelles will keep working.
I'm not sure what you mean with "keep working" they would all keep working just with random speed.

The idea i had was to do equal distribution, but more like your option 4 than your option 1, each organelle using oxygen gets 1 oxygen in turns and put it into its internal storage, whenever oxygen is somehow obtained. This would reflect osmosis pretty well (realistic?) like option 1 but without the disadvantage of fractional agents.
Back to top Go down
View user profile
NickTheNick
Overall Team Co-Lead


Posts : 2312
Reputation : 175
Join date : 2012-07-22
Age : 20
Location : Canada

PostSubject: Re: Microbial Compounds and Organelles   Wed Oct 30, 2013 10:17 pm

crovea wrote:
Difference duly noted!
Randomized, that sounds odd, but i will naturally oblige. What is the reasoning behind randomized instead of equal distribution?
Actually, I hadn't considered equal distribution. I was suggesting randomization over prioritizing organelles, as I feel as organelle prioritization would need a lot more micromanagement, since an organelle would have to be fully satisfied before any resources would be shared with other organelles.

Nimbal wrote:
From a programming perspective, it doesn't make much sense to differentiate between agents and compounds like that. Take oxygen for example, which I guess could be classified as "resource" (and element, if you mean it in the chemical way). I don't think we've talked about the specifics yet, but I assume that it will eventually be possible to design microbes that excrete oxygen, so it's also a chemical that is released by cells. Furthermore, oxygen can affect cells in a specific way, namely by filling up their oxygen vacuoles (if any). In other words, oxygen is also an agent.
Yes, I was misleading in my answer. To be more accurate in my definitions, an agent is a chemical that does not exist naturally, and can only be produced by cells in an agent vacuole. It is like a microbial counterpart to the poison made in the poison glands of a venomous snake. Oxygen, or any compound for that matter, wouldn't count because none of them can be excreted by a cell from a vacuole, to do something like damage another cell's membrane, slow down their movement organelles, etc. For the most part, we don't even know of any chemicals that cells release that can do this, the agent system is a gameplay thing.

_________________
Look at how far we've come when people thought we'd get nowhere. Imagine how far we can go if we try to get somewhere.
Back to top Go down
View user profile
Psych0Ch3f
Newcomer


Posts : 55
Reputation : 10
Join date : 2013-09-20
Age : 21
Location : Montréal

PostSubject: Re: Microbial Compounds and Organelles   Wed Oct 30, 2013 11:43 pm

I like the 2 random options. Here are my thoughts.

Nimbal wrote:
Randomized, skip if not enough resources: At each timestep, iterate through the organelles in a random order. If the organelle can't grab enough resources, it does nothing. Better luck next time.
This option slows down the rate for organelles requiring more resources. (due to its "better luck next time")
Maybe i understood it wrong, but heres something I would do to this option much more game friendly and practical: Allocate any "unused" oxygen to be used in the next timesteps random distribution.

Example:
Say each timestep we get 1 oxygen
Timestep 1:
<1 oxygen to organelle 2 (requiring 2 oxygen to do its reaction)> (random selection)
<Not enough oxygen for reaction>
<1 oxygen put in bank for next timestep>
Timestep 2:
<1 oxygen to organelle 1 (requiring 1 oxygen and 1 oxygen to organelle 2> (again random selection and dist.)
<Organelle 1 reacts! Organelle 2 does not react (not enough oxygen)>
<1 oxygen put in bank for next timestep>
Timestep 3:
<2 oxygen to organelle 2>
<organelle 2 reacts!>

That would be what I think would improve this option. It makes it realistic and randomized at the same time. The oxygen is "still inside the cell" (bank) and has an equal opportunity of meeting the organelle again. (Maybe this is what you guys meant all along and I'm just being redundant haha!)

For:
Nimbal wrote:
Randomized, reserve resources: At each timestep, iterate through the organelles in a random order. Each organelle moves resources from the microbe's storage into an internal storage. If the internal storage has enough resources, consume them and produce the output.
The internal storage method is much more friendly towards organelles that use more resources, since it gives them a guaranteed storage in the event they dont have enough resources. It doesnt seem to realistic, but It may be much more balanced (overall) for the cell. (im not too sure.)

All in all, i would go for the first option i listed with the example. But i do have one concern.
Should the surface area of the organelle (in hexes) also be a factor in the random distribution? So like large jumbo extra super big mega organelle has a 99.9% chance of getting that oxygen compared to miniscule tiny  organelle. (exaggerated example)
Hope this sorta made sense!
Back to top Go down
View user profile
crovea
Programming Team lead


Posts : 310
Reputation : 59
Join date : 2013-10-07
Age : 26
Location : Denmark

PostSubject: Re: Microbial Compounds and Organelles   Thu Oct 31, 2013 6:00 am

Psych0Ch3f wrote:
(Maybe this is what you guys meant all along and I'm just being redundant haha!)
Pretty much  yep. I just finished the implementation and it's currently working like this!

Psych0Ch3f wrote:
Should the surface area of the organelle (in hexes) also be a factor in the random distribution?
Very interesting idea! Probably a question for the design folks in the misc. thread. I'll leave it as it is for now, should be moderately easy to change if needed tho.
Back to top Go down
View user profile
Nimbal
Programming Team lead


Posts : 258
Reputation : 24
Join date : 2013-03-17
Age : 32
Location : Ratingen, Germany

PostSubject: Re: Microbial Compounds and Organelles   Thu Oct 31, 2013 8:59 am

Automatically coupling resource usage to the size of an organelle isn't necessary, I think. The size and shape of organelles can only be changed by editing the script files anyway, and if the designer who implements that change wants the resource usage to go up as well, it can be adjusted manually as well.
Back to top Go down
View user profile
Psych0Ch3f
Newcomer


Posts : 55
Reputation : 10
Join date : 2013-09-20
Age : 21
Location : Montréal

PostSubject: Re: Microbial Compounds and Organelles   Thu Oct 31, 2013 7:51 pm

So the weighting of the random distribution should take into account the size of the organelle? That's what im trying to say. The resource usage isn't what I'm talking about. I'm talking about the probability of receiving the resource in the random distribution in each timestep. Think about it. 1 tiny organelle vs 1 jumbo organelle, the jumbo one (regardless of its resource usage) has a higher probability of getting the resource. So shouldnt the random distribution have a weighting towards certain organelles dependant on their size?
Sorry if I'm acting all confused
Back to top Go down
View user profile
crovea
Programming Team lead


Posts : 310
Reputation : 59
Join date : 2013-10-07
Age : 26
Location : Denmark

PostSubject: Re: Microbial Compounds and Organelles   Fri Nov 01, 2013 7:21 am

I understood you chef
Back to top Go down
View user profile
Nimbal
Programming Team lead


Posts : 258
Reputation : 24
Join date : 2013-03-17
Age : 32
Location : Ratingen, Germany

PostSubject: Re: Microbial Compounds and Organelles   Fri Nov 01, 2013 12:55 pm

Oh, sorry. I misread your suggestion. But still, the same argument against it applies. Why couple it with the size of an organelle, if we can just as easily (or even easier) make it an independent parameter that designers can tweak?
Back to top Go down
View user profile
crovea
Programming Team lead


Posts : 310
Reputation : 59
Join date : 2013-10-07
Age : 26
Location : Denmark

PostSubject: Re: Microbial Compounds and Organelles   Fri Nov 01, 2013 2:14 pm

Nimbal wrote:
if we can just as easily (or even easier) make it an independent parameter that designers can tweak?
Good point indeed!
Back to top Go down
View user profile
Psych0Ch3f
Newcomer


Posts : 55
Reputation : 10
Join date : 2013-09-20
Age : 21
Location : Montréal

PostSubject: Re: Microbial Compounds and Organelles   Sat Nov 02, 2013 4:45 am

Nimbal wrote:
Oh, sorry. I misread your suggestion. But still, the same argument against it applies. Why couple it with the size of an organelle, if we can just as easily (or even easier) make it an independent parameter that designers can tweak?
Ahh! I think I get what your saying Nimbal. So instead of size have an parameter that just prioritizes certain organelles over others. Makes sense. I was too narrowminded in my approach of the game mechanics. So in reality you'd just have a priority parameter, instead of a more complicated priority parameter that determines the parameter via hex size. (since the independent parameter does the same thing but with less math)

Quick question then, is there a max to how many hexes you can take up inside a cell? And are all organelles fixed in size or can be adjusted? Cause if there is then I would argue for the more complicated hex parameter (i wouldnt see it as too complicated, since its just determining a number via SA or something, but still more complicated than a basic simple parameter)
Back to top Go down
View user profile
Nimbal
Programming Team lead


Posts : 258
Reputation : 24
Join date : 2013-03-17
Age : 32
Location : Ratingen, Germany

PostSubject: Re: Microbial Compounds and Organelles   Sat Nov 02, 2013 5:21 am

Psych0Ch3f wrote:

Is there a max to how many hexes you can take up inside a cell?
There's no hard limit on how big a microbe or an organelle can be.

Psych0Ch3f wrote:

And are all organelles fixed in size or can be adjusted?
The current plan is to fix organelle sizes at design time.
Back to top Go down
View user profile
Nimbal
Programming Team lead


Posts : 258
Reputation : 24
Join date : 2013-03-17
Age : 32
Location : Ratingen, Germany

PostSubject: Re: Microbial Compounds and Organelles   Mon Nov 04, 2013 9:07 am

Big, somewhat important post. Some terminology upfront, just to minimize confusion:


  • Agent: Any kind of resource that is stored and processed inside a microbe. Examples for agents are oxygen, energy or glucose. You may also see the term "Compound" for this, but for programming purposes, it's all the same and "agent" is the term used in the current code.
  • Frame: See "Timestep"
  • Process organelle: An organelle that converts agents into other agents. Each process organelle has an "input recipe" (e.g. 2 CO2, 5 water and 1 sunlight) and an output (e.g. 2 oxygen, 3 energy).
  • Storage organelle: An organelle that can store one specific agent for later use
  • Timestep: Organelles update their state in discrete timesteps. The duration of a timestep is variable and coupled with the framerate, so it's about 10 to 50 milliseconds in length.
  • Vacuole: See "Storage Organelle"


So, crovea / jjonj has been hard at work implementing process organelles and one problem that keeps cropping up with no (for me) satisfactory solution is how to distribute agents from the storage organelles to process organelles (or any organelle, really, as almost all of them will use one agent or the other). This problem becomes apparent when there's not enough of an agent to completely supply all consuming organelles. Some discussion around this can be found starting here.

The solution to this distribution problem should have the following characteristics:


  • The distribution rules, or rather the effects of agent scarcity, should be obvious and intuitive for the player.
  • No organelle should permanently "starve" as long as the microbe keeps getting the organelle's input agents. For example, if organelle A and B need 1 oxygen per second each and the microbe gains 1 oxygen per second, both A and B should continue to function, albeit at reduced effectiveness.
  • The algorithm must be able to handle multiple input agents per organelle, with varying required amounts.
  • The distribution must be framerate independent, so if one timestep is 20 ms in length and the next one is 30 ms, the end result should be the same as with one 50 ms timestep (the organelles know the length of the current timestep).
  • If a microbe has an overabundance of an agent, all organelles requiring that agent should receive the whole amount that they could utilize during a timestep (with possible exception, see next point)
  • Feature idea, courtesy of crovea: Vacuoles should have a maximum "bandwidth" for distributing agents to other organelles.


I've already mentioned some options in this post, but all of them have one problem or the other with the above requirements, especially when actually trying to implement them.

Now, my current idea to make agent distribution manageable is a two-step process. During each timestep, these steps are executed:


  1. For each agent a, each organelle g is asked for the amount g_a of that agent it can use in that timestep. The total amount is summed up in sum_a.
  2. If the current total amount a_max that can be provided by the vacuoles is more than sum_a, give each organelle its requested amount and we are done
  3. Otherwise, give each organelle a proportionate amount of the leftover stores. For now, let's say the amount is proportional to the requested amount, but it should be easy to use a separate priority parameter for each organelle (provided by either designers or players)


The actual received agents are stored in an internal storage of each organelle. When it's the organelle's turn to do something, it depends on the organelle whether it consumes those agents immediately or waits for a minimum amount of each before doing anything.
Back to top Go down
View user profile
NickTheNick
Overall Team Co-Lead


Posts : 2312
Reputation : 175
Join date : 2012-07-22
Age : 20
Location : Canada

PostSubject: Re: Microbial Compounds and Organelles   Mon Nov 04, 2013 10:10 pm

I know this isn't the point of your post, but I would like to briefly address agents/compounds. Now, the word agent can mean a substance that exerts some force or effect. In the case of Thrive's Microbe Stage, it means specifically a special substance (that's basically fictional) produced by a cell to interact with another cell in a unique way, that cannot be done by just any old substance. It wouldn't make much sense for an agent to refer to just any substance in general. A compound refers to any matter in the game, like the wood in a tree, the bone in a spinal cord, the gasoline in a tank, or the steel in a sword. If anything, agents are a classification of compounds, a type of matter specifically only produced by cells to interact with other cells, and only present in the Microbe Stage. For that reason, I would stress that for all intents and purposes, we keep and use the word compound, not agent, when referring to things like oxygen, glucose, or energy (which is the one exception of something that isn't matter being a compound).

I don't want to create any unnecessary work here, but for the sake of preventing miscommunication or confusion in the future, I would recommend that the code references from agent be changed to compound, because the compound system is something that persists all the way throughout the game, whereas the term agent is never used again after you leave the Microbe Stage (except maybe again in the Strategy Mode as another word for spies). The sooner the change is made, the less code has to be revised, whereas if we waited until later and made the change, it would mean changing a lot more code. However, I understand that it can take a long time to go through code and make changes from one word to another in every instance, or at least I think so, so I want to hear feedback on whether it's practical to be able to do that. Hopefully there is some search function, like in any web browser, that would allow you to find all instances of a word.

tl;dr  Agents should be renamed compounds. Agents can be considered a type of compound.

---

Just some more terms to define:

Reactant: A compound that is consumed in by a process.
Product: A compound that is produced by a process.
Process Time: The time it takes for a full process to take place.

Processing Power

What you said Nimbal has just made me realize an important point. The processes we have written down only show proportion. They say nothing about the maximum capacity of processing. This means that currently, a mitochondrion could produce 3800 ATP in one timestep, provided it had 600 oxygen and 100 glucose. We need to define the maximum processing power of any process organelle. To use a Minecraft example to illustrate this:

Spoiler:
 

A furnace can only smelt (process) one unit at a time, with the remainder being stored in the furnace's storage. In Thrive, an organelle, such as a mitochondrion, will need to likewise be limited in how many units of oxygen and glucose it can process at a time to convert into ATP, water, and carbon dioxide. A mitochondrion can store reactants as it waits to get all the reactants it needs for a process to take place. So, for example, a cell intakes 5 oxygen and 1 glucose. These are first stored in the vacuole, and then sent to the mitochondrion since it's not doing anything and it needs them(let's just say it's the only organelle in the cell so there's no competition). The mitochondrion will take these reactants and hold on to them, but not begin executing a process, because it still needs one more oxygen. Once it gets that one more oxygen, it begins to execute its process. If all the storage organelles of a cell are full, no further compounds can be picked up until there is space again.

Note that a mitochondrion needs a minimum of 1 glucose and 6 oxygen to execute its process. It will not go ahead with 0.5 glucose and 3 oxygen, because 1 unit is the smallest unit of measurement. Think of it like one molecule.

If we are to limit the processing power of an organelle in Thrive just like they do in Minecraft, then we also need a means by which to measure the quantity of something in Thrive.

6 Oxygen + 1 Glucose -> 38 ATP + 6 Water + 6 Carbon Dioxide

The above reaction shows that for every one molecule of glucose and six molecules of oxygen. To track the number of reactants it can process at once, we need units for the compounds. I suggest we just use arbitrary units of measurement, because most of these compounds either exist in almost infinite supply at this point of the game or become insignificant after leaving the Microbe Stage. If this is the case, then we can easily convert the proportions of the reactants and products in a process into the capacity of a process. So, if for example I have 12 units of oxygen and 2 units of glucose, only 6 oxygen and 1 glucose will be used to begin with, and then when that process is done the next 6 oxygen and 1 glucose are used. So, hopefully that solves the issue of limiting the processing power of organelles.

Distributing Compounds to Organelles

Next up is the issue of how to determine who gets the compounds they need when there is a shortage. I think that the best answer to this is to create a list of organelles to cycle through. A cell takes all of the process organelles it has and makes them into a list.

Mitochondrion
Mitochondrion
Agent Vacuole

Then, as it receives compounds into its storage vacuole, it distributes them to the organelle at the top of the list. It gives the top organelle only enough for it to meet its minimum number of reactants. Once the organelle has enough reactants to execute a process, it is moved to the bottom of the list. So, for the above cell, the list would look like this as time passed, and compounds were picked up:

Mitochondrion
Mitochondrion
Agent Vacuole

Mitochondrion
Agent Vacuole
Mitochondrion

Agent Vacuole
Mitochondrion
Mitochondrion

However, this is done independently for each compound. So, for example, a mitochondrion needs 6 oxygen to execute a process. If a mitochondrion gets 6 oxygen, but is still waiting for 1 glucose, then any new oxygen will be given to the next organelle that needs oxygen on the list, because the mitochondrion can't hold anymore. If there are no more organelles on the list to give it to, the vacuole holds on to the oxygen.

Surface Area

Now, when I was said this "If all the storage organelles of a cell are full, no further compounds can be picked up until there is space again", it made me realize something else. There is also currently no limit on cells picking up compounds or excreting compounds from their environment. This means that, in one timestep, cell with a chloroplast will immediately have it's vacuoles filled with water and carbon dioxide, since both of those exist in basically infinite amounts at this point of the game. However, a cell shouldn't be able to just "pick up" or "drop" whatever it wants as fast as possible. In reality, the surface area of a cell's membrane affects how much "stuff" it can take in or out per second. In Thrive, since cell's are made of hexes, the surface area of a cell can be found easily, so we need some sort of system that uses the surface area of a cell to determine the maximum rate it can pick up or drop compounds from its environment (eg. each exposed face of a hex increases the maximum exchanging rate of the cell by 5 units per second).

---

These are my thoughts for now. I realize it's long and gets quite confusing at parts, but it's the best I could do with the busy schedule I currently have. Basically, I think the most significant thing I think you could draw away from my post is that I'm suggesting processes be in discrete amounts, with a minimum quantity for reactants, and a limit on the processing power of organelles.

_________________
Look at how far we've come when people thought we'd get nowhere. Imagine how far we can go if we try to get somewhere.
Back to top Go down
View user profile
Sponsored content




PostSubject: Re: Microbial Compounds and Organelles   Today at 6:06 pm

Back to top Go down
 
Microbial Compounds and Organelles
View previous topic View next topic Back to top 
Page 6 of 9Go to page : Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next

Permissions in this forum:You cannot reply to topics in this forum
Thrive Game Development :: Development :: Design :: Gameplay Stages :: Microbe-
Jump to: