Jump to content

Where are we and where are we going?


Captain Kitten

Recommended Posts

In the xEnviro facebook group I am bombarded with questions and sometimes pretty hostile comments on what, why and how we wasted time not fixing stuff in previous versions of xEnviro from 1.06 through 1.09. While I have answered this numerous times before I guess it's naive to think that people have read or will read my previous answers. So I'll explain some of it here and try to add to it as questions are answered.

“Why did you not fix x? Why was version x like…?”
I have explained this before. It’s not as if we’re not aware of the problems that have occurred. Past and present things such as performance issues in 1.09 and so on. xEnviro team is small. That is why we need to make some unpopular decisions and focus hard on where we want to go. Going back and “fixing” something in the older versions is just not an option. If we had done so we would still be stuck chasing x-plane updates and ironing out bugs that followed that path. We wouldn’t be able to get where we are today and 1.10’s volumetric clouds would still be an untouched canvas that is not even framed. The jump to 1.09 (through 1.08) was made after a complete rewrite of xEnviro to be more independent of x-plane’s constant changes to how xEnviro used its resources. Hence the long update time between 1.07 and 1.08. And at the same time we could dive in to noise rendering and get some thorough real world tests.

The pressure to get a new version out led to the release of 1.08 and we got noise rendered 2d billboards. The unfortunate effect of that was that 1.09 (the hotfix of 1.08) became very power hungry and the resolution slider was introduced. We got into a complete mess with perspective and horizon shifts that "broke" the ability to zoom and a whole can of worms we needed a dialogue with Ben Supnik to sort out. Time wasn't on our side while we waited for some answers (not blaming LR for this - we understand that they are occupied with not only their own development, but other 3rd party devs as well) One could claim that the release of 1.08 /  1.09 was a mistake. But we don’t think so. Not by a long shot. We learned a lot from it. One of the things we learned was to not give in to the pressure of releasing too early. And we won’t.

I’ll add to this: A couple of things in 1.06 and 1.07 are simply not possible to fix, and no “bugfree” solution exists. Like with the haze. The top border is sharp no matter what you do because of the way it is presented in x-plane. It’s a plain polygon and it’s flat and sharp. Of course you can add a bunch of blended polygons on top to hide or mask the original, but it opens up a whole new category of bugs and issues. While they blend nicely with terrain and sky, it just does not work against the 2d billboard clouds. And having haze only in CAVOC conditions is not an option.

While this example was explained now as one of the many things that we just had to move away from I will not go into more detail – or discuss this problem in any way. It’s a part of the past. One of many. We have moved on.

“Where are you now in the development?”
We are 3/4th of the way in production. We have about 20 items left on the “must do” list and have another 20 items on the “want to do” list before we release 1.10.  It is impossible to say what these 20 “must do” items represent in a time estimate. While some of you claim that the screenshots I post are proof that xEnviro is ready, it’s not. Why would we hold back on it if it were ready? That just doesn’t make any sense. Among the to do list is finalizing haze and cloud integration. That is a large task. While it looks good I am posting the images where we feel we are succeeding. That does not mean that it looks fantastic all the time. We have some artifacts that will iron themselves out in next phases, but to be sure we assemble and dissemble the different LEGO parts that is xEnviro’s base code – and test. We test a LOT.

“What about Performance in 1.10?”
No clue yet. As of now we are seeing a hit of 10-20 fps. That is before optimizing. So our goal of “better than 1.09” is still well within our reach.

“What about other bug/issue x in x-plane/xE1.0x will 1.10 fix it?”
No. 1.10 replaces the entire way weather is represented and substitutes it with a new version. This does not mean that we won’t have issues, but any issue emerging from 1.10 is 1.10 issue. Stuff like multiple screens and VR not working are not issues. Those are features to be supported in the future (albeit on “wish lists” for 1.10)

“What about what I want? I want feature X now!”
Frankly? We can't afford to care for that now. We have a very clear picture of what we need to do to get this out. Half of your requests and questions are either plainly unobtainable or non-issues in 1.10. The team is working their ass off to get this out the door and we need to focus on getting a well performing and stable platform to add eventual features on. We will take requests and do listen to what you want. Just don't expect it to come with the next update.

Will the clouds be in better resolution when 1.10 releases?
Well, yes and no. And there are two types of no in that answer. Yes, there will be types of clouds that look crisper. (we are not talking in terms of resolution in niose rendering). So there is your yes. The no is split in two because 1: Many types of clouds are not crisp and look almost exactly like you see in some of the screenshots. and 2: Making clouds very detailed is a matter of performance. Performance todays computers are unable to deliver.

As mentioned: I will add to this post as new questions get answered. This way we have one place to go to for this. (I am dead tired and will hopefully be able to edit this post again soon maybe make a plain Q&A post as well)

  • Like 5
  • Thanks 2
Link to comment
Share on other sites

1983685530_b53midbuild.jpg.cbb639d4b4dbac845f7c6c52c4ce0c40.jpg

mid build and test b53

I could have updated this one a bit more. Too much to do, too little time. So I'll write a bit about where we are and where we are going now. But first I'd like to explain why the streams have looked so much worse than the images published. Well, the start of the streams anyway. If you actually look at the whole streams we do find better places to show the more beautiful sides of xEnviro 1.10. But not every streamed version was a beauty and some videos from earlier versions looked better.. Why?

Here is why:

xEnviro development is not a streamlined build. It's not like a painting that goes from nothing, through basic and then gets prettier. The most common misconception of the development of xEnviro 1.10 is perhaps the tendency to compare it to other development cycles. Such as game development or in our community: Scenery and Aircraft.

In general development you mostly know what has to be done. You have a clear view of how each step looks. It’s a very concrete set of LEGOS which are steps on the way to the final build and you build each step and test fit for final assembly. First you model, you take the modeling in sections and you can roughly estimate a time frame. Same with systems. You take systems one by one, section it and get a rough idea of time estimate. Add two months to the total and you have an ETA.

In xE you can break down the final build in to layers. Each layer has their own set of LEGO bricks that need to fit for that layer and they all need to be tested before they are further test fitted with the other layers. If something does not fit, you need to reopen one or both of those base layers to get progress on that part of the development. Now imagine doing this with between 15 and 20 layers. And do all of this with no tools and just math formulas that might be so sensitive that one wrong number or decimal placement crashes every layer around it. You don’t have a manual for where to search or troubleshoot because you invented the program.

Now try to adapt the above to fit inside a box that is changing shape while you are developing.

Low res back layer, sky layer, haze layer, albedo layer, “secret magic layer”, shadows layer, perspective layer, ground haze layer, sun layer, cloud data layer, cloud color layer, volume shadow map layer, volume light map layer. (Some of these consist of several layers at different depths)

So the fact that every beta looks different and is not linear from one stage to the next should be a bit clearer to you now. B42 may look fantastic while b49 has had adjustments to it that made clouds look vastly different. It’s not just a matter of adding a resolution slider or any slider for that matter anymore either since every calculation affects other formulas in different layers. It all must fit.

Well, where are we?
For the Nürburgring analogy: We are on the final straight about to pass the DevilsDiner and the RingTaxi parking. It’s full throttle down the tarmac but we need to plan the final curves before the finish line. It’s a bit foggy and the track is damp. From experience we know that we can be cought out by sudden rain.

2065058450_2019-03-2611_09_22-Nordschleife.jpg(JPEGImage14831171pixels)-Scaled(77).png.e6736a8563360cc519ed3a3c22b391e2.png

Still no ETA?
no

As I mentioned Q1 as a realistic release period I meant it but I am still eating my own words on that one. Even if I never said I was certain. Q2 is now the next hat I will eat. Thing is: We want this out. Oh believe me we want this to be done with. We want to move on to the next part of our project(s). We are far from done when this releases.

  • Like 3
  • Thanks 2
Link to comment
Share on other sites

So, this is why you don't hear from me these days:

Yep, we had to take a pit stop at the Devils diner and rethink a limitation we have been working with since day one of volumetric rendering:
The base shape of the clouds. Let me paint a picture for you - you add a basic shape to 3d space, randomize it's appearence and scattering. Then you add a level of magic plus noise to further randomize the shapes and scattering of the clouds. The niose levels is one thing we have worked a lot on but we sort of lack the versatility of the resulting shapes. (Concerns all cloud types btw)

In this game you need to finish with style - not just on best time. (obviously). So here is what we are doing these days (In the Devils diner) and will do probably do the rest of this week before we get back on the track to finish this race:

These are the base cloud shapes we have had up until now
(one type of the set of clouds). As I mentioned they get vastly more complex when adding the rest of the xEnviro layers.

Base cloud shape from t01 until b57:
1.jpg.b4130d7497637ae002c26420bb65f92c.jpg

So we add complexity to the base cloud shapes and get this:2.jpg.1c9716b8b2d80c8d3cc2a2573a7060ea.jpg

b58 and onward will probably get something similar to this:
3.jpg.ae32483c3970aa65e353edbf58e36439.jpg

So again - we will be adding the rest of the distortion - noise and magic layers on top.

This will be done with performance in focus as we have been all along. We haven't really decided on minimum requirements yet and performance will not determined before the very end of the development.

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

  • 4 weeks later...

Short update on where are we and where are we heading:

(betaversion at time of writing: b70)


I have to stop arguing with jellyfish on the Internet. Just takes too much time and energy. Energy we need to get this over the finish line. We are fighting hard with grain. There are some issues we need to overcome. I'll list a couple here just to let you know what we are working on.

  • Shimmering: Distant clouds shimmer uncontrollably. We have a "blur slider" now that mends this somewhat but it's a tricky one. (Somewhat linked to banding)
  • Grain: The grain is a direct result of a huge performance gain. Blur helps here as well but you loose a lot of detail.
  • Banding: Distant clouds have bands that make them look like horisontal stairs sometimes. Blur helps a lot with this.
  • Resolution: This is somewhat self explainatory. This is linked to all of the above as well.
  • Performance: Well - we are in a good spot now but would like to fix the above issues and what ever we do we either hit a wall of performance hits or xplane starts acting up. (oh did I blame xplane? Jellyfish fights keeps surfacing in my head) But yes. Explained above somewhere. 

In any case we have some dilemmas and compromises to look at and are yet again at some crossroads where we need to decide. 

NO WE'RE NOT GIVING UP. THIS IS NOT A LETTER OF RESIGNATION (talking to the jellyfish again)
I am just trying to stay open and honest about where we are. "So when do you release??" Let's see if you know the answer to this... Yep - no release date. We're so close though. So close. Majority of the work has been done. The above are the only main issues we have. We might decide to bite the apple and release this with one or two items still open. We will be working on xE after 1.10 too so it's not like we're abandoning once released. But we'll have to take that discussion internally. Ahaanyways, I'll leave you with a couple of screenies from b70. Sometimes it just looks great and we whish everyone would be able to experience the good moments. We just have to minimize (hopefully squish completely) the immersion breakers.

 

Stay classy

(*fighting jellyfish = fights you just can't win)

08.jpg.e8cd83de05efc3f05b4e8737590c6d4c.jpg06.jpg.0cdebfe0f140900daca1559ddc0c3b49.jpg03.jpg.2b6b3d5f9208b4a92b007e01a1fa5c4f.jpg
01.jpg.7482bbd15cb2d3466c1b172a5e0ed7e1.jpg

  • Like 4
  • Thanks 1
Link to comment
Share on other sites

I think nobody can argue with honesty, yes, the community is impatient but a statement like this and everyone is happy .

I am thankful you want to release a perfectly polished product but as you said, work will continue after release anyway.

Let's face it, if you release with some bugs and explanations about the work still in progress, I dont think it could be a problem for you (if people are aware before purchasing) and the strong supporters we are will be pleased anyway. It's better to wait with an unpolished product than with nothing 🙂

On the other hand, trolls will be criticizing even with a perfect product...

Keep up!

Link to comment
Share on other sites

Magnus,

As someone acutely aware of some of the difficulties in what you are trying to achieve, I think you and the team have done a fantastic job. Unfortunately there are always some in our community that will find fault/issue with any path chosen. One thing you are guaranteed in this life is that you'll never have 100% of people like or agree with you, the trick I find is to not even engage. It's a fine line though... between engaging potential customers and fostering feedback and healthy discussion vs a developer "ignoring" the community. 

You guys have got a tough job, I am someone following the project very closely biding my time until VR makes the feature list well into the future. There is a number of us that can see the amazing work and this project coming together, from us, you have our thanks and we cannot wait to try it.

Keep up the great work

DJ

  • Thanks 1
Link to comment
Share on other sites

Ps: It seems blur is your magic potion here, is it possible for you to remove blur effect just around the aircraft to see detailed clouds when surfing for example and apply blur in the distance?

Link to comment
Share on other sites

14 hours ago, Captain Kitten said:

We might decide to bite the apple and release this with one or two items still open.

My advice would be to make this version as perfect as you can. The main criticism towards XE has been "Why didnt they fix 1.09 before they reinvent the wheel?" I am afraid that if you will release this version with major let's call them "flaws" then you'd face a very dissatisfied crowd that wouldnt see the point in waiting a very long time only to go from one version with major flaws to another one with different flaws. And these people will certainly try to (and will probably succeed in) badmouthing the entire product. Of course bug-free software doesnt exist and there will always be features to add, but 1.10 should be solid as far as included features goes just to avoid all the negativity that unfortunately is surrounding the product. So take your time, a couple of months more wont make a difference at this point.

  • Like 2
Link to comment
Share on other sites

Tbh I would be happy with a release in a very near future. Imo the screens look very promising and as you said, work wont stop after the release. 
Its just my opinion and I am not referring to any wishes of other people, but if it was me that would be able to decide what to do, I would say release ASAP.
 

Link to comment
Share on other sites

  • 3 weeks later...

Managing expectations

Allright, here's the deal. This will sound like an excuse to some people but I don't care. I know haters will yell and twist my words, but I'm not talking to them. I am talking to the ones who follow along and actually read what I write and have written so far. I appreciate the endless support some have given but I am not specifically writing this for you either. 😉 This is for anyone who wants to know what you actually get and I hope you can understand that we will not be finished with xEnviro when we release 1.10!

Yes, the screenshots you have seen are the real deal. xE1.10 looks fantastic and does do a good job over all. But if you start looking for faults you won't have to search for long before you find something. Just like every other weather addon out there you will still have your moments of bliss and your moments of "what the heck". Hopefully more of the bliss part. You have probably seen clouds that were fantastic with nice detail and fine whisps in earlier versions. And then the clouds look lumpy and low detail now. I have dripped a screensot here and there with obvious flaws so I could explain what we are struggling with in development. And have explained before that the development is not linear. The quality of the clouds and the resolution of them (and haze) is a prime example of it. The clouds have been a major concern all the way along side performance. Where performance always runs away with the longest straw.

This is what is possible:

In the video above I fly through clouds that look like clouds and they have nice whisps. (Dec 16, 2018) This was in the late stages of the test versions. (xE1.10t91) and we drove my PC to the limit but still with averaging 20-25fps in that video. [ My system specs are in my profile. ] But we could not carry on with that setup since there was more to be implemented and other systems did not cope well.

Here is an example of what you will find if you search for faults:
image.png.d9ab38fde79f0ddeff4bef22d4cfbd85.png

From above the cloud intersections with terrain will be even worse. Especially up close. Grain is very present at times, there will be some flickering of clouds in the distance and you may experience some banding.
So, known issues:

  • Grain (result of noise rendering. Only resolution will help)
  • Banding (Solution same as grain)
  • Terrain blending
  • Low detail
  • Some flickering
  • Performance is generally fine. But lowest end systems will struggle. Only solution to performance now is to increase one or more of the above items.

All in all there is a lot of room for improvement and we can remove all of these issues. But improving one item will either exaggerate another item or lower performance. It will all get better over time and AMD's leap in performance (We'll see the 7/7 - 2019) will hopefully make decent systems affordable for everyone. It's about time. Yes, Vulcan will help. But we won't put all of our eggs in that basket just yet. (And yes - we are prepared for Vulcan not compatible but prepared. OpenGL won't vanish straight away either so no need to panic)

This tech is new to us and is an ongoing trial and error in the X-Plane environment. We have done some isolated experiments along the way though. We have tried 2 buffers with 3x resolution and it runs faster than one buffer with 2x resolution. The results were convincing. We have a chance to improve performance and reduce grain, banding and intersection with terrain. 3x resolution wont be as crisp as 2x but it will look almost the same as 2x with blur applied. We can then use blur to hide grain again. We know we can get the same quality but with better performance and less artifacts as it is today. But if we can get tripple buffering working smoothly we get even less grain and less artifacts with the same performance. But this takes time. At least 6 months. So this will be the plan going forward along side giving patches for 1.10 and following the known roadmap.

Thing is. We're not only developing xE for this release. Since X-Plane is a moving target we have to look into being able to adapt to it a few crossroads down the road. It has taken a lot of time. We are very aware of that. But now we are wrapping up the beta and preparing for rc1. I hope b79 will be the last beta.

Tired of waiting? Try developing this... You'll know what tired actually is.

I'll just repeat what I started with: we will not be finished with xEnviro when we release 1.10!

We are not satisfied. We have seen what xE can do. It is so much more than what you will see in 1.10


I'll sign off here. We have a beta to test.

01.jpg.01c24d99cfbfd08a6ce07bd28aa577e6.jpg


 

  • Like 5
Link to comment
Share on other sites

This is the beginning of fully dynamic noise rendered clouds in advanced flight simulation

01.jpg.f5b638d9b671a766572909c7b7686c5f.jpg

So, we're well in to the in release candidate run. I will need to prepare you all for what's coming. The latest screenshots are from xE and how it will look at release but xEnviro 1.10 will release with a set of known issues. This is the first run of fully dynamic noise rendered volumetric clouds in any major sim environment. This is completely unproven grounds and in large new technology crammed into a shoe box. So this is where we start. 1.10 will have issues and it will have compromises. (Can't repeat that enough - but I also repeat that it does not stop here!)

Let me explain (and this is important):
Lets distinct between issues and features by design that appear as a necessary or unavoidable issues. Something that we have to keep in existence to keep our final design inside the required frame of performance or visuals. I have called these compromises before. Like with grain.. We just cannot make clouds look nice and have high performance at the same time. Not today. We can't have a slider or toggle for it either since the change in resolution goes deep in to the code. Grain is unavoidable and exist by design as a trade off for performance. Same goes for low detailed clouds and a few other visually related artifacts.

We don't like it but this is exactly how it should look in the final product.. Grain is just a very distinctive example but we have a lot of small features that don't look or perform exactly as they should in the ideal product but they exist in the current form just because this is the maximum of what we can have in the current environment. We could go and fix the gap between xE real horizon and xplane water polys but either distant pink mountains (those with no textures applied) emerge or add more extensive haze lowering the visibility range. We would then have a constant visual limitation of 10-20 km..  So we're choosing between three things - we chose to let some pixels of some grey color exist above the sea providing they are not visible all the time depending on the actual visibility.

These are some of the compromises:
(unwillingly implemented or tolerated features by design)

  • Haze blending on mountains
  • Haze blending and covering the edge of dsf (which is hell to get right in x-plane)
  • Haze covering clouds
  • Clouds cutoff with depth test
  • Clouds depth test with airframe
  • Entire pipeline depth test with aircraft lights
  • Gap between xE horizon and XP horizon

Here is the list of known issues:
Known issues or bugs are there because we need to move on and some were discovered too late. We just don't want to go back to beta and xE is usable as it is now. You have waited long enough and 1.11 won't be far off.

  • Precipitation follows camera
  • Unnatural cloud formations at high levels or squared sectors of clouds
  • Snow coverage may appear in the regions where no snowfall encountered recently
  • Default X-Plane night triggers lights artifacts
  • Performance is heavy but better than 1.09 (4k users will get a significant hit)

To round this off:
These are just a few of the challenges we have struggled with and will continue to work on after 1.10. Along side the roadmap. We usually find ways around and mend these issues and compromises but we have come to a point where we have to say enough is enough. xE is where it can be enjoyed as long as you take in to account that it (as with any other weather addons) has it's limitations in its current state and with current average user systems. The difference is that we are now on fully dynamic noise rendered volumetric clouds. And we are now starting the run to perfect this technology so we in the future can experience a visually breath taking, living and well performing environment engine.

This is just the beginning.

We want more.

 

The xEnviro team

02.jpg.662fb91602aea0a2abfd7c04d0d3fd44.jpg

  • Like 7
  • Thanks 4
Link to comment
Share on other sites

Magnus (and team), this is fantastic news. Remember, there will be "haters". Generally, my advice would be to ignore those people who offer no constructive criticism. Yet another group will be dissatisfied, but will offer constructive, fair, and sincere criticism. Those should be taken to heart, and considered for future updates. Finally, what you've done here is fantastic, groundbreaking, and setting the bar for any future weather engine in X-Plane. Just keep that in mind. You cannot have a perfect product on an imperfect platform. X-plane WILL evolve. It WILL improve. And so will the hardware standards among X-Plane users. As those things advance, so can XE. I thank you for your incredible effort and resilience, in what is already a fantastic product!

Edited by Eldrarak82
  • Like 1
Link to comment
Share on other sites

First of all a huge thank you for all of your(teams) efforts. After 33 years of experience with flight simulators, I have never seen a weather engine like XE1.10 for flight simulation on PCs! This is product is absolute "high tech" and I have to quote/repeat one of the comments i have read earlier: XE1.10 converts actually Xplane11 to "Xplane12". And yes, I am quite excited...was testing since release...just awesome! The Xplane11 team should actually very much appreciate your product, which will become one strong selling point for them. Keep up the fantastic work & Greetings from a very satisfied user......Oh almost forgot to mention that FPS/frame rates are excellent.

Link to comment
Share on other sites

A question regarding volumetric noise-based cloud rendering technology performance  -

Thanks for the fresh-cut release - the youtube is now starting to blister with uploads for XE 1.10 - very nice videos.

Along the way, we start to see the kind of outstanding issues that you referred in your status articles - such as shimmering noise on cloud ends.

My Question is:

Since this is a GPU intensive noise-rendering - may we breakdown further the real bottleneck in the rendering pipeline - and which next-gen graphics vendor do you think is going to make the biggest improvement.

to make myself more clear --- in trying to point finger to the major playing bottleneck that limits the infinite potential of greater visual & performance dimensions:

  • is it mainly the Memory Throughput on the GPU?
  • is it mainly the compute capability - i.e. : Number of Cuda Cores (nvidia) / or Processing Streams (on AMD) ?
  • is it mainly the Geometry Pipeline ? 
  • is it mainly the Shading Pipeline ?
  • is it mainly the PCI Bus bandwidth  limit - not depending on compute/graphics performance ?
    (see video below which demonstrates how alone PCIe 4.0 pushed the envelope - seems very much relevant with voxel-based technology for me -- who knows this might resolve all the performance issues due to saturation of PCIe in gen 3.0 with that specific use-case)
    image.png.062b082f18720a29d1fbf8e4f092c00e.png


    watch from 4:15-4:45
     

We know it is early to judge - and know that you are working to explore the performance profiling aspects.

Thanks again for this awesome deliverable.

 

Edited by Bakr
  • Like 2
Link to comment
Share on other sites

i hope that we can get a sneak of useful results from developer performance profiling tools such as:

NIVIDA:

AMD:

 

This would indeed help in optimizations plans to work around bottlenecks and get the best of GPU Hardware Acceleration.

Edited by Bakr
Link to comment
Share on other sites

As much as I would love to buy XEnviro with or without bugs, I am worried about FPS. There has been a lot of talks around flight simming circles about a 30 min demo version. The way X-plane utilizes hardware resources is quite weird. A few months back when I was doing beta testing for VIDP, I had the oldest spec pc with a GTX960. Everyone else had at least a GTX1060, yet on similar settings I had the highest FPS.

Is there any possibility of making a lite demo version with atmospheric rendering only?

 

  • Haha 1
Link to comment
Share on other sites

18 hours ago, Ron Baruah said:

As much as I would love to buy XEnviro with or without bugs, I am worried about FPS. There has been a lot of talks around flight simming circles about a 30 min demo version. The way X-plane utilizes hardware resources is quite weird. A few months back when I was doing beta testing for VIDP, I had the oldest spec pc with a GTX960. Everyone else had at least a GTX1060, yet on similar settings I had the highest FPS.

Is there any possibility of making a lite demo version with atmospheric rendering only?

 

I can decline that straight away. We will never have a demo version for xenviro. Several reasons for it: we don't have time to even look on to how we would do it and second is security. 

1.10 is heavy. It's just the way it is at this stage and I suggest you wait. 

  • Thanks 2
  • Sad 1
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.


  • Don't have an account?

    An account is required to interact with and download content from the Threshold Forum.
    Forum is currently also locked down for guests because of heavy bot invasions. Sorry about that.

  • Threshold News

  • image.png.5d3ebd5638179a05dc5cfa67eaf4bf3a.png

×
×
  • Create New...

Important Information

Please read the Terms of Use