Create A Gaming Operating System

Started by
10 comments, last by Brain 7 years, 9 months ago

Hello, I'm trying to build a Gaming/PC operating system like Steam that can is built off of either Linux or FreeBSD but I'm trying to figure out which one would be better because I would to create this OS with some characteristics of PS4/Xbox/&Steam (e.g. connecting to other users across the internet to play games with and GUI features like in the attached file). I seen people use Visual Basic for tutelage and they seem good but I'm only experienced in Visual Studio C#. However, would C# help? I read they game DEVs usually use C, C++, and Assembly Language and I'm teaching myself those programs outside my degree but I can't seem to find people who are showing you how to build on or modify OSs like Linux and FreeBSD. So if possible could someone point me into the right direction with material related to this topic.

Advertisement

but I can't seem to find people who are showing you how to build on or modify OSs like Linux and FreeBSD
I don't understand what this means. Surely these people are easy to find. Linux OS is done by Linus Torvalds et al, BSD has a group of core developers as far as I know.

I very much doubt however that these are the people you need. They typically add or improve hardware drivers, and implement file systems, and virtual memory.

"The OS" in Unix context is however not much more than that.

Maybe you think that OS means more than "the kernel"? Your picture suggests you believe the graphical display is part of it, which is not the case (except for hardware access for displaying pixels). You may want to read about the structure of a Unix system (Unix is the name of the API of a broad variety of systems, which includes Linux and BSDs). For graphical system architecture, the structure of an X11 system looks like a good start to me.

If my assumptions are wrong, maybe you could explain in more detail what parts you think you should modify?

but I can't seem to find people who are showing you how to build on or modify OSs like Linux and FreeBSD
I don't understand what this means. Surely these people are easy to find. Linux OS is done by Linus Torvalds et al, BSD has a group of core developers as far as I know.

I very much doubt however that these are the people you need. They typically add or improve hardware drivers, and implement file systems, and virtual memory.

"The OS" in Unix context is however not much more than that.

Maybe you think that OS means more than "the kernel"? Your picture suggests you believe the graphical display is part of it, which is not the case (except for hardware access for displaying pixels). You may want to read about the structure of a Unix system (Unix is the name of the API of a broad variety of systems, which includes Linux and BSDs). For graphical system architecture, the structure of an X11 system looks like a good start to me.

If my assumptions are wrong, maybe you could explain in more detail what parts you think you should modify?

As a follow up to this, making a display manager and a window manager may be what you need to do. These can be applied to existing Linux installs to give you the look and feel you want.

Ah, this old sausage. One of those questions where the very fact it is being asked ("How do I X?"), is itself an answer ("You are not yet ready to even start planning to do X."). You should maybe start with learning what Linux is and isn't; that is, where Linux ends and where the software you choose to install or develop for it begins.

For a practical experiment, I'd suggest installing minimal Ubuntu Server 32-bit (yes, the GUI-less one), and then following this AskUbuntu answer ( http://askubuntu.com/a/706073 ). When you run `apt-get install steam-launcher`, you will be presented with a list of all the software that goes into a window manager, an application stack, and a piece of user-space installation management software like Steam. To develop something like Steam, you will need to write or use nearly all of it.

Having experienced that brute-force education in the size and scope of what you are asking, instead of leaping into this multi-billion lines-of-code project you are asking us to show you "tutorials" for... you can instead tackle something a bit smaller. You don't need to write a Tetris game to develop an OS, but if you can't do the former yet, you definitely can't do the latter yet.

RIP GameDev.net: launched 2 unusably-broken forum engines in as many years, and now has ceased operating as a forum at all, happy to remain naught but an advertising platform with an attached social media presense, headed by a staff who by their own admission have no idea what their userbase wants or expects.Here's to the good times; shame they exist in the past.

Thank you for the advice. I see the sentence and it was a typo. But what I was saying that I was having a hard time finding solid tutorials on how to customize Linux through as you (Alberth) stated the Kernel. As for Unix, I'm starting to dive into it but the X11 I have a question about. Do you have any site recommendations on where I can acquire it ?

Well the parts I'm trying to modify are as Dragonsoulj stated are the display and window manager with some features similar to Steam and PS3. I also want to be able to implement emulators to play games for old Nintendo games and but also online like on the PS2/3, Xbox/360. I've heard of a DEV-team called Team-XLink software can help with that but I'm not sure. Moreover, I would like to add voice activation and screen recording.

Also, since my degree is a AAS in CIS I was only able to learned C# through VIsual Studio,aren't the codes that I write transferable to Linux if I copy them to a notepad in VS and cloud it to Linux? In addition, would it help or harm me if I learned about VIsual Basic as well?

Thanks Wyrframe I understand the reality of what I'm asking is too much but it doesn't hurt to have fingers pointing you into the right direction. Also I'm not try to be a millionaire just want a project to I have time, dedication, and most importantly patience to put in and at the end of the day I can take a step back and be proud of my work. In addition, if it does be good to a point when people can say "this is reallllly nice" lol. Then just as it was a open source to me the same can be said in giving it back in exchange for donations... hopefully.

