Thursday, August 30, 2007

Gaming on Linux: The Time has Come.

If you're from Ubuntu feature requests, skip to paragraph 4.

One of the reasons for not moving to Linux that you hear a lot from windows users is that their games don't work on Linux. For the most part, this is true. Of course, there are always compatibility layers like wine or, ahem, cedega... But let us think for a moment: this is just another proprietary app dependency. Sure, it'd be nice if they made games for us, but we have the best kernel on earth, the best window compositing system, the best 3 browsers ... Heck, we even had better hardware support than vista for a while. What got us there? For the most part, not proprietary software dependency.

A short time ago, I surveyed the Linux gaming situation and was pleasantly surprised. We have unified. We have advanced. Through great projects like ioq3, crystal space, SDL, and opengl, we have, in my opinion, nearly caught up. You can play sauerbraten, tremulous, nexuiz, openarena, urban terror, and many others. What is lacking? Out of the box support for controllers. Let's face it: who has an open source gaming console? Yeah. Good job. So let us examine what a pc needs to catch up in full.

Out of the box controller/gamepad support. Do we have it? Kinda. But what if you want to use it? Tough. You have to go out and find the source for joy2key and joy2mouse, run a ./configure make sudo make install on it. Now, console users don't like terminals. I don't mind them, but before I knew what I was doing, I tried that and it didn't work. I probably didn't do it right... Anyway...

What we need is a way to simply plug in your gamepad, and be able to just use it. This involves binding keys and mouse movements in its simplest form. Heck, I like having a backup for my keyboard and mouse anyway. That binding needs to be integrated into the gamepad manager, and all of that needs to be included(optionally) with Ubuntu. If not the default Ubuntu, perhaps a new variant, like Ubuntu Full Circle? (I think that would be appropriate, next to the xbox 360 and nintendo revo--- wii. Best of all, you could install it on the ps3 --also, as an indicator that one of the last weaknesses of Linux... has caught up. The circle is complete. Once we were but the learners. Now we... are the masters. *I plead fair use*) -- help me refine my ideas.

Tuesday, May 1, 2007

OSH Laptop Design

Here follows my idea for an open source laptop. Naturally, its components should be open source too.
First, all components need to use USB 3.0. This idea is detailed in a previous post here.
Secondly, it needs to be liquid cooled. This may sound ridiculous, but when you see my idea for the implementation, you may change your mind- more on this later.
Third, while the CPU instruction set's being open may sound stupid, keep in mind that the gcc can add it as a target platform as easily as it could be designed int eh first place. I believe it already exists anyway.
Fourth, it has a co processor. This would require the Linux, Open Solaris, FreeBSD, Haiku, whatever- kernels to be altered, but it would be worth it. Threads would issue a kernel call for mass math batching to the co processor, which would be used for all math intensive operations.
Fifth, it would take advantage of every power saving method under the sun. Parts of the processor would power off via clock gating when unused. Both clock frequencies and voltages to all components would be scaled dynamically.

Here follows some more specific design ideas: The liquid cooling system would be quieter and work better than current laptop air cooling. Thanks to all the power saving measures in place, it wouldn't ave that much stress put on it usually. It would have a small pump in the main body, and would cool all components that generate heat. One tube goes up behind the screen, and one comes down. There, a heat sink that covers the entire back side of it dissipates the heat with vertical fins while the laptop is open. Aluminum would likely work fine. This also opens of some neat aesthetic possibilities. Due to the flexibility of USB 3.0, the keyboard is not mandatory. One could easily replace it with, say, a touchscreen. Or a solar panel, with the top screen being a touchscreen. Possibilities are endless.

We touch first on the hard drive. First notable difference: simplified electronics. The system could use one GB of GDDR3 for L3, graphical cache for the co processor, and perhaps hard drive cache as well. The hard drive itself would lack a cache. Using Gb USB 3, it would negotiate one 60 and one 1 volt power input. The 60 bolt drives the motor, and the one volt drives circuitry. It would have instant spin down in a similar manner to hybrid vehicles. Shock mounted.

Next, the optical drive. Power negotiation would be identical to the other, with the exception of an extra voltage for the laser. The laser would be an independent unit of the drive, capable of bring upgraded to higher frequencies as needed without replacing the entire drive. The tray and reading/writing mechanisms would also be independent, allowing for design variations like drives that grab the disk and pull it in, without major redesign.

The power supply would put out a few 60 and 1 volt lines, with several variable voltage outputs. While these may not be particularly efficient, they centralize power conversion in the PSU. Centralization of operations is crucial. As all other components, it would be liquid cooled. Thus, it would be much denser than many other PSU's. This may sound like a bad idea, but as long as the liquid system is well designed and no one is emptying rounds into the machine, it should be fine.

Another component that one might find interesting is the modulator. This would be a digital-to-analog wave generator, and could be used as a modem, or to provide traditional audio output to old headphones and speakers. Or, hey, tuning radio and TV- even broadcasting at moderate power. This would be placed above the screen, along with a digital microphone and perhaps a webcam.

The usual or recommended setup would be one colemak thin keyboard, a thumb pad for security, and a touch mouse. Perhaps a small scanning pad would be handy too. These would be isolated in the keyboard layer, separate from other internal components, and a breeze to replace. As much as possible, the machine should be EM shielded and waterproof. With the right sealing methods, and design, it may be a good idea to actually make it capable of underwater use, conditionally. That is, it needs to be designed with that in mind, but most people wouldn't need it actually built in when they get one.

I want to set up some kind of group to make such designs a reality, but I need all the help I can get. for those willing to contribute or comment.

USB 3.0

The point of USB is to standardize communication systems. It cannot do this, however, unless it is flexible enough to operate in the manner required by a vast variety of applications. Here, the creators of the USB protocol made a few fatal mistakes:

The limited it. They limited the connection pin number, and they limited the connection frequencies. And as for going wireless, they limited it, I believe, to single connections.

Here, I will detail my idea for USB 3.0. If anyone wants to use this idea, they may, and in fact, I encourage them to. But the second they try to rip it out of its proper place in the public domain with patents or similar intellectually fascist methods, I intend to attack. Because just about any idea is obvious to those with the right background. But I won't rail on IP laws here. Back to USB 3.0. You get the point.

One of the ideas central to the USB standard is backwards compatibility. This means that to form a USB connection, you have to start at the lowest common denominator and scale up. USB 3 needs to be a simple addition to that. Here's how a connection should be made:

Host to device: Hello?
Device: I'm here on USB 1.1.
Host: Can you do USB 2.0?
Device: Yes.
Host: Can you do USB 3.0?
Yes. 1 connection, 2 bits, 500 MHz
Host: Scaling to 1 Gbps connection.

or, 5 years down the road-

Host: Can you do USB 3.0?
Device: wireless USB 3.0, 5 connections. One bit/connection, frequencies 4.00, 4.01, 4.02, 4.03, 4.04 GHz.
Host: scaling pseudo parallel connection. Enabling soft encryption.

Why do we need this? Simplicity. Today we have USB ports, DV I/O, PCIe, PCI, SATA, etc.
I want one type of connection and one only: USB 3.0. Monitor, Stereo vision headset, controllers, hubs, cards, drives, eeg's, wireless scanners, co processors, PSU's. Everything. And without royalties.