| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Mar 2006
Beiträge: 1.573
| Strucktur und Aufbau eines Spiels
Also ich hab mir mal so Gedanken gemacht darüber, wie man am besten ein Sidescrolling-Game aufbaut. Das wichtigste ist ja, dass es einfach zu verwalten und zu verändern ist also dacht ich mir als Oberstes steht eine "World" In der Spielt sich alles ab und dort wird alles "angehängt" ähnlich der DisplayList, so das per render() o.ä. das Spiel eben gezeichnet wird. DIe Probleme bei einer klaren Struktur seh ich aber wie ich z.B. mehrere spielbare und unspielbare Figuren miteinander verknüpfen soll, denn ich kann ja schlecht bei einem Angriff oder einer anderen Aktion, bei der andere Figuren beeinflust werden könnten ein Array mit allen Figuren der "World" durchlaufen lassen. WIe handhabt man sowas am besten? Sollte die Klasse der Waffe als Beispiel das ganze testen oder die World Klasse oder wie? Ich finde irgendwie keinen guten Lösungsansatz der mir gefällt. Denn einen Array durchzugehen ist zu aufwendig meines erachtens und die Waffe sollte sich ja eigentlich nciht drum kümmern wen sie trifft ![]() Doch irgendwo muss ja geguckt werden ob eine Aktion einer Figur ein anderes Element beeinflusst. Mal noch so ein annäherndes UML vllt verdeutlicht das meinen geplanten Aufbau
__________________ Currently working on: - --- --- ----------------------------------------------------------------- ActionScript 3.0, C++, Java, Delphi |
| | |
| | #2 (permalink) |
| ° blubb ° blubb° Registriert seit: May 2002 Ort: earth.germany.home
Beiträge: 64
|
Ich verstehe deine Fragestellung irgendwie nicht?! Ich mein, du hast eine "Welt" in der sich alles abspielt. Diese Welt beinhaltet "Figuren". "Figuren" können Waffen haben. Wenn wir jetzt einen Angriff aus dem Spiel rausnehmen, sieht es wie folgt aus: - Figur1 greift Figur2 an - Figur2 prüft bei jedem Durchlauf des GameLoops, ob irgendein grafisches Element ihre BoundingBox streift. Ist das der Fall, wird geprüft, ob es sich dabei um eine Waffe handelt. - Handelt es sich um eine Waffe, dann wird von der Lebensenergie der Figur2 der Schaden der Waffe subtrahiert. Worauf es bei so einem Spiel ankommt ist eben der GameLoop. Da finden die ganzen Prüfungen & Berechnungen statt. Da es sich bei dir um einen SideScrolling Game handelt, musst du nicht mal die ganzen Elemente durchlaufen, sondern nur die, die gerade sichtbar sind. Dazu fügste deinen Klassen ein neues Attribut hinzu "isVisible", welches auf "true" gesetzt wird, wenn sich das Element im sichtbaren Bereich befindet. Du kannst dir natürlich auch eine Collection für alle sichtbaren Elemente erstellen und die bei jedem Durchlauf des GameLoops aktualisieren. So musst du nicht alle Elemente die es im ganzen Spiel gibt durchlaufen, sondern nur die in deiner Collection, die die sichtbaren beinhaltet. Ich weiß jetzt nicht, inwieweit ich dir damit helfen konnte Vielleicht erklärst du an einem praktischen Beispiel, wo du Schwierigkeiten hast.Grüße
__________________ _blog: Bionic's blOg |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Mar 2006
Beiträge: 1.573
|
das mit dem isVisible ist eine gute lösung, aber deswegen hab ich ja gefragt ![]() dachte bekomm antworten von welchen die schon größere spieleprojekte gemacht habe und die mir dann sagen wie sie es machen ![]() mich stört nur eben das mit dem array durchrattern, das wird eventuell so unperformant. das isVisible flag schraubt das ganze schon wesentlich hoch denke ich vorallem wenn man nur bestimmte objekte ala IInteractiveObject o.ä. hat ![]() aber trozdem danke dachte bekomm nie eine antwort ^^
__________________ Currently working on: - --- --- ----------------------------------------------------------------- ActionScript 3.0, C++, Java, Delphi |
| | |
| | #4 (permalink) |
| ° blubb ° blubb° Registriert seit: May 2002 Ort: earth.germany.home
Beiträge: 64
|
Ah, dann hab ich dich doch richtig verstanden. Ich selber bin auch seit einiger Zeit dabei ein BrowserBased Spiel zu entwickeln, nur eben nicht in Flash, sondern in Silverlight. Arrays durchlaufen ist nicht wirklich unperformant, sofern die Schleifen nicht komplex verschachtelt sind. Du kannst es ja mal testen, in dem du ein Array mit 200 Spielfiguren oder -elementen erstellst und die Zeit misst, wie lange er braucht, um es zu durchlaufen. Grüße
__________________ _blog: Bionic's blOg |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Mar 2006
Beiträge: 1.573
|
die lösung scheint gut ![]() somit wird nur gemalt wenn etwas sichtbar ist, was ja auhc logisch ist. probleme: 1. benutze ich nicht graphics.lineTo etc müste also vorher alles laden und dann entweder anzeigen oder nicht 2. muss ich so oder so alle durchlaufen, da ich ja jeden bewegen will ![]() sonst bleiben manche objekte auf der strecke liegen und das sieht beim backscrolling nich schön aus ^^
__________________ Currently working on: - --- --- ----------------------------------------------------------------- ActionScript 3.0, C++, Java, Delphi |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Mar 2006
Beiträge: 1.573
|
ne im momment nicht, hab mir in den ferien nur konzepte, UMLs etc. und sowas gemacht. mal eben um das ganze nicht gleich wieder zu verwerfen weil ich denke das ich an irgend einem punkt eh nichtmehr sauber arbeiten kann ![]() und zurzeit hab ich eh nicht viel zeit ![]() klausuren ohne ende ... + facharbeit
__________________ Currently working on: - --- --- ----------------------------------------------------------------- ActionScript 3.0, C++, Java, Delphi |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |