| neue Message hinzufügen |

slerbgemachte Madeleine 2012-04-16 17:29:20
Ein schönes Wort:D

Dinge trennen Didi 2012-04-16 13:13:44

Hi,

nur um die Diskussion in die richtige Richtung zu lenken:

Wie Jody schon angemerkt hat: Ich halte es mittlerweile rein vom Datenaufwand für kein großes Problem mehr, für jede Karte (wie bisher auch) eine eigene ID zu vergeben und diese (wie bisher auch) in der Datenbank zu speichern.
Es könnte dann eben "offiziell" (die heutigen) Karen und beliebig viele slerbgemachte geben. Und darunter würden dann auch zufällig fallen.

Von daher: macht Euch erst mal keine Gedanken, wie ich das nachher abspeichere.

Generatoren, die in der Lage sind, zufällige UND fahrbare UND spannende Karten zu bauen - die werden bestimmt dann aber großes Interesse finden.

:)idi

Jody 2012-04-12 11:16:28
Offensichtlich haben wir sehr unterschiedliche Vorstellungen von den Karten, die mit Deinem Vorschlag realisierbar sind. Vielleicht solltest Du Deinen Vorschlag mal mit einer Beispielkarte unterstützen.

ultimate 2012-04-10 21:29:37
@madeleine: Danke für das positive Feedback

Ich muss dir leider widersprechen! ultimate 2012-04-10 21:29:01
Ich kann deine Meinung zwar verstehen, muss dir aber in zwei Punkt widersprechen:

Man muss nicht 256 Karten auf Befahrbarkeit prüfen sondern nur 8!

Ich habe ganz bewusst in meiner Beschreibung erwähnt, dass der Fall 0 evtl. sinnvoller Weise ausgeschlossen werden sollte. Wenn man dann nämlich immer mindestens einen Teil der variablen Felder befahrbar hat muss man nur noch die 8 Varianten mit genau ein Bezeicher = befahrbar prüfen. Sind diese 8 befahrbar, sind auch alle anderen 247 Varianten möglich...

Wir haben aber schon den Irrkartengenerator, da brauchen wir keine halb-statischen Irrkarten mehr

Ich bin grundsätzlich auch eher ein Fan von vollständig zufälligen Karten, denke aber auch, dass gerade eben teilweise bekannte Karten ihren Reiz haben können. In erster Linie ging es daher bei meinem Vorschlag darum eine einfache und schnell umsetzbare Lösung vorzuschlagen, wie man (von mir aus auch nur vorübergehend, bis echte Zufallskarten möglich sind) solche Zufallskarten mit Einschränkung ermöglichen kann. Der Unterschied zur kompletten Generierung von Irrkarten mit dem Irrkartengenerator ist aber auch hier, dass man eben viele solcher Karten als eine ablegen könnte und trotzdem viele Varianten zur Verfügung hat, ohne dass jedesmal der Generator angeschmissen werden muss...

Jody 2012-04-10 14:38:32
Didi hält das Abspeichern der verschiedenen Karten ohnehin nicht mehr für ein so großes Problem. Er meint, im Vergleich zu den ohnehin anfallenden Spieldaten - besonders bei geschwätzigen Spielern dürfte da einiges zusammenkommen - sei das vernachlässigbar, besonders weil nicht ständig neue Karten erstellt würden. Zudem kann man "meine" Karten ohnehin aus dem Zufallsseed wiederherstellen; es müssen also nur die Parameter für den Generator gespeichert werden.

Madeleine 2012-04-10 14:15:58
Äh ...

"Wir haben aber schon den Irrkartengenerator, da brauchen wir keine halb-statischen Irrkarten mehr."

Hier ging es ja nicht primär ums Generieren, sondern ums Abspeichern, dachte ich. Irgendeiner von Euch beiden hat da jetzt das Thema verfehlt.

Jody 2012-04-10 12:42:12
Offen gesagt, halte ich von dem Vorschlag nichts, denn …

wir brauchen erst einmal neue Karten, die den neuen Code haben. Diese Karten müssen auf alle möglichen Varianten ausgelegt sein, sollen für jede Variante ein spannendes Rennen bieten und müssen vor allen bei jeder Variante befahrbar sein.

Momentan werden die meisten Strecken als Rundkurs geplant. Das bedeutet, wenn man irgendwo einen Teil der Stecke absperrt, braucht man eine weitere Schleife, auf die man ausweichen kann. Die wird dann wahrscheinlich dermaßen eng sein, dass hinter dieser Engstelle das Rennen entschieden ist.

Du hast als Beispiel wahrscheinlich absichtlich einen Teil einer Irrkarte genommen. Das ist eine sehr gute Wahl, denn für diese Karten funktioniert Dein Konzept. Wir haben aber schon den Irrkartengenerator, da brauchen wir keine halb-statischen Irrkarten mehr.

Für alle anderen Karten wir Dein Konzept wahrscheinlich darauf hinaus laufen, dass die Streckendesigner einige "Schlaglöcher" auf die Strecke setzen, wobei die Strecke dann möglicherweise nicht mehr befahrbar wird, oder einige Kurven ein Karo enger machen, was auch nicht so schrecklich viel zum Spielspaß beiträgt. Letztendlich wird wohl kaum jemand eine Karte bauen können, die 256 signifikant unterschiedliche Varianten bietet.

Jeder, der schon einmal versucht hat, eine Karte zufällig zu generieren, weiß, dass der schwierigste Teil darin besteht, die Karte immer befahrbar zu machen. Und das Problem verschärfst Du damit eher, weil bei jeder Karte erst einmal alle Varianten geprüft werden müssten, wofür wir dann wohl ein eigenes Programm bräuchten.

Binäre Varianten Madeleine 2012-04-10 12:16:22
Coole Nummer, aber eigentlich logisch, Karopapier ist ja gewissermaßen binär: entweder geht's da lang, oder es geht da nicht lang.

Hätte nicht gedacht, dass meine olle Basis-Idee nochmal zu neuen Ehren kommt

Nachtrag ultimate 2012-04-09 13:40:07
Natürlich ist der vorgeschlagene Lösungsansatz nicht geeignet für vollständig zufällig generierte Karten (z.B. aus Kartengeneratoren)! Ich denke es würde trotzdem für eine Menge Abwechslung sorgen... (Für die Irrkarten ist es meiner Meinung nach sogar sehr gut geeignet...)

Zufallskarten - Die Lösung?! ultimate 2012-04-09 13:34:15
Vorwort

Ich glaube wir sind uns alle einig, dass Zufallskarten eine feine Sache wären, wären da nicht die Bedenken und Probleme die sie mit sich bringen. Ich habe mir daher (schon seit längerem) eine mögliche Lösung überlegt Zufallskarten zu realisieren, die ich nun endlich einmal beschreiben und zur Diskussion freigeben möchte. (Die Lösungsidee habe ich schon lange, ich hatte nur immer wenn ich mal dran gedacht habe nicht genug Zeit hier einen anständen Post zu verfassen...)

Ausgangsituation

Hauptbedenken seitens Didi ist das dynamische Ablegen neuer Karten in der Datenbank. Zur Erinnerung zitiere ich noch einmal:

also momentan isses so, dass die Karten als Datei vorliegen und über ein script in die DB geladen werden, wenn's neue gibt. Ganz einfach, weil an jedem Spiele eine Karten-ID hängt.

Für jede Einmal-Karte IDs zu vergeben ist auf dauer nicht haltbar.

Von daher wird es im neuen Design auch möglich sein, pro Spiele eine Kartenstruktur zu hinterlgen.
Das kann z. B. entweder eine leicht abgewandelete form einer existierenden Karte oder eben etwas von Zufi sein.

Aber: Tut eben noch nicht.

Wie sich das ganze mit einer evtl. geplanten bzw. als Beta schon existierenden Kartenbewertung vertragen könnte, ist mir bis heute noch schleierhaft....

Wenn einer ne Patent-Idee für diese komplexe Kartenverwaltung hat, bin ich sehr dankbar.

Will sagen: Zufi wirft ne neue Karte aus, jemand findet die toll und will sie speichern. Wo wird diese "gelagert"? Bewertet? Wie verhindert man einen Wildwuchs von vielen Karten, die unübersichtlich werden?


Die Idee

Ich habe mir gedacht, man könnte Zufallskarten quasi-statisch machen...
Ich denkt jetzt sicher: "statisch? Hat der sie nicht mehr alle? Wie soll denn etwas zufälliges statisch sein?" ... und das natürlich zu Recht, daher auch quasi-statisch!

Gingen wir davon aus, man in Karten veränderliche Bereiche (Straße <-> Gras) definieren könnte, so wäre man in der Lage trotz statischen Quellcodes Varianten einer Karte zu erstellen. Diese Varianten wären aber dennoch einfach zu verwalten und programmatisch zu behandeln, wie das funktioniert beschreibe ich im Anschluss...

Hintergrund
Schauen wir uns einmal die Art und Weise an, in der die Karten gespeichert werden. Das berühmteste Beispiel (wenn auch als Karte relativ unspektakulär ) ist wohl XOSOFOX

Momentan sind folgende Zeichen belegt:
X,Y,Z - Gras,Sand,Matsch
O - Fahrbahn
S - Startpunkt
F - Finish, Zieldurchfahrt
P - Parc ferme, in die linke obere Ecke kommen die Felder, um die Sieger abzustellen
1-9 - Checkpoints 1...9

Was also bleibt sind:
a-z (Kleinbuchstaben)
A-E,G-N,Q,R,T-W (Großbuchstaben)
0 (Null)
!"§$%&/()=?*+'#_-;,:. (Sonderzeichen)

Die Realisierung

Wenn wir nun eine definierte Zeichenmenge (z.B. die 8 Kleinbuchstaben a-h) im Karten-Quellcode wie Schalter betrachten, dann können wir diese durch einfache Parameter ein und ausschalten. Für jedes der 8 Zeichen gibt es die 2 Möglichkeiten "X" (unbefahrbar) und "O" (befahrbar), woraus sich 2^8 = 256 Varianten für die Karte ergeben. (Die muss man erst mal alle fahren )
Bei der Spielerstellung kann dann der Spielersteller entweder eine Zahl (in diesem Fall von 0 bis 255) eingeben oder diese zufällig vergeben lassen, woraus sich dann die Streckenvariante ergibt.

Anmerkung:
Es ist zu überlegen, ob man die Variante 0 (alle Schalter aus = nicht befahrbar) unterbindet, da diese sehr leicht zu nicht fahrbaren Karten führen kann...

Beispiel

Ich habe mal ein kleines Beispiel angelehnt an Jodys Irrkartengenerator gebastelt (der Einfachheit ohne CPs...)

Das Beispiel ist im Wiki zu finden

Ein bisschhen Technik

Ich habe weiter oben erwähnt, dass das einfach programmiertechnisch umsetzbar ist. Ich möchte daher hier kurz eine Idee äußern, wie Didi oder die Botschreiber die Sache behandeln könnten:

Betrachten wir die für definierte Zeichenmenge (hier die 8  Kleinbuchstaben a-h) eine Bitfolge mit genau so viel Bits, wie Zeichen definiert wurden, so kann man damit einfach die Schalterstellungen aller Zeichen definieren.
Bei der Spielerstellung wird nun einfach ein Zahlenwert von 0 bis 2^(Anzahl Zeichen) übergeben, woraus sich eindeutig die Variante der Karte ermitteln lässt. (Hier gilt auch wieder: evtl. Variante 0 unterbinden).

Die Überprüfung von Feldern auf Ihre Befahrbarkeit kann dann ganz einfach durchgeführt werden (ein bisschen Pseudo-Code):
variante; // Kartenvariante 0 bis 255
feld; // der Textwert des Kartenfeldes als Zeichen (X,Y,Z,O,S,F,P,1-9,a-h)
if(feld >= 97 && feld <= 104) // 97 = ASCII von 'a', 104 = ASCII von 'h'
feld = variante & 2^(feld-97) ? 'O' : 'X';
// feld-97 liefert einen Wert von 0 bis 8
// 2^(feld-97) liefert dann die Zweierpotenz
// die Potenz wir bitweise mit variante verrechnet
// wenn das Ergebnis != 0 ist, so ist es befahrbahr (Schalter ein), wenn nicht unbefahrbar (Schalter aus)
endif
// weiter wie bisher


