Thrive Game Development
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Thrive Game Development

Development of the evolution game Thrive.
 
HomeHome  PortalPortal  Latest imagesLatest images  SearchSearch  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 2 users online :: 0 Registered, 0 Hidden and 2 Guests

None

Most users ever online was 443 on Sun Mar 17, 2013 5:41 pm
Latest topics
» THIS FORUM IS NOW OBSOLETE
Microbial Compounds and Organelles - Page 6 Emptyby NickTheNick Sat Sep 26, 2015 10:26 pm

» To all the people who come here looking for thrive.
Microbial Compounds and Organelles - Page 6 Emptyby NickTheNick Sat Sep 26, 2015 10:22 pm

» Build Error Code::Blocks / CMake
Microbial Compounds and Organelles - Page 6 Emptyby crovea Tue Jul 28, 2015 5:28 pm

» Hello! I can translate in japanese
Microbial Compounds and Organelles - Page 6 Emptyby tjwhale Thu Jul 02, 2015 7:23 pm

» On Leave (Offline thread)
Microbial Compounds and Organelles - Page 6 Emptyby NickTheNick Wed Jul 01, 2015 12:20 am

» Devblog #14: A Brave New Forum
Microbial Compounds and Organelles - Page 6 Emptyby NickTheNick Mon Jun 29, 2015 4:49 am

» Application for Programmer
Microbial Compounds and Organelles - Page 6 Emptyby crovea Fri Jun 26, 2015 11:14 am

» Re-Reapplication
Microbial Compounds and Organelles - Page 6 Emptyby The Creator Thu Jun 25, 2015 10:57 pm

» Application (programming)
Microbial Compounds and Organelles - Page 6 Emptyby crovea Tue Jun 23, 2015 8:00 am

» Achieving Sapience
Microbial Compounds and Organelles - Page 6 Emptyby MitochondriaBox Sun Jun 21, 2015 7:03 pm

» Microbe Stage GDD
Microbial Compounds and Organelles - Page 6 Emptyby tjwhale Sat Jun 20, 2015 3:44 pm

» Application for Programmer/ Theorist
Microbial Compounds and Organelles - Page 6 Emptyby tjwhale Wed Jun 17, 2015 9:56 am

» Application for a 3D Modeler.
Microbial Compounds and Organelles - Page 6 Emptyby Kaiju4u Wed Jun 10, 2015 11:16 am

» Presentation
Microbial Compounds and Organelles - Page 6 Emptyby Othithu Tue Jun 02, 2015 10:38 am

» Application of Sorts
Microbial Compounds and Organelles - Page 6 Emptyby crovea Sun May 31, 2015 5:06 pm

» want to contribute
Microbial Compounds and Organelles - Page 6 Emptyby Renzope Sun May 31, 2015 12:58 pm

» Music List Thread (Post New Themes Here)
Microbial Compounds and Organelles - Page 6 Emptyby Oliveriver Thu May 28, 2015 1:06 pm

» Application: English-Spanish translator
Microbial Compounds and Organelles - Page 6 Emptyby Renzope Tue May 26, 2015 1:53 pm

» Want to be promoter or project manager
Microbial Compounds and Organelles - Page 6 Emptyby TheBudderBros Sun May 24, 2015 9:00 pm

» A new round of Forum Revamps!
Microbial Compounds and Organelles - Page 6 Emptyby Oliveriver Wed May 20, 2015 11:32 am


 

 Microbial Compounds and Organelles

Go down 
+20
Immortal_Dragon
Tarpy
Narstak
Psych0Ch3f
Nimbal
crovea
untrustedlife
RodGame
Doggit
MitochondriaBox
Toughtopay
ido66667
Rorsten594
Raptorstorm
Daniferrito
The Uteen
~sciocont
Seregon
Holomanga
NickTheNick
24 posters
Go to page : Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next
AuthorMessage
crovea
Programming Team lead
crovea


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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyWed 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
Nimbal
Programming Team lead



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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyWed 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
crovea
Programming Team lead
crovea


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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyWed 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
NickTheNick
Overall Team Co-Lead
NickTheNick


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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyWed 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.
Back to top Go down
Psych0Ch3f
Newcomer
Psych0Ch3f


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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyWed 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
crovea
Programming Team lead
crovea


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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyThu 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
Nimbal
Programming Team lead



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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyThu 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
Psych0Ch3f
Newcomer
Psych0Ch3f


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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyThu 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
crovea
Programming Team lead
crovea


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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyFri Nov 01, 2013 7:21 am

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



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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyFri 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
crovea
Programming Team lead
crovea


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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyFri 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
Psych0Ch3f
Newcomer
Psych0Ch3f


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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptySat 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
Nimbal
Programming Team lead



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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptySat 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
Nimbal
Programming Team lead



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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyMon 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
NickTheNick
Overall Team Co-Lead
NickTheNick


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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyMon 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.
Back to top Go down
Nimbal
Programming Team lead



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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyTue Nov 05, 2013 3:40 am

NickTheNick wrote:

I would recommend that the code references from agent be changed to compound
I'm fine with that. It shouldn't be much more than a simple search and replace.

NickTheNick wrote:

Distributing Compounds to Organelles
This could work. The major drawback I see is that this approach leads to organelles working in a "round robin" fashion, with the player having little or no control over the order in which organelles are updated. It also precludes any prioritizing of the organelles.
Back to top Go down
crovea
Programming Team lead
crovea


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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyTue Nov 05, 2013 11:39 am

Quote :
A furnace can only smelt (process) one unit at a time
You didn't mention the issue of how long a process should take, but i plan on making it flexible, so you can define it per processing organelle.

Quote :
I suggest we just use arbitrary units of measurement
Agreed.

Quote :
Distributing Compounds to Organelles
I see a few potential problems with this:

  • It removes the possibility of priority. Say if you want your life essential systems to get higher priority (aka. getting most or all of the necessary resources), than those producing toxins. Which might not be an issue, tho.
  • Unstable production rate. The player would in some intervals get a quick supply of ATP for example, while the Mitochondrion are at the top of the list, but then when the turn goes to some other process using glucose, the player would notice a period where no ATP is produced even though he may have/be collecting more glucose, it just disappears and doesn't result in more ATP (glucose hungry organelle).
  • What if the organelle at the top of the list isn't done producing yet, from the last time it was on top of the list. Sure you may fill its internal storage for the next round, but then if it still isn't done the next time around, you would either have to wait for it to finish and then give it resources or throw it to the back of the list, giving even less stable production rate.
  • It seems like a very unnatural way for the biological processes to behave.

These problems mostly relate to special cases, but generally it just doesn't seem as flexible as other solutions (like nimbals suggest, or the way it's currently implemeneted which gives compounds to a random candidate which needs it.

Quote :
Feature idea, courtesy of crovea: Vacuoles should have a maximum "bandwidth" for distributing agents to other organelles.
I have two reasons for this, none of which relates to making it a feature for players directly. First supporting argument is that it seems natural that 3000 ATP can't be moved instantly to the organelles that need them, second reason is that it solves a small programming/implementation problem. I also don't see any arguments against it. As of right now it is implemented as a hard cap that says a maximum of 10 units from each compound type can be distributed per second to organelles (1 per 100ms). Changing it to something else like 5 units per second is just changing a number, but it could also be made more flexible (altough i think a hard limit makes sense).


Related question: Excess products from a process that can't be stored by the cell, because it doesn't have appropriate vacuole or they are filled, are just ejected from the microbe right?
Back to top Go down
Nimbal
Programming Team lead



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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyTue Nov 05, 2013 1:00 pm

crovea wrote:

Changing it to something else like 5 units per second is just changing a number, but it could also be made more flexible (altough i think a hard limit makes sense).
I'd like it to be configurable per storage organelle. Mostly because it would open up another upgrade path. Vacuoles could be upgraded to either increase storage capacity or increase their input / output.
Back to top Go down
NickTheNick
Overall Team Co-Lead
NickTheNick


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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyThu Nov 07, 2013 2:44 am

crovea wrote:
You didn't mention the issue of how long a process should take, but i plan on making it flexible, so you can define it per processing organelle.
Yes, it's up to the process how long it takes.

Nimbal wrote:
This could work. The major drawback I see is that this approach leads to organelles working in a "round robin" fashion, with the player having little or no control over the order in which organelles are updated. It also precludes any prioritizing of the organelles.
crovea wrote:
These problems mostly relate to special cases, but generally it just doesn't seem as flexible as other solutions (like nimbals suggest, or the way it's currently implemeneted which gives compounds to a random candidate which needs it.
Oh, I didn't realize there was already something in place, that's good then. I agree though with what you said.

