Hier könnte die Lösung vielleicht in einem Split von interner Id und äußerer Spiel-Id liegen. Wird ein anderes Spiel erkannt wird intern ein neues Spiel angelegt. Läd man dann wieder das alte Spiel müsste PBSpy wieder auf das vorherige wechseln.
Das Admins den gleichen Spielslot für unterschiedliche Spiele nutzen würde ich nicht einschränken wollen. Ich stand schon häufig vor der Situation wo eine Weiterverwendung am einfachsten war.
(Z.B. weil man sonst etliche Links austauschen muss und man PBSpy mit Einträgen vollspammt.)
Also die Liste sehe ich nicht als Problem, darin kann man ja Spiele einfach verstecken - auch vor Admins . Vielleicht koennte man auch Verlinkung ueber den Spiel-Namen machen, den als Unique einstellen. Dan muesste man um einen Link zu "uebernehmen" das alte Spiel umbenennen und ein neues mit dem alten Namen anlegen. Ansonsten braeuchte man letztlich ein vorgeschaltetes ListEntry -> Game Objekt....
Achtung Spoiler:
BTW: Lobby & Natneg sollte jetzt fuer Civ4 Colonization gehen. Ich habe die Server & hosts entsprechend angepasst:
https://github.com/Zulan/PRMasterSer...b/master/hosts
Achtung Spoiler:
Wie wäre es statt einer (Game-Id) als Schlüssel (Id, Subid) zu verwenden?
Dem Spielerobjekt und Log-Eintrag ist dann nicht mehr die Spielid sondern (Id, Subid) (oder nur eine Subid, wenn man das global unique macht) zugeordnet.
Angezeigt wird dann nur der Inhalt für die derzeit aktive Subid.
Ein Nachteil fällt mir da aber schon auf: Falls man das Spiel (innerhalb von Civ4) umbennennt kann das als neues Spiel interpretiert werden und man "verliert" das Log
Sehr schön. Leider kann ich das nicht ausprobieren, weil es mit meinem IP6-Kabelanschluss noch nie funktioniert hat. Ich könnte es mit einem Tunnel zu einer IP4-Maschine probieren. Muss nur mal gucken wie das nochmal ging
Super, die commiten Änderungen kann ich gleich bei einem Pokalspiel gebrauchen. Beim vierten Spiel schwirren noch mehr als zwei Spieler herum, weil aus versehen das Testspiel verbunden war. Da fehlt im Django-Interface eindeutig eine Suchfunktion für die manuelle Korrektur.
=======
Ein Witzbold hat sich bei PBSpy mittlerweile einige Accounts angelegt. Da die Erstellungsdaten sich über Monate erstrecken scheint er sich jedesmal bei Benutzung einen neuen Account anzulegen
Sorry, ich bin die Tage ziemlich beschaeftigt. Ich wuerde die Aenderungen gerne mal in Ruhe anschauen. Ich habe da etwas Sorgen, ob der Performance der Queries. Ich verstehe ehrlich gesagt auch immer noch nicht so ganz den Anwendungsfall verschiedene Spiele unter einem Spiel zu fuehren. Spiel mit allen referenzen Loeschen geht ja im /admin auch, oder? Also ich mein ein neues Game kostet ja nichts und laesst sich auch beliebig verstecken. Oder geht es um das Wiederherstellen von Aenderungen die durch zwischenzeitliche Fehkonfiguration entsanden sind?
Die Accounts ehen mir wie russische Spambots aus. Solange die keine Spiele aufmachen, irgendwie Email-Funktionen abusen oder sonst irgendwie tatsaechlich spammen sehe ich kein grosses Problem
Achtung Spoiler:
Einige Anwendungsfälle/Argumente?!:
• DarkLunaPhantom (civfanatics) hat die PB-Mod in einige andere Mods eingebaut und dafür beim Testen auch PBSpy genommen.
• Für ihr(e) Spiel(e) mit der K-Mod brauchen sie im Prinzip auch nur eine fixe PBSpy-Url und das Spiel wechselt recht oft, so weit ich das beobachten konnte.
• Auf einem lokalen Testserver verbinde ich mich gerne mit unterschiedlichen Spielen. Das geht schneller als jedesmal einen neuen Account anzulegen.
• Ich nutze im FF das Vimperator-Plugin. Damit kann ich schnell, egal welche Unterseite ich in Pbspy gerade offen habe, per Strg+X/Strg+I zur nächsten ID springen. (Gleiche Funktion wie bei Vim, angewendet auf die Url) Daher liegt mir viel daran, dass ich z.B. im Pokal 8 IDs nebeneinander habe.
• Man versaut sich manchmal das Log mit dem falschen Spielstand (ok, hast du gerade geschrieben) und das Löschen von Logeinträgen ist umständlich und für externe unmöglich.
• Man kann den Fehler umgehen indem man manuell die überzähligen Playerobjekt löscht. Es gibt aber keinen Weg diese in der Liste (>800 Einträge) wiederzufinden.
• (betrifft andere Änderung/anderes Problem) Ich kann fertige Spiel zwar unsichtbar schalten, aber ich bin ja immer bei PBSpy angemeldet und sehe sie damit immer. Die Liste auf der Startseite passt jetzt schon nicht mehr auf eine Seite. Ok, ich könnte mir die Besitzer-Rechte am Spiel entziehen, aber das ist auch nicht sehr elegant.
Das gepushte Update enthielt eine Änderung im Template und lagert die fertigen Spiele nach rechts in eine zweite Tabelle.
Performance: Ja, das kann ich überhaupt nicht einschätzen, weil ich die Technikdetails hinter Django nicht kenne. Ich würde darauf tippen, dass es nicht viel ausmacht, weil entweder der .all()-Filter bezüglich des Spiels dominiert oder
intern die Daten schon pro Spiel gesplittet werden und dann der .filter(ingame_stack=0) auf einer kleinen Menge operiert.
Von meiner Seite aus eilt die Sache aber nicht (mehr). Wäre derzeit höchsten für DarkLunaPhantom nützlich weil jetzt
z.B. in http://civ.zulan.net/pbspy/game/17/ die ganzen unclaimed-Spieler überzählig sind und nur Phantomeinträge auf PBSpy sind. Die bekommt er ohne das Update nicht mehr weg, denn ein neuer Eintrag für ein fertiges Spiel verliert das Log.
==============================
Andere Sache: Wegen der Pokalspiele habe ich jetzt noch eine Option eingebaut mit der man den Magellanbonus per PBSpy abschalten kann (und auch nachträglich dem Besitzer des Bonus wieder abzieht). Ist aber noch nicht gepusht.
Ich habe mal versucht irgendwas rauszufinden, aber getNumScenarios ist halt in der pb.exe. Was ich gefunden habe, er macht irgendwas mit den strings "Mods/" und "/PublicMaps/". Fehlt da vielleicht ein ordner? Oder irgend ein case-sensitivity problem? Eventuell mal mit strace -e trace=file schauen ob da was verdaechtiges ist.
Bezueglich des "Game stacking" bin ich leider noch nicht dazu gekommen irgendwas zu tun. Ich denke zwar, dass man die meisten Anwendungsfaelle mit einem "GameShortIndexProxyWasauchimer" und einer on-demand Game Erzeugung besser abdecken koennte, aber habe auch auf absehbare Zeit keine Zeit das umzusetzen. Ich wuerde drum wohl deine Aenderungen mergen und hoffen, dass das uns nicht auf die Fuesse faellt.
Achtung Spoiler:
Habe mal den master- und unstable-Branch im Repo aktualisiert.
• Rechtschreibung ausgebessert (Ist mir nicht aufgefallen, weil bei mir Englisch aktiviert ist. Ist aber gar nicht so einfach die gewählte Sprache auf DE zu setzen. Glaube da muss ich erst ein Addon im FF installieren ^^).
• Ein paar weitere Strings eingedeutscht.
Andere Sache:
Ich habe hier 250-Spielstände des PB73 gesichert und könnte einer Nation volle Einsicht auf die Karte geben. Möchte/Kann jemand ein Skript schreiben, dass sich automatisch einloggt, viele Screenshots (ohne Interface [Alt+I] und mit Satelliten-Ansicht [Alt+F]) macht und diese dann zu einem großen Bild zusammensetzt?
Mir fehlt noch eine Idee wie ich garantieren kann, dass das Stückeln der Screenshots funktioniert
"Erweitere deinen Horizont, bevor es andere tun!"
~Ich
--
Pitboss-Serverbetrieb DIE bald weltbeste Anleitung zu Pitboss. (Mitmachen erwünscht!)
Civ 4 auf Linux
Civ4 Pitboss auf Linux
Civstats auf Linux
"Elektronen sind [...] stehende Materiewellen [...], das is' so ähnlich wie 'n elektrischer Weidezaun, nur ohne Pfosten und ohne Draht."
Vince Ebert: Urknaller - Physik ist sexy