23 January 2007

Announcing the new skill and latest plans

As promised in a previous entry, I will reveal the new skill.
It is called engineering, and will be used for the following things: creating landmines and RC bombs, repairing weapons and armors, and possibly in the player based city construction.
This skill will require a client update, so it should be there around April or May.

In the last week we had some talks on our forums about implementing missiles in the game. Today we had a meeting in the game with Schmurk, the one who is implementing the code, and we decided to try and see if a BSP tree structure for the object would work or not. A BSP tree would be slightly slower than having each map tile store a list of objects that cover that map, but it would use significantly less memory.
Either way, it will take longer for the server to start, given the fact that we have to load all the 3d objects and possibly some other data structures. Our estimate is about 30 seconds more, which is not really a big deal, except when testing new stuff and have to restart it often.

The beauty about having a 3d collision detection system on the server is the flexibility it adds. For example, we can calculate a true lightmap, doing a raytracing between each tile and the nearest lights. Or, later on, in the distant future, we can even give up the tile based movement and implement a true, free movement system. We are a long way from that, but one can dream, no? :)

One other goal of mine, which seems to work pretty well so far, is to have some 'commercial districts' in the game, made entirely or partially from player run bots.
This is good for everyone: it is good for us because we have more points of interest in the game. It is good for the players because they can find a lot of bots in one location, so they don't have to waste their time running back and forth.
And finally, it is good for the bot owners because more players come to visit their bot.
The first 'district' is almost completed, 3 bot places left. Next, we will have to find some other districts to populate, mainly in C2. Once they see how many people are visiting the first commercial district, I am sure they will agree to move their bots together, in other marketplaces around the game.

14 January 2007

Virtual Citizenship Association

Usually I don't comment about other projects, because it is not really my business.
However, I will make an exception in this case, because this particular project is asking for feedback, and their idea is to have as much feedback as possible.

What is the Virtual Citizenship Association about?
Well, they are a group of people that previously tried to buy the Ryzom MMORPG.
The Ryzom developers went out of business with some big debts. Their creditors wanted their money back, of course. Part of their player base formed a not for profit organization, attempting to buy the whole game (code, trademarks, artwork, etc.) and make it free for everyone. Sort of like what happened with Blender3D.
Their campaign was pretty successful, they got a lot of press coverage, people pledged a lot of money (around 200K Euro), and the FSF announced that they are going to support the project by offering 60K USD.

Unfortunately, they failed to buy the game, some company offered more money.
That didn't really come as a surprise to me, a well done MMO can cost a few million dollars, and with some proper marketing and additional investment, they can get their money back in just a few years.

So now the community around that project reinvented itself in the form of a virtual society looking for a 'country'. They even have a constitution, which is exactly why I am blogging about this particular subject. The reason why I want to comment on this is not to put them down, but to offer them some insight so they can foresee some of the problems that can arise from their contract.

Let us analyze some points from their social contract:

We will defend the rights of virtual citizens.
We consider that everyone playing or inhabiting a virtual world is a virtual citizen, with rights and duties. Too often, decisions impacting everyone's virtual life can be taken against the interest of the world residents. Privacy and individual rights can (and are!) easily dismissed, as nobody is looking over the shoulder of the local police - the world owners. Participative democracy, transparency and honesty are often only remote dreams.
We consider that our primary mission is to protect these elementary rights, and the Virtual Citizenship Association will be dedicated to have them recognized and enforced.


Now, this is very nice and idealistic, but also a little bit naive. I must admit that when we started working at EL, I also shared some of those ideas. Unfortunately, those ideas are not practical at all.
The idea of privacy in the context of a MMO is wrong. I am not talking here about privacy as in not listening to the players private conversations, or logging them. That would be wrong, and most if not all of the MMOs don't do that.
What I am talking about is logging the players actions. For example, in EL, we log a lot of stuff. We log trades, storage access, guild actions, macro attempts, and various other things that are secret.
One might believe that doing so is violating player's privacy. And one would perhaps be right to think of that. On the other hand, not doing so would open the floodgates of abuse. People would be able to mule, macro and multiplay, and the 'police' would be pretty much helpless. How can you prove that a player is macroing or multiplaying if you don't have any logs?

Sometimes it is necessary to check for all the players from an IP. If someone comes in the game and starts telling everyone to go have oral sex with their mothers, such a player is undesirable. Banning that player won't solve much, as he or she can create a new account and repeat the offense. Or, someone more 'creative' can go further and create a bot system that creates accounts and randomly insult people. So in such cases, it is necessary to ban the whole IP (or even the entire ISP of that person, if they have a wide range dynamic IP).

So how should such a problem be handled? Using "participative democracy, transparency and honesty"? How would you go about that? Make a poll on the forums and ask if this or that IP should be banned? Perhaps even asking the offender if he or she agrees to a ban? Often times if someone starts creating accounts with the sole purpose to annoy other players, that person is already playing the game with a different character. Asking the main character why he or she did that, they will invariably respond that it was their brother or friend, not them. You would be surprised on how innocent everyone is, and how widely spread the bad brothers are.

There is no doubt that sometimes there is some 'police abuse', both in MMOs and in the real life. This police abuse is bad for everyone, and it should indeed be addressed. But all this should not be transparent, it should be an internal investigation, not a matter of public vote. If the players are constantly unhappy with the police actions, and they feel that the game owners are evil and unfair, they will leave that world and find some other MMO. In this day and age, there are quite a few free MMOs out there.

We will promote the use of Free Software in online universes.
To ensure a minimum level of transparency, we consider that online universes should be licensed as Free Software, and rely on public standard protocols. We will advocate the use of Free Software to closed source copyright holders and help freeing virtual worlds.


This is a very unusual and bold decision, and AFAIK no other MMO decided to follow this model. Not even Planehift, which is seen by some as the one and only Open Source MMO.
The idea is that sharing the code AND artwork/levels with pretty much everyone can result in a lot of confusion for the end user. Many new MMOs based on their code/artwork would spring to life, and it is expected that most of them would have some alterations (prices, formulas, maps, rules, etc.). This would also split the playerbase into many, many fractions, and the whole world coherence would be compromised.

We consider the avatars should be the property of their respective online players and virtual citizens.
We consider the data of a virtual citizen, located on a server as the property of the virtual citizen who created it. Every virtual citizen should be allowed to download it (for example to create a copy on another server), and also to delete it. Also, every virtual citizen should be free to exchange its data (avatars, objects, tc.) with others.


That's all nice, but if you allow the players to download their own file, and the game is open source, how do you know that the player didn't modify the file before re-uploading it? And allowing the players to 'import' their accounts from one server to another would destabilize the new server (for example, I can take my 1337 level 999 character and place it on a new server, pwning all the n00bs there). There are other problems with that as well, for example what happens if my player name is already taken on some other server? With some creativity, this could also lead to items duplication issues.

Our priorities are virtual citizens, online players and free software.
We will be guided by the needs of the virtual citizens, online players and the free software community. We will place their interests first in our priorities. We will support the needs of the players for operation in as many different kinds of computing environments as possible. We consider it should not objected to non-free works that are intended to be used with Free online universes. We will defend the right for everyone to create new game servers, with identical data (except personal data), without any fee.


This is good, I don't really object to any of this besides for the above mentioned issues of everyone being able to start their own server.

We will not hide problems.
We will keep our entire issues report database open for public view at all times. Reports that people file online will promptly become visible to others. When a technical issue will happen, we will quickly publish details about it, and explain the causes - all of them.


Ok, so let's consider this scenario:
The project is completed, and one year after we have perhaps 20 servers, owned by various people. Let us assume that each of those servers is successful, and there are thousands of people playing on each server.
Then, one day, some smart guy notices a problem: If you do this and that, you can duplicate items. But, being a nice guy, he goes and posts the details in the one and only, public view bugs database, for everyone to see.
Now, by the time the problem is fixed and all the 20 servers are restarted to fix the problem, a lot of the virtual citizens will be very, very rich. While this can be fixed via a rollback (restoring the players from the backups), doing so will, without any doubt, piss off many players who lost a few days worth of playing. This issue can be even more damaging if, for example, this happens around some national holiday, while the developers are not around.
A much better alternative is to have a private database and a developers mailing list, where problems that are critical can be kept private until everyone fixes them (or they can be released to the public in a week or so).

Our decision process will be based on participative democracy
We will elaborate, a constitution similar to the Debian project constitution, but applied to our specific case. Noticeably, two main modifications will be :
We would recognize that, in a online universe, all the virtual citizens are developers ; after a completing a mentorship to ensure he knows the rules of the project, every member should be able to participate to the decision-making processes, and especially to the votes.
The possibility to hire full time employees, who would complete work designated by vote.


That seems like anarchy to me. Now, I am a libertarian guy, so I don't really mind the anarchy too much. However, I would really not like the idea that everyone, after a small initiation period can come and make laws or change my life around.
As some smart guy put it: "What is a committee? A group of the unwilling, picked from the unfit, to do the unnecessary."

Basically, the idea of democratic development doesn't really work. You need to have a leader that acts as a benevolent dictator. For example, the Linux kernel is not a democracy. Everyone can submit code and request modifications, but 'The Man' (Linus) has to approve them. This is because while a lot of people are full of good intents, the road to hell is also paved with good intentions.

For example, every MMO player wants something different, and often mutually exclusive from the game. Some want their skill to be made easier. Some want some sort of commuism in the game, where everyone is almost equal (but they often want to be more equal than others).
Some want more quests, while others want more monsters. Some want SciFi elements, others want the game to be strictly medieval. The list is pretty big, and it is rare to find two players to agree on every issue.
Like I said, the problem is not that people are evil, or egocentric. The problem is that they lack an unbiased, 'birds eye view' of the project. They think that having their changes implemented would make the game a better place, but in reality even small and seemingly good changes can ruin the game for everyone. In addition to that, if you need to spend time democratically voting for each change, the game progress would come to a halt.

As for hiring full time developers, well.. the question is, where would the money come from? We make our money from selling ingame items and services. The donations are very few, and could not even support the hardware and bandwidth, let alone someone working full time. I still remember the story where the Gentoo founder had to leave his project and go work for Microsoft, because he couldn't make a living from Gentoo. And I remember the Slash Dot backlash where people were calling him all kind of nasty names for 'betraying' the project.
While some OSS projects (Linux, Apache, PHP) are backed by big companies, they are backed because those companies need them to improve, they are often included in their servers or products. But who would back a free MMO? Look at Planeshift, how much funding do they get?

Now that I am done with the criticism, I really hope that this project will succeed.
It will be very interesting to watch a totally free (free as in speech) game, and equally enlightening to observe their progress and learn from their mistakes.
In fact, if the project founders want some advisor with 4 years of running and developing a MMO experience, I am willing to help.

Short term plans

Playing the game for about a month gave me some additional insight in some areas. For example, in order to limit the manufacturing of items we implemented the food requirements and cooldowns.
This is good, but it can frustrate the players sometimes. So I am going to change a few things here and there. Unfortunately, I can not tell you what because if I do the players will stock on some items and then sell them at a higher price once the changes are implemented.
What I can tell you is that the all the manufacturing related skills (alchemy, potions, manufacturing, crafting) will benefit in some way or another from the next update changes. Now, don't expect something drastical, it ain't gonna happen.
I am however confident that after those changes will be implemented and people will get adjusted to them, the game will be better and the people happier.
Once the updated is complete, I will explain here the reasoning behind those changes.
If you are looking for an ETA, it is about 10 days from now.

As for the long term plans, there will be a new skill comming in the game at the next client update (around April). But more about it in my next blog entry.

07 January 2007

Yet another new record


Today we had 766 players online. Counting the bots too, there were almost 850 connections, and the server load was minimal, as it can be seen on the graph.

The last few updates were met with almost unanimous approval from the players, which means that either we are doing something right, or that they got too tired of complaining :D

I miss doing some programming. In the last few months I did very little programming for the server; mostly I did edit the definition and scripting files to add the new items and monsters. This is somewhat reccurent, I felt like that many times.
Sure, there was some little programming here and there, like adding new special days, but it was mostly copy and paste. The scripting (Small) also requires programming, but, again, is mostly copy and paste.

One thing I want to do soon is to make a 'light map' for the server. This light map would precalculate the luminosity of each step tile in the game, taking into account the nearby light sources and the background ambient light in the caves, dungeons and inside maps. Ideally, the nearby objects should also be taken into account, some sort of ray tracing.
There is a problem with this though; the dynamic maps (player based houses, factories, etc.). Such a precalculated map would need to be changed each time a new lightsource or object is placed there.
If we are going to do a raytracing to each nearby light source, recomputing the map would require a lot of CPU time. One possibility would be to have a background thread doing that each time something changes. The problem is, right after a map change the light map will be wrong (not yet computed), which could cause all kind of problems.

Perhaps you are asking what is the point of having such a light map anyway.
Well, the idea is that I want the server to take that into account, so depending on a variety of factors (the light level of each tile, the items a player is wearing, the perception attribute of other players) one player will be able to see or not another close by entity (another player, monster or NPC).
Similarly, a player in the dark fighting another player in the dark would have some penalty if his perception skill is not high enough. I don't know yet what kind of penalty that would be (how severe). It will have to be determined through additional testing.

Once we have this system in place, we can add a lot of neat things, such as spells to reveal players in an area, a perk such as "night vision", and so on.