crovea wrote:
I have two reasons for this, none of which relates to making it a feature for players directly. First supporting argument is that it seems natural that 3000 ATP can't be moved instantly to the organelles that need them, second reason is that it solves a small programming/implementation problem. I also don't see any arguments against it. As of right now it is implemented as a hard cap that says a maximum of 10 units from each compound type can be distributed per second to organelles (1 per 100ms). Changing it to something else like 5 units per second is just changing a number, but it could also be made more flexible (altough i think a hard limit makes sense).


Oh, so that's what was meant by a "bandwidth" limit. I agree then, that is necessary, because osmosis and diffusion rates (aka "bandwidth") are very real and significant in molecular biology. You don't need to change it to 5. That was just a random example to illustrate my point. However, it's not only vacuoles that have a limit as to how fast they can exchange compounds. The cell itself is limited by this. It can't immediately pick up 500 glucose. It has a rate based on the number of exposed hex faces (surface area) it has.

crovea wrote:
Related question: Excess products from a process that can't be stored by the cell, because it doesn't have appropriate vacuole or they are filled, are just ejected from the microbe right?
I was going to say yes, but then I realized that, due to what we just said above, a cell can't always do that. It might produce 100 units of waste, but have a rate of diffusion of 10 units/second. It would have nowhere to store them, because the vacuoles would be full. All I can think of is that it would burst the cell, but in that case I would imagine cells would burst very often. Do you guys have any solutions to this?

Also, I just want to point out, i think 36 is a more accurate number for the yield of ATP from one process of cellular respiration (it was originally 38). If there are any biologists here please correct me if I'm wrong. I've seen conflicting numbers from different sources but 36 was predominant.
Back to top Go down
crovea
Programming Team lead
crovea


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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyThu Nov 07, 2013 4:21 am

Quote :
It might produce 100 units of waste, but have a rate of diffusion of 10 units/second. It would have nowhere to store them
If you hadn't brought this up, it would have ended up with an implementation where output were transfered instantly. I can see the inconsistency in this, however. We could implement a kind of 'cytoplasm space' where compounds can reside (and even let the cell burst if it gets filled to a limit) and diffuse to and from. This might, however, be overly complex for what we need. Perhaps the simple 'products-move-instantly' approach is good enough.
Back to top Go down
NickTheNick
Overall Team Co-Lead
NickTheNick


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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyThu Nov 07, 2013 7:04 pm

How about an organelle only begins a process if there is space to hold all of its products?

If this was the case, products would go into the vacuoles for storage. Then, any products that are needed by the cell (say a process produces glucose which is stored in a vacuole, and there is another organelle in the cell that needs glucose) stay in storage to be used. Any products that aren't needed (say the same process produces CO2, but no organelles need it) then it is expelled.
Back to top Go down
crovea
Programming Team lead
crovea


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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyThu Nov 07, 2013 8:27 pm

Quote :
but no organelles need it
Define need. Do you mean that they can use it at some point because it's part of their "recipy", or that they are currently missing it to start production.

A case: Say some organelle uses water. Then the mitochondria will not produce ATP if the water vacuole is filled? If thats what you're suggesting there are obvious problems with it ;P
Back to top Go down
NickTheNick
Overall Team Co-Lead
NickTheNick


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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyThu Nov 07, 2013 8:45 pm

Need as in it is a reactant or required compound for any organelle in the cell. Also, a vacuole would be able to hold any compounds. But that does raise a good point. A plant cell, for example, needs water for their chloroplasts (photosynthesis) but also produces water from their mitochondria. That would mean their vacuoles would eventually just only hold water and there would be no room for anything else. We'll have to do instant expelling of products then until we can get a solution.
Back to top Go down
crovea
Programming Team lead
crovea


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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyThu Nov 07, 2013 8:54 pm

Quote :
Also, a vacuole would be able to hold any compounds
Oh... that will.. require some changes in the implementation then.
I assume it can hold a mix of different compounds in one vacuole then or is it only one type of compound per vacuole but the vacuole can be changed to hold something else.

I'll be heading to bed now tho, brb 11 hours
Back to top Go down
NickTheNick
Overall Team Co-Lead
NickTheNick


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

Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 EmptyThu Nov 07, 2013 10:58 pm

Quote :
Oh... that will.. require some changes in the implementation then.
I assume it can hold a mix of different compounds in one vacuole then or is it only one type of compound per vacuole but the vacuole can be changed to hold something else.
Yeah, vacuoles are just general storage. Otherwise cell's would have to have so many vacuoles just to hold what they need.

crovea wrote:
brb 11 hours
Hah, okay, see you then.

Well, I discussed this with dani, and we got a solution laid out. Any feebback/criticism is welcome. The second idea I came up with myself for a simpler solution.

