Status Update #12 - Team, Forum & Geschenke vom Osterhasen

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

      Status Update #12 - Team, Forum & Geschenke vom Osterhasen

      Hey,

      Echter Neuanfang

      wie im letzten Status-Update angekündigt sind wir dabei die Ränge im Team komplett neu aufzubauen. Wir haben viel geredet, überlegt und auch einiges wieder verworfen. Mittlerweile sind wir soweit den Prozess zu starten. Dies wird aber nicht alles auf einmal passieren. Es werden nach und nach Änderungen vorgenommen.

      Ihr könnt davon aus gehen, dass:
      • Foren umbenannt werden
      • Neue Subforen erstellt werden
      • Themen verschoben werden
      • FAQs verändert werden
      • Rechte angepasst werden (beispielhaft Änderungen am Titel sind nicht überall wirklich schön, anderswo aber sehr wichtig)
      • Team-Ränge umbenannt werden.

      Dabei werden sicherlich einige Sachen nicht sofort so laufen wie sie sollen - etwas Geduld mitbringen ^^
      Wir hätten natürlich auch alles intern vorbauen können und auf einen Schlag veröffentlichen - das würde aber alles nur noch länger raus zögern und am Ende würde sicher auch einiges dann doch nicht so klappen wie geplant.

      Der Team Aufbau

      Aktuell wollen wir mit folgenden Ränge arbeiten:
      • Supporter - Neuer Rang speziell für den Chat/Spieler Support
      • Mod - In etwa wie der Moderator-Rang bisher
      • Mod+ - In etwa wie der SMod-Rang bisher
      • (?) - Wie der SMod+ Rang bisher (Hier fehlt leider noch immer ein guter Name, aktuell würde ich vielleicht nur die Farbe verändern vom Mod+?)
      • Admin
      Daneben sind noch ein Builder-Rang und/oder einen Event-Rang im Gespräch. Allerdings gibt es hier u.A. Rechte-Probleme, welche aus Erfahrung dazu führen, dass viele Aufgaben am Ende von Admins erledigt werden müssen und dies letztendlich mehr verzögert als hilft.

      Der Supporter Rang

      Bei dem Supporter-Rang geht es speziell darum Präsenz auf den Servern zu haben. Ein Großteil der Probleme und Fragen von Spielern kann ohne größere weitere Rechte beantwortet werden. Ab und zu ist es dann aber doch notwendig einen störenden Spieler temporär zu sperren.
      Dies sollen dann aber auch schon grundlegend alle Rechte sein ind dieser ersten Version sein, die ein Supporter hat. Damit wird dann hoffentlich auch die Einstiegshürde stark nach unten sinken.

      Es wird demnächst auch noch eine neue FAQ zu diesem Thema geben "Wie werde ich Supporter?". Bei dem Supporter-Rang wird es eine stärkere Fluktuation geben. Es werden öfter neue Supporter ins Team kommen - aber auch öfter Supporter wieder gehen. Bei dem Rang soll zum Beispiel die Aktivität der Person mehr ins Gewicht fallen.

      Intern haben wir bereits einige Spieler im Auge und werden diese von uns aus ansprechen, ob sie Interesse daran haben diesen Rang zu testen. Grundlegend hoffen wir das Team in der nächsten Zeit verdoppeln zu können.

      Voraussichtlich werden (mindestens) @Stefm90 und @blokovat hier die wichtigen Ansprechpartner werden für die neuen Supporter und die Spieleranfragen dazu. Wer nicht mehr auf die Supporter-FAQ warten möchte kann auch sich direkt mit einer Bewerbung an @Stefm90 wenden.

      Geschenk vom Osterhasen (Für Programmierer)

      Etwas länger und komplexer


      Im letzten Monat gab es einige ungeplante Server Neustarts/Freezes. Im Folgenden möchte ich an einem Beispiel (es gab zusammen drei verschiedene Gründe) zeigen wie so etwas passieren kann und wie überraschend doch der Grund sein kann.

      Einer der Server-Freezes lag letztendlich an FakeStuff. Genau genommen handelt es sich dabei um einen Deadlock , welcher durch eine Race Condition ausgelöst wurde.
      Das heißt so viel wie: Zwei Prozesse wollen zufällig genau im gleichen Moment etwas benutzen, aber weil es nur immer einer zur Zeit benutzen darf bleibt alles hängen.
      Im Studium gibt es dafür dann auch stark vereinfachte Beispiele, um das Problem zu analysieren. Das Cigarette smokers problem ist ein solches, dass ich auch im Studium bauen musste.

      Hier die Einträge im Log zum Zeitpunkt als das Problem aufgetreten ist. Hilft erst einmal nicht sehr viel weiter...
      Letzter Log-Eintrag

      Quellcode

      1. [2017-05-24 17:31:42] [Server thread/INFO]: Trimmy1809 issued server command: /land verkaufen



      Dabei kommt dann aber ein Hilfs-Service, den ich in Chunkli eingebaut habe zu gute. Dieser informiert darüber, dass der Minecraft-Server nicht mehr tickt und sehr sicher etwas kaputt ist.
      Dieser Hilf-Service gibt dann die aktuelle Position des Minecraft-Prozesses aus um auf den möglichen Ort des Problems hinzuweisen.
      Letzte Log-Einträge

      Quellcode

      1. [2017-05-24 17:31:42] [Server thread/INFO]: Trimmy1809 issued server command: /land verkaufen
      2. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: [0;37;1m[[0;32;22mChunk[0;31;22mli[0;37;1m] [0;33;22mMinecraft is no longer Ticking? -151974754[m
      3. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: [0;37;1m[[0;32;22mChunk[0;31;22mli[0;37;1m] [0;33;22mDid you add a Chunkli-Job and use .get() to wait syncronous on the result? <- Not possible[m
      4. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: [0;37;1m[[0;32;22mChunk[0;31;22mli[0;37;1m] [0;33;22mDEBUG Info. MainThread is currently at: [m
      5. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: de.k.fakestuff.internal.fakes.StaticStuffManager.getInArea(StaticStuffManager.java:213)[m
      6. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: de.k.fakestuff.internal.listeners.FSListener.getFakes(FSListener.java:425)[m
      7. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: de.k.fakestuff.internal.listeners.FSListener.getFakesInAreaData(FSListener.java:414)[m
      8. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: de.k.fakestuff.internal.listeners.FSListener.onGetAreaPluginDataEvent(FSListener.java:409)[m
      9. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: sun.reflect.GeneratedMethodAccessor562.invoke(Unknown Source)[m
      10. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[m
      11. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: java.lang.reflect.Method.invoke(Method.java:498)[m
      12. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302)[m
      13. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)[m
      14. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:545)[m
      15. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:506)[m
      16. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: de.k.chunkli.internal.EventFactory$1.call(EventFactory.java:36)[m
      17. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: de.k.chunkli.internal.EventFactory$1.call(EventFactory.java:32)[m
      18. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: org.bukkit.craftbukkit.scheduler.CraftFuture.run(CraftFuture.java:89)[m
      19. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:353)[m
      20. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: net.minecraft.server.MinecraftServer.D(MinecraftServer.java:783)[m
      21. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: net.minecraft.server.DedicatedServer.D(DedicatedServer.java:406)[m
      22. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: net.minecraft.server.MinecraftServer.C(MinecraftServer.java:723)[m
      23. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: net.minecraft.server.MinecraftServer.run(MinecraftServer.java:621)[m
      24. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: java.lang.Thread.run(Thread.java:748)[m
      25. [2017-05-24 17:31:48] [Chunkli AsyncTaskServer/INFO]: [0;37;1m[[0;32;22mChunk[0;31;22mli[0;37;1m] [0;33;22mDEBUG Info End.[m
      26. [2017-05-24 17:31:53] [pool-77891-thread-371/WARN]: java.util.concurrent.TimeoutException
      27. [2017-05-24 17:31:53] [pool-77891-thread-371/WARN]: at org.bukkit.craftbukkit.scheduler.CraftFuture.get(CraftFuture.java:64)
      28. [2017-05-24 17:31:53] [pool-77891-thread-371/WARN]: at de.k.chunkli.internal.EventFactory.callEvent(EventFactory.java:54)
      29. [2017-05-24 17:31:53] [pool-77891-thread-371/WARN]: at de.k.chunkli.internal.EventFactory.callGetAreaPluginDataEvent(EventFactory.java:74)
      30. [2017-05-24 17:31:53] [pool-77891-thread-371/WARN]: at de.k.chunkli.internal.actions.chunk.world.atomic.GetAreaPluginDataAction.execute(GetAreaPluginDataAction.java:28)
      31. [2017-05-24 17:31:53] [pool-77891-thread-371/WARN]: at de.k.chunkli.internal.actions.AbstractAction.tryExecuteAction(AbstractAction.java:239)
      32. [2017-05-24 17:31:53] [pool-77891-thread-371/WARN]: at de.k.chunkli.internal.actions.AbstractAction.call(AbstractAction.java:216)
      33. [2017-05-24 17:31:53] [pool-77891-thread-371/WARN]: at de.k.chunkli.api.actions.AbstractWorldAction.getPluginDataForArea(AbstractWorldAction.java:269)
      34. [2017-05-24 17:31:53] [pool-77891-thread-371/WARN]: at de.k.chunkli.internal.actions.chunk.world.BackupAreaAction.execute(BackupAreaAction.java:34)
      35. [2017-05-24 17:31:53] [pool-77891-thread-371/WARN]: at de.k.chunkli.internal.actions.AbstractAction.tryExecuteAction(AbstractAction.java:239)
      36. [2017-05-24 17:31:53] [pool-77891-thread-371/WARN]: at de.k.chunkli.internal.actions.AbstractAction.call(AbstractAction.java:216)
      37. [2017-05-24 17:31:53] [pool-77891-thread-371/WARN]: at de.k.chunkli.internal.actions.chunk.world.FilterAreaAction.execute(FilterAreaAction.java:25)
      38. [2017-05-24 17:31:53] [pool-77891-thread-371/WARN]: at de.k.chunkli.internal.actions.AbstractAction.tryExecuteAction(AbstractAction.java:239)
      39. [2017-05-24 17:31:53] [pool-77891-thread-371/WARN]: at de.k.chunkli.internal.actions.AbstractAction.call(AbstractAction.java:216)
      40. [2017-05-24 17:31:53] [pool-77891-thread-371/WARN]: at de.k.chunkli.internal.actions.AbstractAction.call(AbstractAction.java:28)
      41. [2017-05-24 17:31:53] [pool-77891-thread-371/WARN]: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      42. [2017-05-24 17:31:53] [pool-77891-thread-371/WARN]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      43. [2017-05-24 17:31:53] [pool-77891-thread-371/WARN]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      44. [2017-05-24 17:31:53] [pool-77891-thread-371/WARN]: at java.lang.Thread.run(Thread.java:748)
      45. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: [0;37;1m[[0;32;22mChunk[0;31;22mli[0;37;1m] [0;33;22mMinecraft is no longer Ticking? -151974754[m
      46. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: [0;37;1m[[0;32;22mChunk[0;31;22mli[0;37;1m] [0;33;22mDid you add a Chunkli-Job and use .get() to wait syncronous on the result? <- Not possible[m
      47. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: [0;37;1m[[0;32;22mChunk[0;31;22mli[0;37;1m] [0;33;22mDEBUG Info. MainThread is currently at: [m
      48. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: de.k.fakestuff.internal.fakes.StaticStuffManager.getInArea(StaticStuffManager.java:213)[m
      49. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: de.k.fakestuff.internal.listeners.FSListener.getFakes(FSListener.java:425)[m
      50. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: de.k.fakestuff.internal.listeners.FSListener.getFakesInAreaData(FSListener.java:414)[m
      51. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: de.k.fakestuff.internal.listeners.FSListener.onGetAreaPluginDataEvent(FSListener.java:409)[m
      52. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: sun.reflect.GeneratedMethodAccessor562.invoke(Unknown Source)[m
      53. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[m
      54. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: java.lang.reflect.Method.invoke(Method.java:498)[m
      55. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302)[m
      56. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)[m
      57. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:545)[m
      58. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:506)[m
      59. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: de.k.chunkli.internal.EventFactory$1.call(EventFactory.java:36)[m
      60. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: de.k.chunkli.internal.EventFactory$1.call(EventFactory.java:32)[m
      61. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: org.bukkit.craftbukkit.scheduler.CraftFuture.run(CraftFuture.java:89)[m
      62. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:353)[m
      63. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: net.minecraft.server.MinecraftServer.D(MinecraftServer.java:783)[m
      64. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: net.minecraft.server.DedicatedServer.D(DedicatedServer.java:406)[m
      65. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: net.minecraft.server.MinecraftServer.C(MinecraftServer.java:723)[m
      66. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: net.minecraft.server.MinecraftServer.run(MinecraftServer.java:621)[m
      67. [2017-05-24 17:31:53] [Chunkli AsyncTaskServer/INFO]: java.lang.Thread.run(Thread.java:748)[m




      Etwas mehr Informationen kann man dann vom java Tool jstack erhalten. Dabei werden dann alle Thread-Positionen im Code ausgegeben. Nicht nur die des Haupt-Prozesses.

      Hier kommt der Osterhase ins Spiel MC383:54

      Um das Oster-Event zu veranstalten habe ich FakeStuff so erweitert, dass regelmäßig geprüft wird, ob ein Spieler ein relevantes Modell/FakePlayer/FakeMob berührt.
      FakeStuff läuft fast komplett asyncron um die Ressourcen der CPU besser nutzen zu können und die Server zu entlasten. Zur Prüfung, ob ein Spieler ein Modell berührt muss aber etwas Kontakt zum Minecraft-Prozess vorhanden sein. Es wird also nötig an diesen Schnittstellen für eine syncronisation der zugreifenden Prozesse zu sorgen, damit kein Deadlock/Race Condition entstehen kann.
      Offensichtlich ist hier ein Fehler aufgetreten. Witzigerweise ist das Problem zum ersten mal erst nach etwa einem Monat aufgetreten - und dann gleich zwei mal an dem Tag?.

      In den folgenden Bildern kann man den problematischen Code (bereits behoben) sehen:


      Erklärung

      Zu beginn war die Methoden update() auch als synchronized markiert, weil sie indirekt update() -> checkNear() -> getInArea() mit der chunkMap interagiert, welche jeweils nur ein Prozess zur Zeit manipulieren darf. Dies konnte aber dazu führen, dass ein PlayerCollideTrackablesEvent (asyncrones Event) ausgelöst wurde innerhalb dieses noch syncronisierten Codes.

      Wird nun im genau richtigen Moment, während dieses Event asyncron gerade ausgelöst wird auf dem Minecraft-Server ein Grundstück manipuliert, dann muss der Server dieses Gs sichern vor der Manipulation. Es wird daher eine "BackupAreaAction" von Landli ausgelöst in Chunkli, welches wiederum ein "GetAreaPluginDataEvent" auslöst um weitere Daten von anderen Plugins dem Backup beizufügen - in diesem Fall natürlich FakeStuff ;), denn das Backup soll natürlich auch gelöschte Modelle wieder herstellen können.



      Dieses GetAreaPluginDataEvent wiederum macht es nötigt die oben bereits erwähnte getInArea() Methode aufzurufen um die auf dem Grundstück vorhandenen Modelle zu erhalten.
      Und hier kommt es dann zum Problem:
      • Der erste Prozess hängt noch in der synchronisierten update()-Methode. Daher darf niemand anderes aktuell diese Klasse benutzen.
      • Der Minecraft Prozess wartet daher mit dem GetAreaPluginDataEvent-Event darauf, dass dieser andere Prozess fertig wird.
      • Das Entfernen des syncronized an der update() Methode löst dann das Problem und die Server laufen wieder ohne Probleme... :huh:

      Aber...

      Aber das ganze macht keinen Sinn. Denn mindestens der letzte Schritt erklärt nicht korrekt wie es an dieser Stelle zu einem Deadlock kommen sollte! Der Code an dieser Stelle ist korrekt. Das Event ist asyncron und kann keinen Deadlock erzeugen. Am Ende liegt es an etwas, was nirgendwo hier sichtbar ist: An einer vergessenen temporären Änderung die ich gemacht hatte um Probleme zwischen NocheatPlus und mcMMO genauer zu untersuchen.

      Der Deadlock findet statt, weil ich für die Tests sowohl die syncronen als auch asyncronen Events auf "syncronized" gesetzt hatte. Dies führt letztendlich dazu, dass im SimplePluginManager von Bukkit ein Deadlock entstehen kann, da ein Syncrones und ein Asyncrones Event sich in die Quere kommen.



      In diesem Fall läuft das GetAreaPluginDataEvent vom BackupAreaAction syncron und gleichzeitig wird asyncron das PlayerCollideTrackablesEvent versendet und endet in einem Lock.
      Das Problem hat aber absolut nichts mit dem zu tun was im Stacktrace zu sehen war und auch der "Fix" oben, ist nicht nötig gewesen. Er behebt zwar dieses Problem - aber es war nie die Ursache!

      Letztendlich werden diese Probleme alle durch das Entfernen des Test-Codes behoben. Diese lange Erklärung soll zeigen wie schwierig es sein kann den Grund eines Fehlers zu finden und auch zeigen, wie Schlüsse logisch erscheinen können - zu einer Lösung führen - aber am Ende absolut nicht den Fehler beheben. Gibt man sich damit zufrieden, dass ja nun der Server läuft wird das Problem einfach in einigen Wochen/Monaten wieder auftreten und die Suche geht von neuem los.

      Etwas ändern und "mal schauen ob es jetzt geht" ist hier einfach keine Option. Man muss das Problem komplett verstanden haben und nachspielen können, damit man eine gute Lösung finden kann. Die echte Lösung für ein solches Problem zu finden - vor allem wenn auch die Hilfsprogramme an die falschen Stellen zeigen - kann sich über Wochen und Monate hin ziehen.



      Bilder
      • code3.png

        31,53 kB, 1.171×472, 1.345 mal angesehen
      • code2.png

        22,31 kB, 739×429, 1.334 mal angesehen
      • d1.png

        24,78 kB, 1.007×440, 1.347 mal angesehen
      • d2.png

        23,31 kB, 1.021×274, 1.338 mal angesehen
      blog.kadcon.de
      Bitte möglichst alle Fragen im Forum stellen und nicht mir per Privatnachricht.

      Marcolino26 schrieb:

      Warum genau das nehmen, was alle haben und Kadcon ein Stück weiter zum Einheitsbrei bringen würde?


      Weil es nicht um Namen geht, sondern was dahinter steht. Außerdem ist das genau ein Grund diesen Namen zu wählen: Jeder versteht ihn.
      Einfach nur einen anderen Namen wählen hebt in keiner weise ab...

      Kade
      blog.kadcon.de
      Bitte möglichst alle Fragen im Forum stellen und nicht mir per Privatnachricht.

      Marcolino26 schrieb:

      Warum nicht ChatMod, CMod oder sonst irgendwas?
      Warum genau das nehmen, was alle haben und Kadcon ein Stück weiter zum Einheitsbrei bringen würde?


      Weil die meisten Spieler direkt von Anfang an wissen, welche Aufgaben derjenige hat. Einheitsbrei muss nicht direkt schlecht sein; es kann auch Vorteile haben.
      ChatMod/CMod trifft auch nicht zu 100% zu. Es soll von Supportern auch Support vor Ort vorgenommen werden.

      Beispielsweise hat jemand die Frage, warum sein/ihr Baum nicht wächst, deshalb geht der Supporter zum Spieler hin.
      Dieser guckt sich dann vor Ort an, welches Problem vorliegt. Er stellt fest: Es war eine Schwarzeiche, die nicht nur einen sondern vier Setzlinge braucht. Auch solche Aufgaben werden dazu gehören und sollten erledigt werden.
      Das ist aber einfach kein Chatsupport mehr - zumindest hätte ich es so nicht mehr betitelt. Es ist Hilfe (=Support) und nicht nur Chatmoderation, was der Name "ChatMod" erklären würde.

      Greetz,
      blokovat
      Du willst den Pandas nicht beim Aussterben zusehen? Dann werde jetzt einer! Klick mich!

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „blokovat“ ()

      Erstmal ein sehr großes Lob an das Team. Es gibt immer wieder Spieler, die nicht mit dem einverstanden sind, was alles so aufgelistet ist. Ich finde es gut, dass nun das Team neu strukturiert wird und so auch mehr Spieler die Möglichkeit bekommen, sich dem Team unter Beweis zu stellen und Kadcon somit auch unterstützen können. Dann wünsche ich auch allen Bewerbern viel Erfolg und auch dem Team, dass alles gut verläuft wie es sein soll.

      Názgul NuRhok
      Die neuen Ränge sind schonmal gut, ich würde den SMod+ einfach SMod nennen, da das ein gut bekannter Titel ist, und diese Position eben am nächsten an die Admins rankommt. Wählt man nur eine andere Farbe, würde oft nach dem Unterschied zw. Mod+ (blau) und Mod+ (grün) gefragt werden. Eine unterschiedliche Farbe kann leider nicht ausdrücken, welcher Mod höher gestellt ist, da Farben gleichwertig sind.
      Ansonsten freut es mich sehr, dass das Forum umstrukturiert wird, das war schon lange nötig finde ich. Bin im besonderen auf die Änderungen im Handelsforum gespannt, aber auch der Rest interessiert mich sehr :)

      MfG Mineraljunky
      Wow, ich bin auch sehr beeindruckt! Wie schnell das nun doch ging und wie wichtig es dem Team ist, das dies nun auch schnell statttfindet um das Team zu entlasten und neue Spieler miteinzubeziehen.

      Der neue Supporter Rang gefällt mir sehr gut! Und ich finde es auch toll, das ihr von euch aus Spieler ansprecht und fragt ob sie den Rang testen wolllen.

      Ich bin mal gespannt, was alles im Forum passiert, ich finde es toll, das Kadcon sich mal überholt und etwas frische reinbringt und wagt einen neuanfang zu probieren.

      Derzeit passiert sehr viel, dies freut mich wirklich und ich hoffe es geht so weiter.

      Danke Liebes Kadcon Team!

      KONXTiCMPunk schrieb:

      Super, sich immer weiterentwickeln und sich zu verbessern. Was mich noch interessieren würde, was es mit dem Builder- und Event Rang aus sich hat. Was sind die Aufgaben dieser Ränge, falls sie eingeführt werden?

      Das kann man noch gar nicht sagen, aber ungefähr steckt das schon im Namen des Rangs/der Ränge. Mehr kann ich gar nicht dazu sagen, außer dass wir intern über diese Ränge schreiben und uns Gedanken dazu machen. Es steht zum jetzigen Zeitpunkt auch nicht fest, ob diese Ränge kommen werden. Der Rang eines Eventmanagers oder Builders ist sehr schwierig und es ist noch nicht klar, ob dieser wirklich Sinn macht, so wie wir diesen erstellen könnten.

      006eragon
      Kadcon-Wochenblatt - Kadcons am längsten bestehende Zeitung.

      LordMuik schrieb:

      Wie wäre es denn mit SMod, der Name wäre doch wieder frei

      Der Name wird aber von allen Spielern die die jetzige Rolle des SMod kennen (logischerweise) mit seinen jetzigen Aufgaben, Rechten und Pflichten assoziiert. Das würde sich auch so schnell nicht ändern, das heißt die Personen mit diesem Rang würden oft unnötigerweise angeschrieben wegen Sachen, die nicht in ihrem Aufgabenfeld liegen, weil der Name noch mit der alten Rolle in Verbindung gebracht wird. Da einen neuen Rang mit einem alten Namen zu versehen ist denke ich keine gute Idee.

      air
      Hey,
      wow, dass ging ja mal schnell. Ich finde es einfach super das ihr das ihr das so schnell hinbekommen habt.

      Das Problem mit dem Rang kann nicht durch unterschiedliche Farben gelöst werden, da diese wie von @Mineraljunky bereits erwähnt alle Farben gleichwertig sind. Demnach kann man diesen nicht entnehmen, wer der beiden Ränge höher gestellt ist.


      Supporter!

      Da ich bisher nie nachgefragt habe frage ich jetzt, wie sieht das dann mit denn VIP Paketen etc. aus? Kann ein Supporter weiterhin welche kaufen? Wahrscheinlich schon, aber ich frag lieber.

      Ich spreche hiermit nochmal ein ganz großes Lob aus, dass das so schnell ging.

      Mit freundlichen Grüßen Drei

      webnaex schrieb:

      Idee:

      Supporter
      Mod
      Mod+
      SMod
      Admin


      airfighter007 schrieb:

      Der Name wird aber von allen Spielern die die jetzige Rolle des SMod kennen (logischerweise) mit seinen jetzigen Aufgaben, Rechten und Pflichten assoziiert. Das würde sich auch so schnell nicht ändern, das heißt die Personen mit diesem Rang würden oft unnötigerweise angeschrieben wegen Sachen, die nicht in ihrem Aufgabenfeld liegen, weil der Name noch mit der alten Rolle in Verbindung gebracht wird. Da einen neuen Rang mit einem alten Namen zu versehen ist denke ich keine gute Idee.


      Das Problem wäre immer noch da.