Zurück   Flashforum > Flash > ActionScript > Spielkonzepte und Spieleprogrammierung

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-03-2008, 19:19   #1 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
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
Angehängte Grafiken
Dateityp: png Diagramm.png (4,3 KB, 84x aufgerufen)
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi
_crypto_ ist offline   Mit Zitat antworten
Alt 08-04-2008, 14:56   #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
Bionic ist offline   Mit Zitat antworten
Alt 08-04-2008, 19:46   #3 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
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
_crypto_ ist offline   Mit Zitat antworten
Alt 09-04-2008, 09:09   #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
Bionic ist offline   Mit Zitat antworten
Alt 09-04-2008, 14:17   #5 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
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
_crypto_ ist offline   Mit Zitat antworten
Alt 09-04-2008, 22:31   #6 (permalink)
wau
 
Benutzerbild von Circushund
 
Registriert seit: Jan 2006
Ort: Hamburch
Beiträge: 404
Hi crypto,

hast du denn schon ein bisschen was gemacht? Und wenn, zeigt doch mal her, evtl. fällt mir auch noch was ein.
__________________
Say no to Internet Explorer 6!
Circushund ist offline   Mit Zitat antworten
Alt 10-04-2008, 15:58   #7 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
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
_crypto_ ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

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



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:27 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele