PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ein anderes Experiment



Phönix Tear
06.06.2005, 21:31
Ich weiß zwar nicht ob es sich lohnt dafür extra einen neuen Thread aufzumachen und ob es das nicht schonmal gab, aber ich machs einfach trotzdem mal :p
Es handelt sich schlichtweg um ein AKS-Test bei dem ich mal versucht habe keine Koordinaten für die Gegner zu verwenden und so - vergleichsweise - mit recht wenig Variablen ausgekommen bin. Das gute daran ist, das ich momentan bis zu 55 Gegner verwenden kann und diese auch beliebig Kopieren, bzw. löschen kann.
Die Gaphik ist grässlich (RTP ^^°) und der Skript nicht besonders toll, aber ich wollte zumindest mal wissen ob es sowas schonmal gab.
Hier der Downloadlink (http://rapidshare.de/files/2240059/KS_Test.rar.html) Edit: Der neue ^^

Des weiteren wollte ich (da mir nur 1 recht alter PC zur verfügung steht) wissen wie dieser Skript auf euren PCs läuft. Bei mir ruckelt es zwar nicht, aber wenn man schiest werden kaum Gegner getroffen. Ich wollte nun wissen ob das am Code oder einfach an der Rechenleistung liegt. Also schreibt bitte wie das bei euch funktionierte ;)

Natürlich kann man diesen Skript noch ordentlich ausarbeiten so das er (vielleicht) auch ordentlich funktioniert und eine gute Graphik hat, aber ich wollte erstmal schaun ob das Ding auf guten PCs überhaupt funktioniert ;)

mfg
Phönix Tear

P.S.:
Das Ding hab ich in wenigen Stunden gemacht, also erwartet nicht zu viel ;)


Edit:
So, jetzt hab ich ein neues Chip reingemacht sodass es vielleicht ein ganz bisschen besser aussieht, aber halt nicht viel... Egal...
Hier noch ein Screen ;)
http://www.directupload.net/images/050607/temp/YoZ26qVz.png (http://www.directupload.net/show_image.php?d=278&n=YoZ26qVz.png)
Das ist gerade die Maximalzahl von 55 Gegnern.
Theoretisch kann man mit diesem Skript bis auf 4975 hoch, aber ich denke das ist auch für die besseren PCs nicht mehr zu schaffen ;)

Slizer
07.06.2005, 15:20
Mach noch mehr Screens rein! Der sagt doch garnichts über das spiel aus.

FF
07.06.2005, 15:41
ich habs mir nioch nicht angesehn, aber es klingt nach "set (oder get) event id" wo die gegner sich selbst variablen geben.... das gabs schon mal als script... ich suchs mal raus........


edit:
http://www.multimediaxis.de/showthread.php?t=52503&highlight=script

meinst du sowas?^^
ist von de'ak.

Phönix Tear
07.06.2005, 15:54
Ah, de 'ak ^^
Den hab ich vor kurzem angeschrieben wegen einer ähnlichen Sache. Genau deswegen hab ich den Skript gemacht...
Hatte mir bei Ricemans World das ganze mal angesehen und hab dann einfach mal nen Skirpt bzw. einen Versuch dazu gemacht.
Da dieses "Ding" keine Credits hat hab ich einfach nichts erwähnt (wobei darauf hinzuweisen ist das auch mein Name nirgends vorkommt ;) )

Aber natürlich müsste da dann stehn:
Special Thanks to:
De 'ak und Tico (ich glaub der 2te von Ricemans World ^^)
Außerdem noch Lachsen und übelster Held. In einem anderen Thread (von Ranarion) stritten die sich nämlich um ein Stück Code wo Lachsen darauf hinwies das üH ja diese Variablen Variablenzuweisungen benutzt hat. Da ich bis dahin noch nichts davon gehört hatte hab ich mir das einfach mal angeschaut und (zum Teil :rolleyes: ) auch verstanden. Um das ganze dann zu Probieren hab ich dieses "KS" dann entworfen. Eigentlich war es nie zur Veröffentlichung gedacht, ich wollte (wie oben geschrieben) nur wissen wie das ganze auf besseren PCs läuft ;)

Edit:
Äh, Mist... Der Downloadlink funzt nicht und in usere Skriptsammlung hab ich sowas nicht gefunden (überhaupt keinen Skirpt von De 'Ak)...

Edit 2:
Ach ja: Bei Special Thanks müsste auch noch [KoA-Angel] hin, wegen dem Skript "BANG" (hieß glaub ich so). Diese Moorhuhn Nachmache, weil sie da auch die Event IDs so verwendet wie ich das in der Art hier auch mache...

Smokie-Steel
07.06.2005, 15:56
Also bei mir wars buggy. Nach 3maligem durchschuss ist der erste gegner gestorben...bei dem anderen musst ich 5 mal durchschiesen bis er tot war. Und eine Treffanimation erschien nur wenn der gegner kaputtging...bei normalen treffern nicht.

Phönix Tear
07.06.2005, 16:02
Welche Map hast du denn gespielt? Auf den ersten beiden passiert nichts weil die Gegner nur einen Schuss aushalten und dummerweise der Flash nicht mehr angezeigt werden kann weil es sonst zu einer Verzögerung käme (müsste ein Wait hin) sodass die Gegner dahinter erst garnicht mehr getroffen werden können...
Außerdem siehst du daran dass der Gegner aufblinkt das du ihn getroffen hast. Wenn er das nicht tut ist er halt ausgewichen ;)
(Wie gut is dein PC??? (sind persönliche Daten, müsst ihr also nicht sagen ^^))

Edit:
Ach ja: Der Screen da ist ein bisschen gefaked ^^. Wer sich die letzte Map anschaut sieht das ich da (extra) das Event dagelassen habe was dafür sorgt das die ersten 5 Gegner aufblinken sobald man die Leertaste drückt... Ich hatte irgendwann (nach 2 Stunden XD) den Kaffe auf und wollte nicht solange warten bis ich durch Glück mal alle Gegner treffe. Ich hoffe ihr versteht das ;)
(Is ja eigentlich auch nicht richtig gefaked. Theoretisch würde das ja gehen ^^)

[KoA-Angel]
07.06.2005, 17:31
Ah, de 'ak ^^
...Edit 2:
Ach ja: Bei Special Thanks müsste auch noch [KoA-Angel] hin, wegen dem Skript "BANG" (hieß glaub ich so). Diese Moorhuhn Nachmache, weil sie da auch die Event IDs so verwendet wie ich das in der Art hier auch mache...

oho aha hihi

Also BANG war eigentlich nicht das erste Script, in dem ich diese Technik verwende. Sieht man sich die Common Events von Vortex an, erkennt man, dass darin das gleiche Prinzip verwendet wird. IMO die beste Lösung für Shoot AKS, da man dadurch die Gegner viel variabler gestalten, kopieren usw kann, was bei vielen AKS die ich bisher sah nicht der Fall ist.

Irgendwann sprach De'Ak mal im Chat von sowas und ich erklärte ihm das Prinzip.

Zu deinem Problem mit der Schussabfrage:
Der Maker ist definitiv schnell genug dafür, du musst nur ein Common Event machen, dass in einem parallel Process Loop permanent abfrägt, ob sich unter dem Schuss Event ein anderes befindet. Wenn ja, soll dieses gestartet werden. Dann ist es absolut unerheblich, wieviele Gegner du auf der Map plazierst, das Script selbst wird dadurch nicht langsamer, es kann höchstens sein, dass bei zuvielen Events der Maker selbst in die Knie geht.
Ich nutze dieses System schon seit längerem für ein Schuss-KS in einem Projekt, das noch nicht spruchreif ist und es funktioniert einwandfrei, auch auf sehr schwachen Rechnern.

Vitalos
07.06.2005, 17:57
Da kann man leider fast nichts erkennen.Mach mal mehr Screens damit man auch was erkennt. :o

Fireblade
07.06.2005, 18:03
Man muss auf die bilder klicken so dass man was erkennen kann!

Oliii
07.06.2005, 18:21
sonderbar...sonderbar...wenn 5 Gegner in einer Reihe stehen werden 3 bei einem Schuß getroffen...beim nächsten nur einer...dann wieder 2....usw. also stimmt da irgendwas nicht..weiterhin kann man den letzten "level" nicht zuende spielen, da du irgendeinen mapping fehler gemacht hast...hättest du vielleicht vorher mal ein bißchen selber testen sollen :D

Phönix Tear
07.06.2005, 18:29
Jaja, hab ich vergessen zu sagen... Der Mappingfehler ist nämlich garkeiner!
Ich hab in der Eile nur vergessen ein Event hinzuzufügen welches den "Schuss" entfernt nachdem er verschwindet. Ein ziemlicher Noob Fehler, aber da ich in Eile war hab ich ihn nicht mehr behoben (bzw. dieses vergessen).
Das was du als Mappingfehler erkennst ist lediglich der auf durchsichtig geschaltete Schuss den du nicht passieren kannst. Schiesst du einmal in die entgegengesetzte Richtung solltes du nun weiterkommen... (Sry, deswegen).

@KoA:
Genau dieses Prinzip hab ich verwand. Mich würde es sehr freuen wenn du dir den Code anschaun könntest und mir sagen würdest was ich falsch gemacht habe T_T
Bei mir ist nämlich ein Event (Common) das die ganze Zeit die Position des "Schuss-Events" abfragt und mir dann die Event-ID auf diesem Feld gibt. Da der Schuss das Event 2 ist werden ja alle anderen (bis auf das Event 1 :rolleyes: ) eingespeichert (also nicht der Schuss). Bei diesen Events calle ich dann die Seite 3 die den Energieverlust, bzw. den Tod einleitet...
Aber irgendwie funzt das nicht so ganz ^^°

[KoA-Angel]
07.06.2005, 20:39
...

@KoA:
Genau dieses Prinzip hab ich verwand. Mich würde es sehr freuen wenn du dir den Code anschaun könntest und mir sagen würdest was ich falsch gemacht habe T_T
Bei mir ist nämlich ein Event (Common) das die ganze Zeit die Position des "Schuss-Events" abfragt und mir dann die Event-ID auf diesem Feld gibt. Da der Schuss das Event 2 ist werden ja alle anderen (bis auf das Event 1 :rolleyes: ) eingespeichert (also nicht der Schuss). Bei diesen Events calle ich dann die Seite 3 die den Energieverlust, bzw. den Tod einleitet...
Aber irgendwie funzt das nicht so ganz ^^°


Dein Fehler ist ganz simpel.
Du hast die Koordinatenabfrage der Kugel und die Trefferabfrage in 2 verschiedene Common Parallel Prozesse gelegt, die nebeneinander ablaufen. Common Event 1 schreibt x und y koordinaten der Kugel, Common Event 2 überprüft, ob an x und y ein andres Event steht und startet dessen Page 3. Soweit sogut, nur was ist wenn Event 1 gerade erst die x Koordinate geschrieben hat, dann die Abfrage von Event 2 dazwischenkommt und danach erst die y richtig gesetzt wird? Richtig, es werden falsche Koordinaten geprüft und das sogar mit recht hoher Wahrscheinlichkeit.
Lösung: Du musst beide Events zusammenlegen. Also ein Common Event mit Loop (auch wenn es parallel process ist, ist Loop die Ressourcenschonendere Variante), in dem zuerst die Koordinaten der Kugel gelesen werden und dann die Überprüfung erfolgt, ob an diesem Punkt ein anderes Event steht. Falls ja, Page 3 starten. Fertig.

Noch ein kleiner Tip:
Ich gehe in meinem Spiel so vor, dass ich das Schussevent auf SlipThrough bewegen lasse, damit wird es niemals zu einem Hindernis. Damit es an Wänden etc zerschellt, musst du eine zusätzliche Abfrage im zusammengefügten Common Event einfügen, nämlich wenn du die Koordinaten des Schusses hast, ein Get Terrain ID. Nun bestimmst du zB dass Terrain Nr 1 Hindernis ist. Wenn also die Abfrage 1 ergibt, soll der Schuss deaktiviert werden. Nun kannst du auf einfache Art und Weise jedes beliebige Chipset nutzen und die unbegehbaren Teile auf Terrain 1 stellen. Soll das Geschoss an einer Stelle zerschellen, deren Terrain ID du nicht bestimmen kannst zB weil dort ein Upper Layer Tile liegt, dann setz dort einfach ein Block Event hin, bei dem auf der dritten Page der Befehl zum deaktivieren des Schusses steht.

Smokie-Steel
07.06.2005, 20:46
(Wie gut is dein PC??? (sind persönliche Daten, müsst ihr also nicht sagen ^^))
Will mal nich so sein ^^
Pentium 3 1Ghz
ca.700MB Arbeitsspeicher
...der rest is wohl ziemlich unwichtig

Phönix Tear
07.06.2005, 21:17
WOW, danke ^^
Auf sowas banales wäre ich nie gekommen :D
Aber wieder was gelernt, werd in Zukunft auch auf solche Sachen achten (bis jetzt dachte ich immer die Events werden der Reihe nach abgefragt ^^°)
Naja, oben der Links ist nun korrigiert. Außerdem verschwindet die Kugel nun nach 0,2 Sekunden sobald sie die Wand erreicht. Was ich noch nicht verstehe ist, warum im letzten Level wieder nur einige getroffen werden (ganz innen in der Spirale)... Ich schätze es liegt am Wait, weiß nur nicht was ich jetzt machen soll (wird das wait auch nur um 0,0 kleiner wird der Gegner manchmal 2mal getroffen -_-)