Hallo liebe Freunde der Programmierung,

Moontaximöglicherweise erinnert sich der eine oder andere von euch an das kleine Spaß-Projekt das ich vor Jahren mal erstellt habe? Es nennt sich MoonTaxi und ist im Grunde ein Spiel, das die Idee aus Space Taxi (C64) übernommen hat. Ein kleines, schwebendes Taxi (a la fünftes Element), gesteuert vom Spieler, muss in einem mehr oder weniger komplizierten Level verschiedene Taxi-Gäste aufsammeln. Gesteuert wird mit Steuerdüsen und zum Trotz der Gravitation und der Trägheit.

In ein paar ausführlichen Blog-Einträgen hatte ich damals detailiert beschrieben, wie das Spiel funktionert. (Teil 1, Teil 2, Teil 3). Damals noch mit XNA. Letzte Woche hatte ich aber mal spontan Lust das Ganze nochmal schnell mit MonoGame zu reproduzieren und habe dazu eine 6-teilige Video-Reihe gemacht. Wer also lieber Videos schaut anstatt zu lesen, der sei herzlich willkommen.

Viel Spaß damit
Tom

AntMe! 1.7.2 is out

Veröffentlicht: 16 Februar 2015 in AntMe!
Schlagwörter:, ,

Und wieder gibt’s ein kleines Update für unser allseits beliebtes Ameisenspiels. Diesmal gehen die Veränderungen aber eher Richtung Bugfixing und interne Änderungen. Aber das offensichtlichste zuerst: Der neue Dialog für die Konfiguration eines freien Spiels. Er orientiert sich jetzt etwas mehr an gängigen Strategiespielen und bietet die verfügbaren Spielerslots für die KI-Zuweisung an. Damit einher gingen ein paar Änderungen im Ablauf der Spiel-Konfiguration.

freegame

Warum das Ganze? Ganz einfach. Mit der Online Anbindung und weiteren Ideen werden neue Spiel-Modi in Form von neuen Plugins hinzukommen. Dabei teilen sich diese Modi ein paar zentrale Funktionen wie beispielsweise die Auswahl der Spieler KI. Deshalb gibt es jetzt auch eine weitere Assembly „PlayerManagement“ für diverse Auswahl-Dialoge.

Sonstige Veränderungen in der Schnell-Übersicht

  • Plugins werden jetzt nur noch aus dem Programm-Pfad geladen
  • Änderungen bei der Plugin-Selektierung werden sofort gespeichert (dann wichtig, wenn man im Spielmodus das Programm direkt über Visual Studio stoppt)
  • Source oder Quelle heißt jetzt Mode bzw. Modus. Außerdem ist die Auswahl-Combo Box im Hauptfenster durch ein ordentliches Menü ersetzt.
  • XNA Anzeige hat eine Info-Seite zur Steuerung bekommen
  • XNA Lokalisierung funktioniert jetzt richtig
  • Es gibt jetzt einen VB.NET Code Generator für deutsch und englisch
  • Kaputte Kreis-Ameisen entfernt ;)

Für kommende Update stehen noch ein paar wirklich wichtige Dinge auf dem Plan. Lasst mich aber wie immer gerne wissen, was ihr vermisst, dringend braucht, cool fändet,…

  • Fehlerhafte Simulation (Falsche Angaben bei “ZurückgelegteStrecke”, Berechnung von “BrauchtNochTräger” und maximale Markierungsgröße,…)
  • Zufallsgenerator für die Maps überarbeiten
  • Dokumentation

Also direkt mal downloaden!!!

Ich wünsche wie immer ganz viel mit den Ameisen
Euer Tom

AntMe! 1.7.1 – Der Debug Mode

Veröffentlicht: 31 Januar 2015 in Uncategorized
Schlagwörter:, ,

Seit einigen Minuten steht die Version 1.7.1 unseres allerliebsten Ameisen-Programmierspiels zum Download bereit. Wie bereits im letzten Blog-Post angekündigt, versuche ich die Fortschritte in Version 2 soweit es geht auch in Version 1 zu verarbeiten. So kommt ihr schneller an den neuen hippen Kram.

Was gibt’s denn Neues?

  • Wir haben eine neue Visualisierung
    Mit Hilfe der Bit Barons (https://www.facebook.com/bitbarons) habe ich es geschafft der bisherigen 3D-Ansicht zu neuem Glanz zu verhelfen. Ein paar neue Shader, eine hübsche Skybox und ein paar hilfreiche Texturen lassen sich sehen.
    Debug View
  • Neue Befehle
    Zuerst mal nur einen: „Denke(…)“ oder „Think(…)“ erlaubt dem Programmierer der Ameise Debug-Informationen mitzugeben, die anschließend in der Ansicht als Denkblase über der Ameise angezeigt werden. Das ist etwa das Gegenstück zu „Console.Write“. Lass die Ameise etwa „Hurra! Zucker gesehen“ rufen, wenn sie in das „Sieht(Zucker)“ Ereignis läuft.
  • Debug-Infos in 3D
    Auf vielfachen Wunsch gibt es in der neuen Ansicht ein paar weitere hilfreiche Infos zum Verlauf der Programmierung. Schaltet man einmal die Debug-Ansicht ein (Druck auf D genügt), so erhält man wertvolle Infos zum Verlauf:

    • Ameisen bekommen einen Ring zur Anzeige ihrer Sichtweite
    • Sollten Ameisen ein konkretes Ziel haben (Bau, Zucker, Wanzen,…), so wird dieses Ziel durch eine direkte Linie angezeigt.
    • Die oben erwähnten Denkblasen werden auch nur im Debug-Mode angezeigt
  • Tech-Background
    Im Hintergrund gibt es noch ein paar kleinere Verbesserungen die aber dennoch Erwähnung finden sollten. Wir speichern jetzt für Plugins, die garkeine Settings haben, keine unnötigen Settings-Files mehr. Außerdem wird der Start-Screen jetzt beim Umschalten in eine andere Sprache direkt mit übersetzt.

So! Das wars erstmal. Ich freue mich wie immer auf euer Feedback. Und looooooos gehts zum Download: http://service.antme.net

Euer Tom

AntMe! Classic Refresh: AntMe! 1.7

Veröffentlicht: 6 Januar 2015 in AntMe!
Schlagwörter:, , ,

Wer das Projekt schon eine Weile verfolgt, der weiß, dass die Entwicklung an Version 2.0 in vollem Gange sind. Leider geht es aber dann doch nicht so schnell, wie ich es mir gewünscht hätte. Durch die gescheiterte Crowdfunding Kampagne beschränkt sich die Arbeit am Projekt wieder einmal auf die verfügbare Zeit fernab anderer Projekte, mit denen ich die Finanzierung sichern muss. Keine Sorge: Es bleibt dennoch genügend Zeit um kontinuierlich weiter zu arbeiten.

Ich will euch aber meine Fortschritte in einzelnen Bereichen nicht vorenthalten, weshalb ich einige der Features Stück für Stück parallel auch in die „alte“ Version integrieren möchte. Die ist schließlich auch schon etwas in die Jahre gekommen und hat mal ein Update verdient.

Natürlich lassen sich die Verbesserungen an der Ameisen-API nur schwer auf die alte Version anwenden, aber so gibt es auch Dinge, die sich schlichtweg aufdrängen. Einige der Sachen sind bereits in der angehängten Version integriert, andere werden in weiteren Updates folgen.

Aber was meine ich damit?

AntMe! auf Framework 4.0

Die vermutlich wichtigste Änderung mit 1.7 ist die Verwendung eines etwas moderneren .NET Frameworks. Wo die bisherige Version auf Version 2.0 aufgebaut hat, können nun alle Sprach- und Framework Features der 4.0 verwendet werden. Warum nur 4.0 und nicht 4.5 oder gar 4.5.1? Mir persönlich wären neuere Versionen auch lieber, aber mit 4.0 kann AntMe! weiterhin die Kompatibilität mit Windows XP garantieren, was für viele Bildungseinrichtungen leider immer noch ein wichtiges Thema ist. Aber immerhin. LINQ und Co sind dabei!

3D Darstellung auf XNA

xna previewIch sehe einige von euch beim Lesen mit Fragezeichen über dem Kopf ;) Der eine oder andere wird sich fragen, warum ich mich dafür entschieden habe. Die Antwort ist einfach: Die bisherige Darstellung wurde mit den Managed DirectX Libraries realisiert, die mit dem neuen Framework leider nicht mehr kompatibel sind. In Anbetracht der vorhandenen Assets und des Codes lag eine DirectX-basierte Library naheliegend. XNA kann ich schon, es existiert eine funktionierende Content Pipeline und es gibt ordentliche Integrationen für den msi-Installer. Im Vergleich zum Ärger, den unsere Spieler mit der Abhängigkeit zu MDX hatten, ist XNA dennoch eine klare Verbesserung. (Stichwort LoaderLock Exception).

Leider ist der Umstieg auf XNA auch einer der größten Problemkinder des Updates. Leider ist der Code nicht 100% kompatibel und die Assets machen unter XNA auch andere Sachen als erwartet. Aus diesem Grund stellt die aktuelle Version beispielsweise noch keine Markierungen und Labels dar. Bin dran…

