top of page
THINK 1

Aangezien ik een ontwerp heb gemaakt bij mijn vorige beroepstaak zal ik dat gebruiken als bron.
Mijn ontwerp is alleen nog in de eerste fase en dat betekend dat ik nu eerst een Analytics Tool zal implementeren in onze project waarbij de leveldata van de speler wordt opgeslagen in een lokale database als er vanaf de Unity Editor wordt gespeeld. Dit is dan ook mijn doel dat ik deze cycle wil behalen. Ik denk dat ik ook geen extra bronnen nodig zal hebben, omdat ik wel enigszins vertrouwen heb in mijn eigen ontwerp.

Software: Realisatie

MAKE 1

Een database ontwerpen/opzetten
Eerst kwam het proces van het downloaden van XAMPP wat ik blijkbaar niet had vermeld in mijn ontwerp, omdat ik er van uit ging dat iedereen het programma al zou hebben of zelf zou weten waar hij/zij deze moet downloaden. Voor het geval dat iemand dit niet weet; door simpel te googlen kwam je al gelijk op de volgende link: https://www.apachefriends.org/download.html

CHECK 1

THINK 2

Ik ga weer zoals de vorige cycle mijn ontwerp raadplegen, alleen dan dit keer de tweede fase die ik in mijn tweede cycle van mijn beroepstaak Software: Ontwerpen heb gemaakt. Zoals ik al vermeld in mijn context is het resultaat dat ik wil behalen dat mijn analytics tool vanaf elk Android apparaat (dat internetverbinding heeft) moet kunnen functioneren, ongeacht waar die persoon zich bevind.
Zoals ik al had meegemaakt met mijn eerste cycle, verwacht ik ook wel dat in deze cycle ik dingen ben vergeten te vermelden in mijn ontwerp, waardoor ik af en toe vast zal komen te zitten en wellicht andere bronnen weer zal moeten gebruiken voor hulp.

MAKE 2

Een online gratis hosting service vinden.

CHECK 2

Na heel wat gedoe heb ik mijn gewenste resultaat behaald. De fouten waarmee ik te maken had, had ik niet verwacht en heb daarom ook veel meer bronnen moeten raadplegen. Alleen behalve de dingen die fout gingen functioneert alles nu wel en hebben we eindelijk een analytics tool die het vanaf iedereen zijn/haar Android apparaat doet waar dan ook op de wereld, zolang ze maar internetverbinding hebben.

CONTEXT 2

Omdat wij het spel voor Android wereldwijd willen uitbrengen, zal een lokale analytics tool niet veel voor ons betekenen behalve bij lokale playtests. Dat is dan ook de reden waarom ik mijn analytics tool vanaf elk Android apparaat (dat internetverbinding heeft) moet kunnen laten functioneren, ongeacht waar die persoon zich bevind.

LEARNINGS 2

Ik heb vooral in deze cycle geleerd dat fouten niet per se jouw schuld hoeven te zijn. In de meeste gevallen zal jij wel ergens een denkfout hebben gemaakt of een slordigheidsfout, maar zoals te zien was in deze cycle was het allemaal de schuld van een server time-out. Dat brengt me dan ook bij het volgende wat ik heb geleerd: “gebruik geen gratis hosting servers voor games die je serieus wil uitbrengen”.

CONTEXT 1

Om mijn beroepstaak Software: Realiseren te bewijzen zal ik met behulp van het ontwerp dat ik bij mijn beroepstaak Software: Ontwerpen heb gemaakt, een eigen Analytics Tool implementeren in ons project.
Dit omdat het implementeren van de bestaande Analytics tools niet helemaal goed verliep en wij voor onze game nog steeds data willen ophalen om de speler resultaten over de behaalde levels te analyseren.

LEARNINGS 1

Ik heb vooral veel geleerd over hoe bruikbaar mijn eigen ontwerp was, tijdens het maken van het ontwerp had ik namelijk ook deels deze realisatie gedeeltes al gedaan omdat het samenhing. Het viel mij vooral op dat ik niet de meest logische dingen heb vermeld in mijn ontwerp en daardoor tijdens het realiseren tussentijds afweek van de instructies binnen mijn ontwerp.

Eenmaal XAMPP opgestart, had ik eerst een probleem dat ik de Apache server niet kon starten, omdat de poort al in gebruik was door een ander programma.

Met de volgende bron kwam ik er achter dat dit aan Skype lag, die hetzelfde poort gebruikte.
http://stackoverflow.com/questions/19418182/apache-server-installation-failedport-80-or-443-already-in-use

Nou eenmaal ook dat probleem opgelost te hebben ging het aanmaken van de database en tabel wel gemakkelijk, overigens hoefde er bij de Float van de Time_Completed variabele geen maximaal aantal karakters meegegeven te worden.


Een manier vinden om data in te voeren in de database via een externe bron.

Eerst had ik ook een methode/script voor het ophalen van data uit de database, maar deze was voor onze game onnodig en heb ik buiten het ontwerp gelaten. Maar deze methode heeft me wel geholpen met het controleren of mijn Unity C# script connectie heeft met de lokale database, zonder dat ik de database erbij moest pakken.

Gelijk al een slordigheidfout van mij, waardoor het al niet functioneerde. . .
Toen ik de Update ook daadwerkelijk een Update had gemaakt, werkte de script zoals het hoorde. Als ik op de spatiebalk drukte werd de huidige data doorgestuurd van dat moment, het enige wat nog moest gebeuren was de methode aanroepen wanneer de speler een level heeft behaald.
 

Zoals in het ontwerp beschreven stond, heb ik de waardes van de variabelen in de php script vastgekoppeld aan een $_POST functie om ze te koppelen aan een “Postnaam” en zo vanaf Unity naar het php script de waardes door te geven.
 

Daarna kwam het echte werk, door het omgekeerd te doen. Dit keer wou ik juist waardes in de database krijgen vanuit het script. Voor alle variabelen die ook in de database stonden, moest ik in de php script bijpassende variabelen declareren. Vervolgens moesten we een andere Query uitvoeren op de database dan de SELECT die we hiervoor hadden uitgevoerd, namelijk de INSERT INTO.

Door alle variabele tijdelijk een waarde te geven van 0, heb ik de php script uitgevoerd en verscheen het resultaat in de database.

Connectie met Unity

Vervolgens is het me gelukt om eerst gegevens die al in de database staan (die ik er handmatig in had gezet vanaf phpMyAdmin) op te roepen en ze te laten weergeven. Zoals hierboven te zien is, wordt de Query (de string binnen de $sql variabele) uitgevoerd bij de LevelStats tabel van de database waar er een connectie mee wordt gemaakt en de resultaat daarvan in $result geplaatst. Zolang er resultaat is (dus meer dan 0), wordt er per rij in het tabel de waardes ervan gepakt en uiteindelijk allemaal ge”output”.
 

Verbinding maken met de database door een PHP script te maken volgens de instructies verliep goed en zoals te zien is in het plaatje hierboven kregen we de output message van de if-else statement als er WEL een verbinding is.
 

Aan de kant van phpMyAdmin was het al gelijk duidelijk dat alles functioneerde. De waardes waren doorgekomen van de sessies die ik heb gespeeld en dus de resultaat dat ik wou behalen binnen deze cycle is ook daadwerkelijk behaald. Behalve een paar kleine foutjes, ging er niet veel mis en wist ik desnoods de problemen d.m.v. een paar minuten op google te zoeken het op te lossen. De data die we nu verzamelen komt ook netjes aan op de database en kan met de MySQL functies gesorteerd, gefilterd of zelfs als grafiek weergegeven worden met de mogelijkheden van phpMyAdmin.
 

Om te beginnen heb ik maar dezelfde gratis hosting service gekozen zoals ik in mijn ontwerp had aangegeven, puur omdat ik dan niet nog een account ergens anders hoef aan te maken en het er toch wel betrouwbaar genoeg uitzag.



Offline tabel exporteren

Het exporteren van mijn lokale tabel ging ook zonder enige problemen.


Online database aanmaken

Hetzelfde geldt voor het aanmaken van de nieuwe database vanuit het hosting paneel.
Ook dit verliep zonder problemen.


Geëxporteerde tabel importeren in de online database

Ook hier geen problemen met het volgen van mijn ontwerp bij het importeren van de tabel uit de lokale database.

De waardes die ook in de lokale database stonden, zijn nu te zien in de nieuwe database in de bijbehorende tabel.



Verbinding maken tussen Unity en de online server

Voordat ik het PHP script ga uploaden heb ik nog de verbindingsgegevens aangepast. (het wachtwoord heb ik voor veiligheidsredenen in de screenshot veranderd naar asterisken)
 

Daarna heb ik het bestand geüpload binnen de public_html van de online server, zodat het extern bereikbaar is.

Om te testen testen heb ik dus binnen het script, de variabelen “hardcoded” in de Query een waarde gegeven die in de database ingevoerd moeten worden.

Dit was het moment dat de problemen begonnen… Ik kreeg dus de bovenstaande foutmelding toen ik de script wou uitvoeren. Ik heb dus eerst de hosting service zelf geraadpleegd bij de meest gestelde vragen en kwam op het volgende uit:
https://www.000webhost.com/website-faq/my-website-shows-internal-server-error-15

Ik heb dus de rechten van het bestand aangepast, zodat het code (755) werd, maar dit gaf precies hetzelfde foutmelding als resultaat.

https://docs.unity3d.com/ScriptReference/Application-platform.html
https://docs.unity3d.com/ScriptReference/RuntimePlatform.html

Met de bovenstaande bronnen was dit gedeelte een eitje!~
Het verliep daarom ook zonder problemen, en na het getest te hebben functioneerde het daadwerkelijk ook!

Nu moest ik alleen nog de verbinding met Unity fixen, en dat was alleen maar de PHPurl wijzigen in de Level script.

 

Alleen laten uitvoeren als het apparaat een Android is
Eindelijk! Kon ik door naar het laatste gedeelte,

De hardcoded gegevens waren namelijk nu ook aangekomen in de database (de 99’s zijn  de hardcoded waardes en de 0’en zijn de waardes die komen omdat de non-hardcoded script geen waardes doorgekregen heeft).

Het was dus maar een Server Time-Out van de hosting service zelf.
 

NOG Gekker was dat mijn originele php script nu opeens wel wou uitvoeren.
 

Dit was alleen wel het moment dat ik me besefte dat ik eigenlijk liever niet heb dat mijn persoonlijke maandelijkse hosting dataverkeer wordt gevuld met “schooltroep” zoals ik dat noem.
Dus keerde koppige ik weer terug naar de gratis hosting service.

Na een aantal uren naar oplossingen gezocht te hebben, had ik maar besloten om een ander php script te maken die alleen maar probeert te verbinden met de Database i.p.v. ook waardes in te voeren, zodat ik kon kijken of het lag aan de rechten die ik bij de database heb.

Tot mijn verbazing, kon ik gewoon wel verbinden met de database:

Gelukkig spraken de problemen voor zich en was dit ook snel op te lossen door andere namen te nemen.
 

Ik mocht geen database aanmaken binnen de phpMyAdmin, dit moest dus d.m.v. een DirectAdmin Panel.
http://rimote.nl/support/kennisbank/DirectAdmin/website/mysql-database-aanmaken-directadmin


Vervolgens had ik daar weer een paar kleine probleempjes:

Daarom besloot ik eerst om zonder PHP script waardes in te voeren in de tabel binnen phpMyAdmin zelf met een Query, maar dit bleef vasthaken op de “Loading” melding. Dit vond ik dus wel heel raar dat zelfs dit niet werkte.

Daarom had ik dus besloten om de database na te maken bij mijn eigen webhosting provider en des noods daarmee te verbinden. Dit bracht alleen wel allemaal nieuwe problemen met zich mee.

Dit was dan ook het moment dat ik phpMyAdmin ging checken om er achter te komen dat er daar ook een aantal dingen fout gingen. Ik besloot om deze gigantische foutmelding maar te negeren en niet op te zoeken, aangezien het probleem toch wel duidelijk lag aan het feit dat de script niet uitgevoerd kon worden. Dus vond ik het niet raar dat de foutmeldingen over de mislukte Query hier verschenen.
 

bottom of page