Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

21

07.10.2008, 11:07

Zitat von »"xardias"«


PS: Warum verliert man manchmal obwohl der Gegner an der Reihe ist? Das ist ein ganz dummer bug :oops: Ich habe die Gewinnbedingungen ausgewertet bevor ich den aktuellen Spieler gewechselt habe...
schön zu sehen, dass es nicht nur anfängern passiert ;)

xardias

Community-Fossil

  • »xardias« ist der Autor dieses Themas

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

22

07.10.2008, 15:25

Fehler passieren jedem mal ;) Dafür gibt es ja eigentlich Unittesting, doch für ein Spassprojekt ist mir das zu anstrengend *g*

23

07.10.2008, 16:08

dafür gibts uns ja :)

hanse

Alter Hase

Beiträge: 472

Wohnort: Wien

  • Private Nachricht senden

24

07.10.2008, 16:14

Apropos Anfängerfehler ich hab grad so was gemacht:

C-/C++-Quelltext

1
2
3
if(blub==blö)
  int a=4;
  foo(a);

und wundere mich ewig wieso er a in der dritten Zeile nicht kennt...

xardias

Community-Fossil

  • »xardias« ist der Autor dieses Themas

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

25

07.10.2008, 20:00

Sooo. Also der Fehler im Regelwerk ist behoben. Wenn jemand keinen Zug mehr machen kann muss er aussetzen.
Des weiteren habe ich das Datenmodel mittels des Read-Write-Lock Pattern gesichert (Ich hasse Threadsynchronisation). Ich hoffe damit habe ich die berichteten Fehler behoben. Ich habe einige Runden selbst gespielt und keine weiteren Fehler feststellen können.
Als nächstes wäre noch ein bischen Code refactoring angesagt.

Des weiteren wollte ich das ganze zu einem Framework umfunktionieren um Brettspiele derart in AJAX zu implementieren. Vor allem das Datenmodel ist wunderbar wiederverwendbar (Man kann ja auch verschiedene Spiele auf den gleichen Spielbrettern spielen), und da sämtliche Spiellogik in eine Klasse gekapselt ist diese gut austauschbar.

Mit ein wenig mehr Änderungen ließe sich auch ein Client sowie Model für Kartenspiele programmieren. Aber das steht erstmal hinten an ;).

Wie auch immer, wenn euch das Spiel noch nicht zum Hals raushängt wäre es schön, wenn ihr nochmal ein Blick darauf werfen könntet Zwecks kleiner Fehler o.Ä.
Grüße,
Dennis

26

07.10.2008, 21:18

Zitat von »"xardias"«

Ich hoffe damit habe ich die berichteten Fehler behoben.



Zitat von »"Gayax"«


Das zweite ist, klickt mal wie ein verrückter merhmals auf ein Feld wo ihr gerade einen Stein hinsetzen wollt (und auch ein möglicher Zug ist). Die KI wird wie gewohnt auf euren Zug antworten, aber wenn ihr schön fleißig weiterklickt...ihr werdets schon sehen...



Oder um genau zusagen was passiert wenn man die ganze Zeit auf ein eigentlich korrektes Feld klickt (und immer weiter klickt, auch wenn man nach dem Zug des Gegners wieder drann ist) ist, dass die gesamten Spielsteine sich schwarz färben und man entweder keinen Zug mehr durchführen kann oder andere lustige Fehlerchen auftreten (verschwinden der Steine die man setzt ect.)....

xardias

Community-Fossil

  • »xardias« ist der Autor dieses Themas

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

27

07.10.2008, 21:41

Argh... User sind echt Erbamungslos :D
Ne quatsch, Danke für den Hinweis.. da muss ich im Javascript Teil wohl noch ein paar zusätzliche Abfragen machen damit auch wirklich nur ein "make move" request gesendet wird.. Und der Server muss da wohl auch nochmal mit ein paar Mutexes gegen sowas gesichert werden..

Edit:
Serverseitig habe ich das Problem gelöst. Das spiel geht also nicht mehr kaputt wenn man zu oft auf ein Feld klickt. Bloß der Javascript Teil macht dann ein paar Darstellungsfehler (Blinkende Felder). Aber nur so lange man klickt. Danach sollte alles weiterhin funktionieren.

28

08.10.2008, 20:10

Wirf nochmal nen Blick in die Gewinnbedingungen :)


(Link)


(Link)

xardias

Community-Fossil

  • »xardias« ist der Autor dieses Themas

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

29

08.10.2008, 21:52

Danke nochmals Genion!
Das sollte eigentlich sofort als Spielende erkannt werden.. Serverseitig sollte das funktionieren. Aber Clientseitig scheint das nicht erkannt zu werden..

Ich werde wohl die Server-Client-Kommunikation komplett überarbieten.
Momentan frage ich im Client jede Sekunde nach neuen Daten, und dieser bekommt bei neuen Daten einfach den aktuellen Stand. Das macht eventuell ziemliche Synchronisierungsprobleme wenn z.b. 2 Züge von der KI in einem Update gemacht werden. Daher werde ich die Spielfelder der letzten N Züge in einem Buffer zwischenspeichern und getrennt an den Client senden. Darin steht dann auch eine Zugnummer damit die Züge in der richtigen Reihenfolge verarbeitet werden. Dann kann der Client diese auch getrennt animieren was etwas übersichtlicher aussieht.

Dann wird es auch ein "Fehler berichten" Link geben der auf dem Server ein Replay abspeichert. Das sollte die Fehlersuche in Zukunft erleichtern.. Es bleibt ja nicht nur bei reversi.

Asynchron ist manchmal echt unlustig ;)

xardias

Community-Fossil

  • »xardias« ist der Autor dieses Themas

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

30

09.10.2008, 17:32

Neue URL:
http://dev-area.net:8095/

Es ist einiges an Verwaltungscode dazu gekommen um mehrere Spiele zu unterstützen, diese zu Konfigurieren etc. Am spiel selbst hat sich nichts getan.

Ich überlege gerade noch wie ich die Regelauswahl gestalten soll.. So ne Drop Down box ist irgendwie.. un-web-2.0 ;). Außerdem wollte ich für die Regelbücher jeweils noch Beschreibungen einfügen das ist damit auch recht schwierig. Da werde ich wohl noch ein paar Javascript Spielereinen einbauen ;).

(Es hat keinen besonderen Grund, dass Reversi und Othello in der Liste auftauchen.. beides das selbe Spiel, jedoch mit unterschiedlichen Beschreibungen zum testen).

Werbeanzeige