Ein richtiges Setup mit installierten Binaries

SetupWorauf ich besonders stolz bin, ist die radikale Verbesserung der „Installations Experience“, wenn man das bei der alten Version überhaupt so nennen kann. Version 1.7 kommt als Installer-File und installiert die fertig kompilierten Libs ordnungsgemäß in das Programme-Verzeichnis. AntMe! lässt sich jetzt also ordentlich installieren und anschließend auch wieder deinstallieren. Das fixt ein paar kleinere Probleme. Das Prominenteste: Das CHM-File, in dem die Tutorials sind, musste bei der alten Version noch manuell vom Spieler als „sicherer Inhalt“ markiert werden. Mit der Installation erübrigt sich dieses Problem. Was mich zum nächsten Spielzeug führt:

Der Ameisen Projekt Generator

AmeisengeneratorNachdem das Programm ja nun richtig installiert wird, fehlt das Standard Ameisen-Template aus dem bisherigen Download Paket. Das wird aber durch ein weiteres tolles Feature ersetzt: Den Template Generator. Damit kann man für jede neue Ameise auch gleich ein komplett neues Set an Solution-, Project- und Class-File erzeugen. Der Generator sorgt auch automatisch dafür, dass die Namespaces und Klassennamen dank der vorherigen Namenseingabe etwas mehr Variation kriegen und nicht alle Spieler mit dem selben Projekt arbeiten.

Multi Language

Was mich dazu führt zu erwähnen, dass der Generator auch Code für unterschiedliche Muttersprachen erzeugt. AntMe! konnte zwar schon seit Version 1.6 mehrere Sprachen (genaugenommen deutsch und englisch), aber das Template war bisher nur in deutscher Sprache. Wer also englisch coden wollte, musste sich das Template selbst basteln. Da lohnt es sich ja fast nicht zu erwähnen, dass die UI inzwischen auch übersetzt ist.

Online Anbindung

Aus Entwicklungssicht ist aber die Anbindung an das Online System das vermutlich wichtigste Feature. Man kann sich nun mit Hilfe seiner Zugangsdaten der Website am Client anmelden. Das ist die Grundlage für jegliches Online Feature (Multiplayer, Achievements, Nachrichtensystem,…) das in Zukunft von allen Plugins angesprochen werden kann. Da lohnt es sich ja schon garnicht mehr zu sagen, dass das Spiel inzwischen auch selbst rausfinden kann, ob es online eine neue Version gibt – ihr werdet also automatisch über eine Version 1.7.1 informiert.

Neue Spiel-Settings

Game SettingsZuletzt dann noch ein fast schon unscheinbares Feature, das ich einfach mal mit aufgenommen habe, weil die Sachen eh schon fertig waren. Ich hatte mal vor Jahren ein paar alternative Game Settings für einen Wettbewerb gemacht. Diese Settings fanden aber nie den Weg in die Release und wurden auch sonst nirgends verwendet. Eine Verschwendung. Neben dem Default-Setting gibt es nun auch einen Spielmodus namens „Capture the Apple“ ;)

So! Das soll‘s erstmal gewesen sein. Bitte lasst mich wissen, wie euch dieses Update gefällt, ob es für euch Sinn macht, was noch fehlt. Ich würde diesen Entwicklungs-Pfad auch nutzen, um in der alten Version noch den einen oder anderen Bug zu entfernen. Da stehen noch einige Sachen auf meiner Todo.

Zum Download

Doch jetzt endlich der lang ersehnte Download-Link:
https://service.antme.net/Download

Heute möchte ich euch gerne mit einem Interview beglücken, das Silja vor einiger Zeit mit Aydin geführt hat:

aydin-mir-mohammadi-foto.256x256

Aydin Mir Mohammadi – Geschäftsführender Gesellschafter bluehands GmbH & Co.mmunication KG

Wir möchten euch heute gern Aydin Mir Mohammadi vorstellen, Software-Entwickler aus Karlsruhe und AntMe!-Fan der ersten Stunde. Er ist nicht nur einer der drei Geschäftsführer der Firma bluehands, die Software-Lösungen für Kunden aus verschiedensten Bereichen erarbeitet, sondern unterrichtet auch an der Dualen Hochschule Baden-Württemberg.

Silja: Hi Aydin, schön, dass du uns ein bisschen von deiner wertvollen Zeit schenkst! Du und Tom, ihr kennt euch schon seit einer ganzen Weile und für Tom bist du seit Jahren ein treuer Unterstützer bei der Arbeit mit und an AntMe! Was ist es, was dich von Anfang an gefesselt hat?

