Beschreibung
Wie bereits in Stochastik und Riemannsche Geometrie geschehen, fasse ich hier den Stoff der Multimediaprogrammierung zusammen. Im letzten Absatz zum Absatz schrieb die Dozentin nämlich:
Der Hauptteil der Prüfungsleistung besteht aus einer mündlichen Prüfung. Diese findet in der gleichen Gruppe statt, in der Sie das Projekt bearbeitet haben. Die mündliche Prüfung handelt von Ihrem Projekt sowie dem Stoff der Vorlesung. Es werden Einzelnoten erstellt.
Es werden Fragen zum Stoff der Vorlesung gestellt. Es werden außerdem Einzelnoten erstellt, d.h. entweder indem Fragen in Bezug zur Arbeitsteilung gestellt werden oder indem Fragen zum Vorlesungstoff gestellt werden.
Ich vermute stark, das keine Programmierfragen gestellt werden. Insbesondere nicht zu Python, das wir nicht verwendet hatten. Ich sollte mich demnach auf die Sachen fokussieren, die ich in meiner Arbeitsteilung drin stehen habe. Ich sollte außerdem Konzepte lernen, die 1) gut abgefragt werden können, 2) nicht auf Unity/Python beschränkt sind.
Auf diese Basis erstelle ich nun meine Zusammenfassung.
Arbeitsteilung
Ich beschreibe die einzelnen Sachen, damit ich es später reproduzieren kann.
- Hintergrund dem Setting anpassen Hintergrund auf verschiedene Ebenen gesetzt. Hintergrund auf wrapping gesetzt. Skript geschrieben, dass den Hintergrund mit anderer Geschwindigkeit als der Spieler bewegt.
- Lichter Global Light hinzugefügt. Viele Point und Freeform Lights.
- Level Segmente erstellen Pixelart png importieren. 2D Texture auf Multiple stellen und mit der richtigen Pixelzahl aufschneiden. Aufgeschnittene Texturen zur Palette hinzufügen. TileMap-Objekt erstellen. Aus der Palette hineinmalen. CollisionComponent hinzufügen. TileMaps in unterschiedliche Tiefen setzen. damit sie sich korrekt überlappen.
- GitHub Management Erstellen des Repos. Erklären der Grundfunktionen, Festlegen der Regeln.
- WebGL Export Anpassen der Editor-Skripte, Anpassen der Optionen, Export des Projekts, Starten eines Webservers, Testen des Spiels, Reparieren des Ressources Ordners.
Themen
Wenn man in die Vorlesungsnotizen schaut sieht man viele Sachen, die niemals abgefragt werden können. Beispielsweise kommt viel historisches dran. Ich lerne das mal nicht.
Game Engines
Wir behandelten die Zwecke der Game Engines und die Vorteile gegenüber herkömmlichen Programmierumgebungen. Die beinhaltete zum Beispiel Integration von Welt, Sound, Physik, Graphiken, etc. Wir sprachen über Schwierigkeiten, die bei verschiedenen Spielen auftauchen können.
Wir sprachen über die wichtigsten Konzepte in Unity wie Projekte, Hierarchie, Szenen, usw.
Programmiersprachen
Wir sahen uns die Unterschiede zwischen Compiler/Interpreter-Sprachen an, behandelten die Unterschiede zwischen stark/schwach sowie statischer/dynamischer Typisierung. Wir behandelten außerdem duck-typing
Graphik
Wir schauten uns einige Techniken der Computergraphik an. Eines war, dass durch die Verwendung eines einzigen (sichtbaren) Leinwand unfertige Zeichnungen erkennbar sind wodurch ein Flickern entsteht. Das Problem wird durch einen zweiten Puffer gelöst.
Des Weiteren sahen wir ins BLITing an. Hier werden viele kleine Änderungen in einem Puffer zusammengefasst und auf einmal auf den Bildschirm gebracht Mit Screen Locking kann man irgendwie einen Teil des Bildschirms für eine gewisse Zeitspanne blockieren und damit irgendwie die Performance verbessern.
Animationen
Animationen waren ebenfalls ein großes Thema. Wir sahen uns an, was die FrameRate und was DeltaTime ist. Wir sahen uns Frame-by-Frame-Animation und Animation durch Interpolation an.
Interaktivität
Programmiert man eine Benutzernahe Applikation gibt es verschiedene Stufen der Interaktivität:
- Passiv, der Nutzer tut nichts
- Reaktiv, die Applikation reagiert auf Nutzereingaben
- Proaktiv, der Nutzer muss was tun
- Direktiv, der Nutzer hat kreative Freiheit
Physik
Wir sahen uns an, was es für verschiedene Physiksysteme gibt. Dabei nahmen wir die Rigid body Systems genauer unter die Lupe (weil sie einfacher sind). Wichtig ist hier bloß, dass es Objekte mit Attributen gibt, die Physikalischen Gesetzen simulieren. Diese Physiksysteme werden durch Physikkomponenten hinzugefügt.
Sound
Wir haben auch über Sound gesprochen. Das kommt mir aber nicht so wichtig vor, deshalb überspringe ich es mal. Naja, wissenswert ist vielleicht, dass es Audio Sources und Audio Listeners in Unity gibt.
Softwareentwicklungsprozesse
Welche Workflows gibt es zur Entwicklung eines Projekts? Nun, das Wasserfallmodell ist ein offensichtliches. Dieses besteht klassischerweise aus Analyse, Design, Implementation, Test und Wartung. Hat man Projekte mit wechselnden Anforderungen ist aber ein iteratives Vorgehen vielleicht sinnvoller. Hierunter ist Scrum ein ganz klassisches Beispiel. Ein anderes ist iterative Play Design. Die Schritte sind folgende:
- Idee ausdenken
- Idee implementieren
- Idee ausprobieren
- Verbessern
- Von vorne
Design Dilemma
Spiele haben das Problem, dass sie Software-Design, Media-Design und Interaction-Design erfordern. All diese Design Typen unterscheiden sich von den benötigten Skill erheblich voneinander. Das grundsätzliche Vorgehen Analyse, Design, Kreation, Test, Wartung des Wasserfallmodells ist aber bei allen dreien gleich. Es ergibt sich darauf ein 3-spuriges-Wasserfall-Modell und eine 3-spurige-iterative Entwicklung
Geschichte der Multimedia Programmierung
MMP hat angefangen mit Alto und Smalltalk, ging dann weiter mit Flash. Als Flash ausstarb, wurde es durch JavaFX ersetzt. Nun dominieren Spiele-Engines den Markt.