shmerl: At one point I did research on various middleware used in TW3, and at least all the stuff that's officially listed by the game (in credits and etc.) is available on Linux. Developers never said they were blocked by middleware, but on the other hand they said practically nothing to begin with so who knows what is blocking them.
Ah, that's great news then! I had heard something mentioned about middleware portability before somewhere but never looked into it myself.
shmerl: I suppose the main blocker is lack of professional foresight of their management (not of developers, but of their bosses). If they wanted to make a Linux release, they should have paid attention and worked on solving these issues from the start, instead of waking up late in the process and realizing it's a monumental task because of all the issues they didn't anticipate lock them into certain platforms.
We'll see if they learned from such major mistakes in Cyberpunk 2077. So far I'm not confident that they learned much. They didn't share any info (about wither they use Vulkan in CP2077 for example).
I think optimally that platform support availability is ultimately something a developer really needs to decide during the planning phases of a project optimally, but also that even if a developer is planning only on supporting a single platform that there is a huge benefit of focusing all planning development to be portable from day 1 and not rely on any non-portable middleware nor platform specific features, and if any platform specific features are to be used they should be relegated to a custom portability layer where similar features on other platforms could eventually be dropped in place.
For example, instead of calling OS specific audio interfaces, one should abstract that by using OpenAL or similar. Using SDL or similar for graphics setup abstraction, and the list goes on and on. Valve has a huge amount of developer videos and other resources to impress these things on developers minds as putting a little thought into these decisions at the start of a project not only can save a developer's work effort porting to other platforms later on, but in fact can speed up project development even on a single platform.
Virtually all code I write is developed specifically for Linux but I almost religiously code in a portable fashion from day 1 even if I've no specific plans to make my software run on other platforms at the moment or ever. If this way of coding actually took a lot of extra effort or added complexity to a project there could theoretically be a reason to not spend time writing portable code, but I've never found it to cause extra work but rather more often to make LESS work overall. Certain individual things may take more work or less work, but overall I find that portable design and software development ends up being a win-win.
Another thing I've learned along the way, is that even if you do not officially plan to release your software on other platforms such as Mac or Linux and you only plan to target Windows, you can still develop it on a cross section of those platforms as often a bug is triggered more easily on one platform/architecture than on another, so other platforms can end up finding bugs during development more easily even if the finished product only ships on say Windows/x86_64. As an example, I used to discover a lot of programming bugs in both my own and other software simply by building it on Alpha. Some of that was due to code turning out to not be 64bit clean as Alpha is a 64bit platform, while other issues were related to code alignment which is mostly a performance problem on x86 whereas it was a violation on Alpha. Making the code 32bit/64bit clean ended up improving the quality and stability of the code on both platforms even if the final results used were limited to just 32bit x86. Other platforms used in the mix for building/testing included 32bit/64bit sparc, PPC, s390, s390x, ia64 platforms, and even occasionally MIPS and ARM later on. Another issue that had to be dealt with occasionally was endian related issues on PPC/MIPS platforms. The extra effort spent cleaning up bugs found like this on other architectures and OSs made the code so much more robust overall, IMHO saving a lot of effort off of the long run, and actually making it much easier to support other platforms from the mix later on if need be.
Game developers come mostly from a different world though I think. Most probably get their start in a Windows centric environment, and I think end up hard coding a lot of stuff to the Windows platform, directly using OS vendor supplied APIs rather than an open abstraction layer, and developing primarily on and for a single architecture such as 32bit x86 or 64bit AMD64 or perhaps both of those but nothing else, and that is where a lot of bugs and problems end up hidden that only show up when one actually tries to port the code later to another platform and has to deal with OS specific and or CPU architecture design choices biting them in the ass.
I've no idea if any of this is specifically the case for CDPR's games however, but I think generically speaking the majority of games developed out there would largely fit into the mould I've described above.
Ideally the best game ports to Linux for example, are ones that are not ports at all, but where the code was designed to be cross platform portable from the start and shared across all platforms using abstraction layers to hide any necessary OS/arch specific bits. As far as games are concerned though, Valve has a lot of resources covering topics like this for developers. If only more devs would take advantage of it, we'd find more games available for Linux and of equal quality to the Windows releases. Ditto for Mac. The need to make a "port" of a game as some kind of monumental effort would more or less vanish. :)
Having said all of that though, there can still very much be effort required even with the most portable code ever written. One still would have to test on all of the supported OS release + hardware combinations, driver variations etc. and have the resources to put into all of that both financially and manpower. One would have to be able to justify the assignment of those resources based on bang for buck in terms of revenue expected in return versus what assigning those resources to other projects might bring in in terms of ROI also. I think this is where things fail on Linux and/or Mac sometimes, is that it isn't that a company does not necessarily have the resources to do a Linux or Mac release of their game or other software, it's that they often perceive that from a business standpoint of having finite resources they can assign the cash and developers to working on their next game or program aimed at the mainstream platforms and end up with a higher ROI from the investment of resources on the next project than what they'd get from using resources to port existing software to more niche platforms that make up the smallest amount of their potential market.
Personally I think this latter reason is the larger reason why there are not more Linux releases rather than a company hating a platform or being lazy or anything like that. It comes down to allocation of resources and ROI in the end IMHO.
Hopefully for TW3 though, CDPR will see value in making it available to other platforms at some point.