Sonntag, 15. Februar 2009

Erstes Begegnungsplugin

Nun hat das Aufbauspiel ein Plugin bekommen, um zwei sich begegnende Figuren gegeneinander antreten zu lassen. Es handelt sich in diesem Fall um ein Kampfplugin, da dies am einfachsten zu programmieren ist, und in so einem Spiel ohnehin gebraucht werden wird.

Das Plugin benutzt zwei Eigenschaften, die in den Szenariodaten festgelegt werden. Namentlich werden den Figuren Werte für "Angriff" und "Verteidigung" zugewiesen. Diese Eigenschaften sind nicht vom Programm vorgegeben, sondern erlangen nur durch ihre Verwendung im Plugin Bedeutung.

Eine für mich äußerst ärgerliche Eigenschaft von Plugins musste ich feststellen: Plugins können nicht auf Code des Programmkerns zugreifen. Nur solchen, den sie zur Compilezeit sehen.
Das heisst dann, alle benötigten Zugriffsfunktionen inline verwenden, und das Ergebnis in textueller Repräsentation zurückgeben, und dann vom Hauptprogramm auswerten lassen. Das ist sicher nicht die einzige Möglichkeit, aber die, die ich gewählt habe. Mal sehen, wie weit ich damit komme.

Ach ja, bevor ich's vergesse, das Spiel hat ein Forum bekommen: Aufbauspiel Forum
Dieses ist zwar noch vollständig inhaltsfrei, aber vorhanden. Immerhin etwas.

Freitag, 13. Februar 2009

Fortschritt bei den Objekten

Einen kleinen Fortschritt gibt es bezüglich der Objekte auf einem Feld:

  • Sie werden jetzt bei der Feldbeschreibung angezeigt
  • Objekte sind standardmäßig Feldunique, das heisst, es kann nur ein Objekt eines Types pro Feld gebaut werden. Diese Einstellung kann in der Objektdefinition überschrieben werden.
  • Das errichten eines Objektes verbraucht sämtliche übrige Bewegungspunkte der errichtenden Figur. Eine Figur, die sich diese Runde nicht mehr bewegen kann, kann so lange auch nichts mehr bauen.

Als einziges Objekt ist bisher noch "Stadt" definiert. Zum testen reicht das.

Einen seltsamen Fehler hatte ich heute. Nachdem bereits alles funktionierte bekam ich nach einer unbedeutend erscheinenden Änderung einen "Double deletion error" irgendwo in den tiefen der Qt Bibliotheken beim Löschen eines Object. Ich habe dessem Klasse daraufhin einen expliziten Destructor gegeben, genauso lehr wie der automatische, um eventuell an mehr Informationen heranzukommen. Danach war der Fehler wieder verschwunden.

Nun, vielleicht irgendwo eine falsch aufgelöste Abhängigkeit, die sich mit der Änderung des Zeitstempels der Datei erledigt hatte. Bei der Durchsicht der entsprechenden Konfiguration ist mir allerdings nichts aufgefallen. Bleibt abzuwarten, ob der nun tatsächlich weg ist, oder irgendwann wieder zutage tritt und dabei hoffentlich seine wahre Ursache verrät.

Mittwoch, 11. Februar 2009

Zur Blogparade: Warum Linux?

Kaum habe ich herausgefunden, was eine Blogparade ist, gibt es da auch schon eine, die mich interessiert. Und zwar zum Thema:


Warum nutzen Sie Linux?

Nun, zum einen natürlich, ich habe mich gut daran gewöhnt. Sicherlich bin ich kein Anwender der allerersten Stunde. Als ich das allererste mal 1996 ein Linuxsystem installierte gab es das ja bereits ein paar Jährchen. Damals auf meinem alten 486DX-II 66 mit seinen 20 MB Arbeitsspeicher war natürlich nicht alles so glänzend, wie es heute ist. Dass ich beim Kauf der Distribution einen Vermerk "Nicht für Anfänger geeignet" übersehen hatte vereinfachte die Sache natürlich nicht gerade. Aber schließlich war es installiert.

