<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Beiträge von Michael Stidl - Mobile USTP MKL</title>
	<atom:link href="https://mobile.fhstp.ac.at/author/it211510/feed/" rel="self" type="application/rss+xml" />
	<link>https://mobile.fhstp.ac.at/author/it211510/</link>
	<description>Die &#34;Mobile Forschungsgruppe&#34; der USTP, sie  sammelt hier alles zu den Themen Design, UX und Entwicklung mobiler Applikationen</description>
	<lastBuildDate>Sun, 05 Nov 2023 20:48:30 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://mobile.fhstp.ac.at/wp-content/uploads/2025/03/icon-120x120.webp</url>
	<title>Beiträge von Michael Stidl - Mobile USTP MKL</title>
	<link>https://mobile.fhstp.ac.at/author/it211510/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>My Virtual Pet 3.0</title>
		<link>https://mobile.fhstp.ac.at/allgemein/my-virtual-pet-3-0/</link>
		
		<dc:creator><![CDATA[Michael Stidl]]></dc:creator>
		<pubDate>Sun, 05 Nov 2023 20:44:19 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[JavaScript]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=11493</guid>

					<description><![CDATA[<p>Grundkonzept und Updates My Virtual Pet ist ein von Tamagotchis inspiriertes Spiel, welches ich 2021/22 begonnen habe zu programmieren. Hierzu finden sich auch schon zwei frühere Blogeinträge unter dem gleichen Namen. Die erste Version des Spiels diente mehr dazu die Spieleentwicklung mit JavaScript und Unity zu vergleichen bzw. meine JavaScript Kenntnisse zu verbessern. Das Design <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/my-virtual-pet-3-0/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/my-virtual-pet-3-0/">My Virtual Pet 3.0</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Grundkonzept und Updates</h2>



<p>My Virtual Pet ist ein von Tamagotchis inspiriertes Spiel, welches ich 2021/22 begonnen habe zu programmieren. Hierzu finden sich auch schon zwei frühere Blogeinträge unter dem gleichen Namen. Die erste Version des Spiels diente mehr dazu die Spieleentwicklung mit JavaScript und Unity zu vergleichen bzw. meine JavaScript Kenntnisse zu verbessern. Das Design des Spiels lag hierbei im Hintergrund, da der Fokus mehr auf der Implementierung der verschiedenen Funktionen lag. Bei der nächsten Version &#8220;My Virtual Pet 2.0&#8221;, lag wiederum der Fokus stark auf Design und zusätzlich darauf einen neuen Spielmodus zu implementieren &#8211; den Quiz-Modus. Bei der neuesten Version &#8211; 3.0, habe ich das mehr dreidimensionale Design der Charaktere von der 2.0 Version aufgegriffen und einen 3D Modus implementiert. Zusätzlich habe ich erhaltene Kritik aufgenommen und aufgrund dieser, das Spielerlebnis generell versucht zu verbessern. </p>



<h2 class="wp-block-heading">Was ist Three.js?</h2>



<p>Three.js ist eine JavaScript Bibliothek und ein 3D-Grafik-Framework, welches die Erstellung von 3D Grafiken und Animationen für Webanwendungen erleichtert. Es benutzt WebGL (Web Graphics Library), eine API welche speziell für das Web entwickelt wurde und bietet eine benutzerfreundliche Schnittstelle zur Erstellung von 3D Inhalten. </p>



<h2 class="wp-block-heading">Starten mit Three.js:</h2>



<p>Die Installation von Three.js ist mit ein paar Zeilen im Terminal schnell erledigt. Auf threejs.org findet man eine gute Dokumentation und einen Installation Guide. </p>



<p>Zusätzlich benötigt man noch Vite, ein Build-Tool und eine Entwicklungsumgebung speziell für webbasierte JavaScript Projekte. Hierdurch wird der Entwicklungs- und Build-Prozess optimiert. Die Installation war auch mit ein paar Kommandozeilen im Terminal erledigt, dauert nur ein bisschen länger zum Runterladen und Installieren. </p>



<h2 class="wp-block-heading">First Steps &#8211; Szene, Kamera und Renderer:</h2>



<p>Zuerst muss man ganz oben im Code dem Import erstellen mit: <strong>import * as THREE from &#8216;three&#8217;;</strong></p>



<p><span style="text-decoration: underline">Um 3D Objekte anzeigen zu können benötigt man dann eine Szene, eine Kamera und einen Renderer:</span></p>



<p><strong>const scene = new THREE.Scene();<br>const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );</strong></p>



<p><strong>const renderer = new THREE.WebGLRenderer();<br>renderer.setSize( window.innerWidth, window.innerHeight );<br>document.body.appendChild( renderer.domElement );</strong></p>



<p>Es stehen mehrere verschiedne Kameras zur Auswahl, wie Orthographic Camera und Stereo Camera, die Perspective Camera ist jedoch die, die die Inhalte am ehesten darstellt so wie das Menschliche Auge es sehen würde. </p>



<p>Nachdem die drei essentiellen Elemente erstellt wurden, fehlt nur noch ein Objekt. Hier hat man zwei Möglichkeiten. Primitive Formen mittels Three.js erstellen oder ein fertiges 3D Objekt, welches mit einem  3D Programm modelliert wurde, laden. In My Virtual Pet habe ich beides gemacht. </p>



<h2 class="wp-block-heading">Erstellen von Formen:</h2>



<p><strong>const geometry = new THREE.SphereGeometry(0.05, 10, 10);<br>const material = new THREE.MeshStandardMaterial( {color: 0xffffff});<br>const star = new THREE.Mesh( geometry, material);<br>scene.add(star);</strong></p>



<p>Hier habe ich mich dazu entschlossen, Kugeln zu erstellen, welche im Spiel kleine Sterne repräsentieren sollen, die verteilt den Hintergrund füllen sollen und so für mehr Tiefe sorgen sollen. </p>



<p>Die erste Codezeile ist für das &#8220;Gerüst&#8221; der Form. Hier werden Punkte erstellt (Vertices) Welche dann gefüllt werden (faces) und eine Form entstehen lassen. Hier habe ich mich für die Sphere (Kugel) entschieden, aber es gibt weitere primitive Formen wie Box, Circle, Cylinder, Plane usw..</p>



<p>Die zweite Codezeile ist für das Material, welchem wir eine Farbe zuweisen können, um die Form einzufärben.</p>



<p>In der dritten Codezeile machen wir ein Mesh. Das Mesh ist ein Objekt welches die Form nimmt und mit dem Material verbindet, dass wir es in der Szene platzieren und bewegen können</p>



<p>In der vierten und letzten Codezeile fügen wir die fertige Kugel unserer Szene hinzu. </p>



<p><span style="text-decoration: underline">Hiermit habe ich die Kugeln dann noch mit zufälligen Koordinaten im Spiel verteilt:</span></p>



<p><strong>const [x, y, z] = Array(3).fill().map(() =&gt; THREE.MathUtils.randFloatSpread(100));<br>star.position.set(x, y, z);</strong></p>



<figure class="wp-block-image size-full"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/11/Spheres.png"><img fetchpriority="high" decoding="async" width="374" height="406" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/11/Spheres.png" alt="" class="wp-image-11523" /></a></figure>



<h2 class="wp-block-heading">Lichtquelle:</h2>



<p>Zusätzlich kann man noch eine Lichtquelle in der Szene platzieren. Hier gibt es verschiedene zur Auswahl, wie Ambient Light, Directional Light und Point Light. </p>



<p><span style="text-decoration: underline">Hier ein Beispiel wie man ein Ambient Light hinzufügt:</span></p>



<p>const light = new THREE.AmbientLight( 0x404040 ); <br>scene.add( light );</p>



<p>Im Konstruktor werden jeweils die Intensität des Lichts sowie die Farbe angegeben. Danach fügt man das Licht der Szene hinzu. Im Spiel habe ich ein Ambient Light verwendet, welches alle Objekte in der Szene gleich beleuchtet und ein Point Light, für eine Stehlampe, welches Licht von einem Punkt in alle Richtungen ausstrahlt. </p>



<figure class="wp-block-image size-full"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/11/Light.png"><img decoding="async" width="376" height="407" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/11/Light.png" alt="" class="wp-image-11524" /></a></figure>



<h2 class="wp-block-heading">Orbit Controls:</h2>



<p>Eine weitere Funktion, die ich eingebaut habe, ist Orbit Controls. Orbit Controls erlaubet einem die Kamera um ein Objekt zu schwenken und zu zoomen. Diese Funktion ermöglicht es im Spiel den Raum samt Inhalten zu drehen und hinein bzw. hinaus zu zoomen.</p>



<p><span style="text-decoration: underline">Zuerst muss man es oben im Code wieder implementieren, mit:</span> </p>



<p><strong>import { OrbitControls } from &#8216;three/addons/controls/OrbitControls.js&#8217;;</strong></p>



<p>Danach weist man den Konstruktor wieder einer Variable zu. Hier gibt man die Kamera, welche kontrolliert werden soll, an und das HTML Dom Element. </p>



<p><span style="text-decoration: underline">In der Zeile danach wird dann nach jeder Änderung der Kamera der Renderer aufgerufen, um die Szene zu erneuern:</span></p>



<p><strong>const controls = new  OrbitControls( camera, renderer.domElement );</strong></p>



<p><strong>controls.addEventListener( &#8216;change&#8217;, render );</strong></p>



<p><span style="text-decoration: underline">Um den Zoom einzuschränken, habe ich noch eine minimum und maximum Distanz angegeben, mit: </span></p>



<p><strong>controls.minDistance = 0.6;<br>controls.maxDistance = 7;</strong></p>



<figure class="wp-block-image size-full"><img decoding="async" width="1125" height="669" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/10/3D-Modus.png" alt="" class="wp-image-11497" /></figure>



<h2 class="wp-block-heading">3D Objekte laden:</h2>



<p>Die Objekte, welche ich mit Womp modelliert habe, können entweder als OBJ oder STL exportiert werden. In der Three.js habe ich schnell eine Möglichkeit gefunden OBJ Dateien zu laden, mittels dem OBJLoader. Leider hatte ich Probleme die 3D-Modelle damit zu laden. Die Objekte sind zwar geladen worden, jedoch nicht mit den passenden Farben und Texturen, speziell beim Charakter. Auch nach längerem recherchieren und rum probieren habe ich es nicht geschafft die OBJ Dateien mit den richtigen Farben geladen zu bekommen. Meine Lösung war auf einen anderen Loader bzw. auf eine andere Dateiart zu wechseln. </p>



<p>Ein Loader der bei meiner Recherche häufig aufgekommen ist, ist der GLTFLoader. Um diesen für meine schon in Womp modellierten Objekte verwenden zu können, habe ich die exportierten OBJ Dateien in Blender, einer anderen 3D Software, importiert. Hier wurden sie ohne Probleme mit den richtigen Farben und Texturen geladen. Die importierten OBJ Dateien habe ich somit dann als GLTF/GLB Dateien exportieren können und dann mit dem GLTFLoader ohne Probleme laden können. </p>



<p>Das einzige noch bestehende Problem war, dass ich einige Glasoberflächen mit dem entsprechendem Material in den Modellen hatte und diese leider nicht durchsichtig, wie Glas sein sollte, geladen wurden. Ich habe dann die dementsprechenden Oberflächen aus den Modellen gelöscht und leer gelassen, sodass zumindest die Illusion besteht und man hindurchsehen kann. </p>



<p><span style="text-decoration: underline">Der Code für den GLTFLoader sieht wie folgt aus:</span></p>



<p><strong>import { GLTFLoader } from &#8216;three/addons/loaders/GLTFLoader.js&#8217;;</strong></p>



<p><strong>const loader = new GLTFLoader();</strong></p>



<p><strong>loader.load(</strong></p>



<p><strong>&#8216;CharacterTest.glb&#8217;,</strong></p>



<p><strong>scene.add( gltf.scene );</strong></p>



<p><strong>},</strong></p>



<p><strong>function ( xhr ) { </strong></p>



<p><strong>console.log( ( xhr.loaded / xhr.total * 100 ) + &#8216;% loaded&#8217; ); </strong></p>



<p><strong>},</strong></p>



<p><strong>function ( error ) { </strong></p>



<p><strong>console.log( &#8216;An error happened&#8217; ); </strong></p>



<p><strong>} );</strong></p>



<p>In der ersten Codezeile wird der Loader importiert. Danach initiiert. Dann folgt das eigentliche Laden des Objekts, wo man die URL vom Objekt angibt, welches man laden möchte. in der folgenden Funktion wird es dann zu der Szene hinzugefügt. die folgenden zwei Funktionen sind um anzuzeigen wie weit das entsprechende Objekt geladen ist und eine Meldung falls ein Error beim Laden passiert. <br></p>



<h2 class="wp-block-heading">Bedürfnisse füllen in 3D Umgebung:</h2>



<p>Um den neugewonnenen 3D Bereich zu nutzen, habe ich einen Raum modelliert und ihn mit Objekten gefüllt, welche die Bedürfnisse des Charakters repräsentieren. Für den Hunger einen Kühlschrank, für das Spielen einen Laptop, für das Waschen eine Dusche und für das Schlafen ein Bett. </p>



<p>Damit der Charakter lebendiger wird, wird er bei jedem Betätigen der Bedürfnis-Buttons zu dem dementsprechenden Objekt bewegt. Hierfür ändere ich sowohl die Position als auch die Rotation des Charakters, wenn der Button gedrückt wurde und setze die Werte nach kurzer Zeit wieder auf die Ursprungswerte zurück, um den Character wieder auf die Ausgangsposition zu bringen. </p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1505" height="667" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/10/FillingNeeds3D.png" alt="" class="wp-image-11496" /></figure>



<h2 class="wp-block-heading">Bedürfnisse sinken offline</h2>



<p>Eine Kritik von der letzten Version war, dass die Bedürfnisse auch offline sinken sollen, um es ähnlicher zu einem richtigen Tamagotchi zu machen und um das Spielerlebnis zu verbessern. </p>



<p>Hierfür habe ich das &#8220;beforeunload&#8221;-Event verwendet. Dieses wird aktiviert, wenn das aktive Fenster aktualisier oder geschlossen wird. </p>



<p>Sobald das Event getriggert wird, werden alle benötigten Werte, wie die von den verschiedenen Bedürfnissen und zusätzlich ein Timestamp in den Local Storage gespeichert. </p>



<p>Bei dem folgenden Start vom Spiel wird der Wert vom gespeicherten Timestamp das von der jetzigen Zeit abgezogen und durch tausend dividiert, um einen Wert zu erhalten, der von den Bedürfnissen abgezogen wird. </p>



<p><span style="text-decoration: underline">Zuerst Werte Speichern, bevor Fenster geschlossen wird(Hier nur am Beispiel vom Timestamp):</span></p>



<p><strong>window.addEventListener(&#8220;beforeunload&#8221;, function() {</strong></p>



<p><strong>window.localStorage.setItem(&#8220;lastPlayedTimestamp&#8221;, new Date().getTime().toString());</strong></p>



<p><strong>});</strong></p>



<p><span style="text-decoration: underline">Bei neu laden, entsprechenden Wert von Bedürfnissen abziehen (Hier nur am Beispiel vom Hunger-Bedürfnis):</span></p>



<p><strong>function offlineDepleation () {</strong></p>



<p><strong>var currentTime = new Date().getTime();</strong></p>



<p><strong>var lastPlayedTimestamp = localStorage.getItem(&#8220;lastPlayedTimestamp&#8221;);</strong></p>



<p><strong>var timeElapsed = lastPlayedTimestamp ? currentTime &#8211; parseInt(lastPlayedTimestamp) : 0;</strong></p>



<p><strong>var deductedOfflineValue = Math.floor(timeElapsed / 1000);</strong></p>



<p><strong>hunger -= deductedOfflineValue;</strong></p>



<p><strong>if (hunger &lt;= 0) {</strong></p>



<p><strong>hunger = 0;</strong></p>



<p><strong>}</strong></p>



<p><strong>}</strong></p>



<p>In der ersten Codezeile speichere ich mir die aktuelle Zeit ab (welche in Millisekunden seit Jänner 1, 1970 abgespeichert wird) und in der zweiten Zeile hole ich mir die Zeit zu der zuletzt gespielt wurde aus dem Local Storage. Die nächste Zeile kontrolliert ob ein lastPlayedTimestamp existiert, wandelt ihn in einen Integer um und rechnet die Differenz zwischen diesem und der jetzigen Zeit aus. Wenn kein lastPayedTimestamp existiert, wird der Wert 0 genommen. Dieser Wert wird in der nächsten Zeile dann durch tausend dividiert, um Sekunden zu erhalten bzw. einen Wert welcher klein genug ist, um ihn von den Werten der Bedürfnisse abziehen zu können, welches in der darauffolgenden Zeile passiert. Zuletzt wird noch kontrolliert, dass der Wert des Bedürfnisses nicht kleiner als 0 wird. </p>



<h2 class="wp-block-heading">3D- und 2D-Modus + abgeänderter Startscreen</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1509" height="667" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/10/2Dund3D.png" alt="" class="wp-image-11500" /></figure>



<p>Der Startscreen hat sich im Vergleich zu der alten Version etwas geändert. Ich habe die alten Sprites von der ersten Version den Spiels wieder hinzugefügt und in den &#8220;2D Modus&#8221; gesteckt. Somit hat der Spieler die Wahl in 3D oder 2D zu Spielen und die alten Sprites bleiben erhalten. </p>



<p>Der &#8220;Survival Mode&#8221; von der letzten Version wurde zu den 3D- und 2D-Mode und der Quiz-Modus wurde in den Continue Screen versetzt. </p>



<p>Da das Spiel jetzt automatisch speichert, wurde der &#8220;Load Game&#8221;-Button unten rechts zum &#8220;New Game&#8221; -Button. Hier werden die gespeicherten Werte im Local Storage zurückgesetzt, sodass man nicht wieder beim neuen Continue Screen landet (siehe unten), sondern wieder beim diesem Startscreen. </p>



<h2 class="wp-block-heading">Geld Funktion</h2>



<p>Um das Spiel noch ähnlicher zu einem Tamagotchi zu machen, habe ich den Timer bzw. die &#8220;Survival&#8221; Funktion vom Spiel entfernt. Der Timer, welcher links unter den Bedürfnissbalken war, habe ich durch eine neue Geld Funktion ersetzt. Alle 10 Sekunden, die man aktiv im Spiel verbringt, gewinnt man 1$ dazu. Diese Währung kann man dann dazu verwenden eine neue Version deines ausgewählten Charakters freizuschalten. Diese Funktion soll dazu anregen, mehr Zeit im Spiel selbst zu verbringen und öfter zu spielen. </p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1509" height="667" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/10/AltFarben.png" alt="" class="wp-image-11502" /></figure>



<h2 class="wp-block-heading">Continue Screen</h2>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="381" height="672" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/11/ContinueScreen.jpg" alt="" class="wp-image-11533 size-full" /></figure><div class="wp-block-media-text__content">
<p>Der Continue Screen wird angezeigt, sobald man das Spiel aufruft und davor schon mal ein Spiel angefangen hat. Hier kontrolliere ich mit einer Funktion, ob schon Werte im Local Storage abgespeichert wurden und zeige dann dementsprechend nur gewisse Elemente an. Mit dem New Game Button werden diese Werte wieder zurückgesetzt und man landet wieder beim eigentlichen Startscreen.</p>
</div></div>



<h2 class="wp-block-heading">3D Assets</h2>



<p>Die unten dargestellten 3D-Assets habe ich mithilfe von Womp-3D modelliert. Zu Womp-3D habe ich auch schon einen früheren Blogeintrag erstellt. </p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/11/copy-of-copy-of-Pet-Mobile-Screenshot-703694.png"><img loading="lazy" decoding="async" width="1280" height="720" data-id="11510" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/11/copy-of-copy-of-Pet-Mobile-Screenshot-703694.png" alt="" class="wp-image-11510" /></a></figure>



<figure class="wp-block-image size-large"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/11/copy-of-copy-of-Pet-Mobile-Screenshot-703693.png"><img loading="lazy" decoding="async" width="1280" height="720" data-id="11508" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/11/copy-of-copy-of-Pet-Mobile-Screenshot-703693.png" alt="" class="wp-image-11508" /></a></figure>



<figure class="wp-block-image size-large"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/11/copy-of-copy-of-Pet-Mobile-Screenshot-703692.png"><img loading="lazy" decoding="async" width="1280" height="720" data-id="11509" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/11/copy-of-copy-of-Pet-Mobile-Screenshot-703692.png" alt="" class="wp-image-11509" /></a></figure>



<figure class="wp-block-image size-large"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/11/copy-of-copy-of-Pet-Mobile-Screenshot-703691.png"><img loading="lazy" decoding="async" width="1280" height="720" data-id="11511" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/11/copy-of-copy-of-Pet-Mobile-Screenshot-703691.png" alt="" class="wp-image-11511" /></a></figure>
</figure>



<h2 class="wp-block-heading">Learnings</h2>



<p>Mit diesem Projekt habe ich gelernt mit Three.js zu arbeiten, was für mich etwas ganz neues war. Ich habe auch generell mehr gelernt wie man mit 3D Objekten arbeitet und diese in Applikationen einbindet. Bis dahin habe ich mich nur etwas mit der Modellierung von 3D Objekten beschäftigt gehabt. Zusätzlich habe ich mich noch mehr mit dem Spielerlebnis selbst auseinandergesetzt. Bei der ersten Version des Spiels lag der Fokus sehr darauf etwas in mehreren Technologien umzusetzen und diese Technologien zu vergleichen und nicht auf dem Spiel selbst. In der zweiten Version habe ich mich dann auf das Design konzentriert und darauf einen neuen Spielmodus hinzuzufügen, ohne das eigentliche Spiel zu verändern. Bei dieser Version habe ich das Gefühl einen guten Abschluss erreicht zu haben, indem ich sowohl eine neue Technologie erlernt habe als auch das gesamte Spielerlebnis verbessern konnte, zu der vorherigen Version. Das Spiel fühlt sich auf jeden Fall &#8220;fertiger&#8221; an, wobei man natürlich immer verbessern und erweitern kann. </p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/my-virtual-pet-3-0/">My Virtual Pet 3.0</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>3D modellieren einfach gemacht? &#8211; Womp</title>
		<link>https://mobile.fhstp.ac.at/allgemein/3d-modellieren-einfach-gemacht-womp/</link>
		
		<dc:creator><![CDATA[Michael Stidl]]></dc:creator>
		<pubDate>Tue, 20 Dec 2022 15:50:52 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=10419</guid>

					<description><![CDATA[<p>Was ist Womp? Womp ist eine im Webbrowser laufende Applikation, die es ermöglicht 3D Modelle zu erstellen. Herkömmliche 3D Software is meistens sehr komplex und kann schnell überwältigend sein. Ich selbst habe etwas Erfahrung mit der 3D Software Blender und wie ich sie das erste Mal geöffnet habe, habe ich mich vom User Interface schon <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/3d-modellieren-einfach-gemacht-womp/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/3d-modellieren-einfach-gemacht-womp/">3D modellieren einfach gemacht? &#8211; Womp</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Was ist Womp?</h2>



<p>Womp ist eine im Webbrowser laufende Applikation, die es ermöglicht 3D Modelle zu erstellen. Herkömmliche 3D Software is meistens sehr komplex und kann schnell überwältigend sein. Ich selbst habe etwas Erfahrung mit der 3D Software Blender und wie ich sie das erste Mal geöffnet habe, habe ich mich vom User Interface schon fast erschlagen gefühlt. Man wird von gefühlt hundert unterschiedlichen Optionen und Werkzeugen begrüßt, wie: Netze, Scheitelpunkte, Polygone, Boolsche Werte, Verrundungen, Erhebungen, Unterteilungen und Retopologie … um nur einige zu nennen. <br>Ich wollte für ein Spiel Charaktere in 3D erstellen, habe es mit Blender versucht und durch Fehler beim Rendern frustrierend aufgegeben und nach Alternativen gesucht. Somit bin ich auf Womp gestoßen. <br>Womp ist einfach zu bedienen und weil es im Browser und auf externen Servern läuft, braucht man keinen starken Computer mit einer teuren Grafikkarte.Womp-Projekte werden auch automatisch in der Cloud  gespeichert, sodass man überall auf jedem Gerät arbeiten kann. <br></p>



<p>Womp verwendet keine komplexe Geometrie. Stattdessen werden klebrige und flüssige Formen verwendet, die man leicht und zügig verändern kann, ohne die steile Lernkurve von üblicher 3D Software wodurch Womp sehr einsteigerfreundlich ist. <br></p>



<p>Womp ist auch sehr gemeinschaftsorientiert. Man kann seine Kreationen problemlos innerhalb der Womp-Community teilen und die Arbeit der anderen verfolgen und liken. Zusätzlich kann man die in der Community geteilten Projekte herunterladen und sich im Detail anschauen wie das 3D Objekt genau kreiert wurde. <br>Man kann seine Werke auch ganz einfach in bestimmten Größen exportieren, oder auch als 3D Objekt herunterladen, um es in anderer Software verwenden zu können, oder auch mit einem 3D-Drucker auszudrucken. </p>



<h2 class="wp-block-heading">Get started</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1540" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/12/WompStart-1540x800.jpg" alt="" class="wp-image-10431" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2022/12/WompStart-1540x800.jpg 1540w, https://mobile.fhstp.ac.at/wp-content/uploads/2022/12/WompStart-770x400.jpg 770w" sizes="auto, (max-width: 1540px) 100vw, 1540px" /></figure>



<p>Wenn man ein neues Projekt in Womp startet, wird man mit diesen Screen willkommen geheißen. Diese Szene spiegelt die Grundprinzipien der Software wieder. Man hat Primitive Formen, wie einen Cube und eine Sphere. Diese können durch sogenanntes &#8220;Gooping&#8221; miteinander verbunden werden &#8211; sozusagen verschmelzen. Man kann auch Formen voneinander abziehen, wie in dem Beispiel eine Sphere aus der Mitte eines Cubes abgezogen wird. Man sieht auch noch, dass die Formen unterschiedliche Farben und Materialien haben können. </p>



<h2 class="wp-block-heading">Primitives</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1266" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/12/WompPrimitives-1266x800.jpg" alt="" class="wp-image-10429" /></figure>



<p>Es stehen drei Formen zur Verfügung, Cylinder, Cube und Sphere, aus denen man aus unzähligen Kombinationen seine 3D Objekte erstellen kann. Diese Formen kann man auch jederzeit in den Optionen wieder ändern &#8211; zum Beispiel eine Sphere zu einem Cube machen. Wie man in den Beispiel-Bild erkennen kann, kann man den Formen auch verschiedene Materialien zuweisen und hier deren Farbe und Beschaffenheit ändern. So kann man beispielsweise Formen aus Metall und Glas erstellen. </p>



<h2 class="wp-block-heading">Curves</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1280" height="720" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/12/WompCurves.jpg" alt="" class="wp-image-10434" /></figure>



<p>Curves sind kurz gesagt, eine Gruppe aus mehreren Formen, welche miteinander durch &#8220;Gooping&#8221; oder verschmelzen miteinander verbunden sind. So kann man leicht dynamische Forme erstellen, wie Kurven oder Treppen. Man kann hier auch wieder jeder einzelnen Form in der Gruppe ein anderes Material zuweisen und somit Verläufe von Farben und Materialien erstellen. </p>



<h2 class="wp-block-heading">Gooping</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1280" height="720" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/12/WompGooping.jpg" alt="" class="wp-image-10433" /></figure>



<p>Wie schon angedeutet, ist &#8220;Gooping&#8221; eine Art Verschmelzung der Formen. Man hat die Möglichkeit an einem Regler die &#8220;Goop Strength&#8221; einzustellen, welche die Stärke der Verschmelzung bestimmt. Umso stärker die Goop Strength umso größer kann der Abstand zwischen den Formen sein, in dem sie noch miteinander verschmelzen und umso größer wird auch der Effekt der Verschmelzung. </p>



<h2 class="wp-block-heading">Negative Shapes</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1280" height="720" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/12/WompNegatives.jpg" alt="" class="wp-image-10435" /></figure>



<p>Man kann Formen nicht nur miteinander verbinden, sonder sie auch voneinander abziehen, um neue und komplexere Formen zu erstellen. In dem Beispiel-Bild habe ich aus einer Sphere für den Kopf die Augenhöhlen mit zwei weiteren Spheres subtrahiert und dann wieder etwas kleinere Spheres für die Augen hinzugefügt. Für den offenen Mund habe ich einen Cylinder von der Sphere für den Kopf abgezogen und dann einen abgerundeten Cylinder für die Zunge eingefügt. Man kann sehr schnell und leicht verständlich kompliziertere Formen erstellen. </p>



<div class="wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile" style="grid-template-columns:auto 42%"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="390" height="720" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/12/124876_22_12_18_19_08_57-e1671563415411.png" alt="" class="wp-image-10436 size-full" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading">Fazit</h2>



<p>Ich kann Womp jedem empfehlen, der schon immer mal 3D Objekte erstellen wollte und kein großen Wissen von 3D Modelling hat. Das Programm ist sehr einsteigerfreundlich. Ich finde es auch für Entwickler von Applikationen sehr gut geeignet um verschiedenste Assets, wie Icons und Schriften, schnell und effektiv zu erstellen. </p>
</div></div>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/3d-modellieren-einfach-gemacht-womp/">3D modellieren einfach gemacht? &#8211; Womp</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>My Virtual Pet 2.0</title>
		<link>https://mobile.fhstp.ac.at/allgemein/my-virtual-pet-2-0/</link>
		
		<dc:creator><![CDATA[Michael Stidl]]></dc:creator>
		<pubDate>Sun, 18 Dec 2022 18:53:19 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=10375</guid>

					<description><![CDATA[<p>Das Konzept Als Projekt für das erste Semester, in der Masterklasse Mobile, habe ich ein von Tamagotchis inspiriertes Spiel erstellt, mit den Namen &#8220;My Virtual Pet&#8221; (siehe früheren Blogbeitrag). Für das Projekt im zweiten Semester habe ich das Design des Spiels komplett überarbeitet und einen neuen Spielmodus hinzugefügt &#8211; Quiz Mode. Old vs. New Hier <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/my-virtual-pet-2-0/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/my-virtual-pet-2-0/">My Virtual Pet 2.0</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Das Konzept</h2>



<p>Als Projekt für das erste Semester, in der Masterklasse Mobile, habe ich ein von Tamagotchis inspiriertes Spiel erstellt, mit den Namen &#8220;My Virtual Pet&#8221; (siehe früheren Blogbeitrag). Für das Projekt im zweiten Semester habe ich das Design des Spiels komplett überarbeitet und einen neuen Spielmodus hinzugefügt &#8211; Quiz Mode. </p>



<h2 class="wp-block-heading">Old vs. New</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="741" height="666" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/12/StartscreensMVP.jpg" alt="" class="wp-image-10386" /></figure>



<p>Hier sieht man den Vergleich von der neuen Version (links) mit der alten Version (rechts). Das Layout ist größtenteils gleich geblieben, jedoch habe ich alle Assets neu gemacht. Einen neues Titelbild, ein neuer Bildschirmhintergrund und neue Icons für die neuen Spielmodi wurden hinzugefügt. Diese ändern jeweils die Farbe, wenn man eines davon ausgewählt hat.</p>



<p>Der visuell größte Unterschied ist der Spielercharakter bzw. das Pet, welches ich basierend auf den alten Charakter in 3D modelliert habe. Hier gibt es zwei unterschiedliche Pets zu Auswahl. </p>



<p>Zu den neuen Spielmodi Buttons ist auch noch ein neuer &#8220;Instructions&#8221; Button für die Spiele Anleitung hinzugekommen. </p>



<div class="wp-block-media-text alignwide is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="750" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/12/InstructionsMVP-750x800.jpg" alt="" class="wp-image-10391 size-full" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading">Instructions Funktion</h2>



<p>Eine neue Funktion, die hinzugekommen ist, ist es eine Anleitung vom Startbildschirm aufzurufen, welche die verschiedenen Spielmodi im Detail erklärt.</p>
</div></div>



<h2 class="wp-block-heading">Survival Mode</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="718" height="619" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/12/SurvivalModeMVP.png" alt="" class="wp-image-10390" /></figure>



<p>Der einzige Spielmodus bei der alten Version, wurde zu dem &#8220;Survival Mode&#8221; in der neuen Version. So wie beim Startbildschirm sind auch hier die Grundelemente fast ganz gleich geblieben und wurden durch ein neues styling verändert bzw. ganz durch neue Assets ersetzt. <br>In der alten Version war es nicht möglich das Spiel zu gewinnen. Das Spiel lief so lange, bis eines der Bedürfnisse null erreicht hat und somit das Spiel verloren ist. Um das Spiel auch gewinnbar zu machen, habe ich einen Timer eingebaut. Wenn man es schafft, keines der Bedürfnisse seines Pets null erreichen zu lassen, bis der Timer abgelaufen ist, hat man das Spiel gewonnen. </p>



<h2 class="wp-block-heading">Game Over Screen bei Survival Mode</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="749" height="667" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/12/GameOverMVP-1.png" alt="" class="wp-image-10401" /></figure>



<p>Der Game Over Bildschirm hat im Vergleich zum alten Spiel auch ein neues Aussehen und einen neuen Button bekommen. Man muss somit nicht mehr die ganze Webseite neu laden, um das Spiel neu zu starten, sondern gelangt mit Hilfe eines Buttons wieder zum Startbildschirm. Zusätzlich zum neuen &#8220;Game Over&#8221; Schriftzug und den neuem Hintergrundbild, habe ich noch den Pet Charakter als Geist in 3D modelliert und hinzugefügt.</p>



<h2 class="wp-block-heading">Quiz Mode</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="755" height="667" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/12/QuizModeMVP.jpg" alt="" class="wp-image-10394" /></figure>



<p>Der komplett neue Modus ist der Quiz Modus. Hier werden dem Spieler Fragen gestellt und jede richtig beantwortete Frage füllt einen Teil von einem der vier Bedürfnisbalken auf. Das Ziel ist es, alle Balken komplett aufzufüllen bevor die Zeit ausläuft. <br>Kein Versuch ist gleich. Man muss insgesamt 12 Fragen richtig beantworten, welche von einer Liste an Fragen kommen, die aus einer json Datei geholt werden. Die Fragen werden auch nie in der selben Reihenfolge gestellt, sodass jeder Versuch anders ist. Zu jeder Frage gibt es vier Antwortmöglichkeiten.<br>Bei einer richtig beantworteten Frage, färbt sich die richtige Antwort grün und ein Teil von einem Bedürfnisbalken füllt sich gleichzeitig ein Stück auf.<br>Bei einer falsch beantworteten Frage wird das Pet sichtbar traurig und es erscheint ein rotes Pop-Up, welches anzeigt, dass die gegebene Antwort falsch war und 10 Sekunden vom Timer abgezogen werden. <br>Wenn man es nicht schafft alle Bedürfnisbalken komplett aufzufüllen, bevor der Timer abläuft, hat man verloren und wird zum Game Over Screen weitergeleitet. </p>



<h2 class="wp-block-heading">Game Over und Win Screen &#8211; Quiz Modus</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="756" height="667" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/12/WinGameOverMVP-1.jpg" alt="" class="wp-image-10403" /></figure>



<p>Der Win Screen ist bei beiden Modi gleich. Dieser Screen ist ganz neu und hat in der vorherigen Version des Spiels nicht existiert. <br>Der Game Over Screen ist bis auf zwei neue Elemente gleich zu dem vom Survival Modus. Hier werden zusätzlich noch angezeigt wie viele Fragen man beim Quiz richtig beantwortet hat und ein &#8220;Results&#8221; Button, welcher eine Detailansicht zu den falsch beantworteten Fragen anzeigt. <br>Der &#8220;Play again&#8221; Button bringt den Spieler, wie auch beim Survival Modus, wieder zum Startbildschirm zurück. </p>



<div class="wp-block-media-text alignwide is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="374" height="667" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/12/ResultsMVP.png" alt="" class="wp-image-10399 size-full" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading">Results Screen</h2>



<p>Der Results Screen lässt einem alle die im Quiz falsch beantworteten Fragen anschauen und zeigt einem welche Antworten richtig und welche falsch sind. <br>Mit den zwei Buttons unter den Antworten kann man zur nächsten und zur vorherigen Frage wechseln und mit dem &#8220;Zurück&#8221; Button kommt man wieder zum Game Over Screen zurück. </p>
</div></div>



<h2 class="wp-block-heading">Benutzte Software und Technologien</h2>



<p>Figma, Photoshop, Womp, HTML, CSS, Bootstrap und JavaScript.</p>



<h2 class="wp-block-heading">Meine Learnings</h2>



<p>Nachdem ich das Design bei der ersten Version von der &#8220;My Virtual Pet&#8221; Applikation hinten angestellt habe und dann nicht mehr dazu gekommen bin, die App schön zu gestalten, war hier mein Hauptziel die App visuell zu verbessern und auch eine neue Game Mechanic hinzuzufügen. <br>Das Design habe ich Hauptsächlich mit Figma umgesetzt und die Icons und Bilder mit Photoshop bearbeitet. Die Charaktere habe ich zuerst mit Blender modelliert, hatte aber dann Probleme beim rendern, sodass ich nach Alternativen gesucht habe. Hier bin ich dann auf die ziemlich neue Software &#8220;Womp&#8221; gestoßen, welche es ermöglicht im Browser Objekte in 3D zu modellieren und zu rendern und habe die Charaktere dann hiermit basierend auf den alten 2D Charakteren umgesetzt. <br>Ich finde der Quiz Modus ergänzt das Spiel gut, da es an eine eher junge Zielgruppe gerichtet ist und somit die Kinder auch einen Lerneffekt beim Spielen bekommen. <br>Die alte Version vom Spiel habe ich mit zwei verschiedenen Technologien umgesetzt &#8211; Unity und JavaScript. Für die neue Version habe ich an der JavaScript Version weitergearbeitet, weil ich in Unity schon einmal ein Quiz programmiert habe. Um etwas neues zu lernen, habe ich mich deswegen entschlossen den neuen Quiz Modus in JavaScript zu machen. Hier ist es auch leichter das Spiel auf verschiedenen mobilen Geräten auszuprobieren. <br>Für Erweiterungen am Spiel könnte man natürlich noch weitere Spielmodi hinzufügen oder auch eine Art Overworld kreieren, wo die Spielmodi dann Minispiele wären.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/my-virtual-pet-2-0/">My Virtual Pet 2.0</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>User Interface Design: Flat Design</title>
		<link>https://mobile.fhstp.ac.at/allgemein/user-interface-design-flat-design/</link>
		
		<dc:creator><![CDATA[Michael Stidl]]></dc:creator>
		<pubDate>Wed, 09 Mar 2022 22:08:47 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=9878</guid>

					<description><![CDATA[<p>Blogeintrag Mobile &#8211; State of the Art Einleitung Einkaufen, Entertainment, Socialising, arbeiten und studieren &#8211; Information wird Rund um die Uhr empfangen und weitergegeben. Das Smartphone ist eines der wichtigsten Mittel für die Kommunikation geworden und beinhaltet so gut wie alle Informationen, die man je brauchen könnte. Somit wird auch das Usability Design und User <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/user-interface-design-flat-design/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/user-interface-design-flat-design/">User Interface Design: Flat Design</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Blogeintrag Mobile &#8211; State of the Art</p>



<hr class="wp-block-separator" />



<h2 class="wp-block-heading"><strong>Einleitung</strong></h2>



<p>Einkaufen, Entertainment, Socialising, arbeiten und studieren &#8211; Information wird Rund um die Uhr empfangen und weitergegeben. Das Smartphone ist eines der wichtigsten Mittel für die Kommunikation geworden und beinhaltet so gut wie alle Informationen, die man je brauchen könnte. Somit wird auch das Usability Design und User Interface Design (die Gestaltung der Benutzeroberfläche) für eben diese mobilen Geräte auch immer relevanter. Designer suchen konstant nach besseren Methoden um das Design noch intuitiver und effektiver zu gestalten. (Jia, 2021)</p>



<h2 class="wp-block-heading"><strong>User Interface Design</strong></h2>



<p>Die Benutzeroberfläche, auch User Interface (UI) genannt, erleichtert die Kommunikation zwischen Menschen und Geräte &#8211; wie Computer und Smartphones. Sie besteht aus physischen und kommunikativen Aspekten von Input und Output oder Interaktion zwischen Mensch und Maschine. User Interface Design für Computer und Smartphones beinhaltet Applikationen, Betriebssysteme und Netzwerke. UI Design ist die Gestaltung von allen essentiellen wahrnehmbaren Eigenschaften einer Webseite. Dazu gehören die visuellen, auditiven und fühlbaren Eigenschaften. Beispielsweise die Wahl der Farbe, Schriftart, Animationen, Sprache, auditive Hinweise und Vibrationen. (Marcus, 2002, p.24)</p>



<p>Mobile User Interface Design, bezeichnet das gestalten der Mensch-Computer Interaktion und das Benutzen der Software durch die Benutzeroberfläche, welche am Smartphone über den Bildschirm angezeigt wird. Es ist sozusagen die Brücke der Kommunikation zwischen Mensch und Smartphone. Deswegen ist ein gutes UI Design auch ein ausschlaggebender Punkt für den Kauf eines Smartphones, da es nach dem Smartphone selbst, das Erste ist, was einem ins Auge springt. Ein gutes User Interface sollte dem Benutzer ein reibungsloses Benutzen der Software ermöglichen, sodass der Fokus am Prozess liegt, welcher durchgeführt wird und nicht an der Bedienung. Das UI Design hat einen direkten Effekt auf die Aufmerksamkeit des Benutzers und hat somit auch einen Einfluss darauf, wie lange und gerne die Applikation genutzt wird und somit auch das Smartphone selbst. Dies hat einen großen Einfluss auf das Kaufverhalten und ob der Konsument bei dem Produkten bleibt, oder lieber zu einem Produkt eines Konkurrenten wechselt. (Jia, 2021)</p>



<p>Weil User Interfaces unabhängig von Sprache werden soll, wird es immer wichtiger Konzepte und Aktionen durch Zeichen, Symbole, Bilder und Illustrationen zu übermitteln. (Dillon, 2006)</p>



<h2 class="wp-block-heading"><strong>Flat Design Definition</strong></h2>



<p>Flat Design ist ein moderner und digitaler Stil, welcher sich auf Minimalismus fokussiert, indem extra Elemente und Effekte vom Design, wie Schatten, Lichteffekte und Texturen, entfernt werden. (Pratas, 2014)</p>



<p>Flat Design basiert auf den Prinzipien von Gittern, geometrischen Formen und visueller Ausgeglichenheit. Die Elemente werden simpel und zweidimensional dargestellt und wirken wie auf den Bildschirm aufliegend. Dies wird mit simplen Formen, zweidimensionalen Elementen, minimalen Texturen und sättigenden Farben geschaffen. Durch das simple Design funktionieren sie besonders gut auf Webseiten und mobilen Applikationen, weil dadurch Ladezeiten verkürzt werden. (El-Sherbiny, 2020)</p>



<p>Das Grundkonzept von Flat Design ist, wiederholende und komplizierte dekorative Elemente wegzulassen, um sich auf das wesentliche Objekt zu konzentrieren. Grafische Elemente, Texturen sowie dreidimensionale Effekte werden weggenommen, um nicht vom Wesentlichen abzulenken. Somit soll die Information simpel dargestellt werden, mit einer geschmeidigen Form und leuchtenden Farben. Informationen sollen direkter und leichter wahrnehmbar kommuniziert werden. Flat Design soll die Benutzung einer Applikation somit so einfach und intuitiv wie möglich machen. Das simpel gehaltene Flat Design kann sich auch besser den verschiedenen Bildschirmgrößen anpassen und verbraucht wenig Speicherplatz, sodass die Ladezeiten kürzer sind. Somit wird auch das Benutzererlebnis verbessert.(Jia, 2021)</p>



<h2 class="wp-block-heading"><strong>Die Entstehung von Flat Design</strong></h2>



<p>Flat Design wurde als eine Alternative zu Skeuomorphic Design entwickelt, welches die Illusion von Dreidimensionalität erschafft, indem es mit dem Design das echte Objekt so nah wie möglich zu repräsentieren. Skeuomorphismus wurde von Apple für die grafische Benutzeroberfläche von dem iOS Betriebssystem im Januar 2007 verwendet. Dieses Betriebssystem wurde für mehrere Apple Produkte, wie das iPhone, das iPad, der iPod Touch und Apple TV, verwendet. Es verwendet verstärkt Verläufe, Schatten, Lichteffekte und Reflektionen. (Curtis, 2015)</p>



<p>Die ersten Versuche Flat Design für digitale Produkte zu verwenden kamen von Microsoft, für den Launch des MP3-Players Zune. Danach wurde Flat Design immer beliebter und wurde 2010 auch für die digitale Benutzeroberfläche des Windows Phone7 verwendet. Danach haben auch große Firmen wie Google und Apple die Flat Design Prinzipien in deren mobilen und web-basierten Applikationen übernommen. (El-Sherbiny, 2020)</p>



<p>Die Wurzeln von Flat Design liegen in der “Schweizer Typografie”. Dieser Grafikstil war eines der Grundgerüste von Grafikdesign in der&nbsp; Mitte des 20. Jahrhunderts und wurde von den Schweizer Designern Josef Müller-Brockmann und Armin Hofmann gegründet. Die Schweizer Typographie verbindet Einflüsse vom Kubismus, Konstruktivismus, Futurismus, Suprematismus und Surrealismus. (Meggs, 2005).</p>



<h2 class="wp-block-heading"><strong>Nachteile von Flat Design</strong></h2>



<p>Heutzutage ist es möglich bei Webseiten die häufigsten Aktionen, die ein User durchführt und die wiederkehrenden Muster von Interaktionen zu kategorisieren. Während Benutzer sich immer mehr an die gemeinsamen Funktionen und Bedienungen von Webseiten gewohnt haben, wurden Icons immer mehr verwendet, um Text bzw. Beschreibungen zu ersetzen. Flat Design ist einer der neuesten Trends, Icons noch mehr zu abstrahieren. Das Entfernen von Merkmalen und Attributen kann aber auch die Mehrdeutigkeit von Symbolen erhöhen und somit ihre Erkennbarkeit beeinträchtigen. Ein Hauptkritikpunkt von Flat Design ist die Zweidimensionalität, welche die Wiedererkennbarkeit von Symbolen negativ beeinträchtigen kann. Speziell bei der Umwandlung von Icons und dem Übergang von einem Form zentrierten Ansatz, welcher die Merkmale eines Symbols betont, zu einem funktionsorientierten Ansatz, welcher sich auf die Funktion und die dahinter stehende Absicht fokussiert. (Legleiter &amp; Caporusso, 2020)</p>



<p>Icons repräsentieren im Flat Design deren Funktion bzw. das Ziel des Benutzers und nicht, so wie früher üblich, das eigentliche Objekt. Somit kann es leichter zu Missverständnissen in deren Bedeutung kommen. Die Abwesenheit einer Textbeschriftung des Symbols spielt eine große Rolle für das Verständnis von den Nutzern. In einer Studie von Legleiter &amp; Caporusso &nbsp;wurde das Verständnis von Flat Design geprüft. Hierfür wurden die meistverwendeten Icons von Webseiten untersucht. Es wurde aufgeführt, dass das Erkennen von Icons mit Alter und Bildungsniveau zusammenhängt. Interessant ist auch, dass hier ein technisches Wissen keinen Einfluss auf die Wiedererkennung von Symbolen auf Webseiten hatte. (Legleiter &amp; Caporusso, 2020)</p>



<h2 class="wp-block-heading"><strong>Illustrationen</strong></h2>



<p>Illustrationen sind schon immer in Büchern verwendet worden, um den Inhalt zu unterstützen und verständlicher zu gestalten. Sie helfen auch dabei, sich den Inhalt besser vorstellen zu können. Die früheste Form von Illustrationen wurden in Höhlenmalereien gefunden, welche circa 15,000 vor Christus in Frankreich entstanden sind. Nach dem Start der industriellen Revolution, in der zweiten Hälfte des 18. Jahrhunderts, hat sich der Buchdruck immer mehr verbessert und es wurden stetig mehr Bücher mit Illustrationen publiziert. All diese Illustrationen wurden manuell gezeichnet und maschinell gedruckt. Nach der Erfindung des Computers im 20. Jahrhundert, wurden Illustrationen für einen neuen Zweck verwendet, nämlich für Software. Hierfür mussten die Illustrationen, wegen den technischen Einschränkungen, so simpel wie möglich gestaltet sein. Im 21. Jahrhundert sind neue Geräte, wie der iPod und Smartphones, auf den Markt gekommen, für welche wieder neue Software entwickelt werden musste, um Benutzern zu helfen, diese Geräte auch einfach bedienen zu können. Zur gleichen Zeit wurden viele Webseiten und mobile Applikationen entwickelt, um einen das Leben leichter zu gestalten. Das startete auch die Arbeitsfelder User Experience Design und User Interface Design, welche sich auf die Benutzerfreundlichkeit und das Benutzererlebnis von Webseiten und mobilen Applikationen&nbsp; fokussieren.</p>



<h2 class="wp-block-heading"><strong>Flat Illustrations</strong></h2>



<p>Flat Illustrations sind digitale, vektor-basierte Illustrationen, die dem Flat Design Schema folgen. Wie schon bei den Flat Design Icons beschrieben, benutzen sie einen simplen und minimalistischen Stil und geometrische Formen um Charaktere, Objekte und Hintergründe zu illustrieren. Anstatt Dinge und Menschen realistisch zu repräsentieren wird hier sehr abstrakt gearbeitet. (El-Sherbiny, 2020)</p>



<p>Illustrationen werden heutzutage für das Design von Webseiten und mobilen Applikationen weitgehend genutzt, um die Benutzeroberfläche attraktiver zu gestalten, das Design zu vereinheitlichen und um die Nutzung intuitiver zu machen. Wenn Flat Design in Icons und Symbolen verwendet wird, sollte um die Harmonie zwischen allen Elementen zu bewahren, Flat Design auch bei Illustrationen bzw. den grafischen Elementen angewendet werden. Dies stärkt die Brand Identity, welche für die Webseite oder mobile Applikation entwickelt wird. Ein User Interface sollte nämlich auch die Brand Identity, die die Organisation als Marke repräsentiert, widerspiegeln. Illustrationen werden seit langer Zeit als Mittel zur Kommunikation genutzt. Sie helfen Menschen zu verstehen wie Dinge funktionieren und helfen ihnen beim Vorstellen der Vorteile, die ein Produkt haben kann. Illustrationen können gut im Gedächtnis des Users hängen bleiben und somit die Brand Awareness und Wiedererkennbarkeit erhöhen. (El-Sherbiny, 2020)</p>



<h2 class="wp-block-heading"><strong>Fazit</strong></h2>



<p>Flat Design ist ein immer beliebter werdender Stil, um das User Interface von diversen Webseiten und mobilen Applikationen zu gestalten. Es soll die Benutzerfreundlichkeit steigern, indem es die Elemente auf das Wesentliche reduziert, was jedoch auch zu Missverständnissen führen kann und man deswegen auf User Testing nicht verzichten sollte. Man sollte auch darauf achten, dass nicht nur Icons sondern auch die anderen grafischen Elemente, wie Illustrationen im gleichen Flat Design Stil gestaltet werden, um ein einheitliches Bild zu schaffen und die Brand Identity zu stärken.</p>



<h2 class="wp-block-heading"><strong>Quellen:</strong></h2>



<p>Legleiter, Andrea &amp; Caporusso, Nicholas. (2020). Flat-Design Icon Sets: a Case for Universal Meanings?.</p>



<p>Page, Tom. (2014). Skeuomorphism or flat design: Future directions in mobile device User Interface (UI) design education. Int. J. of Mobile Learning and Organisation. 8. 130 &#8211; 142. 10.1504/IJMLO.2014.062350.</p>



<p>Jia, Yihan. (2021). Flat Research on the Design and Application of Icon Design in Mobile Phone UI Interface. DEStech Transactions on Computer Science and Engineering. 10.12783/dtcse/ccnt2020/35437.</p>



<p>El-Sherbiny, Hanan. (2020). THE USE OF FLAT ILLUSTRATIONS IN WEBSITES AND SMART PHONES APPLICATIONS’ USER INTERFACE (UI) DESIGN. Journal of Art &amp; Architecture Research Studies &#8211; JAARS. 1. 10.47436/jaarsfa.v1i2.65.</p>



<p>Meggs, P. B. (2005). Graphic design, 1945-75: The International Typographic Style. Encyclopaedia Britannica.</p>



<p>Marcus, A. (2002). Dare We Define User-Interface Design?. Interactions. Volume 9, Issue 5. DOI: 10.1145/566981.566992.</p>



<p>Dillon, A. (2006). User Interface Design. Encyclopedia of Cognitive Science: John Wiley &amp; Sons. ISBN: 9780470018866. DOI: 10.1002/0470018860.s00054.</p>



<p>Pratas, A. (2014). Creating flat design websites. Birmingham, UK : Packt Publishing Ltd.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/user-interface-design-flat-design/">User Interface Design: Flat Design</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>My Virtual Pet &#8211; Semesterprojekt</title>
		<link>https://mobile.fhstp.ac.at/allgemein/my-virtual-pet-semesterprojekt/</link>
		
		<dc:creator><![CDATA[Michael Stidl]]></dc:creator>
		<pubDate>Thu, 24 Feb 2022 20:56:11 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=9771</guid>

					<description><![CDATA[<p>Das Konzept Als Semsterprojekt für die Masterklasse Mobile habe ich ein Virtual Pet Spiel mit zwei verschiedenen Technologien umgesetzt &#8211; Unity (C#) und JavaScript. Das Ziel des Spiels ist es sein virtuelles Haustier am Leben zu erhalten und die stetig sinkenden Bedürfnisse rechtzeitig zu füllen, bevor sie null erreichen und das Spiel vorbei ist. Die <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/my-virtual-pet-semesterprojekt/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/my-virtual-pet-semesterprojekt/">My Virtual Pet &#8211; Semesterprojekt</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="has-large-font-size">Das Konzept</p>



<p>Als Semsterprojekt für die Masterklasse Mobile habe ich ein Virtual Pet Spiel mit zwei verschiedenen Technologien umgesetzt &#8211; Unity (C#) und JavaScript. Das Ziel des Spiels ist es sein virtuelles Haustier am Leben zu erhalten und die stetig sinkenden Bedürfnisse rechtzeitig zu füllen, bevor sie null erreichen und das Spiel vorbei ist.</p>



<p></p>



<p></p>



<p class="has-large-font-size">Die Funktionen der Unity Version:</p>



<div class="wp-block-media-text alignwide is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="538" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-23-um-21.26.17-4-538x800.png" alt="" class="wp-image-9778 size-full" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading">Der Start Screen:</h2>



<ul class="wp-block-list" id="block-95c68cf2-6cab-47af-9f47-5509deee9bd0"><li>Start Screen mit New Game Button, Load Game Button und Quit Button</li><li>New game Button geht zum Character Creator Screen weiter</li><li>Load Game Button geht zum Load Game Screen weiter, wenn ein Speicherstand vorhanden ist</li><li>Load Game Button zeigt nur ein  “No save available” Pop-UP an, wenn kein Speicherstand vorhanden ist</li><li>Quit Button beendet die Applikation</li></ul>
</div></div>



<p></p>



<div class="wp-block-media-text alignwide is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="540" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-23-um-21.33.53-e1645650661382-540x800.png" alt="" class="wp-image-9779 size-full" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading">Der Load Screen:</h2>



<ul class="wp-block-list" id="block-381502e6-bdc4-4d95-b0bf-d00d7a91a539"><li>Load Save Screen zeigt gespeicherte Daten an. Hat einen Load Save Button, einen Back Button und einen Delete Save Button</li><li>Delete Save Button löscht den aktuell gespeicherten Spielstand</li><li>Back Button bringt einen zurück zum Start Screen</li><li>Load Save Button bringt einen zum Main Screen und setzt die Werte dem Speicherstand entsprechend</li></ul>
</div></div>



<p></p>



<h2 class="wp-block-heading">Der Character Creator Screen:</h2>



<ul class="wp-block-list" id="block-381502e6-bdc4-4d95-b0bf-d00d7a91a539"><li>Der Character Creator Screen beinhaltet ein Textfeld, die verschiedenen Pets, einen links und einen rechts Pfeil und einen “Confirm” Button.</li><li>Im Textfeld kann der Name des Pets eingegeben werden, welcher dann an den Main Screen übergeben wird</li><li>Es werden die zwei möglichen Pets angezeigt, zwischen denen man wechseln kann</li><li>Der linke und rechte Pfeil ermöglichen es, zwischen den unterschiedlichen Pets zu wechseln</li><li>Der “Confirm Button” übergibt den Namen und gibt das ausgewählte Pet an den Main Screen weiter</li></ul>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1063" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Characto-Selection-Screen-1063x800.jpg" alt="" class="wp-image-9781" /></figure>



<h2 class="wp-block-heading">Der Main Screen:</h2>



<ul class="wp-block-list"><li>Der Main Screen beinhaltet Save &amp; Quit Buttons, 4 Bars für die Bedürfnisse, 4 Bubbles für die Bedürfnisse, das ausgewählte Pet, ein “Game Saved” Pop-Up, den Names des Pets, Bilder für die Entwicklung des Pets und 4 Buttons um die Bedürfnisse zu füllen</li><li>Der Save Button speichert die aktuellen Variablen für die vier Bedürfnisse, die Art des Pets, den Namen des Pets und ob es sich entwickelt hat, ab. Zusätzlich wird in einem Pop-Up angezeigt, dass das Spiel gespeichert wurde</li><li>Der Quit Button beendet die Applikation</li><li>Die Bars für die Bedürfnisse Hunger, Fun, Hygiene und Energy senken sich mit der Zeit und werden hier visuell dargestellt. </li><li>Die 4 Bubbles für Hunger, Fun, Hygiene und Energy werden angezeigt, wenn das jeweilige Bedürfnis unter einen bestimmten Wert gelangt</li><li>Das ausgewählte Pet wechselt zu einer traurigen Version, wenn ein Bedürfnis unter einen bestimmten Wert gelangt</li><li>Wenn der “Feed” Button bestimmt oft gedrückt wurde entwickelt sich das Pet indem Sterne hintern ihm angezeigt werden</li><li>Der vom Character Creator Screen eingegebene Name wird als Text angezeigt</li><li>Feed, Play, Clean und Sleep Buttons füllen das dazugehörige Bedürfnis wieder auf</li><li>Die Feed, Play, Clean und Sleep Button senken auch immer ein gegenteiliges Bedürfnis, wenn man sie klickt. Bsp: Play senkt das Energy Bedürfnis</li><li>Wenn ein Bedürfnis 0 erreicht, ist das Spiel vorbei und es wird der Game Over Screen angezeigt</li></ul>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1540" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Main-Screen-1540x800.jpg" alt="" class="wp-image-9782" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2022/02/Main-Screen-1540x800.jpg 1540w, https://mobile.fhstp.ac.at/wp-content/uploads/2022/02/Main-Screen-770x400.jpg 770w" sizes="auto, (max-width: 1540px) 100vw, 1540px" /></figure>



<div class="wp-block-media-text alignwide is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="534" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-23-um-21.30.43-e1645650725720-534x800.png" alt="" class="wp-image-9783 size-full" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading">Der Game Over Screen:</h2>



<ul class="wp-block-list" id="block-381502e6-bdc4-4d95-b0bf-d00d7a91a539"><li>Der Game Over Screen beinhaltet das Game Over Bild, einen New Game Button und einen Quit Game Button</li><li>Der New Game Button bringt einen wieder zu dem Start Screen</li><li>Der Quit Game Button beendet die Applikation</li></ul>
</div></div>



<p class="has-large-font-size">Die Funktionen der JavaScript Version:</p>



<h2 class="wp-block-heading">Der Start Screen:</h2>



<figure class="wp-block-image size-large is-style-default"><img loading="lazy" decoding="async" width="1408" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/StartScreenJS-1-1408x800.jpg" alt="" class="wp-image-9788" /></figure>



<ul class="wp-block-list"><li>Start Screen mit Titelbild, Textfeld für Name des Pets + Label, die zwei auswählbaren Pets, ein links + rechts Pfeil, ein Confirm Button und ein Load Game Button</li><li>Im Textfeld kann der Name des Pets eingegeben werden, welcher dann an den Main Screen übergeben wird</li><li>Es werden die zwei möglichen Pets angezeigt, zwischen denen man wechseln kann</li><li>Der linke und rechte Pfeil ermöglichen es, zwischen den unterschiedlichen Pets zu wechseln</li><li>Der “Confirm Button” übergibt den Namen und gibt das ausgewählte Pet an den Main Screen weiter</li><li>Load Save Button bringt einen zum Main Screen und setzt die Werte dem Speicherstand entsprechend</li><li>Der Confirm Button bringt einem zum Main Screen indem er die nicht mehr gebrauchten Elemente vom Start Screen deaktiviert und die benötigten Elemente für den Main Screen aktiviert</li></ul>



<h2 class="wp-block-heading">Der Main Screen:</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1540" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/MainScreenJS-1540x800.jpg" alt="" class="wp-image-9789" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2022/02/MainScreenJS-1540x800.jpg 1540w, https://mobile.fhstp.ac.at/wp-content/uploads/2022/02/MainScreenJS-770x400.jpg 770w" sizes="auto, (max-width: 1540px) 100vw, 1540px" /></figure>



<ul class="wp-block-list"><li>Die Elemente im Main Screen sind 4 Bars für die Bedürfnisse, 4 Bubbles für die Bedürfnisse, das ausgewählte Pet, der gegebene Pet Name, Bilder für die Entwicklung des Pets und 4 Buttons um die Bedürfnisse zu füllen</li><li>Die Bars für die Bedürfnisse Hunger, Fun, Hygiene und Energy senken sich mit der Zeit und werden hier visuell dargestellt.&nbsp;</li><li>Die 4 Bubbles für Hunger, Fun, Hygiene und Energy werden angezeigt, wenn das jeweilige Bedürfnis unter einen bestimmten Wert gelangt</li><li>Das ausgewählte Pet wechselt zu einer traurigen Version, wenn ein Bedürfnis unter einen bestimmten Wert gelangt</li><li>Der Save Button speichert die aktuellen Variablen für die vier Bedürfnisse, die Art des Pets, den Namen des Pets und ob es sich entwickelt hat ab.</li><li>Wenn der “Feed” Button bestimmt oft gedrückt wurde entwickelt sich das Pet indem Sterne hintern ihm angezeigt werden</li><li>Der vom Character Creator Screen eingegebene Name wird als Text angezeigt</li><li>Feed, Play, Clean und Sleep Buttons füllen das dazugehörige Bedürfnis wieder auf</li><li>Die Feed, Play, Clean und Sleep Button senken auch immer ein gegenteiliges Bedürfnis, wenn man sie klickt. Bsp: Play senkt das Energy Bedürfnis</li><li>Wenn ein Bedürfnis 0 erreicht, ist das Spiel vorbei und es wird der Game Over Screen angezeigt</li></ul>



<div class="wp-block-media-text alignwide is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="694" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-23-um-21.35.10-694x800.png" alt="" class="wp-image-9824 size-full" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading">Der Game Over Screen:</h2>



<ul class="wp-block-list"><li>Der Game Over Screen deaktiviert alle Elemente vom Main Screen und zeigt das Game Over Bild an und einen Aufruf, die Seite neu zu laden, um das Spiel nochmal zu starten</li></ul>
</div></div>



<p class="has-large-font-size">Unterschiede der JavaScript  und Unity Version:</p>



<p>Die beiden Versionen mögen auf dem ersten Blick ziemlich ident wirken, jedoch funktionieren sie doch etwas anders. In der Unity Version wurde mit Scenes gearbeitet. Jeder Screen ist eine Scene, welche durch den Klick auf den dementsprechenden Button geladen wird. Die Scenes existieren alle unabhängig voneinander. In der Version mit Java Script habe ich mit States gearbeitet. State 1 ist beispielsweise der Start Screen und State 2 der Main Screen. Wenn der Button &#8220;New Game&#8221; am Start Screen gedrückt wird, wird der State zu 2 gesetzt und es werden die nicht mehr gebrauchten Elemente, wie das Titelbild und der Button selbst, deaktiviert und alle Elemente welche für den Main Screen gebraucht werden, aktiviert. </p>



<p>Für die Speicherung der Variablen, die nötig sind um einen Spielstand zu speichern und wieder zu laden, habe ich in Unity die <a href="https://docs.unity3d.com/ScriptReference/PlayerPrefs.html">PlayerPrefs</a> verwendet. PlayerPrefs ist eine Klasse, welche Variablen in der Form eines Strings, Integers oder Floats abspeichern kann. Diese werden in einer Datei auf dem Computer abgespeichert. Die Art der Datei ist abhängig vom Betriebssystem. Bei Mac werden die Daten in einem .plist file abgespeichert. </p>



<p>Für die JavaScript Version habe ich die <a href="https://wiki.selfhtml.org/wiki/JavaScript/Web_Storage">localStorage</a> Methode verwendet. Hier werden die Daten auch beim Client selbst abgespeichert und im Gegensatz zum sessionStorage, haben diese auch kein Verfallsdatum. Die Daten werden im Cache des Browsers abgespeichert und können somit beim nächsten Besuch der Webseite wieder genutzt werden. </p>



<p class="has-large-font-size">Was ich gelernt habe:</p>



<p>Ich habe gelernt, dass die Umsetzung mit Unity für mich weitaus intuitiver war, aber das liegt sicher auch daran, dass Unity auf Spieleentwicklung ausgelegt ist und man mehr Ressourcen dazu online findet, als zur Spieleentwicklung mit JavaScript. </p>



<p>Es hat mir auch viel geholfen, das Spiel zuerst in Unity zu entwickeln, weil ich damit schon etwas vertrauter bin. Somit hatte ich für die JavaScript Version schon eine Idee, wie die Funktionen umzusetzen wären und musste nur das JavaScript equivalent dazu finden. Klingt jedoch einfacher als gesagt, da große Funktionen wie die einzelnen Scenes hier wegfallen und man sich daraufhin etwas anderes einfallen lassen muss.</p>



<p>Die Abspeicherung von Daten/Speicherstände habe ich in Unity auch vorher noch nie gemacht und mich auch nie damit beschäftigt, weil ich gedacht habe, dass es sehr komplex sein wird. Ich war sehr überrascht, wie simpel es funktioniert, wenn man nur ein paar Variablen abspeichern möchte und werde diese Funktion in Zukunft sicher öfter verwenden.</p>



<p>Leider mache ich immer wieder den Fehler mir das Design nicht vorher zu überlegen und einen Prototyp zu machen. Ich nehme mit hierfür die Zeit, weil ich Angst habe, dass die mir dann am Ende fehlen wird und ich nicht mehr rechtzeitig fertig werde. Das führt aber dazu, dass man dann während des Programmierens herausfinden muss wo man Elemente platzieren will und wo sie vor allem Sinn machen. Überhaupt mit HTML dauert das platzieren und verschieben von Elementen länger, als wenn man vorher ein Mockup davon gemacht hätte und schon weiß wo die Elemente hingehören. Und das Design wird auch viel einheitlicher, wenn man sich schon vor der Programmierung darüber Gedanken macht. </p>



<p class="has-large-font-size">Verbesserungen und Erweiterungen:</p>



<p>Verbessern würde ich auf jeden Fall das Design, da ich das, wie schon angesprochen, während des Programmierens selbst und nicht im Vorhinein gemacht habe. Aus Zeitmangel konnte ich es leider auch nicht im Nachhinein noch viel verbessern. Da das Spiel mit einem Mobile Schwerpunkt im Hinterkopf programmiert wurde, habe ich mich auch nur auf die Mobile Version der Spiele konzentriert. Speziell bei der JavaScript Version bedeutet das, dass sie nur im mobilen Modus funktioniert und nicht für Desktops. Das würde ich auch auf jeden Fall noch verbessern wollen.  </p>



<p>Erweiterungen können sowohl neue Funktionen sein, als auch vollkommen neue Spielmechaniken. Eine Erweiterung  wäre beispielsweise mehrere Speicherdateien anlegen zu können, da momentan nur eine einzige möglich ist. So wie das Spiel jetzt ist, reicht zwar eine Speicherdatei vollkommen aus, aber wenn mehr Spielmechaniken dazukommen würden und das Spiel wächst, wären mehrere Speicherdateien nützlich. Animationen würden das Spiel auch noch lebendiger machen. Ich habe zwar mit gif Dateien gearbeitet, jedoch funktionieren diese nur in der JavaScript Version. Animationen für die einzelnen Tätigkeiten, wie Essen und Spielen, würden das Spiel auch visuell noch interessanter machen. </p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/my-virtual-pet-semesterprojekt/">My Virtual Pet &#8211; Semesterprojekt</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Print to Mobile &#8211; Interaktive Werbung mittels AR</title>
		<link>https://mobile.fhstp.ac.at/allgemein/print-to-mobile-interaktive-werbung-mittels-ar/</link>
		
		<dc:creator><![CDATA[Michael Stidl]]></dc:creator>
		<pubDate>Sun, 20 Feb 2022 15:19:19 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=9505</guid>

					<description><![CDATA[<p>Das Konzept: Die Idee der Anwendung ist es, Werbung attraktiver und interessanter zu gestalten. Werbung wird heutzutage meist passiv konsumiert. Plakate werden oft nur beim Vorbeigehen kurz betrachtet, Prospekte gleich in den Mistkübel geschmissen und digitale Werbung, wie Banner und Videoeinspielungen auf Youtube, so schnell wie möglich weggeklickt oder gleich durch einen AdBlocker blockiert. Die <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/print-to-mobile-interaktive-werbung-mittels-ar/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/print-to-mobile-interaktive-werbung-mittels-ar/">Print to Mobile &#8211; Interaktive Werbung mittels AR</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><strong>Das Konzept:</strong></p>



<p>Die Idee der Anwendung ist es, Werbung attraktiver und interessanter zu gestalten. Werbung wird heutzutage meist passiv konsumiert. Plakate werden oft nur beim Vorbeigehen kurz betrachtet, Prospekte gleich in den Mistkübel geschmissen und digitale Werbung, wie Banner und Videoeinspielungen auf Youtube, so schnell wie möglich weggeklickt oder gleich durch einen AdBlocker blockiert. Die Idee ist es, Werbung interaktiver zu gestalten und die Aufmerksamkeit des Konsumenten somit länger zu fangen.&nbsp;</p>



<p><strong>Die Umsetzung:</strong>&nbsp;</p>



<p>Für die Umsetzung  habe ich mir eine Augmented Reality (AR) Lösung von <a href="https://www.zappar.com/">Zappar</a> herausgesucht und diese mit dem Programm Unity umgesetzt. In meiner umgesetzten Lösung habe ich ein Bild auf ein A4 großes Papier ausgedruckt und im unteren rechten Eck einen QR-Code hinzugefügt. Wenn man den QR-Code mit dem Smartphone scanned, kommt man zu einem WebGL Build, welcher auf einem Server liegt. Zuerst wird nach der Zustimmung für die Verwendung der Kamera gefragt, um das Bild mit der Kamera vom Smartphone erfassen zu können. Mittels Image Tracking wird das Bild erfasst und die gewünschten Elemente angezeigt. In meinem Fall habe ich ein Video über das Bild platziert, damit es so aussieht, als würde das Bild zum Leben erweckt werden. Zusätzlich habe ich noch zwei Buttons hinzugefügt, um das Video zu stoppen und wieder abzuspielen. </p>



<p><strong>Umgesetzt mit Zapworks und Unity:</strong>  </p>



<p>Zappar stellt unter anderem eine <a href="https://zap.works/universal-ar/unity/">Universal AR SDK</a> für Unity zur Verfügung. Diese beinhaltet AR Face-, World- , und Image-Tracking Funktionen. Es unterstützt Builds für WebGL, native Android und native iOS. Die SDK gibt es auch noch für Three.js, A-Frame, JavaScript, React, PlayCanvas und Babylon.js. Man kann sich die SDK kostenlos herunterladen und verwenden. Für kommerzielle Zwecke und wenn man die Applikation von Zappar hosten lassen möchte, ist es kostenpflichtig. Hierfür gibt es verschiedene Education, Enterprise, Agencies und Business Tarife. </p>



<p></p>



<figure class="wp-block-video"><video controls src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/AR-Print-to-Mobile-Video.mov"></video><figcaption>Demonstration</figcaption></figure>



<p></p>



<p><br><strong>Mögliche Erweiterungen:</strong> </p>



<p>Der QR-Code kann auf Flyer, Karten, Prospekte, Plakate und ähnlichem gedruckt werden. Man kann auch noch alle möglichen Elemente hinzufügen und beispielsweise ein Quiz mit Buttons erstellen und somit ein Gewinnspiel daraus machen.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/print-to-mobile-interaktive-werbung-mittels-ar/">Print to Mobile &#8211; Interaktive Werbung mittels AR</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		<enclosure url="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/AR-Print-to-Mobile-Video.mov" length="22634369" type="video/quicktime" />

			</item>
	</channel>
</rss>
