1.27 forum changes

May 3rd, 2010 zet 18 comments

Two features that I implemented this weekend and a bit out of schedule are features that I believe of that a few players really really want these – at least those, who are running alliances in TW. So I hope that you’ll be happy to hear, that the ingame forums will finally get what they really needed (at least in my opinion): Shared forums and polls. Though I still can’t say if it’s really be in for 1.27 (though I hope), I want to give you a preview on what’s about to come.

Shared forums: Towns can invite other towns to their forums now. If the other town accepts the invitation, members of both towns can use that forum together. Forums can be shared with as many other towns as you want (we still might set up a limit however). Forums have a member list function where you can easily see who is allowed to read the forum, combined with a small mini map that shows the locations of the invited towns and where its members are currently on the map (kind of useless, but it’s neat to see – it might get dropped if it turns out to be a performance problem).  The “secret” forums will keep its state across sharing, so if you have a secret forum, only councilors or founders can see that shared forum as well.

This sharing should give you all kind of possible ways to run an alliance – a leader town which has its own forums and invites other towns to one of their forums. They can move threads from their internal “secret” forums into the shared ones so that everyone can see what it’s about. Sister towns can keep in touch with each other and fort owning towns can communicate now properly with each other. Lot’s of possibilities. You’ll recognize shared forums in the interface by the round edged forum buttons.  I am still playing with the idea to allow forum invitations on a per-user level, but that would have been too much for now.

Furthermore, the polls will enable you to do polls on the forums. You have a few choices here, whether it should be a multiple choice or single vote poll, if it is a public vote where everyone can see who has voted for what. Votes may have a time limit defined in days. It goes without saying that everyone can vote only once.

Another little modification is the way how posts are displayed:

The forums also got a small new feature: Pickable icons (as you might have noticed on the screenshots above). Councilors can now set icons for each forum if they want to – I’ll have to talk to an artist to get a few meaningful icons here, so don’t worry, there’ll be more.

When I’ve been looking through the forum pages for testing the features, I couldn’t help but changing the layout to look a bit more friendly – and I resized the ingame forum window so that it has more vertical space – no idea if this is a good idea:

Btw., some players suggested “Fort” Forums, however, we won’t do that since forts can be taken – and then, what should happen to the forum? The shared forums should enable you to do all the required management to take care of forts and allies as well. I hope that this will help you to organize your towns in TW.

Categories: Uncategorized Tags:

1.27

April 30th, 2010 zet 13 comments

Instead of trying to do the perfect post (which I often try to do and then don’t finish it), I’ll try to make a short post with just the most important stuff.

  • We added quite a few new premium features. None of these will however be available on old worlds unless on special request of the community. Exact information will be given out when it’s out and the first worlds are opened with these features enabled
  • We extend the working queue from 2 to 3 (normal game) and from 4 to 8 (automation premium) queue slots.
  • A new taskbar is introduced that is visible on the main userinterface
  • The job screen got reworked, it’ll show meaningful absolute numbers instead of relative values
  • The job overview screen got reworked, it shows now products as well
  • There’ll be a list of recently fortbattles and a page to search for forts
  • The duell page will now show a strategy overview as well as it’ll allow to duel NPCs. The NPCs will have about the same level as the player, however, they’ll become tougher the more NPCs are beaten. NPC duels will hardly consume any time to do but it’ll consume the motivation for duels as well as it’ll drain some energy. No duelexperience is gained from NPC duels

.

Categories: Uncategorized Tags:

Roadmap

February 2nd, 2010 eike 28 comments

Hello,

in the last weeks we thought about new features and releases in The West. The result is this roadmap, which is only a pattern. None of the undermentioned features will be implemented for sure and it is possible that we will also impement other big features.

Happy reading!

Chat
It is possible to chat in the West. The chat will be placed at the bottom of the screen design. There will be three different chat rooms.

  • Town chat
  • County chat
  • Fort battle chat (as soon as a fort battle starts)

The chat is already usable on the beta, but it will be enhanced further. Insults can be reported.

Health points and dying chances
Players hurt themselves more often and worse during work. Duels also cost more health points. Passing out will be weakened a bit. Energy will not be lowered as much, the duel block will be lifted.

Reasons:

  • More excitement during work
  • Use of food and healing elixiers

Bank Limit
There is no bank limit anymore. The level of the bank sets the amount that can be deposited daily. Players can deposit in other town for a fee (for example 20%)
Reasons:

  • Important for back pack limit
  • Important for dueling players without towns

Stores now sell new items also to foreigner (new)
The stores now also sell the items of the two highest levels to foreign players.

Reasons:

  • Shopping gets easier
  • Limits useless town switches

Duels on the map
Players are no longer attacked using the saloon, but using the map. It is always used the location where the player is right now. There is also a search function on the minimap to find duelable players. A player is attackable in a specific location until he has reached a new location. The duel requirements will be adjusted slightly so that there will be more potential dueling partners.

Reasons:

  • It is easier for new players to attack other players using the map
  • Players can quickly add a duel right after a job
  • Possibly more duels
  • Ambush are possible
  • Speed becomes more relevant (Dueler bonus)

NPC Duels
There will be new locations on the map to start duels against NPCs. Those give experience points and money. New locations will be available for higher dueling levels (ruffians, bandit camps, …)