Bleibt zu sagen, als ich von Win 3.11 auf Linux umstieg habe ich erwartet, dass alles anders war. Diese Erwartung wurde erfüllt. Als ich später an eine Win98 Maschine kam habe ich erwartet, ein einigermaßen bekanntes Windows vorzufinden. Diese Erwartung wurde nicht erfüllt. Und so blieb es. Linux erfüllte meine Erwartungen, Windows nicht.

Desweiteren lernte ich natürlich die Entwicklungsumgebung kennen. Meine ersten Oberflächen mit TCL/TK, als ich später beruflich mit MFC programmieren musste, wunderte es mich nicht mehr, dass viele Windowsprogramme derart fehlerbehaftet waren. Somit wieder die Erfahrung: Linux funktioniert einfach, Windows nicht. Für mich jedenfalls.

Wo ich gerade bei einfach bin, wer sagt, dass Windows einfacher ist? Gerade wenn es Probleme gibt ist Linux rückverfolgbar und damit einige Probleme leichter zu lösen, als bei einem Windows, das alles versteckt. Es ist hier denke ich, eine Frage wie man an das System heran geht. Linux kennt eine Einstiegshürde, die inzwischen allerdings auch bereits äußerst flach ist. Danach geht es gleitend weiter, wie nah man auch immer an das System hin will.
Windows kennt eine solche Hürde ebenfalls. Aber viel weiter hinten. Jeder kann einigermaßen damit umgehen, Programme starten und routineaufgaben erledigen. Aber dann kommt lange nichts. Ich kenne bei Windowsadministratoren vorrangig zwei Typen: Die, die knapp über Normaluserlevel ihre installierten Programme streicheln, und einige, die wirklich richtig gut sind. Aber dazwischen ist so gut wie nichts.

Um zum Thema zurückzukommen: Ich bevorzuge es, mich in eine Sache so weit wie ich es brauche einarbeiten zu können, und wenn ich mehr brauche, eben mehr dazuzunehmen. Und nicht, ein "alles oder nichts" System vorgesetzt zu bekommen.

Außerdem ist Linux einfacher, wenn schnell mal eine Diagnose gefragt ist. Ich kenne kein Windows, das auf beliebigen Rechnern, möglicherweise sogar ohne Festplatten nur von einer CD startet und dabei ein vollständiges System zur verfügung stellt.

Letztlich bleibt zur Antwort, was ich schon eingangs gesagt habe: Inzwischen kenne ich mich damit aus. Deutlich besser, als mit Windows.

Dienstag, 10. Februar 2009

Aller Anfang


Wie schon dem Blogtitel zu entnehmen ist geht es hier um die Entstehung eines Aufbauspiels. Dieses wird gerade von mir programmiert. Und zwar unter dem unwahrscheinlich kreativen Namen "Aufbauspiel".

Über die erste Planungsphase ist es bereits hinaus. Der momentane Stand: Nach dem Starten hat man ein Fenster, das etwa so aussieht wie rechts angezeigt. Zwei Spieler haben jeweils eine Figur mit unterschiedlichen Eigenschaften. Das heisst, sie können sich unterschiedlich schnell über das Spielfeld bewegen. Die Figur des ersten Spielers kann zudem Städte bauen. Dies hat zwar überhaupt keine Auswirkungen (und wird momentan nicht mal angezeigt), aber er kann es. Toll gell.

Eigenschaften von Figuren, Feldern, Objekten und Szenariooptionen werden über XML Dateien eingelesen. Ich habe vor, hier möglichst wenig in den Programmcode und möglichst viel in die Szenariodaten zu stecken. Entsprechend wird die Karte über ein Plugin eingelesen, was es möglichst einfach machen soll, weitere Kartengeneratoren hinzuzufügen. Bis frühestens zur Beta reicht mir allerdings ein solcher Generator.

Dann mal sehen, was noch daraus wird. Möglicherweise kommt als nächstes ein Ressourcenmanagement. Dann könnte mit der Stadt auch was gemacht werden. Oder ein Kampfsystem. Dann wäre es einem der beiden Spieler möglich tatsächlich zu gewinnen, anstatt nur rumzulaufen. Nu ja, dann wohl demnächst mehr.