<?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 Lucas Schöffer - Mobile USTP MKL</title>
	<atom:link href="https://mobile.fhstp.ac.at/author/dm161564/feed/" rel="self" type="application/rss+xml" />
	<link>https://mobile.fhstp.ac.at/author/dm161564/</link>
	<description>Die &#34;Mobile Forschungsgruppe&#34; der USTP, sie  sammelt hier alles zu den Themen Design, UX und Entwicklung mobiler Applikationen</description>
	<lastBuildDate>Mon, 30 Oct 2017 15:57:41 +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 Lucas Schöffer - Mobile USTP MKL</title>
	<link>https://mobile.fhstp.ac.at/author/dm161564/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>&#8220;less known&#8221; client-side web technologies [Part 1]</title>
		<link>https://mobile.fhstp.ac.at/allgemein/its-so-fancy-webtechnologien-der-letzten-und-kommenden-jahre-von-denen-man-gehoert-haben-sollte/</link>
		
		<dc:creator><![CDATA[Lucas Schöffer]]></dc:creator>
		<pubDate>Mon, 30 Oct 2017 15:42:55 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=6807</guid>

					<description><![CDATA[<p>Einleitung &#160; Eine Homepage hier, eine Infoseite da,&#8230; Mal ehrlich: Webtechnologien werden zum Großteil relativ einseitig genutzt -&#62; zum Transport, Anzeigen und teilweise auch zum Generieren von Content. Keine Frage: kleine, mittlere und große Agenturen, genauso wie auch &#8220;one-man-shows zum Erstellen von Internetseiten&#8221; sind ein gut funktionierendes Business &#8211; weil jedes Unternehmen heute einen oder <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/its-so-fancy-webtechnologien-der-letzten-und-kommenden-jahre-von-denen-man-gehoert-haben-sollte/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/its-so-fancy-webtechnologien-der-letzten-und-kommenden-jahre-von-denen-man-gehoert-haben-sollte/">&#8220;less known&#8221; client-side web technologies [Part 1]</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<ol>
<li>
<h2>Einleitung</h2>
</li>
</ol>
<p>&nbsp;</p>
<p>Eine Homepage hier, eine Infoseite da,&#8230;<br />
Mal ehrlich: Webtechnologien werden zum Großteil relativ einseitig genutzt -&gt; zum Transport, Anzeigen und teilweise auch zum Generieren von Content.<br />
Keine Frage: kleine, mittlere und große Agenturen, genauso wie auch &#8220;one-man-shows zum Erstellen von Internetseiten&#8221; sind ein gut funktionierendes Business &#8211; weil jedes Unternehmen heute einen oder mehrere gute Webauftritt(e) benötigt.<br />
Aber es ist definitiv nicht das innovativste Business.</p>
<p>Auch wenn die Vermittlung und Strukturierung von Inhalten, die grafische Darstellung und die Benutzerfreundlichkeit bei jedem Projekt immer wieder eine neue Herausforderung darstellen..<br />
Und auch, wenn kaum eine Seite oder ein Portal wirklich je komplett wie das andere ist (obwohl sich viele Dinge schon sehr einander annähern und der Mut zum Neuen oftmals der Sicherheit des bewährtem Einheitsbreies weicht) -&gt; Letztendlich greifen die meisten Seiten im Internet auf dieselben (bewährten) Technologien und Techniken zurück.</p>
<p><img fetchpriority="high" decoding="async" class="alignnone wp-image-7223" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/10/css3-html5-770x400.png" alt="" width="264" height="241" /></p>
<p>Klar.. HTML und CSS zur inhaltlichen und grafischen Aufbereitung. Da gibt es nicht viel zu rütteln. Wobei es gerade schon bei CSS beginnt, dass bei Webentwicklern oftmals immer wieder dieselben Attribute Verwendung finden, statt sich auch einmal an &#8220;exotischere/neuere&#8221; Dinge zu wagen.</p>
<p>Ein Hauptgrund dabei, ist die Bestrebung (und meist Notwendigkeit) immer zu allen gängigen Browsern (auch zu älteren Versionen) kompatibel zu bleiben.<br />
Damit gilt: während sich Webtechnologien, seit dem Aufkommen von HTML 5, in rasantem Tempo weiterentwickeln, hinkt die Nutzung neuer Dinge meist jahrelang hinterher.</p>
<p>Manchmal eben wegen benötigter Abwärtskompatibilität. Manchmal, weil die zur Verfügung gestellten neuen Technologien in erwähntem herkömmlichen Kontext &#8211; also traditionellen Webseiten &#8211; einfach gar nicht benötigt werden.<br />
Wer benötigt schon wirklich WebGL 3D-Animationen (oder vielleicht sogar Interaktionen) auf einem reinen Informationsportal?<br />
Manchmal aber auch, weil Webdeveloper mit bestimmten Neuerungen gar nicht erst in Berührung kommen und daher gar nicht wissen, dass es sie gibt.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone wp-image-7224" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/10/AccessTechnology.jpg" alt="" width="261" height="163" /></p>
<p>Kein Wunder – reine WebApps (also interaktive Anwendungen, die ausschließlich über den Browser funktionieren) sind heute immer noch eher eine Nische -&gt; vor allem im mobilen Bereich.<br />
Viele &#8220;fancy technologies&#8221;, die mit HTML 5 kamen &#8211; und stetig dazu kommen &#8211; werden gar nicht erst evaluiert, da man bei &#8220;echten Anwendungen&#8221; dann doch eher auf der nativen (oder &#8220;hybriden&#8221;) Ebene bleibt.</p>
<p>Dabei könnten in den nächsten Jahren reine Webanwendungen eine echte Alternative zu herkömmlichen Apps bieten -&gt; zumindest in manchen Anwendungsfeldern.<br />
Die technologischen Möglichkeiten wachsen &#8211; längst schon sind Themen wie getrennte Ausführungs-Threads und das zur-Verfügung-stellen von offline Inhalten von allen modernen Browsern gut unterstützt.<br />
Der Browser lässt daneben aber auch immer öfter direkte Kommunikation mit verbundener Hardware zu.<br />
Umgehen mit Sensorendaten, Geräteinformationen und Connections zu externen Geräten/Beacons/&#8230;?<br />
Vieles gibt es schon &#8211; und man kann schon fast sagen: was es noch nicht gibt, wird gerade standardisiert.</p>
<p>Das Thema Performance? Wenn man die Dinge nicht kennt, die sich in den letzten Jahren im Performance-Sektor von Webanwendungen getan haben, wird man überrascht sein, was da bereits seit einigen Jahren existiert, um JavaScript Code um ein gutes Stück schnell machen zu können (bei voller Abwärtskompatibilität).<br />
Vor allem aber wurde in den letzten Jahren aber auch eine gänzlich neue Technologie entwickelt, die Webanwendungen performance-technisch auf ein neues Level bringen kann/soll. Eine Technologie, mit dem klingenden Namen &#8220;WebAssembly&#8221;, die mit dem Erscheinen von Safari 11, im vergangenen Monat (September 2017), bereits von allen aktuellen Browsern (Desktop und Mobile) unterstützt wird.<br />
An dieser Stelle soll aber noch nicht gespoilert werden ;).</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone wp-image-7226" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/10/78f11998ba5da1592ef0a067c8e8c653-770x400.jpg" alt="" width="497" height="258" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2017/10/78f11998ba5da1592ef0a067c8e8c653-770x400.jpg 770w, https://mobile.fhstp.ac.at/wp-content/uploads/2017/10/78f11998ba5da1592ef0a067c8e8c653-1540x800.jpg 1540w" sizes="(max-width: 497px) 100vw, 497px" /></p>
<p>Es gibt viele Vorteile, welche sich aus reinen Webanwendungen ergeben, wie z.B. :</p>
<ul>
<li>Unabhängigkeit von herstellerspezifischen App-Stores</li>
<li>direktes Anbieten von App-Services über die jeweiligen Homepages eines Unternehmens</li>
<li>wegfallen der Notwendigkeit einer Installation (eine Hürde, die für viele Anwender oftmals immer noch sehr groß ist und daher keinesfalls unterschätzt werden sollte)</li>
<li>[&#8230;]</li>
</ul>
<p>Damit wäre es nicht verwunderlich, wenn echte Webanwendungen in den nächsten Jahren &#8211; zumindest in einigen Einsatzgebieten &#8211; eine ernst(er) zu nehmende Konkurrenz zu nativen bzw. hybriden Anwendungen werden könnten -&gt; gerade auch im mobilen Bereich.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-7227" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/10/communication.png" alt="" width="260" height="233" /></p>
<p>In den kommenden Monaten wird sich diese 3-teilige Posting-Reihe mit &#8220;less known&#8221; Web Technologien (auf der Client Seite) beschäftigen.<br />
Technologien, die sich entweder gerade noch in der Phase Standardisierung befinden (und daher von vielen Browsern noch gar nicht oder erst partiell/experimentell implementiert sind&#8230;).<br />
Aber auch mit Technologien, die schon einen Schritt weiter sind, aber dennoch &#8220;wenig genutzt&#8221; bzw. dem &#8220;traditionellen Webentwickler&#8221; vielleicht einfach noch nicht richtig bekannt sind.</p>
<p>Dabei wird sich der erste Teil (im Folgenden) mit Technologien im Bereich &#8220;Communication &amp; Media&#8221; beschäftigen. Der zweite Teil (im Dezember 2017) wird sich mit den Themen Offline Verfügbarkeit, Datenspeicherung und Threading befassen.<br />
Der dritte Teil (März 2017) wird sich schließlich dem Thema &#8220;High-Performance&#8221; bei Webanwendungen widmen &#8211; und dort dann auch auf das zuvor angekündigte Thema „Webassemblies“ eingehen.<br />
Ein Thema, das für jeden Web-Interessierten durchaus sehr spannend ist <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> .<br />
Das soll aber nicht heißen, dass im gleich Folgenden 1. Teil nicht auch etwas sehr Spannendes (hoffentlich noch für die meisten Leser relativ Unbekanntes) stecken sollte.</p>
<p>In jedem dieser drei Teile werden kurz unterschiedliche Technologien vorgestellt – wobei immer eine der vorgestellten Technologien (die schon etwas breitere Browserunterstützung genießt und damit bereits zum Basteln geeignet ist) etwas genauer behandelt wird.<br />
Auf Basis dieser genauer vorgestellten Technologie wird in jedem Teil auch jeweils ein praktisches, selbst programmiertes, Beispiel vorgestellt.<br />
Soviel sei verraten: In diesem Teil wird ein rein HTML5/JavaScript-basiertes Echtzeit-Schachspiel mit integriertem Videochat vorgestellt.</p>
<p>Es wird NICHT detailgenau auf die gesamte Programmierung dieser Beispiele eingegangen (das würde den Rahmen, zumindest bei dem ersten vorgestellten Beispiel, sprengen).<br />
Aber es darauf eingegangen, wie die &#8220;Haupttechnologie&#8221;, die darin vorgestellt wird, verwendet wird.</p>
<p>Wichtig ist auch, dass in jedem Beispiel auch die vorgestellte &#8220;Haupttechnologie&#8221; aller vorhergehenden Teile mit einfließt.<br />
Damit soll letztendlich in Teil 3 eine kleine, praktisch einsetzbare, Anwendung entstehen, die man aus App-Stores in unterschiedlichsten Ausführungen kennt.<br />
Eine Anwendung , die sehr viele User in irgendeiner Form auf ihrem Smartphone installiert haben &#8211; die hier aber als wirklich reine WebApp umgesetzt werden soll und als solche noch kaum bis gar nicht bekannt sein dürfte.<br />
Damit soll am Ende demonstriert werden, was moderne Browser heute bereits alles vollbringen können.</p>
<p>&nbsp;</p>
<ol start="2">
<li>
<h2>First Chapter: Communication &amp; Media</h2>
</li>
</ol>
<h3><span style="color: #333399;"><strong>Web NFC</strong></span></h3>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-7228" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/10/nfc-770x400.jpg" alt="" width="258" height="141" /></p>
<p>Web NFC existiert bislang nur als Draft, verspricht allerdings eine Kommunikation mittels NFC direkt aus dem Webbrowser -&gt; in beide Richtungen.<br />
Das mag auf den ersten Blick vielleicht nicht notwendig erscheinen, da NFC im Consumer Bereich meist für sehr spezielle Anwendungsfälle (wie etwa bargeldloses Zahlen oder Entwerten digitaler Tickets) eingesetzt wird. Für diese Anwendungsfälle lädt man sich ohnehin meist zuvor eine spezifische App auf das Smartphone.</p>
<p>Wirft man aber einen zweiten Blick auf dieses Thema, könnte Web NFC dennoch einer breiteren Masse sehr nützlich werden:<br />
NFC Tags sind günstig, lassen sich einfach an verschiedensten Objekten anbringen und können Daten speichern.<br />
So könnte es künftig z.B. sein, dass NFC Tags klassische QR Codes ersetzen und man z.B. über eigene Webanwendungen, oder über die Webseiten von Unternehmen/Institutionen, standortspezifische Informationen abrufen kann bzw. Aktionen durchgeführt werden können.</p>
<p><strong>Ein Beispiel:</strong> Ein Museum kann Inhalte zu seinen Ausstellungsstücken über das gewohnte CMS einpflegen. Man kann diese Inhalte über die Webseite manuell aufrufen. Geht man aber durch das Gebäude, wird anhand der NFC Tags automatisch der jeweilige Inhalt geladen. Gerade bei Museen und Ausstellungen möchte man sich oft nicht immer eigene Apps runterladen.</p>
<p><strong>Kurzer Überblick über die API<br />
</strong>Wie bereits angedeutet, wird die API bislang von keinem Browser offiziell unterstützt. Die Drafts zur Spezifizierung/Standardisierung sehen folgende zwei Core-Funktionen vor, um einerseits Daten über NFC auszulesen bzw. andererseits Daten zu übertragen:</p>
<blockquote>
<pre><strong>navigator</strong><strong>.</strong><strong>nfc</strong><strong>.</strong><strong>watch</strong><strong>(</strong><strong>callback</strong><strong>,</strong><strong> options</strong><strong>)
 </strong>Registers for a notification about the data read from the NFC adapter specified by options.

<strong>navigator</strong><strong>.</strong><strong>nfc</strong><strong>.</strong><strong>push</strong><strong>(</strong><strong>message</strong><strong>,</strong><strong> options</strong><strong>)
 </strong>Triggers sending the message (string, ArrayBuffer or NDEF record structure) to the NFC adapter specified by options.</pre>
</blockquote>
<p>&nbsp;</p>
<h3><span style="color: #333399;">Web Bluetooth API</span></h3>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-7229" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/10/unnamed.png" alt="" width="253" height="253" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2017/10/unnamed.png 300w, https://mobile.fhstp.ac.at/wp-content/uploads/2017/10/unnamed-150x150.png 150w, https://mobile.fhstp.ac.at/wp-content/uploads/2017/10/unnamed-32x32.png 32w, https://mobile.fhstp.ac.at/wp-content/uploads/2017/10/unnamed-50x50.png 50w, https://mobile.fhstp.ac.at/wp-content/uploads/2017/10/unnamed-64x64.png 64w, https://mobile.fhstp.ac.at/wp-content/uploads/2017/10/unnamed-96x96.png 96w, https://mobile.fhstp.ac.at/wp-content/uploads/2017/10/unnamed-128x128.png 128w" sizes="auto, (max-width: 253px) 100vw, 253px" /></p>
<p>Wohl ein wenig bekannter und auch weiter entwickelt ist die Web Bluetooth API.</p>
<p>In Chrome ist diese API bereits implementiert &#8211; auch wenn nicht auf jedem Betriebssystem alle Funktionen verfügbar sind (siehe hier: <a href="https://github.com/WebBluetoothCG/web-bluetooth/blob/gh-pages/implementation-status.md">https://github.com/WebBluetoothCG/web-bluetooth/blob/gh-pages/implementation-status.md</a> ).</p>
<p>Grundsätzlich kann man mit der API, z.B. mittels Einsatz von Bluetooth Beacons, auch sehr ähnliche Szenarien abbilden, wie mittels NFC.<br />
Ihre Stärke spielt die Web Bluetooth API aber dabei aus, den Browser direkt mit Bluetooth bzw. Bluetooth LE Geräten kommunizieren lassen zu können.<br />
Das mag auf den ersten Blick etwas unnötig erscheinen, wenn man an die üblichen Bluetooth-Geräte denkt: Mäuse, Tastaturen, Kopfhörer…<br />
-&gt; Denn diese sind ohnehin auf Betriebssystem Ebene installiert und die Inputs (also etwa die User Eingaben) bzw. Outputs (also etwa Audio-Daten für die Kopfhörer) werden über diese „Bridge“ übertragen, ohne dass der Browser hierbei irgendetwas spezielles leisten müsste.<br />
Der Entwickler einer Webanwendung muss sich natürlich keine Gedanken machen, ob da letztendlich eine Bluetooth Maus verwendet wird, oder eine USB Maus, &#8230;</p>
<p>Interessant wird es aber, wenn man als Entwickler mit Services eines Bluetooth-Devices interagieren möchte, über die keine Standardbrücke durch das OS gelegt wird.<br />
Und hier sind die Anwendungsfälle zahlreich. Moderne BluetoothLE Geräte verfügen über sogenannte „GATT-Services“.<br />
Über diese Services können verschiedenste Werte/Daten von einem Gerät ausgelesen bzw. auch geschrieben werden – sogenannte „Characteristics“. Diese Characteristics können ihrerseits wieder über Properties verfügen.<br />
Verfügt ein Characteristic über eine sogenanntes notification oder indicator Property, dann wird eine Änderung dieses Characteristics an den Client (in unserem Fall wäre das dann der Browser) mitgeteilt. In diesem Fall kann man z.B. EventHandler für relevante Characteristics definieren. Somit bekommt der Client (also hier der Browser) immer mit, wenn sich ein bestimmter Wert beim Sender verändert hat.</p>
<p><strong>Ein Beispiel:</strong> Man verwendet etwa ein Arduino Board mit Temperatursensor, das zudem auch noch über Batterie betrieben werden kann. Dieses Board verfügt über einen BluetoothLE Sender. Hier könnte man nun zwei GATT Services implementieren: Einen für den Batteriestatus und einen für die gemessenen Temperaturwerte.<br />
Der erste GATT Service könnte nun z.B. ein Characteristic enthalten, dass einen Wert für den momentanen Batteriestand darstellt – dieses verfügt über ein „indicate property“ und der Client kann daher bei einer Veränderung unmittelbar reagieren (z.B. dem Anwender den neuen Batteriestand ausgeben).</p>
<p>Ein anderes Characteristic von diesem Service könnte z.B. der maximal-Wert für die Batterie sein. Dieser verändert sich nicht und muss vom Client nur einmalig ausgelesen werden. Damit kann der Client auch immer prozentuell darstellen kann, wie voll die Batterie noch ist.</p>
<p>Das zweite GATT Service wäre in diesem Fall dann das „Interessante“ – es würde die gemessenen Daten des Temperatursensors als Characteristics zur Verfügung stellen… Also etwa die aktuelle Temperatur und eventuell auch die Luftfeuchtigkeit (je nachdem wie der Sensor funktioniert). Auf dieses Arduino Board können natürlich noch andere Sensoren platziert werden, die wiederum als eigene Services implementiert werden und ihr Werte als Characteristic zur Verfügung stellen und Änderungen bei diesen in aller Regel als notifications oder indicates sofort beim Client „melden“.</p>
<p>Damit ist der Browser plötzlich in der Lage, mit beliebigen externen Geräten zu kommunizieren und Daten zu empfangen (aber natürlich auch zu versenden) – ohne, dass er dafür über den Umweg eines Servers gehen müsste.</p>
<p><strong>Kurzer Überblick über die API</strong></p>
<blockquote>
<pre><strong>navigator</strong><strong>.</strong><strong>bluetooth</strong><strong>.</strong><strong>requestDevice</strong><strong>(</strong><strong>serviceFilters</strong><strong>)
 </strong>Scans for the device in range supporting the requested services. Returns a Promise.

<strong>device</strong><strong>.</strong><strong>gatt</strong><strong>.</strong><strong>connect</strong><strong>()
 </strong>Returns a Promise resolved with the server object providing access to the services available on the device.

<strong>server</strong><strong>.</strong><strong>getPrimaryService</strong><strong>(</strong><strong>name</strong><strong>)
 </strong>Returns a Promise resolved with the particular Bluetooth service on the device.

<strong>service</strong><strong>.</strong><strong>getCharacteristic</strong><strong>(</strong><strong>name</strong><strong>)
 </strong>Returns a Promise resolved with the GATT characteristic object.

<strong>characteristic</strong><strong>.</strong><strong>readValue</strong><strong>()
 </strong>Returns a Promise resolved with a raw value from the GATT characteristic.

<strong>characteristic</strong><strong>.</strong><strong>writeValue</strong><strong>(</strong><strong>value</strong><strong>)
 </strong>Writes a new value for the GATT characteristic.</pre>
</blockquote>
<p>&nbsp;</p>
<h3><span style="color: #333399;"><strong>WebRTC<br />
<img loading="lazy" decoding="async" class="alignnone wp-image-7230" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/10/fig-1.png" alt="" width="479" height="161" /><br />
</strong></span></h3>
<p>In Zeiten von Websocket-Verbindungen wirkt das klassische HTTP Request-Response Modell schon beinahe passé.<br />
Kein Wunder &#8211; wurde das klassische Web „zu seiner Zeit“ ursprünglich eher als Medium konzeptioniert, das relativ statische Informationen auf Anfrage an den (anfragenden) Zielrechner übermitteln soll. Fertig.</p>
<p>Konzeptioniert und entwickelt zu einer Zeit, wo wahrscheinlich kaum jemand damit gerechnet hätte, wie sich die Anwendungen und Möglichkeiten des Webs – und auch die immer steigenden Anforderungen – des Mediums im Laufe der Zeit wandeln würden.<br />
Vom statischen Informationsmedium hin, zu einem umfassenden, universellen, multimedialen Austausch- und Kommunikationsmedium.<br />
Dabei muss an dieser Stelle unterschieden werden -&gt; zwischen dem Internet, als reine technologische Infrastruktur (wie es auch in herkömmlichen Anwendungen, Spielen und Apps verwendet wird) und dem &#8220;Web&#8221;, das an dieser Stelle für Inhalte steht, die über das Internet klassisch mittels Browser konsumiert/ausgeführt werden.</p>
<p>Während ersteres theoretisch schon immer für alle Arten von Anwendungen herangezogen werden konnte (sieht man von hardwaretechnischen/infrastrukturellen Einschränkungen ab), hat sich letzteres Schritt für Schritt in &#8220;gesundem Maß&#8221; immer mit den Gegebenheiten weiterentwickelt.</p>
<p>Diese Weiterentwicklung war stets geprägt von drei Faktoren:</p>
<ol>
<li>Die zur Verfügung stehenden Technologien/Ressourcen/Bandbreiten -&gt; es war kein Zufall, dass in den Zeiten, als noch analoge Modems zur Einwahl ins Internet benutzt wurden, das zuvor genannte klassische Verfahren der HTTP-Request-Response entwickelt und  HTTP als DAS Internet-Protokoll etabliert wurde. Für einen kontinuierlichen Austausch von Daten war das Web in seinen Ursprüngen eher weniger gedacht.</li>
<li>Die Anforderungen -&gt; wie bereits erwähnt: Zu Beginn des Internets/Webs, waren auch die Anforderungen ganz andere, als sie es heute sind. Doch mit steigenden Bandbreiten (und anderen Faktoren) haben sich auch die Wünsche/Anforderungen der Anwender weiterentwickelt. Und damit auch die Webtechnologien selbst.</li>
<li>Die Plattformunabhängigkeit -&gt; Wichtig war dabei stets, dass Webtechnologien immer auf unterschiedlichsten Plattformen (und innerhalb dieser, auch auf unterschiedlichen Browsern) funktionieren. Mit dem Aufkommen der ersten Touch-Smartphones wurde diese Anforderung nochmals um einiges wichtiger.</li>
</ol>
<p>Analysiert man nun etwa den zweiten Punkt, so merkt man, dass durch innovative Ansätze (wie etwa die &#8220;Entwicklung&#8221; von AJAX) versucht wurde &#8211; innerhalb der gegebenen Limitationen &#8211; Webanwendungen um einiges dynamischer zu gestalten, als sie es bis dahin waren.<br />
Und sie somit an neuere Anforderungen anzupassen.<br />
Spätestens mit Aufkommen von HTML 5 und dessen multimedialen Elementen,  ging der Trend allmählich schrittweise dazu, die ursprünglichen Ideen/Hintergründe des klassischen Webs aus technologischer und aus anforderungstechnischer Sicht neu zu bewerten.<br />
Es galt/gilt vieles zu hinterfragen und die ursprünglichen Konzepte &amp; Limitationen allmählich &#8220;aufzubrechen&#8221; un zu modernisieren.</p>
<p>Gerade wenn man auf die Kommunikationsfähigkeiten eines modernen Browsers blickt, sind/werden dessen Kommunikationswege wesentlich vielfältiger, als &#8220;nur&#8221; über HTTP eine Response zu einem Request zu erhalten oder sogar auch &#8220;nur&#8221; über WebSockets eine persistente (bidirektionale, realtime) Verbindung zu einem Server aufzubauen.<br />
WebNFC und die Web Bluetooth API haben bereits gezeigt, dass Browser künftig (bzw. zum Teil bereits heute) weitaus mehr können, als „lediglich“ mit Servern zu kommunizieren.</p>
<p>Damit soll am Ende (als „Hauptattraktion“) dieses Artikels nun WebRTC nähergebracht werden – eine Technologie die zwar, wie HTTP oder Websockets, über IP kommuniziert (also anders als Web NFC, oder die Web Bluetooth API) – dabei aber wiederum gänzlich ohne Server auskommt.<br />
Also: Peer to Peer IP Kommunikation… mittels Browser!</p>
<p>WebRTC ist immer noch relativ unbekannt, obwohl die erste veröffentlichte Spezifikation mittlerweile bereits 6 Jahre zurückliegt (2011).<br />
Seitdem wurde WebRTC kontinuierlich weiterentwickelt &#8211; es hat allerdings bis zum September dieses Jahres (2017) gedauert, bis die Technologie endlich vollständig in den aktuellsten Versionen aller wichtigen Browser vollständig implementiert wurde (zuletzt Safari)</p>
<p>WebRTC steht für for Web Real-Time Communication. Es bringt Web Browsern unterschiedlicher Geräte die Möglichkeit, direkt zu kommunizieren.<br />
Damit lassen sich einfache (text basierte) Nachrichten genauso austauschen, wie binäre Daten. Sogar Realtime-Streaming zwischen den beiden Endpunkten ist möglich.<br />
Und tatsächlich ist sogar gerade Letzteres eines der Haupteinsatzgebiete, warum WebRTC ursprünglich ins Leben gerufen wurde: Der Austausch zwischen Audio und Video Daten in Echtzeit -&gt; zwischen zwei Browsern&#8230; ohne Plugins und ohne Installationen.</p>
<p>Eine der interessantesten Nebeneffekte, als die relativ komplexe Spezifikation von WebRTC in ihrem ersten Entwurf veröffentlicht wurde, war die Integration eines Standards, der Browsern den Zugriff auf Kameras und Mikrofone ermöglichen sollte.<br />
Unter der Spezifikation von WebRTC wurde die JavaScript Funktion <strong>navigator.getUserMedia()</strong> eingeführt. Mit dieser Funktion können Audio/Video Streams initialisiert werden.<br />
Und obwohl diese Funktion in erster Linie implementiert wurde, um solche Streams mittels WebRTC an einen anderen Browser zu versenden, lassen sich alleine durch diese „Nebenfunktion“ des WebRTC-Standards auch noch ganz andere Anwendungsfälle realisieren.<br />
Etwa ein „Record, View &amp; Store“ Tool für Audio/Video Daten direkt aus dem Browser… oder sogar ganze Audio- und Imageprocessing Anwendungen (z.B. QR Code Scanner) im Browser.<br />
Später wurde diese Funktion durch „<strong>navigator.mediaDevices.getUserMedia()</strong>“ ersetzt. Deren Syntax ist etwas anders als die ursprüngliche Version, jedoch blieben Zweck und Möglichkeiten unverändert.</p>
<p><strong>Kurzer Überblick über „navigator.mediaDevices.getUserMedia()“</strong></p>
<blockquote>
<pre>navigator.mediaDevices.getUserMedia(constraints)
.then(function(stream) {
     /* use the stream */
})

.catch(function(err) {
     /* handle the error */
});</pre>
</blockquote>
<p>Die Constraints geben an, was und wie es aufgezeichnet werden soll. Etwa:<br />
Video, aber kein Audio</p>
<blockquote>
<pre>var constraints = { audio: false, video: true};</pre>
</blockquote>
<p>ODER: Video dabei mit einer Auflösung von 1280*720, kein Audio</p>
<blockquote>
<pre>var constraints = { audio: true, video: { width: 1280, height: 720 } };</pre>
<p>&nbsp;</p></blockquote>
<p>Mit den Constraints lassen sich (je nach Browserversion/Status der Implementierung/Unterstützung durch Hardware und Betriebssystem) eine Vielzahl von Paramatern für das Audio/Video Capturing verwenden.<br />
Etwa: Mindest-, Ideal- und Maximalauflösung des Videos, Framerate oder auch welches Mikro/welche Kamera verwendet werden soll, wenn mehrere vorhanden sind. Letzteres ist z.B. vor allem bei Mobile Devices wichtig (da diese meist über 2 Kameras verfügen).</p>
<p>Der erzeugte Stream lässt sich jetzt einer (zuvor aufgebauten) WebRTC Verbindung hinzufügen um ihn in Echtzeit zum anderen Endpunkt zu übertragen.<br />
Eine solche, zuvor aufgebaute, WebRTC Verbindung wird durch ein Objekt (im folgenden Beispiel „RTCConnectionWithPeter“) dargestellt.</p>
<p>Beispiel:</p>
<blockquote>
<pre>navigator.mediaDevices.getUserMedia(constraints).then(function(stream) {
     RTCConnectionObjectWithPeter.addStream(stream);
})</pre>
</blockquote>
<p><strong><br />
Aufbauen einer WebRTC Connection – wirklich ganz ohne Server?</strong></p>
<p>Wie zuvor bereits erwähnt, sind WebRTC Verbindungen Peer to Peer Verbindungen. Wird also wirklich kein Server benötigt?<br />
Diese Frage lässt sich mit einem „Nein“ beantworten.<br />
Während <strong>der Datenaustausch</strong> einer WebRTC Verbindung zwischen 2 Clients tatsächlich ohne weitere Zwischenstelle stattfindet, muss zum <strong>Aufbau dieser Verbindung</strong> zunächst ein sogenannter„ICE Server“ von beiden Stellen kontaktiert werden.</p>
<p>Von diesem ICE Server erhalten die Clients ein „ICE Candidate“ Objekt. Ein solcher ICE Candidate enthält Informationen darüber, wie zu einem Client eine Verbindung aufgebaut werden kann. Da sich die meisten Clients hinter Firewalls oder hinter Routern befinden, muss der ICE Server mit dem Client erst über einige komplexere Verfahren aushandeln, wie ein anderer Client später durch all diese Hürden eine Verbindung zu ihm aufbauen kann.<br />
Dabei kommen Techniken wie „Hole Punching“ zum Einsatz, die etwa auch bei Online-Games eingesetzt werden.</p>
<p>Danach müssen jene zwei Clients, die miteinander kommunizieren möchten, ihre ICE Candidates austauschen.  Dieser Austausch erfolgt über einen sogenannten „Signal Server“. Ist das passiert, können die beiden Clients schließlich eine direkte Verbindung zueinander aufbauen.</p>
<p>Für all diese Schritte sind einige Funktionsaufrufe und Abfragen notwendig. Und natürlich das Vorhandensein eines ICE-, sowie eines Signal-Servers.<br />
Zum Glück gibt es für diese Schritte mit „peer.js“ ein online Service mit entsprechender JavaScript API. PeerJS macht den Verbindungsaufbau über WebRTC sehr einfach.<br />
Man kann den ICE und Signaling Service von „peer.js“ als Cloud nutzen, indem man einfach nur die Javascript API in die eigene Webseite einbindet und darüber die Verbindung aufbaut.<br />
Oder man lädt sich die open source Server-Implementation (nodejs) von peer.js runter und führt diese selbst auf einem entsprechenden Server aus.</p>
<p><strong>Ein Live-Beispiel</strong></p>
<p>Für folgendes Live-Beispiel wurde peer.js verwendet. Der Servercode wird auf einem NodeJS Server über Microsoft Azure gehostet.<br />
Das Live-Beispiel ist ein selbst programmiertes online Schachspiel mit integriertem Video Chat. Zwei Spieler können dabei in Echtzeit miteinander spielen und sehen sich gleichzeitig. Beliebig viele weitere Personen können das Spiel (momentan noch nicht den Videochat) der beiden verfolgen.<br />
Alles ist gänzlich mit modernen Webtechnologien umgesetzt – ohne Plugins oder spezielle Erfordernisse.</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-7231" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/10/unkn-559x400.png" alt="" width="254" height="211" /></p>
<p><strong>LINK ZUM SPIEL: <a href="https://dm161564.students.fhstp.ac.at/WebChess/war/">https://dm161564.students.fhstp.ac.at/WebChess/war/</a></strong></p>
<p>Das Schachspiel selbst läuft über eine Websocket Verbindung und einen NodeJS Server. Die ersten beiden Besucher die eine Spielsession joinen, sind die Spieler. Diese bekommen jeweils einen individuellen Key zugesandt, mit dem sie sich beim PeerJS Server registrieren.<br />
Außerdem erhalten sie jeweils den Key des anderen.</p>
<p>Dadurch sind sie im schließlich in der Lage, eine P2P Verbindung zueinander aufzubauen und Audio/Video Daten auszutauschen.</p>
<p>Der ganze Code für den Videochat ist letztlich sehr simpel:</p>
<blockquote>
<pre><strong>function </strong><strong>videoChat</strong>(sessionID,flag)
{
 <strong>    peer</strong> = <strong>new Peer</strong>(sessionID+flag, {host: '888peerjsserver.azurewebsites.net', port: 443, path: '/myapp', secure: true});
     <strong>if</strong> (flag=="white")
     {
          <strong>peer.on</strong>('call', function(call)
          {
                 <strong>passiveCall</strong>(call);
          });
     }
    <strong> else
</strong>     {
<strong>                   activeCall</strong>(peer,sessionID);
     }
}</pre>
</blockquote>
<p>&nbsp;</p>
<p>Die Funktion wird aufgerufen, sobald 2 Spieler mit dem Schachserver verbunden sind und dieser den Beiden das entsprechende Signal (über Websockets) sendet.</p>
<p>Beide erhalten dabei eine Spiel-SessionID und ein individuelles Flag. Mittels „<strong>new Peer</strong>“ registrieren sich beide am PeerJS Server.</p>
<p>Der erste Spieler (weiß) registriert schließlich den Eventhandler „<strong>on call</strong>“ für die Aufgebaute peer Verbindung.<br />
Der zweite Spieler (schwarz) führt später die Funktion „<strong>activeCall</strong>“ aus, die den weißen Spieler anruft, worauf besagter Event bei ersterem ausgelöst wird.</p>
<p>&nbsp;</p>
<p>Die Funktion <strong>activeCall</strong>:</p>
<blockquote>
<pre><strong>function</strong> <strong>activeCall </strong>(peer,sessionID) {
         <strong>   navigator.getUserMedia</strong>({video: true, audio: true}, <strong>function</strong>(stream) {
                    <strong>document.getElementById("displayMe").src</strong><strong> =
</strong>                     <strong> URL.createObjectURL</strong>(stream);

                    <strong>document.getElementById</strong>("displayMe").<strong>play</strong>();
                    <strong>var call</strong> = <strong>peer.call</strong>(sessionID + "white", stream);
                    <strong>call.on</strong>('stream', <strong>function</strong>(remoteStream) { 
                       <strong>      document.getElementById("displayOther").src</strong> = 
                             <strong>URL.createObjectURL</strong>(remoteStream);
                       <strong>      document.getElementById</strong>("displayOther").<strong>play</strong>();
                    });
               }, // errorCallback
                   <strong>function</strong> (err) {
                    //error action
               }
         );
}</pre>
</blockquote>
<p>Mittels „<strong>navigator.getUserMedia</strong>“ wird nun ein Audio- und Videostream geöffnet. Sobald dieser bereit ist, wird er in einem DOM video-node mit der ID „<strong>displayMe</strong>“ angezeigt – somit sieht der schwarze Spieler seine Videoübertragung zunächst auch selbst.<br />
Gleichzeitig wird mittels „<strong>peer.call</strong>“ eine Verbindung zum weißen Spieler aufgebaut. Dieser Verbindung wird das erstellte Streamobjekt übergeben.<br />
Wie weiter oben bereits beschrieben, hat der weiße Spieler zuvor mittels <strong>„peer.on(‘call‘, &#8230;&#8230;.)“ </strong>einen Listener für den Fall eines <strong>calls</strong> erstellt, der beim Auftreten dieses Events die Funktion „<strong>passiveCall</strong>“ ausführt.</p>
<p><strong><br />
passiveCall:</strong></p>
<blockquote>
<pre><strong>function</strong> <strong>passiveCall </strong>(call)
{
 <strong>   call.on</strong>('stream', <strong>function</strong> (remoteStream) {
           <strong> document.getElementById("displayOther").src</strong> =
             <strong> URL</strong>.<strong>createObjectURL</strong>(remoteStream);
           <strong> document.getElementById</strong>("displayOther").<strong>play</strong>();
    });
   <strong> navigator.getUserMedia</strong>({video: true, audio: true}, <strong>function</strong> (stream) {
              <strong>document.getElementById("displayMe").src</strong> =
               <strong> URL.createObjectURL</strong>(stream);

             <strong> document.getElementById</strong>("displayMe").<strong>play</strong>();
              <strong>call.answer</strong>(stream);
         }, // errorCallback
         <strong>function </strong>(err) {
             //error action           
         }
    );
}</pre>
</blockquote>
<p>In der Funktion „<strong>passiveCall“</strong> wird beim weißen Spieler zusätzlich der Evenhandler <strong>„call on stream</strong>“ registriert. Sobald dem weißen Spieler also vom schwarzen Spieler ein Stream geschickt wird, wird dieser als source <strong>des DOM Elements „#displayOther“</strong> gesetzt -&gt; es handelt sich dabei wieder ein video-node. Dieses wird anschließend mittels „<strong>play</strong>“ abgespielt.<br />
Der schwarze Spieler hat den selben Eventhandler in der Funktion „<strong>activeCall</strong>“ registriert (siehe oben).</p>
<p>Beim eingehenden Call des schwarzen Spielers erstellt der weiße Spieler nun ebenfalls ein Streamobjekt mittels „<strong>getUserMedia</strong>“.<br />
Auch er zeigt diesen Stream in einem video-node mit der ID „<strong>displayMe</strong>“ an (sodass auch er sich selbst sieht) und sendet diesen stream wiederum schließlich an den schwarzen Spieler (mittels „<strong>call.answer(stream)</strong>“ ) -&gt; ähnlich wie es der schwarze Spieler beim Aufbau des Calls bereits gemacht hat.</p>
<p>&nbsp;</p>
<p>Damit ist dieser erste Artikel zu Ende. Hoffentlich konnte er das Interesse für die ein oder andere „upcoming“ oder „less known Webtechnologie vermitteln.<br />
Im besten Fall sollte es jetzt zudem leicht fallen, mittels PeerJS, mit wenigen Schritten selbst einen P2P Videochat in die eigene WebApp oder Homepage zu integrieren &#8211; ausschließlich mit vorhandenen Browsertechnologien.</p>
<p>&nbsp;</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/its-so-fancy-webtechnologien-der-letzten-und-kommenden-jahre-von-denen-man-gehoert-haben-sollte/">&#8220;less known&#8221; client-side web technologies [Part 1]</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Lorem Ipsum</title>
		<link>https://mobile.fhstp.ac.at/development/webdevelopment/lorem-ipsum/</link>
		
		<dc:creator><![CDATA[Lucas Schöffer]]></dc:creator>
		<pubDate>Thu, 21 Sep 2017 10:56:00 +0000</pubDate>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Trends]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=6956</guid>

					<description><![CDATA[<p>Spielekonzept Xtreme Programming Das Augmented Reality Location Based Game Lorem Ipsum ist ein Multiplayer Spiel im Hochformat. Mitspielen können bis zu 4 Personen. Mindestanforderungen Die Mindestanforderungen dabei sind eine kurze Mission, ein Charakter, eine Kreatur und ein Gegenstand. Der Charakter, sowie die Kreatur brauchen eine bestimmte Menge an Kraft, mit welcher sie kämpfen können. Ebenfalls <a class="read-more" href="https://mobile.fhstp.ac.at/development/webdevelopment/lorem-ipsum/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/webdevelopment/lorem-ipsum/">Lorem Ipsum</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Spielekonzept Xtreme Programming</h1>
<div class="page" title="Page 1">
<div class="layoutArea">
<div class="column">
<p>Das Augmented Reality Location Based Game <strong>Lorem Ipsum</strong> ist ein Multiplayer Spiel im Hochformat. Mitspielen können bis zu 4 Personen.</p>
<h2>Mindestanforderungen</h2>
<div class="page" title="Page 1">
<div class="layoutArea">
<div class="column">
<p>Die Mindestanforderungen dabei sind eine kurze Mission, ein Charakter, eine Kreatur und ein Gegenstand. Der Charakter, sowie die Kreatur brauchen eine bestimmte Menge an Kraft, mit welcher sie kämpfen können. Ebenfalls wird eine Art „Rucksack“ zum Charakter hinzugefügt, um Gegenstände speichern zu können.</p>
<p>Die Mission ist, dass die MitspielerInnen zusammen einen Bereich (ein Dorf) beschützen müssen, da die Einwohner in Gefahr sind. Kreaturen sind eingedrungen, welche von den SpielerInnen bekämpft werden müssen. Durch das Antippen der Kreatur in der AR-erweiterten Kamera kann angegriffen werden. Je nach Kraft des Users/der Userin ist die Chance zu gewinnen höher oder geringer. Ob die Kreatur besiegt wird, wird nach Zufall inkl. Einbeziehung der Wahrscheinlichkeit durch Kraft bestimmt. Nach Ablauf einer gewissen Zeit darf keine Kreatur mehr im Dorf stehen.</p>
<p>Durch Marker können das Schloss, das Dorf, die Kreaturen und Gegenstände hard-gecoded in den Spielbereich gesetzt werden. Falls SpielerInnen ihre Kraft verloren haben können sie nicht mehr kämpfen. Vorerst wird der gesamte State übertragen -&gt; zB Position wird alle 10m geschickt / jede Minute wird aktualisiert.</p>
<h2>Erweiterungen</h2>
<div class="page" title="Page 1">
<div class="layoutArea">
<div class="column">
<p>Bei den Erweiterungen gibt es in diesem Fall kaum Grenzen. Beginnend mit mehreren verschiedenen Spielfeldern, mehr Charakteren und mehr Kreaturen, geht es weiter bis zur besseren grafischen Gestaltung und Animationen, dann besseren Ausstattungen und Ausrüstungen (z.B. statt Hammer ein Schwert), sowie eigenen Spieltechniken, wie zum Beispiel, dass die Schwertbewegungen durch die Finger gesteuert werden oder Pfeil und Bogenschüsse durch eine Zieh-Bewegung am Bildschirm erfolgen.</p>
<p>Ein aufregendes Feature wäre, dass sich Kreaturen bewegen können und somit auch auf einen bestimmten Bereich zugehen. Dieser müsste dann gerettet werden, bevor die Kreaturen ihn erreichen.<br />
Statt nur das Dorf zu retten, können dann mehrere Missionen auch hinzukommen, wie zum Beispiel, dass ein Spieler zu einem bestimmten Bereich muss, um neue Nahrung für die Burg zu holen.</p>
<p>Das waren nur ein paar Ideen aus unserer Schatztruhe. Wenn ihr mehr darüber wissen wollt, meldet euch und wir können sie euch gerne zur Verfügung stellen <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h4>Screens</h4>
<h4>Spielname &amp; Button &#8220;Spiel starten&#8221;<br />
<img loading="lazy" decoding="async" class="alignnone wp-image-6967" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/05/xp-spiel-scribble01.jpg" alt="" width="200" height="340" /></h4>
<h4>Die Geschichte<br />
<img loading="lazy" decoding="async" class="alignnone wp-image-6968" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/05/xp-spiel-scribble02.jpg" alt="" width="200" height="340" /><img loading="lazy" decoding="async" class="alignnone wp-image-6969" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/05/xp-spiel-scribble03.jpg" alt="" width="200" height="340" /></h4>
<h4>Charakterauswahl<br />
<img loading="lazy" decoding="async" class="alignnone wp-image-6970" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/05/xp-spiel-scribble04.jpg" alt="" width="200" height="340" /><img loading="lazy" decoding="async" class="alignnone wp-image-6971" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/05/xp-spiel-scribble05.jpg" alt="" width="200" height="340" /></h4>
<h4>Umsetzung</h4>
<p>Die Entwicklung des Spiels teilten wir zunächst in mehrere Bereiche auf – in Frontend, Backend, AR und „Verpackung“ also die Zusammenfügung der einzelnen Elemente. Am Anfang bekam jeder eine Aufgabe zugeteilt mit der Absicht sich abzuwechseln, wie es jedoch oft bei Projekten vorkommt, ist schlussendlich jeder bei seiner Grundaufgabe geblieben und jeder half jeden soweit er konnte bei diversen Problemen.</p>
<p><strong>Frontend</strong></p>
<p>Das Frontend des Spiels wurde mittels dem JavaScript Framework Vue 2 umgesetzt. Wir entschieden uns für dieses Framework, da wir bereits Vue das erste Semester in einer Lehrveranstaltung kennenlernten und bereits erste Erfahrungen damit machen konnten. So konnten wir unsere Kenntnisse erweitern und uns mit den Veränderungen von Vue zu Vue 2 vertraut machen.</p>
<p>Der Grundaufbau der HTML Elementen erfolgte relativ rasch mit einigen Ausnahmen, die Logik dahinter mit den Anbindungen zur Datenbank und des AR-Elements stellten sich wie erwartet als schwieriger heraus. Deswegen wurde auch zur Sicherheit Fallback-Lösungen vorbereitet, im Falle, dass die Verbindung zur AR-Komponente scheiterte und um das Spiel auch mit einem Smartphone ohne den erforderlichen Voraussetzungen spielen zu können. Durch Teamwork konnten alle aufgetretenen Schwierigkeiten bei der Entwicklung des Frontends behoben werden konnten.</p>
</div>
<div class="column">
<h4>Tango mit Unity</h4>
<p>Die AR Komponente wurde mittels Tango Framework mit Hilfe von Unity umgesetzt. Als Basis wurde der How-To-Guide <strong><a href="https://developers.google.com/tango/apis/unity/unity-howto-placing-objects">Placing Virtual Objects in Augmented Reality</a></strong> verwendet.</p>
<h2>Ergebnis</h2>
<p>Wir haben das Spiel zu den Mindestanforderungen umgesetzt und auch erfolgreich spielen können nach unserer Programmierwoche. Es hat sehr viel Spaß gemacht, doch die Hauptattraktion war dann eher das Fotoshooting mit dem Mutanten!</p>
<h3><img loading="lazy" decoding="async" class="alignnone wp-image-6975" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/05/Mutant1.jpg" alt="" width="200" height="355" /><img loading="lazy" decoding="async" class="alignnone wp-image-6976" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2017/05/Mutant2.jpg" alt="" width="200" height="355" /></h3>
<h2> Eindrücke</h2>
<blockquote>
<ol>
<li><em>Die Woche war sehr aufregend und informativ. Dadurch, dass so viele Stunden durchgehend gearbeitet wurde, konnte man sich auf ein Projekt gut konzentrieren und ich freue mich, dass wir wirklich so viel weiter gebracht haben. Ich konnte neues probieren und habe auch einiges dabei gelernt. Vielen Dank auch an die gute Zusammenarbeit der Gruppe!</em></li>
<li>Es war eine sehr coole aber auch anstrengende Woche, da wir uns ein sehr anspruchsvolles Ziel gesetzt haben. Ich selbst habe einen Einblick in ein komplett neues Framework Tango bekommen. Auch wenn das Ergebnis mit Sicherheit noch sehr ausbaufähig ist, denke ich doch das wir einiges geschafft und vor allem viel gelernt haben. Danke an die Möglichkeit und die gute Zusammenarbeit in der Gruppe!</li>
</ol>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://mobile.fhstp.ac.at/development/webdevelopment/lorem-ipsum/">Lorem Ipsum</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Nintendo Switch &#8211; neue Spielekonsole oder Aufbruch in neue Märkte?</title>
		<link>https://mobile.fhstp.ac.at/allgemein/nintendo-nx-neue-spielekonsole-oder-komplett-neue-marktstrategie/</link>
		
		<dc:creator><![CDATA[Lucas Schöffer]]></dc:creator>
		<pubDate>Tue, 10 Jan 2017 09:57:43 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=6682</guid>

					<description><![CDATA[<p>Vorneweg sollten zwei Dinge erwähnt werden: 1. Dies ist ein klassischer Blog Beitrag. Ihm liegen keine tiefgehenden wissenschaftliche Analysen und Fakten zu Grunde. Das Meiste im folgenden Text basiert auf meiner persönlichen Einschätzung und Interpretation über die (bis jetzt) spärlich vorhandenen Informationen zu Nintendos kommender neuer Spielekonsole. Gemischt mit meiner höchst subjektiven Wahrnehmung der technologischen <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/nintendo-nx-neue-spielekonsole-oder-komplett-neue-marktstrategie/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/nintendo-nx-neue-spielekonsole-oder-komplett-neue-marktstrategie/">Nintendo Switch &#8211; neue Spielekonsole oder Aufbruch in neue Märkte?</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Vorneweg sollten zwei Dinge erwähnt werden:<br />
1. Dies ist ein klassischer Blog Beitrag. Ihm liegen keine tiefgehenden wissenschaftliche Analysen und Fakten zu Grunde. Das Meiste im folgenden Text basiert auf meiner persönlichen Einschätzung und Interpretation über die (bis jetzt) spärlich vorhandenen Informationen zu Nintendos kommender neuer Spielekonsole.<br />
Gemischt mit meiner höchst subjektiven Wahrnehmung der technologischen Entwicklung der letzten Jahre ;).<br />
Kurzum: Am Ende stehen hier hauptsächlich wilde Hypothesen, die nicht bewiesen sind und sich wohl erst mit der Zeit von selbst beweisen (oder widerlegen) werden.<br />
&#8230; Trotzdem glaube ich, dass diese Hypothesen bereits jetzt ganz interessant sein könnten.</p>
<p>2. Um das hier interessant finden zu können muss man, so glaube ich zumindest, absolut nichts mit dem digitalen Spielesektor am Hut haben&#8230; ein generelles Faible für digitale Technik, speziell im mobilen Bereich und/oder allgemein im Entertainment-Bereich, sollte es auf jeden Fall rechtfertigen, diesen Beitrag zumindest mal zu überfliegen.<br />
Denn am Ende entschließt man sich möglicherweise, eine kommende technische Plattform (namentlich: die Nintendo Switch) zumindest ein wenig im Blick zu behalten, selbst wenn einen digitales Gaming eher gar nicht interessiert ;).</p>
<p>Damit aber genug der VORworte. Dafür kommt jetzt erst mal ein RÜCKblick ;).</p>
<p><strong>Das Smart&#8221;phone&#8221;</strong><br />
Eigentlich ist es nicht so lange her, da gab es keine Smart&#8221;phones&#8221;. Also keine digitalen Alleskönner -> kleine Rechner, mit allerhand integrierten Sensoren, <del datetime="2016-12-01T11:29:24+00:00">einer Kamera</del> zwei Kameras, mindestens einem Mikrofon &#8230; und einer großen Anzahl an unterschiedlichen externen Verbindungsmöglichkeiten, die man so (zumindest im kabellosen Bereich) selbst bei gängigen PCs oder gängigen Notebooks nicht vorfindet (natürlich kann man an dieser Stelle auch die Frage stellen, ob und warum man bei handelsüblichen PCs Technologien wie etwa NFC überhaupt benötigen würde &#8211; aber darum geht es hier ja nicht).</p>
<p>Ein wesentlicher Faktor, der diese kleinen Alleskönner so praktisch macht, ist ihre portable Form, kombiniert mit ihrer Vielfältigkeit. Die Vielfältigkeit kommt zu einen daher, dass sie über diese, gerade eben angesprochene, Vielzahl an technologischen &#8220;Einzelbausteinen&#8221; verfügen, die in Kombination miteinander und der entsprechenden Software dahinter ganz unterschiedliche Anwendungsmöglichkeiten erlauben.<br />
Telefonieren ist eine davon &#8211; bei weitem aber nicht mehr die Beliebteste&#8230; dass diese Geräte also tatsächlich Smart&#8221;phones&#8221; heißen, dürfte eher ihrer historischen Herkunft geschuldet sein:</p>
<p>Bevor Apple sein erstes iPhone 2007 herausbrachte, experimentierte der damalige Markführer im Segment der Mobiltelefone &#8211; namentlich: Nokia &#8211; schon länger mit Geräten, die für mehr als hauptsächlich Telefonieren konzipiert waren. Diese Geräte waren mit einer offenen Architektur ausgestattet (offener als bisherige Mobiltelefone jedenfalls), die es erlaubte, die Grundfunktionen des Betriebssystems durch zusätzliche Software zu erweitern.<br />
Zu erwähnen ist hier zum Beispiel die Nokia Communicator Reihe&#8230;</p>
<p>Wie auch immer: Erst Apple hat dieses Konzept für den Durchschnittsanwender wirklich perfektioniert. Einer der Hauptgründe lag dabei aber nicht nur bei der offenen Software Architektur, sondern im Faktor ihres grundsätzlichen Hardwaredesigns:<br />
Die Verschmelzung der essentiellsten Inputs (Pointing Device, Keyboard) und Outputs(hochauflösendes multicolor Display) eines normalen PCs oder eines Notebooks zu einer kleinen, im Formfaktor sehr praktischen, Einheit -> namentlich dem Touchscreen.<br />
Natürlich hat Apple nicht als erster einen Touchscreen in ein Mobiltelefon verbaut. Und erst recht hat Apple den Touchscreen natürlich nicht erfunden.</p>
<p>Aber Apple hat das gemacht, was diese Firma am besten kann: Bestehende Dinge für den Endanwender so weit perfektionieren und aufeinander abstimmen, dass eine wirklich rundum gutes Endprodukt dabei rauskommt.<br />
Der Touchscreen im ersten Smartphone, das auch in einem breiteren Marktsegment kommerziell wirklich erfolgreich war, bildet einen Bildschirm, ein Pointing Device (wie eine Maus) und ein (virtuelles) Keyboard ab. Natürlich ist das Pointing Device längst nicht so präzise wie eine Maus, die Tastatur eignet sich längst nicht so gut für längere Texte, wie ein herkömmliches Hardwarekeyboard mit entsprechendem Formfaktor. Der Bildschirm ist für ein produktives, multitasking-lastiges Arbeiten natürlich nicht mit einem großen Screen vergleichbar &#8211; ABER diese Dinge benötigte unterwegs ohnehin keiner.<br />
Unterwegs muss man schnell Informationen einholen können, kurze Nachrichten verschicken, oder einfache kurze Tasks (wie das Organisieren von Terminen) erledigen können. Im Business Bereich -> im privaten Bereich hat man unterwegs sogar noch viel weniger Anforderungen&#8230;<br />
Kein Wunder also, dass dieses Konzept nur gewinnen konnte.</p>
<p>Natürlich sind all diese Tatsachen nichts Neues.<br />
Es sollte an dieser Stelle lediglich verdeutlicht/in Erinnerung gerufen werden, wie in den letzten Jahren aus mobilen Telefonen kleine, extrem universelle Rechner wurden, die durch ihre verbaute Hardware und ihre Portabilität ein enormes Einsatzspektrum erreicht haben. Bei dem Wort Smart&#8221;phone&#8221; würde jemand, der nicht genau wüsste was hinter diesem Begriff tatsächlich steht, an ein sehr dediziertes Gerät denken &#8211; ein Telefon. Ein Telefon, das halt vielleicht noch ein paar extra Features besitzt&#8230;<br />
Dabei sind Smart&#8221;phones&#8221; eigentlich Geräte, mit denen man viele, viele, viele smarte Dinge machen kann&#8230; unter anderem z.B. halt auch telefonieren..</p>
<p>Spätestens als das Tablet dann aufkam, war der Faktor &#8220;Phone&#8221; aus der Gerätebezeichnung endgültig gestrichen. Weil sich das Tablet (das ja eigentlich nichts anderes ist, als ein großes Smartphone), in Anbetracht seines Formfaktors, eher schlecht zum Telefonieren eignet.<br />
Oh.. und zudem haben ja längst nicht alle Tablets Slots für SIM-Karten verbaut. Man könnte also meinen, mit Tablets kann man also gar nicht telefonieren..</p>
<p>Und dennoch kann man mit JEDEM Tablet heute Telefonieren. Weil auch das Telefonieren selbst sich von einem dedizierten Service, der von dedizierten Anbietern (wie Mobilfunkprovidern) zu einer sehr viel offeneren Anwendung gewandelt hat:<br />
Es müssen ja lediglich Daten von A nach B übertragen werden und Empfänger B muss halt verstehen, wie Absender A spricht. Völlig egal ob das jetzt über irgendwelche fixen, dezidierten, Standleitungen passiert oder über Mobilfunkmasten, oder, oder, oder&#8230;<br />
Gleiches ist z.B. mit dem Fernsehen zu beobachten.<br />
Hat man früher Fernsehen über dezidierte Broadcasting Anbieter empfangen, sehen wir heute z.B. über Mobilfunkmasten auf unserem Smartphone z.B. via Netflix fern.<br />
Und andererseits telefonieren wir zuhause z.B. über unser WLAN, das sich über unseren Kabelfernseh-Provider (wie z.B. Kabelplus) ins Internet verbinden -> etwa mittels Skype oder einen von vielen, vielen anderen vergleichbaren Diensten.</p>
<p>Was sich in Wahrheit also in den letzten Jahren entwickelt hat, ist der Weggang von dedizierten Services, Technologien und auch Geräten.<br />
Hin zu so offenen Services, Standards und Devices.<br />
Devices mit einem so breiten und vielseitigen Standard-Hardware-Umfang und einem so breiten Spektrum an Standard-Interfaces, dass nahezu alle denkbaren möglichen Szenarien/Services auf jedem möglichen Gerät genutzt und abgebildet werden können&#8230;<br />
Es muss immer nur noch die entsprechende Software zur Verfügung gestellt werden. Dann kann man telefonieren -> aber auch Messages aller Art verschicken, Informationen aller Art einholen, fernsehen, spielen, andere Geräte fernsteuern, und und und.<br />
Von wegen also Smart&#8221;phone&#8221; <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Die &#8220;Spiele&#8221;konsole</strong><br />
Vor ein paar Monaten habe ich mit meinem Bruder telefoniert (gut.. das mache ich öfter.. aber es geht jetzt um ein bestimmtes Gespräch).<br />
Er meinte, dass seine Tochter nicht dauernd das Notebook über Kabel mit dem Fernseher verbinden will, wenn sie Netflix sehen will und ob man Netflix nicht eigentlich auch direkt am Fernseher &#8220;empfangen&#8221; kann. Er hat da mal sowas gelesen&#8230;&#8230;<br />
Ich fragte ihn, ob es ein smarter Fernseher ist (es war noch ein relativ neues Gerät &#8211; etwas über ein Jahr alt). Mein Brunder entgegnete mir lediglich, dass er schon findet, dass das er ziemlich smart aussieht.<br />
Tja.. Mit der Aussage ließ jetzt erst Mal nicht viel machen ;).</p>
<p>Über den Preis des Geräts habe ich dann geschlussfolgert, dass es sich eher nicht um ein Smart-TV Gerät handeln wird.<br />
Das Gespräch ging dann einige Minuten. Minuten, in denen ich ein wenig versucht habe ihm zu erklären, worauf es ankommt&#8230;<br />
Ich habe ihm z.B. erklärt, dass er einen Google Chromecast verwenden könnte &#8211; dann könnte er mit einem externen smarten Gerät (wie dem Notebook) einfach jeden beliebigen Netflix Stream an den Stick schicken (und der Stick empfängt und decodiert den Stream dann sogar direkt, ohne dass das externe Gerät die ganze Zeit als Zwischenstation herhalten muss). </p>
<p>Bis wir an diesem Punkt des Gesprächs angelangt waren, war dann schon einige Zeit vergangen, weil ich ihm halt immer wieder versucht habe, einige Dinge zu erklären und ihm nahe zu bringen, dass, wenn sein Fernseher nicht smart ist, er halt einfach irgendwas anderes smartes braucht, das man irgendwie mit dem Fernseher verbinden kann. Also &#8220;einfach nur&#8221; &#8220;irgendwas&#8221;, das sich ins Internet verbinden kann, das eine halbwegs offene Architektur besitzt und mit dem man dann halt irgendwie die Audio und Video Signale an den Fernseher weitergeben kann. </p>
<p>Er wollte allerdings nicht unbedingt noch ein zusätzliches neues teures Gerät anschaffen müssen. Wenn überhaupt, dann noch ein Kabel oder höchstens etwas in der Preiskategorie eines Google Chromecast Sticks&#8230;<br />
Doch sein Einwand, nachdem ich ihm erklärt habe, was der Chromecast genau macht, war auch nicht ganz unberechtigt.<br />
Der, bis dahin zum Netflix schauen verwendete Laptop, war ein Firmenlaptop -> und mein Bruder (und ich) wusste nicht, ob er das entsprechende Browserplugin da so einfach installieren konnte.<br />
Und von seinem PC wollte er den Chromecast nicht steuern -> denn jedesmal zum PC gehen zu müssen, wenn man auf dem Fernseher im anderen Zimmer was streamen möchte, ist auch nicht wirklich so sexy&#8230;</p>
<p>Aber da war ich natürlich noch längst nicht am Ende, mit meinem Latein ;D.<br />
<em>&#8220;Es kann ja auch ihr <del datetime="2016-12-02T11:00:20+00:00">Smartphone </del> Smart&#8221;phone&#8221; sein, über das sie streamt. Und nein: das muss sie ja noch nicht mal mit dem Fernseher über Kabel verbinden. Da gibts ne App für den Chromecast und schon pfeift das. Fertig. Also musst du jetzt wirklich nur noch den Chromecast besorgen.&#8221;.</em></p>
<p>Kaum war das ausgesprochen, erinnerte ich mich daran, dass seine Tochter ja ein iPhone hatte (Teenager&#8230;). Da war ich mir dann doch weder unsicher, ob das so einfach ging, was ich gerade noch so großmäulig behauptet hatte.<br />
Erst denken. Dann reden&#8230;.<br />
Ich war mir nicht sicher, ob man das iPhone so ohne Weiteres mit Chromecast verbinden konnte (heute weiß ich es besser ;D).<br />
Ich wusste zwar, dass es auch einige andere Anbieter von Streamingsticks gab, die in diesem Szenario vielleicht etwas bringen konnten &#8211; aber ich wollte ihm nichts empfehlen, womit ich keine persönliche Erfahrung gemacht hatte&#8230; Sonst würde er Geld rauswerfen und es würde im schlechtesten Fall nicht funktionieren.</p>
<p>Das Gespräch ging zu dem Zeitpunkt dann doch schon eine kleine Weile und dann habe ich irgendwann mal gesagt &#8220;HEAST! Des gibts ja net.. ich hab zuhause zumindest 4 verschiedene Möglichkeiten, wie ich Netflix und Co. auf den Fernseher bekommen könnt&#8230; Da muss sich ja bei dir auch irgendwas fin&#8230;..&#8221;<br />
Und dann schoss es mir ein:<br />
 &#8220;Du sag mal&#8230; ihr hattet doch mal eine Wii oder eine Wii U rumstehen. Gibts die noch?&#8221;<br />
Die Antwort war &#8220;Ja, sicher.. aber was hat das damit zu tun?&#8221;<br />
Und abermals versuchte ich ihm nochmals zu erklären, dass die meisten Geräte heute weitaus mehr sind, als das, was hinter ihrer Bezeichnung steht.</p>
<p>&#8220;Im Prinzip ist auch in so einer &#8220;Spiele&#8221;konsole nix anderes drin, als in einem Notebook oder einem PC. Ein oder mehrere Prozessoren, ein Bisschen Hauptspeicher, jedemenge standardisierte Interfaces (sowohl für input als auch für output, sowohl für Kabelverbindungen als auch für kabellose Verbindungen jeder Art). Und vor allem: Eine so offene Softwarearchitektur, dass jedermann alles mögliche dafür programmieren kann. Früher hat man &#8220;Programme&#8221; dazu gesagt und das wurde eher mit dem PC assoziiert. Heute wird das Zeug heute meist &#8216;Apps&#8217; genannt und mit dem Smart&#8221;phone&#8221; assoziiert. Das ist aber nichts Smart&#8217;phone&#8217; exklusives&#8230;&#8230;&#8230;&#8221;.<br />
Es herrschte kurze Stille.<br />
Und dann kam die Frage: &#8220;Wie jetzt&#8230; ich kann mit meiner Wii ernsthaft Netflix schauen?&#8221;.</p>
<p>An der Stelle werde ich die letzten Minuten des Gesprächs nicht mehr wiedergeben, weil nicht weiter relevant ;). Ich denke aber, dass an der Stelle klar wird, worauf diese nette kleine Erläuterung Telefonats aufmerksam machen sollte ;).</p>
<p><strong>Nintendo Switch</strong><br />
Als ich, in freudiger Vorerwartung, das erste (vorab angekündigte) Video zur neuen Nintendo Konsole (die bis dahin unter dem Arebeitstitel &#8220;Nintendo NX&#8221; bekannt war) sah, gingen mir ein HAUFEN Gedanken durch den Kopf.<br />
Einer der ersten war: &#8220;Na, Gott sei Dank!&#8221;<br />
Ich war zunächst mal sehr beruhigt darüber, dass Nintendo nicht auch auf diesen Zug aufgesprungen ist, den seine zwei Hauptkonkurrenten sich seit einigen Jahren liefern: Mit einfach nur immer besserer Hardware groß auftrumpfen und sich überbieten zu wollen. Trauriger Weise funktioniert das bei einem sehr breiten Publikum sehr gut. Und trauriger Weise werden dadurch wirklich gute Spiele (die im Idealfall sogar auch irgendeiner emotionalen Ebene stimulieren können &#8211; sei es durch eine tolle Story oder ein witziges Spielprinzip ) Mangelware und im Gegenzug steht Einheitsbrei steht auf der Tagesordnung. Hauptsächlich mordsbombastische grafische Effekte.. alles andere ist aber leider sehr oft zum Gähnen.<br />
Aber das ist eine höchst subjektive Meinung und hat mit dem eigentlichen Thema auch nichts zu tun ;).</p>
<p>Wie auch immer: Nintendo blieb seinem Motto treu.<br />
&#8220;Sollen sich die zwei Deppen doch weiterhin gegenseitig die Köpfe einschlagen&#8230; wir versuchen uns da dran vorbei zu schleichen und erneut unseren ganz eigenen Markt zu finden.&#8221;<br />
Genau an der Stelle beginnt jetzt der (eventuell.. ist natürlich alles noch unbewiesen) genialste Schachzug, den Nintendo überhaupt nur machen hätte können.</p>
<p>Zunächst muss man einmal eines vorwegschicken: Mobiles Gaming war IMMER eines der größten Steckenpferde von Nintendo. They have invented the Gameboy. THE GAMEBOY! ;).<br />
Was Nintendo über kaum ahnen konnte, war, dass dieses Marktsegement in den letzten Jahren sehr plötzlich von einer &#8220;anderen Seite&#8221; &#8211; und zwar extrem unerwartet &#8211; geradezu im Sturm erobert wurde und das Zielpublikum dabei sogar noch erheblich vergrößert werden konnte.<br />
Das Schlimmste dabei: Diese &#8220;andere Seite&#8221; hatte das noch nicht einmal bewusst angestrebt. Diese &#8220;andere Seite&#8221; repräsentiert einfach nur tragbare Geräte, die sich im Laufe der Jahre soweit weg von einem dedizierten Einsatz, hin zu enorm universellen und leistungsfähigen Alleskönnern entwickelt haben.</p>
<p>Soweit, dass sie dabei viele Märkten &#8211; wie z.B. den von Digitalkameras und MP3 Playern &#8211; erheblich beeinflusst haben. Mal ehrlich: Wer kauft heute noch einen MP3 Player? ;D.<br />
Aber das waren nicht die einzigen Märkte..<br />
Denn Step by Step (und sicherlich von niemandem beabsichtigt) nahmen diese Geräte &#8211; namentlich: Smart&#8221;phones&#8221; und Tablets &#8211; eine enormen gewichtige Rolle im digitalen Spielemarkt ein. Und zwar gerade im mobilen Sektor. Eigentlich ja Nintendos Steckenpferd.</p>
<p>Nicht, dass Nintendo jetzt soviel eingebüßt hätte, dass man sich gleich Existenzsorgen hätten machen müssen: Auf was Nintendo immer noch bauen konnte, waren etablierte Eigenmarken und die jahrzehntelange Erfahrung Games mit &#8220;dem gewissen Etwas&#8221; entwickeln zu können, die auch heute noch eine breite Fanbase hinter sich haben.<br />
Aber auch so etwas währt nicht ewig. Der Markt ist schnelllebig. Die Konkurrenz groß und keinesfalls unbegabt und &#8220;Mario&#8221; ist für Kids heute nicht mehr das was &#8220;Mario&#8221; für meine Generation ist ;).<br />
Gespürt hat Nintendo den Einzug der Smart&#8221;phones&#8221; in den digitalen Spielemarkt alle Male. Zumal die Geräte in den lezten Jahren immer leistungsfähiger wurden und sich nicht mehr nur Games wie Doodle Jump flüssig spielen ließen. Und zumal diese Geräte eine großartige Plattform für den (ebenfalls stark wachsenden) Markt von Indie Game Developern darstellten.<br />
Und mit den beiden Hardware- und Performancegiganten Microsoft und Sony als starke Konkurrenten am stationären Konsolenmarkt, steuerte Nintendo auf schwere Zeiten zu&#8230;<br />
Und das weiß Nintendo auch. Deshalb &#8211; und alles was jetzt folgt, sind wirklich nur Hypothesen &#8211; hat Nintendo einen umfassenden Plan für eine künftige Positionierung des Konzerns und seiner Produkte geschmiedet. Und wenn man die Zeichen noch etwas freier interpretiert, sogar noch inklusive einem passenden Backupplan im Gepäck<strong>*</strong>, falls der Hauptplan nicht funktioniert.</p>
<p><strong>Ein Paket &#8211; drei Geräteklassen</strong><br />
An dieser Stelle sollte man das Video zur Nintendo Switch zumindest einmal gesehen haben. Deshalb hier ein Link:<br />
https://www.youtube.com/watch?v=f5uik5fgIaI</p>
<p>Zwei Dinge fallen bei diesem Video massiv auf. Beide sind, so denke, ich alles andere als Zufall. Eher massiv durchdacht..<br />
1. Im ganzen Video wird kein einziges Mal gezeigt, dass das Display einen Touchscreen verbaut hat. Das ist insofern interessant, als dass Nintendo durchgehend bei seiner letzten Generation von mobilen Spielekonsolen (Nintendo DS), als auch bei seiner letzten stationären Konsole (Nintendo Wii U) massiv auf ein second Screen Konzept mit Touchscreen gesetzt hat. Gerade bei letzterer wahrscheinlich sogar zu massiv -> immerhin gilt dieses Feature, das externe Hersteller nicht auf Teufel komm raus in ihre Spiele integrieren wollten, als ein Grund für das wachsende mangelnde Desinteresse an der Konsole und deren kommerziellen Misserfolg.<br />
Dennoch scheint es sehr unwahrscheinlich, dass Nintendo vollständig auf dieses Interaktionsmittel verzichten würde. Wenn es weniger als &#8220;Zwangfeature&#8221; für neue Spiele und mehr nach dem Motto &#8220;you can use it, if it seems to make sense&#8221; propagiert wird, ist diese zusätzliche Komponente ja wirklich eine sinnvolle (optionale) Ergänzung.</p>
<p>Und ganz ehrlich: Wer verbaut heute noch statische LCD Displays in so einem Formfaktor, wie er bei dem mobilen Teil der Nintendo Switch zum tragen kommt.<br />
Es dürfte recht sicher sein, dass da ein Touchscreen kommt&#8230; Und es gibt auch schon erste (natürlich unbestätigte) Gerüchte dazu:<br />
http://de.engadget.com/2016/10/28/ja-das-nintendo-switch-kommt-mit-touchscreen/<br />
Warum also macht Nintendo so ein Geheimnis daraus? So ein Touchscreen ist nun wirklich keine technologische Enthüllung mehr, die man im letzten Moment loslässt um die Konsumenten vom Hocker zu hauen.<br />
Und trotzdem: Es wurde geradezu auffällig darauf verzichtet, in diesem ersten Video der Nintendo Switch, Touchfeatures zu zeigen.<br />
Meine Vermutung: Das wurde ganz bewusst noch ausgelassen, um noch nicht gleich zu offensichtlich zu machen, welche Überlegungen hinter der Nintendo Switch tatsächlich stecken könnten. Ich denke nämlich, dass das nächste Teaservideo inhaltlich GANZ anders ausfallen könnte. Nämlich sehr untypisch für eine &#8220;Spiele&#8221;konsole..</p>
<p>Das führt nun direkt zu:<br />
2. Am meisten dürfte an der Nintendo Switch dieser unglaublich modulare Aufbau ins Auge stechen. Es ist eine mobile Konsole mit einer festen Station für den Heimbetrieb. Ob diese Station die Rechenleistung der Switch erhöht oder wirklich nur das Signal zum Fernseher weiterleitet, ist noch gänzlich unbekannt. Gerüchten zu Folge, soll das aber der Fall sein. Dies soll an dieser Stelle aber auch gar keine Rolle spielen.<br />
Fakt ist, dass sich selbst der mobile Teil nochmals aufsplitten lässt. Und Fakt ist, dass der mobile Teil um ein vielfaches schlanker ist als etwa der Controller der Nintendo Wii U. Der Formfaktor ist wirklich ein ganz anderer und könnte in diesem Fall ein sehr entscheidender sein.<br />
Nimmt man die Controller vom mobilen Device ab, erinnert dieses schon geradezu verdächtig an ein ganz anderes, mittlerweile sehr vertrautes, Gerät aus unserem Alltag: Es wirkt zu sehr wie ein Tablet, als dass es Zufall sein könnte.<br />
Jetzt könnte jemand denken &#8220;WTF? Der Typ schreibt über 2300 Wörter, nur damit er hier behauptet &#8220;Die Nintendo Switch ist nichts weiter als ein Tablet, das man bei Bedarf mit zwei Gaming-Controller-Teilen bestücken kann und bei Bedarf auch recht easy mit dem Fernseher verbinden kann? Das scheint zwar nett.. aber nichts davon ist eine wirklich bahnbrechende neue Erfindung.&#8221;<br />
Ja! Genau! Nichts davon ist neu. So wie auch der Touchscreen beim iPhone und überhaupt das ganze Smartphone-Konzept dahinter nicht neu war. Aber es war etwas anderes: Extrem durchdacht<strong>**</strong>.<br />
Und ich glaube, dass man Nintendos neuestes Gerät (und ich schreibe hier ganz bewusst nicht &#8220;Nintendos neueste Spielekonsole&#8221;) genau aus diesem Blickwinkel betrachten muss.</p>
<p>Ich unterstelle Nintendo also mit der neuen Konsole keinesfalls etwas neu zu erfinden &#8211; aber mit der Kombination jeder Menge sehr durchdachter Elemente ein Produkt auf den Markt zu bringen, das so durchdacht ist, dass es weit mehr als nur bisherige Kunden ansprechen könnte. Und vor allem: weit mehr als nur klassische spielebegeisterte ansprechen könnte.<br />
Nämlich weil es am Ende des Tages weit mehr für den Konsumenten sein soll, als ein dediziertes Spielegerät.<br />
Denn: wohin hat sich der Markt bewegt?</p>
<p>Genau: Zu vielseitigen, extrem universell einsetzbaren Geräten (mit einer hohen Leistungsfähigkeit), die so wenig wie möglich einem dedizierten Einsatzfeld zuzuweisen sind, sondern vor allem offen und auf unterschiedlichste Arten verwendbar sind.<br />
Natürlich kauft man mit der Nintendo Switch zunächst mal eine &#8220;Spiele&#8221;konsole&#8230; Genauso wie man immer noch ein Smart&#8221;phone&#8221; kauft, wenn man ein iPhone erwirbt.<br />
Dennoch würde ich zum momentanen Zeitpunkt noch wetten, dass die nächsten großen technischen Informationen zur Nintendo Switch unter anderem eine sehr umfassende API bereithalten (und zwar für jede Menge Funktionalitäten, auch außerhalb des Spielesektors).<br />
Bis es soweit ist, könnte ich natürlich auch komplett falsch liegen und momentan einfach viel zu viel in Nintendos neuestes Gerät und die Geheimniskrämerei drumherum interpretieren.<br />
Sollte es sich aber wirklich herausstellen, dass die Nintendo Switch über eine ebenso offene Architektur verfügt, wie es sein flexibler Formfaktor vermuten lässt, dann wird es sehr eindeutig, welchen Plan Nintendo da wohl verfolgt:</p>
<p>Wenn die Smart&#8221;phones&#8221; und Tablets dieser Welt so unverschämt waren und (wenn auch eher unbeabsichtigt) ein sehr großes Stück vom (mobilen) Spielemarkt erobert haben, dann scheint doch die logischste Strategie, genau diesen Spieß umzudrehen und etwas so universelles auf den Markt zu bringen, dass der Durchschnittskonsument sich beim nächsten Tabletkauf womöglich überlegt, ob er wirklich nur so etwas banales und eingeschränktes wie ein simples Tablet kaufen möchte, oder zum etwa gleichen Preis etwas so vielfältig einsetzbares wie Nintendos neueste &#8220;Spiele&#8221;konsole.</p>
<p>Somit könnte es also nicht schaden, die Nintendo Switch als Entwickler auf dem Radar zu behalten -> eben auch wenn man mit digitalen Spielen nichts tu tun hat.<br />
That&#8217;s it. Man darf gespannt also sein ;). Stay tuned.</p>
<p><strong>*</strong>Backuplan: Tatsächlich hat Nintendo im Jahr 2016 gleich zweimal ein großes Tabu gebrochen. Mit der offiziellen Ankündigung von &#8220;Mario Run&#8221; für das iPhone 7, ging Nintendo erstmals gegen seinen eigenen Grundsatz vor, nicht für andere Systeme entwickeln zu wollen. Und der Erfolg des Spiels, welches erst kürzlich released wurde, gab Nintendo recht.<br />
Über ein Hintertürchen hat Nintendo diesen Grundsatz aber tatsächlich schon etwas früher im selben Jahr gebrochen (sehr erfolgreich) -> die Rede ist von Pokemon GO für iOS und Android (das durch das extrene Developmentstudio Niantic entwickelt wurde, hinter dem aber dennoch letztendlich Nintendo steht) war das erste Mal, dass ein Spiel aus einer der hauseigenen starken Franchisereihen im großen Stil für externe Systeme produziert wurde.<br />
Noch vor den Ankündigungen der Nintendo Switch hat Nintendo also bereits auch einen Fuß in den Sektor mobiler Games für Smartphones (also die momentan stärkste Konkurrenz) gesetzt.<br />
Diese Tür kann Nintendo natürlich jederzeit wieder schließen und weiterhin exklusiv für eigene Systeme produzieren (was wahrscheinlich der Fall sein wird, wenn die Nintendo NX den gewünschten Effekt und Erfolg mit sich bringt) -> aber alleine schon diese taktische Neupositionierung (entgegen aller alten Prinzipien des Konzerns), deutet darauf hin, dass Nintendo sich in jedem Fall bewusst ist, sich in der Zukunft ein wenig anders aufstellen zu müssen. Schon alleine deshalb scheint es noch wahrscheinlicher, dass hinter dem Gesamtkonzept der Nintendo Switch wesentlich mehr als nur die Veröffentlichung einer banalen neuen Spielkonsole stecken wird.</p>
<p><strong>**</strong>Extrem durchdachte Details: Alleine die Tatsache, dass die Nintendo Switch einen integrierten, ausklappbaren Standfuß besitzt, zeigt, wieviel Überlegung hinter jedem Detail dieser Konsole steckt ;D.<br />
Aber mal echt: Ein integrierter, ausklappbarer Standfuß &#8211;> Wie genial ist das? Warum hat da nicht schon längst ein Hersteller daran gedacht??! ;D</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/nintendo-nx-neue-spielekonsole-oder-komplett-neue-marktstrategie/">Nintendo Switch &#8211; neue Spielekonsole oder Aufbruch in neue Märkte?</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Print-to-Mobile: TournamentRoom</title>
		<link>https://mobile.fhstp.ac.at/allgemein/print-to-mobile-tournamentroom/</link>
		
		<dc:creator><![CDATA[Lucas Schöffer]]></dc:creator>
		<pubDate>Sun, 06 Nov 2016 14:58:38 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=6508</guid>

					<description><![CDATA[<p>Ein Bisschen spät bin ich mit der Vorstellung meines Print-to-mobile Projektes dran. Dabei ist das Projekt bereits (wie alle anderen) vorgestellt worden. Zudem wurden einige Dinge bereits verändert/weiterentwickelt und ein paar anfängliche Bugs sind mittlerweile behoben ;).  Eigentlich wurde sogar die Grundfunktionalität ein wenig verändert, wie in Abschnitt 3 (Erste Umsetzung von Tournament Room) unter <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/print-to-mobile-tournamentroom/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/print-to-mobile-tournamentroom/">Print-to-Mobile: TournamentRoom</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-6575" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/11/tournlogo.png" alt="tournlogo" width="260" height="55" /><br />
Ein Bisschen spät bin ich mit der Vorstellung meines Print-to-mobile Projektes dran. Dabei ist das Projekt bereits (wie alle anderen) vorgestellt worden. Zudem wurden einige Dinge bereits verändert/weiterentwickelt und ein paar anfängliche Bugs sind mittlerweile behoben ;).</p>
<p><span id="more-6508"></span> Eigentlich wurde sogar die Grundfunktionalität ein wenig verändert, wie in Abschnitt 3 (<strong>Erste Umsetzung von Tournament Room</strong>) unter Punkt c) nachzulesen ist.</p>
<p>Im Prinzip befindet sich das Projekt also schon in einer zweiten Phase <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
Zunächst aber zurück zum Anfang und einer kleinen Erklärung:</p>
<hr />
<p>&nbsp;</p>
<h2>1. Tournament Room &#8211; Grundsätzliche Idee</h2>
<p>Die einzige technische Anforderung innerhalb der Aufgabenstellung war, dass ein externer physischer Faktor etwas am mobile Phone beeinflusst/triggert. Dies ist im einfachsten (und herkömmlichen) Fall ein QR Code, der etwa eine URL bereitstellt, die letztendlich z.B. Informationen an den Client übermittelt.<br />
Etwas weiter gedacht kann der QR Code allerdings nicht nur statische Informationen bereitstellen.<br />
Er könnte etwa auch eine Anwendung aufrufen &#8211; und im Prinzip kann der QR Code zudem auch gleich Informationen für die aufzurufende Anwendung bereithalten.<br />
Zum Beispiel: Nachdem die Anwendung geöffnet ist, &#8220;führe Funktion XY aus&#8221; oder &#8220;zeige Bereich ABC an&#8221;.<br />
Mehrere unterschiedliche QR Codes könnten dann dazu genutzt werden, unterschiedliche Dinge innerhalb einer interaktiven Applikation zu bewirken/zu triggern. Durch dieses Prinzip können QR Codes dazu genutzt werden, klassische Interaktionen innerhalb einer Anwendung über die physische Außenwelt auszulösen (statt, wie üblich, über ein digitales Benutzerinterface) .</p>
<hr />
<p><img loading="lazy" decoding="async" class="size-medium wp-image-6584 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/11/code_part-570x400.png" alt="code_part" width="570" height="400" /></p>
<hr />
<p>Ein Vorteil durch diese Art der Interaktion ist es, dass eine Anwendung dadurch mit sehr simplen Mitteln einen Location-basierten Context bekommen kann, ohne dafür etwa externe digitale Signale (wie GPS, WLAN, Bluetooth/iBeacon, NFC, &#8230;.) verwenden zu müssen:<br />
Werden an unterschiedlichen Orten unterschiedliche QR Codes angebracht, die Informationen für die jeweilige App bereitstellen, so kann diese App auf den jeweiligen physischen Raum (oder gar auf einzelne Objekten innerhalb des Raums) &#8220;reagieren&#8221;, ohne dass sie auf irgendwelche technischen Mittel zur Ortserkennung zurückgreifen müsste.</p>
<p>Dieses Prinzip wird z.B. manchmal bei Ausstellungen verwendet. Verschiedene Ausstellungsobjekte sind dabei mit verschiedenen QR Codes &#8220;ausgestattet&#8221; und eine eigene Ausstellungsapp zeigt, je nach erkanntem QR Code, entsprechende Inhalte und Informationen an oder bietet weitere Interaktionsmöglichkeiten im Rahmen des aktuellen Kontexts.</p>
<p>Bei &#8220;TournamentRoom&#8221; wird dieses Prinzip verwendet, um einen physischen Raum in eine digitale &#8220;Spielarena&#8221; umwandeln zu können.<br />
Die QR Codes beinhalten dazu eine eindeutige Room-ID (z.B. &#8220;IMLab&#8221;). Zudem beinhalten unterschiedliche QR Codes innerhalb eines Raums (die also alle die selbe Room-ID besitzen) auch unterschiedliche &#8220;Kommandos&#8221; für die App. Dazu aber gleich mehr.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-6576" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/11/tourn1.png" alt="tourn1" width="279" height="324" /><img loading="lazy" decoding="async" class="size-full wp-image-6577 alignright" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/11/tourn2.png" alt="tourn2" width="280" height="310" /></p>
<p>&nbsp;</p>
<p><strong> </strong></p>
<h2>2. Das Prinzip hinter Tournament Room</h2>
<p>Die QR Codes im Raum, welche über die entsprechende Room-ID verfügen, verbinden zwei Spieler innerhalb eines Raums miteinander. Diese zwei Spieler müssen sich dabei weder in einem gemeinsamen WLAN befinden  (der Raum selbst muss nicht einmal über ein WLAN verfügen), noch müssen sie über andere Technologien eine direkte Verbindung miteinander aufbauen.<br />
Die App liest die Informationen aus dem QR Code (primär die Room-ID) und teilt einem Server mit, dass man sich eben in dem entsprechenden Raum befindet &#8211; z.B. also im IMLab.<br />
Die Spieler bleiben über diesen externen Server miteinander verbunden und können nun Daten über eben diesen miteinander austauschen. Dabei ist es völlig unerheblich, wie die einzelnen Spieler mit dem Internet verbunden sind (einzig DASS sie es sind, ist wichtig).<br />
Damit ein ständiger Datenaustausch in alle Richtungen möglich ist, läuft die Verbindung der Spieler mit dem Server über das WebSocket Protokoll.</p>
<p>Technologisch könnte man an dieser Stelle sogar noch einen Schritt weitergehen und den Server nur als &#8220;Mittelsmann&#8221; verwenden, der die zusammengehörigen Spieler in einem Raum &#8220;miteinander bekannt macht&#8221; (sprich, vereinfacht gesagt, deren IP Adressen untereinander weiterleitet). Wenn die App selbst nun über eine integrierte Serverkomponente verfügen würde, könnten die Geräte der Spieler eine Peer to Peer Verbindung zueinander aufbauen. WebRTC wäre dafür sehr gut geeignet.</p>
<hr />
<p><img loading="lazy" decoding="async" class="size-full wp-image-6578 aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/11/tourn3.png" alt="tourn3" width="278" height="279" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2016/11/tourn3.png 278w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/11/tourn3-150x150.png 150w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/11/tourn3-32x32.png 32w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/11/tourn3-50x50.png 50w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/11/tourn3-64x64.png 64w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/11/tourn3-96x96.png 96w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/11/tourn3-128x128.png 128w" sizes="auto, (max-width: 278px) 100vw, 278px" /></p>
<hr />
<p>Auf diesen Schritt verzichtet &#8220;Tournament Room&#8221; vorerst (wobei es gut denkbar ist, dass dies in einer späteren Version noch ergänzt wird). Die Verbindung zueinander bzw. der Datenaustausch untereinander erfolgt immer über den zentralen Server. Würde man nun unterschiedliche physische Räume zu &#8220;Tournament Rooms&#8221; machen &#8211; also etwa im Labor für interaktive Medien QR Codes mit der Room-ID &#8220;IMLab&#8221; anbringen und im Usability Labor QR Codes mit der Room-ID &#8220;UsabLAB&#8221; anbringen, so kommunizieren zwar alle Spieler immer über den selben Server, doch durch die Room-ID als Identifikator können immer nur Spieler zueinander finden/verbunden werden, die sich tatsächlich im selben physischen Raum befinden.</p>
<p>Aufbauend auf dieser Logik könnten nun unterschiedliche kleine und größere Multiplayer-Spiele implementiert werden. Wollen Spieler miteinander spielen, müssen Sie lediglich einen der QR Codes innerhalb eines Raums einscannen. Sie sind nicht gefordert, komplexe manuelle oder halbautomatische Verbindungsprozesse durchzuführen oder erst irgendwelche Daten untereinander auszutauschen, um sich gegenseitig zu finden.<br />
Und dennoch spielen immer nur jene Spieler gegeneinander, die sich im selben Raum befinden.<br />
Somit bietet &#8220;TournamentRoom&#8221;, als Gegensatz zu herkömmlichen Multiplayer Casual-Games bei denen man oft gegen irgendwelche unbekannten Gegner aus aller Welt antritt, eine &#8220;Face-to-Face Competition&#8221;. Obwohl digitale Spiele gespielt werden, hat man seinen Gegner immer im Blickfeld und erlebt seine Emotionen, seine Gestik und seine Mimik live mit.</p>
<p><img loading="lazy" decoding="async" class="wp-image-6598 size-full aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/11/tourn_game.png" alt="tourn_game" width="274" height="456" /></p>
<p>&nbsp;<br />
&nbsp;</p>
<h2>3. Erste Umsetzung von Tournament Room</h2>
<p>Als erste Demo dieses Konzepts wurde das klassische Spiel &#8220;Hangman&#8221; umgesetzt.<br />
Ein weiteres Minigame befindet sich derzeit in Entwicklung. Falls jemand die Muse hat, ein größeres Spiel (z.B. die digitale Abbildung eines klassischen Brettspiels) umzusetzen und mit der TournamentRoom Server Logik zu verknüpfen, so dass jedermann (durch einmaliges Ausdrucken eines QR Codes mit einer individuellen Room-ID) dieses Spiel für den klassischen Brettspiele Abend Zuhause verwenden kann &#8211; mit einem digitalem Spielbrett, das jeder Teilnehmer auf seinem eigenen Smartphone/Tablet anzeigen lassen kann &#8211;  so soll sich der-/diejenige einfach melden:<br />
dm161564[ AT ]fhstp.ac.at <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Umgesetzt wurde das Frontend als herkömmliche Webanwendung. Natürlich ließe sich die TournamentRoom Logik auch von anderen Frontend Technologien nutzen, sofern diese</p>
<ul>
<li>QR Codes lesen können und</li>
<li>WebSocket Verbindungen ermöglichen</li>
</ul>
<p>Als additional Feature wurde ein QR Code Scanner IN diese Webanwendung integriert. Dazu wurde die Funktion &#8220;getUserMedia&#8221; von der WebRTC API verwendet, um im Browser auf das Videodevice eines Geräts zugreifen zu können.<br />
Mittels WebWorker und der Library &#8220;JSQRCode&#8221; (https://github.com/LazarSoft/jsqrcode) werden einzelne Frames des, mittels getUserMedia() erfassten Videostreams, auf das Vorkommen eines QR Codes überprüft. Sollte einer gefunden werden, wird dieser decodiert und ausgewertet.</p>
<hr />
<p><img loading="lazy" decoding="async" class="wp-image-6583 size-full aligncenter" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/11/1-1-e1478878842704.png" alt="1" width="200" height="327" /></p>
<hr />
<p>Dabei enthält der QR Code drei wichtige Informationen:<br /> &nbsp;</p>
<ul>
<li>a) Die URL zur WebApp. Sollte man allerdings tatsächlich den inApp QR Scanner verwenden, so ist dies eine überflüssige Information. Allerdings kann natürlich auch ein externer QR Code Scanner verwendet werden (auf iOS muss dies sogar passieren, da iOS WebRTC noch immer nicht supported und der webbasierte QR Code Scanner daher nicht funktioniert).<br />
Aus diesem Grund befindet sich die URL im QR Code.<br /> &nbsp;</li>
<li>b) Die Room-ID. Diese Information ist in jedem Fall wichtig: Sie ist (wie oben bereits ausführlich beschrieben) der Schlüssel zur Verbindung von Spielern untereinander.<br /> &nbsp;</li>
<li>c) Das Kommando zur Spielinitialisierung. Zunächst war Torunament Room so konzipiert und umgesetzt, dass dieses Kommando eine eindeutige PlayerID war (player1, player2). Es gab also zwei unterschiedliche QR Codes pro Tournament Room: Einen mit der RoomID und dem Kommando player1 und einen mit der RoomID und dem Kommando player2.<br />
Dieses Prinzip wurde nach dem ersten &#8220;Livetest&#8221; von Tournament Room abgeändert, da es zwei entscheidende Nachteile mit sich brachte.<br />
Zum einen hat diese Herangehensweise nur das Umsetzen von Spielen mit genau 2 Mitspielern erlaubt (wohingegen die Serverkomponente grundsätzlich ohne derartige Beschränkung entwickelt wurde).<br />
Zum anderen erlaubte dieses Vorgehen, dass jeweils immer nur 2 Personen in einem Tournament Room ein bestimmtes Spiel verwenden konnten.<br />
Hätten also zwei Spieler in einem Raum Hangmang gespielt, hätte sonst niemand mehr die Möglichkeit gehabt, dieses Spiel zu im selben Raum zu spielen (bevor die ersten beiden Spieler ihre Session beendet hätten).<br />
In der neuen Version von Tournament Room sind die Kommandos &#8220;player1&#8221; und &#8220;player2&#8221; den Kommandos &#8220;new&#8221; und &#8220;join&#8221; gewichen.<br /> &nbsp;</li>
</ul>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-6585 size-full" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/11/Game1.png" alt="game1" width="301" height="469" /><img loading="lazy" decoding="async" class="wp-image-6586 size-full alignright" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/11/Game2.png" alt="game2" width="309" height="470" /></p>
<p> &nbsp;<br /> &nbsp;</p>
<h2>4. Spielesessions in Tournament Room</h2>
<p>Öffnet ein Spieler in einem Tournament Room eine neue Spielesession (in dem er den &#8220;New&#8221; QR Codes innerhalb des jeweiligen Raums scannt), wird am Server ein &#8220;Subroom&#8221; zum jeweiligen TournamentRoom erzeugt.<br />
Davon bekommt der Spieler nichts mit.<br />
Ein weiterer Spieler kann nun mittels &#8220;Join&#8221; diesen Subroom joinen (damit sind diese Spieler miteinander verbunden und, sofern das jeweilige Spiel &#8211; wie im Beispiel Hangman &#8211; zwei Spieler benötigt, so wird dieses gestartet).<br />
Scannen mehrere Leute hintereinander den &#8220;new&#8221; Code (es werden also mehrere Subrooms generiert), so bezieht sich join immer auf den neuesten, noch freien Subroom.</p>
<p>Also:</p>
<ul>
<li>Spieler A eröffnet eine neue Spielesession (Subroom).</li>
<li>Spieler B eröffnet ebenfalls eine neue Spielesession.</li>
<li>Spieler C tut dasselbe.</li>
<li>Spieler D scannt nun &#8220;Join&#8221; und landet damit in der Spielesession von Spieler C.</li>
</ul>
<p>Ist das Spiel dieser Session für zwei Spieler gedacht, startet es und Spieler C und Spieler D spielen miteinander.<br />
Scannt nun Spieler E ebenfalls &#8220;Join&#8221;, so landet er in der Session von Spieler B.</p>
<hr />
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-6587" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/11/male.png" alt="male" width="115" height="200" /> <img loading="lazy" decoding="async" class="alignnone wp-image-6594 size-full" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/11/qrcode-e1478882192219.png" alt="qrcode" width="200" height="200" /><img loading="lazy" decoding="async" class="wp-image-6595 alignright" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/11/qrcode-1-e1478882208335.png" alt="qrcode-1" width="200" height="200" /><img loading="lazy" decoding="async" class="size-full wp-image-6588 alignright" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/11/female.png" alt="female" width="116" height="200" /></p>
<hr />
<p>Durch dieses Vorgehen (&#8220;join most recent session&#8221;) wird sichergestellt, dass zwei Spieler die sich bewusst dafür entscheiden, gegeneinander anzutreten und unmittelbar hintereinander den new und den join Code des jeweiligen Raums scannen, auch wirklich miteinander verbunden werden.<br />
Jedes andere Vorgehen (&#8220;join random session&#8221; oder &#8220;join oldest open session&#8221;) würde dies nicht sicherstellen können.</p>
<p>Wer nun einen eigenen TournamentRoom generieren will, der muss sich also lediglich über ein QRCode Generation Service einen QRCode mit einer individuellen RoomID generieren. z.B. hier:<br />
http://goqr.me/de/</p>
<p>Die beiden QRCodes für new und join müssen lediglich folgende URL Schemen bereitstellen:</p>
<ul>
<li>New: http://metamoon.de/TournamentRoom/?pp&amp;IMLab&amp;new</li>
<li>Join: http://metamoon.de/TournamentRoom/?pp&amp;IMLab&amp;join</li>
</ul>
<p>Wobei &#8220;IMLab&#8221; jeweils durch die eigene RoomID zu ersetzen ist.<br />
Das Generieren und Ausdrucken dieser Codes genügt, um Hangman (und alle eventuell künftig folgenden Spiele) im eigenen TournamentRoom spielen zu können.</p>
<p>Jeder der spielen will, muss dann lediglich den &#8220;New&#8221; bzw. &#8220;Join&#8221; Code im jeweiligen Raum scannen und schon befindet er/sie sich in einer Spielsession innerhalb des entsprechenden <strong>Tournament Room</strong>s.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/print-to-mobile-tournamentroom/">Print-to-Mobile: TournamentRoom</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
