Spielzeit:
60 Minuten
AppGameKit habe ich als Schnellschuss gekauft. Im Freundeskreis haben wir ein Spielentwicklungs-Projekt ins Leben gerufen und ich bin der Programmierer. Ich programmiere seit ca. 16 Jahren, mittlerweile auch beruflich. Darum möchte ich versuchen das Review möglichst so zu verfassen, dass meine Punkte ihren Vor- und Nachteil erklären. Denn einige Punkte sind eher subjektiver Natur bzw. an ihren Nutzen gekoppelt.
Gekauft habe ich, weil die Software gerade im Angebot war und 2 DLC's mit im Bundle lagen. Die ausschlaggebenden Argumente waren also der Preis, die Zusätze und der angepriesene einfache Export auf jegliche Plattform. Dazu stand etwas von integrierter Programmiersprache und ich dachte mir, dass es bestimmt ganz witzig ist mal wieder etwas neues zu erproben.
Erstmal die Kritik:
============
Die DLC's waren sehr mäßig. Die Grafiken aus dem Assets Pack taugen meiner Meinung nach nicht mal zum Testen. Die sehen teilweise aus wie Clipart aus MS-Word. Solche 3D Buttons im Blasen-Look... und ja, auch ein paar Spritesheets mit Panzern, Raumschiffen, etc. Aber nichts was schlüssig in einander greift um ein Konzept abzudecken oder die Qualität hätte, dass ich es benutzen würde. Also in einem fertigen Spiel sollten sowieso keine von X Leuten gekauften Inhalte vorkommen, aber selbst um schnell etwas zu testen, finde ich die Grafiken nicht wirklich geeignet, da man so nicht wirklich ein Konzept visualisieren kann.
Die Basic-Programmiersprache überfordert mich. Denn ich habe keine Ahnung wie ich mich dort strukturieren soll. Es ähnelt stark C, bloß dass die Maschinennähe komplett fehlt. Man hat also nur das Nervigste der Technologie von vor 30 Jahren extrahiert und voilà: eine "Einsteigersprache"!
Versteht das nicht falsch, ich werde das später noch relativieren aber ihr müsst euch vorstellen, dass man heutzutage beim Programmieren eigentlich überlegt:
- was gibt es für "Dinge"?
- was können die Dinge und was haben die für Eigenschaften?
- wie stehen die Dinge zueinander (beinhalten sie sich, leiten sie von einander ab, können sie alleinstehend existieren oder sind sie zwangsläufig ein Teil des anderen)?
Aus diesen Schlüssen entwickelt man Klassen und zieht dann fröhlich seine Objektinstanzen. Oder bei JS gibt's Prototyping etc...
Beispiel: Ein Bild ist ein Ding, es hat eine Quelle, es hat einen Buffer, es hat Dimensionen. Ein Sprite beinhaltet ein oder mehrere Bilder, ein Bild ist nicht zwangsläufig ein Teil von einem Sprite, d.H. man spricht von einer Aggregation. Eine Spielfigur ist ein Sprite mit extra Attributen (Leben, Waffe, ...) und kann mehr (sterben, huppen, schießen, ...), also kann man alles was ein Sprite entspricht vererben. Ein Spieler ist eine Spielfigur mit extra Zeug (Inventar, HID).
So würde ich alles was ich programmiere organisieren. Das war ein kleiner Exkurs in die objektorientierte Programmierung.
Das Basic von AppGameKit entspricht dem strukturiertem Programmierparadigma. Das hat zur Folge, dass man alles irgendwo in den globalen Scope werfen muss und irgendwelche Variablen irgendwo rumfleuchen.
Z.B. muss man immer eine Adresse rumreichen ala: "mache Bild mit Nummer 1, mache Sprite aus Bildnummer 1 mit Spritenummer 1". Die Reihenfolge der Spriteerzeugung entspricht dabei der Z-Tiefe auf dem Bildschirm. Man muss sich also für jedes Sprite irgendwelche Nummern wohin speichern. Es gibt keine Datenkapselung.
Immer wenn ich so programmieren wollte kam ich auf Ideen wie: "Ok, da baue ich mir doch wenigsten einen SpriteMananger, der die Sprites verwaltet". 5 Sekunden später die Erkenntnis: "DOUW! Kann keinen SpriteManager bauen, ist nicht objektorientiert".
Und das ist eben für mich persönlich ein Nogo. Darum habe ich mich für unser Spiel für JavaScript entschieden. Mit Electron läuft JS auch als Desktop App, im Browser geht es sowieso und Mobile geht auch super klar. JS bietet auch eine super Abstraktion und mit HTML5 ist man mega multimedial unterwegs.
Pros:
====
Wenn man nicht wirklich gut programmieren kann und sich der Umfang des geplanten Spiels, bzw. der Anwendung in Grenzen hält, ist AppGameKit eine gut Sache.
Mit "Tier2" hat man die Möglichkeit C++ Erweiterungen zu schreiben.
Da ist aber klar, dass dann die Plattformunabhängigkeit flöten geht und man für jedes System kompilieren und evtl. deployen muss. Und C++ ist sehr systemnah und abstrakt zugleich. Die Systemnähe braucht man heutzutage selten, da die Rechner schnell genug sind. Damit macht es für mich wenig Sinn ein "Entwicklungsapplikation-Engine-Kit" zu holen die bissel was anbietet und vereinfacht, dass dann mit C++ aufzubohren weil es doch nicht ausreicht und ja... es gibt für C++ auch SDL, SFML, Allegro, usw. Diese Librarys erzeugen auch auf jedem System ein Fenster und man kann gleich Sprites reinzeichnen und gut ist. Dazu sind die kostenlos.
Also eigentlich würde ich Software wie AppGameKit eher kaufen um nicht C++ nutzen zu müssen. Weil wenn ich es nutzen wöllte, würde ich es auch anders machen.
Ok, das war kein Pro-Argument :D Ich wollte eigentlich darauf hinaus, es gibt die Möglichkeit Plugins mit C++ zu schreiben und damit die vorhin genannten Kritikpunkte zu erübrigen. Ich empfinde es bloß nicht als besonders sinnvoll.
Dazu möchte ich noch sagen, es hängt auch nicht am "Basic". Es gibt z.B. Freebasic, das hat eine eingebaute Grafik Library, man kann modern objektorientiert programmieren nahezu dem Umfang von C++, kann aber auch auf Quickbasic Dialekt setzen und erhält so auch einen super Einstieg. Dazu ist es kostenlos. Also ich habe nichts gegen Basic als Sprache an sich, es geht einzig um die Technologie.
------------------------------------------------------------------------------------
Also zum wirklichen Pro-Argument und Fazit. Wer nicht oder wenig programmieren kann und einen Einstieg sucht, einfache Spiele und Spielereien kreieren möchte, der kann AppGameKit kaufen. Da es sicher auch der Hintergrundgedanke zu dieser Software war, bewerte ich sie positiv. Sonst wär ich einfach nicht fair. Wer jedoch programmieren kann und so einen gewissen Standard verfolgt, dem wird die Freude vergehen sobald er versucht mit dem Basic zu arbeiten.
👍 : 29 |
😃 : 0