Aus Das deutschsprachige Scratch-Wiki
Hallo Kangalioo ich finde es super, dass Du Dich so intensiv mit der Beschreibung von Spiel-Engines für Jump'n Run Spiele beschäftigst. Das ist für viel Scratch-Starter ein wichtiges Thema und viel sind sicher für Tipps dankbar.
Genau darum hatte ich auch schon vor Jahren die Beispiele im Jump'n Run-Artikel programmiert und ausführlich kommentiert (in einer älteren Scratch-Version, die das "Anbinden" der vielen deutschen Kommentare die ich extra rein geschrieben habe noch nicht hatte, daher "fliegen die so herum"). Allerdings war ich damals zu faul, den Artikel ausführlicher zu machen und es gab auch das Block-Plugin damals noch nicht.
Ich freue mich, dass Du das Thema jetzt wieder aufgreifst. Hast Du Dir die Beispiele aus dem Jump'n Run-Artikel mal von innen angesehen? Da wird einiges anders gemacht, als Du es beschreibst.
Manches davon ist Geschmacksache, z.B. habe ich damals keine Wände implementiert, dafür aber Kletter-Stangen, Fahrstühle und Riesenräder. Bei mir kommt man in der einfachsten Version links wieder rein wenn man rechts rausgeht und in den späteren Versionen gibt es einen "scrolling Background". Mein Beispiel basiert auch auf Plattformen die man "überspringen" aber nicht "durchfallen" kann.
Wenn Du das Thema generell angehst, solltest Du in Deinem Artikel darauf hinweisen, dass das "eine Möglichkeit" ist und nicht "die Methode schlechthin". Auch hat Dein Beispiel noch ein par "unelegante" Dinge (meins natürlich auch ;-), z.B. kann man hochspringen und auch nach links-rechts Beschleunigen, wenn man gerade in der Luft ist. Wie geht das? Wovon stößt man sich denn dann ab?
Was Du in der Engine#Höhenüberwindung genau erreichen willst, habe ich noch nicht ganz verstanden, aber das mehrfache "Wenn-Verschachteln" der gleiche Anweisung (anstatt einer x-fach-Schleife) ist 100% schlechter Programmierstil und sollte nicht in einem Tutorial empfohlen werden.
Aber ich will Dich keinesfalls demotivieren, sondern lieber anspornen, daraus ein richtig gutes Tutorial zu machen, das unseren Lesern viele Möglichkeiten aufzeigt und optimale Tipps gibt.
Sicher hast Du im Jump'n Run-Artikel gesehen, dass die Komplexität immer weiter steigt, aber m.E. noch zu schnell und zu wenig beschrieben: Mehr Zwischenstufen und Beschreibungen wären gut. Es wäre auch gut wenn wir die "Best Praxis" aus beiden Beispielen zusammenpacken würden und am Ende, wenn wir beim Bewegtem Hintergrund und "computergesteurten Gegenspielern" sind, noch nicht Schluss wäre, sondern es noch weiter geht:
z.B. stellen sich viele Scratcher die Frage, wie man das Spiel so macht, das es "farbunabhängig" ist: Wir benutzen ja immer die einfache Hat-Farbe-Berührt-Methode. Die bedeutet aber ganz schöne Einschränkungen der Gestaltung. Es gibt Möglichkeiten das zu umgehen, z.B. mit vier unsichtbaren Objekten die um die Spielfigur herum eine Art "Fühler" darstellen, so dass man immer abfragen kann ob sie den Boden, die Wand links/rechts oder Decke berührt, oder aber eine gegnerische Figur.
Auch beim Bewegtem Hintergrund muss noch nicht Schluss sein. Erst mal könnte der ja nicht nur links/rechts scrollen, sondern auch oben/unten und dann gibt ja z.B. noch Paralaxen-Scrolling, mit dem man einen tollen 3D-Effekt erzielen kann. Die Möglichkeiten dieses Tutorial (und natürlich auch das Beispiel) auszubauen sind unbegrenzt und ich würde mich freuen, wenn Du das Thema voranbringst. Gerne helfe ich dabei. Was meinst Du? Mtwoll (Diskussion) 15:30, 7. Jan. 2015 (CET)
- Uff! Erst mal durchlesen.. Okay also danke für die vielen Anregungen und gut gemeinten Kritiken. Zu der verschachtelten if-Anweisung: Das ist nötig, denn nur so, wird der Teil des Skripts mit der nötigen Geschwindigkeit ausgeführt, die es braucht, damit das Projekt eine annehmbare Geschwindigkeit hat. Würde Scratch bei wiederhole-Blöcken nach Abfolge von einem Stapel Blöcke keine Pause einlegen, wäre es natürlich besser einen wiederhole () mal-Block zu benutzen.
- Und zu der Komplexität: Da habe ich ersteinmal gar nicht darüber nachgedacht. Aber du hast recht, ich sollte vielleicht mehrere Methoden mit unterschiedlichen Schwierigkeiten beschreiben.
- Alles in allem werde ich mir Mühe geben, die von dir genannten Punkte, die ich kenne und beschreiben kann zu beschreiben und zu verbessern, und andernfalls mich erkundige um nicht vorhandenes Wissen nachzubessern. Kangalioo (Diskussion) 15:54, 7. Jan. 2015 (CET)
Wow - ich bin begeistert über Deiner schnellen und positive Reaktion. Tja - Du hast Recht - das ist ein ganz schöner "Text-Brocken" denn ich Dir da "hingeknallt habe" ;-) Sicher liegt es daran, dass auch ich mich damals - als ich noch an der MCS (siehe DACH-Scratcher#Wo wird Scratch in DACH eingesetzt?) selber Nachmittags-Kurse für Scratcher gegeben habe, sehr intensiv mit dem Thema beschäftigt habe, wie man das den Kids dort beibringen kann. Bezüglich der "uneleganten" der Wenn-Verschachtelung verstehe ich jetzt das Problem: Ja, damit man Scratch-Programme besser verfolgen kann, gibt es (außer im TURBO-MODUS) diese Verzögerung pro Schleifendurchlauf. Aber diese so brachial "auszutricksen" ist trotzdem kein Programmier-Stil den man Anfängern empfehlen sollte: Die gewöhnen sich das ja falsch an und machen das dann immer so. Natürlich muss man "was geht" gegen "was ist guter Stil" abwägen. Aber sicher gibt es noch ein elegantere Möglichkeit, ähnliches zu erreichen...oder? Mtwoll (Diskussion) 16:30, 7. Jan. 2015 (CET)
Ich habe mal dazugeschrieben das man es sich nicht angewöhnen sollte. Kangalioo (Diskussion) 11:57, 11. Jan. 2015 (CET)