Category

16 Feb 2020 Posted by: Comments: 0 In: Allgemein

Endlich habe ich Zeit gefunden um den Blog wieder online zu stellen. Ein paar Beiträge müssen nach einer Umstellung nochmal angepasst werden.

23 Aug 2015 Posted by: Comments: 0 In: Allgemein

Frisch aus dem Snippet-Labor: ein kleines Script, dass das ewig-nervige Rumgeklicke durch die Projektordner zu den Szenen ein wenig abkürzen soll.
Zumindest mich nervt sowas ziemlich ;)
Es lohnt sich vorallem, wenn man Unity schön über 2 Monitore fahren kann und Platz für ein paar extra Fenster hat.
Einfach „ScenesFolder“ anpassen und dort den Pfad zu euren Szenen angeben. Der Ordner sollte am besten NUR Szenen beinhalten.
Das Script selbst gehört in einen Editor-Ordner.
Unter „Window“ kann der Menüpunkt namens „ShowScenes“ gefunden werden – hiermit öffnet sich das Fenster und sieht etwa so aus:

scenelistwindow

Das Script:

16 Aug 2015 Posted by: Comments: 0 In: Allgemein

Nach ein paar Tests mit dem kostenlosen Service GameAnalytics kam folgende Erkenntnis: das Plugin aus dem AssetStore ist zwar ganz nett, aber kaum hilfreich. In den GameAnalytics  Docs stieß ich zwar auf einen wesentlich kürzeren und übersichtlicheren Ansatz, allerdings produzierte dieser Hickups. Dort wurde die WebRequest-Klasse verwendet. Damit kann man zwar mit etwas Bastelarbeit asynchron arbeiten, aber trotzdem gibt es Hickups unter Unity.
Also zurück zum guten alten Coroutine + WWW-Klasse.
Hier gibt es ein Snippet, mit dem sich der Service nutzen lässt, ohne in der Anwendung Performance-Probleme zu erzeugen.

 

13 Aug 2015 Posted by: Comments: 0 In: Allgemein, C#, Programming, Tutorial, Unity3D

Hier gibt es mal etwas anderes zu sehen als einen Spieleprototypen – nämlich einen CustomLogger, bzw. dessen Output.
Der Logger ist in C# geschrieben setzt aus Code-Schnipseln (Templates), je nach Bedarf, eine Html-Seite zusammen.
Ein wenig CSS und etwas JavaScript dürfen für Gestaltung und etwas Interaktivität auch nicht fehlen.
Der Logger findet seinen Einsatz natürlich wieder in Unity! Inspiriert ist das Tool durch einen interessanten Artikel zu den „best practices“ rund um Unity3D und der Tatasache, dass Unitys Standart Logger mit zunehmender Größe eines Projektes und der damit höhren Anzahl an Logs, einfach unübersichtlich wird. Sicher kann man auch mit diesem Logger auch an größeren Projekten arbeiten, aber warum sich das Entwicklerleben nicht auch mal etwas angenehmer machen?! Zumal sich das Tool im Anschluß in jedem anderen Projekt weiter verwenden lässt.

 

So sieht das Resultat also aus:

CustomHtmlLogger

04 Aug 2015 Posted by: Comments: 0 In: Allgemein
29 Nov 2014 Posted by: Comments: 0 In: Allgemein

Nachdem ich von meinem mittlerweile uralten Wacom Graphire 3 Studio XL auf ein Wacom Intuos 3 A5 Wide umgestiegen bin, mussten natürlich ein paar Tests her. Meiner Meinung nach gehört dieses Grafiktablet zur solideste Serie, die ich bisher getestet habe.

Hier also mal ein paar Sketches und Materialtests  mit meinem neuen alten Grafiktablet.

 

Golem

Sketches

wooden_planks_0001wooden_planks_0002

 

09 Okt 2014 Posted by: Comments: 0 In: Allgemein, C#, Programming, Unity3D

In diesem Beitrag soll es um Build-Nummern gehen. Es gibt wie immer verschiedene Methoden Software zu versionieren.
Hier ist meine Methode für für Unity-Projekte und so kann es aussehen:

Um automatisch fortlaufende Build-Nummern zu verwenden, lässt sich folgendes machen:

30 Sep 2014 Posted by: Comments: 0 In: Allgemein, C#, Programming, Unity3D

Hi zusammen!

Nahezu alle Spiele haben in irgendeiner Form eine Art von visuellem Log System. Da es mich gestört hat während des Testens in Unity immer wieder in die Konsole zu schauen und dort auch nur drei verschiedene Typen von Logs möglich sind, habe ich mir ein eigenes kleines Log System für Unitys GUI Methode geschrieben. Davon abgesehen, dass es später auch noch sehr sinnvoll in Spielen eingesetzt werden kann um dem Spieler detailierte Informationen über das zu geben, was gerade so passiert und für ihn relevant ist.

Hier also der Code.
Leicht lesbar, einfach gehalten und schnell erweiterbar.

Der Logger:

 

 

Das UI:

 

So wird es benutzt:

 

 

Viel Spass damit 🙂

 

23 Sep 2014 Posted by: Comments: 0 In: Allgemein
30 Mai 2014 Posted by: Comments: 0 In: Allgemein, C#, PHP, Programming, Tutorial, Unity3D

In diesem Abschnitt des Tutorials zeige ich dir, wie du nun die Informationen der API in dein Spiel bekommst.
Natürlich zuerst Unity öffnen und ein neues Script mit dem Namen Slim.cs anlegen.
Dieses Script sieht folgendermaßen aus:

HttpMethod – ist ein enum mit den vier wichtigen Http-Methoden!

ServerUrl – erklärt sich von selbst.

endHelloWorld – hier wird es interessanter. wie bereits am Anfang des Tutorials erwähnt verarbeitet die API url´s.
Die Basis url ist die ServerUrl. An diese wird ein Endpunkt angesetzt. wie im bereits erwähnten Beispiel:

http://localhost/tutorialgameapi/game1/v1/character/Hans oder http://localhost/tutorialgameapi/game1/v1/hello/Hans

Wobei „character/Hans“ oder auch „hello/Hans“ der Endpunkt wäre.

GetHelloWorld(string s) – Testmethode, ruft die „Hello, <name>“-GET-Methode in der API auf.

NewHttpWebRequest –  führt die Request aus!

Der Rest sollte relativ gut lesbar sein!

 

So kannst du das Script testen:

auch dieses mal wird Folgendes zurückgeliefert:

„Hello, Hans“

und

{ “guid”: “1″, “name”: “Hans”, “health”: “100″, “score”: “1000″ }

 

Bis zum nächsten Teil!

Daniel

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

In Teil 3 werde ich dir zeigen wie du die Daten vom Character „Hans“ aus der Datenbank abrufen kannst.

Bevor das passiert, nochmal eine kurze Zusammenzufassung darüber was im Projekt aktuell funktionieren sollte:

  • Die Programme sind installiert und laufen
  • Das PHP Projekt ist angelegt
  • Slim ist an seinem Platz im libs Verzeichnis
  • Der erste Test hat ein „Hello, NAME“ zurückgeliefert
  • Die Datenbank tutorialslim ist angelegt
  • Die Tabelle characters ist angelegt
  • die Spalten in der Tabelle wurden angelegt
  • Character „Hans“ ist als Datensatz in der Datenbank angelegt

Das ist soweit schon ganz gut.

Im nächsten Schritt werden wir die Daten aus der Datenbank ziehen und im Browser als json string anzeigen lassen.

Dazu erstellst du nun ein PHP Script namen AbstractController.php und speicherst es in das controller Verzeichnis.
Dieses Script sieht nun so aus:

 

 

Von diesem Script erben alle Controller-Scripts später. Die Idee dahinter ist schlichte Vererbung von Funktionalitäten innerhalb der Klassen. Ein Beispiel dafür ist das Verbinden zur Datenbank, die nun durch alle erbenden Klassen ganz simpel erfolgen kann. Das zeige ich dir direkt am nächsten Script, denn dieses wird alle Aufgaben rund um die Character-Daten erledigen.

 

Das StatusController-Script kommt, wie alle Controller-Scripts, ebenfalls in das controller-Verzeichnis.  Dieses Script sorgt dafür, dass du einen String in Json Format vom Server zurück erhälst, der den Fehler-Code und eine Nachricht enthält.

 

Erstelle jetzt ein neues Script mit dem Namen CharacterController.php und speichere dieses ebenfalls im controller Verzeichnis.

Das CharacterController-Script:

 

 

Nun muss noch die index.php modifiziert werden und sollte so aussehen:

Wenn du nun alles richtig gemacht hast und du

http://localhost/tutorialgameapi/game1/v1/character/Hans

in die Adresszeile deines Browsers eingibst, sollte folgendes zurückkommen:

{ „guid“: „1“, „name“: „Hans“, „health“: „100“, „score“: „1000“ }

 

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

Cheers!

Daniel

Weiter mit Teil 4

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

Weiter geht´s mit Teil 2 des Tutorials!

Bis hierher brauchtest du noch keinen Zugriff auf die Datenbank. Da dies aber geplant ist, musst du zuerst deine Datenbank startklar machen.

Dabei gäbe es zwei Varianten:
Variante 1: Erzeugen der Datenbank durch Code.
Variante 2: HeidiSQL.
An dieser Stelle tendiere ich selber eher zu HeidiSQL, weil es komfortabler ist.
Aber vielleicht ist es für dich auch interessant zu sehen wie man diese Dinge mit Hilfe von eigenem Code bewerkstelligen kann. Für die spätere Administration des Daten nutze ich dann aber definitiv HeidiSQL.
Bevor ich zur ersten Variante komme, erzeugst du ein Script, welches du definitiv brauchen wirst!

Dieses Script heißt config.php. und kommt in den include Ordner.

Wozu dieses Script dient sollte sich recht schnell erschließen.
Variante 1

Wenn du Variante 1 nutzen willst, dann erstellst du ein PHP Script und nennst es dbconnect.php.
Auch dieses Script kommt in den include Ordner.

Variante 2
In dieser Variante erstellst du die dbconnect.php nur mit den folgenden Zeilen, speicherst es im include Ordner und folgst der Anleitung im Video unterhalb des Scripts:

 

Öffne HeidiSQL und verbinde dich mit der Datenbank. Wer nicht mit HeidiSQL arbeiten möchte und lieber PHPMyAdmin oä. nutzt, muss sich aus dem Video die einzelnen Schritte ableiten.

Richte dort eine Datenbank namen tutorialslim ein, dazu folge dem Video.

In der nächsten Runde geht es darum die Daten aus der Datenbank zu holen.

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

Cheers

Daniel

Weiter zu Teil 3

 

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

13 Apr 2014 Posted by: Comments: 0 In: Allgemein, Modelling, Unity3D

Download

Im Asset Store könnt ihr ein kostenloses kleines Asset von mir finden und direkt in eure Spiele einbauen!
Diese einhändige Axt hat 89 Polygone und kommt mit einer 1024² Textur. Viel Spass damit! 🙂

Textur

weapon_axe_1h_0001_2013_12_20

25 Mrz 2014 Posted by: Comments: 0 In: C#, PHP, Programming, Unity3D

Auf der Suche nach einer Möglichkeit eine REST API für eigene Spiele zu erstellen, bin ich über das Slim Framework gestolpert.
Das Framework ist in PHP geschrieben und ermöglich einen recht schnellen Start um solche API´s oder auch andere web applications aufzubauen. Es gibt natürlich einige dieser Frameworks. Slim schien mir jedoch genau das Richtige zu sein – es ist schnell, der Einstieg ist recht leicht und außerdem ist es recht gut dokumentiert.

Zuerst stellt sich natürlich die Frage was ist eine REST API, bzw. REST. Hierbei handelt es sich um eine Architektur, die es ermöglicht API´s mit gut lesbaren URL´s zu erstellen.
Sowas sieht zum Beispiel so aus: http://us.battle.net/api/wow/achievement/485

Dahinter steht meistens eine Datenbankabfrage, die dann wie im Beispiel einen Datensatz im Json Format zurückliefert. Dieser Datensatz kann dann in der eigenen App geparst und anschließend verwendet werden.

Letztlich übernimmt das Framework „nur“ das Routing für diese URL´s, denn eigentlich wird eine index.php angesprochen, diese erscheint wie im Beispiel aber nicht in der URL.

Im Wesentlichen werden dabei vier Befehle benötigt:

  • POST
  • PUT
  • GET
  • DELETE

Es gibt zwar noch mehr dieser Befehle, diese sind aber relativ selten im Gebrauch und werden im Moment vernachlässigt. Einige öffentliche API´s lassen auch nur GET Befehle zu, da die Entwickler natürlich die Daten in der Datenbank nur durch das Spielen des Spiel geändert (POST, PUT, DELETE) werden sollen und nicht durch z.B. Anfragen im Browser. Wie im Beispiel oben dienen diese Schnittstellen dann dazu um z.B. bestimmte Daten anderen web applications zu visualisieren.

 

Der Aufbau

Die gesammte API besteht aus der bereits erwähnten index.php und vielen „Controllern“ für die verschiedenen Datenbankabfragen.

Das Projekt kann dann z.B. so aussehen:

Slim_api

 

Die index.php ist (noch) relativ einfach:

Der erste Test der API kann also so erfolgen während Slim nun anhand der url routet:
http://www.yourdomain.com/api/v1/hello/Hans

Rückgabe wäre dann: „Hello, Hans„! Natürlich ohne Anführungszeichen.

 

Wie sieht es aber aus, wenn ich Daten aus einer Datenbank holen oder in irgendeiner Form modifizieren will?

Gehen wir davon aus, dass wir den Character „Hans“ neu anlegen und seine Daten modifizieren, zurückgeben oder löschen wollen.
Dazu benötigt die index.php diese vier Funktionen BEVOR : $app->run(); ausgeführt wird!

Bei drei dieser Funktionen taucht nun authentication auf.
Slim bietet die Möglichkeit eine Middlelayer einzubauen! Das ist großartig um z.B. durch eine Authentifizierung sicherzustellen, dass der Nutzer diese Aktionen auch ausführen darf.
Der GET-Befehl darf immer ausgeführt werden, da dieser ja nur Daten abruft, aber nicht modifiziert. Kann man machen, muss man natürlich nicht.
Also soweit so gut, damit die API nun die Daten die via PUT über den Body gesendet werden „herausfischen“ kann, benötigt es noch eine Funktion namens verifyRequiredParams.
Diese wird mit den „Feldern“ füttert, die sie filtern soll.
In diesem Fall ist es das Feld „data“. Dahinter verbirgt sich ein json String.
Beide Funktionen werden weiter unten im Text beleuchtet!

Um Nun die Daten von Hans abzurufen sieht die url nun so aus:
http://www.yourdomain.com/api/v1/character/Hans

oder auch mit der id von Hans (angenommen Hans ist bereits eingetragen und hat die id 999):

http://www.yourdomain.com/api/v1/character/999

Gibt man das in die Adresszeile des Browser ein, wird standartmäßig der GET-Befehl ausgeführt und man erhält die Daten von Hans, wenn er in der Datenbank vorhanden ist.

Nicht vergessen: dahinter liegt die index.php!
Die eigentliche URL sieht nämlich so aus:
http://www.yourdomain.com/api/v1/index.php

Direkt neben der index.php liegt eine .htaccess-Datei, die dafür sorgt, dass index.php aus der URL entfernt wird. black magic! 😉

Die .htaccess-Datei sieht so aus:

Um nun die Daten vom Character „Hans“ zu bekommen, braucht es noch den „CharacterController“ und der sieht so aus:

Wie man sieht gibt es eine Klasse namens AbstractController, diese übernimmt den Aufbau der Datenbankverbindung:

und greift dabei auf das connect-Script zu:

die config.php sieht dann so aus:

Die verifyRequiredParams Funktion und die sieht so aus:

Da ich das Feld ‚data‘ übergebe, wird genau danach gesucht. $app->request()->getBody() holt den Body, danach wird geparst und ein paar Checks für das Errorhandling gemacht, für den Fall, dass das Feld ‚data‘ nicht vorhanden ist. Wenn irgendwas mit den Feldern nicht stimmt (nicht vorhanden oder falsch benannt), wird Slim gestoppt: app->stop();

