AntMe! @ NRW Conf 2014

Veröffentlicht: 13 September 2014 in AntMe!, Development, Persönlich
Schlagwörter:, ,

NRW ConfZurück von der NRW Conf! Um es mal kurz zusammenzufassen: Es war der Hammer. Nach langer Zeit war ich mal wieder auf einer Entwickler-Konferenz und ich muss sagen, ich habe die Bühne ein bisschen vermisst.

Vorweg möchte ich ein großes Dankeschön an die Orga aussprechen. Die Veranstaltung war  einfach großartig. Angefangen bei der Location (die Börse in Wuppertal) über eine gute Auswahl der Themen und Speaker bis hin zu den Teilnehmern. Nachdem Kostja und Daniel von meiner Arbeit mit der neuen AntMe! Version gehört hatten, war auch schnell ein passender Slot für dieses Thema gefunden und ich bekam die Chance das neue Spiel vorzustellen.

Der letzte Slot vor der Abschluss-Session sollte es sein und es kamen viele Interessierte, von denen den meisten AntMe! bereits ein Griff war. Wir konnten uns also weitestgehend auf das „Was macht AntMe! 2.0 besser“ und „Wie funktioniert das mit der GmbH“ konzentrieren. Natürlich habe ich am Ende auch auf unsere Kampagne hingewiesen und hatte dann auch noch ein paar unserer T-Shirts zum Verschenken dabei.

Und dann passierte das Unfassbare: Einige Teilnehmer haben sich nicht nur ein T-Shirt genommen, sondern auch direkt eine ordentliche Barspende gegeben. Ein paar Shirts habe ich für die Verlosung am Ende aufgehoben. Andreas kam uns aber zuvor und hat in einer spontanen, herzzerreißenden Ansprache vor knapp 200 Leuten erklärt, warum jeder IT-ler im Raum dieses Projekt unterstützen muss. Es war toll. Um der ganzen Sache noch eins draufzusetzen wurden die restlichen T-Shirts dann zu Gunsten des Projektes versteigert. Wow! Ein spontaner Reinerlös von 305€ werden somit dem Projekt zugeführt. Ich danke euch allen für die unbürokratische Unterstützung!

Das bringt mich dazu folgendes loszuwerden: Wenn man an einem Projekt wie AntMe! über viele Jahre hinweg arbeit, stellt man sich durchaus manchmal die Frage, warum man das überhaupt macht. Und dann sind es Momente wie die NRW Conf, wenn gestandene und erfahrene Entwickler das Schwärmen über Ameisen beginnen, die einen davon überzeugen, dass man hier das Richtige tut.

Details zur Indiegogo Kampagne

Veröffentlicht: 21 August 2014 in AntMe!

Seit einigen Tagen läuft nun unsere Kampagne auf Indiegogo, wodurch sich inzwischen einige Fragen angesammelt haben, die es zu klären gilt. Die wichtigste Frage lautet sicher, wie das Business Modell der AntMe! GmbH aussieht und was man denn nun genau mit der Kampagne finanziert. Das lässt sich recht knapp erklären.

AntMe! ProdukteGrundsätzlich teilt sich das Angebot in Zukunft in 3 Produkte auf:

  • AntMe! 2.0 Client. Das ist der Spiel-Client, wie man ihn bereits von Version 1 kennt. Er erlaubt das Erstellen und Simulieren von beliebigen Ameisen-Völkern, sowie das Spielen der mitgelieferten Tutorials und Kampagnen. Er ist vollkommen unabhängig von den restlichen Systemen und kann daher vollkommen eigenständig betrieben werden.
    Diese Software ist und bleibt kostenfrei. Das ist auch das Stück Software, das wir mit Hilfe der Kampagne realisieren wollen!
  • AntMe! Online ist die Plattform, die dem eben genannten Client erlaubt, Ameisen-Völker weltweit gegeneinander antreten zu lassen. Spieler bekommen hier Achievements, werden in Leaderboards gelistet, können sich in Clans organisieren und sogar von unterwegs einmalig hochgeladene Völker in eine Herausforderung schicken.Diese Dienste laufen in der Cloud und verursachen uns Kosten. Da wir diese Services aber am liebsten kostenfrei anbieten wollen, haben wir uns für eine Aufsplittung in verschiedene Account-Typen entschieden:
    • Kostenfreier Account. Dieser Account wird es erlauben einen Großteil der Online-Features (Achievements, Kommunikation, Forum,…) kostenfrei zu nutzen. Selbst ein paar online Simulationen sollen möglich sein.
    • Pro Account. Dieser Account wird den vollen Zugang zum System erlauben. Freie Spiele, Herausforderungen, Achievements, Wettkämpfe, Challenge of the Day und was uns noch so alles einfällt. Das wird vermutlich so zwischen 1-2€/Monat kosten müssen.
    • Classroom Account. Dieser Account erlaubt es Schulklassen, Firmen, Clans oder sonstigen Gruppierungen im abgeschlossenen Bereich Aufgaben, Challenges und Wettkämpfe durchzuführen und eigene Leaderboards zu pflegen.
  • AntMe! Bildungsportal. Das ist der Ort an dem man alle möglichen Inhalte zu AntMe! findet. Hier unterscheiden wir zwischen Materialen, die man zu Hause oder als Einzelspieler braucht. Das sind dann eher Sachen wie die API-Dokumentation oder Zusatz-Infos zu den Tutorials und Singleplayer-Missionen. Diese Dinge werden kostenfrei zur Verfügung stehen.

    Es gibt aber auch hier einen Bereich der sich an Trainer, Lehrer, Professoren und auch alle anderen Bildungseinrichtungen richtet. Dort befinden sich vorbereitete Materialien für Unterrichts-Einheiten. Das beinhaltet Lern-Ziele, Inhalte, Arbeitsmaterialien,… Dinge, mit denen man gut strukturiert Programmieren lehren kann. Dieser Bereich wird einem Abonnenten vorbehalten sein.

 

Was passiert mit dem Gold? Im Detail!

Außerdem möchte ich gerne mal aufschlüsseln, was mit dem Indiegogo-Geld passiert, sollten 60.000€ zusammen kommen.

Schritt 1: Gebühren und Steuern

Zuerst müsst ihr natürlich wissen, dass nicht die volle Summe bei uns ankommen wird. Zuvor verlangen Indiegogo 4% für die Abwinklung und PayPal im Schnitt 3% für die Transaktionen. Außerdem werden weitere 19% von der Mehrwertsteuer berücksichtigt. Es verbleiben effektiv 47.000€.

Schritt 2: Goodies für die Crowdfunding Pakete

Jetzt haben wir aber nicht nur Einnahmen, sondern haben euch durch die verschiedenen Perks auch ein paar Gegenleistungen versprochen. Da stecken T-Shirts, Portraits, Essen, Reisekosten,… drin, die jetzt aktuell natürlich schwer auszurechnen sind, weil das Stark von der Verteilung der Pakete abhängt. Aber im Schnitt haben wir etwa einen „Gewinn“ von 75% aus einem Paket. Bleiben noch etwa 35.000€. Das ist der Betrag mit dem wir hier arbeiten können.

Schritt 3: Geld ausgeben

Folgende Liste steht natürlich nicht auf den Cent genau, zeigt euch aber etwa, in welchen Bereich das Geld verschwindet. Wir kalkulieren mit folgenden Kosten in entsprechenden Bereichen:

Web-Development (4.000€)
Dort hinein fallen die Entwicklung der Website mit Design und anpassung des CMS für unsere Anforderungen (Web-Inhalte, Downloads, Forum,…)

Art (16.000€)
Darin enthalten
– 3D-Modelle, Textur-Erstellung, UI-Grafiken
– Illustrationen für den Spiel-Client, die Dokumentation, die Tutorials,…
– Musik und Sound

Lehrmaterialien (6.000€)
Das ist der Aufwand zur Strukturierung der Lern-Einheiten, der Recherche nach Referenzen und Materialien und dem Design der Levels und Aufgaben im Spiel.

Rechtsfragen (6.000€)
Darunter fallen Lizenzfragen, Steuerabrechnung, Datenschutz-Richtlinien,…

Marketing-Aufwand (2.000€)
Das sind Bewerbungskosten für die Kampagne, Reisekosten für Events, Aktive Bewerbung per Telefon und Mails.

Was also eingangs nach recht viel Geld klingt, wird, wenn man mal ein paar Leute damit beschäftigen will, doch wieder recht überschaubar. Wir haben lange darüber nachgedacht, ob wir mit 60.000€ nicht viel zu viel angelegt haben. Wir sind aber der Meinung, dass wir mit weniger nur ein mittelmäßiges Produkt abliefern könnten und dann lieber garnichts versprechen. Bemerkt bitte, dass in dieser Kalkulation keiner aus dem Kern-Team auch nur einen einzigen Cent bekommt. Wir arbeiten auch weiterhin ehrenamtlich daran und drücken uns die Daumen, dass wir das Projekt mit eurer Hilfe realisieren dürfen! :)

Vorgestern wars soweit. Ich habe in Vertretung des AntMe! Teams (Dominik, Patric, Tom) eine ordentliche Firma gegründet – wir sind jetzt also offiziell eine GmbH in Gründung. Und ab jetzt brauche ich eure Hilfe! Doch zuvor erstmal mein Masterplan:

Wie alles begann…

Wer das Projekt schon etwas länger verfolgt, der weiß, dass wir, Wolfgang und ich, bereits 2006 die allererste Version für die Games Convention in Leipzig zusammen geklöppelt hatten. Es ging uns damals darum, die technischen Hintergründe hinter Spielen leichter verständlich zu machen. Auf einer Spiele-Messe ergibt der spielerische Ansatz deswegen besonders viel Sinn.

Der Erfolg vor Ort hat uns damals aber wirklich überwältigt. Ich erinnere mich an einige Besucher, die quasi von der Security vom Stand entfernt werden mussten, weil sie sich in der Aufgabenstellung des Spiels verbissen hatten und nicht mehr locker lassen wollten. Aus heutiger Sicht weiß ich, dass das mit Abstand das Schönste ist, was einem Spieleentwickler passieren kann.

CeBIT TeamDoch mit der Games Convention vor 8 Jahren sollte nicht Schluss sein. Dank einer frühen Kooperation mit Microsoft (Danke an Uwe Baumann, der das Potential des Spiels sehr schnell erkannt hatte) bekamen wir die Chance auf vielen weiteren Messen (darunter viele Games Conventions, CeBITs, unzählige Girlsdays und Thyssenkrupp IdeenParks,…) auf denen sich dieses Schauspiel der Begeisterung einfach immer und immer wieder wiederholt hat. Leuchtende Augen überall.

So kamen dann nach und nach auch weitere Helfer mit ins Team, die vollkommen ehrenamtlich viel Herzblut investiert haben, um das Projekt weiter zu bringen. Leute wie Maike Reiner und Sebastian Loers, sowie unsere akademischen Freunde Christine Helfer, Matthias Utesch und Andreas Judt haben enorm viel bewegt.

Gerade wenn viel Ehrenamt im Spiel ist, stellt man sich früher oder später die Frage, ob es eine Möglichkeit gibt, Helfer in irgend einer Form zu entschädigen – und seien es nur Reisekosten. Leider haben uns da ein paar Gespräche mit Gründerberatern ernüchtert. Mit unseren idealistischen Werten lies sich kein Business Modell finden, das uns finanzieren könnte und so verliefen sich unsere Aktivitäten so langsam, da sich früher oder später jeder in einem vereinnehmenden Arbeitsverhältnis wieder fand.

Warum der neue Versuch?

Die vergangenen 2 Jahre habe mir ein paar interessante Erkenntnisse verschafft, die mich jetzt ein weiteres mal viel Geld und Zeit in das Projekt investieren lassen. Ihr solltet wissen, dass wir, auch wenn wir nicht mehr aktiv am Projekt gearbeitet haben, niemals die Website offline genommen haben. Die Software – wenn auch inzwischen 6 Jahre alt – war und ist weiterhin verfügbar.

Unsere Besucher- und Download-Zahlen sind (trotz aktuell furchtbarer Website – sorry dafür, ich arbeite dran) weitestgehend stabil. Ebenso erreichen mich regelmäßig Nachrichten von Wettbewerben und aktivem Einsatz an einigen großen deutschen Hochschulen. Die Ameisen finden also weiterhin Einsatz an wichtigen Bildungseinrichtungen, obwohl die grafische Ausführung durchaus etwas Tuning vertragen könnte – auch daran arbeite ich.

Hinzu kommt, dass ich bei nahezu jedem Vortrag, den ich in den vergangenen 2-3 Jahren gehalten habe, nach meiner „Ich habe AntMe! gemacht“-Slide immer ein paar Leute aufhüpfen und schreihen „Wegen DEINEM SPIEL hab ich Informatik studiert!“. Ok. Es lief nicht ganz so dramatisch ab, aber den Satz habe ich inzwischen tatsächlich schon oft gehört. Und ich bilde mir ein, dass es bei den Absolventen-Zahlen der MINT-Fächer in den Jahren 2011 und 2012 (also etwa 8 Semester nach unserer aktiven Phase) einen erkennbaren Zuwachs gibt – ich nenne ihn liebevoll den AntMe!-Peak ;)

AntMe! bleibt relevant!

Mein Glaube an das Produkt AntMe! gründet aber weniger in der Nostalgie der Geschehnisse, als vielmehr in der weiterhin brisanten Nachwuchs-Situation der ganzen naturwissenschaftlichen Disziplinen. Jedem ist inzwischen klar, dass IT so ziehmlich in jedem einzelnen (Industrie-)Zweig unserer Gesellschaft nicht mehr wegzudenken ist. Trotzdem ist und bleibt der Informatiker oder Programmierer eher unattraktiv für einen Großteil der Menschheit. Dementsprechend flach ist die Kurve der nachwachsenden Absolventen in diesem Bereich – ich selbst traue mich beim Kennenlernen von Leuten ja auch nicht direkt zu sagen, dass ich zu den Nerds gehöre.

AnonietteIn unseren Augen liegt das mangelnde Interesse größtenteils an der irrsinnigen Abstraktion des Themas und die Unfähigkeit, die Berührungsängste in den entscheidenden Altersgruppen zu nehmen. Ich denke mal, ich brauche hier niemandem vor Augen zu führen, wie Informatik-Unterricht (sofern er denn stattfindet) in heutiger Zeit immernoch aussieht. Man überzeugt einen heutigen jugendlichen nicht damit, zwei Zahlen auf der Konsole addieren zu können. Hier geht es vielmehr um die Grundbegeisterung, die man wecken muss.

Und genau da bringt AntMe! ein paar entscheidende Faktoren mit, die auch ähnliche Produkte wie Alice, Cara und auch Code Combat nicht leisten können:

  • Das Spiel schafft es sehr schnell, dem Spieler ein grobes Bild davon zu vermitteln, mit welchen Problemen ein Programmierer täglich zu kämpfen hat und mit welchem Handwerkszeug er umgehen muss. Sogar die Analogie zur Bug-Bekämpfung passt. Natürlich bändigt ein „echter“ Programmierer selten Ameisen, die verwendeten Mechanismen sind der echten Welt aber erschreckend ähnlich.
  • Das Spiel steigt mit einem Szenario ein, das jedem Kleinkind bekannt ist: Ameisen müssen Zucker sammeln, bauen Ameisenstraßen und arbeiten mithilfe von Duftmarken zusammen. Man muss für eine glaubwürdige Aufgabenstellung nichts fiktives konstruieren. Hinzu kommt, dass die Ameisen in der jeweiligen Landessprache (also „GeheGeradeaus()“ in Deutsch, „GoAhead()“ in Englisch) programmiert werden können. Das klingt für einen ausgewachsenen Programmierer erstmal grausam, baut aber unnötige Hürden beim Erstkontakt ab.
  • Was der Spieler im Spiel lernt, lässt sich 1:1 in der Praxis anwenden. Er verwendet eine professionelle Entwicklungsumgebung (Visual Studio), eine marktrelevante Sprache (C#) und aktuelle Programmiermodelle (OOP, Events, Asynchronität, Lambda-Expressions,…).
  • Ein Spieler kann mit dem passenden Begleitmaterial auch gleich die kompexeren Theorien hinter seiner Ameise verstehen. So wendet er automatisch den objektorientierten Ansatz an, indem er eine Ameise programmiert und 100 Instanzen im Spiel bekommt. Hand aufs Herz: Wie lange habt ihr gebraucht, um OOP wirklich zu begreifen ohne es in einem sinnvollen Umfeld angewendet zu haben?

Und darin besteht nun der Zauber hinter den Ameisen. Denn egal wem man das Spiel gibt, er wird seinen Nutzen daraus ziehen. Angefangen bei jemandem, der sich wirklich überhaupt nicht für Technik interessiert. Auch er wird nach dem Spiel mit AntMe! nicht zum Informatiker. Aber das Spiel gibt diesem Menschen die Chance auf einen Einblick in dieses Aufgabengebiet. Damit kann er sich dann etwas objektiver dagegen entscheiden, wird aber in Zukunft sicher etwas mehr Grundverständnis mitbringen.

Für Unentschlossene ist es eine perfekte Möglichkeit den Umgang mit einer Entwicklungsumgebung zu trainieren, sicheren Umgang mit Code zu lernen und dabei auch noch Spaß zu haben.

Studenten, für die die Theorie dahinter wesentlich wichtiger als der Code ist, können verschiedenste Patterns und Techniken zuerst anwenden, um danach die Theorie umfassender zu begreifen.

Und selbst für alteingesessene Programmierer kann das Spielen mit den Ameisen eine echte Herausforderung sein – sozusagen E-Sports für Nerds. Viele Grüße an dieser Stelle an meine Freunde der .NET Usergroups in Karlsruhe, Braunschweig, NRW, Dresden und München.

Business-Modell

Beim Schreiben der ersten Zeile AntMe! haben Wolfgang und ich beschlossen, dass die Software für Bildung und Forschung immer frei sein soll. Dem Grundsatz will ich auch weiterhin treu bleiben, weil das nun mal Sinn und Zweck der Entwicklung war.

Logo

Wie also lässt sich in ein funktionerendes Business-Modell umwandeln? Grundsätzlich sieht unser Konzept 3 unterschiedliche Produkte/Leistungen vor:

  1. Der AntMe!-Client (das eigentliche Spiel), der für Bildung und Forschung, sowie den privaten Gebrauch weiterhin frei verwendbar sein soll. Darin angebunden natürlich ein API-Wiki, Forum und Dokumentation.
  2. AntMe! Online. Eine Plattform, die das freundliche Miteinander in AntMe! erlaubt. Angemeldete Spieler können ihre programmierten Ameisen hochladen und andere Spieler herausfordern. Die Simulation läuft dann in der Cloud.
  3. Die Bildungsplattform. Das ist eine Mischung aus ausgearbeitetem Unterrichtsmaterial und der Online-Plattform, die im Klassenverband zentralisiert Programmier-Aufgaben stellen kann. Hinzu kommt hier professioneller Support und die Möglichkeit Trainer zu buchen.

Wie man sofort erkennen kann, ist die Wertschömpfung primär auf Dienstleistung und Services ausgelegt, weniger auf das Produkt selbst. Damit das Grundprodukt aber überhaupt enstehen kann, braucht es noch etwas Power.

Das letzte halbe Jahr habe ich darauf verwendet, einen soliden Prototypen zu bauen, den ich als Alpha 1 zur Verfügung gestellt habe. Das war der Punkt, an dem ich beschlossen habe, das jetzt etwas ernster anzugehen und mir einen Finanzierungsplan zu überlegen, um das Spiel fertig zu stellen. Inzwischen bin ich etwas weiter und habe ein grafisch ansprechendes Zwischenprodukt namens „Alpha 2“, die ich auch in Bälde mal online stellen werde. (Hier gerne in den Beta Newsletter eintragen). Eine bodenständige Version soll also noch dieses Jahr fertig werden.

Was kannst du tun?

Inzwischen ist der Entwicklungsplan recht stabil. Und da kommt wieder die GmbH ins Spiel. Das ist nämlich der Punkt, an dem ich eure Begeisterung und auch finanzielle Unterstützung brauche. Ich selbst bin nur Programmierer und möchte für eine ansprechende Aufmachung des Spiels professionelle Artists und Illustratoren haben. Ebenso sollen gute Autoren und Pädagogen die Geschichte schreiben. Immerhin haben wir aus den vergangenen Jahren enorm viel Verbesserungspotential erkannt.

Wenn du das gut findest, solltest du dir folgende Frage stellen: Bist du ein erfolgreicher IT-ler, der in seinem Studium Ameisen gespielt hat oder sogar durch AntMe! inspiriert worden? Oder vielleicht Teil einer IT-Firma die Azubis mit Ameisen lockt oder in der Mittagspause gerne mal den Ameisenhügel verteidigt? Oder auch Lehrer, Professor, Dozent oder Ausbilder an einer der zahlreichen Bildungsstätten dieses Landes? Aber vielleicht auch Einfach jemand, der die Wichtigkeit von Weiterbildung im IT-Bereich erkannt hat?

Dann gibt es zahlreiche Möglichkeiten uns in unserem Vorhaben zu unterstützen.

Schritt 1: Unterstütze uns mit deinem Daumen auf Facebook und bleibe über den Newsletter am Ball. Damit stellst du sicher, dass du immer auf dem Laufenden bleibst. Außerdem zeigst du uns dadurch, wie viele Leute das Thema als relevant erachten und unsere Lösung gut finden.

Schritt 2: Schick das hier an alle, die damit was anfangen können. Ihr wisst, wie wichtig Reichweite ist. Wenn es ein gutes Spiel werden soll, ist ein direkter Draht zu möglichst vielen Leuten Gold wert. Außerdem motiviert Zuspruch!

Schritt 3: Werde Sponsor, Unterstützer, Botschafter!

Ich weiß, dass es euch gibt da draußen. Generationen von IT-Anwärtern werden euch dankbar sein!

Ants Business

Veröffentlicht: 19 Juni 2014 in AntMe!
Schlagwörter:, , ,

BoogieAktuell arbeite ich an den ersten Levels für AntMe! 2.0. Es geht dabei nicht nur darum eine flache, braune Spielfläche zur Verfügung zu stellen, auf der ein Spieler gegen automatisierte und dämliche Wanzen spielen muss.

Das Spielkonzept bietet hier wesentlich mehr, mit dem ein Level-Designer arbeiten kann. Wie ich schon in vorherigen Blog-Einträgen verraten habe, wird das Spielfeld in Zukunft über diverse topologische Eigenschaften verfügen und unterschiedliche Oberflächenbeschaffenheiten aufweisen können. Dazu kommen weitere Spielelelemente, mit denen die Ameise interagieren kann.

Eines der mächtigsten Tools für einen Level-Designer ist aber die Möglichkeit eines ausgeklügelten Scriptings. Es erlaubt es, die Spielumgebung interaktiv zu gestalten und auf Aktionen des Spielers zu reagieren. Betritt eine Ameise beispielsweise einen bestimmten Spielbereich, können neue Einheiten Spawnen, Hindernisse verschwinden oder Dialoge gestartet werden – schlicht Geschichten erzählt werden.

Verbindet man die kleinen Geschichten einzelner Aufgaben und Levels zu einem fortlaufenden Ereignis-Strang, erhält man eine packende Geschichte mit Höhen und Tiefen unserer neuen Protagonisten, die den Spieler ständig motivieren auch noch die nächste Aufgabe zu meistern und dadurch mehr über die Informatik zu erfahren! Ich freue mich schon sehr auf die Reaktionen der ersten Beta-Tester.

Die passende Mailing-Liste ist weiterhin offen und freut sich über interessierte Teilnehmer. An alle die sich kürzlich eingetragen haben und nun auf Post warten: Ich arbeite auf Hochtouren an einer neuen Alpha, damit ihr was zu spielen habt. Bitte schaut auch gerne immer mal wieder in unserer Facebook Gruppe vorbei.

Howto play AntMe! 2.0

Veröffentlicht: 31 März 2014 in AntMe!, Development

tomEine der wichtigsten Fragen, wenn es um AntMe! 2.0 geht, ist sicher die Frage nach dem Gameplay. Ich kann alle beruhigen, die mir gesagt haben, dass es weiterhin so simpel bleiben muss wie bisher. „Bitte kein Neustart“, „bitte nicht alles anders“ haben mir viele Lehrer und Trainer gesagt, als ich ihnen von der neuen Version erzählt habe. Das habe ich mir sehr zu Herzen genommen. Daher wird einem die neue Ameisen-API sehr, sehr vertraut vorkommen. Die Ameisen werden weiterhin mit Events funktionieren. Allerdings bekommt der Spieler wesentlich mehr Informationen über seine Umgebung, sodass die aktuelle Situation wesentlich besser analysiert werden kann. Allerdings kommt mit AntMe! 2.0 auch die Möglichkeit hinzu, die Wanzen zu programmieren. Damit das nicht langweilig wird, arbeiten diese Kollegen nach einem komplett anderen Programmier-Konzept. Man darf gespannt sein. In diesem Artikel gehts nämlich erstmal nur um die Ameisen.

Templates

Besonders wichtig bei der Neuumsetzung des Spiels war die Überarbeitung des Erstellungsprozesses von neuen Ameisen. Bisher wars ja so, dass der Spieler händisch das Ameisen-Projekt kopieren musste. Das ist recht heikel, weil der Spieler im Normalfall ja nicht wirklich weiß, was er da tut. Mal ganz abgesehen davon, dass die Runtime diverse technische Schwierigkeiten bekommt, da alle Spieler-Dateien ja scheinbar aus dem selben Projekt stammen, aber unterschiedliche Inhalte aufweisen. Diese kleine Hürde wird dem Spieler in Zukunft genommen. Ein Generator für diese Ameisen-Templates erstellt dem Spieler erstmal ein Grundgerüst für jegliche unterstützte Kombination an Entwicklungsumgebung, Sprache und Programmiersprache. Der Spieler wählt also „Visual Studio 2013“, „C#“, dann „Deutsch“ und am Ende fällt ein fertiges Visual Studio Projekt heraus mit dem es dann los gehen kann. Realisiert wird das über Code-Generatoren. Darüber schreibe ich aber mal, wenn es um die Erweiterbarkeit von AntMe! 2.0 geht.

Lokalisiert Spielen

Bekannt aus vorherigen AntMe! Versionen spielt der Spieler wieder lokalisiert in seiner Muttersprache. Das ist und bleibt eines der Grundkonzepte der Ameisen, weil wir extem positive Erfahrungen damit gemacht haben, den Spieler nicht gleichzeitig mit der Programmier-Herausforderung auch noch mit einer Sprachbarriere zu konfrontieren. Die Ameisen reagieren also weiterhin auf ein GeheGeradeaus() oder Nimm(zucker) und verfügt über Events wie Sieht(Zucker zucker). Kontrollstrukturen und Schlüsselworte bleiben natürlich weiter C#-üblich.

Ameisen produzieren

Eine kleine Änderung gibts dann aber doch – zu Gunsten einer korrekten Umsetzung der OOP. Der Generator erzeugt nämlich direkt zwei Klassen im Projekt. Neben der Klasse, die die Ameise repräsentiert, gibt es noch eine übergeordnete Rolle, die die komplette Kolonie darstellt. Diese zweite Klasse übernimmt die Aufgabe der bisher statischen BestimmeTyp()-Methode der alten Version. Sie gliedert die Aufgabe der Erzeugung neuer Ameisen in eigenen Aufgabenbereich aus, damit der Spieler bei der Erstellung seiner Ameisen etwas freier ist. Eine ganze Reihe von Informationen über das aktuelle Volk (Punktestand, Ameisen-Typ Verteilung, Kampf- und Ressourcen-Statistiken) unterstützen den Spieler bei der Entscheidung, welche Ameise als nächstes erzeugt werden soll. Ganz nebenbei erfüllt diese Klasse auch direkt die Funktion eines Fabric-Patterns, wodurch hier auch schon die ersten Informatik-Pattern äußerst plastisch dargestellt werden.

Ameisen spezialisieren

Die Auslagerung der Erzeugungsklasse hat aber nicht nur positive Auswirkungen auf die Code-Struktur, sondern erlaubt es auch, dem Spieler etwas mehr Freiheit bei der Spezialisierung seiner Ameisen zu machen. Ameisen konnten ja bislang mit Hilfe der Kasten-Attribute in Gruppen unterteilt werden. Der Code, der alles steuert, befand sich aber weiterhin in einer einzigen Datei. Wollte man den „Sammler“ anders agieren lassen, als den „Kämpfer“, so musste man als Programmierer in jeder Methode eine Weiche einbauen. Das ist nicht ganz im Sinne der objektorientierten Programmierung. AntMe! 2.0 löst dieses Problem weitaus besser: Die zentrale Klasse des Volkes wird in Zukunft nicht mehr die Ameise, sondern die Ameisen-Fabrik, die Colony-Klasse, sein. Die Implementierung der Ameise verläuft dann vollkommen frei und kann beliebig vererbt werden. Das Kaste-Attribut gibt es zwar weiterhin, aber nur um eine konkrete Implementierung mit der Fertigkeitsverteilung zu belegen – also nutzen wir nur noch die deklarative Funktionsweise eines Attributs. Es wird also möglich sein für sein Volk eine Basisameise zu implementieren, die Grundfunktionen wie die Wegfindung, Dekodierung von Markierungen,… übernimmt. Die Spezialisierung zum Kämpfer oder Sammler kann dann in einer spezialisierten Klasse passieren – ganz im Sinne der OOP.

Wahrnehmung der Welt

Wesentliche Verbesserungen sind bei der Wahrnehmung der Umgebung vorgenommen worden. Wo die alte Version pro Event immer nur das erstbeste Objekt geliefert hat, kann die Ameise in Zukunft ihre Umwelt vollkommen frei analysieren. Richtig kritisch ist dieses Problem bei der Verfolgung einer Markierungsspur. Die alte API liefert bei Riecht(Markierung) lediglich die Markierung, die zuerst gesichtet wurde – und das auch nur ein einziges mal bei Sichtung. Es ist also wirklich schwer eine Ameisenstraße zu analysieren um die Herkunft zu ermitteln. Ein paar Hilfsvariablen wie AmeisenInSichtweite, die die Menge der benachbarten Ameisen zurück geliefert hat, war leider nur selten hilfreich. In Zukunft wird dem Spieler eine Liste von sichtbaren Elementen zur Verfügung gestellt. Eine Variable RiechbareMarkierungen liefert alle wahrgenommenen Markierungen. Das ist der Moment, in dem Schleifen und Lambdas in Spiel kommen. So lässt sich mit RiechbareMarkierungen.OrderBy((m) => (m.Entfernung)). FirstOrDefault() die Markierung ermitteln, die der Ameise am nächsten steht.

So funktionieren die Ameisen im Hintergrund

Alles in allem hat sich die Architektur von Version 2.0 wesentlich generischer entwickelt, um wirklich sehr flexibel bei zukünftigen Entwicklungen zu bleiben und ein Höchstmaß an Erweiterbarkeit zu sichern. Ich will mich bei der Beschreibung hier aber erstmal auf den Ablauf bei den Ameisen beschränken. Im Übrigen funktioniert bei den Wanzen auch wieder alles ganz anders ;) Alles fängt damit an, dass es eine generische Implementierung von Factions, also Fraktionen, Parteien, Rassen,… gibt die von beiden Rassen (Ameisen und Wanzen) gleichermaßen verwendet werden. Die konkrete Implementierung bestimmt dann, wie der Ablauf dieser Rasse im Spiel abläuft (Wann neue Einheiten erstellt werden, wie neue Einheiten erstellt werden,…). Im Ameisenfall ist festgelegt, dass es eine Colony-Klasse geben muss – mehr erstmal nicht. Die Colony-Klasse verfügt in Zukunft auch über das Spieler-Attribut, das Auskunft über den Kolonie-Namen und die Autoren-Referenz gibt. Geht eine Simulation los, wird beim erzeugen einer Ameise diese Colony gefragt, welche neue Ameise erzeugt werden soll. Der Rückgabewert ist hier ein schlichter Type der von der AntFaction untersucht wird. Handelt es sich hierbei um eine gültige Ameisen-Klasse (erbt sie von einer Basisklasse, verfügt sie über ein Kasten-Attribut), wird eine Instanz davon erzeugt und die Simulation erhält einen Repräsentaten in Form einer Ameise. Erlebt die Ameise innerhalb der Simulation irgendetwas spannendes (sieht Zucker oder so), wird dem Programmierer mit Hilfe eines Interop-Objektes ein Ereignis geworfen, das letztendlich zur Ausführung der entsprechenden Methode führt.

Basis API

Das eben erwähnte Interop-Objekt ist – im Gegensatz zur vorherigen Version der Lokalisierung – die zentrale Schnittstelle zwischen dem Ameisen-Objekt der Simulation und der lokalisierten API für den Spieler. Dieses Interop-Objekt verfügt über wesentlich rohere Daten als die übersetzte API. Was bei der deutschen Lokalisierung noch SichtbareAmeisen, SichtbareWanzen,… heißt, ist im Interop-Objekt noch in VisibleItems zusammengefasst. Das kann in manchen Situationen sehr, sehr nützlich sein. Ebenso sind die Events, die eintreffen, etwas generischer. So gibt es nur ein Spots(Something)-Event – ohne Differenzierung des Element-Typs. Ameisenvererbung Profis können das für sich nutzen. Einerseits steht dem Programmierer bereits in den Standard-Templates ein Interop-Objekt zur Verfügung, auf das frei zugegriffen werden kann. Der Spieler kann aber auch von Anfang an über das Erben einer anderen, wesentlich niedrigeren Version der Basisameise Zugriff darauf verschaffen und seine API nach eigenem Ermessen basteln.

Willst du die Alpha testen?

So! Die erste spielbare Alpha steht bereits fast vor der Tür. Leider lässt hier der Komfort und Unterstützung durch Dokumentation und Hilfe-Dialoge noch etwas zu wünschen übrig, weshalb das hier sicher nur was für Leute ist, denen der Prozess des Erstellens eigener Projekte, Referenzierung von Assemblies und Einbinden von Namespaces nicht unbekannt ist. Da ich aber gerade jetzt, wenn es um die Gestaltung des Spiel-Interfaces geht, gaaaanz, ganz viel Feedback brauche, würde ich gerne ein paar Leute zum geschlossenen Test einladen. Fühlst du dich angesprochen, dann schreib mir doch bitte direkt eine Email (tom@antme.net) mit ein paar Worten dazu, was du so machst und in welchem Zusammenhang du zum Ameisen-Projekt stehst. Ich würde mir wünschen, wenn sich auf diesem Weg ein paar Lehrer, Trainer und Pädagogen bei mir melden, damit ich hier möglichst früh noch euer Feedback einbeziehen kann. Danke für euer Unterstützung!