Aydin: Als Tom vor gefühlten 100 Jahren – ich glaube, tatsächlich sind es mindestens 5 oder 6 – zur DotNet UserGroup kam und uns AntMe! vorgestellt hat, war ich direkt ziemlich begeistert. Denn im Gegensatz zu den üblichen Lern-Software-Angeboten ist AntMe! eigentlich ein Spiel. Mehr noch: Es ist ein Spiel mit einem ganz simplen Prinzip, das dennoch eine unglaubliche Komplexität erreichen kann. In etwa so wie Schach: Wir haben eine Hand voll grundlegender Regeln, die einfach und schnell erlernt werden können. Doch je länger und intensiver man spielt, desto detaillierter, ausgefeilter und raffinierter werden die Spielzüge. Dadurch ist AntMe! hervorragend für Einsteiger*innen geeignet, macht aber bis hinein in die Professionalität noch Spaß.

Silja: Das heißt, du spielst immer noch?

Aydin: Natürlich. Die ganze Truppe bei bluehands ist Fan von AntMe! und nach wie vor verbringen wir regelmäßig Zeit damit, unsere Ameisen gegeneinander antreten zu lassen. Es macht unheimlich Spaß gute Ameisen zu züchten und uns zu messen.

Silja: Setzt ihr AntMe! dann auch firmenintern für Ausbildungszwecke ein?

Aydin: Tatsächlich geben wir das Spiel gerne an Schüler-Praktikant*innen, die zu uns kommen, um zu sehen, was man als Software-Entwickler*in so macht. Das sind in der Regel „blutige Anfänger*innen“ zwischen 16 und 18 Jahren, die meistens keinerlei Vorbildung und noch nie eine Zeile Code programmiert haben. Die kommen für eine Wochen zu uns und wollen in unsere Firma schnuppern. Nun ist Informatik und Coding in der Regel nicht besonders zugänglich für völlig Unerfahrene. Aber AntMe! schafft es, da eine Brücke zu schlagen und zeigt auch denjenigen ohne Vorkenntnisse ganz schnell, worum es beim Programmieren eigentlich geht. Und plötzlich haben die Jungs und Mädchen Spaß daran!

Silja: Für dich ist Programmieren ein Kunsthandwerk. Kannst du erklären, was genau du damit meinst?

Aydin: Ich versuche das mal anhand eines Beispiels zu erklären: Wenn ein Schreiner einen Schrank baut, gibt es ganz unterschiedliche Dinge, an denen man sehen kann, ob der Schrank gut ist. Am wichtigsten: Erfüllt er die Aufgaben, für die er gebaut wurde, sinnvoll und gut? Aber auch: Ist er schön, stabil und leicht zu benutzen? Ist seine Oberfläche ordentlich geschliffen, sodass ich mir keine Spreißel ziehe? Und schließlich: Ist der Schrank gut konstruiert? Lässt er sich leicht zusammen und wieder auseinander bauen? Sind das beste Holz und die passendsten Schrauben verwendet worden? Je genauer ich den Schrank betrachte, desto sichtbarer wird, ob es einfach nur ein Schrank ist oder ob der Schreiner sein Handwerk wirklich bis zur Kunstfertigkeit beherrscht. Und wenn er das tut, dann machen all diese kleinen Details, die im ersten Moment nicht sichtbar sind, den Schrank zu einem kleinen Kunstwerk, das jeder gerne benutzt und gerne anschaut. Mit dem Programmieren ist es genauso: Ein Programm, das ich schreibe, läuft ja am Ende als eine Anwendung. Und je besser, je raffinierter und kunstfertiger der Code geschrieben ist, desto besser wird meine Anwendung.

Silja: Das klingt nach viel Arbeit…

Aydin: Um ein wirklich guter Programmierer zu werden, muss man bereit sein, Arbeit zu investieren, das stimmt. Aber ein Programm wie AntMe! erleichtert den Weg ungemein. Zum einen, weil es – wie schon gesagt – sehr niederschwellig ist und selbst Anfänger*innen schnell Spaß daran finden. Zum anderen, weil man sich nicht immer wieder neue Herausforderungen überlegen muss. Im Spiel gibt es ein ganz klares Ziel und die Wege, dort hin zu kommen, werden von ganz alleine immer komplexer. So bauen die Herausforderungen logisch aufeinander auf und im Laufe des Spiels steigern sich die Fähigkeiten der Spieler*innen auf ganz natürliche Weise.

Silja: Danke, Aydin, für deinen Einblick ins Programmieren!