Dojo Game | Dein Einstieg ins Spiel


In diesem Abschnitt findest du alle notwendigen Infos, um das Dojo Game zu starten und erste Aktionen durchzuführen.

Hinweis: Hol dir deinen persönlichen Zugang bevor du startest bzw. logge dich ein. So erscheinst du später auch am Leaderboard!

Das Spiel

Im Dojo Game geht es, einfach erklärt, um einen Server, auf welchem ein Spiel für dich bereitgestellt wird. In diesem Spiel gibt es im Singleplayer-Modus einen Gegner, den sogenannten Dojo-Bot, und deinen Charakter. Dein Ritter hat dieselben Eigenschaften wie ein vom Computer gesteuerter Ritter. Über bestimmte Befehle (diese werden über URLs aufgerufen) kannst du deinen Spieler steuern und so programmieren, dass dieser mit deinen Gegnern kämpft, vor ihnen wegläuft oder andere strategische Aktionen ausführt. Ziel ist es, so viele Gegner wie möglich zu eliminieren.
Ein Spiel dauert maximal 15 Minuten - danach wird deine Sitzung geschlossen. Es gibt innerhalb dieser 15 Minuten unendlich viele Gegner. Wird ein Bot getötet, wird dieser auf einer zufälligen anderen Stelle der Map wiedergeboren. Bei Start eines neuen Spiels beginnst du immer automatisch neu in Level 1.

Vorbereitung

Um am Dojo Game teilzunehmen, benötigst du einen an das Internet angeschlossenen Computer, einen Digital Dojo Zugang. Sobald du eingeloggt bist, findest du im Folgenden deinen API-Schlüssel, den du schon bald brauchen wirst.

Die Logik deines Spielers kannst du in jeder beliebigen Programmiersprache implementieren, da Web-Requests an eine API von fast jeder verfügbaren Programmier- und Skriptsprache unterstützt werden.

Falls du Starthilfe benötigst und auf bereits erstellte Algorithmen aufbauen möchtest, kannst du dich hier umsehen.

Die REST-API Befehle können auch mithilfe vom Fiddler oder dem Postman gesendet werden. Diese Programme werden meistens zum Testen oder für Prototypen verwendet und benötigen keinen Programm-Code zum Funktionieren.

API-Schlüssel

Mithilfe deines Keys kannst du dich mit unseren Servern verbinden um dein Spiel zu starten. Zudem werden damit deine gesendeten Befehle identifiziert, damit Aktionen, welche du ausführst, auch wirklich nur für dich gelten. Somit wird verhindert, dass du die Spiele anderer User stören oder manipulieren kannst. 

Halte deinen Schlüssel geheim - er könnte es anderen Nutzern ermöglichen, Befehle auszuführen welche nicht in deinem Sinne sind!

Du musst angemeldet sein um einen API-Key zu erhalten.
text/x-csharp

Los geht's


In diesem Abschnitt erfährst du, wie du ein Spiel startest und beendest, den Status des laufenden Spiels abfragen kannst, und wie sich dein Ritter steuern lässt.

Wie starte ich ein Spiel? [POST]


Um ein Spiel zu starten, benötigst du deinen API-Schlüssel. Wurde dieser Befehl erfolgreich ausgeführt, wird das Spiel automatisch gestartet und du kannst direkt Aktionen zum Bewegen des Ritters ausführen.

Falls bereits ein Spiel mit deinem Charakter läuft, musst du dieses zuerst beenden, bevor du ein neues erstellen kannst. Spiele werden mithilfe eines POST-Requests erzeugt.

https://game-dd.countit.at/api/game/{key}/create
text/x-csharp

Wie beende ich ein Spiel? [POST]


Ein Spiel wird beendet, wenn du mit deinem API-Key folgenden Befehl als POST-Request ausführst:

https://game-dd.countit.at/api/game/{key}/close
text/x-csharp

Status des laufenden Spiels abfragen [GET]


Um abfragen zu können, ob mit deinem API-Schlüssel bereits ein Spiel läuft, kannst du den folgenden Befehl verwenden. Du erhältst als Rückgabewert dasselbe wie beim Erstellen und Schließen eines Spiels sowie eine Fehlermeldung, falls kein Spiel vorhanden ist.

https://game-dd.countit.at/api/game/{key}/status
text/x-csharp

Beim Erstellen und Beenden eines Spiels werden jeweils dieselben Daten zurückgeliefert: 

→ Game-ID: Diese macht dein Spiel identifizierbar.
→ Running: Damit werden dein Spielstatus und der Name des geladenen Levels sichtbar.

Der zurückgegebene String ist im JSON Format.

{"gameid":"d2144a67-733a-4e06-8a6b-9ce877b99753","running":true,"level":"The Default Level"}
text/x-csharp

Steuere deinen Ritter


Ein Ritter hat die Möglichkeit auf einem zweidimensionalen Spielfeld verschiedenste Aktionen auszuführen. Aktionen sowie ihre Wirkungen und REST Aufrufe sind hier gelistet. Versuche deine Aktionen nicht zu schnell hintereinander auszuführen, da du nach jeder Aktion eine gewisse Zeit abwarten musst, bis du diese wieder einsetzen kannst. Dein Ritter führt nur Befehle aus, welche du ihm gibst. Sendest du deinem Spieler keine Aktionen, welche dieser ausführen soll, steht dieser durchgehend auf derselben Position und ist verletzbar.

Move [POST]


Du kannst deinen Ritter alle 250 Millisekunden um ein Feld in eine der vier Himmelsrichtungen bewegen.
Das Feld "Direction" sollte eine Zahl zwischen 0 und 3 enthalten:

→ 0 für Norden
→ 1 für Osten
→ 2 für Süden
→ 3 für Westen

https://game-dd.countit.at/api/player/{Key}/move/{direction}
text/x-csharp

Dash [POST]


Dash lässt dich 5 Blöcke in eine von dir bestimmte Richtung bewegen.
Es hat außerdem einen besonderen Cooldown: Du kannst Dash schon 3 Sekunden nach der Aktivierung verwenden, aber dein Spieler wird zu erschöpft sein und sich nur 3 Blöcke bewegen. Doch aufgepasst, wenn du gegen eine Wand dasht nimmst du Schaden in Höhe der verbleibenden Dash-Distanz. Nachdem du diese Aktion verwendet hast, musst du 5000 Millisekunden warten.

https://game-dd.countit.at/api/player/{Key}/dash/{direction}
text/x-csharp

Hit [POST]


Diese Aktion wird benutzt, um mit deinem Ritter zu schlagen. Es kann jeweils nur in eine Himmelsrichtung (0 für Norden, 1 für Osten, 2 für Süden und 3 für Westen) geschlagen werden und dies nur einen Block weit. Danach musst du 150 Millisekunden warten, bis du wieder angreifen kannst. Ein normaler Schlag, welcher mit einem Abstand von einem Block erzielt wurde, fügt dem Gegner weniger Schaden zu als wenn du auf demselben Block wie ein Gegner stehst. Hierbei ist es egal, wie viele Gegner auf einem Fleck stehen. Jeder bekommt gleich viel Schaden.

https://game-dd.countit.at/api/player/{Key}/hit/{direction}
text/x-csharp

Shoot [POST]


Shoot benötigt, wie Peek, eine Direction (0 für Norden, 1 für Osten, 2 für Süden und 3 für Westen), also eine Richtung. Shoot verwendet diese Richtung, um einen Schuss in diese Richtung abzugeben. Als Antwort kommt zurück, ob diese Aktion ausgeführt wurde und ob ein Gegner getroffen wurde. Die Kugel stoppt beim ersten Spieler. Nachdem du diese Aktion verwendet hast, musst du 2000 Millisekunden warten.

https://game-dd.countit.at/api/player/{key}/shoot/{direction}
text/x-csharp

Radar [GET]


Mit dem Befehl "Radar" kannst du die Umgebung um deinen Spieler im Umkreis von 5 Blöcken auf Feinde überprüfen. Das Feld wird aufgeteilt und durchsucht. Danach erhältst du Informationen über die Anzahl der Spieler in den 4 Himmelsrichtungen und den Block, auf dem du stehst. Nachdem du diese Aktion verwendet hast, musst du 5000 Millisekunden warten.

https://game-dd.countit.at/api/player/{key}/radar
text/x-csharp

Scan [GET]


Mit Scan kannst du den am nächsten stehenden Spieler im Umkreis von 3 Blöcken finden. Durch den Rückgabewert weißt du dann auch, was seine relative Position zu dir ist. Nachdem du diese Aktion verwendet hast, musst du 2000 Millisekunden warten.

https://game-dd.countit.at/api/player/{key}/scan
text/x-csharp

Peek [GET]


