Jump to content

Recommended Posts

Review material properties

Spoiler

3.thumb.png.fd41f507cde19808859f8c5e7b95e40a.png

Solid: The difference of thermal conductivity of metal could be more huge. Currently they are too similar.

1.thumb.png.4e8289fa62f44564a140e3832d24e540.png

Liquid:

The density of liquid should depend on liquid's Max Mass For Liquid Under Compression.

Viscosity could have more influences.

When boiling, crude oil and Petroleum could be decomposed to carbon / refined carbon.

When boiling, liquid steel should be decomposed to steel gas and refined carbon.

2.png.0b631c913edd84db6c217cc72ca76f47.png

Gas: Correct the error of molar mass of gas.

Material.xlsx

 

Building heat generation display

12.png.96c7a19b4a21a52faa706c44a1b20b6c.png.13bd5bd43819dc965a3521de584cb006.png

0.005 times heat display factor is confusing. Please rethink about it.

4.png.fcbcb06c4f2779096862fc6c36576e74.png.e163930e08764b8f17ba07eb4452ac2d.png

It would be good if aquatuner and regulator have heat production tooltips.

11.png.f4682c2a921ce4b3d1fcdbc44b0900cc.png.6f9504cf5d7ffd1e5dd069d14b8def92.png

If temperature of surroundings are higher than the overheat temperature of machine, the heat which is  exhausted to surroundings should be exhausted to machine directly. For some machines which remove heat, the rule is reversed.
If surroundings are vacuum or have low mass (<1.5kg), slimiar as above.

Spoiler

Following code is I written to solve the situation when surroundings are vacuum or have low mass.


public class StructureTemperatureComponents : KGameObjectComponentManager<StructureTemperatureData>
      
    public override void Sim200ms(float dt)
	{
		for (int i = 0; i < this.data.Count; i++)
		{
			StructureTemperatureData structureTemperatureData = this.data[i];
			if (Sim.IsValidHandle(structureTemperatureData.simHandle))
			{
				structureTemperatureData.ApplyPendingEnergyModifications();
				if (!structureTemperatureData.isActiveBuilding)
				{
					this.data[i] = structureTemperatureData;
				}
				else
				{
					if (structureTemperatureData.operational == null || structureTemperatureData.operational.IsActive)
					{
						structureTemperatureData.selectable.SetStatusItem(Db.Get().StatusItemCategories.OperatingEnergy, this.operatingEnergyStatusItem, structureTemperatureData.simHandle);
						if (structureTemperatureData.ExhaustKilowatts != 0f)
						{
							Extents extents = structureTemperatureData.GetExtents();
							int num = extents.width * extents.height;
							float num2 = structureTemperatureData.ExhaustKilowatts * dt / (float)num;
							float num3 = 0f;
							for (int j = 0; j < extents.height; j++)
							{
								int num4 = extents.y + j;
								for (int k = 0; k < extents.width; k++)
								{
									int num5 = extents.x + k;
									int num6 = num4 * Grid.WidthInCells + num5;
									float num7 = Mathf.Min(Grid.Mass[num6], 1.5f) / 1.5f;
									float num8 = num2 * num7;
									num3 += num2 - num8;
									SimMessages.ModifyEnergy(num6, num8, structureTemperatureData.maxTemperature, SimMessages.EnergySourceID.StructureTemperature);
								}
							}
							StructureTemperatureComponents.UpdateSimState(ref structureTemperatureData, num3 / dt);
							structureTemperatureData.energySourcesKW = this.AccumulateProducedEnergyKW(structureTemperatureData.energySourcesKW, structureTemperatureData.OperatingKilowatts + num3 / dt, BUILDING.STATUSITEMS.OPERATINGENERGY.OPERATING);
							structureTemperatureData.energySourcesKW = this.AccumulateProducedEnergyKW(structureTemperatureData.energySourcesKW, structureTemperatureData.ExhaustKilowatts - num3 / dt, BUILDING.STATUSITEMS.OPERATINGENERGY.EXHAUSTING);
						}
						else
						{
							StructureTemperatureComponents.UpdateSimState(ref structureTemperatureData);
							structureTemperatureData.energySourcesKW = this.AccumulateProducedEnergyKW(structureTemperatureData.energySourcesKW, structureTemperatureData.OperatingKilowatts, BUILDING.STATUSITEMS.OPERATINGENERGY.OPERATING);
						}
					}
					else
					{
						structureTemperatureData.selectable.SetStatusItem(Db.Get().StatusItemCategories.OperatingEnergy, null, null);
					}
					this.data[i] = structureTemperatureData;
				}
			}
		}
	}

 