Vorteile

- Es wird nicht jedesmal eine neue Karte in der DB abgelegt
- alle Varianten einer Karte haben den gleichen Quellcode und die gleiche ID
- Didi muss nur die Variante bei der Spielerstellung mit abspeichern (und bei Abruf des Spiels für die Bot-Schreiber bekannt machen, damit die sich ihre Variante errechnen können)
- Für die Bot-Schreiber ändert sich nicht viel
- Variierende Nachtkarten sind kein Problem mehr (hier sollte man die Variante natürlich nicht bekannt geben, sonst könne man sich ja gleich die Karte nachbasteln)

Ein bisschen weitergesponnen

Natürlich kann man das ganze beliebig mehr Varianten (z.B. weitere Buchstaben i-z) erweitern (dann wäre theoretisch bis zu 2^26 Varianten möglich)...
Außerdem könnte man das gleiche Prinzip auch für die Checkpoints anwenden. Dann gäbe es nicht mehr nur CPs an oder aus, sondern auch Abstufungen, welche aktiviert sind und welche nicht...

Schlusswort

Wie ich schon sagte, die Idee habe ich schon lange, jetzt bin ich endlich (in 3 Etappen) dazu gekommen das hier zusammenzuschreiben und nun sehr gespannt auf euer Feedback.

ultimate

Verstehe ich immer noch nicht! Jody 2009-04-29 09:37:12
Kann mir bitte mal jemand erklären, wie mein Vorschlag irgendetwas ausschließt? Für mich klingt die Behauptung wie "Nachrichten im Internet schließen Fernsehnachrichten aus." Und ich habe doch tatsächlich schon die gleichen Nachrichten auf beiden Medien gesehen.

Zustimm 2... ultimate 2009-04-21 22:14:06
zu Madeleine:
... ein Limit pro Spieler pro Tag an Zufallskartenrennen finde ich auch gut...

Zustimm... ultimate 2009-04-21 22:13:03
zu Madeleine:
... wenn man schon den Aufwand betreibt, dann sollten auch manuell erstellte Karten leichter einzubinden sein!

Madeleine 2009-04-21 15:20:28
Es schlösse zumindest manuell erstellte, temporäre Karten aus.

quabla 2009-04-21 14:12:26
Jody sagt: man koennte einen Teil der Karten platzsparend speichern.

quabla sagt: stimmt, aber das schliesst entweder anders erzeugt Karten aus, oder fuehrt zu verdoppeltem Programmier- bzw. Verwaltungsaufwand.

kürzer und (hoffentlich) unmissverständlich Jody 2009-04-21 11:14:27
Didi fragt: Zufi wirft ne neue Karte aus, jemand findet die toll und will sie speichern. Wo wird diese "gelagert"?
Jody antwortet: Nirgendwo! Alles was gespeichert wird sind der verwendete Generator und seine Parameter. Wer ein neues Rennen auf der gleichen Strecke starten will, kann die gleichen Parameter eingeben oder den Link "Neues Spiel auf dieser Strecke" nutzen.

Bewertet?
Wenn man den Generierungsparametern keine Wertung geben kann, bleibt immer noch die Häufigkeit der Streckennutzung, um eine Strecke zu bewerten.

Wie verhindert man einen Wildwuchs von vielen Karten, die unübersichtlich werden?
Die generierten Karten werde nicht in der Auswahl angezeigt. Man kann nur den Algorithmus und die Parameter wählen. Wer ein Rennen auf einer bestimmten generierten Karte haben will ... s.o.

