Inoffizielle Völker Strategien der Hoax Strategien der Aqua Strategien der Pillar Strategien der Mimix Strategien der Flit Strategien der Khind Strategien der Terrah Strategien der Vulca Home
 Home  •  Blue Moon Fans Foren-Übersicht  •  Blue Moon Ligen  •  Download  •  Album  •  Suchen  •  Letzte Themen
Profil  •  Lesezeichen  •  Neue Beiträge  •  Einloggen, um private Nachrichten zu lesen  •  Login  •  Registrieren
Nächstes Thema anzeigen
Vorheriges Thema anzeigen

Neues Thema eröffnenNeue Antwort erstellen Vorheriges Thema anzeigenDieses Thema verschickenZeige Benutzer, die dieses Thema gesehen habenDieses Thema als Datei sichernPrintable versionEinloggen, um private Nachrichten zu lesenNächstes Thema anzeigen
Autor Nachricht
Ruwenzori
Gott der eindeutigen Zweideutigkeit
Gott der eindeutigen Zweideutigkeit


Alter: 59
Anmeldungsdatum: 23.11.2004
Beiträge: 3642
Wohnort: Niederrhein
germany.gif
BeitragVerfasst: Mi 24 Aug, 2005 09:06  Titel:  Umsetzung einer Game engine Antworten mit ZitatNach untenNach oben

Ich löse das Thema mal aus dem anderen Thread heraus. Es hat dort nichts zu suchen und ist wichtig genug, einen eigenen Ordner zu bekommen.

VanKurt hat folgendes geschrieben:
Zusammen mit einem Freund habe ich schonmal eine PC Umsetzung gebastelt, die allerdings nbie fertig wurde...das Problem war die ganzen Sonderfunktionen auf ein übersichtliches, flexibles System zu bringen, dass einen korrekten (und ist ganz schön kompliziert!) Spielfluss garantiert.

[...]

BTW: Was wäre denn ein vernünftiges System um die Sonderregeln zu implementieren? Das bereitet mir immernoch Kopfzerbrechen Wink


KivasFajo hat folgendes geschrieben:
@VanKurt: Du hast eine wirklich wichtige Frage gestellt, denn auch ich habe schon länger die Vermutung, dass der Ansatz von Themi - alle Karten mehr oder weniger hart codiert zu implementieren - nicht gerade der beste Ansatz war.
Um die dynamischen Aspekte von Blue Moon (z.B. die Wechselwirkung von SFs) in den Griff zu bekommen, müsste man den Ablauf eines Spielzuges präziser definieren als im Regelheft und dabei auch alle Zeitpunkte und Arten von SF-Wirkung feststellen. Daraus müsste man dann eine abstrahierte Definition einer Karte ableiten.
Aus meiner Sicht ist eine PC-Umsetzung nur dann machbar, wenn man mit einer Engine Kartendefinitionen auswertet.

_________________
Gourmet-Tipp: Spinat schmeckt am besten, wenn man ihn kurz vor dem Verzehr durch ein saftiges Steak ersetzt!

Löwe Geschlecht:Männlich Drache OfflinePersönliche Galerie von RuwenzoriBenutzer-Profile anzeigenPrivate Nachricht sendenE-Mail senden
Ruwenzori
Gott der eindeutigen Zweideutigkeit
Gott der eindeutigen Zweideutigkeit


Alter: 59
Anmeldungsdatum: 23.11.2004
Beiträge: 3642
Wohnort: Niederrhein
germany.gif
BeitragVerfasst: Mi 24 Aug, 2005 09:28  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

Meine Vorstellung dazu wäre gewesen, ein transientes Control-Objekt zu definieren, das jede Menge IsXxxxxx Booleans hat, die vom Spiel je nach Spielzustand verwaltet werden - oder noch besser, jeweils gemäß dem aktuellen Spielzustand kalkuliert werden. Dazu noch ein paar Properties, die den aktuellen Spielzustand beschreiben. Dann müssen in jeder Phase des KI-Zuges wie auch des menschlichen Spielers (zur Prüfung auf Zulässigkeit seiner Handlungen) jede Menge Prüfungen anhand dieser Zustandsbeschreiber ablaufen. Eine Codierung auf Kartenebene kann ich mir nicht als zielführend vorstellen. Da muss ein Abstraktionslayer draufgesetzt werden.

Dieses Control Objekt kann dann auch fröhlich herumgereicht werden, beispielsweise an die KI-Plugins, die man ans Spiel andocken können soll (den Ansatz von Themi fand ich genial), diese verändern ganz nach ihrem Gusto die definierten Schnittstellen-Props und geben es zurück.

also grobes Beispiel:
Property FightElement As StringList(,F,E) // Fire, Earth. Wird beim ersten "Stärke ansagen" gesetzt
Property MyStrength As Integer
Property YourStrength As Integer
Property MyNumberOfStorms As Integer[Calculated]
Property YourNumberOfStorms As Integer[Calculated]
Property MyLaughingGasIsActive As Boolean // Lachgas doch als Karte, weil es spez. Bedeutung als Einzelkarte hat
Property YourLaughingGasIsActive As Boolean
Property MySupportForbidden As Boolean
Property YourSupportForbidden As Boolean
Property MySupportIgnored As Boolean
Property YourSupportIgnored As Boolean
Property MyHandcards As CollectionOfObjects
Property MyHandcardNumber As Integer[Calculated]
usw. usf.

Das Objektmodell dafür ist vorhersehbar recht komplex, auch das Phasenmodell des Spielablaufs, aber ganz sicher lösbar.

Ich halte übrigens nichts von dem Ansatz, erstmal draufloszuprogrammieren und dann zu sehen, wie man die Abläufe hinbekommt ... Erst muss das Objektmodell und die Interaktionen des Spiels komplett theoretisch stehen, dann gehts ans Codieren.

_________________
Gourmet-Tipp: Spinat schmeckt am besten, wenn man ihn kurz vor dem Verzehr durch ein saftiges Steak ersetzt!

Löwe Geschlecht:Männlich Drache OfflinePersönliche Galerie von RuwenzoriBenutzer-Profile anzeigenPrivate Nachricht sendenE-Mail senden
ErzEngel
Gott der Kreativität
Gott der Kreativität


Alter: 44
Anmeldungsdatum: 21.11.2004
Beiträge: 3818
Wohnort: Nähe Altötting
micronesia.gif
BeitragVerfasst: Mi 24 Aug, 2005 11:13  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

Na dann weiß ich ja schon einen Urlauber, der ca. 3,5 Wochen Zeit hat, sich dieses Objektmodell mal durchzuplanen. Smile

_________________
Yesterday upon the stair
I met a man who wasn't there
He wasn't there again today
I wish that man would go away
__________________________________
"Bildung bedeutet nicht einen Eimer zu füllen, sondern ein Feuer zu entfachen."

Fische Geschlecht:Männlich Affe VerstecktPersönliche Galerie von ErzEngelBenutzer-Profile anzeigenPrivate Nachricht sendenE-Mail sendenWebsite dieses Benutzers besuchenICQ-Nummer
CaptNeo
Blue Moon Master
Blue Moon Master



Anmeldungsdatum: 25.08.2005
Beiträge: 235
Wohnort: Aachen
germany.gif
BeitragVerfasst: So 28 Aug, 2005 17:24  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

Hallo,
nachdem VanKurt und ich jetzt die Erfahrung mit dem ersten Umsetzungsversuch haben, würde ich mich für eine dynamische Stack-Architektur aussprechen.
D.h. am Anfang jeder Runde wird ein Stack mit je einem "Layer" pro Speilphase angelegt. Jedes Layer besitzt ähnlich wie von Ruwenzori skizziert mehrere Attribute, die die erlaubten Zugmöglichkeiten speichern.
Die Layer sind zu Spielbeginn mit Standard-Werten initialisiert. z.B.:

Stack:
-->Top
Layer(Zugbeginn)
Layer(Aktionen)
Layer(Rückzug)
...
Layer(Nachziehen)
Layer(Zugende)
-->EOS

Das Element Layer(Aktionen) enthält z.B. Flags, die anzeigen, dass eine Anführeraktion, ein Einfluss oder eine Drachenkarte gespielt werden darf, oder eine Karte mit Abwurfsymbol getauscht werden kann.

Wird jetzt zum Beispiel eine Anführeraktion "Gedankensturm" gespielt, werden alle diese Flags auf False gesetzt, da eine dieser Aktionen durchgeführt wurde und im Layer(Unterstützung) das Attribut für die Anzahl der spielbaren Karten auf "Infinite" gesetzt.

Ähnlich kann auch bei einer Karte, die permanentere Wirkungen hat (z.B. Unterstützungen) das aktuelle Kampf-Template so geändert werden, dass direkt zu Rundenbeginn die richtigen Standard-Optionen gesetzt werden.

Wird eine aktive Karte mit permanenten Effekten abgeworfen, muss bei dieser Implementierung jedoch dieser Regelstack komplett neu berechnet werden (sollte aber nicht zu aufwändig sein), indem ein Algorithmus die verbliebenen aktiven Karten alle der Reihe nach erneut auf ein Standard-Layer-Set anwendet.

Dieses Layermodell erlaubt auch das Einfügen von irregulären "Spielphasen" wie "bis Zugende xyz tun", indem ein entsprechendes Layer vor das Layer(Zugende) eingefügt wird.

Ver- und Gebote bzgl. bestimmten (gerade-/ungerade, Symbole, Sonderfunktionen etc.) Karten kann man etweder flexibel implementieren, indem man für jeden Spieler ein abstraktes Array mit diesen Klassen anlegt und in jeder Karte die Zugehörigkeit speichert, oder mit einem 300bit großen Boolen-Array Hard-coden. HIer weiß ich nicht, was effektiv aufwendiger ist. Falls noch einmal neue Karten herauskommen sollten, dann ist der erste Ansatz flexibeler.