Tepidizer temperature limit

Currently the default states of Tepidizer is heating  instead of overtemp, which allowed as use automation periodic signal to break the limit. It would be better ff the default states could be change to overtemp and update the states more rapidly.

Some special structure can bypass the limit.5.png.ef736fdc5dd38ea5c6f8ad4df61cf577.pngSo tepridzer should not only detect the temperature of its surroundings, but also itself.

 

 

Building submerging detection

Currently building only detect the mass of liquid,  which allowed us to submerge building into layers different liquid without flooded. I suggest building should also count how many grids are occupied by liquid, or how many layers liquid above it.

 Like this6.png.c0578a23d0aca24499a8af7f4de5183a.png

 

Vent overpressure detection

Liquid Vent should compare the Max Mass For Liquid Under Compression of liquid and the mass in grid.

 

New building —— Space Radiator

Space radiator send its heat to space, the amount is base on its temperature.

 

New gas mechanism

After gas have correct molar mass, we could make more improvements.

The fluid flow in world simulation should depends on pressure, and the pressure is calculated by mass ÷ density. The density of gas are their Molar Mass, and the density of gas are their Max Mass For Liquid Under Compression

The max transmit amount of pipe could also be relative with mass ÷ density.

 

New custom game selection

Add dark mode. In dark mode, Fog of War is stronger. Players has less visual field. And the visual field could be relative with time and light. In dark and night, the visual field is smallest. In noon and light environment, the visual field is bigger.

 

Infinity technology

A technology which can research repeatedly. Each time when the research is completed, duplicate could get a random buff, such as increasing states points, a stress reduce buff, even remove a bad trait, or anything else. Anyway, the most important things is this technology can be researched repeatedly.

Link to comment
https://forums.kleientertainment.com/forums/topic/93709-my-suggestion-list/
Share on other sites

12 minutes ago, R9MX4 said:

Review material properties

  Reveal hidden contents

3.thumb.png.fd41f507cde19808859f8c5e7b95e40a.png

The difference of thermal conductivity of metal could be more huge. Currently they are too similar.

1.thumb.png.4e8289fa62f44564a140e3832d24e540.png

The density of liquid should depend on liquid's Max Mass For Liquid Under Compression.

Viscosity could have more influences.

When boiling, crude oil and Petroleum could be decomposed to carbon / refined carbon.

When boiling, liquid steel should be decomposed to steel gas and refined carbon.

2.png.0b631c913edd84db6c217cc72ca76f47.png

Correct the error of molar mass of gas.

Material.xlsx

 

Building heat generation display

12.png.96c7a19b4a21a52faa706c44a1b20b6c.png.13bd5bd43819dc965a3521de584cb006.png

0.005 times heat display factor is confusing. Please rethink about it.

4.png.fcbcb06c4f2779096862fc6c36576e74.png.e163930e08764b8f17ba07eb4452ac2d.png

It would be good if aquatuner and regulator have heat production tooltips.

11.png.f4682c2a921ce4b3d1fcdbc44b0900cc.png.6f9504cf5d7ffd1e5dd069d14b8def92.png

If temperature of surroundings are higher than the overheat temperature of machine, the heat which is  exhausted to surroundings should be exhausted to machine directly. For some machines which remove heat, the rule is reversed.
If surroundings are vacuum or have low mass (<1.5kg), slimiar as above.

  Reveal hidden contents

Following code is I written to solve the situation when surroundings are vacuum or have low mass.