Solution A:

A vacuole will at all times excrete unnecessary compounds. However, when it is 80% full or more (that threshold is up for revision) a vacuole starts to excrete NECESSARY compounds, no longer undergoes any processes, and no longer intakes any compounds. This means that even if the cell consumes glucose, it will excrete any glucose in the vacuole until it is below the threshold again. However, it always begins by excreting compounds that are in the most excess. Also, the cell only begins to excrete necessary compounds after ALL unnecessary compounds have been emptied out. 

Okay, how does the cell tell whether a necessary compound is in excess or not? Look at the following example.

A cell has 1 mitochondria and 2 chloroplasts in it. The total "demand" or "need" of the cell is:

Mitochondrion #1:
1 Glucose
6 Oxygen

Chloroplast #1:
6 Water
6 Carbon Dioxide
(Sunlight isn't a compound)

Chloroplast #2:
6 Water
6 Carbon Dioxide

Therefore, the total is:
1 Glucose
6 Oxygen
12 Water
12 Carbon Dioxide

This is assuming all of the above organelles process at the speed, let's just say all of them finish a process in 1 second. This is basically the ratio of compounds that the cell needs in order to keep working. When deciding what to expel, the vacuole gets rid of anything that is over this ratio. So if that cell contained 15 glucose, 90 oxygen, 180 water, and 200 carbon dioxide, it would get rid of the carbon dioxide first, because the carbon dioxide is over that ratio and is therefore in excess. If there are multiple compounds in excess, the vacuole randomly excretes between those two.

However, this means that there could be a scenario where a cell is over 80% full but the storage contains the perfect ratio. In this case, one unit of a random compound is expelled. Doing this will break the ratio, which will cause the vacuole to start excreting the excesses again. If the ratio is met again, then another random one will get kicked out, causing there to be excesses and the vacuole ejects them, and this will keep going until the capacity is back under 80%.

Solution B:

A vacuole will at all times excrete unnecessary compounds. However, when it is 80% full or more (that threshold is up for revision) a vacuole starts to excrete NECESSARY compounds. This means that even if the cell consumes glucose, it will excrete any glucose in the vacuole until it is below the threshold again. However, it always begins by excreting compounds that are the lowest priority. All compounds found in the microbe stage have an inherent priority. Also, the cell only begins to excrete necessary compounds after ALL unnecessary compounds have been emptied out. 

For example, say a cell is storing water, oxygen, and glucose. All of these are necessary compounds, and all unnecessary compounds have been emptied out but the vacuole is still over 80% full. The cell will begin to excrete the lowest priority one first. Water has a low priority, so it goes first. If the cell is still over 80% when all the water is gone, it will go to the next lowest priority, which is oxygen, and excrete that. It will only stop when the vacuole is under 80% again.

---

Also, something I discussed with Psychochef wass the concept of Transport Rate and Transport Weight. Transport Rate, as I mentioned earlier, and as crovea called a "bandwidth" for cells, is basically how many units of compounds a cell can take in or out at a time. Think of a room with a bunch of doors. If only one person can enter or leave the room at a time per door, and there is a certain amount of doors, there is a limit to how many people can be entering/leaving the room at the same time. This in Thrive is called Transport Rate, in units/second. Each exposed hex face would increase this rate by X units/second.

However, something I wanted to add in was the idea of Transport Weight. Each compound has transport weight as a property (but it wouldn't matter for compounds not found in the microbe stage). When a molecule of a compound is transported into or out of a cell, instead of just taking up one unit of space, it would take up as many units as it had transport weight. For example, if a cell has a transport rate of 10 units/second, and compound X has a transport weight of 2, then each second the cell could only take in or eject 5 molecules of compound X. What do you think about this feature? Too complex? It adds in the fact that molecules like glucose take longer to be picked up than other molecules.

Lastly, I did get a suggestion from one of the other users that we should create a prototype or demo of this first, playtest it, and see what the results are and find the best solution in that manner.
Back to top Go down
Sponsored content





Microbial Compounds and Organelles - Page 6 Empty
PostSubject: Re: Microbial Compounds and Organelles   Microbial Compounds and Organelles - Page 6 Empty

Back to top Go down
 
Microbial Compounds and Organelles
Back to top 
Page 6 of 9Go to page : Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next
 Similar topics
-
» Custom Organelles
» Developing Guide To: Microbial Stage
» Microbial trailer
» Melee organelles: To stab or not to stab
» A Question About Microbial Gameplay...

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