Peek benötigt, wie Move und Hit, eine Direction (0 für Norden, 1 für Osten, 2 für Süden und 3 für Westen). Peek verwendet diese Richtung, um zu überprüfen, ob sich in der angegebenen Richtung ein Spieler in deinem Sichtfeld befindet. Peek gibt dir dann die Anzahl der Gegner in der Sichtlinie und die Distanz zum nächsten stehenden Spieler in dieser Sichtlinie zurück. Dies kannst du alle 10000 Millisekunden verwenden.

https://game-dd.countit.at/api/player/{Key}/peek/{direction}
text/x-csharp

Stats [GET]


Mit Stats hast du die Möglichkeit dir deine Kills und Deaths des aktiven Spiels anzusehen. Der Rückgabewert weicht vom Rückgabewert der anderen Funktionen ab - enthalten sind Informationen zum derzeitigen Level, allgemeine Stats sowie Informationen zu den Lebenspunkten eines Spielers.

progress - gibt an, wie weit du ein Level bereits abgeschlossen hast (%)
remainingtime - gibt an, wieviele Minuten noch übrig sind bevor das Spiel gestoppt wird
deathsleft - gibt an, wie oft du noch sterben darfst, bevor das Spiel gestoppt wird

https://game-dd.countit.at/api/player/{Key}/stats
text/x-csharp

Der Rückgabewert dieser Funktion wurde mit dem letzten Update verändert. Hier ein Beispiel für den neuen Rückgabewert:

{"action":"stats","executed":true,"stats":{"kills":1,"deaths":1},"level":{"progress":6.6,"remainingtime":14.44,"deathsleft":999,"levelid":2,"name":"Bigger Map Level"},"health":{"currenthealth":10.0,"maxhealth":10.0}}
text/x-csharp

Specialattack [POST]


Specialattack ist eine Aktion, welche du viel seltener als einen normalen Schlag ("Hit") einsetzen kannst. Diese hat allerdings eine bestimmte Fähigkeit und verursacht dadurch mehr Schaden an deinem Gegner. Specialattack nimmt keine Direction als Parameter entgegen, sondern führt den Angriff in allen Richtungen mit einem Wirkungskreis von 3 Blöcken gleichzeitig aus. Du kannst die Specialattack alle 5000 Millisekunden ausführen.

https://game-dd.countit.at/api/player/{Key}/specialattack
text/x-csharp

Teleport [GET]


Mit Teleport kannst du dich auf ein beliebiges Feld teleportieren. Der Trick dabei: Du musst das Feld relativ zu deiner Position mithilfe von x und y Koordinaten angeben. 
Cooldown: 20000 Millisekunden (20 Sekunden)

Achtung: Falls du in einer Wand landest bist du sofort tot. Wenn du allerdings einen Gegner erwischst, wird dieser sofort getötet.

https://game-dd.countit.at/api/player/{key}/teleport/{x}/{y}
text/x-csharp

Rückgabewert


Jede Aktion gibt im Prinzip immer einen gleich strukturierten JSON-String zurück. Jedoch können sich die Datentypen der einzelnen Felder je nach Aktion unterscheiden.
Hier zwei Beispiele, um dies zu verdeutlichen:

Die Move-Aktion, ohne speziellen Rückgabewert:

{"action":"move","move":"true","executed":"true"}
text/x-csharp

Die Radar-Aktion, mit einem Integer als Rückgabewert:

{"action":"radar","radar":2,"executed":"true"}
text/x-csharp

Bereit für die ultimative Programmier-Challenge an deiner Schule?

Alle Infos dazu findest du hier
Ultimative Coding-Roadmap

Unsere Roadmap weist dir den Weg zum Coding-Profi!

Besiege unseren Bot

Egal ob als Einzelspieler oder im Mulitplayer-Modus: Stelle dich dem Dojo-Bot und beweise, dass du auf das Leaderboard gehörst!

Bewerbung bei COUNT IT

Starte deine Karriere als Softwareentwickler*in bei COUNT IT.

Über Digital Dojo

Das Digital Dojo ist der virtuelle Übungsraum von COUNT IT.

Angehende Programmierer*innen, Code-Neulinge, Wiedereinsteiger*innen und Fortgeschrittene finden hier das nötige Rüstzeug für ihre Karriere.

Du möchtest deine Lehre bei COUNT IT starten? Dann bist du hier richtig - besiege deine Gegner im Dojo Game und sichere dir deine Lehrstelle!

Inspire your career.

Newsletter abonnieren

Der COUNT IT Newsletter liefert viermal jährlich interessante Neuigkeiten über das Unternehmen. Gleich anfordern!