MSFS2020 Soaring Thread

As for thermals, I am still thinking about possibilities of their generation using existing real works APIs and game capabilities, and I just can’t see the way how it can work at least 50% close to reality. Locked weather controls can make such attempt wasting of time. So I probably will leave this idea for now, and focus on improvements of manual thermals - visual sights, effectiveness, possibility for the users to upload and download thermal maps. That will not cover whole word obviously, but will make popular gliding places more accessible for people.

1 Like

Sounds good!

Great idea! Thanks :+1:

I was ridge soaring in the DG808S on a couple of occasions and it was fun and a challenge - even with the wind speeds of 15kts I was barely able to gain some altitude with the generated ridge lifts. But that boils down also to my (in)ability to glide effectively :slight_smile: I suppose.

1 Like

It heavily depends on the slope, your position over the said slope, wind/slope direction and your flap setting.

In the sim so far I usually set the wind to about 15 knots, too, but that way ridge lift is pretty strong IMO, especially if the wind hits the slope at 90 degrees.
(In the Rocky Mountains near Salt Lake City for example a wind from 270° at 15 knots will let you climb at over 1000 feet per minute sometimes).

I am going to try lower wind settings soon (probably tonight) to see if I can replicate the feeling I had in real life when I flew in a glider in my area a few years ago.
We rarely exceeded 400 feet per minute in a thermal or ridge lift back then (granted, the DG808 should climb significantly better than our heavy two-seated DG500).

On the other hand: for a game it is more fun to climb a bit more easily so you don’t have a lot of short flights (often happens in real life since you sometimes struggle to find lift at all so the 1800ft from the winch is everything you get) and you don’t have to circle a thermal for ten minutes because it only provides 200 feet per minute of climb for you.

That’s where the old, small wooden gliders come in handy btw. A Schleicher Ka6 is around half the weight of a DG808 and slower, which helps in smaller thermals or when ridge lift is weak.

The guys in my brother’s glider club love the Ka6 and K8. They are not very good for cross country but they are great for local flying with little lift.
All of them have seen days in which the modern gliders struggled but the old K8 flew for hours.

Man, now I want a well working Ka6 or K8 in MSFS2020. The only converted Ka6 I found sadly crashes the sim.

1 Like

@thealx

Concerning those hand placed thermals I have an idea:
Could you allow a value like 999 999 in the strength field to randomize the thermal?

999 in size would mean: between 0.2nm and 1nm
999 in strength would mean between 5kn and 15kn

The other idea would be: have an input field on the thermal page that allows an input between 10 and 100.
The program then uses a random generator to pick a certain percentage (the number from the field) of the thermals to display.

That way I could just use a file with 100 possible positions for thermals but have an uncertainty which ones would work, and how strong.

That is the problem - same thermals table should work the same in multiplayer, or it will be weird when one player have huge lift, but another (in same location) not, if we are speaking about team play.

But, some known/common value can be used for randomization - coordinates, hour, wind power.

Thanks, I will think about your idea. And I prefer bounds instead of hardcoded values, like “0.5-1.5” which gives more control for the player.

1 Like

Sure, that would be even better. :slight_smile:

I think the solution could be not to randomize but to use procedural generation.
If both players use the same seed (like the word “banana”, easy to exchange) they will get the same random-looking result.

Ok, I am probably going to embarass myself now, but hey YOLO. :smiley:

@thealx I thought about those thermals again. You could do something like this to create them procedurally.
The multiplayer users would just make sure to all use the same seed and thermal file.

EDIT: Alternatively you could use the first six or seven digits of the unix timestamp as the seed. Most people have their PCs halfway well synchronized. But it is more dangerous as those might have flipped over if some people join significantly later.

Steps required:

  1. have an input field for a user to input some words as the seed
  2. build a checksum from the seed, make sure it is a number that doesn’t create weird results in the function
  3. run it through some function, I used a sinus because it is endless and creates numbers between minus one and one. Afterwards I did Math.abs to keep it positive because that’s how we roll here. :smiley:
  4. define minimums and maximums or read them from the CSV
  5. for every thermal use its line number in the CSV or something, multiply it by the hash number, and throw it into the function.
  6. apply minimums

This should give your thermals positive lift numbers between the defined minimums and maximums.
They will look random, but they aren’t. The same seed should always produce the same numbers.

Sorry for doing the below example in JavaScript, I just did some work on a small website script so I had it handy. Also this might not exactly be perfect, I literally wrote it in 5 minutes. Maybe this helps you or at least gives you an idea. :slight_smile:
(also you can throw it into JS Bin - Collaborative JavaScript Debugging or so, it should work)

// this function is just a simple and fast checksum generator I took from stackexchange, nothing fancy.
// you can of course use md5 or any other as well.
function checksum(s)
{
  var chk = 0x12345678;
  var len = s.length;
  for (var i = 0; i < len; i++) {
      chk += (s.charCodeAt(i) * (i + 1));
  }

  return (chk & 0xffffffff).toString(16);
}


var myseed = "MudspikeFTW";                  // this is the input seed.
var myhash = parseInt(checksum(myseed),16);     // parseInt just makes it decimal

var rangemin = 2;                  // minimum strength of the thermal
var rangemax = 15;               // maximum strength of the thermal

for (var i=1; i<=100; i++)
{
    // just a demo, in your case you could just use the line number from the CSV.
    myThermal = i; 

    // the sinus function. It puts out nice integer numbers.
    myThermalForce = Math.round((Math.abs(Math.sin(myThermal*myhash))*rangemax));
   
  	// if it is too small, just give it the minimum value
	if (myThermalForce <= rangemin){myThermalForce = rangemin;}

    // instead of console log obviously do something else with the number here.
    console.log(myThermalForce);
}

EDIT: And you can use this with little adjustments for the size of the thermals as well.

Meh. Seeded it a few times and it isn’t always nicely random.
If you use it you might want to shuffle the numbers in some way (for example first do all the even indexes, and then the odd ones. Or do sin for the odd ones and cos for the even ones. :smiley: ). Anyway, I guess you get the idea.

uhm… okaaaay) my head occupied by stupid AI sitting inside of towplane, but I will proceed to work with thermals soon and will check your method.

While spelunking around for a different topic (VFRMAP for VR - #7 by fearlessfrog) it occurred to me I should pass on the nice OpenAIP thermals data feed they do here -

https://openaip.github.io/api-v2-docs/#/Hotspots/get_hotspots

It seems to be a free to use and open dataset of thermal hotspots for gliders, so passing on in-case it’s useful for any MSFS plugin. It might already used, so apologies if not useful or already used.

The data seems to be from here: openAIP - Worldwide Aviation Database

…with a map display (thermals shown as cloud in orange/red):

1 Like

that’s actually interesting. denpend on coverage, but worth to try.

1 Like

We have worked hard to bring the Kinetic Assistant to the new level, and partially succeed. Unfortunately, current API and MSFS limitations does not allow Kinetic to fully control AI aircraft, but we have reached some acceptable level of towing by AI.

Two modes available - immediate take off, which can be used anywhere, and taxiing together with a tow plane. Both are quite limited so please read the description carefully. We are going to improve AI behavior but that will take some time to find proper ways to do it. At the moment, towing by live pilot is preferable and strongly recommended to try at least once!

Rope calculation improved as well so you will have better experience now both with winch and towing.

Several issues fixed: compatibility with CJ4 mod and thermals CSV files reading error.

Check out our latest videos for additional information:

2 Likes

Awesome!
Will try it at the weekend.

@Aginor, shall we try towing one of these days? (ehm, evenings) I am happy to be the towing pilot :+1:

So far I have only done winch starts. So yeah, that would be a nice thing to try.

Great, let’s agree on a day/time here so that others, if they’d wish, could join too, OK?

crash falling GIF by nikki desautelle

Sadly my time is a bit limited next week (business trip, extra annoying during this time) so I would have to go for today or tomorrow, or wait one week.

Maybe we should make an extra thread for that.
I’ll post one in a few minutes.

Here it is.