I program stuff.

Saturday, December 23, 2006

This morning I heard that ryzom.org did not make their goal with the Ryzom game.

From their news mailing,


I have bad news this time. Our offer to buy Ryzom and release it a Free
Software MMORPG has been declined by the court.

At the end, there were three offers presented, and the other two were
bigger than our's. They are keeping more employees than we do, and
offer more money. We should get the details of the other offers soon,
so we should be able to know more more then. In the meantime, I would
like to personally congratulate the winner, Gameforge, and I wish them
good luck.

However, even if a conventional company is winning the bid here, the
campaign is still a success. It has made a lot of noise on the Net, it
has been covered by mainstream medias, we have found two FOSS
investors, we have got the backing of the FSF, 170 K€ of donation
pledges have been registered, and – perhaps the most important – we
have found we were not alone dreaming having of own our A-Grade MMORPG,
of owning a world.

We are currently discussing how we could still achieve that. If you want
to join us, please come and take a seat in our boards:


On behalf of the Ryzom.org community.

Like Xavier says this has been pretty successful anyway. This could be some first steps in this bold new direction.

More info in their forums.

Wednesday, December 20, 2006


I think this is important for a few reasons. This is a good campaign that many would agree that it's a good thing plus most would probably agree that it's a very achievable goal. It's a good place for people to start getting active and connected with eachother and unions.

Saturday, December 16, 2006

"The Free Software Foundation has sent out a press release announcing that has pledged $60,000 to the Free Ryzom Campaign. This campaign is seeking to purchase and free the Ryzom multiplayer game, the owner of which is currently in bankruptcy court (LWN covered this campaign last week)."

read more | digg story

I certainly hope that this project takes off. I agree with the FSF that this is a very important project. This could be a major milestone in the development of free software. They are not only trying to GPL the code but they are trying to go another important step. They are attempting to run a democratically run mmorpg, in the sense that users would be considered developers in the decision making process. Running under the GPL for all code and assets is rather important for this goal to work right. It's important to make the enterprise not owned privately for something like this to actually mean anything in practice.

Tale of the Desert claims to be a democracy run by the players in some sense, but the democracy there is limited in power. There is a bit of a political arena in the sense that some game rules can be affected, basically by petition but it appears that Andrew Tepper (the man that runs the MMO) still holds control and probably veto over any decisions that come out of the game run political arena. The political process is really a part of the game in the sense of that game. The fact that it may affect the development process of the game in a very limited and controlled scope does not really give the players control over the game. This is really a feature of the game in my mind rather than true democratic control, whether it's supported by the game code or the development process itself. I don't know if Tepper actually truly claims if the players have any real control over the game or not, but it seems obvious that Tepper holds the control and he is really the one making the final decisions behind the changes wether or not the impetus of those decisions comes from out of the game's political area or from out of his own head. It is an organization like this that Ryzom would need to avoid in order to have any kind of real democratic power within and without the game. There cannot be an entity that "owns" the game and can affect the decisions of the democracy. Possibly there can be someone (or some entity) that does the decision making process for how to carry out the collective decisions of the player public but that person (or entity) cannot have any more power to affect those decisions than one player in the game.

Thursday, May 18, 2006

Unleash the Fury

This is probably the coolest feature of an MMO that I've seen in a long time,

"A gripe heard often in MMOs are the inability of late adopters to play with early adopters of a game as their friends have far outranked them. In Unleash the Fury, higher ranking skills do not replace the lower ranks in your spell book and this allows and encourages more experienced players to play with less experienced ones by selecting matching skills."

if put together well with what they say about their hotbar templates and grouping, this could be very cool.

There are also few other realy neat ideas in there too.

Wednesday, March 08, 2006

I'm an indie game developer. In that space everyone does C++, and badly. In my day job I do enterprise applications in Java mostly, at least lately. I've done a lot of Visual Basic, ASP, SQL, and COBOL in my day. The Java we do is okay in my day job. But the game engine that we've used in C++ can be horrible OOP. Thinks like non-moving NPC object that knows how to navigate around a maze and has all the data structures for doing it in memory but never ever needing to use it because it extends from the AIPlayer class so we can get its scripting hooks. Huge objects with rotten cores, a.k.a: Undead Hulking Classes.

The game industry is hooked on C++ to a fault. I found myself longing for the days when it was all Assembly; at least people then knew better what their code was doing. Also C++ has always been a pain to write for a number of reasons. C is better but I never quite got the point of .h header files, and they are such a pain to maintain but they are pretty much necessary if you want to write a program longer than a page long. Anytime I have to write out a definition of something twice is annoying. (I know one is a definition and one is a declaration; but common, really. What am I going to declare about that function if not its definition?) Writing the .h header files feels like I'm writing a cross-reference for my code for the compiler, which the compiler is obviously already doing to my code anyway otherwise it wouldn't complain when it finds that my hand written cross-reference doesn't match its cross-reference. Don’t get me started on the unnecessary mess of pointers. Pointers to pointers, oh my!

I got interested in Lerp, Jonathan Blow’s little (still experimental) language for building games. He seemed to be referencing Perl a bit so I checked that out a bit. I was impressed by a good portion of it, until I got to the object support, which made me go, "what?!" It looks like they used the references support all by itself to sort of hold up the whole object system, which sort of put it at distance from the rest of the language (a distance you have to travel to back and forth each time you want to use an object).

At one time I looked quite a bit into Lisp. The language is lovely if not obfuscated. All the nice little parens all lining up. vim even lines up the code for me automatically based on the parens! But when I start writing something that is of small to medium complexity, getting all of those parens to line up was making my eyes spin in their sockets. It’s a beautiful and complete idea that all of the processing of every part of the program is within a cascading tree of parens within parens going up into the sky (a good number of them recursively, and up into the sky with a beautiful tail-end collapse when it’s all done). But other than that beauty the language implementation within that is difficult and confusing, pre-fix mathematical notation, for instance. And while seeing every bit of code as containing other code, while it makes sense algorithmically it is hard to conceptualize because although it makes sense that you can do that algorithmically because it implies an order, it is easier for most people to see it in a just a simple list of instructions. Perhaps I just don’t get Lisp. Every time I thought I was close to getting it there was some weird syntax like even the simple "(+ 2 (* 3 4) (- 2 (* 3 2)))" that would just take too long to read or write and I would start to get fears about trying to maintain that mountain of parens stacked up like a pile of so many needles.

I started making notes of what I would want in a language. I tried to image what I’d like to write to make the program work. I wrote up some notes in vim (for some reason vim is fascinating to me lately, probably because toolbars and drop down menus always seemed like a UI hack to me).

While I was learning Perl I heard about Ruby. I went to Why’s (poignant) guide to Ruby to check it out a bit and to take a break from Perl because I just heard about Perl’s OO hack into the language and was displeased with it for the moment. I’d probably come back to it after seeing what this Ruby is all about. Someone somewhere said it’s got a great OO system. Besides he says that this Why person is some sort of genius. I pursued a bit. First saw a bit of code that didn’t look like OO to me at first but somehow I knew exactly what it did.
5.times { print "Odelay!" }

-- (quoted from the guide.)
Interesting. Then I started reading. Because Why’s guide is somehow poignant. Then a bit later,
['toast', 'cheese', 'wine'].each { |food| print food.capitalize }
Oh my, oh my. Would you look at that? That’s a bit like something that I was wanting, the ability to pass in a group of thing so each of the things are passed into a function or something one at a time. Not the quite way I was thinking, but this seems prettier, much cleaner than the goofy first draft syntax that I was thinking of. Then he’s saying that the 5.times from the first example means that the .times is a method on the object 5. WOW! 5 is an object! 25 is an object, and so is 26, etc. It makes perfect sense. But I never would have thought of that syntax, maybe something more overt like Java? "new Integer(5).times()". But then how to get that { print "Odelay!" }part in there? Hmm, function-pointer? (yucky!). Everything is an object, even the numbers. Later in the book I noticed that the type system that is so overbearing in C and in Java is gone all of the sudden but I never am wanting to define them in such a way because it seems very apparent what everything is already. Odd but comforting.

Then I found out that things like "answer = 5 * 6" is really syntactic sugar for "answer = 5.*(6)", or if you wanted "answer = 5.* 6", stunning, simply beautiful. Even "if ( things == 5 )" is actually "if ( things.==(5) )". Then I find out you can use full introspection on the objects like "p 5.methods" and see all of the methods available. Mind blowing. So this is what people mean by full object-orientedness? Aaaaaand you can modify those methods, or add new ones, even add methods the main class of everything, then there are these mixins (wow!), which looks like it would fix the whole Undead Hulking Class thing that plagues game programming lately. There are modules you can download to allow you to play with cool things. Oh there is one for OpenGL, and even SDL, or you can build your own, nice.

At this point I totally forgot about Perl, but I was reminded when I saw that Ruby has regular expression support as well. The one thing that it might not have that I had in mind was a modified reg-exp for querying against sets of objects rather than strings, but I’m pretty sure if it doesn’t have it I thing I could extend the base objects a bit to do what I’m looking for. Then my head is really spinning; not spinning as in spinning, but spinning as in flying. (I think why has somehow infected me.) I can’t believe this, I could extend the languages base objects a bit, and that is not even intimidating for me, I feel like the language is not treating me as a second class citizen. I’m on equal footing with the language and we are here to help each other.

What? Am I imaging all of this? That’s too good to be true. Usually I’m used to people like Gosling saying "No, no, no, you can’t do that with the language. That just doesn’t make since. Why would you want to do things like that anyway? How does that fit into the My Design Of Java? You need to do it this way, or this way. See how that fits nicely into my language. Oh the beauty of my design! You’ll just need to rearrange your programs logic structure a bit here, here, here, and there a bit, but only a bit." It’s as if Ruby’s Matz is saying, "Hmmm. That could work. I see what you mean. Not what I ever intended, but it could work nicely in your program. Let’s try just adding a few things to my base Object here and here and here a bit. Let me know if that’s helpful."

A language as a partner; that’s what it feels like, and I’m just starting to learn this language.

Then there was another thought that struck me. These days, maybe people only work in languages because its fun for them to work in that language. Truthfully, I don’t think here’s anything wrong with that at all. People usually pick some language for some reason or another but once the project gets to a certain point the language starts to get in the way somehow, or their design gets in the way and they have to do some ugly hack here and there to get it working. People sort of wince when they do it and posture around it; like, "I wouldn’t do it that way normally" or, "there just is no other way to boot strap it here", and accompanied by a large portion of self-flagellating don’t-do-as-I-have-done comments in the code. I think that this is inevitable in any program in any language and it needs to be welcomed rather than scoffed at. I think Gödel may have much to say here that would put those poor programmer’s minds at ease.

Maybe I should just use Ruby because it’s turning out to be fun to play with. Forget about any other goofy parameter like stability, or performance, or maintainability, what have you because all of those things are going to be a problem anyway in any language I choose, no question there. The only parameter that I can think of right now that is hard for me in a language is, will it run on the platforms I want? Ruby has that down (like just about any other language out there anyway). I have confidence that any parameter that comes threatening to stand in our way, Ruby and I will be able to face it. And maybe that is the true reason that people use the languages that they use; confidence in themselves with the language.

People always say use the right tools for the job, meaning use the right language for what you are doing. But for game programming it’s not a even a question, it’s a mandate; use C++. People all say there is really only one language for game programming right now. This always seemed a weird thing to say, since C++ is not geared toward game programming at all, as a language. They never had that in mind when it was developed. "Hey, Stroustrup, can I write games with C++?" "Um, sure I guess so." But for some reason that’s all anyone seems to write games in. I guess that’s why C++ is usually so abused in game programming because it just doesn’t fit quite right for the problem domain. But then again, not too many years ago the answer would usually be, use Assembler or maybe C, or a mix of both. So things will probably be different in the next few years. We’ll all be writing games in Lisp or something.

Friday, February 17, 2006

The Forge

Wealth is an agent in a gravity. There is a pull which one cannot deny. The pull delineates. The pull confines. Aspects of the terms of coefficients fascinate and horrify. The pull. The action. Groups of people pushed by the cold air and rise to the lighter warmer atmosphere, where the mind takes its own form and the muscles unfurl. Some are the closest to the warmest spots; some are the closest to the coldest spots. Intriguing the patterns. There are times in warmth; there are times in darkness. Attempting to gain an affect, trying to redirect the pull of the agents to a pull from within themselves. Imagining that the warmth that they feel is coming from within and that that this is the source of the power. “The power is not the wealth the power is me.” Facing the sun, declaring that he is the source of the light. But there is no control of the nature that is the market, there is only control of the people absorbing the heat. In order to receive one must deny. Driving the other group away from the heat. Melting their wings with the scorching wealth they are nearer to. They fall against the mantle of society. Nothing falls below the mantle, yet burning with the fire of fortune, positioning themselves on the seat of the natural market they drive the others into the earth into the frozen ground by the art of displacement. No heat will return to the bones of the others; no light will return to their eyes. No sound will exist for them. The snow will layer upon them until they cannot be seen by any light. Their impurity will not dilute the comfort of the chosen ones, put there by happenstance.

Tuesday, February 14, 2006

The Art of Code

What is it that I am trying to accomplish? Is it a work of art that I strive for? Is it really an art form this coding and game development that I do? I believe so. I think that any human endeavor is an art form in and of itself. As long as a person does it there is necessarily some thought put into it and some effort to do it. Even though the level of effort and thought my not be comparable to the process involved in some other forms of art the effort and the thought and the dedication is there. This seems to be congruent to the process of building or part-taking in any other non-debatable art form. This can not be explained in detail, but should be thought upon with completeness.

Tuesday, January 24, 2006

Cube - Mike Nelson

Again in the cube of another.
Two men peering into the window on the table.
Code flashing, lips mumbling.
I'm near to the one at the keys.

There is a basking in the time,
a hesitation from the grasses jittering outside.
a readiness for the form of the code described
more in the mind than in the transparent form
of the lines that flicker.

The description of form, once gone, once
the flight of the moment passes,
will come to define them on screens to come.
They will go on, to another place.

Suddenly, in an instant they both move,
thusly the code is formed and the loop is complete,
the job is done. That instant will define the
code. As the code will depart, leaving just
the moment to live on.