Seite 1 von 3
Mehrere Einheiten
Verfasst: 17.07.2005 22:36
von Green Snake
Hi
wie ihr vielleicht schon wisst, wird mein neues bzw derzeitiges projekt ein game in der isometrie ansicht.
ihr alle kennt warscheinlich age of empires, oder sonst ein spiel dieser art.
dort gibt es ja mehrere einheiten, die man selbstständig bewegen kann.
jetzt das problem liegt beim "erschaffen" dieser einheiten.
wie kann ich dann mehrere einheiten aufs spielfeld bringen, ohne für jede einheit eine eigene procedure zu schreiben?
ich daachte da an therards, das finde ich aber vollkommen unnötig.
es gab da mal ein beispiel, aufbau hies es gleube ich.
dort wird genau mein problm gelöst, jedenfalls fast.
ich blick bei dem ganzen source code nicht ganz durch.
und ich kann auch die procedure, oder den code abschnitt nicht finden, der dieses problem beseitigt.
bin um jede hilfe froh.
gruss snake
ps. *ichsitzenvorjapbemitaufbausourcecode,undsucheverzweifeltnachderprocedure

*
Verfasst: 17.07.2005 22:43
von bluejoke
Für solche Problemstellungen bietet sich OOP an, das geht mit PB aber nun leider nicht so einfach. Threads bringen dir aber rein gar nichts
Verfasst: 17.07.2005 22:47
von Ynnus
Nimm doch eine Linkedlist und jede Einheit ist ein element der LL. Dann gehst du nach und nach alle Elemente durch und führst gewisse "Actions" für jede Einheit aus. So mache ich das in meinen Spielen dieser Art.
Verfasst: 17.07.2005 22:52
von Green Snake
hmm...kenne mich nich so aus mit den linkedlists, habe sie auch noch nie verwändet (höchstens in einem tutorial)
ok, wenn du meinst, ich werde diese listen nochmals SEHR genau anscheuen, werde mich dann wieder melden, wenn ichs kapiert habe.
danke euch beiden

Verfasst: 17.07.2005 23:45
von Ynnus
Also bei Dingen wo vorher eine ungewisse Anzahl von Objekten gegeben ist, so wie es in einem Strategiespiel ja der Fall ist, sind LinkedLists eine gute Wahl. Dort kann man einfach Elemente hinzufügen, mit neuen Eigenschaften versehen, auf dem Bildschirm anzeigen lassen usw.
Arrays wäre auch eine Möglichkeit, allerdings nicht so gut geeignet, da man eine maximale Anzahl durch die Arraygrenze hat und auch immer so viel Speicher reserviert hat, egal ob er benötigt wird oder nicht.
Die Linked List sollte übrigens vom Typ einer Structur sein, welche Infos über die EInheit enthält. Hier mal ein Auszug meiner Structur meines C&C1 Clones:
Code: Alles auswählen
Structure unit_struc ;-------- Die Unitstructure
pos_x.f
pos_y.f
size_x.w
size_y.w
abs_speed.f
speed_x.f
speed_y.f
graphic.w
ID.w
action.w
walk.b
direction.b
versatz_x.w
versatz_y.w
selected.b
clip_x.w
clip_y.w
current_building.w
current_building_time.l
building_pos.b
anim_rotation_speed.b
anim_rotation_step.f
anim_direction_typ.b
anim_max_anim_steps.w
anim_current_anim_step.w
anim_time_per_step.l
anim_current_anim_time.l
zielpos_x.w
zielpos_y.w
zielwinkel.w
abs_winkel.w
EndStructure
Da sind alle wichtigen Dinge dabei. Grafik, Position, Animationsstufen und Zeit, Blickwinkel, richtung, einmalige ID, Geschwindigkeit, alles was wichtig ist für die Einheit. Dazu kommen noch Dinge wie Lebensenergie, Schaden, Reichweite usw...
Eine Variable "Action" könnte die derzeitige Aktion der Einheit beinhalten, etwa das Drehen in Mausrichtung oder das Angreifen eines Gegners.
Verfasst: 18.07.2005 00:10
von Green Snake
danke dir nochmals
werde das morgen bzw schon fast heute noch mal sehr genau anschauen.
mein strategie spiel zur zeit is ja noch komplizierter als mein vorheriges in 3d
aber es macht mehr spass, da sich bald (hoffe ich) die ersten erfolge zeigen, was bei 3d leider nicht der fall war
nochmal danke dir sunny
edit:
leider weis ich nicht bzw noch nicht genau, was ich damit anfangen soll, werds aber schon packen

Verfasst: 18.07.2005 12:58
von Batze
Hast du dir schon mal das Spiel angeschaut, das bei PB dabei ist?
Verfasst: 18.07.2005 13:05
von Green Snake
du meinst waponez II ?
hmm...so genau noch nicht, aber ich werds mal machen.
denkst du, dass ich dir die lösung finde?
Verfasst: 18.07.2005 13:12
von Batze
Ja!
Verfasst: 18.07.2005 13:16
von Green Snake
ok, werd das mal SEHR genau anschauen.
