Die COVID-19-Pandemie zwang Lehrkräfte, ihre Unterrichtsmethoden zu ändern. Da Massenlockdowns weltweit die Norm waren, gewannen Videokonferenzplattformen wie Zoom, BigBlueButton und Microsoft Teams plötzlich an Beliebtheit. Dies veränderte die Unterrichtsatmosphäre für viele Lehrkräfte und Studierende schlagartig und brachte eine Vielzahl neuer Herausforderungen mit sich.
Diejenigen, die Online-Kurse und -Tutorien unterrichten müssen, können bestätigen, dass die Moderatoren häufig ins Leere sprechen. Dies liegt einerseits an Hardwarebeschränkungen, andererseits auch an einem gewissen Unwillen, Kameras oder Mikrofone einzuschalten. Dies wird durch die sogenannte „Zoom fatigue“ (Zoom-Müdigkeit) noch weiter verstärkt.1 Einem Artikel der Stanford-Universität zufolge gibt es vier Hauptgründe, warum Menschen eine Zoom-Müdigkeit bekommen. Diese sind:
Ein übermäßiger enger Augenkontakt ist sehr intensiv. .
Sich bei Videochats ständig in Echtzeit zu sehen ist ermüdend. .
Videochats schränken unsere gewohnte Beweglichkeit drastisch ein. .
Die kognitive Belastung ist bei Videochats viel höher.2
Ein Forschungsbericht von René Riedl aus dem Jahr 2021 stimmt mit diesen Punkten überein und fügt noch einige weitere hinzu, wie z. B. die Versuchung, während Videokonferenzen Multitasking zu betreiben, was an sich schon Stress und Müdigkeit verursachen kann.3
Eine mögliche Lösung für diese Probleme könnte die Nutzung unkonventionellerer Plattformen sein, die Gamificationmit Lernen verbinden. Aus Gründen der Vereinfachung wird sich dieser Artikel auf Gather konzentrieren.
Um Verwechslungen zwischen dem Unternehmen und dem Produkt zu vermeiden, wird die Plattform in diesem Artikel als Gather.Town bezeichnet.
Was ist Gather.Town?
Gather.Town ist eine browserbasierte Webkonferenzsoftware mit Pfiff. Im Gegensatz zu traditionellerer Webkonferenzsoftware wie Zoom oder BigBlueButton ermöglicht Gather.Town dem Veranstalter einen virtuellen Raum zu schaffen, in dem sich die Gäste mithilfe kleiner personalisierter Avatare bewegen können.4 Gather.Town ist zwar nicht die einzige Konferenzsoftware dieser Art (vgl.Wonder.me), aber der Charme von Gather.Town liegt in der Pixel-Videospielgrafik, die an ältere zweidimensionale Spiele der 80er und 90er Jahre erinnert.
Das interaktive Bild unten zeigt den Gather.Town-Raum, den wir für diesen Artikel erstellt haben. Sie können auf die Info-Symbole klicken, um mehr über die verschiedenen Funktionen zu erfahren.
Ihre Attraktivität
Auch der Kostenfaktor spielt eine große Rolle bei der Attraktivität von Gather.Town, da das Erstellen eines Raums für bis zu 25 Teilnehmende kostenlos ist. Der virtuelle Raum kann in verschiedene Räume aufgeteilt und ganz an die individuellen Bedürfnisse des Veranstalters angepasst werden, z. B. ein Breakout-Bereich, Vortragssaal oder ein Raum für Gespräche und Entspannung für Teilnehmende, die sich von den Sehenswürdigkeiten und Geräuschen der Veranstaltung erholen wollen. Von den Wänden über die Böden bis hin zu den Gegenständen und Texten in den Räumen kann alles individuell gestaltet werden. Bei größeren Konferenzen können diese Räume miteinander verbunden werden.5
Einem Raum beizutreten ist ebenfalls sehr einfach. Gather.Town-Mitglieder und Gäste können auf verschiedenen Arten in den Raum eingeladen werden:
durch Eingabe der URL für den Bereich. .
durch den Veranstalter, der einen eindeutigen Link oder einen Link zu einem bestimmten Tagungsort erstellt. .
über die Gather.Town-Plattform selbst.
. Optionale Passwörter stellen außerdem sicher, dass nur die eingeladenen Personen die virtuellen Räume betreten können. Dies geschieht alles über den Browser, sodass weder der Veranstaltende noch die Teilnehmenden zusätzliche Software herunterladen müssen.6 Die meisten modernen Computer sollten in der Lage sein, Gather.Town ohne Probleme auszuführen. Bestimmte Einstellungen können zudem ein- und ausgeschaltet werden, um die Leistung zu verbessern. Eine Liste der Systemanforderungen steht auf der Entwicklerwebsite zur Verfügung.
Ihre Highlights
Dank Funktionen wie Spotlighting ist Gather.Town ideal für Präsentationen. Wenn der*die Moderator*in auf einer Spotlight-Kachel steht oder manuell angestrahlt wird, kann jede*r im Raum ihn*sie hören und sehen. Spotlight-Kacheln ermöglichen es einer oder mehreren Personen, ihre Audio-, Video- und/oder Bildschirminhalte für alle im Raum zu übertragen. Personen, die im Spotlight stehen, werden an den oberen Rand des Videokarussells gepinnt. Wenn der Avatar einer Person nicht auf einer Spotlight-Kachel steht, richtet sich die Audio-/Videoanzeige nach der Nähe zu anderen Teilnehmenden oder danach, ob sie sich gemeinsam in einem privaten Bereich befinden.7
Das folgende Video gibt einen kleinen Einblick in die Welt von Gather.Town.
Wie kann Gather.Town zur Verbesserung des Lernumfelds beitragen?
Durch die Tatsache, dass sowohl Lehrende als auch Lernende seit der Coronapandemie viel mehr auf Bildschirme schauen und auch viel mehr in Videokonferenztools sitzen, kommt natürlich auch die Frage auf, wie man das Lernumfeld verbessern kann. Gather.Town bietet durch die Tatsache, dass man sich wie im realen Leben bewegen kann und nicht mit jedem kommunizieren muss, eine informelle Möglichkeit Kontakte zu knüpfen (zum Beispiel die grünen Wiesen Potsdams bei der 8. Jahrestagung des Verbands „Digital Humanities im deutschsprachigen Raum“, ausgerichtet von der Universität Potsdam und der Fachhochschule Potsdam).8 Damit bietet sich eine gute Möglichkeit barrierefrei mit anderen Menschen in Kontakt zu treten.
Apropos Barrierefreiheit: laut der offiziellen Website (Online-Leitfaden) von Gather Presence, Inc. arbeiten sie aktiv an der Verbesserung der Gather.Town-Erfahrung für Menschen, die zusätzliche Unterstützung bei der Navigation und/oder dem Verständnis durch Dolmetschende benötigen.9
Auch durch die ganzen interaktiven Pixelbilder – wie Mikrofon, Tischgruppen und Flipcharts – wird eine Spielatmosphäre geschaffen und jede*r kann selbst entscheiden, wann er*sie was lernen möchte und mit wem er*sie dies tun will. Dadurch, dass sich die Kameras und Mikrofone erst bei Gruppenbildung einschalten, kann man auch den in der Einleitung genannten Punkten sehr gut entgegenwirken, weil man immer noch selber entscheiden kann, ob man noch fit genug für eine weitere Videokonferenz ist oder ob man lieber erst mal eine Pause einlegen will. Auch bewirkt Gather.Town, dass man zwischendurch auch einmal aufstehen kann ohne die Kamera ausschalten oder um eine Pause bitten zu müssen. Die farbenfrohe und reichhaltige Welt bietet darüber hinaus gerade genug Anreiz, damit die Teilnehmenden weniger geneigt sind, während der Vorträge bzw. Vorlesungen zu einer anderen Website zu wechseln oder Multitasking zu betreiben.
Erfahrungen aus Bildungseinrichtungen
Gather.Town ist noch nicht lange auf dem Markt, sodass die Erfahrungen aus den Bildungseinrichtungen noch nicht sehr umfangreich sind, aber es soll trotzdem versucht werden, einen kleinen Einblick in die Erfahrungen zu geben.
Staff Weeks sind in universitären Einrichtungen mittlerweile sehr beliebt, um den Austausch auf (inter)nationaler Ebene zu ermöglichen. Die SUB Göttingen hat 2021 eine virtuelle Staff Week veranstaltet. Sie wollten aber auch versuchen, das soziale Leben, welches bei solchen Veranstaltungen immer automatisch außerhalb der Vorträge entsteht, auch in den virtuellen Raum zu übertragen. Zoom und BigBlueButton haben sich nicht dafür angeboten, sodass sie einen virtuellen Konferenzraum mit Gruppentischen über Gather.Town eingerichtet haben. Sowohl die Teilnehmenden als auch die Veranstaltenden zogen ein (sehr) positives Fazit. Die SUB Göttingen gibt auch anderen Einrichtungen über das Magazin O-Bib wertvolle Tipps für eine Online-Staff Week.10
Ein Tweet über die Open Access Staff Week 2021
Gather.Town wird auch Bildungseinrichtungen vorgestellt und auch diese sind begeistert.11 Besonders interessant ist, dass trotz der Kürze der Zeit schon einige Universitäten Gather.Town nutzen und Schulungen/Anleitungen anbieten. Hier werden exemplarisch drei genannt: die Uni Konstanz, die Uni Weimar und die Uni Mainz. Natürlich wird Gather.Town auch außerhalb Deutschlands genutzt, beispielsweise von der Uni Bern.
Internationale Bildungseinrichtungen
Mit Blick auf die internationale Universitätslandschaft wurde zwischen 2020 und 2021 eine Fallstudie an der Queen’s University Belfast in Nordirland durchgeführt, um die Wirksamkeit von Gather.Town als Plattform für die Vermittlung praktischer Fähigkeiten zu ermitteln. Es zeigte sich, dass die teilnehmenden Studierenden Gather.Town gegenüber alternativen Online-Systemen für ihre Lehrveranstaltungen bevorzugten. Sowohl die Lehrkräfte als auch die Studierenden gaben an, dass die Hauptvorteile von Gather.Town in der Möglichkeit liegen, maßgeschneidertes und selbstbestimmtes Lernen zu unterstützen. Beide Gruppen betonten auch, dass ein wichtiges Element der Plattform darin besteht, dass sie die Möglichkeit bietet, mit anderen zu diskutieren und das Engagement der Teilnehmenden zu fördern.12 Eine andere Fallstudie, die am Karlsruher Institut für Technologie durchgeführt wurde, zeigt, dass Aufgaben mit hoher Interaktivität in ihrem Fall in Gather.Town besser funktionierten als in einer Präsenzumgebung.13
Fazit
Dieser Fachartikel soll nur einen kleinen Einblick in die Möglichkeiten von Gather.Town bieten. Insgesamt lässt sich sagen, dass Gather.Town eine „schöne Spielwiese“ ist, um der Digitalisierung etwas Spielerisches und etwas anderes als die typischen Videokonferenztools zu ermöglichen und Abwechslung hineinzubringen. Auch kann man in Gather.Town die Realität besser abbilden als in anderen Tools. Natürlich muss diese Art von Videokonferenztools noch bekannter werden. Dann dürften sie aber gute Alternativen zu den bisher bekannten sein.
Wenn Sie Gather.Town selbst testen möchten, können Sie Ihren eigenen virtuellen Raum kostenlos erstellen oder den für diesen Fachbeitrag erstellten Raum testen. Viel Spaß!
Jetzt ist es an der Zeit, Ihr Wissen zu testen. Sie haben den Artikel gelesen, das Video gesehen und den virtuellen Raum getestet. Machen Sie unseren Test und lassen Sie uns wissen, wie Sie abgeschnitten haben!#HS Hannover
Fußnoten
1 vgl. Riedl 2022, S. 155-157 2 vgl. zu diesem Abschnitt Ramachandran 2021 3 vgl. Riedl 2022, S. 163-164 4 vgl. Gather Presence, Inc. 2022b 5 vgl. Gather Presence, Inc. 2022a 6 vlg. zu diesem Abschnitt Eisenberg 2021 und Gather Presence, Inc. 2022c 7 vgl. Gather Presence, Inc. 2022e 8 vgl. Mischke 2022 S. 216 9 vgl. Gather Presence, Inc. 2022d 10 vgl. zu diesem Abschnitt Schneider 2021 11 vgl. Mittelhessen 2022 12 vgl. Williams u. McClure 2021, S. 1 und 8 13 vgl. Standl u. a. 2021, S. 87-88
Riedl, René (2022): On the stress potential of videoconferencing: definition and root causes of Zoom fatigue. In: Electronic markets, Jg. 32, H. 1, S. 153–177. Online unter https://doi.org/10.1007/s12525-021-00501-3
Schneider, Hannah; Kirchner, Andreas; Heber, Maximilian (2021): Netzwerken geht auch Online. In: O-Bib Jg. 8, H.2. Online unter: https://www.o-bib.de/bib/article/view/5709 [Abruf am 20.Oktober 2022]
Standl, Bernhard; Kühn, Thomas; Schlomske-Bodenstein, Nadine (2021): Student-Collaboration in Online Computer Science Courses. An Explorative Case Study. In: International Journal of Engineering Pedagogy, Jg. 11, H. 5, S. 87–104. Online unter https://online-journals.org/index.php/i-jep/article/view/22413
Williams, Paul N.; McClure, Colin Derek (2021): Gather.town: An opportunity for self-paced learning in a synchronous, distance-learning environment. In: Compass: Journal of Learning and Teaching, Jg. 14, H. 2. Online unter https://doi.org/10.21100/compass.v14i2.1232
Did you ever wonder how fictional animated movies and arts are produced?
With constant development of digital technologies, we are more and more mesmerized by their capabilities. Pictures and paintings are not no longer created only by colors and brushes anymore. Now they are being created by lines of code, design software, and touch panels. In this blog, we are going to walk through several products of virtual reality and 3D printing, which are expanding opportunities for artists and expanding their audience. We will also discuss the impact of digital transformation on the marketing world and potential implications for the future.
Contents
What is digital transformation ?
The wide variety of digital arts
Digital technology is a new powerful marketing tool
The term digital transformation is known as the integration of digital technology across all functions of an organization, and it significantly alters how you do business and provide value to consumers. Digital transformation in art refers to the use of technology to change the way art is created, shared and experienced. This can include the use of digital tools such as computer software and mobile apps to create digital art, online platforms to share and sell art, and virtual and augmented reality experiences to view art in new ways. The goal of digital transformation in art is to make art more accessible, interactive, and engaging for people, and to open up new possibilities for artists to create and share their work.
2. The wide variety of digital arts
When it comes to exhibitions, museums, ballet, and opera, there are also new art experiences that are influenced by digital art. It is a promising technique that has been utilized to create these experiences, virtual reality. For instance is the Van Gogh museum in Atelier des Lumières. Situated in the romantic city of Paris, visitors get a chance to experience a different world of arts, where they are surrounded by a Van Gogh painting. With the help of enormous videos and light projections, art lovers can walk through the picture and other major works by varying artists here.
Taking the digital art to another level is the movie „Avatar 2“ which was lately released. It is considered one of the most complex and ambitious films ever made with a lot of technological advancements and innovations that are now widely used in the film industry. The movie Avatar was made using a combination of cutting-edge technology and traditional filmmaking techniques.
Techniques to bring the film’s alien world of Pandora to life, according to The film’s director, James Cameron
Performance Capture: Actors‘ movements and facial expressions were captured using motion capture technology and then translated onto computer-generated characters.
Virtual Cameras: Cameron used virtual cameras to pre-visualize the film’s scenes and plan out the camera work before filming.
Computer-Generated Imagery (CGI): The film’s alien creatures, landscapes, and environments were created using CGI and rendered using powerful computers.
Motion-Control Photography: Cameron used motion-control photography to capture the live-action elements of the film, such as the human characters.
3D Filming: The film was shot in 3D, which added depth and immersion to the film’s visuals.
Special Effects: The film’s many special effects, including explosions and flying creatures, were created using a combination of practical effects and CGI.
Moving on to the game industry, this field is also known for utilizing the advanced technologies to generate games. For instance, „Horizon Forbidden West“ is a highly-anticipated video game developed by Guerrilla Games for the PlayStation 5. The game is made using a combination of cutting-edge technology and extensive game development processes. The development process likely involves multiple stages, including:
KENZO Paris is a French luxury fashion house established in 1970 by Japanese designer Kenzo Takada. The company is utilizing 3D visualization to improve the presentation of its products and online experiences to customers. This technology offers a detailed and interactive portrayal of the products. It also includes all the important elements required to effectively advertise them, such as lighting, textures, angles, and color shades.
The use of 3D visualization is widespread across various industries, including e-commerce, media and advertising, 3D animation and printing, design, and architecture. This is due to the belief that 3D visualization is more effective for attracting and engaging customers. It’s because the human brain processes visuals much faster than text and 80% of the information we process is visual.
Marketers believe that using this technology in their marketing strategies is the key to success, as it allows customers to customize the product according to their preferences and lifestyle. It is estimated that 25-30% of consumers have a high level of interest in purchasing custom-made products.
Why can 3D visualization do?
3D visualization enables customers to preview items from a 360° angle, interact with it, and make changes if necessary. Customers can now choose their preferred design, color, material, accessories, and even personalize the product with engraving or messages. With just a few clicks, they can order and pay for their customized product.
Another benefit of 3D visualization is its ability to streamline the purchasing process. Once the customer is satisfied, they can order and pay in just a few clicks. This type of technology is particularly useful in the fashion industry, where customers often struggle with sizing and fit. By offering a detailed and interactive preview of the product, 3D visualization technology helps customers to make informed purchasing decisions and reduces the risk of returns and dissatisfaction.
The marketing efforts of KENZO Paris is a smart move that will likely result in increased sales and customer engagement. As consumers continue to demand more personalized and interactive shopping experiences, companies that invest in this type of technology will have a competitive advantage. KENZO Paris is setting the standard for innovative and effective marketing in the fashion industry.
The latest 3D visualization trend for E-Commerce platform
Interactive Product Demonstrations: 3D visualization is allowing e-commerce companies to provide customers with interactive product demonstrations, allowing them to explore products from every angle, zoom in to see details and even virtually try on items like clothing or jewelry.
Virtual Reality (VR) and Augmented Reality (AR) experiences: These technologies allow customers to experience products in a more immersive way, through either a fully-realized virtual environment or by overlaying digital information on the physical world.
Customizable Products: With 3D visualization, customers can now co-design products that better fit their needs and preferences, choosing designs, colors, materials, accessories, and personalizing products with engravings or messages.
360° Product View: 3D visualization provides customers with a 360° view of products, enabling them to see the product from all angles and helping to build trust and confidence in their purchasing decision.
4. Conclusion
In conclusion, digital transformation has had a significant impact on the art world. The advent of digital tools and technology has opened up new possibilities for artists, allowing them to create and share their work in ways that were previously impossible. Digital art has also enabled greater access to art education and resources, making it more inclusive and democratizing the art world.
With the help of digital tools, artists can reach a wider audience and create art that is interactive, immersive and dynamic. Digital art also has the potential to extend the shelf-life of artworks, making it more accessible to future generations. However, it’s important to note that digital transformation also has its downsides, such as dependence on technology, limited lifespan and limited originality. As digital art continues to grow in popularity, it will be important to strike a balance between utilizing the benefits of digital technology while also preserving the tradition, essence and value of art. Artists and art institutions must adapt to digital transformation by embracing the opportunities it provides, while also being mindful of its limitations and potential challenges.
About the author:
Linh Nguyen studies Informationsmanagement in her third semester with the main focus on marketing, media and communication. She is also a template developer for the KKH insurance company with the head office in Hannover, Germany.
Shion Kimu is in his third semester majoring in the Informationsmanagement. His main focus is Web Science and IT. Currently he is working as a web developer for Activelaw Company in Hannover, Germany.
Literature
apviz (2021): How 3D marketing can help raise your conversion rates. Available on https://apviz.io/blog/3d-marketing/ [Accessed on 01.01.2023]
Explore France (2019): Van Gogh im Atelier des Lumières in Paris. Available on . [Accessed on 25.12.2022]
In einem TikTok-Video berichtet eine etwa 30-jährige Frau von einem tragischen Vorfall.
Ein 16 Jahre alter Junge namens Daniel engagierte sich ehrenamtlich in einer Flüchtlingsunterkunft. Als Daniel jedoch in Gegenwart der ukrainischen Flüchtlinge russisch sprach, wurden einige von ihnen aggressiv und schlugen den Jungen zusammen. Dieser starb an seinen Verletzungen. Die Täter wurden straffrei zurück in ihre Unterkunft geschickt.
Die Frau berichtete in Ihrem Video den Vorfall sehr detailliert und emotional. Sie brach in Tränen aus und verstand nicht, wie so etwas passieren konnte.
Was geht in Ihnen vor, wenn Sie das lesen? Verwirrung? Wut? Mitleid? Es ist ganz normal, dass man einem so aufrichtigen Statement zunächst erst einmal Glauben schenkt und nicht weiter hinterfragt.
Die Rede ist von dem Mord in Euskirchen, der nie stattgefunden hat.
Die Bundespolizei NRW bezieht zeitnah Stellung zum geschilderten Vorfall.
Zahlreiche Nachrichtenagenturen berichten von dieser Falschmeldung, wie z.B. die Frankfurter Allgemeine[1], t-online[2] und der ZDF[3].
Zusammenhang
Doch was hat der Gefühlsausbruch der TikTokerin mit KI-Bots zu tun?
Die Dame, die die o.g. Falschmeldung verbreitet hat, erklärte, sie habe diese Information über mehrere Ecken erfahren und hätte selbst fest geglaubt, dass es wahr sei. Sie hat also in erster Linie darauf vertraut, dass eine Meldung, die Freunde von ihr teilten, wahr sein müsste und deshalb nicht auf ihren Wahrheitsgehalt überprüft werden müsse.
Ferngesteuerte Demonstrationen
Am 21. Mai 2016 fand eine größere Demonstration gegen die Islamisierung in Texas statt. Diese wurde von der Facebook-Gruppe “Heart of Texas” organisiert. Dem entgegen organisierte die Gruppe “United Muslims of America“ einen Gegenprotest[4].
Durch diese Positionierung wurde das politische Augenmerk auf das Thema Muslime gelenkt und andere Themen verschwanden aus dem Fokus.
Aber ausgelöst und organisiert wurden die Demos pro und kontra Muslime von Menschen, bzw. Rechnern, die in Petersburg stehen. Es wurde keiner der Organisatoren vor Ort gesichtet, weil alles inszeniert war.
Es versammelten sich echte Menschen, weil für sie relevante Themen angesprochen, verschärft und anschließend durch Social-Bots kommentiert, geteilt und geliked werden. So werden sie gesehen und je mehr Interaktion stattfindet, desto offizieller kommt die Information beim Konsumenten an.
Hasskommentare sind ebenfalls ein fester Bestandteil von Social-Bots. Oft sind diese sehr polarisiert, wenig kreativ und schnell verfasst. Ihr Ziel ist es, Vertreter einer ungeteilten Meinung zum Schweigen zu bringen. Selbst vor Morddrohungen wird nicht zurückgeschreckt.
Einen Blick in die Vergangeneit
Es ist in Ordnung, anderer Meinung zu sein. Aber warum gibt sich jemand die Mühe, mehrere Menschen zu beschäftigen, damit sie ausgewählte Nachrichten teilen, oder gegen bestimmte Personen anzugehen?
Häufig wird bei den organisierten Troll-Aktionen auch von Propaganda gesprochen.[6]
So ähnlich wurde bereits der zweite Weltkrieg eingeläutet. Durch Falschmeldungen hatte man glauben lassen, dass Polen Deutschland angegriffen habe und dass der erste Angriff lediglich eine Gegenmaßnahme sei .[7] In der damaligen Zeit konnte man noch nicht so einfach wie heute durch das Internet überprüfen, wie hoch der Wahrheitsgehalt einer Nachricht sein kann. Jedoch ist es heute umso leichter eine Falschmeldung zu verbreiten und jeder Rechercheaufwand ist eben mit einem Aufwand verbunden.
Doch das Ziel solcher Aktionen wird mit einem Vergleich klar. Der Hintergrund von Fake-News ist die Lenkung von politischen Positionen.
Bot-Produktion
Nun wurden in diesem Artikel oft die “Social-Bots” genannt. Aber woher kommen diese Social Bots und wie viel Mensch und wie viel KI steckt dahinter?
Zunächst werden Bots von einem Menschen erstellt und mit verschiedenen Accounts versorgt. Ein Algorithmus mit typischen wenn-dann-Abfolgen lässt diese dann auf Sozialen Netzwerken interagieren. Bestimmte Wörter triggern diese Bots zu vorgeschrieben Ineratkionen, wie einem Kommentar, einem Like oder das Teilen bestimmter Beiträge.[8]
Nicht alle werden dafür genutzt, Meinungen zu manipulieren. Viel häufiger werden Social-Bots zu Marketing-Zwecken genutzt. Die einfachste Form ist, einen Anbieter entsprechender Bots dafür zu bezahlen, um eine erste Followerschaft zusammenzustellen. Das heißt, dass mehrere Hundert Fake-Accounts einem Unternehmen folgen und mit Beiträgen interagieren. Diese Interaktion ist zwar nicht komplex, reicht aber, um eine gewisse Nachfrage und Bekanntheit vorzugaukeln und den Algorithmus der Plattform zu triggern, wodurch die eigenen Beiträge öfter von verschiedenen Menschen gesehen werden.
Wie erkenne ich einen Bot?
Ein Erfolgsrezept existiert leider nicht.
Aber obwohl man es niemals wirklich wissen kann, gibt es ein paar Anhaltspunkte, an denen man sich orientieren kann. Wie allgemein ist die Account-Beschreibung gehalten und wie neu ist der betreffende Account? Bei prominenten Persönlichkeiten gibt es Merkmale zur Verifizierung, wie es den blauen Haken bis vor kurzem bei Twitter gab. Wenn ein Account neu ist und sehr viel Zeit nur mit dem Verfassen von Kommentaren und dem Teilen von Beiträgen verbringt, ist es ein weiteres Indiz, dass ein Social-Bot dahinterstecken könnte. Manchmal ist ein Antworttext in sekundenschnelle Geschrieben, obwohl man so aktiv ist und Lesen und Verfassen i.d.R. mehr Zeit in Anspruch nehmen müsste. Zudem scheitert ein Bot, wenn eine Unterhaltung komplexer wird, da die geschriebenen Programme nicht jede Eventualität, die ein Gespräch einschlagen kann, berücksichtigen.[9]
Progressive Web Apps (PWA) sind Websites, die Eigenschaften nativer Apps mit sich bringen. Richtig eingesetzt bringt die immer noch recht neue Technologie einige Vorteile mit sich wie schnelle Ladezeiten, Offline-Funktionalität und eine bei Bedarf einfache Installation. Außerdem werden PWA wie „normale“ Websites über eine URL aufgerufen. Da Inhalte so für Suchmaschinen zugänglich sind, macht sie diese Eigenschaft auch interessant für den Einsatz von Suchmaschinenoptimierung (SEO). In diesem Artikel geht es deshalb darum, wie Progressive Web Apps zu einem guten Suchmaschinenranking beitragen können.
Progressive Web App – was ist das überhaupt?
Zunächst soll die Frage geklärt werden, um was es sich bei Progressive Web Apps überhaupt genau handelt.
PWA verknüpfen die Eigenschaften von Websites mit den Merkmalen nativer Apps, sie sind quasi Website und App in einem. So wie eine native App können PWA Funktionen des Gerätes wie etwa Kamera, Mikrofon oder GPS-Ortung nutzen.1 Jedoch lassen sie sich über eine URL im Browser aufrufen, womit sie grundsätzlich unabhängig vom Betriebssystem sind und keine Installation über einen App-Store voraussetzen.2 Gleichzeitig lassen sie sich über eine Anzeige bei Bedarf auch wie eine gewöhnliche App auf Handy, Tablet oder Desktop installieren:
Installation der ZDF-Mediathek im Edge-Browser. Mobil ist der Button ebenfalls verfügbar.
Da im Hintergrund aber immer noch der Browser zum Einsatz kommt, müssen sich Benutzer nicht um Installation von Updates kümmern. Insofern unterscheiden sich PWA auch vom bereits existierenden Prinzip der Hybrid-Apps und Web-Apps: Anders als bei Hybrid-Apps ist keine Installation notwendig. Web-Apps laufen hingegen zwar ebenfalls browserbasiert, im Unterschied zu ihnen passen sich PWA aber dem Nutzungsrahmen an. Konkret bedeutet dies, dass Benutzer, deren Geräte und/oder Browser nicht mit allen Funktionen kompatibel sind, die App dennoch nutzen können.2
Technisch gesehen basieren PWA wie auch Websites auf den Sprachen HTML, CSS und JavaScript. Eine Besonderheit ist die Integration sogenannter Service Worker. Diese werden im Hintergrund des Browsers ausgeführt und bei erstmaliger Anwendung mit dem dazugehörigen Cache im Browser gespeichert. Durch das Aufrufen von Inhalten aus Cache ermöglichen die Service Worker schnelle Ladezeiten oder auch die Nutzung ganz ohne Internetverbindung.1
Weitere Informationen zu technischen Einzelheiten und der Erstellung von PWA bietet eine Playlist der Google Chrome Developers. Google fördert die Entwicklung von PWA besonders.2
Playlist Progressive Web App Training der Google Chrome Developers
Progressive Web Apps und SEO: Gibt es da einen Zusammenhang?
Da PWA eine URL besitzen, können sie wie gewöhnliche Websites durch Suchmaschinen indexiert werden. Beachtet werden muss an dieser Stelle nur, dass PWA in der Regel viel JavaScript enthalten, welches die Suchmaschinen-Crawler lange Zeit nur begrenzt richtig lesen konnten. Zwar hat sich die Situation in den letzten Jahren verbessert, will man jedoch sicher gehen, dass alle Suchmaschinen PWA richtig und schnell interpretieren, sollte man sich mit der Fragestellung beschäftigen. Eine mögliche Lösung ist der Einsatz sogenannten dynamischen Renderings, durch das Suchmaschinen Seiten als vorgerenderte HTML ausgegeben bekommen.3
Verbessert nun alleine der Einsatz von PWA das Suchmaschinenranking? Diese Frage lässt sich recht simpel mit einem nein beantworten, zumindest ergeben sich alleine durch die PWA-Eigenschaft keine bekannten oder vermuteten Benefits. Google verneint eine Bevorzugung gegenüber konventionellen Websites sogar explizit.4 Vorteile entstehen vielmehr mittelbar: PWA bieten im Optimalfall eine sehr gute User Experience, welche dann das Ranking in den Suchmaschinen positiv beeinflusst.
Warum User Experience wichtig für SEO ist
Inwiefern ist also User Experience wichtig für ein gutes Suchmaschinenranking? Generell erklärte Marktführer Google bereits 2011:5
„Our advice for publishers continues to be to focus on delivering the best possible user experience on your websites and not to focus too much on what they think are Google’s current ranking algorithms or signals.“
Amit Singhal, Google Fellow
Gleichzeitig beharrte Google aber darauf, dass das Nutzerverhalten keinen Einfluss auf das Ranking nehmen soll. Dies dürfte aber nur die halbe Wahrheit darstellen: Schließlich trainiert Google seine Ranking-Algorithmen mit Sicherheit auch mit Nutzerdaten und nutzt dann das Trainingsergebnis als Rankingfaktor. So fließt Nutzerverhalten schließlich nicht direkt, aber doch mittelbar in das Ranking ein – nämlich indem die Algorithmen nach Merkmalen suchen, die auf ein positives Nutzererlebnis hinweisen.6
Im Jahr 2021 führte Google mit der sogenannten Page Experience schließlich offiziell einen Rankingfaktor ein, der Merkmale, die sich zur User Experience zählen lassen, erfasst. Zu den aufgezählten Signalen, die auf eine gute Page Experience hindeuten, gehören zum einem die Core Web Vitals. Dies sind Kennzahlen, die Ladezeiten, Interaktivität und visuelle Stabilität bewerten. Daneben sind aus Google-Sicht eine Optimierung der Seite für mobile Geräte, die Verwendung von HTTPS und der Verzicht auf störende Popup-Werbungen wichtig.7 Details lassen sich direkt bei den Google Developers nachlesen.
Zusammengefasst ist User Experience also wichtig für ein gutes Suchmaschinenranking, da sie für Zufriedenheit beim Nutzer sorgt und sich dies positiv auf das Ranking auswirkt. Hinweise darauf, was aus Google-Sicht weiterhin auf eine gute User Experience hindeutet, geben im Übrigen eine Reihe von „UX Playbooks“. In den Playbooks finden sich zusammengefasst folgende konkrete Kennzahlen:6
Time on Site (Verweildauer): Bleiben Benutzer länger auf der Seite, spricht dies dafür, dass die Erwartungen erfüllt wurden
Page Views (Seitenaufrufe): Je mehr Seitenaufrufe Benutzer auf einer Seite machen, desto höher scheint das Interesse zu sein
Bounce Rate (Absprungrate): Verlassen Benutzer eine Seite gleich wieder nach Aufruf, ist er vermutlich nicht fündig geworden
Mit Progressive Web Apps eine gute User Experience gewährleisten
Viele Eigenschaften von PWA lassen sich mit den eben genannten Merkmalen, die auf gute User Experience hindeuten, in Verbindung bringen. Beispiele finden sich viele: PWA sorgen für schnelle Ladezeiten, verfolgen für gewöhnlich den Mobile-First-Gedanken und können Benutzer durch Interaktion zu längerer Verweildauer motivieren, etwa durch Push-Benachrichtigungen wie bei gewöhnlichen Apps. Allgemein sorgt das Aussehen und die Handhabung einer nativen App für eine schnelle und flüssige Interaktion mit der Website; durch die Offline-Verfügbarkeit können Nutzer auch ohne oder mit nur schwacher Verbindung auf Websites zugreifen. Weiterhin nutzen sie das HTTPS-Protokoll.8
Aufgepasst werden sollte bei PWA allerdings, wenn sie zusätzlich zu einer klassischen Variante der Website angeboten werden. Wird auf beiden Seiten derselbe Inhalt verwendet, könnten Suchmaschinen dies als Duplicate Content werten und dann eine oder beide Seiten abwerten. Vermieden werden kann dies jedoch durch ein rel=canonical im Header der URL.9
Fazit
Alleine durch den Einsatz von Progressive Web Apps ergeben sich noch keine Vorteile im Suchmaschinenranking. Sie können aber richtig eingesetzt für eine sehr gute User Experience sorgen und sich so auch im Suchmaschinenranking gegenüber anderen Websites absetzen. Dafür müssen die Stärken von PWA ausgespielt werden, ohne aber gleichzeitig die sonst auch üblichen Faktoren der Suchmaschinenoptimierung zu missachten.
Im Zeitalter der Selbstoptimierung gibt es unzählige Apps, die das Leben einfacher machen. Gesundheits-Apps werden genutzt, um zum Beispiel Kalorien zu zählen oder Sportübungen zu tracken, aber auch um mithilfe von Zyklus-Apps den Menstruationszyklus zu dokumentieren. Nutzende berichten, dass solche FemTech-Apps ein wertvolles Mittel sind, um mehr über sich und die eigene Gesundheit zu erfahren und den eigenen Körper besser kennenzulernen.[1][2]
Der Begriff FemTech wurde 2016 von Ida Tin geprägt und in den letzten Jahren ist die Bandbreite an sogenannten FemTech-Apps, also nutzerzentrierten und technologischen Lösungen, die sich an feminine Bedürfnisse richten, stark gewachsen.[3]
Sie versprechen Autonomie und werden als empowerndes Tool vermarktet.[4] FemTech-Apps werden folglich genutzt, um die Menstruation und die eigene Fruchtbarkeit zu überwachen. So helfen sie dabei, unabhängig und selbstbestimmt agieren zu können, denn die App nimmt die lästige und zeitaufwendige Arbeit des Zählens und Dokumentierens ab. Dadurch fällt es vielen Menschen leichter, dies längerfristig und regelmäßig zu tun.[5]
Noch angenehmer fühlt es sich an, wenn man nichts dafür bezahlen muss. Aber das stimmt nur bedingt, denn auch bei kostenlosen Apps wird in Daten bezahlt und der Preis kann erschreckend hoch sein.[6] Personenbezogene Daten sind wertvoll und die Daten einer schwangeren Frau zum Beispiel noch mehr. Nutzt sie eine FemTech-App, werden diese Daten nicht zwingend ihr privates Eigentum bleiben.[7] Aber warum ist das eigentlich ein Problem?
Profite durch sensible Daten
Wenn wir betrachten, was FemTech-Apps machen, dann wird schnell klar, dass die gesammelten Daten intimer und persönlicher kaum sein können. Es entstehen große Mengen an Datensätzen, in denen neben Geburtsdaten auch Daten wie z.B. Gefühle und Stimmung, Ausfluss und andere körperliche Begleiterscheinungen oder sogar sexuelle Aktivitäten festgehalten werden.[8]
Screenshot aus der App ‚Flo‘
Folglich sollte es also eigentlich selbstverständlich sein, dass solche Daten nur durch die nutzende Person weitergegeben werden dürfen. Tatsächlich sind sich die meisten aber häufig nicht über die Tragweite der Datenweitergabe bewusst.[9] Denn anders als bei Krankenakten, die bei den Ärzten und Krankenhäusern der Schweigepflicht unterliegen, gibt es keine Klarheit, wie datenschutzrechtlich mit den sensiblen Daten umgegangen werden soll.
Das bedeutet, dass es FemTech-App-Anbietern freisteht, welche Daten sie wie sammeln[10] oder welche Informationen sie an Werbepartner weitergeben, um personalisierte Werbung für bspw. Windeln zu schalten oder neue Nutzende zu rekrutieren.[11]
Aber es gibt doch Datenschutzbestimmungen!
Natürlich könnte man meinen, dass jede Person, die eine FemTech-App nutzt und durch die Nutzung den Datenschutzbestimmungen dieser spezifischen App explizit oder implizit zustimmt, auch weiß, worauf sie sich einlässt. So einfach ist es allerdings nicht. Das liegt an verschiedenen Gründen.
Zum einen sind Datenschutzerklärungen sprachlich so gestaltet, dass sie schwer zu verstehen sind und ein gewisses sprachliches Niveau Voraussetzung ist, um ihren Inhalt zu durchschauen. Zum anderen sind sie auch nicht immer offensichtlich und es gibt auch keine Möglichkeit, den Datenschutzerklärungen zu widersprechen.[12] Die Mozilla Foundation hat festgestellt, dass in der Mehrheit der FemTech-Apps Datenschutz nicht gewährleistet werden kann.[13]
Das heißt, auch wenn die Datenschutzbestimmungen gesehen, gelesen und verstanden wurden, heißt es noch nicht, dass sie positiv für die Nutzenden sind oder es bleiben.
Datenschutzbestimmungen sind angepasst worden im Verlauf der Lebensdauer der Apps, da es immer wieder kontrovers diskutiert worden ist, ob die sensiblen Daten sicher sind.
Erst 2021 gab es Empörung, als bekannt wurde, dass die meist genutzte Menstruations-App Flo Daten an Dritte weitergab.[14] Als Reaktion darauf hat Flo die Daten anonymisiert.
Und nun: Apps löschen oder behalten?
Es stellt sich letztendlich die Frage, wie unter diesen Gesichtspunkten mit FemTech-Apps verantwortungsvoll und doch persönlich bereichernd umgegangen werden kann. Gerade im Verlauf des Umwurfs von Roe vs Wade in den USA haben sich viele Nutzende dazu entschieden, die Apps zu löschen, da im schlimmsten Fall die Daten an Strafverfolgungsbehörden weitergegeben werden können.[15] Wenn nicht klar ist, was mit den Daten passiert, wird sich zu der Lösung entschieden, erst gar keine Daten zu generieren.
Welche Folgen der Eingriff in die Privatsphäre im Zusammenhang mit dem Fall Roe vs. Wade haben könnte, wurde in diesem Video gut zusammengefasst:
Auch wenn FemTech-Apps keinen optimalen Datenschutz bieten, so ergeben sich dennoch Vorteile, die viele Personen nicht aufgeben möchten, denn der Nutzen ist für sie unumstritten.[16] FemTech blind gegenüber den Problematiken zu nutzen ist allerdings auch keine gute Idee. Apps müssen die Privatsphäre der Nutzenden wahren.
Ausblick
Anstatt auf absolute Lösungen zu setzen, sollte die Informationskompetenz der Nutzenden gefördert und für die Datenflüsse sensibilisiert werden. Die Risiken und der Nutzen müssen gegeneinander aufgewogen und eine persönliche Entscheidung getroffen werden,[17] die fundiert und informiert getroffen werden kann. Da diese Apps auch ein Bestandteil von reproduktiver und sexueller Selbstbestimmung und Freiheit sein können, brauchen wir Wege, die weiter gehen, als eine „ganz oder gar nicht“ Entscheidung.
Es werden Apps mit freier und offener Software benötigt und es braucht Transparenz, welche Daten verarbeitet und gesammelt werden. Das Verantwortungsbewusstsein für die Sensibilität der Daten sollte nicht nur bei den Nutzenden liegen, sondern auch bei denen, die diese Apps erstellen und anbieten.
Quellen
Amelang, Katrin (2022): (Not) Safe to Use: Insecurities in Everyday Data Practices with Period-Tracking Apps. In: New Perspectives in Critical Data Studies. Palgrave Macmillan, Cham, S. 297-321. Online unter https://doi.org/10.1007/978-3-030-96180-0_13 S. 307 ➔[2]➔[16]
Bretschneider, Richard A. (2015): A Goal- and Context-Driven Approach in Mobile Period Tracking Applications. In: Springer, Cham, S. 279287. Online unter https://doi.org/10.1007/978-3-319-20684-4_27 S. 283-284 ➔[8]
Epstein, Daniel A.; Lee, Nicole B.; Kang, Jennifer H.; Agapie, Elena; Schroeder, Jessica; Pina, Laura R.; Fogarty, James; Kientz, Julie A.; Munson, Sean (2017): Examining menstrual tracking to inform the design of personal informatics tools. In 2017/05/02. ACM. Online unter https://doi.org/10.1145/3025453.3025635 S. 6. ➔[1]
Fowler, Leah R.; Gillard, Charlotte; Morain, Stephanie R. (2020): Readability and accessibility of terms of service and privacy policies for menstruation-tracking smartphone Applications. In: Health promotion practice, Jg. 21, H. 5, S. 679-683. Online unter https://doi.org/10.1177/1524839919899924 S. 681 ➔[12] ; S. 682 ➔[9]
Gilman, Michele Estrin (2021): Periods for profit and the rise of menstrual surveillance. In: Columbia Journal of Gender and Law, Jg. 41, H. 1, S. 100-113. Online unter https://doi.org/10.52214/cjgl.v41i1.8824 S. 100 ➔[4] ; S. 103 ➔[6]
Healy, Rachael L. (2020): Zuckerberg, get out of my uterus! An examination of fertility apps, data-sharing and remaking the female body as a digitalized reproductive subject. In: Journal of Gender Studies, Jg. 30, H. 4, S. 406-416. Online unter https://doi.org/10.1080/09589236.2020.1845628 S. 411 ➔[11]
Siapka, Anastasia; Biasin, Elisabetta (2021): Bleeding data: the case of fertility and menstruation tracking apps. In: Internet Policy Review, Jg. 10, H. 4. Online unter https://doi.org/10.14763/2021.4.1599 S. 2 ➔[5]
Wie wird die zukünftige Welt aussehen? Das ist eine Frage mit der die Menschheit sich oft auseinandersetzt und die auch in Filmen immer wieder aufgegriffen wird. Häufig spielt dabei Künstliche Intelligenz in Filmen eine Rolle. In vielen Fällen werden Maschinen dargestellt, welche mit Künstlicher Intelligenz oder kurz KI ausgestattet, ihre Schöpfer irgendwann unterwerfen. Aus Science Fiction Filmen sind Roboter dieser Art längst nicht mehr wegzudenken, doch die technischen Voraussetzungen dafür existieren in der realen Welt (noch) nicht.
Im Jahr 1956 wurde der Begriff „Artificial Intelligence“ also Künstliche Intelligenz von einer kleinen Gruppe Wissenschaftlern, die sich am Dartmouth College in den USA trafen, eingeführt. Dieser Workshop, der auch als „Dartmouth Conference“ bezeichnet wird, gilt als die Geburtsstunde der KI (vgl. Siekmann 1994, S. 20). Doch schon fünf Jahre vorher hat Alan Turing einen Test entwickelt, nachdem beurteilt werden kann, ob ein Computersystem „intelligent“ ist oder nicht. Bei diesem Test, den Turing „The Imitation Game“ nannte, wird mit Hilfe natürlicher Sprache getestet, ob ein Computersystem so kommunizieren kann, dass es von einem Menschen nicht mehr zu unterscheiden ist (vgl. Manhart 2022).
Alan Turing (ca. 1938)
Die Geschichte der Künstlichen Intelligenz in Medien
Auch schon bevor es die uns heute bekannte Künstliche Intelligenz gab, wurde sich in früheren Medien mit dem Thema der lebendigen Maschine auseinandergesetzt. So wurde der Begriff der Maschine im deutschsprachigen Raum schon etwa seit dem 17. Jahrhundert verwendet und findet sich so auch im Deutschen Wörterbuch der Brüder Grimm aus dieser Zeit. Hier wurde die Maschine noch als etwas Lebloses, synthetisches mit einem Artefakten-Charakter beschrieben (vgl. Brössel 2021, S. 28). Außerdem befindet sich eine frühe Darstellung von künstlicher Intelligenz auch in dem Werk „Die Automaten“ von E.T.A Hoffmann aus dem Jahr 1814 , in dem eine mechanische Puppe beginnt Fragen von Menschen zu beantworten (vgl. Brössel 2021, S. 27).
Der Beginn von Künstlicher Intelligenz in Filmen
Mit der Erfindung von Filmen verlagerte sich das Thema der lebendigen Maschine auch immer mehr ins Kino und Fernsehen. Eine frühe Darstellung von Künstlicher Intelligenz in Filmen ist z. B. die Verfilmung des Science-Fiction-Romans Metropolis. Der gleichnamige Stummfilm erschien im Jahre 1927 und zeigt eine düstere Zukunft, in der Menschen von Androiden unterdrückt werden. Für den damaligen Stand der Filmtechnik war der Film visuell sehr eindrucksvoll und zeigte unter anderen Aufnahmen von riesigen Häuserschluchten, großen Maschinen und fortschrittlichen Verkehrsmitteln. Auch beeinflusste Metropolis spätere Filme wie Blade Runner oder Matrix stark (vgl. Schreiner 2022).
Trailer zu Metropolis (1927)
Terminator und Ex Machina
Eine Filmreihe, die sich mit einer düsteren Zukunft für die Menschheit auseinandergesetzt, ist Terminator. Der große Erfolg der Terminator Filme prägt bis heute unser Bild von künstlicher Intelligenz und Robotern. Bei der in den Terminator Filmen dargestellten KI handelt es sich stets um eine bösartige Super-KI und Killer-Roboter, die als einziges Ziel die Auslöschung der Menschheit haben (vgl. Schreiner 2022). Mit aktuell 6 Filmen, welche in den Jahren 1984 bis 2019 entstanden sind, gehört die Terminator Filmreihe zu einer der bekanntesten, welche sich mit den negativen Seiten und Folgen von Künstlicher Intelligenz auseinandersetzt. Auch der Film Ex Machina aus dem Jahr 2015 behandelt das Thema der künstlichen Intelligenz und setzt sich unter anderem mit der Frage auseinander, was Bewusstsein ist und ob eine Maschine ein Bewusstsein haben kann (vgl. Schreiner 2022). Eine Besonderheit von Ex Machina ist hierbei, dass die Künstliche Intelligenz in diesen Film nicht primär als Böse dargestellt wird, wie es z.B. in Terminator und vielen anderen Filmen der Fall ist. Sondern das in diesem Werk der Zuschauer dazu ermutigt wird, über das menschliche Wesen, menschliche Züge und die Frage, was einen Menschen von einer Künstlichen Intelligenz unterscheidet, nachzudenken (vgl. Mehnert 2016).
Filme über Künstliche Intelligenz (KI)
Blade Runner (1982)
Tron (1982)
Terminator (1984)
Matrix (1999)
I,Robot (2004)
Transcendence (2014)
Ex Machina (2014)
Avengers: Age of Ultron (2015)
Blade Runner 2049 (2017)
I am mother (2019)
Free Guy (2021)
Ich bin dein Mensch (2021)
Weltherrschaft der Maschinen?
Künstliche Intelligenz in Filmen begegnet uns häufig, aber in den seltensten Fällen wird die Handlung des Films durch sie positiv beeinflusst. Entweder sind sie nur „kindliche Maschinen“ als Nebendarsteller, wie z.B. C-3PO oder aber die Künstliche Intelligenz unterjocht die Menschheit und strebt die Weltherrschaft an, wie die Superintelligenz in „I, Robot“. Doch trotz all der Forschung auf dem Gebiet der KI sind solche, in ihrem Handeln flexible Maschinen, nach heutigem Stand, nicht realistisch (vgl. Lenzen 2020, S.119).
KIs werden in hochspezialisierten Gebieten eingesetzt, in denen sie die Leistung, die ein Mensch erbringen könnte, teilweise heute schon übertreffen. Diese Art Künstliche Intelligenz nennt man schwache KI, da sie nur für eine bestimmte Aufgabe erschaffen wurde. Sobald man dieser KI komplexere Aufgaben stellt, würde sie scheitern. Im Gegensatz zu dieser schwachen KI gibt es noch die starke KI, die ähnlich wie ein Mensch, flexibel auf unterschiedliche Situationen reagieren kann (vgl. zu diesem Abschnitt Volland 2018, S.14).
Doch starke Künstliche Intelligenz existiert bis heute (noch) nicht. Es gibt die unterschiedlichsten Aussagen von Wissenschaftlern, ob und wann diese starke Künstliche Intelligenz tatsächlich entwickelt werden könnte. Dabei schwanken die Aussagen zwischen 20 und 200 Jahren oder auch nie (vgl. Lenzen 2020, S. 120). Zumindest können wir starke Künstliche Intelligenz in Filmen weiterhin bewundern. Im folgenden Abschnitt könnt ihr euer Wissen über KIs in Filmen testen. Viel Spaß!
Quiz
Quellen
Brössel, Stephan (2021): Die Anthropologie der Goethezeit und Automaten: Ein diskursanalytischer Aufriss und eine exemplarische Analyse von E. T. A. Hoffmanns Die Automate(1814). In: Irsigler, Ingo u.a. (Hg.): Roboter, Künstliche Intelligenz und Transhumanismus in Literatur, Film und anderen Medien. Heidelberg: Universitätsverlag Winter, S. 27 – 44
Mehnert, Ann-Kristin (2016): „Ex Machina“ (2015). Philosophische Betrachtungen über das (Selbst-) Bewusstsein im Spannungsfeld zwischen Mensch und Maschine. Online unter https://www.grin.com/document/322981 [Abruf am 26.12.2022]
Siekmann, Jörg (1994): Künstliche Intelligenz: Von den Anfängen in die Zukunft. In: Cryanek, Günther; Coy, Wolfgang (Hg.): Die maschinelle Kunst des Denkens. Braunschweig: Vieweg, S. 11-41
Volland, Holger (2018): Die kreative Macht der Maschinen. Warum Künstliche Intelligenzen bestimmen, was wir morgen fühlen und denken. 1. Auflage. Weinheim: Beltz
Von Anfang an war es mein Plan, ein simples und optisch ansprechendes kleines Spiel zu designen, bei dem Animationen sinnvoll zum Einsatz kommen.
Nach ein paar verworfenen Ideen entschied ich mich für diese Variante, bei der die räumliche Wahrnehmung und das Gedächtnis des Spielers auf die Probe gestellt wird. Das Konzept des Spiels ist angelehnt an einen Intelligenztest für Schimpansen, bei dem deren Arbeitsgedächtnis getestet wird. Bei diesem werden aufeinanderfolgende Zahlen auf einem Bildschirm abgebildet, diese zahlen müssen dann in der richtigen Reihenfolge gedrückt werden. Nachdem die erste Zahl gedrückt wurde, werden alle anderen hinter identisch aussehenden Feldern versteckt.
Mein Spiel „forty in 49“ funktioniert nach einem ähnlichen Prinzip. Anstatt einer bestimmten Reihenfolge geht es hierbei aber um die Position der Felder. In einem Raster sind 7×7 Felder angeordnet,. Zu Beginn des Spiels verschwinden 40 der 49 Felder für wenige Sekunden. Der Spieler muss sich die Position der übrigen 9 Felder (Bomben) merken und diese vermeiden. Das Ziel ist es, möglichst viele der 40 Felder anzuklicken. Klickt man auf eine Bombe, ist das Spiel vorbei.
Animationen
Die Animationen erfüllen sowohl funktionale als visuelle Zwecke.
Um die Orientierung zu vereinfachen, werden Felder größer und ändern ihre Farbe, wenn der Mauszeiger darüber hovert. Wird ein Feld angeklickt, wird es entweder grün und verschwindet in einer rotierenden Animation, oder es wird rot und dreht sich langsam um 180° um die y-Achse und um 45° um die z-Achse. Dadurch wird dem Spieler visuell verdeutlicht, ob er richtig lag. Um das Ganze auditiv zu unterstützen, gibt es für den Klick auf die zwei Arten von Feldern jeweils einen Soundeffekt.
Ist das Spiel vorbei (alle richtigen Felder oder eine Bombe wurden geklickt), erscheint eine Karte mit der Punktzahl. Sie bewegt sich von unten nach oben und landet mittig über dem Spielfeld. Außerdem gibt es natürlich die fade-out/fade-in Animation am Anfang, ohne die das Spiel überhaupt nicht möglich wäre.
Dieser Beitrag ist im Studiengang Informationsmanagement an der Hochschule Hannover im Rahmen des Kurses Entwicklung von Multimediasystemen (Sommersemester 2021, Amy Linh Hoang, Prof. Dr.-Ing. Steinberg) entstanden. Verwendete Techniken sind HTML5, CSS3 und JavaScript. Die besten Tutorials stellen wir Euch hier in den nächsten Wochen nach und nach vor.
Dieser Beitrag ist ein Tutorial zu der Animation „Ein Tag mit Bobby“ bei dem auf die Details zum Code, Inhalt, Besonderheiten, das Konzept und Schwierigkeiten eingegangen wird. Die Bilder dienen zur Veranschaulichung und Nachvollziehbarkeit und sind anklickbar, sodass man diese in Vollbildmodus und besserer Auflösung betrachten kann.
Die Animation ist ein Storytelling, bei dem der User mit Hilfe von Buttonklicks durch die einzelnen Szenen geleitet wird. Dieser begleitet den Hauptcharakter Bobby durch den Tag und führt verschiedene Anweisungen durch, die Bobby in der Sprechblase gibt. Diese können durch einen Buttonklick realisiert werden. Sobald der User auf einen Button klickt, wird entweder die Szene gewechselt oder ein visueller Effekt erzeugt.
Das Ziel ist es mit dem User eine Interaktion zu starten, wobei dieser den Ablauf der Animation lenkt. Der User wird zu Beginn auch direkt von Bobby mit dem Namen angesprochen und aufgefordert mit ihm den Tag zu verbringen.
Die Idee eine Animation mit Hund(en) zu erstellen, kommt von der persönlichen Liebe zu Tieren und insbesondere zu Hunden. Die kindliche und amüsante Darstellung soll den User animieren und erfreuen. Die Hintergrundmusik sorgt für eine zusätzliche entspannte Atmosphäre, die die Stimmung der Animation unterstützt. Der User kann sich somit entspannen, zurücklehnen und die Animation genießen.
Aufbau
Die Animation ist in vier Szenen aufgeteilt:
Start-Szene (div class=“ story_start_scene“)
Bobby im Wohnzimmer (div-class= „dog_in_livingroom_scene“)
Bobby im Park (div class=“background_image_park_day“)
Schluss-Szene bei der Bobby im Park nachts ist (div class=“dog_in_park_night“)
Start Szene
Bei der Start Szene sieht man den schlafenden Bobby auf einem Teppich ohne jeglichen Hintergrund, das sich zu den restlichen Szenen unterscheidet. Der Grund dafür ist, dass man zum einen den beweglichen und farbwechselnden Hintergrund auf sich wirken lassen kann und zum anderen sollte es schlicht gehalten werden, damit der Wechsel zu den Hauptszenen spannender gestaltet wird. Zudem soll der Fokus zu Beginn auf dem Hauptcharakter liegen. Mit dem Buttonklick auf „Aufwecken“ startet die ganze Animation.
Start Szene
Zweite Szene
In der zweiten Szene befindet sich Bobby im Wohnzimmer, wo er zuvor auf dem Teppich geschlafen hat. Der User hat ihn aufgeweckt und nun fragt Bobby ihn nach seinem Namen. Die Abfrage passiert zwischen der ersten und der zweiten Szene, die mit Hilfe von JavaScript erzeugt wurde. Je nachdem welchen Namen der User eingibt, erscheint dieser in dem Begrüßungstext in der Sprechblase. Hier wird der User aufgefordert die Anweisungen von Bobby durchzuführen. In dieser Szene soll der User mit Bobby in den Park gehen.
Zweite Szene
Dritte Szene
Die dritte Szene spielt sich im Park tagsüber ab in den mehrere Aktionen passieren. Zu Beginn sieht man den Park, in dem sich ein Grill und Bobby befinden. Bobby weist darauf hin, dass es vom Grill sehr gut riecht und er gerne einen Hot Dog haben möchte. Dieser Bitte kann der User nachgehen, indem er auf den langsam erscheinenden Button „Hot Dog geben“ klicken kann. Sobald dies gemacht wurde, erscheint ein animierter Hot Dog, der vom Grill aus zu Bobby in einer 360 Grad Drehung geworfen wird. Daraufhin bedankt sich Bobby und gibt den nächsten Hinweis, dass er seinen Freund Bello sieht und mit ihm Ball spielen möchte.
Dritte Szene
Auch hier kann der User der Anweisung nachgehen, indem er auf den nächsterscheinenden Button „Mit Bello spielen“ klickt. Hier erfolgt die nächste Animation, bei der sich Bello und Bobby den Ball zu werfen. Dabei springen beide versetzt hoch und werfen den Ball mit ihrem Kopf einander zu. Nun erscheint der fünfte Button „Weiter“, der den User darauf hinweist, dass danach die nächste Szene erscheint.
Vierte Szene
Vierte Szene
Die vierte und letzte Szene findet in dem selben Park statt. Jedoch ist es schon spät geworden und Bobby ist müde. Er macht vor Freude Rückwärtssaltos und bedankt sich für den großartigen Tag, den er mit dem User erlebt hat. Auch hier weist Bobby daraufhin, dass er müde und erschöpft ist. Hier ist es Zeit sich von Bobby zu verabschieden und ihm eine Gute Nacht zu wünschen.
Letzte Szene
Mit dem Buttonklick kann man dies tun, wobei das Bild von Bobby in den ursprünglich schlafenden Zustand zurückgebracht wird. Es taucht ein Eyecatcher auf, der zoomt und sich hin und her in verschiedene Winkel dreht. Dies ist der Abschluss der Animation, der durch den animierten Text „Gute Nacht, Bobby“ kenntlich gemacht wird. Der letzte Button unterscheidet sich in der Erscheinungsweise von allen anderen, denn dieser macht auf sich Aufmerksam, indem sich dieser hin und her bewegt und dabei vertikal spiegelt. Der Grund für diese Erscheinungsweise ist das Aufmerksam machen, dass ab hier keine neue Szene erscheint, sondern alles nochmal vom Anfang beginnt. Somit ermöglicht dieser Button die Animation nochmal neu zu starten
Der Code
Für die Animationen wurden HTML5, CSS3 sowie JavaScript und jQuery benutzt. HTML5 wurde für das Grundgerüst und Aufbau, CSS3 für die Animation sowie das Styling und JavaScript bzw. jQuery für das Auslösen/Verstecken verschiedener Animationsobjekte benutzt.
Allgemeine Einstellungen
In der ID „animation_start“ in HTML5 spielt sich die gesamte Animation ab. Die jeweiligen Szenen sind in einzelne div-classes unterteilt in denen die dazugehörigen Objekte enthalten sind. Die div-classes sind nach den Szenarien benannt, das das Erkennen der Inhalte vereinfacht.
<div id="animation_start"class="whole_animation"> <!--ID der gesamten Animation-->
<div class="story_start_scene"><!--Erste Szene: Startbildschrim-->
<img src="sleeping_dog.png" id="sleep"/>
<img src="carpet.png" id="carpet"/>
</div>
<div class="dog_in_livingroom_scene"> <!---Zweite Szene: Bobby im Wohnzimmer Szene samt Begrüßung-->
<div class="living_room_background">
<img src="room.png" class="backgroundimage_livingroom" style="visibility: hidden;"/>
</div>
<div class="dog_character">
<img src="standing_dog.png" id="hello_dog" style="visibility: hidden;"/>
<img src="sprechblase.png" id="speak1" style="visibility: hidden;"/>
<p id="welcome_text" style="visibility: hidden;">Hallo! Ich bin Bobby. Lass uns den Tag zusammen verbringen.</p>
</div>
</div>
<div class="dog_in_park_day"> <!--Dritte Szene: Bobby im Park Szene mit dazugehörigen Objekten-->
<div class="background_image_park_day">
<img src="meadow_at_day.png" class="backgroundimage_park_day" style="visibility: hidden;"/>
</div>
<div class="park_items">
<img src="grill.png" id="bbq" style="visibility: hidden;"/>
<img src="food.png" id="hot_dog" style="visibility: hidden;"/>
<img src="standing_dog2.png" id="dog_at_park" style="visibility: hidden;"/>
<img src="sprechblase2.png" id="speak2" style="visibility: hidden;"/>
<p id="hot_dog_text" style="visibility: hidden;">Das riecht aber toll! Kannst du mir einen Hot Dog geben?</p>
<p id="thank_you_hot_dog_text" style="visibility: hidden;">Danke! Ouh Schau! Da ist Bello. Ich möchte mit ihm Ball spielen.</p>
<img src="playing_dog_brown.png" id="bello" style="visibility: hidden;"/>
<img src="playing_dog_grey.png" id="bobby" style= "visibility: hidden;"/>
<img src="ball.png" id="toy" style="visibility: hidden;"/>
</div>
</div>
<div class="dog_in_park_night"><!--Abschlussszene: Bobby im Park nachts.-->
<div class="background_image_park_night">
<img src="meadow_at_night.png" id="backgroundimage2" style="visibility: hidden;"/>
<img src="dog_by_night.png" id="night_dog" style="visibility: hidden;"/>
<img src="sprechblase3.png" id="speak4" style="visibility: hidden;"/>
<img src="sleeping_dog2.png" id="tired" style="visibility: hidden;"/>
<p id="thank_you_for_the_day" style="visibility: hidden;">Danke dir für den schönen Tag! Ich bin jetzt aber müde.</p>
<p id="good_night_bobby" style="visibility: hidden;">Gute Nacht, Bobby</p>
</div>
</div>
</div><!--Ende der "animation_start"-->
In der aside-class wurden alle Buttons und der Titel der der Animation eingetragen, da diese Inhalte sich immer an der selben Position befinden.
<body>
<!--Alle Elemente sind auf "visibility:hidden" gesetzt, die über JavaScript aktiviert werden, wenn man auf einen Button klickt-->
<script src="animation_functions.js"></script> <!--Einbindung der JavaScript Datei-->
<aside class="title_and_buttons"> <!--Übergreifende Class für alle Buttons und Titel der Animation (h1) damit die Position die selbe bleibt-->
<h1> Ein Tag mit Bobby</h1>
<button id="button_aufwecken">
<a class="button_1">Aufwecken</a>
</button>
<button id="button_park" style="visibility: hidden;">
<a class="button_2">Lass uns in den Park gehen</a>
</button>
<button id="button_hot_dog" style="visibility: hidden;">
<a class="button_3">Hot Dog geben </a>
</button>
<button id="button_play" style="visibility: hidden;">
<a class="button_4">Mit Bello spielen</a>
</button>
<button id="button_next" style="visibility: hidden;">
<a class="button_5">Weiter</a>
</button>
<button id="button_good_night" style="visibility: hidden;">
<a class="button_6">Gute Nacht!</a>
</button>
<button id="button_reload" style="visibility: hidden;">
<a class="button_7">Neustart</a>
</button>
</aside>
Auffallend im Code ist, dass alle Objekte nicht sichtbar sind (visibility: hidden). Diese werden zu dem Zeitpunkt wann die jeweiligen Objekte zu sehen sein sollen mit Hilfe von jQuery sichtbar gemacht. Die allgemeine Position aller Elemente ist in der ID „animation“ sowie dessen class „whole_animation“ zu sehen. So entsteht ein Rahmen für die verschiedenen Bilder, das die Zentrierung der Szenen möglich macht. Die gewählte Größe und Position erstellt eine Box, wo sich die Animation abspielt. Dies soll ein Gefühl erzeugen, als würde man in einem Kino vor einer Leinwand sitzen.
Im Body ist die Animation des ineinanderfließenden Hintergrundes zu sehen. Die keyframes bringen diese Animation zum Laufen. Zunächst muss man drei Farben definieren, die man in dem Übergang haben möchte. Des Weiteren war es wichtig die Dauer und Länge zu definieren. In diesem Fall sollte der gesamte Übergang 13 Sekunden dauern und unbegrenzt durchlaufen.
body {
font-family: "Comic sans MS";
background-size: cover;
justify-content:center;
background-position: center;
background: -webkit-linear-gradient(132deg, #FC415A, #591BC5, #4a8ead);
background-size: 400% 400%;
align-items: center;
min-height: 100%;
overflow:hidden;
-webkit-animation: moving_background 13s ease infinite;
animation: moving_background 13s ease infinite;
}
@-webkit-keyframes moving_background { /*Animation des Backgrounds, der in Dauerschleife die Farben wechselt*/
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%; /*Inspired by https://www.sliderrevolution.com/resources/css-animated-background/*/
}
100% {
background-position: 0% 50%;
}
}
Die Buttons
Die Buttons haben wie schon zuvor erwähnt den funktionalen Zweck den User durch die Szenen zu geleiten und verschiedene Animationen hervorzurufen. Somit sind diese essenziel für das Abspielen der Animation. Aus diesem Grund werden diese oberhalb der Animationsbox dargestellt, damit die Aufmerksamkeit des Users zu den bestimmten Zeitpunkten darauf gelenkt wird.
Die Buttons haben alle den selben Stil, jedoch haben alle verschiedene Dauer und Art und Weise der Animation. Daher wurde jeder einzelne Button in CSS3 angelegt. Das Aussehen der Buttons ist Oval und hat drei Farbverläufe, das in zarten und hellen Farben gehalten ist, um mit dem Hintergrund zu harmonieren. Beim Hovern erfolgt ein Spiegeleffekt bei dem die Farben von rechts nach links ineinander laufen. Durch das bewegte Gelb wir ein Relief- bzw. Spiegeleffekt erzeugt. Die transition ermöglicht dies.
#button_aufwecken { /*Design und Animation der Buttons. Alle haben die gleiche Einstellung nur andere Animationsangaben. Daher jeden Button einzeln angelegt, anstatt die zusammenzufassen*/
border-radius: 50%;
align-items: center;
font-size: 15px;
display: flex;
margin: auto;
background-image: linear-gradient(135deg, #ee9ca7 0%, #fbed96 51%, #ee9ca7 100%); /*Inspired by https://blog.avada.io/css/button-hover-effects/*/
background-size: 200% auto;
box-shadow: #a05a9c 0px 0px 5px;
-webkit-animation: push_buttom 3s infinite;
animation: push_button 3s infinite;
outline: none;
}
@-webkit-keyframes push_button { /*Inspired by https://css-tricks.com/css-animation-libraries/*/
0% {
box-shadow: 0px 0px 4px rgb(255,250,250);
}
50% {
box-shadow: 0px 0px 23px rgb(255,250,250);
}
100% {
box-shadow: 0px 0px 12px rgb(255,250,250);
}
}
@keyframes push_button {
0% {
box-shadow: 0px 0px 4px rgb(255,250,250);
}
50% {
box-shadow: 0px 0px 23px rgb(255,250,250);
}
100% {
box-shadow: 0px 0px 12px rgb(255,250,250);
}
}
#button_aufwecken:hover {
background-position: right center;
transition: all 0.5s ease-out;
}
.button_1{
flex: 1 auto;
margin:5px;
padding:10px 25px;
text-align:center;
transition: all 0.5s ease-out;
cursor:pointer;
background-size: 200% auto;
font-family: "Comic sans MS";
}
Animierte Objekte
Alle benutzen Bilder, bis auf die Hintergrundbilder der Szenen, haben einen funktionalen Zweck. Alle Bilder sind PNG Dateien und von Pixabay. Durch die position: relativ war es einfach alle Objekte in einer Szene zu platzieren. Ausgerichtet und an den gewünschten Platz gebracht wurde mit bottom, top, left, right und margin. Keyframes erzeugen die Animationen der Objekte. Die nachfolgenden Abschnitte beschreiben die einzelnen animierten Objekte.
Text in Sprechblase
Der sprechende Text, den Bobby in der Sprechblase sagt zoomt rein und raus und wechselt dabei zwischen drei Farben. So sollte die Aufmerksamkeit auf den Text gelenkt werden, damit der User den Anweisungen folgen kann. Dazu wird die animation-timing-function auf ease gesetzt. Zudem soll der Zoomeffekt in Dauerschleife ablaufen. Daher der Wert infinite. Durch scale() konnte die Größe der Transformation des Textes eingerichtet werden. Color sorgt für den Farbverlauf, der sich über die verschiedenen Sequenzen (0%, 50%, 100%) ändert.
Für die Animation des fliegenden Hot Dogs wurden in den keyframes die Werte translateX(), translateY() und rotate() verwendet. Die beiden ersten Werte sorgen für die Verschiebung auf der X- und Y-Aschse, wobei ein negativer translateY() Wert das Objekt nach oben versetzt. Daher ist bei 50%, das der höchste Punkt der Flugbahn sein soll, ein negativer Wert von -80px. rotate() sorgt für die Rotation des Objektes. Hierbei müssen Gradzahlen eingetragen werden.
Die Animation der zwei spielenden Hunde war am schwierigsten zu gestalten, da hier der Zeitfaktor eine große Rolle spielt, damit alles synchron abläuft. Zunächst die Gestaltung der beiden springenden Hunde. Hierbei muss man die Sequenzen (0%-100%) der bottom-Wert ändern. Je größer der Wert, desto höher steigen die Objekte auf. Die ease-out Eigenschaft sorgt dafür, dass das Ende der Sequenz langsamer abläuft. So kommt der fließende Sprung zustande. Beide Hunde haben die selben Animationseigenschaften. Der Unterschied liegt im animation-delay. Bello fängt eine Sekunde später an zu springen als Bobby. So entsteht der abwechselnde Sprung.
Die Animation des Balls wurde nach dem selben Konzept wie die des Hot Dogs gestaltet. Hier bestand die Schwierigkeit mit der Positionierung und der Dauer des fliegenden Balls. Es musste alles auf die beiden springenden Hunde angepasst werden, sodass der Effekt eines Kopfballs entsteht.
Saltomachender Bobby
In der letzten Szene macht Bobby ein Rückwärtssalto. Dieser Effekt wurde mit den gleichen Eigenschaften wie bei dem fliegenden Hot Dog und Ball animiert. Da der Charakter sich auf einer Stelle bewegt und nur hochspringt und dreht, bleibt der translateX()vWert bei 0px. Dem entsprechend muss der translateY() und rotate() angepasst werden.
Die Buttons wurden im vorherigen Kapitel schon beschrieben. Nun wird näher auf die animierenden Effekte eingegangen. Der Effekt des Einblendens wurde durch die opacity Eigenschaft erzeugt, der von 0 auf 1 steigt und durch die animation-duration in die Länge gezogen wird. Der erste und letzte Button haben jedoch ein paar zusätzliche Effekte. Beim ersten Button „Aufwecken“ leuchtet der Button-Hintergrund in Weiß. Durch den versetzten box-shadow und der Dauerschleife (infinite) wird das pulsierende Leuchten erzeugt (siehe Bild ). Der letzte Button „Neustart“ dreht und bewegt sich von links nach rechts und rückwärtsrum, während sich dieser vertikal spiegelt. Die animation-direction: alternate-reverse gibt an, dass die Animation sich vor- und zurückspielen soll. Animation-timing-function sorgt für den linearen. also gleichbleibenden/flüssigen Ablauf. translateX() sorgt dafür, dass sich der Button von links nach rechts bewegt. scaleX() hingegen sorgt für die Spiegelung, wobei der negative Wert die Spiegelung an der X-Achse erzeugt.
Gute Nacht, Bobby Schrift
Der Abschließende Text „Gute Nacht, Bobby“ wurde mit einer Zoom-, Leucht- und Rotations-Funktion gestaltet. Wie schon zuvor erwähnt erzeugt scale() den Zoomeffekt. Für das Textleuchten ist text-shadow zuständig. rotate() sorgt für die Drehung des Textes. Der Unterschied bei dieser Textanimation liegt in der animation-timing-function. Hierbei setzt man cubic-bezier () ein um, einen Verzerrungseffekt zu erstellen.
var name = "Snoopy" /*Variable für die Namensabfrage für die Begrüßung von Bobby*/
$(document).ready(function(){
/*Funktion, bei der bei einem Buttonklick bestimmte Objekte sichtbar oder ausgeblendet werden*/
$("#button_aufwecken").on("click", function() { /*Button "Aufwecken"*/
$(".story_start_scene").css({"visibility": "hidden"});
$(".backgroundimage_livingroom").css({"visibility": "visible"});
$("#hello_dog").css({"visibility": "visible"});
$("#speak1").css({"visibility": "visible"});
$("#button_park").css({"visibility": "visible"});
$("#button_aufwecken").css({"visibility": "hidden"})
$("#welcome_text").css({"visibility": "visible"});
$("#name_text").css({"visibility": "visible"});
$("form").css({"visibility": "visible"});
$("#button_park").css({"-webkit-animation-play-state": "running"}); /*Animationen, die pausiert werden, werden hierbei zum Abspielen gebracht*/
$("#welcome_text").css({"-webkit-animation-play-state": "running"});
name = prompt("Bitte gib deinen Namen ein", "Snoopy"); /*Namensabfrage. Inspired by https://www.w3schools.com/jsref/met_win_prompt.asp*/
console.log(name);
if (name != null) {
document.getElementById("welcome_text").innerHTML =
"Hallo " + name + "! Ich bin Bobby. Lass uns den Tag zusammen verbringen.";
}
});
Um die Übergänge zwischen den einzelnen Szenen und Animationen möglich zu machen, wurde jQuery eingesetzt. Durch den Buttonklick werden Objekte, die in HTML5 auf „hidden“ gesetzt sind, sichtbar gemacht. Dafür nutzt man die $(„#button“).on(„click“, function() {}}); . Diese zeigt welche Objekte beim Buttonklick gezeigt werden und welche verschwinden sollen. Die Namensabfrage zwischen der ersten und der zweiten Szene erfolgte über JavaScript mit der promt() Methode.
Bobby JS
Hierbei wurde eine Variable erstellt, das einen default Wert liefert, der in der promp() Abfrage und if-loop eingefügt ist. Es öffnet sich ein Pop-up Fenster bei dem die Aufforderung „Bitte gib deinen Namen ein“ und dem default Wert „Snoopy“ steht. Diese wurden zuvor definiert. Wenn der User seinen Namen eintippt, nimmt die p id=“welcome_text“ diesen entgegen und Bobby begrüßt den User mit „Hallo [Username]! Ich bin Bobby. Lass und den Tag zusammen verbringen“. Falls das Eingabefeld leer bleibt, begrüßt Bobby den User mit dem Namen null. Durch diese Funktion wird eine Bindung zum User aufgebaut.
Die Animationen, die mit Hilfe von transitions und keyframes in CSS3 erstellt wurden, wurden bei webkit-animation-play-state auf paused gesetzt. Der Grund dafür ist, dass bestimmte Funktionen wie animation-delay oder animation-duration ab der Start Szene anfangen zu zählen. Das war aber nicht die Intention. Es sollten alle Abläufe erst nach einem Buttonklick starten. So war das Problem z.B. bei dem zweiten Button „Lass und in den Park gehen“. Dieser wird nach 3 Sekunden eingeblendet. Wäre -webkit-animation-play-state auf running gesetzt, so hätte das Einblenden des Buttons nach 3 Sekunden nicht funktioniert, wenn man sich länger als 3 Sekunden in der Start Szene befunden hätte. Der Button wäre dann beim Szenenwechsel schon da und der Einblende Effekt wäre nicht sichtbar. Damit die einzelnen Animationen erst beim Buttonklick abspielen, muss man diese über jQuery bei -webkit-animation-play-state auf running setzen.
Eine Besonderheit ist die im Hintergrund eingesetzte Musik, um die Animation spannender zu gestalten und den User in eine angenehme Stimmung zu versetzen. Des Weiteren wurden so gut wie alle benutzen Objekte animiert. Es wurde versucht jedes Animationselement individuell zu gestalten, um verschiedene visuelle Effekte zu erzeugen. Die letzte Besonderheit ist, dass der letzte Button einen Neustart der Animation ermöglicht, falls man erneut das Story Telling durchspielen möchte.
Schwierigkeiten
Beim Erstellen der Animation traten zwei Probleme auf.
Der animierte Sprechtext sollte ursprünglich abgetippt werden. Dafür wurde die step() Methode verwendet. Leider konnte ein Zeilenumbruch für die Animation nicht erstellt werden, da ansonsten der „abgetippte Text“ nicht korrekt funktioniert hat wie er es sollte. Dieser hätte in die Sprechblase passen müssen. Daher wurde eine alternative Darstellung des Textes eingebaut.
Die Hintergrundmusik wird manchmal in Google Chrome nicht abgespielt. Daher wird empfohlen sich die Animation in Microsoft Edge anzuschauen.
Dieser Beitrag ist im Studiengang Informationsmanagement an der Hochschule Hannover im Rahmen des Kurses Entwicklung von Multimediasystemen (Sommersemester 2021, Amy Linh Hoang, Prof. Dr.-Ing. Steinberg) entstanden. Verwendete Techniken sind HTML5, CSS3 und JavaScript. Die besten Tutorials stellen wir Euch hier in den nächsten Wochen nach und nach vor.
Die Idee der Animation ist, ein erheiterndes, kleines Visual Graphic Novel zu erstellen, durch das der User mit visuellen Effekten durchgeführt wird.
Das Ziel ist, den User von Anfang bis Ende durch mehrere kleine Animationen zu führen, während er Interaktionen ausführt und Feedback zu den ausgeführten Aktionen erhält. Das Feedback besteht ebenfalls aus visuellen Effekten, sodass der User jederzeit weiß, wo und in welcher Ebene er sich befindet.
Die Führung durch das Visual Graphic Novel erfolgt visuell durch verschieden aufleuchtende Buttons. Durch sich farblich (türkis) abgrenzende Umrandungen der Buttons wird der User zu den gewünschten Aktionen gelotst, da diese am meisten auffallen (über Bewegung und Farbe).
Das Visual Graphic Novel besteht aus zwei Szenen, die der Nutzer frei wählen kann. Die Reihenfolge der Auswahl hat dabei keine Auswirkungen.
Die erste Ebene, der Startbildschirm, dient dem User dazu, das Visual Graphic Novel zu starten.
Auf der zweiten Ebene kann der User eine Szene (Home- oder Outdoor-Szene) auswählen, ohne jedoch das Szenenbild vorher zu sehen. Hier liest er nur den Text der Entscheidungsmöglichkeiten, was auch einen kleinen Überraschungseffekt bei der Auswahl geben soll.
Auf der dritten Ebene kann der User dann zwischen den beiden Szenen hin und her springen, so oft er möchte. Um das ganze unterhaltsamer zu machen, spricht die Figur einen Text. Die Sprechblase wiederholt sich hierbei unendlich oft, sodass der User den Text gut lesen kann, ungeachtete der Lesegeschwindigkeit.
Die vierte Ebene ist der Endbildschirm, wo sich ein „Thanks for playing“ (DE: „Danke für das Spielen“) bei dem User verabschiedet. Auf dieser Ebene hat der User die Möglichkeit, das Visual Graphic Novel erneut zu starten.
Verwendete Programmiersprachen:
Die ganze Animation wurde auf Codepen erstellt. Für die Erstellung der einzelnen Animation/-en wurden verwendet:
Die Besonderheiten bei dem Visual Graphic Novel sind klein, haben jedoch einen großen Effekt und Einfluss.
Zunächst ist das Design schlicht gehalten, bzw. der Hintergrund und die Hauptfarbe der Buttons. Dadurch wird die Aufmerksamkeit des Users auf die Szenen(-bilder) und die einzelnen, visuellen Effekte gelenkt.
Die Effekte der Klasse ‚hint‚
Die Klasse ‚hint‘ hat das Ziel, den User durch das Visual Graphic Novel zu führen. Der visuelle Effekt ist ein türkis-farbenes Pulsieren (in CSS definiert). Beim Startbildschirm (Ebene 1) wird die Aufmerksamkeit des Users somit vor allem auf den Start-Button gelenkt. Danach (Ebene 2) wird der Effekt „verschoben“ und ist nun nur auf der Szenen-Auswahl zu sehen, damit der User weiß, dass er sich nun für eine der beiden Optionen entscheiden soll. Ist nun eine Szene ausgewählt (Ebene 3), wird der pulsierende Farb-Effekt auf die nicht ausgewählte Option verschoben, sowie den Stop-Button. Damit weiß der User zum Einen, dass die andere Option noch ausgewählt werden kann, und zum Anderen, dass jederzeit das Spiel nun beendet werden kann. Wird nun auf den Stop-Button geklickt, wird der Farb-Effekt erneut auf den Start-Button geschoben, damit der User nun die Möglichkeit erkennt, erneut auf Start zu klicken. Die Steuerung, wann der Farb-Effekt, bzw. die Klasse ‚hint‘ wo hin verschoben werden soll, wird mit Hilfe der Buttons in JavaScript festgelegt. Der Effekt selbst wird mit CSS erstellt, mehr dazu unter dem Abschnitt Visuelle Effekte.
Die Figur und Objekte
Die Figur ist nicht nur eine Dekoration, sondern erfüllt auch einen Zweck: Ein Feedback an den User. Das Feedback ist simpel: Wurde sich nun für eine Szene entschieden, taucht eine Sprechblase von der Figur auf. Damit wird dem User gezeigt, dass die Szenen-Auswahl durchgeführt wurde und etwas passiert ist. Dabei wird der gesprochene Text in der Sprechblase unendlich oft wiederholt, damit der User jederzeit den Text erneut und so oft er will lesen kann. Des Weiteren erheitert der gesprochene Text der Figur (hoffentlich!) den User und hinterlässt somit einen positiven Eindruck. Die Figur wird in CSS mit der Klasse ‚figure‘ definiert.
Die anderen Objekte / Graphiken dienen hier der Dekoration und erhöhen den Spaß-Effekt beim Umschalten der Szenen.
Der Wegweiser
Der Wegweiser (eine SVG-Graphik), der einzig allein in Ebene 2 auftaucht, besitzt eine wichtige Funktion: Das Wegweisen. Da Graphiken, bzw. Bilder, meist mehr für sich sprechen als Text, wird dem User vor dem Lesen der Optionen bereits gezeigt, dass nun eine Entscheidung auf ihn zukommt. Ein Wegweiser ist hierbei ein allgemein bekanntes Symbol, dass von dem User nicht falsch verstanden werden kann, und dabei schneller auffällt als der Text in den Optionen. Der Wegweiser wird mit der ID ‚#signpost‘ in CSS definiert und mit Hilfe von JavaScript gesteuert. Mehr dazu unter dem Abschnitt Buttons & Option.
Grundbausteine
Da es in dem Visual Graphic Novel viele verschiedene Elemente gibt, die von JavaScript gesteuert werden und auf verschiedenen Instanzen auftauchen sollen, schließen verschiedene div-Container diese ein.
Im ‚body‘ wird alles Wichtige wie background-size, background-color, sowie die Inhaltsplatzierung innerhalb des ‚bodys‘ und die Schriftart definiert. Die border- und box-shadow-Einstellungen schaffen hierbei eine Abgrenzung von dem restlichen Browserfenster und begrenzen die Darstellungsoberfläche des Visual Graphic Novels.
Der div-Container mit der Klasse ‚main-content‘ ist dafür da, um den gesamten Inhalt (also alle Graphiken) als eine Einheit zu platzieren und sie durch JavaScript und JQuery zu steuern, d.h. einen Start-Bildschirm zu erschaffen. Damit kann der gesamte Inhalt in ‚main-content‚ mit einem Klick aus- und eingeblendet werden, wenn einer der Buttons gedrückt wird. Das geschieht dadurch, dass dieser Klasse eine Id ‚gamestop‘ und ‚gamestart‘ (definiert in CSS) mit der Eigenschaft ‚visibility:hidden‘ zugewiesen und wieder entfernt wird.
<!-- die Id wird in JS genutzt, um einen Startbildschirm zu erschaffen --!>
<div id="gamestart" class="main-content"> <!-- wird genutzt, um den main-content zu steuern und zu positionieren -->
Der div-Container ‚illustration‘ enthält alle Graphiken, bzw. SVG-Graphiken, und fixiert diese. Da nicht alle SVG-Graphiken eine geeignete Proportionalität besitzen, um zusammen dargestellt zu werden, hilft das Fixieren auch dabei, um sie gegenseitig aufeinander abzustimmen.
Person-type: Home-Body & Outdoor-Person
<div class="person-type home-body active"> <!-- hier ist die home-scene mit dazugehörigen Objekten -->
<div class="scenery">
<img src="https://image.freepik.com/free-vector/living-room-interior-with-panoramic-window-night-time_33099-1735.jpg" class="backgroundimg"/>
</div>
<div class="background.items">
<img src="https://image.flaticon.com/icons/svg/214/214283.svg" width="100px" height="400px"/>
</div>
<div class="foreground-items">
>img src="http://image.flatcon.com/icons/svg/198/198916.svg" width="65px" style="margin-left:-10%"/>
<img src="Http://image.flaticon.com/icons/svg/3145/3145435.svg" width="65px" style="padding-left:30%;"/>
</div>
</div>
Mit der Klasse ‚person-type‚ werden in CSS alle Kindelemente dieser Klasse definiert und in JavaScript zwischen den Szenen hin- und hergewechselt, wenn die jeweilige Option ausgewählt wird.
.person-type > div {
transform: scale(0);
opacity:0;
}
.person-type.active > div {
transform: scale(1);
opacity: 1;
Durch ‚person-type > div‘ werden alle Kindelemente der Klasse ‚person-type‚ ausgewählt. Es gibt ‚person-type‚ einmal für die Home-Szene (inklusive der dazugehörigen Graphiken) und dann für die Outdoor-Szene. Wenn eine der Szenen ausgewählt wird, wird diese Szene durch ‚person-type.active‘ (definiert in CSS) nach „vorne geschoben„‚(transform:scale (1))‘ und durch ‚opacity:1‘ sichtbar gemacht. Die andere Szene wird durch ‚person-type > div‘ nach „hinten geschoben„ ‚(transform:scale(0))‘ und mit ‚opacity:0‘ unsichtbar gemacht. Dadurch können beide Szenen an den gleichen Platz im Container geschoben werden, ohne dass sie sich gegenseitig verdrängen. Die Szenenauswahl wird durch den Button mit JavaScript ausgelöst. Darauf wird später in Buttons & Option noch mehr eingegangen.
Container Scenery & Backgroundimg
Der div-Container ’scenery‘ umfasst das Szenenbild (für jeweils die Home- und Outdoor-Szene). Mit dieser Klasse wird der Einblendungseffekt / Übergangseffekt beim Szenenwechsel in CSS mit ‚transition:‘ definiert.
Der div-Container ‚backgroundimg‘ wird in CSS definiert und erfüllt den Zweck, die Hintergrundbilder der Szenen auf die gleiche Größe zu skalieren und dem Bild mit ‚border-radius‘ und ‚box-shadow‘ eine Form und einen visuellen Tiefen-Effekt zu geben.
.scenery 7
transition: all 200ms cubic-bezier(0.68, -0.55, 0.265, 1.55);
z-index: -2;
0/* Styled die Hintergrundbilder der Scenen */
.backgroundimg7
border-radius:50%;
margin-left:-73%;
width:626px;
height: 3356px;
box-shadow: 0px 0px 15px #000000;
Der ‚foreground-items‘ div-Container beinhaltet die Graphiken, die sich in den beiden Szenen jeweils weiter vorne befinden und bei einem Szenenwechsel später eingeblendet werden als die Graphik im Hintergrund und das Hintergrundbild.
Mit ‚transition:‘ wird der Einblendungseffekt / Übergangseffekt dieser Objekte beim Szenenwechsel festgelegt.
Background-items Container
Der div-Container mit der Klasse „background-items“ beinhaltet die eine Graphik (jeweils in beiden Szenen), die zu einem früheren Zeitpunkt als die Graphiken in dem ‚foreground-items container‘ in der ausgewählten Szene auftauchen. Dies ist in CSS mit ‚transition:‘ definiert, wie in der folgenden Abbildung zu sehen ist.
Der div-Container ‚option-wrapper‘ beinhaltet beide Szenen-Optionen und umschließt diese, damit sie zusammen in einem Button erscheinen können. Außerdem wird mit dieser Klasse der div-Container per JavaScript „anvisiert“, bzw. mit einem Leuchteffekt versehen, damit dieser zum geeigneten Augenblick die Aufmerksamkeit des Users bekommt. Zu den Buttons unter Buttons und zu dem Leucht-Effekt unter Visuelle Effekte mehr.
<div class="option-wrapper">
<aclass="option active wobble-vertical-on-hover homeoption hint" data-option="home">
I'm gonna read a nice book and stay in. </a>
<a class="option wobble-vertical-on-hover outdooroption hint" data-option="outdoor">
I'm gonna explore the wide world and beyond! </a>
</div>
Buttons & Option
Die Klasse ‚option‘ ist allen Buttons zugeteilt. Also jeweils dem Start- und Stop-Button sowie beiden Szenen-Optionen. Die Klasse ‚option‘ regelt mit ‚transition:‘ in CSS den Übergang der ausgewählten Option sowie den Style der einzelnen Optionen. Somit grenzen sich z.B. die Outdoor-Szene und Home-Szene innerhalb des ‚Option-Wrappers‘ voneinander ab und erscheinen als zwei eigene Buttons. Mit ‚cursor‘ wird zudem der Cursor über dem Button definiert.
Die Klasse ‚active‘ definiert, wie die ausgewählte Option aussieht. Durch die Klasse ‚active‘ verändert sich die Hintergrundfarbe und Schriftfarbe des Buttons (gelber Hintergrund, schwarze Schrift), wenn dieser angeklickt wird.
Bei der Szenenauswahl wird der ‚person-type‘ der jeweiligen Option angesprochen, der bei beiden Szenen unterschiedlich ist und in der JavaScript-Funktion jeweils definiert ist, bzw. welche Elemente dazugehören. Der Wechsel der Optionen, sowie die Zuweisung der Klasse ‚active‘, geschieht mit folgender Funktion in JavaScript:
$(".option").on("click", function() {
$(".person-type").removeClass(active");
$(".option").removeClass("active");
$(this).addClass("active");
var type = $(this).data("option");
console.log($(type));
Die beiden Person-Types (‚data-option‘ in HTML) der Optionen, also ‚person-type home‘ und ‚person-type outdoor‘ in JavaScript, bestimmen, welche weiteren Grafiken / Objekte dargestellt werden. Dies ist definiert als if und else if (untere Abbildung) in der Funktion „click“, (obere Abbildung). Wird also die ‚option‘ mit dem ‚type == „home“‚ (in HTML data-option) angeklickt, wird der Klasse ‚home-body‘ die Klasse ‚active‘ zugewiesen. Desweiteren werden damit alle benötigten Elemente für diese Szene eingeblendet, sowie nicht benötigte ausgeblendet, mit folgender Funktion:
setTimeout(function() {
if (type === "home") {
$(".home-body").addClass("active");
$("#signpost").css({"visibility": "hidden"});
$("#bubbletoggle1").css({"visibility": "visible"});
// Hier der Wechsel der Sprachblasen
$(".bubble2").hidden();
$(".bubble1").show();
$".stop-button").addClass("hint");
$(".homeoption").removeClass("hint");
}
<div class="option-wrapper ">
<a class="option active wobble-vertical-on-hover homeoption hint" data-option="home">
I'm gonna read a nice book and stay in.</a>
<a class="option wobble-vertical-on-hover outdooroption hint" data-option="outdoor">
I'm gonna explore the wide world and beyond! </a>
</div>
Der ‚Signpost‘ ist eine Grafik, die in Ebene 2 eingeblendet wird, hier jedoch ausgeblendet werden soll. Mit der Klasse ‚hint‘ wird eine farbliche (türkis-farbene) Umrandung um den Stop-Button gesetzt, damit der User darauf aufmerksam gemacht wird, dass er das Visual Graphic Novel ab jetzt beenden kann. Gleichzeitig wird diese Klasse der jetzt ausgewählten Option entzogen, da die Aufmerksamkeit des Users bereits auf diesem Button liegt. Die ID ‚#bubbletoggle1‘ ist in einem anderen Abschnitt erklärt.
Der Start- und Stop-Button
Der Start- und Stop-Button dient dazu, einen Start-Bildschirm und einen End-Bildschirm zu erschaffen, sowie dem User die Möglichkeit zu geben, dass Visual Graphic Novel jederzeit zu verlassen. Dazu wird den beiden Buttons die Klasse ‚active‘ gegeben, damit diese genauso wie die Szenen-Options reagieren (weiter oben beschrieben). Ebenso wird zum Zwecke der User-Lenkung und User-Aufmerksamkeit die Klasse ‚hint‘ vergeben, die farbliche Effekte (türkis-farbene Umrandung) vergibt.
Der Style der beiden Buttons wird in CSS festgelegt. Dafür wird die Klasse ‚buttons‘ vergeben. Der Zweck der Klasse ‚hint‘ wird im Abschnitt ‚Besonderheiten‘ und die CSS-Definition unter Visuelle Effekte mehr erläutert.
.button{
display: flex;
position: center;
margin:0en auto;
background: rgba(255,255,255,0.25);
border-radius: 50px;
padding: 5px;
max-width: 300px;
font-size: 15px;
line-height: 1.2;
} /* Wird genutzt, um per JS zu steuern, wann der Inhalt auftaucht, wenn die buttons gedrückt werden*/
#gamestart{
visibility:hidden;
}
#gamestop{
visibility:hidden;
}/* Danke-Text am Ende des Spiels */
Die ID ‚#gamestart{visibility:hidden;}‘ und ‚#gamestop{visibility:hidden;}‘ werden in JavaScript dafür verwendet, um beim Klicken der Buttons den ‚main-content‘ einzublenden und beim Drücken des Stop-Buttons den ‚main-content‘ auszublenden. Zur Übersichtlichkeit der Steuerung in JavaScript wurden also die beiden ID’s jeweils einzeln in CSS definiert, obwohl sie die gleichen Attributwerte besitzen. Die beiden Funktionen für den Start-Button und den Stop-Button sehen wie folgt aus:
$(".star-button").on("click", function() {
$(".main-content").removeAttr("id", "gamestart");
$(".thanks").css({"visibility": "hidden"});
$("#signpost").css({"visibility": "visible"});
// "hint" gibt dem User Hinweise, wo hingeklickt werde
$(".button").removeClass("hint");
$(".start-button").removeClass("hint");
$(".option-wrapper").addClass("hint");
});
//Funktion und eizelne Aktionen, die ausgeführt werde
$(".stop-button").on("click", function() {
$(".mnain-content").attr("id", "gamestop");
$(".bubble").hide();
$("#signpost").removeAttr("style", "visible");
$(".thanks").css({"visibility": "visible"});
$(".button").addClass("hint");
// wenn der stop-button geklickt wird, muss das lightni
$(".stop-button").removeClass("hint");
//hiermit wird die Klasse "hint" den beiden Scenen-Opt
$(".homeoption").addClass("hint");
$(":outdooroption").addClass("hint");
});
Die beiden Funktionen definieren auch, was beim Drücken des Buttons eingeblendet und ausgeblendet werden soll. Dies geschieht durch die Klassen und ID’s, die in CSS definiert sind (wenige Ausnahmen befinden sich als Attributwert in HTML).
Sprechblase
Die Sprechblase der Figur in beiden Szenen hat jeweils einen verschiedenen Text. Aus diesem Grund wurden einmal die Klassen ‚bubble1‘, ‚bubbletoggle1‘, ‚bubble2‘, ‚bubbletoggle2‘ vergeben und an beide jeweils die Klassen ‚bubble‘ und ‚anim-typewriter‘.
<div id="bubbletoggle1" class="buble1" style="visibility:hidden;">
<a lass="bubble bubble1 anim-typewriter "> Ah! That was a good desicion! Now a nice cup of tea...would you set the kettle on? </a>
</div>
<div id="bubbletoggle2" class="bubble2" style="visibilioty:hidden;">
<a class="bubble bubble2 anim-typewriter">What a lovely day, isn't it? Ans such charming strangeers visiting!</a>
</div>
Die Klasse bubble
Die Klasse ‚bubble‘ ist dafür da, um die Sprechblase per CSS zu stylen. Die CSS-Attributwerte von ‚min-width‘, ‚max-width‘, ‚max-height‘ sind hierbei besonders wichtig, da sie bestimmen, wie groß die Sprechblase werden kann, wenn der Text auftaucht. Je nachdem, wie lang der Text ist, muss natürlich auch die ‚min-width‘, ‚max-width‘ und ‚max-height‘ angepasst werden. Wäre ‚max-height‘ in diesem Fall kleiner als die festgelegten ’50px‘, würde nicht der ganze Text auftauchen können.
Wichtig hierbei ist der Attributwert infinite, der leider etwas schwierig zu handhaben ist. Darauf wird in „bubbletoggle: Der unendliche Text“ weiter eingegangen.
Die Klassen bubble1 und bubble2
Die Klassen ‚bubble1‘ und ‚bubble2‘ werden in JavaScript verwendet, um die jeweilige Sprechblase in der richtigen Szene einzublenden und auszublenden. Die Klasse ‚bubble1‘ ist hierbei für die Home-Szene, ‚bubble2‘ für die Outdoor-Szene. Aus- und eingeblendet wird die Klasse in JavaScript mit ‚$(.bubble1).hide()‘ und ‚$(.bubble1).show()‘. Da beide Szenen auch unterschiedlich helle Hintergründe haben, wird mit dieser Klasse in CSS auch die Farbe der Sprechblasen angepasst.
Eigene Abbildung: Der unendliche Text der Sprechblase
Der Text in den Sprechblasen wird unendlich wiederholt, um dem User das Lesen zu ermöglichen und zu vereinfachen, wann auch immer die Szene ausgewählt wird und unabhängig davon, wie schnell die Lesegeschwindigkeit des Users ist. Die Klassen ‚bubbletoggle1‘ und ‚bubbletoggle2‘ werden dafür verwendet, um den Text der Sprechblasen durch JavaScript (und CSS) in HTML mit ‚visibility:hidden‘ und ‚visibility:visible‘ unsichtbar und sichtbar zu machen. Dies ist sehr ähnlich wie das, was die Klassen ‚bubble‘ und ‚bubble1‘ (oder bubble2) schon machen. Hierbei gibt es aber ein Problem:Unendlich heißt unendlich. Die einzige Möglichkeit in diesem Fall, den sich unendlich wiederholenden Text in der Sprechblase unsichtbar zu machen, ist über eine extra ID und ein dazugehöriger Style-Attributwert in HTML, der in JavaScript gezielt angesprochen wird. Damit wird keine andere Klasse beeinflusst oder verändert, was später zu Komplikationen führen könnte. In JavaScript sieht das dann folgendermaßen aus: $(„bubbletoggle1″).css({visibility:“visible“}); für die Home-Szene und für die Outdoor-Szene $(„#bubbletoggle2“).css({„visibility:“visible“}); . In dem Abschnitt Buttons ist die gesamte Funktion erklärt und zu sehen.
<div id="bubbletoggle1" class="bubble1" style="visibility:hidden;">
<a class="bubble bubble1 anim-typewriter ">Ah! That was a good decision! Now a nice cup of tea...would you set the kettle on?</a>
</div>
<div id="bubbletoggle2" class="bubble2" style="visibility:hidden;">
<a class="bubble bubble2 anim-typewriter">What a lovely day, isn't it? And such charming strangers visiting!</a>
</div>
Visuelle Effekte
Die Klasse hint
Eigene Abbildung: Klasse hint beim Start-Button und Stop-Button
Die User-Lenkung durch die Klasse ‚hint‘ wurde vom Zweck und der Funktion her im Abschnitt Besonderheiten erläutert. Der Licht-Pulse-Effekt wird in CSS erstellt und definiert.
Die Dauer der Animation ist mit ‚-webkit-animation-duration:2s;‘ festgelegt. Der Farbwechsel (oder auch die Intensität) im Verlauf der Animation ist durch die ‚@-webkit-keyframes hintpulse‘ definiert. Dabei wurden verschiedene Abstufungen des original Farbtons für die Intensität verwendet.
Der Wobble-Effekt
Der Wobble-Effekt wird durch die Klasse ‚wobble-vertical-on-hover‘ in CSS definiert. Beim Hovern über ein Element mit dieser Klasse „wobbelt“ jenes. Damit weiß der User, dass mit diesem Element interagiert werden kann. Die Definition und Animation ist in CSS festgelegt.
Mit der Klasse ‚wobble-vertical-on-hover‘ und zusätzlich ‚:hover‘, ‚:focus‘, ‚:active‘ wird festgelegt, dass sowohl beim hover, als auch so lange die Maus darauf ist der Effekt gilt. Mit ‚animation-iteration-count:infinite‘ wird dieser Effekt so lange wiederholt, bis weder ‚hover‘,’active‘ noch ‚focus‘ für dieses Element gilt, bzw. es dadurch nicht mehr ausgelöst wird. Mit ‚@keyframes wobble-vertical-on-hover‘ wird die Bewegung nach oben und unten definiert/ festgelegt; also die Vektoren, wo sich das Element mit dieser Klasse an einem bestimmten Prozent(-punkt) der Bewegung befinden muss.
Und nun sind alle wichtigen Code-Abschnitte erklärt. Falls das Interesse an dem Quellcode (inklusive Kommentare darin!) vorhanden ist, muss nur wieder nach zum Seitenanfang gesprungen, die ZIP-Datei heruntergeladen und entpackt werden!
Unsere PWA soll einige allgemeine Informationen über unseren Studiengang vorstellen. Dabei haben wir uns die Texte von der offiziellen Webseite des Studiengangs genommen: https://im.f3.hs-hannover.de/studium/
Anforderungen
Die Progressive Web App soll folgende Anforderungen (Use-Cases) erfüllen:
Navigation:
Anforderung: Navigation
Beschreibung: Dem Nutzer soll es möglich sein, durch die Applikation zu navigieren. Dabei sollen Links für die einzelnen Ansichten zur Verfügung stehen.
Detailbeschreibung: Die Navigation soll alle Ansichten der Webseite erreichbar machen. Vor allem soll dem Nutzer klar sein, welche Funktion die Links der Navigation haben.
Mockup:
2. Progressive Web App
Anforderung: Progressive Web App
Beschreibung: Die Applikation soll eine Progressive Web App sein und demnach alle üblichen Anforderungen dafür erfüllen.
Detailbeschreibung: Die Seite soll nur einmal geladen werden vom Browser. Daraufhin soll der komplette Content ohne neuladen der Seite erreichbar sein. Klickt man auf die Navigation, wird im Content Bereich der Seiteninhalt angezeigt, ohne das die komplette Seite neu lädt.
Der react-router-dom bietet eine Vielzahl an Möglichkeiten an die Navigation so umzusetzen, dass der Code sauber bleibt und die Applikation eine Single-Page-Applikation bleibt. (Beim Aufruf der Unterseiten wird nicht die komplette Seite neu geladen.) Nach Implementation der Navigation mit Hilfe des Tools ergibt sich folgende index.js:
3. Seiteninhalte/Komponenten erstellen
Wir wollen die Unterseiten Inhalt, Struktur, Zeitplan und Praxisphasen von https://im.f3.hs-hannover.de/studium/ in der PWA darstellen. Dafür haben wir jeweils eine JavaScript Datei erstellt. Daraufhin wurden sie in die index.js importiert und in die Navigation eingebunden (siehe Punkt 2 screenshot). Hier als Beispiel die inhalt.js:
Dies wurde analog für die anderen drei Seiten ebenfalls umgesetzt.
4. Aus der React App eine PWA generieren
Als wir die React Applikation soweit fertig hatten, galt es als nächstes daraus auch eine PWA zu generieren. Dafür nutzen wir das Chrome Tool Lighthous – Audits (https://developers.google.com/web/tools/lighthouse/)
Das Tool kann Webseiten darauf prüfen, ob diese PWA geeignet sind. Die Ergebnisse unseres ersten Tests waren wie folgt:
Als wir online recherchiert haben, sind wir auf folgende Anleitung gestoßen:
Die Anleitung beschreibt Schritt für Schritt, wie man aus einer react Applikation eine PWA erstellt.
Damit die Seite auch funktionieren kann, wenn der Nutzer offline ist (welches eine Voraussetzung für PWA’s ist), mussten wir einen ServiceWorker registrieren. Dafür haben wir eine worker.js Datei erstellt:
Und die index.html angepasst, sodass die App prüft, ob der genutzte Browser einen ServiceWorker unterstützt:
Natürlich muss auch der ServiceWorker noch in der index.js registriert werden:
Als nächstes haben wir die Splash-Icons hinzugefügt und Anpassung an der manifest.json durchgeführt. Dadurch kann der Nutzer die Webseite als App herunterladen und offline nutzen. Die gesetzten Icons werden dann als Verknüpfungssymbol genutzt:
Nach den Anpassungen gab uns der Test von Lighthouse Audits folgendes Ergebnis:
5. Deployment
Da unsere PWA nun startklar war, mussten wir diese nur noch deployen. Dafür reichte ein einzelner Befehl in der Kommandokonsole:
Damit wurde der Ordner “build” generiert, welcher auf den Produktionsserver (unser webspace) hochgeladen werden konnte.