<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-24781728</id><updated>2009-11-01T15:49:23.752-05:00</updated><title type='text'>Eternal Lands development journal</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default?start-index=26&amp;max-results=25'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>174</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-24781728.post-143048823861696414</id><published>2009-07-17T02:48:00.002-04:00</published><updated>2009-07-17T03:01:06.358-04:00</updated><title type='text'>Quests and new NPCs</title><content type='html'>As posted in previous blog entry, the current focus is on the quests and NPCs.&lt;br /&gt;I added 45 new NPCs, and 3 quests, and I don't plan to stop from doing that any time soon. Most players seem to enjoy the quests, and a lot of them actually talk to the NPCs and finish the quests. The increased rewards do help a little, I guess.&lt;br /&gt;I also started to upgrade the scripting engine, such as adding the ability to make objects dissapear, and get notifications when a monster is killed. There were very few improvements to the scripting system since I originally added it in 2004, so now it's time to add a few more things to reflect the changes in the game since then. For example, there is no way for the script to know if mines or wards are in an area, and that can be used for some interesting quests.&lt;br /&gt;&lt;br /&gt;There are a few quests that are kind of hanging in the air since 2004, and some players expressed their desire to have them continued, so I am brainstorming on a big quest related to the pirates that plague Portland.&lt;br /&gt;&lt;br /&gt;Hopefully, by the end of the year we will have at least 10 NPCs in almost every map of the first continent, an by the next summer in almost every map of the game.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-143048823861696414?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/143048823861696414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=143048823861696414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/143048823861696414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/143048823861696414'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2009/07/quests-and-new-npcs.html' title='Quests and new NPCs'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-6819914317620908815</id><published>2009-06-02T15:11:00.002-04:00</published><updated>2009-06-02T15:25:23.349-04:00</updated><title type='text'>Quests</title><content type='html'>I kind of run out of ideas for new things to add to the game, and I decided to focus on one aspect we were lacking: Quests.&lt;br /&gt;In fact, I always wanted to have a game with lots of quests, that can be played much like a single player game, if the players chose to. But there were always other things getting in the way, so for the past 4 years there were no new quests (besides for a few new god quests).&lt;br /&gt;&lt;br /&gt;Adding quests is a lot of work, and you have to be really careful and test them properly, or else there will be problems. Implementing a good quality quest can take 20+ hours, but since I have to do other things as well, it can take more than a week to add a new quest.&lt;br /&gt;&lt;br /&gt;One of my dreams was to have about 10+ NPCs per map, all which are part of quests, or at the very least give some background information, to make the game feel more alive. All those NPCs must be connected in some way or shape, for example the NPCs on one map will talk about the NPCs on that map and even NPCs on nearby maps. Ultima 7 and Ultima 7 II do exactly this, and for this reason they still have a pretty big fan base.&lt;br /&gt;&lt;br /&gt;Anyway, for the next few months I will try to focus most of my development work on adding more quests, and I hope people will enjoy it.&lt;br /&gt;&lt;br /&gt;P.S. Most, if not all of the future quests will give experience in some skill[s], which will eliminate part of the boring, repetitive aspect of the game, and will give the new players a chance to level up faster. For example, if a quest gives 10K attack and defense exp, that's a lot for a level 20 newbie, but very little for someone who is level 80+&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-6819914317620908815?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/6819914317620908815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=6819914317620908815' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/6819914317620908815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/6819914317620908815'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2009/06/quests.html' title='Quests'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-7273393664391894061</id><published>2009-05-02T23:18:00.002-04:00</published><updated>2009-05-02T23:40:52.886-04:00</updated><title type='text'>Cellphone games</title><content type='html'>I've been thinking more and more lately about trying to enter the cellphone/PDA/PMP game market.&lt;br /&gt;The advantages are quite big:&lt;br /&gt;1. Big companies don't compete, so there is enough room for the small guy.&lt;br /&gt;2. Those devices have limited capabilities, so there is no need for fancy graphic (3D) and anything complicated. Many devices don't have a touchscreen so the control has to be done with just a few buttons.&lt;br /&gt;3. Since the development time is relatively small, you can sell the games for cheap (1-2 bucks), and most people would buy such a game if they like it, since no one cares about 2 bucks.&lt;br /&gt;4. It MIGHT be possible to find some manufacturer to license your game and include it by default on their device. I am thinking mostly of the chinese PMP makers.&lt;br /&gt;5. Porting the game on different platforms should be relatively easy, because we are talking about 2D games here. No external libraries are needed except for Zlib, which can be statically linked with the code, and all I need is to access the frame buffer, read/write files, read the buttons state, and sleep(). &lt;br /&gt;&lt;br /&gt;The only problem is the different screen sizes and orientations. Probably a different set of artwork would be required for each screen size, so the scene will look the same. I think it is poor taste to resize images on the fly on such limited devices, because it consumes CPU time, and, implicitly, battery.&lt;br /&gt;&lt;br /&gt;What I have in mind for my first game is 2D quest game. It will look similar in a way with the Mario games, or the old Dizzy games, but, of course, with better graphics. So you'd be able to move left, right and jump. There will a key for accessing your inventory and using objects. In total, 4 keys, perfect for a cellphone or small device.&lt;br /&gt;This game will use artwork from EL (pre-rendered), and will be based on the EL universe. I'll let you know if/when I have something to show.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-7273393664391894061?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/7273393664391894061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=7273393664391894061' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/7273393664391894061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/7273393664391894061'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2009/05/cellphone-games.html' title='Cellphone games'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-8233423208916485005</id><published>2009-04-17T00:33:00.002-04:00</published><updated>2009-04-17T00:49:08.433-04:00</updated><title type='text'>Harvesting changes</title><content type='html'>Recently I made a few changes in how the harvesting works. Mainly, I increased the number of events, which force you to actually pay attention to the harvesting process, to restart it when it stops due to those events.&lt;br /&gt;Now, for those who don't harvest AFK, and harvest only resources that require a level smaller than their harvesting level, the change is not too drastic. There will be a slight decrease in the rate of the harvesting, perhaps 5-10%, but since it happens to everyone equally, I don't consider it to be a problem.&lt;br /&gt;There were 3 reasons for this change:&lt;br /&gt;1. The economy was flooded with too many items and resources, and almost every day more gold was coming in the game than going out, by about 15% on average.&lt;br /&gt;2. Gold farmers had many harvesting characters which were used to make gold and then sell for RL $$$. Now, I don't have a huge problem with the gold farming, so long as you have to actually work for it. But having multiple harvesting characters that generate gold is not good for anyone except for the farmers.&lt;br /&gt;3. Some players had harvesting characters which they used to supply their main character. While that is illegal, not everyone gets caught, so this will have a negative impact on the cheaters.&lt;br /&gt;&lt;br /&gt;I expected that most of the people will welcome the changes, since it fixes some of the inflation, while at the same time impacts the cheaters and farmers, with relatively little impact on honest players.&lt;br /&gt;But it turned out that I was pretty wrong. A lot of players complained that, omfg, now they can't harvest from school/work, or harvest while eating breakfast and taking a long crap in the bathroom. Others complained that now the harvesting is too boring because they actually have to pay attention(!) while harvesting.&lt;br /&gt;&lt;br /&gt;Based on my tests, and the tests of some other players, if you don't harvest AFK, you don't have much to worry about, the resources harvested are about the same as before (and you get more harvesting exp in the process). Nevertheless, the rate of the random events was slightly higher than I wanted, so I will drop it down just a little bit.&lt;br /&gt;&lt;br /&gt;Unlike most of the other games, in EL harvesting is almost painless and automatic. We have map walk, so you can get to the storage with just a few clicks. Harvesting id done with a few clicks as well. I think that those complaining should try some other games, and see if they enjoy it more there.&lt;br /&gt;&lt;br /&gt;Anyway, the end result is that some people quitted, and many of them don't bring their harvesting alts online anymore, resulting in a players drop of ~10-15%. I am not really crying over that loss, but we will have to focus more on bringing new players and increase the player retention rate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-8233423208916485005?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/8233423208916485005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=8233423208916485005' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/8233423208916485005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/8233423208916485005'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2009/04/harvesting-changes.html' title='Harvesting changes'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-1735059638301406415</id><published>2009-03-31T01:24:00.003-04:00</published><updated>2009-03-31T01:44:05.064-04:00</updated><title type='text'>New stuff</title><content type='html'>I have decided to focus a bit more on events and bringing more strategy to invasions.&lt;br /&gt;Until recently, the invasions revolved around being strong and using the best gear. For the high end monsters, only the fighters had a real chance, and there was very little team spirit.&lt;br /&gt;With the last monster, Mare Bulangiu, and to some extent with the Bulangiu, the things changed a little. Those monsters are pretty hard to fight in melee combat, due to their high armor and damage. In order to kill them, it is best if you employ some different methods at the same time.&lt;br /&gt;For example, people can harm them, while the archers can shoot at them, and the summoners can summon rats to save the tanks some hit points. And with the last Mare Bulangiu, people actually did that.&lt;br /&gt;&lt;br /&gt;So now I was thinking to improve that a little. I want to implement a few new things:&lt;br /&gt;1. New summoned monsters that will be relatively cheap, but be better tanks than the rats, who die in one hit. Another monster would have the mirror skin perk, which can help a lot. Maybe even something with the self destruct perk. This new monsters would need a relatively high summoning level, however.&lt;br /&gt;&lt;br /&gt;Then I can add some special mines that do more damage vs invasions, and some special arrows and bolts that can have some new effects over invasions as well. I am not sure when I will add all those new things, but I hope I'll do it in a month or less.&lt;br /&gt;Afterwards, a lot more people can contribute to the defeat of the evil forces :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-1735059638301406415?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/1735059638301406415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=1735059638301406415' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/1735059638301406415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/1735059638301406415'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2009/03/new-stuff.html' title='New stuff'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-3199102923849933949</id><published>2009-03-07T01:36:00.002-05:00</published><updated>2009-03-07T01:59:08.407-05:00</updated><title type='text'>The economy</title><content type='html'>EL has a really big economic side to it, and although players often complain about stuff, they mainly like it if they keep playing the game.&lt;br /&gt;One of the biggest problems is that the manufacturing skill does not bring enough income. This is mainly due to the fact that there is a very fierce competition between the players, and often the end product is sold at a loss. Many players try to make great swords, in the hope that they will get lucky and produce an enchanted version. The non enchanted versions are sold at very low prices, because the demand is smaller than the production rate.&lt;br /&gt;I always told those who complained about the economy, as though it is my fault, to actually take the matter into their own hands, and not lower the price to below the value of the ingredients. Now, it seems that they finally realized that it might be a good idea to do so, and they agreed to go on 'strike' and not sell items at a loss, which is great.&lt;br /&gt;&lt;br /&gt;Now, there are a few solutions to this problem, but, as with anything, some people will love them, and others will hate them. For example, one solution would be to increase the break rate of the great swords (which I did). Before doing that, there would be one or two great swords breaking each day, which is not that much considering that there are probably 100+ players using them. Assuming a totally equal chance to break one, that means that each player has a chance of about 1.5% to break a sword in a day, which means that a sword would last, statistically, 2+ months. Given the fact that the cost is only around 20-25Kgcs, that's about 400 gc per day, which is not that much.&lt;br /&gt;Another solution would be to make a formula that produces the enchanted version of each sword, so that the manufacturers can reliably make them. Of course, the formula would have to be quite expensive, and use ingredients that cost at least 200 Kgc. The formula would also need to require a very high manufacturing level, in order to reward those who worked harder.&lt;br /&gt;&lt;br /&gt;Another way to help the economy in general is to add new gold sinks. The more important the gold becomes in the game, the more valuble it is, which drives costs down. On a related note, the archery skill is not that useful (although it has some uses).&lt;br /&gt;So to address both issues at the same time, I came up with a new potion that cost 15Kgcs, available for now only from the NPC (which means, it is a gold sink). This potion permanentely increases by 1%, up to 60% the chance to do a critical shot with the bows and crossbows. A critical shot means that all the armor penalty is removed.&lt;br /&gt;So a player who spends 900Kgc and has a high ranging skill can be quite competitive in PKing (especially if they are in a team).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-3199102923849933949?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/3199102923849933949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=3199102923849933949' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/3199102923849933949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/3199102923849933949'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2009/03/economy.html' title='The economy'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-8612828029893401443</id><published>2009-02-15T03:05:00.002-05:00</published><updated>2009-02-15T03:17:46.515-05:00</updated><title type='text'>New stuff</title><content type='html'>Well, it seems that it will take a little while until I'll start working at the map editor, so in the past few weeks I did some 'clean up' stuff. Things like adjusting some monsters to be more useful, changing some spawns, removing the TS 'loop hole', adding a few new special days, etc.&lt;br /&gt;&lt;br /&gt;Right now I am working at two potions that will decrease the attack and defense levels by 5, up to -30 of your current level. They will use dragon scales, and will require a high potion level, which takes care of a few issues: Too many dragon scales in the game, top potioners not having enough potions to do for their levels, and some fighters who fall in between monster levels will now be able to gain more exp. Now the attack and defense levels increase every minute towards their nominal value, even if you are hungry, so this kind of training will be quite expensive.&lt;br /&gt;&lt;br /&gt;I am also working (right now in the design stage) at an awards system. It will be similar to the top players list, but it won't be based on levels. Instead, it will be based on 'achievements', like how many rostogols stones lost, how many rare items harvested or manufactured, how many Leonard kills, etc. It will be reset every month, so even somewhat new players will have a chance to be there. There will be no in game advantage if you win those awards, it will be just for fun (and some glory :D). I am hoping to have this sytem implemented by the end of March or earlier.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-8612828029893401443?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/8612828029893401443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=8612828029893401443' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/8612828029893401443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/8612828029893401443'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2009/02/new-stuff.html' title='New stuff'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-2203708079713214998</id><published>2009-01-25T01:36:00.002-05:00</published><updated>2009-01-25T01:46:19.793-05:00</updated><title type='text'>Update on the new engine</title><content type='html'>The new engine Xerafax has been working at is going pretty well. Right now, it can load and display all the EL maps. It is not yet ready to be integrated in the client, because there are a few things still missing (LOD for the objects and reflections, the shadows system is buggy, the water is not displayed properly yet, and all kind of other small issues).&lt;br /&gt;However, it should be good enough to finally start working at that map editor.&lt;br /&gt;&lt;br /&gt;While I've been waiting to start working at the editor, I did a few nice things on the server side:&lt;br /&gt;Implemented the potions god quest.&lt;br /&gt;Added a new random day, where there invasions happen more often and are stronger.&lt;br /&gt;Made a new potion, called potion of Speed Hax. What it does is double your speed, but will consume 1 unit of food every 2 steps (50% chance per step). Once the food level gets under a certain number, you will stop for about 1 second, then you will revert back to walking.&lt;br /&gt;&lt;br /&gt;I have a few other things in mind, such as some new random days, an archery god quest, and maybe a new shape shifting form. I am not sure how many things I'll be able to do until I start working at the map editor, but I will probably be able to work at the editor and server without neglecting the other.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-2203708079713214998?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/2203708079713214998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=2203708079713214998' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/2203708079713214998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/2203708079713214998'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2009/01/update-on-new-engine.html' title='Update on the new engine'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-3938138263321932982</id><published>2009-01-09T02:49:00.002-05:00</published><updated>2009-01-09T02:54:40.556-05:00</updated><title type='text'>Update tomorrow.</title><content type='html'>We are ready for the 1.8.0 update, I uploaded the clients, and the update and download page.&lt;br /&gt;This client should be pretty stable, and it is, hopefully, going to be the last client using the current engine. I am not sure when the next update will be, probably by the end of the year or in early 2010.&lt;br /&gt;&lt;br /&gt;There are a few nice features we have in the 1.8.0 client:&lt;br /&gt;1. Support for riding (for now, we only have horses, but in the future we can have other mounts).&lt;br /&gt;2. Support for running. This feature has been requested for ages, and we finally decided to implement it.&lt;br /&gt;3. Some GUI improvements and minor bug fixes.&lt;br /&gt;4. Updated artwork (3d objects, monsters and textures). Now some parts of the game look much nicer with larger textures.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-3938138263321932982?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/3938138263321932982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=3938138263321932982' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/3938138263321932982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/3938138263321932982'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2009/01/update-tomorrow.html' title='Update tomorrow.'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-1683131563613282492</id><published>2008-12-27T02:57:00.002-05:00</published><updated>2008-12-27T03:25:31.279-05:00</updated><title type='text'>Update coming soon</title><content type='html'>We released the second RC a few days ago, and almost everything works fine, with some small problems that were fixed. I'll release another RC tomorrow, then if there are no other problems, we'll have the update sometime during the first week of January.&lt;br /&gt;&lt;br /&gt;Today me and Roja did some tests with polygons and textures. I told her to make some spheres with 180K triangles, and map them with 4 4096x4096 textures, then place about 40 of them in a map with few other objects.&lt;br /&gt;This test had a few objectives:&lt;br /&gt;&lt;br /&gt;1. See if on modern video cards the fill rate is a concern (and it isn't, replacing the textures with 256x256 variants didn't affect the frame rate at all.&lt;br /&gt;&lt;br /&gt;2. See if the camera rotation jerkyness in some maps is due to the number of triangles or the number of objects. The results of this test were a little surprising. All those objects were placed in a small map with water all around them. The shadows were on too, so the scene had around 15 million triangles. With reflections, the frame rate was somewhere around 35 fps. The camera was very jerky, even though at that framerate it should have been pretty smooth. Disabling the reflections increased the FPS to about 45 (a little less than I expected), but the jerkyness was virtually eliminated.&lt;br /&gt;Furthermore, in Kusamura Jungle, a map with 15K objects, if the reflections are on the camera movement is very sporadic, and the FPS is around 25 FPS. With the reflections off, the FPS is just a little higher, but camera is very smooth. Even stranger, by limiting the reflection distance to 30 meters (it was 100 before), the camera is as smooth as when there are no reflections at all. I really have no idea why the reflections cause this problem..&lt;br /&gt;&lt;br /&gt;3. See if there is any speed benefit in consolidating a few objects into a single one (same number of triangles, but fewer objects for the scene management.) This test is not done yet, we'll have to do some more tests tomorrow to see.&lt;br /&gt;&lt;br /&gt;All in all, this test took very little time to do, and the results were pretty useful. One idea I came up with is to add in the map editor a way to automatically flag the objects that should not cast a reflection. For example, an object that is far from the water, or near the water but very small, should not cast a reflection. Similarly, a bigger object like a cliff should cast a reflection even if it is further from the water. Right now, all those decisions are made in the scene management routines at runtime, which is not the best way to do it.&lt;br /&gt;&lt;br /&gt;In other news, Xerafax went on a nice vacation and will be back sometime in mid Janaury, and I won't start working at the map editor until then, because I need his help. That means I'll have some time to work at the potion god quest.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-1683131563613282492?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/1683131563613282492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=1683131563613282492' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/1683131563613282492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/1683131563613282492'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2008/12/update-coming-soon.html' title='Update coming soon'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-5809688600992109012</id><published>2008-12-10T14:40:00.002-05:00</published><updated>2008-12-10T14:54:05.314-05:00</updated><title type='text'>New engine</title><content type='html'>Now that the first instance is on the main server, and I almost finished implementing the next instance, for levels 80 to 100 a/d, it is the time to disclose my plans for the future.&lt;br /&gt;After finishing the second instance, I'll take a break from server programming for a while, and work at the new map editor, that is using a new engine written by Xerafax.&lt;br /&gt;This new engine is quite nice, because it will use vertex programs only, so there is a significant performance increase. It will also work on most of the video cards our players have, including the Intel 950. Unfortunately, we'll have to drop the support for some really old video cards, such as Intel 8** cards, TNT 2 and other cards that don't support vertex shaders. Based on the information the client sends to the server about the video card capabilities, less than 5% of the players will be affected, and those people will have to update their computers/video cards.&lt;br /&gt;&lt;br /&gt;So anyway, I am going to spend some time working at the new map editor. I would like to do some texture painting for the terrain, implement a function to randomly add detail 3d objects such as vegetation, small rocks, etc, and other misc. things to make the map editor usable.&lt;br /&gt;&lt;br /&gt;I am not sure how long this will take, but I am looking forward to do it because for the last few years I've only done server programming, and it gets a little boring after a while.&lt;br /&gt;Of course, that doesn't mean there won't be any more server updates soon, because I'll still add new items and more instances, but there won't be a lot of new features until the map editor works the way I want it to work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-5809688600992109012?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/5809688600992109012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=5809688600992109012' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/5809688600992109012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/5809688600992109012'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2008/12/new-engine.html' title='New engine'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-1742055627212022258</id><published>2008-12-02T00:38:00.002-05:00</published><updated>2008-12-02T00:43:57.262-05:00</updated><title type='text'>Instances (again)</title><content type='html'>I finished about 70% of the instance work, and have a limited test yesterday with a few moderators. I am still working at adding more unique monsters and some unique items for prizes, and I hope that in a few days the instances will be available for everyone to test.&lt;br /&gt;&lt;br /&gt;For now, there will be only one instance, for those over level 100 a/d (although on the test server everyone will be able to go). The reason why there will be only a high level instance available initially is so that if there are any bugs, the problems will be limited to only a few players.&lt;br /&gt;Since the instances take place on maps not available on the client yet, those who want to participate will have to manually download the maps. This will, of course, be fixed with the next client update, which I hope to have in a few weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-1742055627212022258?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/1742055627212022258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=1742055627212022258' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/1742055627212022258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/1742055627212022258'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2008/12/instances-again.html' title='Instances (again)'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-7500974609339718159</id><published>2008-11-19T01:12:00.002-05:00</published><updated>2008-11-19T01:23:36.154-05:00</updated><title type='text'>Instances</title><content type='html'>I decided to add some instancing to EL, to spice up the fight.&lt;br /&gt;This is how it will work (although some things might change).&lt;br /&gt;There will be a few new maps that are instanced, and the following conditions will apply:&lt;br /&gt;1. One player can go there every so often, which is defined by each instance type. The time between going there again will be something like 100-200 hours.&lt;br /&gt;2. Most, if not all of the instances will have minimum and maximum a/d requirements, so for example a pr0 player won't be able to go and spoil the fun for the newbies.&lt;br /&gt;3. Each instance type will require a certain number of players to go in (a minimum and maximum number).&lt;br /&gt;4. There might be a cost associated with going in an instance.&lt;br /&gt;5. Most (or all) of the instance monsters will be unique monsters, with unique drops.&lt;br /&gt;6. To join an instance, a group of players will have to join a secret channel that they chose. Then they will all go to an NPC which will teleport them to the desired instance. To prevent abuse, all the players from that channel must stay near the NPC.&lt;br /&gt;7. If you die in an instance, and you have a rostogol stone, you will be placed at the beginning of the instance, so that you can rejoin your friends.&lt;br /&gt;8. There will be 5 (or more) monster waves, that is, if you kill a wave, the next will spawn shortly after. Those waves will be somewhat random, from a predefined set of possibilities. The final wave will be a 'boss' type of monster.&lt;br /&gt;9. The drops will be unique items that can not be obtained in any other way. My current plan is to make some really powerful items, but they will have a high chance to degrade, so the game won't be full of them.&lt;br /&gt;&lt;br /&gt;That's pretty much it. I don't know exactly when they will be in the game, probably in a month, if everything goes well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-7500974609339718159?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/7500974609339718159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=7500974609339718159' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/7500974609339718159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/7500974609339718159'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2008/11/instances.html' title='Instances'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-2498693753250550822</id><published>2008-11-16T14:31:00.002-05:00</published><updated>2008-11-16T15:36:37.874-05:00</updated><title type='text'>Kqueue implementation done</title><content type='html'>Last night I fixed the last remaining bug in my Kqueue, and now everything works great.&lt;br /&gt;Right now, there are 823 connections, and the server is taking less than 7% CPU. Before implementing this, it would have taken close to 20%.&lt;br /&gt;And there are some other, non network related optimizations I can do (especially the stuff that trashes the CPU cache), so it's a good thing.&lt;br /&gt;But more about them later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-2498693753250550822?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/2498693753250550822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=2498693753250550822' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/2498693753250550822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/2498693753250550822'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2008/11/kqueue-implementation-done.html' title='Kqueue implementation done'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-2043636947964394435</id><published>2008-11-13T23:00:00.003-05:00</published><updated>2008-11-16T14:31:25.273-05:00</updated><title type='text'>Kqueue working</title><content type='html'>Sometime last week I finished the Kqueue implementation, and after a failed deployment (where it crashed the server an hour after the restart) I did some final touches and now it works great. There is still a bug to fix where sometimes a socket attempts to send data to an nonexistent client, but this is pretty rare and will only cause someone to be disconnected from the server.&lt;br /&gt;I am, however, trying to see what causes that problem.&lt;br /&gt;&lt;br /&gt;And now for the performance results:&lt;br /&gt;Using SDL_net to check which sockets had data, the server was taking about 15% of the CPU with 700 connections. Now, with Kqueue, it rarely goes over 6%. The nice thing about Kqueue is that it scales very well. For example, if it takes 0.01 ms to check a socket, it will take 1 ms to check 100 sockets. With select() or poll() it might take 0.01 ms to check a socket, but 5 ms to check 100 sockets, and 20 ms to check 200 sockets (all the data is made up, just for an illustration purpose).&lt;br /&gt;What this means for those who do not understand technical terms is that before this change, the server couldn't have handled more than, say, 1500 connections (with enough spare CPU for an invasion). Now, I think it can handle up to 5K connections or more.&lt;br /&gt;It also means that the server should be more responsive than before, although there is not much of a difference if the server responds in 130 rather than 140 ms (most of it being the network latency).&lt;br /&gt;&lt;br /&gt;The conclusion of working with Kqueue is that it is well worth the effort to implement it, and it is also pretty easy to do so, once you understand how it works. However, the documentation is not very good, and it is wrong, or at least misleading in some areas.&lt;br /&gt;For example, if you try to change an event in the same call where you also get the pending events, your pending event will not be changed until after, which can cause problems.&lt;br /&gt;And there is a nasty bug where if you add a listening socket to a kqueue, the sockets added after that via accept() will become, for kevent, listening sockets as well, so you won't get any notifications from them. The way I did it was to create two kqueues, one for the listening sockets and one for the normal sockets.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-2043636947964394435?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/2043636947964394435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=2043636947964394435' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/2043636947964394435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/2043636947964394435'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2008/11/kqueue-working.html' title='Kqueue working'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-2057277451299549238</id><published>2008-11-04T02:36:00.002-05:00</published><updated>2008-11-04T02:55:18.871-05:00</updated><title type='text'>Last week's work</title><content type='html'>There has been something in the last week that significantly reduced the time I spend working at EL. That something is Fallout 3, a game I've been waiting for almost 10 years.&lt;br /&gt;I ordered it off Amazon and got it delivered on 28th, and ever since then I am playing it like a maniac. Usually, I don't play video games, maybe I spend 50 hours a year playing video games. But Fallout 3 is way too addictive, and I think it is the best game I played so far.&lt;br /&gt;&lt;br /&gt;Anyway, this past week I almost finished the server programming for horses. We tested them on the test server a few days ago, and there are very few bugs left, so if everything goes well, we'll have the client update sometime in December. And as expected, everyone who tested the horses loved them.&lt;br /&gt;&lt;br /&gt;Regarding my optimizations, I finally finished setting up a local FreeBSD machine for my tests. This test machine is an old laptop, a Pentium M 1.7 Ghz with 1 GB of RAM. I had some problems with the standard FreeBSD install, so I used PCBSD instead.&lt;br /&gt;So today I ran the server for the first time on my FreeBSD test machine, and I've noticed something perplexing: It is orders of magnitude faster than the machine we currently use for the main server!&lt;br /&gt;That machine uses an older Xeon @3Ghz (made in 2004 I think), and runs FreeBSD 6.x and gcc version 3.4.6 [FreeBSD] 20060305&lt;br /&gt;My laptop test machine thingy runs FreeBSD 7.x and gcc version 4.2.1 20070719  [FreeBSD]&lt;br /&gt;On the main server machine, an empty (just the AI) server takes about 1% CPU. On my laptop, it takes 0.00% (!) CPU. Now, you might think that an empty server shouldn't take more than 0.00%, but the thing is, there is a lot of AI (over 1.3K entities, most of them moving around).&lt;br /&gt;&lt;br /&gt;This is very strange, and I am not sure why my laptop is so much faster. It could be that GCC 4 does a much better job, or the new FreeBSD is much better at handling stuff, or maybe the main server machine is not configured properly? I'll have to ask my host to do a few hardware tests, and possibly update the OS as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-2057277451299549238?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/2057277451299549238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=2057277451299549238' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/2057277451299549238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/2057277451299549238'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2008/11/last-weeks-work.html' title='Last week&apos;s work'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-8386502590681566169</id><published>2008-10-25T01:37:00.003-04:00</published><updated>2008-10-25T02:06:34.419-04:00</updated><title type='text'>Profiling and optimizations</title><content type='html'>In the last two or three weeks, I spent a lot of time optimizing the server.&lt;br /&gt;I rewrote all kind of functions, and fixed a few bugs while at it. The profiling results were kind of surprising, for example the most expensive function in my code &lt;s&gt;is&lt;/s&gt; was a big loop, mostly empty, that looks something like this:&lt;br /&gt;for 0 to 6K&lt;br /&gt;if()&lt;br /&gt;if()&lt;br /&gt;if()&lt;br /&gt;if()&lt;br /&gt;//only maybe 30% of the times the execution gets here.&lt;br /&gt;do some stuff, not very time expensive&lt;br /&gt;&lt;br /&gt;Now, this function is called 8 times a second, but even so, it was a little bit unexpected that such a little innocent function would take about 0.7 ms at each run.&lt;br /&gt;So, I focused all my m4d hax0r skillz on optimizing this function, which meant making a few lists to get rid of some of the ifs. But this required reordering some networking code, which took a while.&lt;br /&gt;&lt;br /&gt;After doing this, I was expecting the CPU usage to drop a lot. But, to my surprise, it did not drop at all (nothing noticeable, anyway).&lt;br /&gt;And then it finally realized it:&lt;br /&gt;The problem was not in the server code, the problem was on the networking side!&lt;br /&gt;&lt;br /&gt;For example, a server with no players, but 1300+ AI (which do most of the things players would do) takes about 1% of the CPU.&lt;br /&gt;But a server with 100 players takes about 2%, and a server with 800 players (and player run bots) takes 18% of the CPU.&lt;br /&gt;&lt;br /&gt;From the very beginning, I relied on SDL_net for the networking, but until a few days ago, I didn't even look at the SDL_net source code to see how it is doing things. So I took a look, and didn't find any problems, except that it has to go through the list of all the connections once, and through the list of active connections twice. Then the server must go through the list of all the connections once again, to check for data.&lt;br /&gt;Obviously, this is not optimal.&lt;br /&gt;After doing some research, I found out that the select() method, which SDL_net is using, scales very poorly when there are a lot of connections, because the kernel must do a lot of expensive operations as well.&lt;br /&gt;&lt;br /&gt;Well, Learner told me today that on FreeBSD there is another way to check to see if the sockets have any data, with kqueue.&lt;br /&gt;After doing some more research on the matter, I found &lt;a href="http://people.freebsd.org/~jlemon/papers/kqueue.pdf"&gt;this&lt;/a&gt;. It explains in details how kqueue works, and why it is so much faster than the good ol' select().&lt;br /&gt;So I am going to implement kqueue on the server, to be used on the 'production' server, but also leave the SDL_net way in there as well, because my development is done on Windows.&lt;br /&gt;Right now, I am downloading Desktop BSD and will run it on a virtual machine, to help me with my local testing. Once I actually start implementing the new system, will let you know how it went.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-8386502590681566169?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/8386502590681566169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=8386502590681566169' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/8386502590681566169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/8386502590681566169'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2008/10/profiling-and-optimizations.html' title='Profiling and optimizations'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-6580972752324696619</id><published>2008-10-08T01:50:00.002-04:00</published><updated>2008-10-08T01:59:26.469-04:00</updated><title type='text'>Optimizations</title><content type='html'>Today I finally finished optimizing something that I always wanted to optimize, namely the system which checks who sees who. The old system was checking if someone moved, then if it did, it will check against everyone one the map. For under 20 or so actors on a map, that was pretty fast, but when there were hundreds, even thousands actors (such as during events or invasions), then things were very slow.&lt;br /&gt;For example, the server would use about 33% of one CPU with 1607 invaded monster in one map.&lt;br /&gt;The new system uses sectors, so the players are only check near the nearby sectors, considerably improving the speed. Right now, with 1607 monsters in one map, the server is using only 7-8% of the CPU, so the speed improvement is ~450%. Of course, that is obvious in extreme cases like this, but it should also work better than the old system in any maps with over 10-15 players.&lt;br /&gt;&lt;br /&gt;On a related note, tomorrow we hope to unveil one of the secret features me and Schmurk worked at. I am pretty sure that people will be very, very happy when they will see it :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-6580972752324696619?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/6580972752324696619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=6580972752324696619' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/6580972752324696619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/6580972752324696619'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2008/10/optimizations.html' title='Optimizations'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-7335029537418267295</id><published>2008-10-03T02:24:00.003-04:00</published><updated>2008-10-03T02:33:45.111-04:00</updated><title type='text'>Mules going live, server optimizations, new things</title><content type='html'>Well, the mules went live a few days ago, and now people can make them and their food.&lt;br /&gt;I didn't see too many mules in the game, which is good, the last thing I wanted was everyone to become a mule. But there are many mule glyphs and pets food being produced by players, so there must be some demand for them. And because the creature food requires a refined vegetal mixture, a lot of people are using a lot of harvestible items that were previously not so useful.&lt;br /&gt;&lt;br /&gt;The optimizations I made a while ago proved to be almost useless, there was no visible reduction in the server CPU use. I mean, the CPU works less because of them, but there are other tasks which tax the CPU much more, so they are sort of like a drop in the ocean.&lt;br /&gt;I was a little dissapointed and mentioned it to Schmurk (the guy who implemented the arrows, finished the sky and the 1st person view, improved the camera movement and animations, etc.) and he gave me a really good idea bout how to optimize some stuff. And not only that, but he wrote a program to test it, so I am going to use part of his code (with modifications) to improve the server speed.&lt;br /&gt;&lt;br /&gt;As I said before, there are two new (and secret) features coming in the game soon (this year). One of them is almost 90% done (still needs more testing), and the other is ~60% done. I hope that we will be able to test the first feature in a week or two, and the players will see what it is. I am confident that everyone will enjoy it a lot, it's been requested quite a few times. Unfortunately, they both require a client update, so probably we'll have them on the main server sometime in December (we need to wait for other stuff to be done as well).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-7335029537418267295?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/7335029537418267295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=7335029537418267295' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/7335029537418267295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/7335029537418267295'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2008/10/mules-going-live-server-optimizations.html' title='Mules going live, server optimizations, new things'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-8722004898212258351</id><published>2008-09-20T23:47:00.002-04:00</published><updated>2008-09-21T00:12:28.395-04:00</updated><title type='text'>Quite an eventfull week</title><content type='html'>This past week has been pretty busy, with some important changes happening:&lt;br /&gt;&lt;br /&gt;1. The polymorph skill is in the game, although the glyphs to actually shape shift are not obtainable in the game except from the shop. This will change in a few days, when they will become manufacturable under the summoning skill.&lt;br /&gt;&lt;br /&gt;2. KF (the most popular PKing map in the game) was made a non items drop on death map. This has wide implications for the game economy, because now a lot of people go and PK there, and they use all kind of potions and essences, as well as break all kinds of gear. So it's a nice push to the economy, gives players the chance to match their skills against others for free, and generally makes everyone happy. The downside is that there will be fewer rostogol stones used in the game, so less money for me, but this should be offseted from the high end items breaking there.&lt;br /&gt;&lt;br /&gt;3. I am doing an important "behind the scenes" update in the server logic, which should improve the speed of some critical functions. This will allow faster response time (just a little), as well as being able to add some very neat things (which are secret for now). That code almost works, and today I just finished fixing the latest bugs, and, hopefully, it should be on the live server some time next week.&lt;br /&gt;&lt;br /&gt;4. A few years ago, the server was crashing every once in a while because of an error that shouldn't have happened. I prevented the crash by adding a specific check for that error, so now it is logged whenever it happens, and the crash is avoided. Well, today I looked over our critical errors log (where only the nastiest, "shouldn't ever happen!" stuff is logged), and I've seen that error happening maybe once or twice a month. So far it is harmless, but I'd rather find out what the hell is going on and fix it, so I added additional debugging information. Hopefully, it should happen again soon and with the extra debugging see why did it happen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-8722004898212258351?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/8722004898212258351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=8722004898212258351' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/8722004898212258351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/8722004898212258351'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2008/09/quite-eventfull-week.html' title='Quite an eventfull week'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-3568703260577727159</id><published>2008-09-13T00:52:00.003-04:00</published><updated>2008-09-13T01:09:57.546-04:00</updated><title type='text'>Shapeshfting again</title><content type='html'>Well, it seems that the client crash mentioned in the previous post was actually due to the server sending something wrong. Once that was fixed, shape shifting works fine for the most part.&lt;br /&gt;However, there are a few issues with special effects. The problem is, most of the special effects were done assuming that the actor that casts spells or get harvest effects are human like, and have a hand bone.&lt;br /&gt;Since mules do not have such a bone, that leads to a crash. Error checking FTW :D&lt;br /&gt;The bug was fixed in the CVS, but not everyone can build their own client, and the abuse potential was high. For example, triggering a harvesting event or casting a spell on someone while being a mule could have caused arbitrary client crashes for those around you.&lt;br /&gt;&lt;br /&gt;Initially, I wanted to check every single special effect, and if the person who casts a spell or receives a harvest event is a mule, do not send that effect to anyone.&lt;br /&gt;This is pretty tedious, because there is a lot of code to modify (all the harvesting and spell effects), and I wasn't really excited about doing it.&lt;br /&gt;&lt;br /&gt;Today, however, I came up with a better idea: It is not realistic (as far as realism goes in a game) to have a mule casting spells or harvesting resources. In fact, it is not good for the game to allow that, because then everyone would be shapeshifted to a mule for anything that has to do with harvesting and manufacturing.&lt;br /&gt;The idea of a mule is to CARRY stuff, not to do everything a normal player does. The game would look really boring if everyone in every mine or around every storage is a mule.&lt;br /&gt;&lt;br /&gt;The way I see it is to have the mules as support player types, for example one player harvests while others goes and mules their resources to the storage (for guild projects, or for a fee).&lt;br /&gt;&lt;br /&gt;So I decided to disable spell casting, harvesting and manufacturing for the mules, and possibly for the other pets as well. Because that will make the mules less usefull (to the power players), I will either make the polymorphing tokens and food cheaper, OR increase the load capacity of a mule. I am not sure which way I will go yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-3568703260577727159?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/3568703260577727159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=3568703260577727159' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/3568703260577727159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/3568703260577727159'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2008/09/shapeshfting-again.html' title='Shapeshfting again'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-6641715431956701219</id><published>2008-09-10T01:13:00.002-04:00</published><updated>2008-09-10T01:19:13.404-04:00</updated><title type='text'>Shape Shifting</title><content type='html'>Recently I started working at the shape shifting skill, and almost implemented the mule (90% done), and I ran into a big problem:&lt;br /&gt;The client was not designed to dynamically replace an actor with another, so it crashes :/&lt;br /&gt;This means that we need to fix the issue on the client, and then have a client update before we can add shape shfting in the game :/&lt;br /&gt;There is a good news too though: We MIGHT implement two new, very cool and secret features that pretty much everyone will love. They are (almost) implemented on the CVS client, but they need server support (which can take a few weeks or more). So probably the shape shifting and the other cool features will be available in two months.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-6641715431956701219?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/6641715431956701219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=6641715431956701219' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/6641715431956701219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/6641715431956701219'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2008/09/shape-shifting.html' title='Shape Shifting'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-6048972446529728209</id><published>2008-09-06T00:28:00.003-04:00</published><updated>2008-09-10T01:19:56.896-04:00</updated><title type='text'>School started</title><content type='html'>In many parts of the world, the school started, and that reflects pretty well in our players population. The number of players online at a time declined by about 60. I am curious what the weekend numbers will be.&lt;br /&gt;This number (~10% of the online population at a time) is very consistent with our age polls, where only about 20% of the players are under the age of 18. From those 20%, it is safe to assume that only some will stop playing (or spend less time) in the game once the school started.&lt;br /&gt;&lt;br /&gt;On an unrelated note, this apst few days I added 3 new potions in the game, and I am going to add a few more soon. Potion is the skill with the fewest makable items, with the highest potion requiring level 62, while the highest ranking potioners have over 100 in their potion skill. The last person in top 50 potion is level 82, so a few more potions are needed. There will also be a potion god by the end of the year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-6048972446529728209?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/6048972446529728209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=6048972446529728209' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/6048972446529728209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/6048972446529728209'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2008/09/school-started.html' title='School started'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-4462144387731819375</id><published>2008-08-21T00:53:00.003-04:00</published><updated>2008-08-21T01:36:36.108-04:00</updated><title type='text'>Back from vacation</title><content type='html'>I didn't update the blog in quite a while, mainly because I was busy with the update, then went over to Romania for 18 days.&lt;br /&gt;&lt;br /&gt;The update went really well, in fact, I think this was the smoothest update ever. The client is rock solid, and there was absolutely no one that had any significant problems with this new client compared to the previous one.&lt;br /&gt;&lt;br /&gt;And now, and update of the things I am (or will soon) be working on.&lt;br /&gt;First, I want to finish the wards, which are some sort of mines that do other things, and they are triggered by movement. We already have the mana drain ward, and there are 3 more wards to go: Mana burn (does damage while removing the mana), Uninvizibilizer, and Magic immunity remover.&lt;br /&gt;The last two wards will have a chance to remove the inivisibility or magic immunity, for example something like 30%+engineering/5 per step. Those are not the actual numbers, just an example.&lt;br /&gt;&lt;br /&gt;Then I will make the ice dragon armor and scythe manufacturable (but first the books).&lt;br /&gt;&lt;br /&gt;Next is another god quest (those are really boring, I hate working at them).&lt;br /&gt;And finally, a shape shifting ability, where you will be able to transform into some animal. This will replace the pets idea, since you will become your own pet. I've been talking about it on the forums already, so I won't enter in details here, but the good thing is that everyone loves the idea.&lt;br /&gt;&lt;br /&gt;One thing I will do with the shape shifting is implement half of it first, where you can just change your shape to an animal, but no special abilities, and sell them in the shop to make a few bucks. Once they are fully implemented, I'll stop selling them in the shop, and everyone will be happy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-4462144387731819375?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/4462144387731819375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=4462144387731819375' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/4462144387731819375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/4462144387731819375'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2008/08/back-from-vacation.html' title='Back from vacation'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24781728.post-1015861191047832509</id><published>2008-07-08T23:40:00.002-04:00</published><updated>2008-07-09T00:02:24.035-04:00</updated><title type='text'>Preparing for the update</title><content type='html'>It's that time again, the time before an update.&lt;br /&gt;This is pretty stressful, because a lot of things that do not depend on me must happen:&lt;br /&gt;1. The players have to test the last RC, and report possible problems.&lt;br /&gt;2. The Mac and Linux clients have to be built.&lt;br /&gt;3. When the update comes, people have to follow some basic instructions.&lt;br /&gt;&lt;br /&gt;So far, it seems that enough people tested the RCs, and there are no significant bugs out there. In fact, I think this client, with all the new features, is more stable than the previous two clients. But there are always players that don't want to bother testing the RCs, and after the update they start posting on the forums on how the game is not working anymore, or that it causes problems on their systems, etc.&lt;br /&gt;&lt;br /&gt;Some of the new things available in this update are:&lt;br /&gt;1. Full camera control, similar to a hybrid 1st/3rd person view, with a sky dome, moon, sun, stars, etc.&lt;br /&gt;2. Improved weather.&lt;br /&gt;3. New context menus for some windows.&lt;br /&gt;4. Bug fixes.&lt;br /&gt;5. New weapons and armor.&lt;br /&gt;6. A level 60 a/d arena in Desert Pines, next to the level 40 arena. While we have other level 60 arenas in the game, they are not really used mainly because.. well, they are not near the Desert Pines Arena, which is more or less one of the most famous things in the game. So, hopefully, some players will move on from their 40 a/d skills and try the new place.&lt;br /&gt;&lt;br /&gt;The update should happen in a few days, depending on how soon the Mac client is built.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24781728-1015861191047832509?l=eternal-lands.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eternal-lands.blogspot.com/feeds/1015861191047832509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24781728&amp;postID=1015861191047832509' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/1015861191047832509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24781728/posts/default/1015861191047832509'/><link rel='alternate' type='text/html' href='http://eternal-lands.blogspot.com/2008/07/preparing-for-update.html' title='Preparing for the update'/><author><name>Radu</name><uri>http://www.blogger.com/profile/06176696907020090166</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08185325110748385301'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry></feed>