I'm gonna come out as a piece of crap for doing this, but then again I'm no stranger to tearing people new ones (Justified or no, valid or no), just ask Copperhead and Flake..Captain_Ahab wrote: ↑Fri Jul 21, 2023 3:00 am Here is my unpopular take on this...
I think the game should be redone on an established game engine, such as Godot or Urho3d.
Networking code is done, as is a physics and render engine.
Much of the physics and shaders/rendering are offloaded to GPU while the CPU can utilise multiple threads
A scripting language can be used to modify parts easily.
A particle system can be used for better explosions, smoke, clouds, etc.
Assets made in blender can be brought in easily with maintained import/export scripts and include any animations done in blender
Full graphics tools are available but do not have to be used, depending on the aesthetic desired
Terrain can be constructed easily with heightmaps, procedurally, or some other method
Basic terrain texture can avoid obvious tiling and there exist decent water shaders, if desired
Some form of auto LOD support could be used
More advanced sound systems
Data streaming can lead to truly humongous maps
YSFlight is just too clunky and ponderous to do mods compared to using something relatively modern
I love YSFlight's simplicity in play, in contrast to DCS
I loathe its antique workflow and tools
1. Before Soji open-sourced YSFlight, we were going to go with something along the lines of using an established game engine like Unity or Godot. As someone who has worked with someone in the past to attempt to make an Ace Combat clone in the former only to burn out, implementing physics is not easy, let alone everything else from scratch, baseline engine or no. Flawed as it may be, Yamakawa-sensei's physics engine is mostly complete, and only needs refinement.
2. Networking code is already established in YS. Same with graphics and physics. Hell, you want an example? Jobbin implemented Anti-aliasing in short fashion as one of his first commits to YSCE source code.
3. The problem with implementing advanced GPU features as a baseline is again, coming back to Hawkbit's statement about platform compatibility and ensuing low barrier of entry. With YS we could implement these advanced graphics features if they fell in line with the aesthetic of the game, and still allow people who cannot handle the demand of those features to turn them off.
4. We already plan on implementing a Lua-based scripting engine for multiplayer and potentially single-player plugins in the distant future.
5. We have a particle system already - it just needs to be refined and made more modular.
6. With the code and knowledge we have, it would only take someone versed with Python a little bit of time to implement SRF and DNM support, the latter of which with support for CLAs, in modern Blender versions. Hell, we could probably use existing code for it that we've been using for Blender 2.75 - which if Swift (nowadays known as Lynn) griping is anything to go by, it is becoming increasingly difficult to get running with those scripts, not to mention archaic.
7. See point three.
8. Again, I ask, what stops us from implementing these features? We have both the main YSFlight and libraries source code at our disposal. We can implement height models and the sort, we can also just get rid of needing scenedit by allowing meshes to used in lieu of terrain data, much like other games that do things the same way we do (AC, Project Wingman, etc.)
9.Again, we can implement tiling. Hell, we already have support for textured scenery. We can just build upon that and add such things as water shaders, but the latter'd be more intensive, but not worth throwing the baby out with the bathwater for.
10. Yes, dynamic LOD is something we will be implementing eventually.
11. A rework of the sound system is already something in the plans - Do you think we'd just keep the archaic, limited one that Yamakawa-sensei made?
12. We don't need data streaming for large maps. Things like PMNV Japan, York Valley and Decaff's upcoming Philippines map are already massive in comparison to stock maps. YSFlight's graphics and assets at the time of writing do not need streaming assets. If anything, the biggest problem is floating point precision, because we're dealing with not even 32-bit floating points, but 24-bit single precision. This is the culprit behind the shaking that inherently happens with maps at points beyond origin.
And my sister calls me a pessimist - This line of thinking is same mentality that has left us stalling for years. I understand the appeal of wanting to go to other engines and start from scratch - Hell, in Second Life, another community close to my heart, the userbase has been clamoring for Linden Lab, SL's developers, to implement the SL Client (or Viewer) in a new engine, like Unity or Unreal. Until a third party developer, Berry Bunny created a proof of concept, Crystal Frost, a viewer built in Unity based on clean-room reverse engineered SL code - I thought it would never happen. And then LL starts making a mobile client driven by Unity.
The fact is that Second Life is a spaghetti code mess developed years ago and iterated on for years since. The code dates back as far as the very late 90s. There are code components that have gone undocumented and the only people who know what they are, are either long gone from LL, or with Ebbe Altberg in the big prim box in the sky.
YSFlight is a spaghetti code mess developed years ago and iterated on for years since, the code dating back probably just as, if not farther back than SL. The difference is that SL was made to take advantage of the hardware at the time. YSFlight was created as hobby software by a single man over 20+ years, designed with an aesthetic and gameplay that mimic flight sims from 5 years before it was developed, or at least a rose-tinted fascimile, with development standards that date back possibly to the dawn of the C++ and C languages, consisting of both jank and spaghetti code that makes SL look like the pinnacle of software development.
That being said, even in this state, we at least have a framework to build within, upon and around. With another engine, we not only are deserting our core ideal of a free flight simulator that is easily accessible, but are putting ourselves in the burden of developing this all from *SCRATCH*.
Even with what I said before, YS isn't becoming something like DCS. Even with what I've personally proposed, it isn't going to be hardcore realistic in the slightest. There is a difference between authenticity and realism.
And don't get me wrong, we don't care much for YS' workflow either. And stuff like scenedit and outdated third party tools aren't our favorite either. But we are a far sight better off with developing YSCE as is, and building upon that, than to develop in a new engine, that no one knows or understands in our community, especially when YSCE is probably our best hope at revitalizing the community which, I don't know if you've noticed, be it on the forum or discord, isn't doing so hot.
Take it from someone who has been here for over a decade, even being around for YSP2 before its' DB failed and we had to make a new community since YSP's maintainer was dead to the world. Starting from scratch does us no favors. We have years of content from the community to build upon. In the span of 1 month, we have:
- Implemented Anti-aliasing
- Fixed several bugs
- Implemented a rudimentary RWR
- Improved the dogfight AI
and even implemented weapon jettisoning.
And we should throw out this, as well as Yamakawa-sensei's hard work to move to Godot or Unreal.
I think I speak for a sizable degree of the community when I post this.