Reasons:

  • More duels
  • More variety between jobs
  • Players that do not want to do PvP can still do duels

Ambush
Players are protected by foreign town members on the same field. If a player is dueled in a location where other town members are present, each town member fires one shot at the attacker. This only happens for the defender.

Reasons:

  • Towns can stand strong against duels by protecting each other
  • Builders can protect each other
  • Strong players can help their weaker friends

Unlimited building levels
A building in the town (like the church) can now be constructed to virtually endless size, and give minimal advantages.
Reasons:

  • Something to do for builders

Money and luck
Jobs with high earning potential will give less money. The chance to find items is lowered, but the items found will be more valuable
Reasons:

  • There is too much money in the game (As the game goes on)
  • Higher luck is desired by a lot of communities, but it has to stay in relation to the earnings.

Wanted
It is possible to put a bounty on another players head. Once the player is defeated in a duel the player receives the bounty. For each bounty offered a fee is paid to the system. Beat in a duel: 25% fee, killed 50% fee.
Reasons:

  • More duels
  • Good new task for duels
  • Workers can defend themselves

Level 100+ and new jobs
The Levels 100+ will be available. The hall of fame will be redone. There will also be new jobs.

Reasons:

  • Player wish
  • Something to do after level 99

Use of products
The inventory will have a „mouth“ into which items can be placed. They will be consumed by this and the player receives a bonus. At first the bonuses will be only on health points, later on there will be other bonuses, but never energy bonuses. In the general store you can buy health elixirs for a few dollars. They will give the same bonuses.
Reasons:

  • Consumption of products
  • Pulling money back out of the world
  • In the long term boosters might be possible (for example ammunition to raise the duel damage temporarily)

Buying skill points
It will be possible to buy skill points for money. The coses rise quickly: for example 50, 100, 200, 400,…
Reasons:

  • Uses money from the game
  • Workers that work for money get more out of it

Backpack limit
There will be a limit for the items that can be carried in the backpack. This limit can be raised amongst others by horses. If more items are carried than allowed the player moves slower.
Reasons:

  • The bank becomes more important
  • Less items in the game
  • Important for item trade
  • Very good for the servers

Item trade
Players can trade items with each other. Each player can put offers and requests into the player profile. At first it won’t be possible to trade items for items, only sale for money will be possible. Each item will have a minimum and a maximum Price.

Examples:
Request: Grey bowler for 260 dollars
Offer: Fancy hat for 800 Dollars
To trade items the players have to be at the same location. It is also possible to send items using the pony express (for nuggets).
The inventory limit will come at the same time as the item trade.

Poker
You can play poker against other players. A small part of the money played for goes to the bank. The bank always wins .
Reasons:

  • Something to do during waiting periods
  • Meet new players
  • Requested by players

New Duel system
The current system (attack zones, dodging) will be replaced by a new system.
Each duel round has one attack and one movement action. The higher the dueling level, the more rounds are fought. (3-12 rounds).

Attack action: The attack action is be default a hit/shot. With added skills other actions can be learned.
Examples:

  • Hard hit: +50% damage, 20 Vigor
  • Double shot: Two shots, lower chance of a hit, 20 Reflex, 15 shot
  • Curtain fire: Shots keep enemy at a distance, less damage, 40 shot
  • Storm attack: No penalty for wrong distance, Stamina 40
  • Stunning hit: Enemy misses the next round with 50% chance, Vigor 50
  • Kick: Lowers chance for a hit by 50%, only works in close combat

Movement action: Each round also has a movement action. They allow the players to move to the optimal distance to the opponent and by that to cause more damage or to dodge an attack. With added skills other actions will be available

Examples:

  • Move to close combat. No requirements
  • Jump to side: +20% dodging chance, 20 Reflex, 10 dodging
  • Yell: Attacks hit 30% worse, Charisma 40
  • Ridicule: Opponent forgets his attack action and only does a normal hit/shot, Charisma 50
  • Change weapon: changes the weapon, Dexterity 50
  • Unbelievable Reflex: In this round no one scores a hit, Mobility 20, Reflex 200
  • Stay Cool: Verspotten und Brüllen drehen sich ins Gegenteil um, Charisma 30
  • Clinch: Movement action fails with 50% chance, Strength 30, Reflex 30

Those are just examples and will most likely not be implemented into the game like this. It will be balanced so that skills and attributes are equally important. Ranged and close combat will also be comparably strong. Please don’t start to skill towards those examples!
The current dueling skills will be less important for the hitting chance and damage calculation, but they will be more important for the dueling actions. Luck will be minimized.
The equipment and weapons will take a bit role in the calculation of the earned experience points to constrict duel pushing.

The hitting chances will be changed, the skills and attributes used for the duels will most likely stay the same. The soldier will get another character bonus. An exact version oft he new fighting system will be announced with due notice!
Reasons:

  • A system that gets more and more complex over time
  • A very simple system for new players
  • Lots of possibilities
  • Goals to work for
  • Better chances to protect yourself even for a worker

Resources for the building construction

Resources are needed for the construction of builings with high levels (starting at level 3)

Reasons:

  • More use for builders
  • Item trade becomes more attractive

Higher character bonuses
Every character classe should revceive higher bonuses. One thought is to give 6 bonuses for each character classe and to let the player select one bonus per 10 levels.
Reasons:

  • Goals throughout the course of the game
  • Higher concentration of character classes
  • Stronger specialization possible

Town/building deterioration
Buildings with high levels deteriorate over time
Reasons:

  • More use for builders
  • No limitation for new towns

Gambling
The traders will offer „unknown“ items for sale. Those items might be very rare, expensive and even not droppable or not purchasable items. Unknown items cost a LOT of money.
Reasons:

  • Suspense
  • Good reason to spend big amounts of money

The West will get a new start page
The new start page will fit better to the game and also give the same comfort. The start page will be developed independently from the game, meaning, it will not be connected to any version of the game.

Newspaper
A newspaper will be released every 3-7 days. It will hold statistics, a horoscope and short player statements.
Statistics: Fort battle results, finished towns, Players that have reached a milestone level, best dueler, …
Player statements: Player can write short statements into the newspaper. There is a limit to the amount of statements posted. Each player offers a certain dollar amount for each article. The players with the highest bids are printed.
To read the newspaper a symbolic payment has to be paid.

Reasons:

  • Interesting Info for all players
  • Awards for a lot of players
  • The chance to represent yourself

Pants and belts
There will be slots for pants and belts in the inventory. This new feature will be developed by an independent team. Therefore it is hard to set a time for when this will be finished.

Reasons:

  • New items
  • Requested by players
Categories: Uncategorized Tags:

Chat!

January 17th, 2010 zet 4 comments

You might have noticed that we are currently publicly testing a chat on the beta. It’s still in an early development phase, we rejected the technical approach that we made last summer due to several reasons. What was being reused was the user interface design, except from that, everything got reworked.

But most likely, you are not interested in such technical details but want to know some questions answered, first off, one of the most asked questions is:

Can the chat switched off?

The answer is: not yet. But it’ll be possible.  Not just globally for everyone through the game’s configuration but on a personal liking basis. You should be able to show up in chat as you wish.

What chat rooms will be available? Can we create our own ones?

The initial version plans to offer three room types: Town chat, county chat and fort battle chat. Other channels are possible, but that’s for the start. Also, it is planned that anyone can send whisper / tell messages to anyone. One priority is, that you can always hide your online status. Only your town mates will always know your online status. One remaining problem is the lack of moderation of the county chat – while town founders and councillors can moderate the town channel, the county is lacking such possibilities. Though we plan that affronts within the chat can be reported like in other places, this might still be problematic for the county chat. If there are too many affronts being generated, we might consider switching the county chat off.

What will the fort battle chat look like?

The first draft determines that there will be different rights and administration possibilities for the chat. There are going to be service grades that are roughly based on the service grades of the U.S. military:

  • General (officer)
  • Captain (officer)
  • Private
  • Recruit
  • Traitor

Traitors are a special rank that is set for players that are regarded as spies. Traitors can’t do anything in the fort battle chat, nor can they read what is being written on the chat.

Officers have the right to talk on the channel in a way that everyone can read (except for the traitors of course…). Generals are players that are town founders of towns that is either the owning town of the fort or the town that declared the attack. Generals can not be demoted except through the town management tools.

Everyone else is starting as recruits (though some players suggest that town founders of member towns of the fort should start with the captain’s rank). Recruits may not chat on the channel, but they can read what officers are writing. Recruits can be promoted to the private rank which is similar to the recruit rank. It serves only the purpose of distinguishing between approved and new players.

Privates can be promoted to the captain rank which grants them the officer rights.

The communication between privates and officers works through “whispered”  messages, e.g.: “/tell zet hi there”. Officers will be able to deactivate the possibility to receive messages from lower ranks.

Besides these features, there’ll be an officer chat that is only available to captains and generals.

The general idea here is, that the generals recruit a number of captains in order to structure their own communication order. Generals and captains will be able to discuss strategy, the captains will most likely have the duty to tell the privates what they should do in detail and communicate their problems to the other officers.

We might change this design however later on through the experiences we gain from the beta.

When will the chat be available on the worlds?

The chat is a part of 1.25, however, it will be deactivated at the beginning for most worlds. We will enable the chat one by one over the time, once we have had some experiences with “real worlds”. If we experience technical or social problems (too many affronts being generated), we might consider not activating it at all on certain worlds or only partially activating it (only fortbattle chat and / or town chat).

What are you working on right now?

Right now, there are many things that need care due to the chat. The infrastructure grew very quickly and without lots of planning (I typed almost everything straight into code without going through a planning board). While this is a good approach to get quick results, it tends to eat up later some time for restructuring the code flow. While the basic features worked within one week, I spent the last two weeks either on totally different work (2010 game-feature planning) or restructuring some basic stuff, which did not affect the chat experience at all, but greatly changed how the chat works. As this might look like a “not-so-good-approach” (just doing it), I prefer it that way, as there’s always a working prototype that one can use to collect valuable experience for planning more detailed stuff. Actually, if there was no fort battle chat, it would have been done by now, but the fort battle chat is somewhat more sophisticated and it needs much more care than all the rest together. I still believe however that it’ll reach a stable state in february. It might lack a few features then though – like sophisticated menus, GUI, etc. Right now, and after all these months without any progress, I am really very happy about the current progress and the development speed.

Categories: Uncategorized Tags:

Bug unplugged

November 25th, 2009 zet 14 comments

Since 1.23 is out a few people are experiencing a nasty map bug, or at least it manifestates in the map view – it exists elsewhere as well but is less noticeable. I crafted a small Javascriptlet to get around this bug, but it’s not a solution that can be applied on the productive system. So here’s a javascriptlet that can help you temporarily:

javascript:WMap.mapData = new MapData(); WMap.scroll_map_to_char(); void(0);

If you copy that line of code into your browser’s addressbar, you can bypass the bug for a while at least.

But now the more important question: What is the Matrix bug?

The answer is rather complicated and I would say that this is among one of the most notable bugs that I have experienced so far. Noteable because the reproduceabilty is extremely weird. The company does not have any computer where this bug can be reproduced, however I possess an Asus eee, a device that can reproduce the bug as I found out at home.

So on monday I took it to work (like always, I type a lot of stuff when I am on the train). I connected it with the company’s network and the first thing I noticed is that my local developer machine cannot reproduce the bug with my machine. Weird. But well, I am using a different webserver. So I connected to my collegue’s webserver and the bug worked as expected.

We tried the whole day to get behind this bug. We found out that it is not the fault of our PHP programs – PHP is never called. The client’s request simply vanishes at some point. We used wireshark and looked at everything – but we could not make any progress here. The requests arrive at the webserver but there, the requests simply die. At the end of the day my netbook’s battery was drained (they lastet for more than 6 hours).

The next day I brought my charger with me, just to get over the day a bit longer. I fired up the browser, requested the page in question – and it worked. Out of the box. We couldn’t figure out what was different. The server was unchanged, the software was and no matter how often we pressed F5, we couldn’t get the bug working again.

Until I unplugged the device and refreshed the browser. And there the bug surfaced again. I put the netbook on the charger and the bug vanished. I am pretty sure that this must be hard to believe, as I said, this is one of the weirdest bugs that I’ve ever faced, but this is true! It is only reproduceable if the netbook is running in battery mode where the CPU and other chips are running in battery-safe mode (which is of course influencing the timing in the network traffic, which can have side effects, in this case with grave effects)! You still don’t believe it? Watch the video! I am refreshing the browser (Internet Explorer 6 in this case) several times, sometimes unplugged, sometimes plugged in.


Get the Flash Player to see this player.

Although this bug appears to be funny, I can reassure you that we are taking it very serious and that we are working on a solution to fix it.

Categories: Uncategorized Tags:

Upcoming feature: Custom Fortmaps

November 4th, 2009 zet 22 comments

1.23 is going to introduce custom fort battle maps – as stated earlier. This post is going to explain this a bit more detailed what is going to be changed about the fortbattle maps.

Every fort is pretty individual because of its size and building levels. Well, of course unless the levels are maxed out, but that goes without saying. But the building levels are also not fixed for the forts – once we have custom maps, we’ll introduce destructable building structures in a following release, but that is not the topic for now. What matters is, that we have all these forts with different building levels and the battle map should reflect this fact.

So what’s going to be changed to make this happen?

  • Every building is present on the map, and the better the level is, the more advantages will be given to the sectors that belong to the building.
  • Character class sector bonus: Every tower will belong to a certain character class. Characters with the right character class that are located at such a building are going to have an additional bonus next to the sector bonus that the building structure is already providing.
  • The player limits are going to be lowered for the small and medium sized forts. There’s still a discussion going on about what the right values should be, but the initial version is most likely to set the limit to 30 players per side for the small and 60 players per side for the medium sized forts. Please note that there are unavoidable technical limitations that are limiting the number of players above the limit of 128 players, so please don’t even try to suggest to raise the limits instead of lowering them. Also, statistics of the battles show that most battles are played with about 60-70 players in average. So the limitation is mostly only hitting the small forts. The intention is to strengthen smaller alliances in the game, as the maximum limit does not involve so many players any more. Large battles can of course still happen at large forts, so the impact should be acceptable for the game.

And this is how it could look like (the map is done by me for testing purpose, please don’t start arguing about the bad sector layout):

devshot-48-map-2This is the map in a basic configuration

devshot-48-map-1This map is the same as before, except that three towers are now enlarged.

This introduces of course quite lot’s of changes to the tactics of the game play: The forts are most likely going to be not completely symmetric, then the topology might give an advantage to certain movements on the map. The smaller fort battles are going to be more tactical because of the lower player limits. All in all, battles are going to be, like the forts themselves, more individual and more unique. The motivation is, that we hope to see more battles in effect of these changes.

Categories: Uncategorized Tags:

The battle logs

October 28th, 2009 zet 16 comments

I stated sometimes that the there are logs of all battles that have been fought and that the players could analyse them themselves if they know how to use javascript.

So what this blogpost is about is: Explaining the battle logs so that you can (maybe) build your own statistics tool. If you are not a programming nerd, you probably can skip this post as boring and useless for your gameplay, but if you are one, you’ll most likely find this interesting unless you haven’t figured this stuff already out yourself. So here we go.

The data format

If a battle is opened on the cemetary (you know, on the forts), all the required data is transferred. It contains really everything. For example, this is a battle of only 2 players being involved:

{
	"attackerlist":[
		{"westid":60,"name":"foo124663470921","flagholdcount":1,"hitcount":2,
		"totalcauseddamage":131,"takendamage":260,"takenhits":4,"killedby":1,
		"finishedhp":0,"starthp":260,"maxhp":260,"townid":3,"townname":"cccc",
		"weaponid":100,"weaponname":"Stein","weaponmindmg":50,"weaponmaxdmg":110,
		"posidx":356,"diedwhen":0,"targetidx":356}
		],
	"defenderlist":[
		{"westid":1,"name":"testxx","flagholdcount":0,"hitcount":4,
		"totalcauseddamage":260,"takendamage":131,"takenhits":2,"killedby":-1,
		"finishedhp":1389,"starthp":1520,"maxhp":1520,"townid":5,
		"townname":"attackers of doommmm","weaponid":100,"weaponname":"Stein",
		"weaponmindmg":50,"weaponmaxdmg":110,"posidx":396,"diedwhen":8,"targetidx":396}
	],
	"log":[0,2, 1,1, 2,396, 3,1520, 4,1, 1,60, 2,356, 3,260, 4,0, 8,594, 0,3, 1,1, 2,396, 3,1520,
		4,1, 5,60, 7,62, 1,60, 2,356, 3,198, 4,0, 5,1, 7,67, 8,560, 0,4, 1,1, 2,396, 3,1453, 4,1,
		5,60, 7,62, 1,60, 2,356, 3,136, 4,0, 5,1, 8,492, 0,5, 1,1, 2,396, 3,1453, 4,1, 5,60, 1,60,
		2,356, 3,136, 4,0, 5,1, 8,424, 0,6, 1,1, 2,396, 3,1453, 4,1, 5,60, 1,60, 2,356, 3,136, 4,0,
		5,1, 7,64, 8,390, 0,7, 1,1, 2,396, 3,1389, 4,1, 5,60, 7,85, 1,60, 2,356, 3,51, 4,0, 5,1,
		8,356, 0,8, 1,1, 2,396, 3,1389, 4,1, 5,60, 6,51],
	"map":{
		"tiles":[[3,5,2,1,11,9],[8,4,1,2,18,7],[6,6,3,1,11,15],[0,11,3,4,11,11],[3,11,3,4,21,6],
			[6,11,3,4,21,11],[20,0,4,3,10,6],[128,0,2,2,16,9],[0,0,4,4,6,2],[8,0,5,4,24,2],[8,6,5,5,24,14],
			[0,6,4,5,6,14],[1,4,2,2,7,6],[1,4,2,2,7,8],[1,4,2,2,7,10],[1,4,2,2,7,12],[1,4,2,2,26,6],
			[1,4,2,2,26,8],[1,4,2,2,26,10],[1,4,2,2,26,12],[4,1,4,2,10,3],[4,1,4,2,14,3],[4,1,4,2,18,3],
			[4,1,2,2,22,3],[4,1,4,2,10,16],[4,1,2,2,14,16],[4,1,2,2,18,16],[4,1,4,2,20,16],[5,8,2,2,16,16]],
		"cells":[0,0,0,0,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,4,4,4,4,0,0,0,0,1,1,1,1,1,1,1,
			1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,4,4,4,4,0,0,0,0,1,1,5,5,5,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,
			6,6,6,3,3,4,4,4,4,0,0,0,0,1,1,5,5,5,7,7,7,7,7,8,8,8,8,8,8,9,9,9,9,9,6,6,6,3,3,4,4,4,4,0,0,0,0,1,
			1,5,5,5,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,6,6,6,3,3,4,4,4,4,0,0,0,0,15,15,15,16,10,
			10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,17,18,18,18,4,4,4,4,0,0,0,0,15,15,15,16,10,10,
			19,19,19,11,11,20,20,20,20,13,13,21,21,14,14,14,17,18,18,18,4,4,4,4,0,0,0,0,15,15,15,16,22,22,19,
			19,19,23,23,20,20,20,20,24,24,21,21,25,25,25,17,18,18,18,4,4,4,4,26,26,26,26,15,15,15,16,22,22,22,
			27,27,23,23,28,28,29,29,24,24,21,21,25,25,25,17,18,18,18,30,30,30,30,26,26,26,26,15,15,15,16,22,
			22,22,27,27,23,23,28,31,31,29,24,24,32,32,25,25,25,17,18,18,18,30,30,30,30,26,26,26,26,33,33,33,
			34,35,35,35,27,27,36,36,37,31,31,38,39,39,32,32,40,40,40,41,42,42,42,30,30,30,30,26,26,26,26,33,
			33,33,34,35,35,35,43,43,36,36,37,37,38,38,39,39,44,44,40,40,40,41,42,42,42,30,30,30,30,26,26,26,
			26,33,33,33,34,35,35,35,43,43,36,36,45,45,45,45,39,39,44,44,40,40,40,41,42,42,42,30,30,30,30,26,
			26,26,26,33,33,33,34,46,46,46,43,43,47,47,45,45,45,45,48,48,44,44,49,49,49,41,42,42,42,30,30,30,
			30,26,26,26,26,33,33,33,34,46,46,46,47,47,47,47,50,50,50,50,48,48,48,48,49,49,49,41,42,42,42,30,
			30,30,30,26,26,26,26,51,51,52,52,52,46,46,47,47,47,47,50,50,50,50,48,48,48,48,49,49,53,53,53,54,
			54,30,30,30,30,26,26,26,26,51,51,52,52,52,55,55,55,55,55,55,55,56,56,57,57,57,57,57,57,57,53,53,
			53,54,54,30,30,30,30,58,58,58,58,51,51,52,52,52,51,51,59,59,59,59,59,59,60,60,60,60,60,60,54,54,
			53,53,53,54,54,61,61,61,61,58,58,58,58,51,51,51,51,51,51,51,59,59,59,59,59,59,60,60,60,60,60,60,
			54,54,54,54,54,54,54,61,61,61,61,58,58,58,58,51,51,51,51,51,51,51,59,59,59,59,59,59,60,60,60,60,
			60,60,54,54,54,54,54,54,54,61,61,61,61,58,58,58,58,62,62,62,62,62,62,62,62,62,63,63,63,63,63,63,
			63,63,64,64,64,64,64,64,64,64,64,61,61,61,61,58,58,58,58,62,62,62,62,62,62,62,62,62,63,63,63,63,
			63,63,63,63,64,64,64,64,64,64,64,64,64,61,61,61,61,58,58,58,58,62,62,62,62,62,62,62,62,62,63,63,
			63,63,63,63,63,63,64,64,64,64,64,64,64,64,64,61,61,61,61,58,58,58,58,62,62,62,62,62,62,62,62,62,
			63,63,63,63,63,63,63,63,64,64,64,64,64,64,64,64,64,61,61,61,61],
		"height":24,
		"sectors":[{"height":0,"attackerSpawn":true},
			{"height":0},{"height":0},{"height":0},{"height":0,"attackerSpawn":true},
			{"height":6,"attackerBonus":6,"defenderSpawn":true,"defenderBonus":7},
			{"height":6,"attackerBonus":6,"defenderSpawn":true,"defenderBonus":7},
			{"height":4,"attackerBonus":3,"defenderSpawn":true,"defenderBonus":4},
			{"height":4,"defenderSpawn":true},{"height":4,"attackerBonus":3,"defenderSpawn":true,"defenderBonus":4},
			{"height":0,"defenderSpawn":true},{"height":0,"defenderSpawn":true},{"height":0,"defenderSpawn":true},
			{"height":0,"defenderSpawn":true},{"height":0,"defenderSpawn":true},{"height":0},
			{"height":4,"attackerBonus":3,"defenderSpawn":true,"defenderBonus":4},
			{"height":4,"attackerBonus":3,"defenderSpawn":true,"defenderBonus":4},
			{"height":0},{"height":3,"attackerBonus":1.25,"defenderSpawn":true,"defenderBonus":1.25},
			{"height":0,"defenderSpawn":true},{"height":3,"attackerBonus":1.25,"defenderSpawn":true,"defenderBonus":1.25},
			{"height":0,"defenderSpawn":true},{"height":0,"defenderSpawn":true},{"height":0,"defenderSpawn":true},
			{"height":0,"defenderSpawn":true},{"height":0,"attackerSpawn":true},{"height":0,"defenderSpawn":true},
			{"height":0,"attackerBonus":-5,"defenderSpawn":true,"defenderBonus":-5},
			{"height":0,"attackerBonus":-5,"defenderSpawn":true,"defenderBonus":-5},
			{"height":0,"attackerSpawn":true},{"flag":true,"height":0,"attackerBonus":-10,"defenderSpawn":true,"defenderBonus":-10},
			{"height":0,"defenderSpawn":true},{"height":0},{"height":4,"defenderSpawn":true},{"height":0,"defenderSpawn":true},
			{"height":0,"defenderSpawn":true},{"height":0,"attackerBonus":-5,"defenderSpawn":true,"defenderBonus":-5},
			{"height":0,"attackerBonus":-5,"defenderSpawn":true,"defenderBonus":-5},{"height":0,"defenderSpawn":true},
			{"height":0,"defenderSpawn":true},{"height":4,"defenderSpawn":true},{"height":0},
			{"height":3,"attackerBonus":1.25,"defenderSpawn":true,"defenderBonus":1.25},
			{"height":3,"attackerBonus":1.25,"defenderSpawn":true,"defenderBonus":1.25},
			{"height":0,"defenderSpawn":true},{"height":0,"defenderSpawn":true},
			{"height":0,"defenderSpawn":true},{"height":0,"defenderSpawn":true},
			{"height":0,"defenderSpawn":true},{"height":0,"defenderSpawn":true},
			{"height":0},{"height":6,"attackerBonus":6,"defenderSpawn":true,"defenderBonus":7},
			{"height":6,"attackerBonus":6,"defenderSpawn":true,"defenderBonus":7},{"height":0},
			{"height":4,"attackerBonus":3,"defenderSpawn":true,"defenderBonus":4},
			{"height":0,"attackerBonus":3,"defenderSpawn":true,"defenderBonus":4},
			{"height":4,"attackerBonus":3,"defenderSpawn":true,"defenderBonus":4},
			{"height":0,"attackerSpawn":true},{"height":0},{"height":0},{"height":0,"attackerSpawn":true},
			{"height":0,"attackerSpawn":true},{"height":0,"attackerSpawn":true},{"height":0,"attackerSpawn":true}],
		"mapname":"Test",
		"width":34},
	"logtypes":["ROUNDSTART","CHARTURN","CHARTARGET","CHARHEALTH","CHARONLINE","SHOOTAT","KILLED","HIT","MOVED"],
	"roundsplayed":8,"maxrounds":50,"battleid":81,"outcome":"ATTACKER_WIPED","fortname":"abcfort",
	"declarerid":6,"declarername":"foo12464580102","attackertownid":3,"defendertownid":5,"defendertownname":"attackers of doommmm",
	"attackertownname":"cccc"}

That’s quite a chunk, so let’s rip it apart and look at it one by one.

Attacker- and Defenderlist

Both arrays contain identical descriptions of all the involved players. Each player has following descriptions:

  • westid: the id of the player in this world. Identical to the id used in ranking etc.
  • name: the name of the player
  • flagholdcount: number of rounds that the player was holding the flag
  • hitcount: number of hits the player made
  • totalcauseddamage: the total amount of damage caused by this player
  • takendamage: how much damage the player got
  • takenhits: how often the player was hit
  • killedby: a player id (westid) of the player who knocked the player out
  • finishedhp: how much hitpoints that have been left at the end of the battle
  • starthp: hitpoints on start of the battle
  • maxhp: the maximum amount of hitpoints the player may have
  • townid: the id of the town the player belonged to
  • townname: the name of that town at the moment when the battle started
  • weaponid: the id of the used weapon
  • weaponmaxdmg: the maximum damage the weapon can cause
  • weaponmindmg: the minimum damage that the weapon is causing
  • posidx: The starting position of the player
  • diedwhen: The round the player was knocked out (bugged, fixed with 1.23)
  • targetidx: The target of the player when the game started

A lot of data is already supplied in these arrays, but there’s far more.

The log

Each battleresult contains a complete log of the whole battle. This is most likely the most interesting thing for you, as this contains a lot of data (as a side note, this data might be bugged as it has never been used yet anywhere). A part of the log looks like this:

"log":[0,2, 1,1, 2,396,(...)

I inserted whitespaces at each second comma, because each pair of numbers describes what happened. The first number tells us what operation this was, the second number describes the operation. The mere numbers are useless unless we know the codes for the numbers. The codes are supplied with the log. The values are represented in an array called "logtypes":

"logtypes":["ROUNDSTART","CHARTURN","CHARTARGET","CHARHEALTH","CHARONLINE","SHOOTAT","KILLED","HIT","MOVED"]

The array tells us that 0 means “ROUNDSTART”, 1 means “CHARTURN” and so on. The order can change anytime when we change some implementations on our sides, so in case of developing a tool in javascript, I would suggest to figure out the right numbers before analyzing the log.
This codebook tells us now following information:
“logtypes”:

"log":[ROUNDSTART,2, CHARTURN,1, CHARTARGET,396, CHARHEALTH,1520, CHARONLINE,1,
CHARTURN,60, CHARTARGET,356, CHARHEALTH,260, CHARONLINE,0, MOVED,594,
ROUNDSTART,3, ...

So this is more meaningful now and with a bit of description, this is the log, encoded in these number pairs:

  1. ROUNDSTART,2: The game begins with round 2 (1 is the first round where everyone is choosing their starting position and target position.
  2. CHARTURN,1: The character with west id 1 is now active
  3. CHARTARGET,396: The character 1 is trying to go to the cell 396 (which is his starting position, so we’re there already)
  4. CHARHEALTH,1520: The character 1 has a health of 1520 hitpoints
  5. CHARONLINE,1: The player for character 1 was online during this round
  6. CHARTURN,60: It is now the turn of player with id 60
  7. CHARTARGET,356: The character 60 wants to go to cell 356
  8. CHARHEALTH,260: The character 60 has 260 hitpoints
  9. CHARONLINE,0: The player of character 60 was not online
  10. MOVED,594: Character 60 moves to cell 594
  11. ROUNDSTART,3: Round 2 has ended, round 3 begins

This pattern repeats all over the place and we can reconstruct the whole battle for each player. We do even know who was online and who was not online! The keys “SHOOTAT”,”KILLED” and “HIT” describe further actions:

  • SHOOTAT: the id of the player that this character is shooting at
  • KILLED: if the shot was knocking the player out, this key is used. The value represents the damage that was caused the player to be knocked out. Can be larger than the player’s hitpoints
  • HIT: if the shot was a hit, the damage is described with the value

If no hit was made, the SHOOTAT value exists but without a following HIT / KILLED actions.

The map description

The map description is also supplied here. It could be used for replaying the whole map visually. The first thing to know is how a x,y coordinate is represented in the map – since we know the width and height of the map, we can recalculate a pair of numbers to a single number and back with this small function:

// javascript code
function toxy(idx,mapwidth) {
	return {x:idx%mapwidth,y:Math.floor(idx/mapwidth)};
}
function toidx(x,y,mapwidth) {
	return x+y*mapwidth;
}

Both functions can be used to do the required calculations. The width and height of the map is supplied by the map description as well with the keys “width” and “height”.
Furthermore, we have various arrays now: “tiles”, “cells” and “sectors”. The “mapname” parameter is currently not really used, it still has the name “test” on the productive worlds, something that I didn’t know about yet – as it’s nowhere used right now.

The tiles

The tiles are simple arrays of arrays containing each 6 numbers, describing the visual layout with out tileobject:

  1. The x coordinate on the tile texture
  2. The y coordinate on the tile texture
  3. The x size of the tile
  4. The y size of the tile
  5. The x coordinate on the map where the tile is being drawn (left side of the tile)
  6. The y coordinate on the map where the tile is being drawn (top side of the tile)
    • height: The height of this sector
    • attackerbonus / defenderbonus: What bonus the sector provides
    • defenderspawn / attackerspawn: A boolean value that tells us if players can spawn here
    • flag: True if this is a flag sector

This information allows us to draw the hole map using the tile texture. It contains only eyecandy information – nothing else.

The sectors

That array describes the attributes of each sector that is present on the map. Following attributes are available:

There will be further values if there’s a bonus for a certain playerclass, but I think that the whole sector description is pretty self explanatory.

The cells

The most important description for the game is the layout of the sectors. The sectors can have any kind of form, so what we do is, we define for each cell on the map what sector it belongs – it refers here to an index in the sector array. The array called “cells” describes now for each cell, starting from top left the sector for each cell, left to right, top to bottom (just like reading letters in a book). For example:

"cells":[0,0,0,0,1,1,1,1,1,1,1,1,1,2 ...

What we see here is, that the cell located at x=0 and y=0 is described with the attributes given by the sector description at index 0 of the sector array. The same attributes are used for x=1,y=0 and x=2,y=0 and x=3,y=0. The next sector starts at x=4,y=0. Every cell that refers to the same sector id belongs to the same sector (of course…). From the game logic we know that if a sector is taken by a team, the other team can’t enter that sector. So in theory, there could be sectors that are disjunct – which means that a sector could be split. However, this should not be the case.

That’s it!

So that’s everything that is needed to know if you really want to analyze the logs of a battle yourself. How can you get now the data? Well, there are several ways – for example taking the text from the ajax call using firebug. Or by overwriting the FortBattle.makeStats function:

javascript:(function() {
  var orig = FortBattle.makeStats;
  FortBattle.makeStats = function (data,element,fortx,forty,bool) {
    alert(Json.toString(data));
    return orig(data,element,fortx,forty,bool);
  }
})(); void(0);

If you execute this code in your browser’s address bar, you’ll get an alert message the next time when you look at a fort battle result. Copy & paste the result and you’ll have the data anywhere you want it to have.

Categories: Uncategorized Tags:

Back from Japan!

October 16th, 2009 zet 11 comments

japanSo, I am back from Vacation – I’ve been to Japan and enjoyed it very much over there. Anyway, now I am back and getting into work again.

First: The chat is being delayed. The reason for this are technical reasons on the serverside. It’s unlikely that it becomes a feature of 1.23.

So what’s on the agenda for 1.23 then?

  • Stabilization: Certain features need smaller or larger improvements that are going to be done in 1.23.
  • Small user interface & graphical improvements: A larger map, a bit more comfort in the game internal forums a new ranking
  • Custom fort battle maps
  • New rewards

The custom fort battle maps are the most complex feature here. For the resizable map, it’s a bit easier but should help players to get a more comfortable overview on the game map, as it can be seen in this screenshot:

A map that fits into the browser's screen

A map that fits into the browser’s screen

For the custom battle maps, it’s far more complex. First we have 3 different fort sizes, then we have a vast amount of different building level configurations. In order to provide as much diversity as possible, each building will be represented in the battle map dependent on its level when the battle starts (don’t ask me what happens if to positioned players in case of a tower level up – I don’t know yet). But in order to achieve this, we must create a description of all this somehow and this can not be done using a mere text editor – we need a tool for this. And I have started working on just that. In theory, once we have the tool ready and created all the data that is required for creating custom battle maps for each fight, the deployment is of important question – how will it be deployed to players and representation. Of course, most of this has already been foreseen and most stuff should work right away from the start, but of course, all that and the testing will require quite some time. But we’ll see how it goes on and how long it’ll take.

Categories: Uncategorized Tags:

First leaked picture from 1.23

October 8th, 2009 anthraxx 13 comments

Hey ho :D

I currently don’t wanna talk too much about the 1.23 update so i currently just release some pictures showing some new interface designs (nope no new feature previews leaked yet)

new town profile with additional data

new town profile with additional data (click to raise)

new ranking interface (click to raise)

new ranking interface (click to raise)

Categories: Uncategorized Tags:

Premium for everyone

October 6th, 2009 anthraxx 4 comments

paI’ve take care of that the beta server has a fairer premium model that fits a beta testing server. it was admittedly too expensive for a pure testing and beta world. So I’ve now raised the gained nuggets by three, of course only for the public beta world, so please don’t cry :D

Really sorry all other :)

Categories: Uncategorized Tags: