Archive

Archive for November, 2009

Bug unplugged

November 25th, 2009 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:

Seit dem Release von Version 1.23 haben einige wenige Leute Probleme mit einem ärgerlichen Kartenbug, zumindest zeigt sich der Bug in der Karte am deutlichsten – er existiert vermutlich noch an anderen Stellen, tritt dort dann aber nicht so prominent in Erscheinung. Ich habe ein kleines Javascriptlet gebastelt mit dem man temporär um den Bug drumherum kommt, allerdings kann dieser quickfix nicht im Produktivsystem integriert werden. Den folgenden Codeschnippsel kann man in die Adressleiste vom Browser einfügen um zumindest die Karte wieder zum Vorschein zu bringen:

javascript:WMap.mapData = new MapData(); WMap.scroll_map_to_char(); void(0);
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.

Nun aber zur wichtigeren Frage: Was ist die Matrix der Bug?

Die Antwort darauf ist eher kompliziert, ich würde sogar behaupten das dies einer der bemerkenswertesten Bugs ist, denen ich je über den Weg gelaufen bin. Bemerkesenwert insofern als dass die Reproduzierbarkeit extrem Bizarr ist. In der Firma gibt es zur Zeit keinen mir bekannten Rechner, bei dem der Bug reproduzierbar wäre, allerdings besitze ich einen Asus eee auf dem der Bug reproduzierbar auftritt, wie ich zuhause herausgefunden habe.

Am Montag habe ich das Netbook also mitgenommen (eigentlich habe ich es immer dabei weil ich Zug viel rumtippe damit). Ich habe es mit dem Firmennetzwerk verbudnen, konnte den Bug aber mit meiner Entwicklermaschine nicht reproduzieren, seltsam, allerdings läuft auf meiner Maschine auch ein anderer Webserver. Mit der Entwicklerkiste von einem Kollegen konnte der Bug aber tatsächlich relativ Zuverlässig reproduziert werden.

Wir haben den ganzen Tag versucht dahinterzukommen, wie der Bug entsteht. Wir haben herausgefunden dass der Bug in diesem Fall nicht in unserem PHP Programm zu suchen ist – PHP wird nie aufgerufen. Nachdem wir mit Wireshark die Verbindung aufgezeichnet haben haben wir herausgefunden dass die Anfragen einfach versanden. Wir hörten auf als die Batterien des Geräts leer waren (nach etwas mehr als 6 Stunden…)

Am nächsten Tag hatte ich mein Ladegerät mitgenommen damit wir nicht mehr von den Batterien abhängig sein würden. Ich hab den Browser gestartet, die Seite aufgerufen – und es ging. Einfach so. Wir konnten keinen Unterschied feststellen. Der Server lief mit dem gleichen Programm, das Testgerät auch, egal wie oft wir F5 drückten, es blieb beim alten, der Bug war weg.

Bis ich den Stecker zog und die Seite aktualisierte. Da kam zuverlässig der Bug wieder zum Vorschein. Ich steckte das Gerät wieder an und der Bug war weg. Ich bin mir ziemlich sicher dass das schwer zu glauben sein muss, aber wie ich schon sagte, dies ist einer der seltsamsten Bugs denen ich je begegnet bin, aber es ist Wahr! Es ist nur dann reproduzierbar wenn das Notebook ausgesteckt ist und die CPU und Chipsätze im Sparmodus sind (was jede Menge Nebeneffekte bzgl. des Timings im Netzwerkverkehr nach sich zieht, in diesem Falle mit gravierenden Folgen). Wer’s nicht glaubt soll sich das Video anschauen! Ich aktualiere dort mehrfach den Browser (Internet Explorer 6 in diesem Fall), in eingesteckten und nichteingesteckten Modus.

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.


[youtube]HuR8XK393cc[/youtube]

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.

Obwohl der Bug sehr witzig erscheinen mag kann ich versichern dass wir das Problem sehr ernst nehmen und dass wir an einer Lösung dafür arbeiten.

Categories: Uncategorized Tags:

Upcoming feature: Custom Fortmaps|Anstehendes Feature: Individuelle Fortkampfkarten

November 4th, 2009 23 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.

Version 1.23 wird also die individuellen Fortkampf Karten einführen, so wie bereits zuvor bekanntgegeben. Dieser Blogeintrag geht nun etwas mehr auf die Änderungen ein, die die Fortkampfkarten betreffen.

Jedes Fort ist im Grunde aufgrund seiner Größe und den unterschiedlichen Gebäudestufen sehr individuell, natürlich nur, solange die Gebäude nicht alle auf der maximalen Ausbaustufe sind. Allerdings sind bei den Forts die Gebäudestufen nicht in Stein gemeißelt: In einer der folgenden Releases werden wir auch noch Gebäudeschäden infolge von Kämpfen einführen, allerdings ist das nicht das Thema von diesem Post. Worum es geht ist, dass wir all diese unterschiedlichen Forts haben und dass die Kampfkarten diesen Umstand wiedergeben sollten.

Was ist also notwendig, damit dies passieren kann?

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.
  • Jedes Gebäude ist auf der Karte präsent, und je Höher die Ausbaustufe, desto mehr Vorteile werden die Sektoren bieten die zu dem Gebäude gehören.
  • Charakterklassen Bonus: Jeder Turm wird zu einer bestimmten Charakterklasse gehören. Die Spieler mit den entsprechenden Klassen werden in diesen Sektoren zusätzlich zum Standardbonus einen weiteren Bonus bekommen.
  • Die Spielerlimits werden für das kleine und mittelgroße Fort herabgesetzt. Es gibt noch immer eine Diskussion darüber wie hoch die Limits sein sollten, aber in der ersten Version werden die Limits vermutlich bei 30 Spielern pro Seite beim kleinen Fort und 60 Spielern beim mittelgroßen Fort liegen. Es sei angemerkt, dass es aus unumgänglichen Technischen Gründen nicht möglich, bzw. unpraktisch ist, das Limit nach oben hin zu erweitern. Bitte versucht es garnicht erst vorzuschlagen, dass Limit anzuheben statt zu senken. Außerdem zeigen die Statistiken, dass die meisten Kämpfe zwischen 60 und 70 Spielern im Schnitt aufweisen. Daher trifft die Limitation hauptsächlich die kleinen Forts. Die Intention ist dabei, dass kleinere Allianzen gestärkt werden. Große Fortkämpfe bei großen Forts sind natürlich weiterhin möglich, daher sollte der Effekt im Spiel sich im Rahmen halten.

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):

Und so könnte es aussehen (die Karte hab ich nur zum testen erstellt, bitte nicht gleich über das schlechte Sektorlayout herziehen):

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

Die Karte in der Basis Konfiguration

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

Die gleiche Karte, aber mit drei aufgerüsteten Türmen.

In Folge dieser Änderungen ergeben sich natürlich eine menge Änderungen im taktischen Sinne: Da die Forts in den meisten Fällen vermutlich nicht völlig symmetrisch sein werden, wir das Layout einen gewissen Einfluss haben. Zudem werden Kämpfe um kleine Forts ohnehin taktischer sein, da hier weniger Spieler teilnehmen können und daher der individuelle Spieler eine größere Rolle spielt. Alles zusammen werden die Kämpfe, genauso wie die Forts selbst, individueller und einzigartiger werden. Die Motivation ist dabei, dass wir in Folge dieser Änderungen mehr Kämpfe sehen werden.

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: