Zum Inhalt springen

TUTORIAL Entwickler Informationen zur DR!FT Community API


Empfohlene Beiträge

Achtung: Diese Funktion richtet sich an Personen mit IT-Kenntnissen, die bereit sind, sich mit dem Thema eingehend zu befassen.


Die Entwicklung von Software mit der DR!FT API

In diesem Beitrag wollen wir erklären, wie die DR!FT API funktioniert, wo ihr eine technische Beschreibung der API herbekommt und auf eure Fragen rund um die Entwicklung von Software für die API eingehen.

Zum Verständnis der API und zur Arbeit mit ihr empfehlen wir dringend, zuerst den anderen Beitrag zur Nutzung der DR!FT Community API zu lesen. Das Projekt mit dem Beispielserver findet ihr hier:

https://github.com/christiangeissler/driftapi

Die Dokumentation der API ist in den Beispielserver integriert und kann im laufenden Zustand über den Browser unter dieser URI aufgerufen werden:

Zitat

localhost:8001/docs

Weitere Informationen zur Funktionsweise des Servers findet ihr im Kapitel "DR!FT Community API" in der Readme.md des Projektes (<- der unterstrichene Text ist ein Link dorthin).

Die API folgt dem REST Standard (also JSON formatierte http-Anfragen). Der Racingserver selbst nutzt die Python-Bibliothek "Fastapi", um nicht nur die API selbst, sondern auch zugleich eine Dokumentation dieser zu liefern, sowie eine interaktive Testfunktionen mit Beispielen bereitzustellen.

Was ist der Zweck der API?

Im Endeffekt stellt uns Sturmkind mit der API die Möglichkeit bereit, selbst fast beliebige Komponenten zu entwickeln, die auf Ereignisse im Spiel reagieren. Die einfachsten Anwendungsfelder sind Racing-Server, welche die Basis für viele weitere Ideen darstellen können. Ich möchte euch hier einladen, um mit mir Ideen zu entwickeln und diese konkret in die Tat umzusetzen. Der aktuell verfügbare Racing-Server ist zwar für Entwickler interessant, weil er es erlaubt, sehr schnell und einfach Funktionen umzusetzen und zu testen, er hat aber einen gewaltigen Nachteil, denn er ist für den Normalnutzer kaum aufzusetzen.

Daher wäre mein Ziel, das Ganze in Form einer im Internet gehosteten Webseite umzusetzen, wo sich Leute registrieren können, Rennen anlegen und dann einfach eine über das Internet zugängliche URI angeben können, an die Renninformationen übermittelt werden, die dann auf einem Scoreboard angezeigt werden können. Falls ihr Lust, die Fähigkeiten und Zeit habt, mich bei diesem Unterfangen zu unterstützen, so meldet euch gerne hier oder schreibt mir eine PN.

Alternativ könnt ihr auch gerne vollkommen unabhängig etwas entwickeln. Ich würde mich sehr darüber freuen, wenn ihr eure Eigenentwicklungen hier vorstellt, und bin gerne behilflich, wenn es weitere Fragen bezüglich der API gibt.

Darf ich den Racingserver forken/weiterentwickeln?

Der Racing-Server steht als Open Source Projekt unter MIT Lizenz zur freien Verfügung. Gerne könnt ihr ihn weiterentwickeln, an eure Bedürfnisse anpassen oder verrückte Zusatzfunktionen einbauen.

Wie geht es weiter?

Mit diesem Release ist die Entwicklung der API noch nicht abgeschlossen, denn sie soll mit der Zeit durch weitere sinnvolle Funktionen erweitert werden. Auch werden wir in Zukunft sicherlich einige spannende Projekte sehen, die mit der API umgesetzt wurden. Diese Ecke des Sturmkind-Forums soll als Anlaufpunkt für die Vorstellung solcher Projekte, der Ideensammlung zu solchen Entwicklungen, aber auch der API selbst dienen. Also fühlt euch eingeladen, hier selbst Themen aufzumachen, nach Mitentwicklern zu suchen und eure Projekte vorzustellen.

  • Gefällt mir 5
  • Danke 6
Link zu diesem Kommentar
Auf anderen Seiten teilen

Bitte melde dich an um den Link zu sehen.

 Mega Arbeit. Bin auch super gespannt was in den nächsten Wochen und Monaten passieren wird. 
 

Eine Frage frage habe ich schon (das ließ sich im Vorfeld nicht herausfinden ;). Beim Ping kann der Server die Einstellung in der App überschreiben. Mega. Jetzt ergibt auch der Button „Synchronieren“ einen Sinn. Aber was macht der „status“. Der kann ja nur True/false annehmen. Aber für was genau?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bitte melde dich an um den Link zu sehen.

Also Server läuft, sehe die Web Oberfläche und diese lässt sich astrein bedienen. Mit dem PC bin ich im Netzwerk a la LAN Kabel, mit dem Handy via W-Lan.(Alles im selben Setzwerk)

 

Nur verbietet mit die App zu synchronisieren, egal ob ich die Rechner IP angebe, Die localhost IP oder die welche vom Server bereitgestellt wird.

Firewall ist konfiguriert etc.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 6 Minuten schrieb Blacky90:

Bitte melde dich an um den Link zu sehen.

Also Server läuft, sehe die Web Oberfläche und diese lässt sich astrein bedienen. Mit dem PC bin ich im Netzwerk a la LAN Kabel, mit dem Handy via W-Lan.(Alles im selben Setzwerk)

 

Nur verbietet mit die App zu synchronisieren, egal ob ich die Rechner IP angebe, Die localhost IP oder die welche vom Server bereitgestellt wird.

Firewall ist konfiguriert etc.

 

Bitte melde dich an um den Link zu sehen.

Kannst du die Serveroberfläche vom Smartphone aufrufen? Also einfach über http://<ip-des-pcs>:8080 ?

(Die richtige IP des Servers rauszufinden und dann tatsächlich auch durch zu kommen ist nicht so trivial, Firewall, Übereifrige Router, da gibts ne Menge was dazwischenfunken kann). Achtung: Die im Server selbst über die Webseite angezeigte IP ist oft nicht richtig.

Bearbeitet von Decrayer
Link zu diesem Kommentar
Auf anderen Seiten teilen

Bitte melde dich an um den Link zu sehen.

 das ist schon mal gut, dann müsste die App auch funktionieren. Hast du nen Rennen angelegt? Und vom Smartphone aus müsstest du dann in der Drift App http://<ip-des-pcs>:8001/game angeben. Achtung: Port ist anders.

Bearbeitet von Decrayer
Link zu diesem Kommentar
Auf anderen Seiten teilen

Auf meinem Desktop läuft Docker nicht (Hyper V Hypervisor ist nicht verfügbar --- Grund: selbst schuld an der schrägen Config meiner Dose). Bevor ich Docker jetzt auf den Raspi drauffrickele und mich dann über fehlenden Speicher oder ähnliches ärgere, hätte ich eine Frage: Kann ich den Racing Server auch nativ unter Windows oder Linux installieren? 

 

PS: Auch hier nochmal VIELEN DANK für dieses Projekt! Das bringt auch bei mir zwei Themen zusammen, für die ich jeweils einzeln schon sehr begeistert bin! 😄 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bitte melde dich an um den Link zu sehen.

nativ geht prinzipiell, die driftapi und streamlit sind in python geschrieben und in den jeweiligen unterordnern gibt es requirement.txt dateien, die du mit pip install -r ausführen kannst. Aber du brauchst auch noch ne MongoDB Instanz.

Bitte melde dich an um den Link zu sehen.

ja, nen keycloak mit webserver ist ne super Idee. Ich hab leider nicht ganz so viel webdev Praxis, sonst hätte ich das auch gleich so gemacht.

Bearbeitet von Decrayer
Link zu diesem Kommentar
Auf anderen Seiten teilen

Cool ... probiere ich am Wochenende mal aus. Hab jetzt doch angefangen mit dem Raspi. Wenn das geht könnte man damit recht einfach einen portablen Gameserver bauen, den man ohne viel Gedöns zum Treffen mitnehmen kann. Hübsch konfiguriert würde der einen Wlan für die teilnehmenden Handys aufspannen und soweit ich es von hier umreisse, müsste man den Startup usw skripten können, so dass man die Kiste dann headless vom Handy aus bedienen kann.

 

PS: Habe schon lange nicht mehr mit so einem debil glücklichen Grinsen vorm Rechner gesessen. 😉 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

 Teilen

×
×
  • Neu erstellen...

Wichtige Information

Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung