The White Guardian

Members
  • Content count

    1547
  • Joined

  • Last visited

Community Reputation

1037 Excellent

About The White Guardian

  • Rank
    Kopernicus Grandmaster

Contact Methods

  • Website URL http://thewhiteguardianart.deviantart.com/
  • Twitter (Nope)

Profile Information

  • Location Planet Custos, Polaris Galaxy

Recent Profile Visitors

7778 profile views
  1. Here's an example code for the new rings with as much info as I could find. Rings { // Reference: // <float> -> 'single precision floating point number'. Basically this entry supports the usage of decimals, unlike an integer. // <bool> -> 'boolean'. Like a classic light switch that can only be 'off' or 'on', a boolean can only be 'true' or 'false'. // Booleans are a way for computers to check 'statements'. // Example: 'Timmy stole three cookies from the cookie jar'. // Then if we ask the computer the status of the boolean 'did Timmy steal cookies?' the answer would be 'true'. // A bit more coding-like: we have the boolean 'a', and two floats, 'b' and 'c', and we ask the computer to compare the values of 'b' and 'c' // Then we would write: // if (b == c) //Ergo, if b is equal to c // { // a = true; // } // else //Ergo, if b is not equal to c, execute this code instead. // { // a = false; // } // Booleans can often be defined as statements that can be true or false. (lockRotation = 'rotation is locked') // Or you can think of them as a question that you can answer yes or no to. (yes = true, no = false) (lockRotation = 'lock rotation?') // <int> -> 'integer'. A way for computers to store whole numbers and whole numbers only. // Ergo entering '255.3' would result in an error as an integer can only be a whole number. Entering '255' however, is just fine. // <Texture> -> a texture. Just enter a filepath to a texture here. Ring { // These require a different format than you might think. // Function: R = (l/r)*1000 // Where R is the radius as you would enter it below, // l is the start/end limiter of your ring (start: value for innerRadius, end: value for outerRadius) // And r is the radius of your planet. // Example: // "I want my ring to start at a semi-major axis of 8 million meters (8 000 000 m)" // "I want my ring to end at a semi-major axis of 15 million meters (15 000 000 m)" // "The planet I want it around has a radius of 6 million meters (6 000 000, ergo 1 Jool radii)" // Then the result is: R = (8000000 / 6000000) * 1000 = ~1333. // And: R = (15000000 / 6000000) * 1000 = 2500 // So we enter: // innerRadius = 1333 // outerRadius = 2500 // Since innerRadius and outerRadius expect a 'float', we can also add decimals if we want. innerRadius = <float> outerRadius = <float> // "The distance between the top and bottom faces of the ring in milliradii" thickness = <float> // The inclination of the ring relative to the planet's equator angle = <float> // "Angle between the absolute reference direction and the ascending node." // Layman's terms: use this to offset the ring relative to the planet's surface, the 'longitude'. longitudeOfAscendingNode = <float> // The texture of your ring. texture = <Texture> // The texture is multiplied by this color. // Since it is UnityEngine.Color (Unity's color format), we have three different color formats. // Format 1: UnityEngine. Ergo: color = r,g,b,a with r,g,b and a on a scale of 0-1. // Format 2: Image Editing Software. Ergo: color = RGBA(r,g,b,a) with r,g,b and a on a scale of 0-255. // Format 3: Hexadecimals. Ergo: color = #rrggbb using hexadecimals for each color. Alpha is automatically set to 1. // Example: we want the color to be pure white. // Format 1: color = 1,1,1,1 // Format 2: color = RGBA(255,255,255,255) // Format 3: color = #ffffff color = <UnityEngine.Color> // Whether the rotation of the ring is locked. Ergo: should the ring rotate? // 'Yes' -> enter 'false' // 'No' -> enter 'true' // Example: we want a ring that does NOT rotate. Therefore we lock it's rotation. So we enter: // lockRotation = true lockRotation = <bool> // The rotation period of the ring in seconds. // Example: "I want my ring to rotate once every 17 minutes" // Then you would enter: 17 * 60 = 1020 // Result: rotationPeriod = 1020 // Note: // If 'lockRotation' is true: setting the value of rotationPeriod to 0 will stop the ring from moving entirely. // If 'lockRotation' is false: setting the value of rotationPeriod to 0 will make the ring adopt the planet's rotation period. // Example: the planet has a rotation period of four hours, lockRotation is false and rotationPeriod is set to zero. // Result: the ring has a rotation period of four hours as well. rotationPeriod = <float> // If true, ring will receive no light-based information. Set to false if you are using the new shaders, otherwise set to true. unlit = <bool> // Whether or not you want to use Blackrack's fancy ring shaders (stuff like planet shadows). // Enter true if you want them, enter false if you don't. useNewShader = <bool> // The penumbra multiplier for the new ring shader. You don't have to specify this if you don't use Blackrack's ring shader. penumbraMultiplier = <float> // The amount of vertices of the ring. // In layman's terms: the greater this number, the higher the quality, but the harder it becomes to render the ring. steps = <float> // "Number of times the texture should be tiled around the cylinder" tiles = <float> } }
  2. Interesting ideas, and a fair point. I'll include both changes in the next update of Planet Cyran, the second option available through placing a single file in the GameData/PlanetCyran folder. The main idea with Cyran was making a planet that was not too far out - mods like OPM and Kerbol Origins already have that covered. The inner Kerbal solar system does not leave much room for planet placement though, therefore I chose it's current configuration. My main idea was giving Dres some love as it is mostly forgotten when it comes to mission planning in KSP. I figured adding a fire giant and a system of diverse an colourful moons would boost Dres' popularity. Then the idea of changing Dres came along, and Iltan was born. Anyhow, here's what I'm going to do. 1. Update Cyran to 1.3 and give Dres it's place back while adding a new moon ('Driss') to take it's place in Cyran's system 2. Add a configuration that moves Cyran to the position of 'Planet 9', placing it behind Jool, or behind Plock if OPM is detected. 3. Make a brand new mod that gives Dres a not too drastic facelift while adding some new features that should make it a more interesting mission destination.
  3. @Avera9eJoe thank you for figuring this out! I kept seeing these odd detail-related cutoffs on the clouds but no clearance as to what was causing it exactly. I personally figured the detail tex would be applied like a standard Unity detail mapper... regardless there is certainly some room for improvement when it comes to detail-enabled cloud layers on densely-clouded worlds.
  4. The orbit color is off. That has to do with how computers store colors. In KSP colors are stored as the unity 'Color' data type, which is: public Color name = new Color(r,g,b,a); In normal English: "Computer, make a new, easily accessable Color value with the name 'name'. It will store a new Color value, which has the values r for red, g, for green, b for blue, and a for alpha." The above code will give an error as r,g,b, and a are expected to be 'float values', ergo a value between 0 and 1, whereas you're more used to the digital image software structure of 0-255. There are three ways of storing colors in KSP. One: the default Unity way: r = (R/255) Where r is the color in a float value, and R is the color in the image editing format. Two: the hexadecimal format. Image editing programs often also convert the color into the hexadecimal format, six digits/letters. For example: (1,0,0,1) = 255,0,0,255 = #ff0000, where the first example is in Unity's color format, the second is in Photoshop-like style, and the last one is in hexadecimals. You can enter hexadecimals as color values as long as you add a hashtag to it first so the computer knows it's a hexadecimal value. Examples: #ff0000, #00ff00, #f0f0f0, #bba135, etc. Three: the format you are using here, the image editing format. For this you also need to tell the computer in advance that you're feeding it the color values in an unorthodox (at least to the computer) manner. In this case, write: 'RGBA(r,g,b,a)' with r, g, b, and a being the values of your color in the image editing format. For example: color = RGBA(255,255,255,255) But that isn't what is causing your planet to crash. Let's highlight the problem from the logfile. [LOG 17:33:06]: Parsing Target flyingAltitudeThreshold in (Kopernicus.Configuration.ScienceValuesLoader) as (Kopernicus.NumericParser`1[System.Single]) [LOG 17:33:06]: Exception Was Recorded: Exception has been thrown by the target of an invocation. at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <filename unknown>:0 at Kopernicus.NumericParser`1[System.Single].SetFromString (System.String s) [0x00000] in <filename unknown>:0 at Kopernicus.Parser.ProcessValue (System.Type targetType, System.String nodeValue) [0x00000] in <filename unknown>:0 at Kopernicus.Parser.LoadObjectMemberFromConfigurationNode (System.Reflection.MemberInfo member, System.Object o, .ConfigNode node, System.String configName, Boolean getChilds) [0x00000] in <filename unknown>:0 at Kopernicus.Parser.LoadObjectFromConfigurationNode (System.Object o, .ConfigNode node, System.String configName, Boolean getChilds) [0x00000] in <filename unknown>:0 at Kopernicus.Parser.LoadObjectMemberFromConfigurationNode (System.Reflection.MemberInfo member, System.Object o, .ConfigNode node, System.String configName, Boolean getChilds) [0x00000] in <filename unknown>:0 at Kopernicus.Parser.LoadObjectFromConfigurationNode (System.Object o, .ConfigNode node, System.String configName, Boolean getChilds) [0x00000] in <filename unknown>:0 at Kopernicus.Parser.LoadObjectMemberFromConfigurationNode (System.Reflection.MemberInfo member, System.Object o, .ConfigNode node, System.String configName, Boolean getChilds) [0x00000] in <filename unknown>:0 at Kopernicus.Parser.LoadObjectFromConfigurationNode (System.Object o, .ConfigNode node, System.String configName, Boolean getChilds) [0x00000] in <filename unknown>:0 at Kopernicus.Configuration.Loader.Kopernicus.IParserEventSubscriber.PostApply (.ConfigNode node) [0x00000] in <filename unknown>:0 [LOG 17:33:06]: Inner Exception Was Recorded: Unknown char at System.Double.Parse (System.String s, NumberStyles style, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Single.Parse (System.String s) [0x00000] in <filename unknown>:0 at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 As you can see it tries to parse the flyingAltitudeThreshold, and it instantly throws an exception. Next a few lines of code that highlight where in Kopernicus' config parser code it errors (more specifically the function 'LoadObjectFromConfigurationNode). But then it gets interesting. [LOG 17:33:06]: Inner Exception Was Recorded: Unknown char at System.Double.Parse (System.String s, NumberStyles style, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Single.Parse (System.String s) [0x00000] in <filename unknown>:0 at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 Let's filter out the code vomit to highlight the true problem. [LOG 17:33:06]: Inner Exception Was Recorded: Unknown char This means that you are feeding the computer something that it does not expect. For example, a boolean value (either 'true' or 'false') being assigned the value '16'. I'm not sure due to the way the forums format code, but ensure it's on the same line. Like, instead of flyingAltitudeThreshold = 5000 make it flyingAltitudeThreshold = 5000 I'm sorry, but in this case it's not clear as daylight why exactly it's erroring. Alternatively, try making it 5000.0, to highlight for the computer that it is dealing with a 'double' data type, not an 'integer' (ergo a number with decimal values instead of a whole number). Let me know if it works! Edit: where are the PQSMods? You need to add at least one PQSMod, mate. Otherwise the surface will crash. Since you want a flat plane, try adding this. PQS { Mods { VertexSimplexHeight { deformity = 1 frequency = 1 octaves = 2 persistence = 0.3 seed = 5 enabled = true order = 10 } } } It won't make it perfectly smooth, but make the altitude range from 0-1 very, VERY smoothly. It's nigh perfectly flat.
  5. If you mean scaling up the Scatterer atmosphere in terms of height, then yes - in the scatterer tool, raise the value of 'HR'.
  6. Hello TWG.

    I was visiting your YT channel and noticed you used to have AVP: Edge Of Oblivion.

     

    Can you put a download link for that if you still have it? Please, the official download has been deleted and there are only a few people to have that version now.

    Please?

    1. GenesisPlayz

      GenesisPlayz

      nvm, found a download

  7. Hmm... seems I'll have to recompile using KSP 1.3 + recent Kopernicus version.
  8. Percentages of the maximum altitude (Actually, decimal numbers representing percentages. Like, 10% = 0.1, 20% = 0.2, etc)
  9. @NickRoss120 This pack looks great! If you need any help, let me know!
  10. If you'd read the logfiles you would see that they error right after 'Gradient'. Looking at the Gradient in ScaledVersion shows an error, where you placed a dot instead of a comma, resulting in 112.174 instead of 122,174 for example.
  11. For those eagerly awaiting the revival of my Kopernicus tutorials, I may have big news soon...

    1. Show previous comments  5 more
    2. The White Guardian

      The White Guardian

      @UranianBlue I'm not making tutorials on Space Engine because it's the cheap way out. If I'd teach people how to grab textures from a program in which all planets resemble each other, then the forums will be flooded with planets that look similar.

      The difference in generation speed is because of the engine - Unity was not designed to export textures. I prefer the long waiting method of KSP though, SE easily floods the GPU so that it stops responding if asked to export textures of a resolution that is too great for it to swiftly handle. KittopiaTech exports the map pixel-by-pixel, meaning that the computer does not freeze while working. It's a longer but safer method, and the result is much more worth it.

      Besides - if people wanted to see SE planets they'd open up Space Engine, they're completely different art styles, and merging them is not a good idea. I do get your thought pattern though, but there are better ways of making textures.

    3. UranianBlue

      UranianBlue

      @The White Guardian You can fix the freezing easily.

      https://www.reddit.com/r/spaceengine/comments/52gov2/is_there_a_way_to_export_high_quality_planet/

      Also, there are so many objects in Space Engine and so many ways to randomize textures that the resemblance is negligible.

      I would like to see some more in-depth tutorials on Landcontrol and positioning craters of different sizes at specified locations, not just randomized terrain based on a seed and then a HeightColorMap.

    4. SAS123

      SAS123

      I agree with @The White Guardian, Texture style in SE look very similar to each other and I've played around with it long enough (I used SE to world-build a Solar System for my fictional alien race) that no matter how much you change it up, from afar and even up close sometimes, They all look almost similar to me. It wouldn't be fun to have many planet packs looking like they ripped off from each other. Don't do a No Man's Sky and go overboard. And knowing people, they would be too lazy to go into the coding and make their own textures anyway. Also, there usually is a problem with the height maps even when converted where the terrain won't look smooth but rather blocky when applied to a KSP Planet.

      I like KittopiaTech because it allows full procedural generation of a KSP-like planet but if you do it well enough, you can end up having something unique from other planet packs. It gives an easier idea of what your getting, you can change image size and you can do easy in game editing without having to go into SE and doing copying and pasting from one game to another and having to load KSP up millions of times just to simply see what the texture would look like.

  12. Work on a separate layer on op of the one you are working on, make a large circle covering a corner of your planet, then blur it out. I use a general rule of thumb, using a factor calculated like this: f = i/10 Where f is the factor for the gaussian blur, and i is the average image resolution. Next, copy this shadow onto the layer mask of the layer responsible for your planet's atmosphere rim, move the original 'shadow layer' under the rim layer, and select the transparency around your planet before deleting the shadow outside of the planet. @cratercracker Interesting thread, though what is this thread exactly?
  13. Sorry, that it has to do with lens flare scale over distance is all I know.
  14. @Gameslinx keep in mind that, if you classified Olu'um as a star, you can add a custom lens flare to it with Scatterer...
  15. That'll require editing the brightnessCurve of the star. For the stock sun it gets lower up-close for this effect. brightnessCurve { key = -0.01573471 0.217353 1.706627 1.706627 key = 5.084181 3.997075 -0.001802375 -0.001802375 key = 38.56295 1.82142 0.0001713 0.0001713 } Look at the first curveKey, then imagine what the curve would look like.