2014/06/22

Toms SteamOS Response

So I wrote a huge response on Toms to a bunch of SteamOS questions and discussions I'm posting here because it was a lot of work. That way I can just link back here during discussions...

----


Just clearing up some misconceptions in this thread.

[quote]Does the steam client runs steamos games?[/quote]

SteamOS is just a modified Debian where the default launch is to put Steam in fullscreen Big Picture. It is very close to the same as unstable branch Debian running Gnome, it just backports a bunch of kernel patches and DRM drivers to support newer hardware. It IS pure Linux, you can even use the Gnome desktop on the shipped images. It just is missing a huge chunk of usual desktop features - root is locked, the repositories provided are missing a lot of stuff from upstream Debian, and there are very few default Gnome apps.

[quote]Silverstone sells a similar style case for those who want to DIY a steambox that still is similar in size. I am almost sure SilverStone makes the case as well because I saw some silverstone parts in the steam boxes they sent out. [/quote]


I wish that case came out a few months earlier, I would have built my current rig in it. It is just insanely good space utilization. I have not yet seen anyone try putting int a full water loop with a 240mm rad yet though, which I really want to see - it should be able to do it.

[quote]Anyone tech savvy enough to even be aware of steam machines[/quote]

That audience isn't the target of the Steamboxes. The initiative will do or die on how they compete in stores when put up next to the Xbone and PS4. They are not in any way a desktop computer replacement or surrogate and shouldn't be treated as such. There are Linux rebuilt desktops for that purpose if you don't want to use Windows, but they come will comprehensive application suites and are designed for computer use, not console use like SteamOS.

[quote]3 major considerations[/quote]

If you want a thousand dollar gaming computer you buy a thousand dollar gaming machine. DirectX 12 is not out yet, and will require games to explicitly support it - there is no free performance for any title out already. In addition, modern OpenGL can be pretty fast but it requires writing your draw calls in a way unlike any other API right now to get asynchronous no overhead behavior. We should also see OGL5 at some point, and AMD keeps saying they want to open Mantle up and bring it to Linux, though at this point they might as well talk about making pigs fly.

[quote]OSX -> Linux should be easy for game developers(it is already OpenGL most of the time.).[/quote]

OpenGL is an honest mess. I've tried porting GLES shader code onto the various desktops in the past and the experience is anything but simple. For one, OSX only recently adopted GL 4.1, but a lot of that functionality is still broken because its been undertested. So you need to target GL 3.3 in the same way a lot of games still have DirectX 9 versions for cards that don't support tessilation. Same problem exists in the GL space. The good news is that all Linux GPU drivers are now at at least 3.3 as well, so you can write new GL apps targeting 3.3 with 4.0+ extensions when available, such as tessilation shaders.

[quote]I wonder if they will stop releasing future Valve games on Windows when the OS is ready for download forcing PC owners to use their OS if they want to play their newest games?[/quote]

This is highly unlikely. Just in the general case, if you write your games to OGL 3.3+ and SDL, you can port them to Windows with a weeks effort even on huge titles assuming you architected the engine well enough and intentionally played to platform agnosticism. If anything, DirectX, .net, COM, and native Windows API usage might see a decline since it makes a lot less sense in the same way for average Joe developer Mantle doesn't make sense, but the problem is always moving software away from the MS proprietary stack to open standards, not the other way around.

The legacy of the id game engines is that because they always used OpenGL, even on Windows, they have remained insanely portable. The same can be said for most Blizzard games, especially WoW, since they all have OGL backends. Most developers today that release on OSX and Windows are still using DirectX just because thats what their main development studio engineers know, and their porting studio knows OpenGL. It is kind of a waste of resources but it is only recently you could even attempt write once run everywhere OpenGL, and even then it is just an attempt - like I said, OGL across OSes and drivers is always a huge mess. And it is even worse on mobile with GLES in all the garbage blob Android drivers.


[quote]Here is what I want from Steam OS: I want to be able to use any controller or mouse and keyboard that I want, not the ridiculous looking Steam controller, I want Steam OS to use way less resources such as CPU, RAM and drive space vs Windows 7/8, I want to be able to use my AMD GPU, I want to be able to play every single game I own not just Linux games. If I can play the same Windows games on Steam - figure out a way to get it working like using something like Wine or some other virtual machine OR simply release a Steam OS version of those games which can be downloaded using the same key you used for your Windows game which would be the ideal way to go IMO - and those games run better because the OS is using less CPU and RAM overall due to less background processes and it equates to higher framerates and better performance of those games then I will immediately switch to Steam OS for gaming and use my laptop for everything else.[/quote]

Linux supports the PS3 and 4 controllers, the 360 pad (but not the xbone one yet), and USB standard keyboards and mice. Most gaming keyboards / mice work fine except for special function keys because the vendors won't provide specialized drivers for them, and the kernel ends up using the USB HID generic keyboard or mouse driver.

That works most of the time, though. I do intentionally shop only for peripherals that support Linux, though. 7 button mice and any keyboard that has media but no programmable keys will work great. I have a Quickfire rapid pro and G500 mouse and both work flawlessly besides the logtech mouse 9 button being mapped to mouse 3 in the driver. Across a half dozen mice I have DPI adjustors always work because the devices modify their polling rate against the driver rather than through some proprietary interface, so they all work with scaling DPI just great.

I also only use Intel and AMD hardware because I'm active in the Mesa project. Catalyst on Linux is kind of always a mess, but the Mesa radeon driver has come very far in recent years, to the point where I recently played through Metro Last Light on high settings on my 7870 just fine, and it can run Civ 5, Witcher 2, Starcraft 2, WoW, etc well. The Metro performance is really great, the games through Wine are about 60 - 80% Windows speeds, Witcher 2 was an awful port, and Civ5 runs great, but it isn't a very framerate sensitive title.

SteamOS support for that driver, though, is lackluster. They include Catalyst anyway, which is notoriously buggy, but supports the latest OpenGL versions, and usually gets better results on the higher end hardware. That driver is no where near as good as Nvidias, but on the flip side AMD actively supports the FOSS driver and Nvidia pretty much hates FOSS. I hope in the next few years AMD just depreciates Catalyst on Linux entirely for the Gallium project, and just relegates Catalyst to support mode for enterprise customers in compute clusters (who are the primary drivers of its continued development on Linux anyway).

SteamOS has an install size of around a gigabyte, and different distros have different footprints. For example, I have a huge number of programs installed on Arch but all my programs (including Steam, but not the games) and OS parts take up 11GB on disk, compared to a completely blank Windows 7 using around 20GB. If I was only running, say, openbox and Steam, I could easily get my install size before games below a gigabyte.

Memory usage is also significantly lower depending on the desktop. SteamOS uses XCompMgr instead of Mutter from Gnome as the window manager, but still has a lot of Gnome services using up memory for some reason or other. Best case scenarios on hand crafted installations could get memory below 500MB before games, though, where Windows always uses at least 1 by itself, before Steam, which itself uses a hundred megs or so.

Performance wise besides the ability to hand crank all the background services on Linux, OS overhead is a solved problem, and Windows doesn't have any real efficiencies there over Linux besides being able to hand optimize your Linux kernel for your hardware. The basic fundamentals of an OS have not changed and their performance characteristics haven't either for a good decade. The only real plus side of Linux over Windows is that if a device is going to be supported, it will be included with the kernel or not. No driver hunting because there is almost never a third party driver not in the kernel tree, with a few exceptions like some Broadcom chips only working with their old wl driver you have to get from them or a software repo.

I'm really surprised Valve has not adopted Wine at all yet. I expect GOG to ship a lot of Wine wrapped games this fall though. I often have better experiences running games through Wine than some of the crappy native ports (hic, Witcher 2), becuase Wine has gotten really good at DirectX 9. Blizzard games mostly work out of the box - on purpose. I know that Blizzard titles, Neverwinter, Tera, and Rage all have engineers explicitly making sure they run in Wine well.

And any game you bought on Steam is installable to your account on any supported device, including Linux. I had Civ5 on Windows years ago, and when it got released on Linux earlier this month it just shows up in the installable games list. No keys or nothing needed, anything you buy on Steam (or Desura, or GOG, or Humble) you can download and run on any supported platform with that original purchase. This isn't console bullshit.

In reality though, game overhead is mostly from the engines themselves and the graphics API, not so much the OS besides the raw space and memory wastage of Windows. You would see that performance difference if Mantle were opened up, developed as a Gallium state tracker, and shipped supporting every GPU out there through that driver - it is where the community free Nvidia driver is too. If the API can be implemented to the winsys driver API they use, that would mean everyone can see the performance benefits. Problem is Mantle is really designed to run "on metal", and Gallium is designed to provide a hardware interface that API's can plug into, like DirectX9, OpenGL, OpenMax, EGL, etc, so it may not see as much benefit. Though Winsys itself is a really modern design around how hardware works today, so it is probably close to what Mantle looks like in the first place.

[quote]I expect Linux ports will still take a while to really pick up speed[/quote]

It is mostly waiting on publishers. Almost any indie game is on Linux already, Ubisoft has said they intend to bring new titles to the system, Metro Last Light was Deep Silver's latest game and they brought it over and will likely support new titles on it as well (and they are backporting 2033 I heard). Paradox is probably the largest publisher right now that is really great on Linux support - they have brought almost their whole catalog over. 2k, Ubisoft, Zenimax, EA, Activision, and Square have not launched a single title yet for Linux, and that is where most peoples issues are with. But there is nothing we can really do to compel them to do so. More likely they will just launch new titles on it for a while, and if it is popular they will backport classics.

[quote]I'm in for a linux box dual/triboot of android/steamos/some linux variant[/quote]

A lot of people are treating SteamOS as some distinct thing from desktop Linux, but it really is not. It is completely redundant, besides the peace of mind for driver support that Valve expects in titles they ship, to run both. It is the same client on both, the SteamOS Steam client just starts at boot and runs in big picture as the desktop. You can just have a desktop session for gaming at your login manager that does the same through any distro out there right now.

[quote]let me re-phrase I'd buy a linux dedicated machine and I'd download steam games and play them[/quote]

You can build your own or buy a prebuilt machine from System76 or another company (thinkpenguin - Dell and HP also ship Linux computers too) any time.

[quote] Small devs could make a lot more money if they could easily get their game to run everyone very quickly and have a HUGE TAM to sell to. No more need for EA etc. [/quote]

You can already run OGL games on Windows. The problem is that OGL 3 was slow to release, and developers en masse learned and transitioned to DirectX in the early 2000s. Now all the graphics engineers are one trick ponies that sit high in big publishers and studios. Additionally, the Windows GPU drivers have a lot of atrophied OpenGL support because it isn't used as much as DirectX, so when a title that uses it comprehensively like Rage comes out the driver vendors get caught with their pants dropped.

If I were a dev today, I would be pushing for OpenGL ES in the core engine - that way you could bring it to any computing device out there right now in existence for the most part, at least by the time the engine is done - OpenGL 4.3 requires symbol matching to GLES3, so your GLES3 code should run fine on any conforming driver. Problem is nobody is doing this so all the driver code paths are raw and untested. And you would be budgeting that Apple would move from 4.1 to 4.3 soon (I'm actually unsure if Apple supports the ARB extension already or not, I know Mesa does even though its only at 3.3).

You could still pull in extensions and pass the GLES context into desktop GL code to apply fancier volumetric shaders, tessellation, etc. The only real downside to that model is that GL draw calls before the ARB indrect functions in 4.1 - 4.3 are insanely slow. GLES 3.1 actually includes them - and compute shaders - but that is just too new right now, although when I can eventually write for GLES 3.1 and get comprehensive support I'll be in developer heaven and finally be willing to work professionally in the engine space. Right now I'm hobbyist in Mesa because it honestly is a morass of awful overhead and obtuse tricks to get around awful APIs. If I had compute shaders and indirect draws I'd be set.

[quote]Im sick of not being able to manage multiple displays the way do on windows[/quote]

This is actually a pitfall of X, the current Linux display manager. And it is a huge piece of shit that IS finally dying. Once KDE ships Wayland support this summer a huge swathe of distros are liable to adopt it instead of X Q4 2014 to Q1 2015 and that display server fixes the thirty year mess, while maintaining reasonable backwards compatibility.

Problem is the proprietary drivers are unlikely to support Wayland as soon as the Mesa drivers are, and SteamOS itself is certainly going to be using X for years, so those benefits might not be seen for a while from Valves distro, or Debian itself. Especially with Ubuntu jumping the shark with their own display server.

[quote]People will want to be able to actually use the computer(dualboot) to browse, do photoshop, edit video etc.[/quote]

Steam has a built in browser, and SteamOS comes with Gnome and its stock browser as well. "do photoshop" is kind of a corner to get backed into, since Adobe doesn't ship it for Linux, and there is absolutely nothing anyone can do about it. Video editing though - there are a lot of good video editors on Linux, my choice is kdenlive - as a Vegas user is a past life, it does as much or more in some areas and I really love the UI customizability. Openshot is another big popular one that got kickstarted recently.

And on the topic of photoshop, Krita, Gimp, Inkscape, and Karbon exist. Your milage may vary, but that is why there are options (note the last two are just vector drawing apps, the former two are general purpose artistry and painting).

[quote]As long as the (Mobo, Graphics, Keyboards, Mice, ect ect) vendors make driver/app support and other software companys make Linux apps like Team Speak or Vent for starters I would be into the Steam OS. But Id rather build my own system and dual boot so I can still use my investment in current Windows games i have already bought. Also in the future I want to be able to make my own system and not be stuck to SteamOS specific systems... [/quote]

Motherboard manufacturers are absolutely awful with Linux. None of them provide out of the box support, none of them really contribute in any way to the kernel, at all. If even one of them was proactive I'd exclusively buy their products and shout their praises from the hilltops.

In terms of GPUs, all the major vendors are doing something. Intel is really big on their FOSS graphics stack, AMD have Gallium and Catalyst (yeah, two drivers, hopefully the former gets good enough to replace the later soon) and Nvidia has a really up to date and performant copy of their Windows driver.

I talked about keyboards and mice earlier in this book long post...

Teamspeak is avaialble for Linux, Vent is not but there is the reverse engineered Mangler that works with Vent servers. Neither is recommended though, since Mumble exists, is foss and supports Linux as a first class citizen with the in game audio and positional audio features. There is also Skype, and several Jingle and SIP clients as well, and Google supports their plugins on Linux and webrtc of course works.

Tangentially, I think dual booting is the wrong approach. If there is something keeping you on Windows just keep using it. I did dual boot for a year, but barely used Ubuntu 8.04 at the time because the only value add was the lower power usage and snappier application loading. There will never be anything on Linux program wise not available on Windows - all you will get are a bunch of low level benefits like better filesystems like btrfs, tiny install sizes, tons of customization and control, and ease of use from package management. But if you are also running Windows all those benefits are moot.

But nothing stops you from building your own Linux machine - you just have to be careful about parts, because while they are all tested on Windows, you have to be explicit with your Linux support. The good news is Intel and AMD keep their chipsets and CPUs up to date, so as long as you get boards without external controllers for USB or SATA ports everything should work great out of the box. Hard drives are a protocol thing, so they all work no matter what - the only blunders I've ever had are how some hard drives advertise full disk encryption but in small text only with a TPM, which is proprietary Microsoft tech. My 840 Pro has FHD from the ATA password through efi though, which works great.

And you are absolutely not stuck to SteamOS. Like I said, it is just their own Debian spin where they launch the Steam client in big picture mode. It is the same Steam available in the Ubuntu, Suse, Fedora, Arch, etc repositories. And its the same underlying OS - a game that runs on one will run on all of them, barring old kernels and drivers - latest versions across the board should all work the same.

[quote]For just about the same money you can get a windows machine and run literally everything. When there is no technical advantage (and mostly drawbacks) why do it? [/quote]

If you budgeting a $500 custom built machine, $100 for the Windows license is a huge chunk of your budget, and if the games you want run on Linux then it seems like a waste of money. With most computer vendors they get subsidized deals on the licenses, and often include bloatware to actually profit off the machine. You could bloatwareify any Linux distro as well, though - even more so since you can run custom software repos and inject ads into almost anything since its all FOSS.

I remarked on several technical advantages earlier on, though, but the biggest reason Valve is doing this is because, one, the Windows Store and how they treated ARM in Windows 8 (locked down from the bootloader to the installable apps) scared them off, two, because Windows 8 is an extreme flop, and three, because by having control of the OS they can do things like ship an image that boots to Steam and lets them run it in a living room like a console. To try to get that on top of Windows 8 would be a nightmare if it would even be doable, and then you have to consider the memory and storage overhead of having to have the entirety of Windows. They took a calculated risk that breaking compatibility was worth it, though.

[quote]30 fold from a nearly 0% market share is still low.

and no, I'm not trying to put down the idea of steam machines, I think it's awesome, but so far what have we seen? delayed OS launch, OS installation problems, OS optimization problems (almost all AAA titles have similar or lower FPS compared to Win8), and repeated controller delays. heck even Alienware's newest 'steam machine' will run Win8.1 out of the box. and NO, i'm not interested in buying a $500+ device just to play linux only titles.

at the end of the day, I expect steam machines to take off SLOWLY, with people who already own gaming PCs experimenting dual-booting Steam OS, and their market-share will grow ONLY if they perform well. [/quote]

Linux user results are around 1.2%, so a 30 fold increase would be pretty huge - if SteamOS was a third of Steam's installbase it would be a major market mover. I doubt that kind of adoption, especially in the short term, though - there are millions of Windows computers that have just Steam and maybe a game or two, that count towards its totals. There is a lot of inertia there in the numbers.

They are delaying the launch because big publishers are not moving quickly to it. Mainly because its a disruption - EA et all probably have MS, Sony, and Nintendo divisions that develop engines and bring games to each platform, but SteamOS requires OpenGL and Unix developers which they probably don't have unless they were already porting to OSX.

The optimization problems are case by case. No matter what, you are always really easily able to make a bad port. See Dark Souls on Windows. Witcher 2 is kind of like that on Linux - if you try porting by just wrapping DirectX in a translation layer like Wine you are going to have a bad time. Metro Last Light, Civ5, Portal 2, Team Fortress, Left 4 Dead, Dota 2, Dungeon Defenders, Garrys Mod, etc all run really well for me, and are all competitive in fps with Windows - varying from 75 to 150% the performance. And it is all the quality of the port.

Steam Machines compete with consoles. Hopefully the void left by none of the current crop actually being powerful gives Steam Machines room to prosper - the combination of deep sales and the ability to get a console that can actually do 1080p gaming for like $800 should be competitive.

... talk about walls of text.