Agathorn

[WIP] RealScience - Say good bye to whack-a-mole style "science"...

Recommended Posts

RealScience

Say good bye to whack-a-mole style "science", and embrace a more solid research based approach to science

I started building RealScience for one main reason; I don't like the way 'science' works in stock KSP. It isn't science in my mind. It is more a game of whack-a-mole where you wait for the right conditions to press a button. They could have called ti anything and the game mechanic would have been the same. I personally wanted something more involved, something that would require you to actually collect research and analyze it in some way. RealScience is what was born from those desires. This has been in development for a bit now, in private and in conjunction with the RO guys in IRC, but i'm now posting it here publicly.

This is by no means done, but it is usable. There is still a lot of work to be done but it is mostly in the area of improving the UI, and expanding to provide designers more conditions.

First off please be aware that RealScience is just an Add-On that does absolutely nothing by itself. It requires designers to create experiments to use with it. These will be showing up initially in RP-0 soon(ish) but anyone else is also more than welcome to build experiments. What I am trying to say though is here what you will find in this thread for download is just the plugin, no experiments.

OVERVIEW

You can see the original design as documented at the start of development on the Wiki here: https://github.com/jwvanderbeck/RealScience/wiki/Original-Design

In a nutshell RealScience seeks to do two things, only the first of which is being tackled at this point.

1) Remove the whack-a-mole style stock science and replace it with a system that requires the player to collect research under proper conditions, and then analyze that research to complete "the science"

2) Overhaul the stock tech nodes system with something that uses science disciplines or schools, and unlocks parts with some semblance of meaning to the research done. IOW don't unlock engines because someone duck up rocks, and don't unlock rover wheels because someone researched how air flows at high altitudes. By removing a generic science pool and replacing it with various disciplines like say Geology, Meteorology, Astronomy, Physics, etc we can make part unlocks be at least somewhat logical.

At this time I am focusing on part 1, and part 2 will come in the future. Part 2 will however always be optional for those who want better experiments, but want to keep the stock tech nodes.

CREATING EXPERIMENTS

Creating experiments is simply a matter of making standard KSP config files to define the experiment and add it to the desired parts. You can find draft documentation on how to do that on the Wiki:

https://github.com/jwvanderbeck/RealScience/wiki/Experiments

LICENSE

This work is shared under CC BY-NC-SA 4.0 license.

SOURCE CODE

The source for RealScience is available on GitHub: https://github.com/jwvanderbeck/RealScience

RELEASES

RealScience is in development, and during that time all releases will be posted to GitHub. Please do not ask about CKAN support. That will not happen until I feel RealScience is ready to move to the Releases forum. GitHub release can be found here:

https://github.com/jwvanderbeck/RealScience/releases

  • Like 4

Share this post


Link to post
Share on other sites

Certainly sounds interesting; like a 'mini-sim' for research within KSP. Do you have any plans or interest to interoperate with contracts, so that contracts can actually appear for specific experiments, or vice versa?

Share this post


Link to post
Share on other sites
Do you have any plans or interest to interoperate with contracts, so that contracts can actually appear for specific experiments, or vice versa?

I have been thinking along those lines, and I definitely think its worth doing. I'm not sure right now how that will look, but the short answer is yes :)

Share this post


Link to post
Share on other sites

Will sandbox mode get some love...?

Share this post


Link to post
Share on other sites

This looks realy cool. I suggested the same kind Idea several months ago, but no one seem to be intrested in it so droped the idea. Great to see there are people with similar ideas. It would be great if you could somehow integrate this in KSPI, where the advanced reactors technodes would only become unlocked after you have done some extensive testing with more primitive versions, like the to old school stock NERVA nuclear engine. I always felt people would first have to use NERVA enignes before being allowed to build more advanded engines. Now you can skip NERVA engines by collecting soil sample from the mun. This always seemed counter intiutive to me.

- - - Updated - - -

Say, In KSPI, I made some modification which might be intresting for this Mod:

