October 26, 2007

Open Up Gaming!

When I talk about Gaming, I refer to Computer Gaming. I define Gaming as the process from conceptualizing the game, to designing it, implementing it, testing it and releasing it to a community, which makes further modifications (Mods) and makes it even more popular.

The problem is, with people's needs for employment, money and popularity, game developers have forgotten the fact that a game is about having fun, rather about licensing, legal documents thrown around and finally, restricting the user's choice on what he can play it on.

Let us look at the current bitchin' (real bitches) issues in gaming:

1. Halo3 is developed exclusively for the XBox 360. To increase the sales of the 360.
2. DirectX 10 is exclusively Windows Vista only. So Microsoft could put 'Windows just got better (again!)' and increase Vista sales. Sites like this advertise that by moving to Vista, they can get better quality graphics. This is a lie, and Microsoft did not backport DX10 to XP/2000 not because it was hard, but because they want to force Vista on you.
3. DirectX is a Windows only API (and maybe the XBox*), and people who develop on it are restricted to give Games on Windows only. This is a problem for Mac/Linux/*nix users, because it's hard to get 100% Windows API emulation on these platforms, even with commercial versions of Wine (like Cedega/Cider/whatever)
4. Steam games are not available for Linux, primarily because the games they do now use DirectX rendering. Their older games used to work natively on Linux because of the OpenGL backend; I do hear that Steam games are available for the PS3, in that case they could consider releasing static binaries for Linux/*nix.
5. Ever noticed that Apple's been bitchin' about a closed iPhone platform, bricking people's unlocked iPhones? They prevent people from developing mobile games on their iPhone platform. I am sure that they've got similar ideas for their OS X as well, and maybe they'd have to get a share of the profits if you start developing and releasing games for OS X as well.
5. Valve developers claim that Apple doesn't support them well enough to port Steam for OS X. For one, I am sure that porting a game to a POSIX operating system with OpenGL wouldn't be hard; Apple hardware is usually standard, and there is usually no missing vendor-extensions to OpenGL.
Are Valve devs BS us?
6. OpenGL is a standard set of APIs, used since the 80s. The problem is that while maintaining backward compatibility, they don't really have an easy API to get around it, and each vendor while claiming to have full compliance with a rececnt OpenGL standard makes his drivers only to make Quake run at *-fps and nothing more. So development on OpenGL is a good thing, but there's nobody implementing these standards well enough.
7. Talking about physics, companies like Ageia are trying to push their own PPUs in the market, and APIs like Havok trying to tie up with nVIDIA to get these things done on their newer GPUs. I'm sure it probably wouldn't open it to the general public either; There is no real production quality open physics API which can take advantage of current hardware (CPUs, GPUs and PPUs) without any licensing issues. When Intel bought Havok, I'm sure they are looking at selling it with their future flagship Octa/Hexadeca core CPUs..
8. Talking about Sound, although people are trying to standardize things with OpenAL, it's becoming a real issue having these APIs licensed to consoles.
9. What about console licensing, huh? Most Console makers offer their SDKs at a very high price; Partly because they also give development hardware, but really because they are getting 'Money'. I am sure that cross-compilers aren't unfamiliar today, and it wouldn't hurt to test apps on a console you buy off the street.
10. Supporting input has been a pain again. I am aware of no real platform which provides cross-platform low latency input to a variety of input devices with force-feedback support.
11. The last issue is in integrating all this into the same development API; like DirectX, except with the openness to other platforms added.


So the basic analysis of why this is, yields that:

1. Hardware manufacturers want to make money with their whatever hardware and closed source drivers. Whatever they can't do in hardware, they kludge and that becomes their strategic advantage (in terms of manufacturing cost); The end user doesn't care a damn and all he sees is the jazzy graphics on their websites and thinks he should buy the supposedly next best thing tm.
2. Software corporations, like Microsoft, Apple all want a share of the money if you're developing games for their platforms.
3. Console manufacturers, who basically integrate the hardware, their software want to license their SDKs so they can make money.
4. Any combination of the above restrict people from developing games on the other platforms because of money.

So this has led to these things:

1. Independant game developers, Homebrew software makers are not able to develop useful, supposedly free applications/games on any of these platforms. Only the people who have the money can develop. Pay up or die.
2. If you're supporting open-source software, and having a great 3D engine, you can't license it to people for consoles because of the money factor. Take Ogre3D, for example.
3. If you're a game player, you'd have to buy Vista to run Crysis, or the 360 to play Halo.
4. If you're running a DirectX game, you'll have to buy Windows. But you're not interested in Windows, just the game. You have a computer and someone tells you, "Well, you've got a fast computing machine, but it's a brick. Not because it can't run the game, but, well, we've got other priorities and we won't make it run on your machine"
5. Only game corporations with a lot of money can make any real games and license them. You're dead otherwise, practically.

So, when it boils down to this point: have money or don't make games, what should you choose? Should you throw away your interests because some guy decides it isn't worth it? Or should you be part of a movement which rebels against this and ask for a open gaming platform and for all manufacturers to support it?

By a open gaming platform, I mean a OS and the userland API. They should be open source, "free" software, and you can add on drivers for it if you wish people to use your hardware. Your drivers should ideally be free too, so you can run your hardware on hardware platform X, for all values of X. The whole OS and userland must be freely distributable.

The next step comes in licensing games; When people develop games for your console, make a good console or die. Support the open platform, encourage indie game development. Don't expect that if your game maker doesn't get a license for distribution, his game won't sell. If an indie game-dev makes a good game, publish it and make some money. You anyway earn for the services you offer and the consoles you sell. Why exploit the developer, then? And why restrict your user if he wants to develop a game for your platform?

When this comes up, we can expect the barriers to gaming completely removed; If you're a game developer and fear that your people will lose their jobs, you're wrong. Hire indie developers who are talented; Make money from software like you do now. If you encourage modding, chances are that you'll be more popular than otherwise.

I hence put this up expecting that the future of gaming might change; You could be a part of this, making that change.

October 17, 2007

The meaning of Life rev2

Just a few days ago, there was this article on parallel universes. Let me now explain why I think we are all numbers.

You will understand this article if you are aware of how they are represented using the binary notation. If you're not the mathematical kind, just try to follow the non-geeky explanation.

It also might give you an idea why I think the inverse of infinity is not zero, but a number which doesn't exist, called the no-number.

First, there was no-number. And then it splits into the alternative, the number.

Then were two numbers: 0 and 1. 0 represented non-existence, 1 represented life.

When we say that non-existence is there, I'm saying it doesn't exist, but things do go on in there, but they'll never be like us because they don't exist.

I believe the next division occurred when God was there and life existed, and wasn't. Again, 0 and 1.
Now we have three numbers:

1 <- Life
01 <- Life without God
11 <- Life with God

Now, it basically goes on, adding 0s and 1s to the left hand side of this number when or not an event occurred.

How do we represent numbers which have three states? (And not two or four)?

if (-)
else if(--)
else

The answer is, split the three states as this:

if(-)
else {
if(--)
else
}

i.e. 0, 1.

add 1 or 0 to the left of this 0, and we get:

10
00

the 11 is not taken, we shall ignore this. but doesn't this contradict that there must be exactly
3 possible states? Which means all things always happen or don't happen. There's nothing which never can happen (11).

So, constructing our life as a number leads us to this:

Our universe exists, where we realize its existence and where we apply this theory of existence to it, and I exist, I blog, and you exist and you're reading this.

Therefore, this leads us to construct various universes where many things don't happen/happen, and in the non-existent plane as well.

Of course, there could be a particular order in which the divisions occurred, but it is possible to construct more views of universes by simply changing the order of these divisions.

Infinity is the number of universes that exist, and the no-number is what makes it possible, and not zero. When it itself split into a number and no-number, came the large number of universes. The number became infinity. If there were not enough numbers at all, 0/1 would be the theoretical equivalent of infinity, which isn't really a no-number.

Ever thought of what numbers are? They are empty, different states theoretically possible just like we are.

Some implications (non geeky part):

  1. Either you read this, or you don't, but not here.

  2. If you're poor here, maybe you're wealthier elsewhere.

  3. You exist here, and you don't elsewhere.

  4. You're forking the universe into many different states when you toss a coin (and if it lands on heads or tails, or on none, or lands on both.)

  5. You think I am crazy here, and you don't elsewhere.

March 20, 2007

In Loving Memory

I met him during that fateful trip to Techkriti 2004. We spent a lot of time together since then.

 


He taught me how to use scp. How much I remember him. In my last semester, I was graduating. Then in my first semester, he was graduating. We couldn't talk much then. Now we can't, if we tried. How ironic life is.

 


As I write this down, I cherish the memories we shared, the moments we had. Kapil, I'll miss you very much. Rest in peace.

 


Shine on, you crazy diamond.

 


In loving memory of Kapil Jamkar, 06-05-1984 - 19-03-2007.

 


Kapil Jamkar, 06-05-1984 - 19-03-2007

February 01, 2007

Why I hate the W3C (or) Why I hate Blogger (or) Why I hate both

From the W3C site:
"The World Wide Web Consortium (W3C) develops interoperable
technologies (specifications, guidelines, software, and tools) to lead
the Web to its full potential."

Blogger is what you're reading this page on. It publishes your thoughts through the Web, so a lot of people can read them.

Now that I have formally introduced both of them, I will talk about the problems I have with both of them.

 


Problem 1


When I try to hit a newline in blogger, it assumes I'm a noob and inserts a <br/> in place.

Now, when I happen to insert a few newlines (\n) in a list for my own readability, it converts them to something like:
</li><br/><li>

which isn't really okay with the W3C XHTML transitional validator. Hmmmph! Now how about that?

 


Problem 2


The blogger templates are written sometimes with <p> so according to the W3C, there are problems nesting block level elements in it. Now I being a normal user introduce a paragraph because I think that would help people read my posts better. And I also want lots of people to be able to read it. I assume that the system works well by default. According to the W3C, some browsers are stupid, and would fail to render your document tree structure. Especially in the mobile browsers. Now this is so messed up.

 


Problem 3


The conversion to XHTML has typically been a kind of Arab and Camel story for me. So, being a kind arab, I have often tried to keep quiet when the W3C camel discouraged me from using <center> and <b> tags: the two tags that could make all the difference to me, in HTML. I haven't fought back when it said I couldn't arbitrarily nest elements. I mean, browsers and DOM!! WTF?!!!

Now, the camel came into the tent' and told me I had to escape links with queries in them:

<a href="http://www.google.com/search?q=XML+CDATA&amp;oe=utf-8">
XML CDATA
</a>

and that's when I got pissed off and decided to kick the camel.

Invalid XHTML 1.0 Transitional

 

January 21, 2007

Life just got a li'l harder

After dusting off the cobwebs off this blog, I write today. (Why do I feel like using the word: sabbatical?)

I just feel that life keeps getting harder for people as they grow older. Especially because of the learning factor.

Now, I start with my theory:

People usually learn a lot of stuff when they are young. It's like their brains are formatted and you've got all of your hard disk to use. It's like you can keep putting data in forever. The catch is, you can't archive your old data into tapes nor remove them. And you've got to put up with bad inode information as well. And plain old stupid data. :|

Example: I still remember something about Oxygen and symmetric sigma orbitals outside of pi orbitals in a valency diagram.

But as you keep stuffing things into it down the years, it eventually becomes full. So you try harder and harder to squeeze in more data, as your environment changes; People expect you to upgrade yours OS files once in a while. Or at least get the old programs to work with newly acquainted data. Unfortunately, the problem is SPACE. So, you try to relate the new data to the older ones, and basically compress the data (much like the LZW algorithm used in Zip files of today!) The major difference is you try to compress it as much as you can. You don't usually relate it to the last 3 years of information only. It could even be something you learned 10 years ago. So, you perform extremely greedy compression.

And, as more data keeps pouring in, more space is filled, more the need for compressing the data better, more the data to be searched, and eventually more effort in storing it. If it's something you have learned, it won't be stored (because it already was stored)

So, it's harder to learn new things as things keep piling up in your unerasable hard disk.

I think that this degradation in one's ability to learn at a particular rate is inverse exponential with respect to time. Here is a simple mathematical curve I plotted to show the relation:

Learning Curve

I feel that I'm on one of those years where I haven't got much space in my hard disk. I might probably find a treasure trove if i go back through time. Who knows! ;)