Tutorial Unity3D & Slim Framework # 1

20 Apr 2014 Posted by: Comments: 0 In: C#, PHP, Programming, Tutorial, Unity3D

Hallo und willkommen zu meiner Tutorialreihe zum Thema Unity3D und Slim Framework.

In diesem Tutorial möchte ich dir zeigen wie du recht schnell mit Hilfe des Slim Frameworks eine API oder einen Web Service für dein Unity3D Spiel erstellen kannst.
Serverseitig benutze ich dabei PHP, denn das Slim Framework ist in PHP geschrieben.
Der Client, bzw. das Spiel nutzt C# .
Bevor ich begonnen habe dieses Tutorial zu schreiben, habe ich mich selbst durch ein Tutorial gearbeitet und daraus bestimmte Dinge für mich abgeleitet. Dieses Tutorial hat zwar nichts mit Unity zu tun, beleuchtet aber die Funktionsweise von Slim.  Falls es dich interessiert – zu finden ist dieses Tutorial hier:
http://www.androidhive.info/2014/01/how-to-create-rest-api-for-android-app-using-php-slim-and-mysql-day-12-2/

 

Was soll erreicht werden?

  • Zugriff auf eine Datenbank durch eine Unity App.
  • Erstellen/Abrufen/Modifizieren/Löschen von Daten in einer Datenbank über einen Web Service.
  • Die API soll auch für andere Plattformen funktionieren. (Android/iOS Apps)
  • …soll Daten im json Format zurückliefern.
  • …soll leicht erweiterbar sein.

 

Was wird benötigt?

  • Unity 3D
  • MonoDevelop oder Visual Studio
  • NetBeans – eine starke IDE für PHP – Würde ich an dieser Stelle empfehlen! Ein anderer Editor tut es natürlich auch.
  • XAMPP, WAMP oä – Apache Server, Datenbank etc.
  • HeidiSQL – kostenloses Tool zur Datenbankmodellierung – alternativ: PHPMyAdmin
  • Ein wenig Umgang mit Unity3D, C# und/oder PHP oder zumindest irgendeiner anderen Scriptsprache

Meine Wahl fällt übrigens auf XAMPP, bei WAMP kann ich leider keine Hilfe anbieten, sollte es dort Probleme geben.

Außerdem gehe ich davon aus, dass zumindest Unity3D und MonoDevelop oder Visual Studio installiert sind.

 

Das Tutorial ist grob in zwei Bereiche geteilt:

Die Erstellung des Web Service/API in PHP und die Erstellung des Clients in C#.

Ich beginne mit dem Web Service und dessen Vorbereitung.

 

1. XAMPP

Wenn du XAMPP bereits installiert hast, kannst du diesen Schritt überspringen und startest den Apache und das MySQL Modul.

Installiere die aktuelle Version von XAMPP auf deiner Maschine.
https://www.apachefriends.org/de/index.html

  1. Starte das Control Panel.
  2. Im Control Panel:
  3. Starte das Apache Modul
  4. Starte das MySQL Modul
  5. Schließe das Panel, es läuft im Tray weiter.
  6. Öffene im Browser die URL http://localhost oder einfach nur localhost
  7. Folge den Anweisungen – Sicherheitscheck etc.
  8. wenn alles ok ist, …ist alles ok 😉

 

2. HeidiSQL

Wenn du HeidiSQL bereits installiert hast, kannst du diesen Schritt überspringen und öffnest HeidiSQL oder deine Alternative.

Installiere die aktuelle Version von HeidiSQL auf deiner Maschine.
http://www.heidisql.com/

  1. Starte HeidiSQL
  2. HostName/IP ist: localhost oder 127.0.0.1
  3. trage Nutzer und Passwort in die vorgesehenen Felder ein. Diese Daten hast du bereits beim Absichern von XAMPP erstellen müssen!
  4. HeidiSQL offen lassen 😉

 

3. NetBeans

Wenn du NetBeans bereits installiert hast oder nicht nutzen willst, kannst du diesen Schritt überspringen und öffnest NetBeans oder deine Alternative.

Installiere die aktuelle Version von NetBeans auf deiner Maschine.
https://netbeans.org/downloads/index.html

…natürlich die Version für HTML 5 und PHP…oder gleich für alles. Das ist Geschmackssache. Ich nutze nur die PHP Version – das reicht mir.

 

4. Der Web Service

So sollte es am Ende aussehen:
tutorial_slim

libs – alle third party libraries kommen hier hinein. z.B. Slim
include – Helferklassen kommen hier hinein (config.php)
index.php – ist für die API Requests zuständig
htaccess – regelt die API Struktur
model – beinhaltet bestimmte Klassen, die als blue print, bzw. Model dienen
controller – beinhaltet später alle Scripte, die die Zugriffe auf die Datenbank ausführen
v1 – v1 ist die gängige Abkürzung für “Version 1” – hier drinnen liegt die index.php, die später aufgerufen wird!

Lade das Slim Framework herunter.
http://www.slimframework.com/

Gehe zum Verzeichnis /xampp/htdocs/.
Im Verzeichnis htdocs legst du ein neues Verzeichnis an: tutorialgameapi.

innerhalb von tutorialgameapi legst du 3 neue Ordner an:

  • libs
  • game1
  • game2

In den Ordner libs entpackst du das herunterladenen Slim Framework.
Das muss so aussehen:

libs

  • Slim
  • test
  • index.php
  • …das ganze andere Zeug was dort drinne ist.

Warum du es dort ablegen solltest liegt auf der Hand: falls noch andere Web Services (game2) auf dem gleichen Server können diese alle auf den gleichen Code zugreifen und die Wartung ist ebenfalls einfacher.

 

In NetBeans legst du nun ein neues PHP Projekt an, vergibst einen Namen und nutzt das tutorialgameapi als Projektordner, klar. Nimm gleich die höchste PHP Version, aktuell 5.5.

Das Default Encoding steht auf UTF-8.
Das Projekt läuft natürlich als “Local Web Site” und die Projekt URL sieht so aus: http://localhost/tutorialgameapi/

Soweit so gut.

Im game1 Ordner legst du nun vier neue Verzeichnisse an

  • controller
  • include
  • model
  • v1

5. Die index.php

Im v1-Verzeichnis erstellst du nun eine index.php
Der Inhalt des Scripts ist natürlich so ziemlich identisch zum Code des „Hello, World“-Beispiels in den Slim Docs. 😉

Bevor du das Script testen kannst komme ich direkt zur Besonderheit dieser API´s:
die index.php taucht in der angesprochenen url nicht auf! Damit können besser lesbare URL´s erstellt werden und damit das klappt brauchst du diese kleine .htaccess-Datei.
Diese liegt direkt neben der index.php im v1-Verzeichnis und macht ein wenig “black magic” 😉

Das reicht erstmal. Zum Testen öffne http://localhost/tutorialgameapi/game1/v1/hello/Hans im Browser.

Damit wäre bereits der erste und grundlegende Schritt im PHP Projekt getan! Alles was jetzt kommt, baut auf diesem Prinzip auf.

Das Repo zum Projekt: https://bitbucket.org/AgentCodeMonkey/tutorialslimapi

 

Cheers!

Daniel

Weiter zu Teil 2

Leave a Comment!

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.