public class StructureTemperatureComponents : KGameObjectComponentManager<StructureTemperatureData>
      
    public override void Sim200ms(float dt)
	{
		for (int i = 0; i < this.data.Count; i++)
		{
			StructureTemperatureData structureTemperatureData = this.data[i];
			if (Sim.IsValidHandle(structureTemperatureData.simHandle))
			{
				structureTemperatureData.ApplyPendingEnergyModifications();
				if (!structureTemperatureData.isActiveBuilding)
				{
					this.data[i] = structureTemperatureData;
				}
				else
				{
					if (structureTemperatureData.operational == null || structureTemperatureData.operational.IsActive)
					{
						structureTemperatureData.selectable.SetStatusItem(Db.Get().StatusItemCategories.OperatingEnergy, this.operatingEnergyStatusItem, structureTemperatureData.simHandle);
						if (structureTemperatureData.ExhaustKilowatts != 0f)
						{
							Extents extents = structureTemperatureData.GetExtents();
							int num = extents.width * extents.height;
							float num2 = structureTemperatureData.ExhaustKilowatts * dt / (float)num;
							float num3 = 0f;
							for (int j = 0; j < extents.height; j++)
							{
								int num4 = extents.y + j;
								for (int k = 0; k < extents.width; k++)
								{
									int num5 = extents.x + k;
									int num6 = num4 * Grid.WidthInCells + num5;
									float num7 = Mathf.Min(Grid.Mass[num6], 1.5f) / 1.5f;
									float num8 = num2 * num7;
									num3 += num2 - num8;
									SimMessages.ModifyEnergy(num6, num8, structureTemperatureData.maxTemperature, SimMessages.EnergySourceID.StructureTemperature);
								}
							}
							StructureTemperatureComponents.UpdateSimState(ref structureTemperatureData, num3 / dt);
							structureTemperatureData.energySourcesKW = this.AccumulateProducedEnergyKW(structureTemperatureData.energySourcesKW, structureTemperatureData.OperatingKilowatts + num3 / dt, BUILDING.STATUSITEMS.OPERATINGENERGY.OPERATING);
							structureTemperatureData.energySourcesKW = this.AccumulateProducedEnergyKW(structureTemperatureData.energySourcesKW, structureTemperatureData.ExhaustKilowatts - num3 / dt, BUILDING.STATUSITEMS.OPERATINGENERGY.EXHAUSTING);
						}
						else
						{
							StructureTemperatureComponents.UpdateSimState(ref structureTemperatureData);
							structureTemperatureData.energySourcesKW = this.AccumulateProducedEnergyKW(structureTemperatureData.energySourcesKW, structureTemperatureData.OperatingKilowatts, BUILDING.STATUSITEMS.OPERATINGENERGY.OPERATING);
						}
					}
					else
					{
						structureTemperatureData.selectable.SetStatusItem(Db.Get().StatusItemCategories.OperatingEnergy, null, null);
					}
					this.data[i] = structureTemperatureData;
				}
			}
		}
	}

 

Tepidizer temperature limit

Currently the default states of Tepidizer is heating  instead of overtemp, which allowed as use automation periodic signal to break the limit. It would be better ff the default states could be change to overtemp and update the states more rapidly.

Some special structure can bypass the limit.5.png.ef736fdc5dd38ea5c6f8ad4df61cf577.pngSo tepridzer should not only detect the temperature of its surroundings, but also itself.

 

 

Building submerging detection

Currently building only detect the mass of liquid,  which allowed us to submerge building into layers different liquid without flooded. I suggest building should also count how many grids are occupied by liquid, or how many layers liquid above it.

 Like this6.png.c0578a23d0aca24499a8af7f4de5183a.png

 

Vent overpressure detection

Liquid Vent should compare the Max Mass For Liquid Under Compression of liquid and the mass in grid.

 

New building —— Space Radiator

Space radiator send its heat to space, the amount is base on its temperature.

 

New gas mechanism

After gas have correct molar mass, we could make more improvements.

The fluid flow in world simulation should depends on pressure, and the pressure is calculated by mass ÷ density. The density of gas are their Molar Mass, and the density of gas are their Max Mass For Liquid Under Compression

The max transmit amount of pipe could also be relative with mass ÷ density.

 

New custom game selection

Add dark mode. In dark mode, Fog of War is stronger. Players has less visual field. And the visual field could be relative with time and light. In dark and night, the visual field is smallest. In noon and light environment, the visual field is bigger.

I like the idea of a dark mode, a space radiator would also be a good thing, the only thing I dont agree with is the new gas mechanics, it would be too complicated, it would make many players leave because their oxygen suddenly turned into hydrogen and everything set on fire

Can you take a look at my suggestions?

19 hours ago, R9MX4 said:

New building —— Space Radiator

Space radiator send its heat to space, the amount is base on its temperature.

This would be quite handy.

 

19 hours ago, R9MX4 said:

Infinity technology

A technology which can research repeatedly. Each time when the research is completed, duplicate could get a random buff, such as increasing states points, a stress reduce buff, even remove a bad trait, or anything else. Anyway, the most important things is this technology can be researched repeatedly.

A long time ago I suggested something similar.  I proposed the repeatable research could slightly enhance a particular building (chosen by the player when choosing the research) so that they'd consume a little less power, generate a little less heat, or have slightly better input/output ratio.  There would naturally need to be floors and ceilings, but I think it would be a worthwhile way for a researcher to spend their time in the late game.

Archived

This topic is now archived and is closed to further replies.

Please be aware that the content of this thread may be outdated and no longer applicable.

×
  • Create New...