_________________
"Greedy people! Post-industrial barbarians! You can't accomplish anything in this wretched century. Nobody here listens." - ST:VOY(150)

 Geschlecht:Männlich  OfflinePersönliche Galerie von CaptNeoBenutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
CaptNeo
Blue Moon Master
Blue Moon Master



Anmeldungsdatum: 25.08.2005
Beiträge: 235
Wohnort: Aachen
germany.gif
BeitragVerfasst: Mo 05 Sep, 2005 10:58  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

Hallo nochmal,
habe ich am WE krankheitsbedingt (also auf die Couch gefesselt) in Ruhe mit den Sonderfunktionen von Blue Moon auseinandergesetzt.
Inzwischen glaube ich, "Grund" in die Sache bringen zu können. Es scheint klar definierbare Typen von Sonderfunktionen zu geben:
- Modifikatoren (Die Werte von Karten werden verändert)
- Ignorationen (Katen oder deren Attribute werden temporär ausgeblendet)
- Konditionen (Ausspielbedingungen bei Mutanten und Tutu)
- Handlungen (Ich darf, Du musst)
- Noch weitere (können aber je nach Abstraktion und Implementation zu den ersteren zählen)
Die Implementation dieser flexiblen Regeln scheint mir ein klarer Fall von Action-Listener-Modell zu sein (auch wenn ich sowas prinzipiell nicht so gut leiden kann/wenig Erfahrung habe).
Außerdem habe ich jetzt eine rund zweiseitige Definition den von mir angedachten Layer-Modells. Mal schauen was draus wird...

_________________
"Greedy people! Post-industrial barbarians! You can't accomplish anything in this wretched century. Nobody here listens." - ST:VOY(150)

 Geschlecht:Männlich  OfflinePersönliche Galerie von CaptNeoBenutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
Ruwenzori
Gott der eindeutigen Zweideutigkeit
Gott der eindeutigen Zweideutigkeit


Alter: 59
Anmeldungsdatum: 23.11.2004
Beiträge: 3642
Wohnort: Niederrhein
germany.gif
BeitragVerfasst: Do 22 Sep, 2005 23:06  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

Klingt gut.

Wie gesagt, wenn Hilfe benötigt wird (z.B. beim Gegenlesen des Modells oder so), Bescheid sagen. Ich helfe gern mit, wenns Sinn macht.

_________________
Gourmet-Tipp: Spinat schmeckt am besten, wenn man ihn kurz vor dem Verzehr durch ein saftiges Steak ersetzt!

Löwe Geschlecht:Männlich Drache OfflinePersönliche Galerie von RuwenzoriBenutzer-Profile anzeigenPrivate Nachricht sendenE-Mail senden
CaptNeo
Blue Moon Master
Blue Moon Master



Anmeldungsdatum: 25.08.2005
Beiträge: 235
Wohnort: Aachen
germany.gif
BeitragVerfasst: Fr 23 Sep, 2005 16:11  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

@ Ruwenzori
Hast du C++-Erfahrung? Ich muss die Tage mit VanKurt sowieso per Mail verkehren. Wir haben die Visual Studio 2005 Beta 2 als IDE gewählt. Wir könnten noch eine helfende Hand bei der Multiplayer-Umsetzung benötigen.

_________________
"Greedy people! Post-industrial barbarians! You can't accomplish anything in this wretched century. Nobody here listens." - ST:VOY(150)

 Geschlecht:Männlich  OfflinePersönliche Galerie von CaptNeoBenutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
Ruwenzori
Gott der eindeutigen Zweideutigkeit
Gott der eindeutigen Zweideutigkeit


Alter: 59
Anmeldungsdatum: 23.11.2004
Beiträge: 3642
Wohnort: Niederrhein
germany.gif
BeitragVerfasst: Fr 23 Sep, 2005 20:54  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

CaptNeo hat folgendes geschrieben:
@ Ruwenzori
Hast du C++-Erfahrung?

Nein, leider nicht.


Löwe Geschlecht:Männlich Drache OfflinePersönliche Galerie von RuwenzoriBenutzer-Profile anzeigenPrivate Nachricht sendenE-Mail senden
Beiträge der letzten Zeit anzeigen:      
Neues Thema eröffnenNeue Antwort erstellen Vorheriges Thema anzeigenDieses Thema verschickenZeige Benutzer, die dieses Thema gesehen habenDieses Thema als Datei sichernPrintable versionEinloggen, um private Nachrichten zu lesenNächstes Thema anzeigen

Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen


Forensicherheit

216849 Angriffe abgewehrt

Alle Zeiten sind GMT + 1 Stunde
Powered by phpBB2 Plus, Artikelverzeichnis and Webkatalog based on phpBB © 2001/6 phpBB Group :: FI Theme :: Mods und Credits