AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi [Spieleprogrammierung] Spielschleife
Thema durchsuchen
Ansicht
Themen-Optionen

[Spieleprogrammierung] Spielschleife

Ein Thema von chaoslion · begonnen am 15. Mai 2006 · letzter Beitrag vom 16. Mai 2006
Antwort Antwort
chaoslion

Registriert seit: 1. Mär 2006
52 Beiträge
 
#1

[Spieleprogrammierung] Spielschleife

  Alt 15. Mai 2006, 19:46
Hallo

Ich hab mal eine Frage bzgl. Spieleprogrammierung, speziell zur Spielschleife.
Also ich hab einen Timer der zum abfragen der Tasten und zum zeichnen der
Objekte dient. Nun möchte ich aber irgendwie ein Eventsystem auf die Beine stellen.
Es soll also zb. wenn ich die Maustaste drücke, ein Event ausgelöst werden,
das dann ein Schusssound abspielt. Zweiten wollte ich gerne wissen,
ob es sinnvoll ist, 2 Schleifen laufen zu lassen, eine Spielschleife und
eine welche die KI steuert??
  Mit Zitat antworten Zitat
EDatabaseError

Registriert seit: 11. Mai 2005
Ort: Göppingen
1.238 Beiträge
 
Delphi 2007 Professional
 
#2

Re: [Spieleprogrammierung] Spielschleife

  Alt 15. Mai 2006, 20:07
Zitat von chaoslion:
Hallo

Ich hab mal eine Frage bzgl. Spieleprogrammierung, speziell zur Spielschleife.
Also ich hab einen Timer der zum abfragen der Tasten und zum zeichnen der
Objekte dient. Nun möchte ich aber irgendwie ein Eventsystem auf die Beine stellen.
Es soll also zb. wenn ich die Maustaste drücke, ein Event ausgelöst werden,
das dann ein Schusssound abspielt. Zweiten wollte ich gerne wissen,
ob es sinnvoll ist, 2 Schleifen laufen zu lassen, eine Spielschleife und
eine welche die KI steuert??
Wiso fragst du die Tasten nicht unter OnKeyDown / OnKeyPress ab Für die Maus OnMouseDown

Sound ist genug im Board
Tobias
It's not a bug, it's a feature.
  Mit Zitat antworten Zitat
Phobeus

Registriert seit: 14. Sep 2003
Ort: Tespe
65 Beiträge
 
Delphi 7 Professional
 
#3

Re: [Spieleprogrammierung] Spielschleife

  Alt 16. Mai 2006, 21:34
Was wirklich sinnvoll ist, hängt ein wenig davon ab, was Du machen willst. Aber wie EDatabaseError schon sagt, würde ich auch die Events der VCL dafür nehmen. In jedem Fall sollte die Berechnung von Tätigkeiten zeitgesteuert (Time based) erfolgen, damit es sich halt überall wirklich gleich schnell bewegt. Insbesondere dann, wenn Du im Rahmen eines Spieles sowieso versucht soviele Bilder über den Jordan zu heizen, wie die GPU her gibt. Die Bewegung und Berechung muss also zeitgesteuert laufen und schön wäre es halt auch, wenn das Bild dazu auch noch paßt. Events wie Tastatur, Netzwerk etc. sollten immer sofort verarbeitet werden und nicht zeitgesteuert. Berechungen (z.B. die KI) in Threads auszulagern kann sinnvoll sein, wird es in den meisten Fällen jedoch nicht sein. Dies lohnt sich nur dann wirklich, wenn man Ressourcen parallel nutzen möchte. Insbesondere bei Spielen ist dies eher nicht der Fall, da irgend etwas in der Loop gerade verarbeitet wird. Bilder oder Schritte zu Berechnen lohnt sich nur dann, wenn sie auch gebraucht werden. Läuft dein KI-Thread die ganze Zeit ab und die Bilder kommen nicht nach, ist dies genauso blödsinnig wie anderes herum. Mehr Sinn macht es daher, wenn dies beides hintereinander geschieht und die Aktionen zeitlich gesteuert sind. 200ms später muss nicht nur 200ms späteres Bild ergeben, sondern auch 200ms "weitergedacht" haben.
Florian Sievert
http://www.delphigl.com/
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz