Seite 4 von 4
Re: KI für Dummies
Verfasst: 27.07.2008, 21:27
von perfektopheles
Hilft dir vllt. dieser Post:
http://www.bigbluecup.com/yabb/index.php?topic=31330.0
Dort wurde das Array global gemacht und evtl. statt "int" der Datentyp "short" nehmen.
Re: KI für Dummies
Verfasst: 28.07.2008, 00:30
von Beowulf
Klingt schlüssig. Die Variablen für Funktionen werden im Stack gespeichert.
Grosse Strukturen sollten
immer ausserhalb des Stacks gespeichert werden, werte Füchsin. Wenn du das gemacht hast, wird das AGS bestimmt auch nicht mehr meckern, wenn die Array-Größe jenseits der 500 liegt!

Ausserdem ist es besser für die Geschwindigkeit des Programms, wenn das ganze Array nicht bei jedem Funktionsaufruf neu initialisiert wird.
Auch frage ich mich, wie du auf das Array von anderen Funktionen aus zugreifen wolltest, wenn du dieses aber nur innerhalb einer speziellen Funktion definiert hast.

Re: KI für Dummies
Verfasst: 28.07.2008, 16:08
von KhrisMUC
Klar, der Array darf selbstverständlich nicht im Inneren einer Funktion deklariert werden, sondern am Anfang des room scripts.
Ich konnte ohne Probleme einen 200x200er Array erstellen und ihm Werte zuweisen.
Ein Int belegt 4 byte und eine Funktion kann nur 4 kb für Variablen reservieren, deswegen ist bei 1000 Ints schluss.
Re: KI für Dummies
Verfasst: 28.07.2008, 16:34
von DieFüchsin
Hmm dann liegt der Fehler wohl darin, dass ichs in eine der Room-Functions gepackt hab. Wie peinlich

Re: KI für Dummies
Verfasst: 28.07.2008, 23:32
von Beowulf
Ein Int belegt 4 byte
Also bei anderen Programmiersprachen sind es 2 Byte. Ist das bei AGS anders?
und eine Funktion kann nur 4 kb für Variablen reservieren, deswegen ist bei 1000 Ints schluss.
Kommt drauf an wie groß der Stack ist. Und wenn der Stack schon von den aufrufenden Funktionen ziemlich belegt ist, kann noch viel eher Schluss sein.
Re: KI für Dummies
Verfasst: 29.07.2008, 00:08
von DasJan
Beowulf hat geschrieben:Ein Int belegt 4 byte
Also bei anderen Programmiersprachen sind es 2 Byte. Ist das bei AGS anders?
Die 90er sind vorbei, Beowulf.
http://en.wikipedia.org/wiki/Integer_%2 ... type_names
Das Jan
Re: KI für Dummies
Verfasst: 29.07.2008, 16:39
von td
Ein int kann auch 1337 Bytes belegen, das haengt von einer ganzen Reihe von Faktoren ab, unter anderem Prozessor, Betriebssystem, Programmiersprache und Compiler.
Re: KI für Dummies
Verfasst: 30.07.2008, 11:49
von KhrisMUC
Tatsächlich....!? Mann, da bin ich aber platt. Hätt ich ja niiiiiiiie gedacht. Was Du alles weißt! Boah!
Achso, wir sind ja im "für Dummies"-thread.
Re: KI für Dummies
Verfasst: 31.07.2008, 13:04
von DieFüchsin
Im Room-Script habe ich nun folgendes stehen:
Code: Alles auswählen
// room script file
int start;
int ziel;
zweidim a[200];
a[0].b[0]=0;
...
und AGS meldet mir beim Test: "unexpected a"

Re: KI für Dummies
Verfasst: 31.07.2008, 13:52
von Beowulf
Die Strukturdefinition für zweidim fehlt.
Re: KI für Dummies
Verfasst: 31.07.2008, 13:57
von DieFüchsin
Die hab ich in den Global Script Header gesetzt:
Re: KI für Dummies
Verfasst: 31.07.2008, 15:54
von perfektopheles
Im Post vom AGS-Forum stand noch was von "export". Funzt es damit?
Re: KI für Dummies
Verfasst: 31.07.2008, 16:35
von DieFüchsin
Soweit ich weiß, müssen Dinge im Global Script Header nicht exportiert werden, weil sie automatisch in jedem Room-Script stehen. Wenn ich beginne, "a[0]." zu tippen, schlägt mir AGS auch vor, danach b[] einzufügen, es erkennt das gescriptete also an. Nur beim Testlauf danach meint es, a wäre unerwartet.
Re: KI für Dummies
Verfasst: 31.07.2008, 18:01
von Beowulf
Wo passiert der Fehler denn? Wirklich in dieser Codezeile?
Oder irgendwo anders? Meine telepathischen Fähigkeiten sind etwas eingerostet, daher kann ich dir nicht helfen wenn du nicht mehr Infos schreibst.
Re: KI für Dummies
Verfasst: 03.08.2008, 19:52
von KhrisMUC
Wie jede andere Variable auch müssen bereits deklarierte a[].b[]s innerhalb einer Funktion ihren Wert zugewiesen bekommen.
Also z.B. im before fadein-Event des Raumes.