Und was macht nun ‚authentication‘ ? Ein sehr tolles Feature von Slim ist die Möglichkeit Middlelayer einzufügen.
Die Funktion ‚authentication‘ soll überprüfen, ob denn überhaupt Daten verarbeitet werden dürfen, indem das Vorhanden sein von Usernamen und Passwort im Header überprüft wird.

Man sollte sich hier sowieso mit einem „ApiKey“ und Ähnlichem absichern und sowas im Vorfeld prüfen oder besser gleich https nutzen!
Für das Beispiel verzichte ich aber erstmal darauf.

Nun hat man so ziemlich alles zusammen was man benötigt und kann neue Controller erstellen (siehe Abb. oben), diese Controller erben natürlich vom AbstractController und werden automatisch in die index.php geladen.

Von dort aus muss, wie im Beispiel, nur eine Instanz erzeugt werden. Slim übernimmt im Hintergrund die „Magie“ beim Routen, während die Datenbankabfragen vom jeweiligen Controller erledigt wird.

So lässt es sich echt schnell entwicklen! 🙂

 

der Unity3D, bzw. C#-Teil

Jetzt muss das Ganze noch mit Unity verbunden werden. Hierfür nehme ich nicht die Unity-eigene WWW-Klasse. Ich persönlich finde, dass sich Coroutinen für solche Angelegenheiten einfach nur bedingt anbieten und sich dazu unter C# nicht als strings zurückgeben lassen. In diesem Fall heißt der unser Verbündeter „HttpWebRequest“. Der nächste Nachteil der Coroutinen von Unity besteht aus dem Fakt, dass sie nur mit POST und GET arbeiten. Ich benötige aber auch DELETE und PUT. Diese kann man in der „HttpWebRequest.methode“ mitschleifen! Um hier den ein oder anderen Workaround zu vermeiden ist in diesem Fall die „HttpWebRequest“-Klasse der klare Sieger! Auch die WebClient-Klasse tut sich hier schwer. Einziger Nachteil ist bis dato, dass ich System.IO nutzen muss. Dies bedeutet, dass der WebPlayer (vorerst) wegfällt, da dieser aus Sicherheitsgründen in einer Sandbox läuft. Das ist auch gut so. 😉

Holen wir die Daten in das Spiel:

 

 

 

Abschließend muss ich sagen, dass ich nicht einen einzigen Blick in die Slim.php werfen musste – die Doku und ein paar kleine Tests haben völlig ausgereicht um die API auf Slim aufzusetzen.

So soll es sein – funktioniert einfach out of the box! Unity3D, bzw. C# verhielt sich anfangs ein wenig sperriger. Hier war ein wenig die „trial and error“-Methode gefragt.

 

Cheers!

Daniel

02 Mrz 2014 Posted by: Comments: 0 In: Allgemein, Modelling

Ja, ich mag den Stil der Blizzard Designer sehr, erst recht das Design von „World of Warcraft“. Deshalb habe ich mir ein wenig die verschiedenen Gebäude angeschaut und blieb bei den Häusern von „Gilneas“ hängen. Die Anmutung dieser englischen Häuser brachte mich dazu ein wenig in dieser Richtung zu experimentieren. Die Texturen sind zwar noch nicht gemacht, aber hier gibt es schonmal einmal ein paar Modelle zu sehen.

26 Jan 2014 Posted by: Comments: 0 In: Allgemein, C#, Game Design, Global Game Jam, Modelling, Unity3D

Heute sind wir erst gegen 10 Uhr an den Start gegangen und haben zuerst entspannt gefrühstückt, bevor es wieder richtig zu Sache gegangen ist. Ein paar soziale Interaktionen mit „echten Menschen“ müssen auch mal sein. 😉 Fachgespräche sind natürlich auch dabei, außerdem ist es ja auch interessant was die anderen Teilnehmer auf die Beine stellen!

Da es bei unserer Idee darum geht nur mit Hilfe von Kopfbewegungen die Anwendung zu steuern, musste auch ein passendes Controller-Script her. Dieses wurde heute entwickelt und getestet. Während ich also am Script gearbeitet habe, hat sich Björn um ein paar 3D Modelle gekümmert. Ich war schon überrascht über seinen sehr schnellen Workflow in Silo!
Leider bietet OpenDive nicht alle Möglichkeiten die Oculus Rift bietet, daher sind wir zwar eingeschränkter, allerdings helfen diese Einschränkungen auch dabei ein wenig schneller vorwärts zu kommen. Bevor ich lange weiter schreiben – der Game Jam ruft!

Weiter geht´s!

26 Jan 2014 Posted by: Comments: 0 In: Allgemein, Global Game Jam

Heute sind wir relativ entspannt gegen 10 Uhr an die Arbeit gegangen. Es war zwar nicht mehr viel Zeit bis wir unser „Spiel“ auhf die Seite des GGJ hochladen mussten. Wir sind uns einig, dass wir uns eher an einem Experiement versucht haben, als wirklich ein Spiel zu entwickeln.

 


Hier gibt es nochmal alle Infos zu unserem Experiment auf der GGJ-Seite:

http://globalgamejam.org/2014/games/menschenverschwindenohhhnoooo

 

Hier gibt es noch zwei Artikel von Ratking´s Jana Reinhardt:

http://ratking.de/2014/02/04/global-game-jam-in-leipzig/#beginning

http://leipziggamejam.wordpress.com/2014/02/04/die-spiele-des-global-game-jam-2014-2/

 

An alle die teilgenommen haben: bis zum nächsten Mal 🙂

25 Jan 2014 Posted by: Comments: 0 In: Allgemein, C#, Game Design, Global Game Jam, Modelling, Unity3D

IMG-20140124-WA0000

Björn mit der OpenDive an unserem Projekt

 

Pünktlich 14.30 Uhr stand ich also fertig gepackt, mit Laptop, Iso-Matte und Schlafsack vor meiner Tür und wartete auf meine Mitfahrgelegenheit nach Leipzig. Kalt war´s! Leider war der junge Mann, welcher sich später als angenehmer und witziger Zeitgenosse entpuppte, nich ganz ortskundig in Halle. Nach seiner langen Oddysee durch Halle traffen wir uns dann endlich am Hallmarkt. Schnell das Zeug in den Wagen gepackt und schon waren wir startklar für den GLOBAL GAME JAM, an dem er übrigens auch teilnehmen wollte. Mit leichter Verspätung trudelten wir auch ein und kaum angekommen wurden die ersten bekannten Gesichter begrüßt! Dann ging alles relativ zügig voran – Themenvorstellung, Vorstellrunde. Das übliche Prozedere! Das dauerte auch ein Welchen, denn in diesem Jahr war der Andrang in Leipzig doch wesentlich größer als zuvor – Schöne Sache!
Das Thema war im ersten Moment doch ein wenig seltsam: „We don´t see things as they are. We see them as we are“.
Ich emfand das Thema als spannend und gleichzeitig ein wenig sperrig.
Schon vor dem Start habe ich mit Björn, einem ehemaligen Kommilitonen, über ein mögliches Team geredet. Open Dive war im Gerede und so sollte es auch sein! Also ging´s ans Open Dive Demo angucken, Beispiele testen und Ideen aus den Köpfen quetschen. Um für den Samstag richtig fit zu sein, ging es dann auch verhältnismäßig früh gegen 1.30 Uhr in den Schlafsack und gegen 9.30 Uhr wieder raus.

Weiter geht´s! 😀

21 Dez 2013 Posted by: Comments: 0 In: Allgemein, Modelling

Wenn man so im Flow ist kann man auch direkt weiter machen. Rausgekommen ist eine Axt, dieses Mal als Zweihänder.

Polycount: 244

Polycount: 420

 

 

 

 

 

20 Dez 2013 Posted by: Comments: 0 In: Allgemein, Modelling

„Übung macht den Meister“ heißt es und um im Training zu bleiben kommt hier ein kleines Asset:

 

 

Ziel der Sache war, wie unschwer zu erkennen, ein Lowpoly-Objekt mit „handgemalter“ Textur im Cartoon-Stil. Dafür werden zusätzlichen Maps wie Ambient Occlusion oder Specular Map benutzt. Alles was zu sehen ist, ist eine einfache Diffuse Map. Das gute Stück ist praktisch „game ready“ und kann in einem Videospiel mit entsprechendem Stil verwendet werden!

weapon_axe_1h_0001_2013_12_20

16 Dez 2013 Posted by: Comments: 0 In: Allgemein

Es hat noch geklappt! 🙂
Jana und Friedrich von ratking.de richten den Game Jam in Leipzig aus. Vom 24.01.2014 bis zum 26.01.2014 wird gejammt. Ich habe es noch auf die Liste geschafft und bin nun auf die anderen Teilnehmer gespannt. Scheinbar ist der Game Jam in diesem, bzw. nächsten Jahr sehr begehrt und der Andrang verhältnismäßig hoch.
Infos zur Game Jame in Leipzig gibt aus hier.

04 Dez 2013 Posted by: Comments: 0 In: Allgemein

Lange  hat es gedauert, doch nun ist es endlich geschafft.

Obwohl, eigentlich ging es sehr schnell. Vor ca. 24 Stunden habe ich mich dazu durchgerungen, mich endlich von meiner alten Site, bzw der Website meiner früheren Band „Freispringer“ ( www.freispringer.de leitet jetzt hierher weiter ) zu verabschieden und auf einen neuen Webspace umzuziehen. Es wurde einfach Zeit. Wirklich. Denn ehrlich – wer verbindet dieses Wort „Freispringer“ schon mit einem Menschen, der Multimedia|Virtual Reality-Design studiert hat und dementsprechend im 3D-Bereich unterwegs ist? Was hat freispringer.de schon mit einem Unity3D-Entwickler und Echtzeit-Anwendungen zu tun? Nichts. Um fair zu sein muss man allerdings sagen, dass der Name damals auf die Springerfigur im Schach anspielte. Da nunmal auch Schach ein Spiel ist, könnte man jetzt zwar einen Bogen schlagen, aber das wäre mir dann doch zu weit hergeholt.

Klare Entscheidung: ich brauchte eine neue Seite. Aber wie sollte ich sie nur nennen? Kurz sollte der Name sein.

Nach einigen Überlegungen bin ich nun bei www.3dan.de hängen geblieben. Es steckt einiges drinnen: „3D“, „dan“ für Daniel oder als Kürzel für 3D-Animation. Ein Freund von mir, tätig bei KingArt Games in Bremen, meinte, es würde sich auch lesen wie „3D an!“. Auch schön!

Wie ich bereits geschrieben habe, ging es recht schnell. Nachdem die IPS die Seite übernacht gelistet hatte, war der erste Handgriff schon vor dem Frühstück eine WordPress-Installation auf den Weg zu schicken. Keine 30 Minuten später war alles soweit eingerichtet. WP lief, das Theme stimmte.
Nur den Content in den neuen Blog zu bekommen dauert ein bisschen länger, letztlich ist aber alles angekommen wo es soll und die neue Website ist einsatzbereit.

Tja, was kommt jetzt?

Nunja, ich denke über eine Tutorialreihe für den meinen Blog nach, aber zuvor steht viel Größeres bevor!
Freunde von mir, ebenfalls Alumni der Hochschule für Kunst und Design Halle und ich planen den Start in die Gaming Industry.
Das wird eine wilde Reise werden, soviel ist sicher! Wir werkeln fleißig an Game Design Documents und auch an einem Prototypen.
Mehr will ich dazu noch garnicht verraten.

Schönen Gruß
Daniel

 

10 Nov 2013 Posted by: Comments: 0 In: Allgemein, C#, Programming, Unity3D

Wenn man häufiger Unity Projekte erstellt um kleine Tests zu machen oder doch große Proekte strukturieren möchte, ist es einfach mehr als nervend, wenn diese immer wieder per Hand angelegt werden müssen. Daher habe ich hier zwei kleine Scripte geschrieben, die ab sofort in allen meinen neuen Projekten zu finden sein werden. Mit Hilfer des Codes ist es so möglich einfach im EditorWindow Strukturen anzulegen in dem man beispielsweise schreibt „Scripts/SubFolder/SubFolder2“. Nun muss man nicht mehr tun als es zu speichern und Unity erstellt nun drei ineinander verschachtelte Ordner. Außerdem kann man diese Struktur als txt-Datei speichern und in anderen Projekten laden, modifizieren oder auch Ordner wieder löschen.

05 Nov 2013 Posted by: Comments: 0 In: Allgemein, Modelling