Seite 1 von 1
Probleme bei Threads, Priorität zu hoch?!
Verfasst: Sonntag 5. Juni 2005, 14:17
von DasPinsch
Hallo,
ich habe eine Art Brettspielin Python mit Hilfe von Pygame geschrieben und habe folgendes Problem:
Die KI der Bots wird in einem Thread berechnet. Wenn nun nur noch Computergesteuerte Spieler da sind, stockt die Hintergrundmusik, die mit Hilfe des pygame.mixer.music Moduls ausgegeben wird. Was kann ich dagegen tun?
Verfasst: Sonntag 5. Juni 2005, 14:19
von DasPinsch
Des Weiteren habe ich das Problem, dass die Netzwerkthreads zu viel Zeit in Anspruch nehmen.. Das Spiel beim Host ruckelt daher...
Verfasst: Montag 6. Juni 2005, 13:22
von DasPinsch
*push*
Kommt Kinners, muss das Informatikprojekt Donnerstag abgeben
MfG
Verfasst: Montag 6. Juni 2005, 13:47
von Leonidas
Naja, musst du alles in echten Threads haben? Vielleicht kannst du auch lightweight Threads wie Greenlets oder so verwenden.. das ist nur mal so 'ne Idee.
Verfasst: Montag 6. Juni 2005, 22:18
von BlackJack
Ob Code in Threads viel Rechenzeit verbraucht oder in Greenlets, macht eigentlich keinen Unterschied.
Solange es kein Echzeit-Spiel ist, frage ich mich auch nach dem Sinn von Threads? Kann ein Gegner denn schon seinen nächsten Zug planen, bevor der des aktuellen Spielers getätigt wurde?
Verfasst: Dienstag 7. Juni 2005, 13:14
von DasPinsch
Es ist relativ Schwierig die KI in einzelne Schritte zu zerlegen. Das würde also bedeuten, dass das Spiel bei einem Zug des Gegners warten muss bis dieser fertig ist und sozusagen "hängt". Daher dachte ich die KI in einen eigenen Thread zu packen, so dass das eigentliche Spiel wähhrend der KI-Berechnung einfach weiterläuft.
Bei dem Netzwerkthreads ist es ja sogar eigentlich unumgänglich Threads zu benutzen.
Verfasst: Dienstag 7. Juni 2005, 13:46
von Leonidas
DasPinsch hat geschrieben:Bei dem Netzwerkthreads ist es ja sogar eigentlich unumgänglich Threads zu benutzen.
Nein, nicht unbedingt. So kannst du mit
asyncore ohne Threads arbeiten.
Verfasst: Dienstag 7. Juni 2005, 19:04
von DasPinsch
Ok.
Allerdings habe ich es nun bereits in Threads gemacht und werde es wohl auch nicht mehr umschreiben... Gibt es da keine Möglichkeiten? Kann doch nicht sein, dass das mit Python nich ginge...
Verfasst: Mittwoch 8. Juni 2005, 00:22
von BlackJack
DasPinsch hat geschrieben:Es ist relativ Schwierig die KI in einzelne Schritte zu zerlegen. Das würde also bedeuten, dass das Spiel bei einem Zug des Gegners warten muss bis dieser fertig ist und sozusagen "hängt". Daher dachte ich die KI in einen eigenen Thread zu packen, so dass das eigentliche Spiel wähhrend der KI-Berechnung einfach weiterläuft.
Bei dem Netzwerkthreads ist es ja sogar eigentlich unumgänglich Threads zu benutzen.
Also kann eine KI schon ihren nächsten Zug planen ohne alle anderen Züge zu kennen?
Wie sieht's aus, wenn Du den KI's an ein paar Stellen eine kleine Ruhepause per `pygame.time.delay()` verpasst. Vielleicht liegt das Problem auch einfach nur daran, das der "Bildschirm" viel häufiger neu gezeichnet werden muss wenn nur noch die KI's spielen, weil die ja ohne Unterbrechung neue Züge produzieren.