Verstehe ich nicht! Jody 2009-04-21 11:01:47
Das Eine schließt das Andere doch nicht aus!
Sicher, die Datenbank muss verschiedene "Kartentypen" unterscheiden können - die "Klassischen", die Zufälligen, die Kurzzeitigen et cetera. Ich will ja auch nicht, dass mein Algorithmus der Einzige ist, der benutzt wird; ganz im Gegenteil bin ich eher für Abwechslung. Aber im Prinzip kann man jede Reihe pseudozufälliger Zahlen deterministisch machen, wenn es nicht kryptographisch sicher sein soll. Und dann kann man den Startwert eben zufällig oder fest wählen. Und dementsprechend sollten dann am Besten alle Zufallskartengeneratoren ausgelegt sein.

schoenme Idee, Jody, aber... quabla 2009-04-21 10:30:52
... das wuerde verhindern, dass man selbst erstellte karten mal eben fix mit einbinden und probespielen kann. IMO sollte sowas dann gleich mit den neuen features mit erledigt werden.

meine 0,02 US-$ Jody 2009-04-21 10:08:41
Ich hatte ja bereits letztes Jahr zumindest Madeleine und Didi gegenüber erwähnt, ich hätte eine Idee, wie man befahrbare Zufallskarten machen könnte, die zu fahren hoffentlich auch Spaß macht. Mit der Implementierung hatte ich auch angefangen, aber da der Umbau von Karopapier wohl doch komplizierter ist als gedacht , war mir der Feinschliff nicht ganz so wichtig. Aber jetzt, nachdem diese Diskussion wieder entbrannt ist, könnte ich mir die Zeit mal nehmen.

Jedenfalls habe ich im Hinblick auf das von Didi angesprochene Problem den Generator direkt so entworfen, dass er neben einer Hand voll Parametern, mit denen man Streckenlänge, Anzahl der Startplätze und Schwierigkeit bestimmen können soll, auch noch eine Zufallszahl benötigt, aus der er die Strecke erstellt. Gibt man ihm zweimal die gleichen Parameter, spuckt er zweimal die selbe Strecke aus. Somit ist das Speichern der Strecke überflüssig. Wenn jemand ein weiteres Rennen auf einer zuvor generierten Karte starten will, muss er einfach die "Zufallszahl" nicht dem Zufall überlassen, sondern aus einem anderen Spiel kopieren. Man kann es den Spielern auch leichter machen und einen Link "Neues Spiel auf dieser Karte" auf die Spielseite setzen.
(Natürlich sollte man bei Nachtrennen die Zufallszahl weder bestimmen noch einsehen können, solange das Rennen läuft. Ansonsten ist schummeln viel zu einfach!)

Damit sollten doch alle angesprochenen Probleme gelöst sein, oder? Wenn jemand eine Zufallskartenspamwelle startet ist die dadurch erzeugte Datenmenge relativ gering - unter Umständen sogar geringer als allein der dazugehörige Spielname. Wenn jemandem eine Karte gefällt, generiert er die Karte mit gleichen Parametern neu. Aus Häufigkeit und Zeit seit des letzten Spielstartes kann man direkt die Beliebtheit bestimmen - oder zusätzlich noch eine Nutzerwertung einführen (wie ultimate schon sagte).

So, ich fürchte jetzt muss ich den Generator auch wirklich fertig stellen, damit das hier nicht nur leere Worte sind.

No Spam! Madeleine 2009-04-21 08:06:13
Limit, um Karten-DDoS-Attacken zu verhindern:
Jeder Spieler darf maximal ein neu generierte Karte pro Stunde oder Tag zu einem Spiel verwenden? (Das setzt voraus, dass neu generierte Karten erst bei Verwendung in einem Spiel in der DB angespeichert werden. Alle "Versuche" verfallen, wenn sie nicht gleich benutzt werden.)

Lösungsansatz/Diskussion... ultimate 2009-04-20 21:58:20
Also das mit den Karten in die Datenbank laden ist vollkommen logisch. Sauberes referenzieren über eine eindeutige ID..

Ich wüsste allerdings nicht, was dagegen spricht,  alle Einmal-Karten in die Datenbank aufzunehmen und ihnen eine ID zu verpassen... (Natürlich erst, wenn damit ein Spiel gestartet wurde, nicht bei jeder Generierung...)

