Advertisement

Games Based Linux Distro

Started by March 19, 2004 02:06 PM
65 comments, last by mrbastard 20 years, 5 months ago
quote: Original post by RPTD
i don see the need there.
graphics: Xlib (or if you like toolkits GTK+) for the window, OGL for the drawing, libs like libjpeg, libpng for loading
sound: ALSA (and to play ogg, lame, ...)
netplay: simple sockets, nothing more
that''s all there is. what more standarized you need?


standardised versions. EG if GBLD set opengl 1.4 and sdl 1.2 their standards, users / distros would know what version to have to remain compatible.

Same as having Mandrake 9 (or whatever) means you know anything that works on mandrake 9 will work for you - because you''re working with the same versions of libs.

As the AP was saying (kind of) a lot of directx''s success has been because people can simple check it they are directx 9 (or whatever) compatible, and stick a sticker on their product. Similarly the user knows whether it''s likely to work for them.

Most people just aren''t able or willing to keep track of current versions of 6 or so libs + dependencies.
[size="1"]
quote: Original post by RPTD
but there i can optimize for the target os not like SDL which seems kinda slowpokey.

Uh, doesn''t UT2k4 use SDL? If thats too slow for you I think you''ve got other issues.
Advertisement
quote: Original post by OrangyTang
quote: Original post by RPTD
but there i can optimize for the target os not like SDL which seems kinda slowpokey.

Uh, doesn''t UT2k4 use SDL? If thats too slow for you I think you''ve got other issues.


SDL uses MesaGL as far as i know which is a bit... a trouble child (at least for me it is, nearly ruined my system)... but i have not played ut2k4 yet... u2k3 was crap and bloatware so i don expect this one to be any better.

Life's like a Hydra... cut off one problem just to have two more popping out.
Leader and Coder: Project Epsylon | Drag[en]gine Game Engine

quote: Original post by mrbastard
Most people just aren''t able or willing to keep track of current versions of 6 or so libs + dependencies.


You really not need to do this with Linux. Take Mandrake for example. It''s given an address to a software repository where Mandrake RPMs are uploaded. RPMs can be thought of as bundles of files along with data about how they should be installed on Linux (a little like an installer, but you don''t have to go through a typical GUI style installation procedure). There is a GUI tool that comes with Mandrake which lets you install, remove or update any RPMs installed on your system. You can either select a new RPM to install from the repositories you have setup (you can add new ones, for example one for a special gaming website), or download a RPM from the internet and tell it to install that. It knows all the dependencies on each RPM and works them out automatically.

For example, you want to install game X which needs version 1.5 of library Y, but you only have version 1.4 and game Y needs this. Mandrake will automatically upgrade the library for you before installing the game, which may even involve removing Y, updating the library, then reinstalling Y.

Once you understand it, it is honestly easier than installing Windows software. You don''t have to specify installation paths, everything is upgraded automatically, everything is removed cleanly and you can install everything from a GUI without having to hunt down installers from the internet. All you need to do is select what you want to install, click a button and wait for a popup to tell you it''s finished. Seriously, it doesn''t ask for any user intervention unless there is a problem.

Like when you have to install a game and don''t have DirectX, you have to obtain the game and DirectX and go through two installations prodecures. Automatically resolving dependencies in Linux makes this process easier for the user.

It''s not perfect. Sometimes it can get into a mess with dependencies where it cannot work out how to upgrade/remove something while keeping everything working, but there are better package managers such as Debian around.
Just my views on this topic:

I usually didnt use to bother about cross-platform until recently my colleague tell told me about Gentoo which was mentioned somewhere earlier in this post.

First a overview of Gentoo,
Gentoo allows the developer to only include the components he needs/requires for installation.
Gentoo can be customised in anyway you like since you also have the source.
It is possible to include Gentoo as a bootable distributable as it has been done with UT/America''s Army/Return to castle Wolfenstein.

Now the feature which really caught my eye was the ability to customise only the features you want. As we all know, ever since the days of DOS, PC games requirements have been going higher and higher.

A 33mhz PSX game ported to PC would require a 233mhz computer to run. A PS2 game ported to PC would require something like a 1ghz computer.
Xbox, which has similar hardware to PC/API(Windows/DX/GF3) can run games in full detail whereas the same game would struggle on a PC with a similar hardware configuration.
Gone are the DOS games where the whole PC would be devoted to just 1 application at runtime.

Ofcourse windows has it''s advantages, it allows games to run on many diff hardware(Intel/AMD/ATI/nvida/etc...), it is also a OS with many other features. Many features which eat up CPU time even when playing games. I for one would not mind rebooting my PC if i could get my PC to devote itself to run the game which i want to play.

These advantages are present in Gentoo and you can disable all those features which wouldnt be used in games. If i am not mistaken, windows checks ALL data writes to RAM which is why it gives an error when you try to write to an invalid pointer which might be pointing to another program''s memory. So for Gentoo, you could perhaps disable this expensive operation. With only 1 application thread running(the Game), you could maximise the CPU and possibly get a 733mhz computer performing like a XBOX.

This is made even more important as the next Longhorn is going to be written mostly in managed code which would further slow the whole OS down/other applications down.Microsoft is always adding more and more layers to it''s OS and while it is fine for normal app development, i dislike it for games. On Gentoo, the game developer will be in full control of the hardware again and just load the necessary features of the OS.

The only problems i see are these:
Bad Gfx Card drivers(Could improve in future)
Without installing the OS, you cannot use Virtual Memory(I think linux requires a linux-format partition and is not compatible with NTFS/FAT for it''s Swap partition. I believe linux can still write to NTFS/FAT for saving games without installation.)

Windows is definitely a good OS in my eyes but it is not tuned for games because it has to support tons of other features as well. At this point i have not installed linux because i dont have any partition to format, but i plan to soon.


you don''t need by force a swap partition if you have enough RAM.
the memory check you refer to by windows is not done in windows, it''s usual protected mode seg-fault trapping. of course windows slows down because of it''s hidden spy stuff and other bad coding handlings (see the leaked winnt sources for what i mean).

and this porting stuff... consoles (like xbox/ps2) ARE the reason why games today are so crappy in general because they all develop for a stupid console (ok, who likes consoles and doesn''t want to use the power for other rather usefull things) and then they wanna port it by trying to force the game onto another platform (pc). porting sounds nice but it''s mostly done wrong. by porting you keep most part the same (which performs the same) and do only recode a small part but this part you recode to take full power of the machine. i''ve seen only very few ports which have been done right and run smooth on the ported platform too.

with linux you don''t need making an entire new system all time. make once a ''top'' and see how much cpu and memory bg-apps in linux use... 0% nearly all of them (which means they are all in a wait state not consuming cpu time). under linux shutting all those processes down doesn''t increase your speed noticable.

Life's like a Hydra... cut off one problem just to have two more popping out.
Leader and Coder: Project Epsylon | Drag[en]gine Game Engine

Advertisement
quote: Original post by GamerSg
First a overview of Gentoo,
Gentoo allows the developer to only include the components he needs/requires for installation.
Gentoo can be customised in anyway you like since you also have the source.
It is possible to include Gentoo as a bootable distributable as it has been done with UT/America''s Army/Return to castle Wolfenstein.


What are the chances of commercial games coming with source code though?

What''s wrong with heavily optimized binaries that the game company produces? They''ll know how to optimize their game better than a random hacker will and they''ll have tried anything that would have made a significant improvement. For example, do you think you could have made Halo playable on the PC if you had the source code?
quote: Original post by seanw
quote: Original post by GamerSg
First a overview of Gentoo,
Gentoo allows the developer to only include the components he needs/requires for installation.
Gentoo can be customised in anyway you like since you also have the source.
It is possible to include Gentoo as a bootable distributable as it has been done with UT/America''s Army/Return to castle Wolfenstein.


What are the chances of commercial games coming with source code though?

What''s wrong with heavily optimized binaries that the game company produces? They''ll know how to optimize their game better than a random hacker will and they''ll have tried anything that would have made a significant improvement. For example, do you think you could have made Halo playable on the PC if you had the source code?


nope, wrong.

what they optimize is the code but what makes windows slow and linux fast is the fact that you compile your code for your machine not blended. windows games are coded blended (for intel/amd, minimal architecture command set that is common) and special asm stuff is hacking around. if you take the sources you compile for your very specific machine and the compiler will take all possible optimizations that apply.

Life's like a Hydra... cut off one problem just to have two more popping out.
Leader and Coder: Project Epsylon | Drag[en]gine Game Engine

quote: Original post by RPTD
nope, wrong.

what they optimize is the code but what makes windows slow and linux fast is the fact that you compile your code for your machine not blended. windows games are coded blended (for intel/amd, minimal architecture command set that is common) and special asm stuff is hacking around. if you take the sources you compile for your very specific machine and the compiler will take all possible optimizations that apply.


What''s wrong with providing several binary packages for different architectures? I''m sure if the speed increase was significant they would do something like this. Games companies aren''t stupid, if they could save months of optimizing by changing some compiler flags and making more than one binary they will. I''m not saying individual optimizing won''t make it faster, but is it really going to be more than 10% during actual gameplay? The CPU isn''t always going to be the bottleneck anymore either and is often to do with memory bandwidth and the graphics card.

Besides, you''re so unlikely to get the source code with the game that there isn''t much point in discussing it. I guess this is a reason for architecture independent code (like Java bytecode) that can be optimized for the specific system it is running on, without having the source code. Seeing as the consumer market targetted for games only uses a handful of architectures though , along with the features of currently used languages, it would make more sense for the games company to compile the multiple binaries themselves.
quote: Original post by RPTD
quote: Original post by OrangyTang
quote: Original post by RPTD
but there i can optimize for the target os not like SDL which seems kinda slowpokey.

Uh, doesn''t UT2k4 use SDL? If thats too slow for you I think you''ve got other issues.


SDL uses MesaGL as far as i know which is a bit... a trouble child (at least for me it is, nearly ruined my system

Wrong. MesaGL is a *software* OpenGL implementation. A properly configured games machine will use a good graphics card + drivers implementation of OpenGL, which should be as fast on Linux as it is on windows.

If SDL was slow because it was using MesaGL then it was *your* badly configured system that was the fault, not SDL.

This topic is closed to new replies.

Advertisement