You could always implement all of this as an application like steam, rather than an entire OS :)

As for Unix, I'm starting to dive into it but the X11 I have a question about. Do you have any site recommendations on where I can acquire it ?

X11 is freely available and part of any Linux distro.

You almost certainly don't want to use it for a game console-like OS, though, at least not as a core part of your stack. Alternatives like Wayland and Mir are replacing X11 with very good reason. X11 will stick around for some time for compatibility, but leave it to that role.

Well the parts I'm trying to modify are as Dragonsoulj stated are the display and window manager with some features similar to Steam and PS3.

I think you're massively underestimating what building a gaming services platform entails. You're also looking in the wrong place. You need to start out learning Web backend development, which is really what 95% of Steam really is - a big fancy backend service.

Developing a service that lets you so much as login with a user account (and can scale to hundreds of thousands or millions of users! and is secure!) is a months-long task. Adding support for a storefront to buy games, friends list, chat, gifting, playtime/stats, message board integration, reviews, etc. etc. is going to take months or years, depending on how experienced of a _team_ you have. And that's just building it, not testing it, deploying it, maintaining it, and so on.

After that, building a frontend client on Linux is the easy part. It can even just be a Web page rendered via CEF in a regular ol' application (that's all that Steam is doing!) and doesn't need to be a fancy window manager or anything.

In fact, the work you'd actually need to do on/with Linux would be pretty light. The hard part would be making Linux into an OS that's actually worth playing games on, which not even Valve managed to do (nor many previous companies that were going to _finally_ make Linux presentable and bring about the Year of the Linux Desktop... a failed fanboi prediction for about 12 consecutive years...).

I also want to be able to implement emulators to play games for old Nintendo games and but also online like on the PS2/3, Xbox/360.

The good news is that you don't have to do a lot. NES, SNES, and similar platforms have had mostly complete emulators for a while now.

For the more recent platforms like the XB360 or Wii, those are also in progress by various groups (Dolphin for the Wii, Xenia for the XB360).

I'd suggest you start contibuting to those before thinking you might write your own, though. Emulating platforms with those complexity is... not trivial.

Moreover, I would like to add voice activation and screen recording.

Twitch integration? Because otherwise you've just tacked another few years and an insane amount of cost onto your development plan.

Aren't the codes that I write transferable to Linux if I copy them to a notepad in VS and cloud it to Linux?

You can sync the files in many ways - and many that are objectively superior in every meaningful way to anything using the words "notepad" - but the real problem is that C# is not a native development tool on Linux. You can run C# code on Linux, but it's likely to have some differences from what you're using to on Windows. The GUI libraries are entirely different, for instance. And making proper use of anything deeply integrated into the OS is obviously very different. And a portion of Linux users would try to burn you at the stake for even thinking about using Microsoft technology on Linux when there's such amazing alternatives as C and Perl (sarcasm is present here).

In addition, would it help or harm me if I learned about VIsual Basic as well?

If you want to develop Visual Basic applications, it'll help. If you want to develop a new OS for gaming, it's very close to completely and utterly irrelevant. There is nothing new that VB is going to do for you that C# can't already do better. There's a lot to learn, but it's all going to be deeper in C# or outside of Microsoft's ecosystem.

Given what you're asking, I'd say that your continuing education should focus on Linux itself. The rest comes naturally. Like the neckbeard.

After that, start looking at contributing to _existing_ open source projects (like the emulators) that interest you. That'll likely involve learning C or C++ and a smattering of other topics and technologies.

Sean Middleditch – Game Systems Engineer – Join my team!

You seem to also be confusing the Steam Platform with an Operating System.

The program that you see that creates steam is -NOT- an operating system. But rather a launcher of sorts so to speak. I believe the desktop version of Steam is made using Chromium as a base. But the SteamOS variant is still not an OS in it's own right. When it's ported over to the steam box, maybe? But that's getting into a lot of work that's beyond the efforts of one guy.

Just look into using something like Direct2D or 3D to adapt the platform into an OS like scene.

Hello, I'm trying to build a Gaming/PC operating system like Steam that can is built off of either Linux or FreeBSD but I'm trying to figure out which one would be better because I would to create this OS with some characteristics of PS4/Xbox/&Steam (e.g. connecting to other users across the internet to play games with and GUI features like in the attached file). I seen people use Visual Basic for tutelage and they seem good but I'm only experienced in Visual Studio C#. However, would C# help? I read they game DEVs usually use C, C++, and Assembly Language and I'm teaching myself those programs outside my degree but I can't seem to find people who are showing you how to build on or modify OSs like Linux and FreeBSD. So if possible could someone point me into the right direction with material related to this topic.

One can modifey a linux distribution to create a good OS as a gaming platform. Though it's a lot of work for one person.

Developing an application as a game platform is a better idea since your only knowledge is C#.

I'm trying to stay serious on the topic, but what you ask is beyond your knowledge and I'd start by investigating development and OS. Learn linux, learn C++, learn C, Get some knowledge on internals of things. Get to know a thing or two before you ask something silly like that.

This topic is closed to new replies.

Advertisement