I made the amount of research collected in the Science Laboratory depend on a combination of the Kerbal Profession, Level and Stupidness. I suggest you do something similar for Real Science in where is speeds op the time needed to collect the science. The science gains would be the same, it's just that an experienced inteligent Scientist can conduct the same research much faster than unexperience stupid pilot which don't have a clue what to do science right. As a result, the analyst tell the Pilot to collect it again, which will repeat itself untill the pilot accidently does it right.

i-have-no-idea-what-im-doing.jpg

- - - Updated - - -

Edit: I'm revieving the conditions and could you please add the following supported conditions:

- Module (I want a test to be valid for part which implement a certain module)

- Thermal Heat (I want to test the Nerva Engine close to overheating)

- Resource ratio (percentage filed ( I want to bring Wasteheat close to overheating)

- Crew Type (I want both a engineer and scientist be around for certain experiments with the engines)

I also propose we create some Interface which can be implemented by PartModules to allow reading out certain condition, like the used Fusion Mode


public IReseachSciencePartVariables
{
Dictionary<string, double> ContitionVariableDict { get;}
}

whis would allow us to add PartModule Variable Checks, like PartModule.FusionMode = 2

you would simly have to veridy if the mentioned module implements the interface and verify of the variable is avialable

rocketscience.jpg

Edited by FreeThinker

Share this post


Link to post
Share on other sites
Will sandbox mode get some love...?

In what way? I mean Science doesn't work in Sandbox mode so I'm not sure what you are asking. There isn't necessarily any reason why you couldn't still run RealScience experiments in Sandbox mode, but you wouldn't get any science from doing so. It could completer contracts though I guess (once that is in).

Share this post


Link to post
Share on other sites

I like what you want to accomplish here, but I am not sure to understand the whole mechanism.

In the real world, the data that we collect helps to make discoveries, but some time we can make discoveries just pushing researchers to work more hours with less data.

Lets imagine that we need to improve our climate model (which is science), for that, each extra data of a different condition that we gather will help us to develope the model, the data that helps us to comply this might be temperature and pressure from differnet height and locations, also from other planets (a good climate model should work for any planet), more data we have, more easy is to improve the different levels of a climate model.

Lets imagine that the climate model study has 10 levels, to increase each level requires X data points, data that is very similar does not add much extra points, we can also invest fund or other means to increase levels without the need of much data, or we can increase levels with a lot of data and less investment.

Other studies may be effect of gravity on kerbals, this will require many different kerbals, experience different G levels and exposure times.

Then studies in space station needs to require a scientist, but each scientist will add certain max data in certain time, then to get more data you need to contract another scientist and remplace the other one.

So to allow all this, we need an easy way to set conditions. If we need to set each condition and we need to accomplish one by one then is not much different than the current ksp science system, we need to have dynamic conditions.

For example: we add a data point for all measures with a certain difference in height or value, and the data worth more depending how different their values are.

This will be easier for the community to design new science objectives.

Edited by AngelLestat

Share this post


Link to post
Share on other sites

Edit: I'm revieving the conditions and could you please add the following supported conditions:

- Module (I want a test to be valid for part which implement a certain module)

- Thermal Heat (I want to test the Nerva Engine close to overheating)

- Resource ratio (percentage filed ( I want to bring Wasteheat close to overheating)

- Crew Type (I want both a engineer and scientist be around for certain experiments with the engines)

Crew Type is already on my list, see Issue #3 (https://github.com/jwvanderbeck/RealScience/issues/3), and I have added an Issue to add a module property to the Part condition. For the other two, Thermal Heat and Resource Ratio, would those be on the craft in general or on a specific part?

I also propose we create some Interface which can be implemented by PartModules to allow reading out certain condition, like the used Fusion Mode


public IReseachSciencePartVariables
{
Dictionary<string, double> ContitionVariableDict { get;}
}

whis would allow us to add PartModule Variable Checks, like PartModule.FusionMode = 2

you would simly have to veridy if the mentioned module implements the interface and verify of the variable is avialable

Yeah something like that is a good idea, but let me put some thought into how it should work. It got really complicated in TestFlight and I would rather avoid that complexity here if possible.

- - - Updated - - -

I like what you want to accomplish here, but I am not sure to understand the whole mechanism.

In the real world, the data that we collect helps to make discoveries, but some time we can make discoveries just pushing researchers to work more hours with less data.

Lets imagine that we need to improve our climate model (which is science), for that, each extra data of a different condition that we gather will help us to develope the model, the data that helps us to comply this might be temperature and pressure from differnet height and locations, also from other planets (a good climate model should work for any planet), more data we have, more easy is to improve the different levels of a climate model.

Lets imagine that the climate model study has 10 levels, to increase each level requires X data points, data that is very similar does not add much extra points, we can also invest fund or other means to increase levels without the need of much data, or we can increase levels with a lot of data and less investment.

Other studies may be effect of gravity on kerbals, this will require many different kerbals, experience different G levels and exposure times.

Then studies in space station needs to require a scientist, but each scientist wil add certain max data in certain time, then to get more data you need to contract another scientist and remplace the other one.

So to allow all this, we need an easy way to set conditions. If we need to set each condition and we need to accomplish one by one then is not much different than the current ksp science system, we need to have dynamic conditions.

For example: we add a data point for all measures with a certain difference in height or value, and the data worth more depending how different their values are.

This will be easier for the community to design new science objectives.

There are plans for this type of research, where basically you will perform research over multiple flights. It isn't done yet, still on the drawing board, but is definitely something I want to do.

Share this post


Link to post
Share on other sites
This looks realy cool. I suggested the same kind Idea several months ago, but no one seem to be intrested in it so droped the idea. Great to see there are people with similar ideas. It would be great if you could somehow integrate this in KSPI, where the advanced reactors technodes would only become unlocked after you have done some extensive testing with more primitive versions, like the to old school stock NERVA nuclear engine. I always felt people would first have to use NERVA enignes before being allowed to build more advanded engines. Now you can skip NERVA engines by collecting soil sample from the mun. This always seemed counter intiutive to me.

By the way, not that I want to discourage you from using RealScience, but have you looked at TestFlight? It seems more suited to what you describe, in fact it is one of the things it was designed to do. What you can do is configure the advanced reactor part to have a very high failure rate between say 0 and 5,000 data, so that if anyone goes directly to them they are going to fail all the time. Then you configure it so that testing on the NERVA engines transfers to the reactors. What that means is that data gained through flight testing of the NERVA gets applied to the reactors in some percentage as defined. Essentially what you do is make it so that the player has to do some flights with the NERVA first to gain data or else the reactors will just have really high failure rates.

Share this post


Link to post
Share on other sites

There are plans for this type of research, where basically you will perform research over multiple flights. It isn't done yet, still on the drawing board, but is definitely something I want to do.

What you mean by perform research over multiple flights?

To resume all the things I said, my only suggestion is to have a way to include dynamic conditions and a point based progress on data collection, not sure how hard or easy is this from the mod perspective.

Share this post


Link to post
Share on other sites

I guess this is more for the experiment makers, but I'd love to see this integrate with resources in some way, with planetary geology experiments increasing knowledge gained from scanning (or ideally scansat maps), etc.

Share this post


Link to post
Share on other sites
What you mean by perform research over multiple flights?

To resume all the things I said, my only suggestion is to have a way to include dynamic conditions and a point based progress on data collection, not sure how hard or easy is this from the mod perspective.

When you said multiple data points, I took that to mean multiple flights collecting data. I now see what you mean, and will have to put some thought into how best to support it.

Share this post


Link to post
Share on other sites
By the way, not that I want to discourage you from using RealScience, but have you looked at TestFlight? It seems more suited to what you describe, in fact it is one of the things it was designed to do. What you can do is configure the advanced reactor part to have a very high failure rate between say 0 and 5,000 data, so that if anyone goes directly to them they are going to fail all the time. Then you configure it so that testing on the NERVA engines transfers to the reactors. What that means is that data gained through flight testing of the NERVA gets applied to the reactors in some percentage as defined. Essentially what you do is make it so that the player has to do some flights with the NERVA first to gain data or else the reactors will just have really high failure rates.

I realy don't like the concept of failing nuclear engines, along with any Kerbal Goverments. Instead I like to make the technologies available over time by using technologies which are required to unlock that technology. Note that most KSPI have at least 2 techlevels, from which the first version only offers limited performance/abilities and a higher tech-nodes unlock the full potential of a part. I want to take it one step further by requiring the player to first use the technology before any advanced version become available.

- - - Updated - - -

By the way, not that I want to discourage you from using RealScience, but have you looked at TestFlight? It seems more suited to what you describe, in fact it is one of the things it was designed to do. What you can do is configure the advanced reactor part to have a very high failure rate between say 0 and 5,000 data, so that if anyone goes directly to them they are going to fail all the time. Then you configure it so that testing on the NERVA engines transfers to the reactors. What that means is that data gained through flight testing of the NERVA gets applied to the reactors in some percentage as defined. Essentially what you do is make it so that the player has to do some flights with the NERVA first to gain data or else the reactors will just have really high failure rates.

I realy don't like the concept of failing nuclear engines, along with any Kerbal Goverments. Instead I like to make the technologies available over time by using technologies which are required to unlock that technology. Note that most KSPI have at least 2 techlevels, from which the first only offers limited performance/abilities and a higher technodes unlock the full potential of a part. I want take it want step further is by requiring the player to first use the technology before any advanced version become available and was hoping your mod would allow me this.

Share this post


Link to post
Share on other sites

This does sound quite interesting and seems to give more purpose to long duration studies rather then go there, click, go home / transmit. Will be very interested in seeing where this goes. :)

Share this post


Link to post
Share on other sites
I realy don't like the concept of failing nuclear engines, along with any Kerbal Goverments. Instead I like to make the technologies available over time by using technologies which are required to unlock that technology. Note that most KSPI have at least 2 techlevels, from which the first version only offers limited performance/abilities and a higher tech-nodes unlock the full potential of a part. I want to take it one step further by requiring the player to first use the technology before any advanced version become available.

Fair enough. Just giving you another option. Bear in mind however that at this stage RealScience doesn't futz with nodes. That will come later.

Share this post


Link to post
Share on other sites
Fair enough. Just giving you another option. Bear in mind however that at this stage RealScience doesn't futz with nodes. That will come later.

Well the ability to collect some science using reactors will be a nice step, and hopefully motivate people to use to role play it a bit more. I personally also like to have diverse ways of acquiring research

Share this post


Link to post
Share on other sites

This sounds interesting.

could we have some screenshots of the action menus when this mod is in use?

Share this post


Link to post
Share on other sites
This sounds interesting.

could we have some screenshots of the action menus when this mod is in use?

Yes I will get some screenshots up soon though bear in mind the UI is really not finished. Well nothing is finished, but the UI really needs more work.

Share this post


Link to post
Share on other sites

will it be possible to build free-form experiments.

Example

I want to investigate the geological structure of duna rocks to determine mining potential.

I have all stock science tools and Dmagics awesome science pack.

I go to duna, take surface sample with my kerbal and put it to experiment module. Start heating sample with laser( laser tool), until it reaches a certain temperature(temp tool), then i run my spectroscopy and get data for its composition. Do this in a certain area and few times, we will have a better estimation of mining potential and some science to adapt our mining equipment to duna.

At this point i have another idea, do not know if its possible. is it possible to collect specific science like geological, meteorological, astronomical science so only a certain type of science will unlock a certain tech node in tech tree. Example, geological science unlocks mining, meteorological science unlocks plane parts etc.

Share this post


Link to post
Share on other sites

At this point i have another idea, do not know if its possible. is it possible to collect specific science like geological, meteorological, astronomical science so only a certain type of science will unlock a certain tech node in tech tree. Example, geological science unlocks mining, meteorological science unlocks plane parts etc.

I dont think that might be a good idea. Space exploration data is not related with the majority of hardware components used to achieve space exploration.

Is like pretend that the space agency is the only thing in the whole kerbal sociaty.

The discoveries you made in ksp world, is just a way to represent how data collection and research may help to develope new technology, but this new technology may come from any place. But in ksp we can only measure the science breakthrough from the agency perspective as an average parallel to the other science branch.

Share this post


Link to post
Share on other sites

At this point i have another idea, do not know if its possible. is it possible to collect specific science like geological, meteorological, astronomical science so only a certain type of science will unlock a certain tech node in tech tree. Example, geological science unlocks mining, meteorological science unlocks plane parts etc.

This is the general idea for phase 2, but that is farther down the road.

Share this post


Link to post
Share on other sites

Neat, I've hated the way KSP handles "science" for a long while now and it's kept me from playing in career mode. I've been thinking of working on something similar but my design was slightly different: Remove the perfect knowledge of the solar system that the Kerbals have right now and introduce the concept of discoverable information. I think at one point Squad had a similar idea, or still does, because if you look at the CelestialBody API, they have DiscoveryInfo. which seems to be a lot like what I'm talking about.

The way I envisaged it working was by starting you off with either no knowledge or only basic knowledge of the celestial bodies except Kerbin, the Sun, and maybe Mun and Minmus. So if you want to know about Duna, you first have to discover it by performing an astronomical survey and detecting it. Then, once you know something is there you have to perform continued observations of it to derive information such as its orbital characteristics, size, mass, etc. Want to know if it has an atmosphere or what the atmosphere is composed of? Perform a spectroscopy experiment. All of this data would also be subjected to errors, based on the quality of your equipment or the number of observations you perform. Perform more observations, use better equipment, or get smarter scientists to lower your error.

Why is this useful? My thought was to turn the map view into just a representation of the data we have, not a perfect representation of the system as it is. So if you add a maneuver node, the orbital path it calculates would be determined by your best current estimate of a CelestialBody's position, mass, velocity, etc; which may not correspond with reality. So the more science you perform, the better your data gets, and the more useful the map view becomes.

I also thought of pairing it with a "simulator" type system, like in SRL, KCT, or HoloDeck so that you could simulate your flight without spending funds, but the simulation would be based on the data you have. So, for instance, if your current data underestimates the mass of Duna, you may be able to successfully escape Duna in the simulation, but may not actually have enough delta-v in reality. Or, for example, Duna may be represented by a perfectly flat sphere in simulation until such time as you launch a SCANSat scanner to map its terrain.

By making the action of performing science yield relevant knowledge, I think you make it much more engaging, realistic, and educational to boot.

I've also thought about the concept of "RawData" and "ProcessedData". Basically, sensors would produce RawData which could then be converted by instruments into ProcessedData, which could then be used by Kerbal scientists to produce "Facts" (i.e. knowledge). The difference between the two being that RawData is reusable: it can be reanalyzed to produce either new Facts or Facts with a lower amount of error once you have better equipment or smarter scientists. ProcessedData can only yield specific Facts with specific amounts of error. Once you've determined that Duna has X mass from ProcessedData, that's all the useful information you can glean. However, RawData is extremely large: so it takes up a lot of storage space and would take forever to send back to Kerbin. So your choices are:

1) Spend a lot of time and energy transmitting the RawData.

2) Convert the RawData to ProcessedData and just transmit that.

3) Return the RawData on a ship back to Kerbin.

4) Send a scientist Kerbal to the RawData to analyze it in situ.

The only thing that's kept me from doing this are the huge amount of disparate areas it would have to touch and whether or not it's even feasible to do some of the stuff I want to do. :)

Any thoughts on doing something similar?

EDIT: Fully reading your design doc, I notice you mention something similar to the Raw/ProcessedData concept under "Unorganized Thoughts".

Edited by zengei

Share this post


Link to post
Share on other sites

Sounds great! If development goes smoothly, I'll try it in my next career game. Thanks for your work on this project!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now