Grundsätzlich sollte der dafür benötigte Speicherplatz sich ja in Grenzen halten (oder ist es das, was dir Sorgen bereitet), denn schließlich werden sicher nicht alle Spiele auf immer neuen Zufallskarten erstellt, wenn man durch die Aufnahme in die DB die Möglichkeit zur Verfügung stellt die Karten wieder zu verwenden. Alles in allem sollte der Datenaufwand dafür noch wesentlich geringer sein, als die ganzen Züge, Bordfunknachrichten, Forumsbeiträge, Spieler, etc...

Als Kompromiss kann man dann natürlich immer noch anstreben Karten irgendwann bei nicht Verwendung wieder zu löschen um Speicherplatz freizugeben... und damit komme ich auch schon zum nächsten Punkt... Bewertung

Eine Bewertung kann man (wenn die Karte erstmal in der DB ist) ja ohne Probleme auf mehreren Wegen ermitteln:
1. Häufgigkeit der Verwendung
2. Letzte Verwendung
3. Rating durch Spieler (jeder Spieler darf jeder Karte eine Note geben)

Auf die Art und weise kann man dann auch ohne Probleme alte Karten, die unbeliebt sind, wieder per Script aus der DB entfernen...

Wenn man auf die Wiederverwendbarkeit verzichten möchte kann man natürlich die Karte auch einfach bei Spielende wieder löschen...

Also nochmal kruz um auf deine Fragen einzugehen:
- Wo wird diese "gelagert"?
--> In der DB, sofern der jenige ein Spiel damit erstellt
- Bewertet?
--> Einfach Relation (neue Tabelle) zwischen Spieler und Strecke plus Bewertung (ähnlich wie ein Zug die Verbindung zwischen Spieler und Rennen herstellt)
- Wie verhindert man einen Wildwuchs von vielen Karten, die unübersichtlich werden?
--> Man muss beim Spiel erstellen ja nicht alle Karten zur Auswahl bekommen, sondern nur die Standardkarten (deswegen am Besten auch extra ID-Bereich). So bleibt er überschaubar. Nur auf Wunsch kann man Zufallskarten auswählen, oder es gibt bei vorhandenen Rennen die Option "Rennen auf dieser Karte erstellen"

*schluck* Didi 2009-04-20 14:02:29
So lange is das schon her???

Uiuiuiui...

also momentan isses so, dass die Karten als Datei vorliegen und über ein script in die DB geladen werden, wenn's neue gibt. Ganz einfach, weil an jedem Spiele eine Karten-ID hängt.

Für jede Einmal-Karte IDs zu vergeben ist auf dauer nicht haltbar.

Von daher wird es im neuen Design auch möglich sein, pro Spiele eine Kartenstruktur zu hinterlgen.
Das kann z. B. entweder eine leicht abgewandelete form einer existierenden Karte oder eben etwas von Zufi sein.

Aber: Tut eben noch nicht.

Wie sich das ganze mit einer evtl. geplanten bzw. als Beta schon existierenden Kartenbewertung vertragen könnte, ist mir bis heute noch schleierhaft....

Wenn einer ne Patent-Idee für diese komplexe Kartenverwaltung hat, bin ich sehr dankbar.

Will sagen: Zufi wirft ne neue Karte aus, jemand findet die toll und will sie speichern. Wo wird diese "gelagert"? Bewertet? Wie verhindert man einen Wildwuchs von vielen Karten, die unübersichtlich werden?

:)idi

Abgesehen davon dass deine Karte natuerlich viel schicker aussieht ;-) quabla 2009-04-20 12:28:42
... hat Didi "damals" versprochen, dass, sobald er irgendwelche Aenderungen am Code, die er vorhatte, fertig waeren, es viele Aenderungen in der Kartenverwaltung und damit auch solche Zufallskarten geben koenne. Werde.

So alt... ultimate 2009-04-20 11:51:21
da habe ich leider nicht geschaut... Sorry
Die Fragen an Didi bleiben natürlich trotzdem offen...

| neue Message hinzufügen |
| Anfang | Vorherige | Nächste |

Brought to you by Didi

Letzter Satz im Chat:
hasi (21:27): Liga 4a um praezise zu sein. Glueckwunsch!