Diagonale Raumbegrenzungen, geht das?

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
podthepunk
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 122
Registriert: 15.02.2005, 14:59

Diagonale Raumbegrenzungen, geht das?

Beitrag von podthepunk »

Ich wollte in meinem Spiel (nix besonderes, nur zum üben) die Räume schräg anordnen, also das man sie etwas von oben sieht und die Wände Vertikal verlaufen (der Raum ist dann kein Quadrat sondern eher eine Raute) die ansicht ähnelt dann der, aus Diablo I + II.

In AGS kann ich aber, so weit ich weiss, die Grenzen für die Räume nur senkrecht oder horizontal verlaufen lassen. Oder sind auch vertikale möglich?

Mein erster Gedanke war es, Hotspots "hinter" die Türen zu legen, mit denen man dann den Raum verlässt, sobald man sie betritt.

Wäre das eine sinnvolle Lösung, oder gibt es dafür bessere Wege?

MFG

podthepunk

EDIT:

Diagonal, ich meine natürlich DIAGONAL, sorry!
Zuletzt geändert von podthepunk am 23.03.2005, 18:19, insgesamt 1-mal geändert.
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag von Fightmeyer »

Ich würds über Regions lösen. Ist ja von der Sache her was ähnliches, bietet aber einige spezifischere Funktionen, wie WALK ON oder WALK OFF...
podthepunk
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 122
Registriert: 15.02.2005, 14:59

Beitrag von podthepunk »

ui ging schnell,

Das hab ich gerade auch bemerkt. Also dürfte das kein Problem mehr sein. Danke trotzdem

Ich habe aber gerade festgestellt, dass mein Problem erst richtig mit den Walkbehind areas und deren Baselines anfängt:

Also wenn ich einen Tisch im Raum stehen habe, und der Charakter dahinter steht, ist noch alles in ordnung.

Aber sobald der Char davor steht, bzw. schräg davor und über der Baseline, wird der kopf verdeckt.
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag von Fightmeyer »

Das hatte ich bei meinem Spiel auch an einigen Stellen. Da muß man dann die Walkable Areas ziemlich gründlich definieren, damit solche Effekte nicht entstehen. Gerade beim diagonalen Laufen kann das sonst passieren, was natürlich ziemlich scheiße aussieht.
Da hilft dann eigentlich nur, einen mehr oder weniger rechteckigen Bereich bei den Walkable Areas auszusparen...
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Der Charakter darf nie vor dem Objekt und über der Baseline stehen, setz einfach die Baseline nach oben.

Wenn der Tisch mitten im Raum steht, ist es einfacher, ihn als Objekt einzufügen.
Wenn die walkable area dann eine rautenförmige Aussparung hat und die Baseline des Objekts horizontal durch die Mitte läuft, sollte es funktionieren.
Ich wollte auch mal ein Adventure mit isometrischer Ansicht machen, werd gleich mal testen, ob's wirklich so geht, wie ich mir das vorstelle.

btw: vertikal und senkrecht ist dasselbe :)

edit: hier ein beispiel
Use gopher repellent on funny little man
podthepunk
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 122
Registriert: 15.02.2005, 14:59

Beitrag von podthepunk »

Vertikal = Senkrecht
Horizontal = Waagerecht

DIAGONAL = SCHRÄG

ich meine natürlich Diagonal sonst wär das ja alles kein Problem.

Aber ich vertraue in eure intelligenz, dass ihr versteht was ich meine und ihr habt mich nicht im stich gelassen :D
podthepunk
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 122
Registriert: 15.02.2005, 14:59

Beitrag von podthepunk »

Danke für dein Beispiel!!!

Zumindest sollten jetzt Qadratiche Objekte kein Problem mehr darstellen! Und das mit den Türen funzt auch!

Bei länglicheren Objekten (zb. der tisch wäre doppelt so lang) muss ich mir noch was einfallen lassen oder einen kompromiss machen.

Danke, Danke

podthepunk
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Du könntest beispielsweise den langen Tisch in (quadratische) Unterobjekte aufteilen. Eine Gitter-Optik passt sowieso sehr gut zum iso-style. Cadaver hat's genauso gemacht:
Bild

Eine andere Möglichkeit:
In der repeatedly_execute des rooms könntest du die Baseline dynamisch je nach Charakterposition versetzen.
Use gopher repellent on funny little man
podthepunk
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 122
Registriert: 15.02.2005, 14:59

Beitrag von podthepunk »

bei nicht "ganz" so langen Objekten könnte ich eine kleine Ecke der Walkable area aussparen.
Die etwas längeren dann in ein bis zwei aufteilen.
und bei GANZ grossen (trennwände im Raum o.ä.) kann ich dann die repeatedly_execute verwenden.

und ich hab gedacht das wäre ein gröseres Problem :wink:


Danke an alle

podthepunk
podthepunk
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 122
Registriert: 15.02.2005, 14:59

Beitrag von podthepunk »

OK,

Also das mit den kleineren und mittleren Walkbehind-Areas, hab ich jetzt raus. Aber bei meiner Trennwand im Raum brauch ich einfach zuviele Areas wenn ich das auf die "Non-Scripting" Art machen will. Das heisst jetzt, ich muss scripten!

Also wenn ich eine Wand habe die schräg durch den Raum geht, von unten kinks nach oben rechts,und diese als Walkbehind festlegen will, muss ich die Baseline ständig "neu setzen" lassen.

Ich habe herausgefunden, dank eurer hilfe, dass ich das mit einem script Eintrag unter repeatedly execute, im Raum Editor bewerkstelligen kann.
Da ich aber ein totaler "Scripting Noob" bin, brauche ich genau jetzt eure Hilfe:

Was Schreibe ich nun dort hinein?

SetWalkBehindBase (3,0);

als Beispiel aber was muss ich reinschreiben damit die Position des Characters Abgefragt wird wenn er an einer bestimmten Position ist und dass dann die Baseline gesetzt wird?

Ich hab schon die neue AGS 2.7 prefinal, also wär es gut wenn ihr eure Antworten darauf beziehen könntet. Aber ich kann mir auch die Befehle dann raussuchen (sobald ich weiss welche)


EDIT:

OK ich habs,
also mein script sieht jetzt so aus:

// script for room: Repeatedly execute
if (player.x >= 158 && player.x < 168) {
SetWalkBehindBase (12,209);
}
else if (player.x >= 168 && player.x < 178) {
SetWalkBehindBase (12,204);
}
else if (player.x >= 178 && player.x < 188) {
SetWalkBehindBase (12,199);
}
else if (player.x >= 188 && player.x < 198) {
SetWalkBehindBase (12,194);
}
else if (player.x >= 198 && player.x < 208) {
SetWalkBehindBase (12,189);
}
else if (player.x >= 208 && player.x < 218) {
SetWalkBehindBase (12,184);
}
else if (player.x >= 218 && player.x < 228) {
SetWalkBehindBase (12,179);
}
else if (player.x >= 228 && player.x < 238) {
SetWalkBehindBase (12,174);
}
else if (player.x >= 238 && player.x < 258) {
SetWalkBehindBase (12,169);
}
else {
SetWalkBehindBase (12,0);
}

Damit wird die Baseline meiner Wand immer aktualisiert!
Antworten