Upgrade to Pro — share decks privately, control downloads, hide ads and more …

FMI Workshop 2016 - CS 108 Bootcamp - Teil 2

FMI Workshop 2016 - CS 108 Bootcamp - Teil 2

Im zweiten Semester wartet auf die Informatikstudierenden an der
Universität Basel eines der Studien-Highlights: Das Gameprojekt. In
dieser anwednungsbezogenen Vorlesung werden in Gruppen von Studierenden
ein Multiplayerspiel in Java entwickelt. Im vierteiligen CS108 Bootcamp
werden Euch alle Aspekte der Softwareentwicklung erläutert, die für das
Programmierprojekt relevant sind.

Referent: Loris Sauter - loris.sauter (at) unibas.ch

More Decks by Fachgruppe Mathematik Informatik Uni Basel

Other Decks in Programming

Transcript

  1. Einführung Kurze Wiederholung des letzten Workshops: Demos abgeschlossener Projekte In

    Gruppen: Skizze eines Spiels Abstimmung Beispiel-Projekt → “Kampf der Burgen” Am Ende der Workshop-Serie kein fertiges Spiel. Beispiel-Projekt dient als Basis um Konzepte zu erläutern CS108 Bootcamp –Konzept und Techniken 4 / 23
  2. Einführung Kurze Wiederholung des letzten Workshops: Demos abgeschlossener Projekte In

    Gruppen: Skizze eines Spiels Abstimmung Beispiel-Projekt → “Kampf der Burgen” Am Ende der Workshop-Serie kein fertiges Spiel. Beispiel-Projekt dient als Basis um Konzepte zu erläutern CS108 Bootcamp –Konzept und Techniken 4 / 23
  3. Kampf der Burgen Rundenbasiert Ziel: Mit Katapult gegnerische Burg zerstören

    Physik: Wurfwinkel, evt. Wind Möglicher Ausbau: Burgbau vor Kampf, Geld und Bodeneinheiten Bildquellen: Katapult: https://pixabay.com/photo-148509/ Burg: http://www.123gif.de/gifs/burgen/burg-0008.gif Burgturm: http://www.clipartkid.com/images/661/radio-tower-clip- art-cliparts-co-LdClKq-clipart.png Abbildung 1: Skizze von “Kampf der Burgen” CS108 Bootcamp –Konzept und Techniken 5 / 23
  4. Rahmenbedingungen 1. Java-Version 1.7+ 2. Multiplayer-Spiel 3. Client-Server Architektur: Server

    verantwortlich für Halten und Modifizieren des Spielstatus Client als (graphische) Schnittstelle zwischen Benutzer und Server 4. Server und Clients kommunizieren über selbst definiertes, textbasiertes Netzwerk-Protokoll 5. Projekt-Ende: komplette Distribution des Spiels inklusive: lauffähiges Spiel (plus Quellcode), Installationsanleitung, Handbuch, Screenshot des Spiels 6. … CS108 Bootcamp –Konzept und Techniken 7 / 23
  5. Rahmenbedingungen 1. Java-Version 1.7+ 2. Multiplayer-Spiel 3. Client-Server Architektur: Server

    verantwortlich für Halten und Modifizieren des Spielstatus Client als (graphische) Schnittstelle zwischen Benutzer und Server 4. Server und Clients kommunizieren über selbst definiertes, textbasiertes Netzwerk-Protokoll 5. Projekt-Ende: komplette Distribution des Spiels inklusive: lauffähiges Spiel (plus Quellcode), Installationsanleitung, Handbuch, Screenshot des Spiels 6. … CS108 Bootcamp –Konzept und Techniken 7 / 23
  6. Rahmenbedingungen 1. Java-Version 1.7+ 2. Multiplayer-Spiel 3. Client-Server Architektur: Server

    verantwortlich für Halten und Modifizieren des Spielstatus Client als (graphische) Schnittstelle zwischen Benutzer und Server 4. Server und Clients kommunizieren über selbst definiertes, textbasiertes Netzwerk-Protokoll 5. Projekt-Ende: komplette Distribution des Spiels inklusive: lauffähiges Spiel (plus Quellcode), Installationsanleitung, Handbuch, Screenshot des Spiels 6. … CS108 Bootcamp –Konzept und Techniken 7 / 23
  7. Rahmenbedingungen 1. Java-Version 1.7+ 2. Multiplayer-Spiel 3. Client-Server Architektur: Server

    verantwortlich für Halten und Modifizieren des Spielstatus Client als (graphische) Schnittstelle zwischen Benutzer und Server 4. Server und Clients kommunizieren über selbst definiertes, textbasiertes Netzwerk-Protokoll 5. Projekt-Ende: komplette Distribution des Spiels inklusive: lauffähiges Spiel (plus Quellcode), Installationsanleitung, Handbuch, Screenshot des Spiels 6. … CS108 Bootcamp –Konzept und Techniken 7 / 23
  8. Rahmenbedingungen 1. Java-Version 1.7+ 2. Multiplayer-Spiel 3. Client-Server Architektur: Server

    verantwortlich für Halten und Modifizieren des Spielstatus Client als (graphische) Schnittstelle zwischen Benutzer und Server 4. Server und Clients kommunizieren über selbst definiertes, textbasiertes Netzwerk-Protokoll 5. Projekt-Ende: komplette Distribution des Spiels inklusive: lauffähiges Spiel (plus Quellcode), Installationsanleitung, Handbuch, Screenshot des Spiels 6. … CS108 Bootcamp –Konzept und Techniken 7 / 23
  9. Rahmenbedingungen 1. Java-Version 1.7+ 2. Multiplayer-Spiel 3. Client-Server Architektur: Server

    verantwortlich für Halten und Modifizieren des Spielstatus Client als (graphische) Schnittstelle zwischen Benutzer und Server 4. Server und Clients kommunizieren über selbst definiertes, textbasiertes Netzwerk-Protokoll 5. Projekt-Ende: komplette Distribution des Spiels inklusive: lauffähiges Spiel (plus Quellcode), Installationsanleitung, Handbuch, Screenshot des Spiels 6. … CS108 Bootcamp –Konzept und Techniken 7 / 23
  10. Typisierung Singleplayer vs Multiplayer kooperativ vs kompetitiv Echtzeit vs Rundenbasiert

    Adaption vs Original statisch vs generativ Quelle: CS108 Bootcamp Folien 2012 CS108 Bootcamp –Konzept und Techniken 9 / 23
  11. Praxis: Typisierung Auftrag In Kleingruppen, ca 5 Minuten Typisierung von

    “Kampf der Burgen” Charakterisierung des Spiels: Was sind essentielle Spielelemente? CS108 Bootcamp –Konzept und Techniken 10 / 23
  12. Projektplanung Meilenstein-Termine beachten Anforderungen der Meilensteine einhalten Genug Zeit einplanen

    Projektplan mit z.B. Gantt, Asana erstellen Arbeitseinteilung sinnvoll halten Dokumentation des Projekts Kommunikation im Team nicht vernachlässigen CS108 Bootcamp –Konzept und Techniken 12 / 23
  13. Projektplanung Meilenstein-Termine beachten Anforderungen der Meilensteine einhalten Genug Zeit einplanen

    Projektplan mit z.B. Gantt, Asana erstellen Arbeitseinteilung sinnvoll halten Dokumentation des Projekts Kommunikation im Team nicht vernachlässigen CS108 Bootcamp –Konzept und Techniken 12 / 23
  14. Projektplanung Meilenstein-Termine beachten Anforderungen der Meilensteine einhalten Genug Zeit einplanen

    Projektplan mit z.B. Gantt, Asana erstellen Arbeitseinteilung sinnvoll halten Dokumentation des Projekts Kommunikation im Team nicht vernachlässigen CS108 Bootcamp –Konzept und Techniken 12 / 23
  15. Projektplanung Meilenstein-Termine beachten Anforderungen der Meilensteine einhalten Genug Zeit einplanen

    Projektplan mit z.B. Gantt, Asana erstellen Arbeitseinteilung sinnvoll halten Dokumentation des Projekts Kommunikation im Team nicht vernachlässigen CS108 Bootcamp –Konzept und Techniken 12 / 23
  16. Projektplanung Meilenstein-Termine beachten Anforderungen der Meilensteine einhalten Genug Zeit einplanen

    Projektplan mit z.B. Gantt, Asana erstellen Arbeitseinteilung sinnvoll halten Dokumentation des Projekts Kommunikation im Team nicht vernachlässigen CS108 Bootcamp –Konzept und Techniken 12 / 23
  17. Projektplanung Meilenstein-Termine beachten Anforderungen der Meilensteine einhalten Genug Zeit einplanen

    Projektplan mit z.B. Gantt, Asana erstellen Arbeitseinteilung sinnvoll halten Dokumentation des Projekts Kommunikation im Team nicht vernachlässigen CS108 Bootcamp –Konzept und Techniken 12 / 23
  18. Projektplanung Meilenstein-Termine beachten Anforderungen der Meilensteine einhalten Genug Zeit einplanen

    Projektplan mit z.B. Gantt, Asana erstellen Arbeitseinteilung sinnvoll halten Dokumentation des Projekts Kommunikation im Team nicht vernachlässigen CS108 Bootcamp –Konzept und Techniken 12 / 23
  19. Client/Server-Architektur Abbildung 2: Darstellung Client/Server-Architektur Bildquelle: http://winfwiki.wi-fom.de/images/5/57/ClientServer.jpg Server Haltet und

    verwaltet Zustand des Spiels und der verbundenen Clients. Kommuniziert mit den Clients um Daten und Befehle auszutauschen. Client Ist Schnittstelle zum Benutzer, stellt Zustand graphisch dar. Leitet Benutzereingaben an den Server weiter. CS108 Bootcamp –Konzept und Techniken 14 / 23
  20. Client/Server-Architektur Abbildung 2: Darstellung Client/Server-Architektur Bildquelle: http://winfwiki.wi-fom.de/images/5/57/ClientServer.jpg Server Haltet und

    verwaltet Zustand des Spiels und der verbundenen Clients. Kommuniziert mit den Clients um Daten und Befehle auszutauschen. Client Ist Schnittstelle zum Benutzer, stellt Zustand graphisch dar. Leitet Benutzereingaben an den Server weiter. CS108 Bootcamp –Konzept und Techniken 14 / 23
  21. Kommunikation Abbildung 3: Graphische Darstellung Client/Server Kommunikation Bildquelle: http://www.enzyklopaedie-der-wirtschaftsinformatik.de/Members/fettke/cs-1.gif/image_preview Textbasiertes

    Kommunikationsprotokoll Protokoll definiert Befehle Daten, Spielzustand, etc Essentiell für funktionierendes Spiel CS108 Bootcamp –Konzept und Techniken 15 / 23
  22. Kommunikation Abbildung 3: Graphische Darstellung Client/Server Kommunikation Bildquelle: http://www.enzyklopaedie-der-wirtschaftsinformatik.de/Members/fettke/cs-1.gif/image_preview Textbasiertes

    Kommunikationsprotokoll Protokoll definiert Befehle Daten, Spielzustand, etc Essentiell für funktionierendes Spiel CS108 Bootcamp –Konzept und Techniken 15 / 23
  23. Kommunikation Abbildung 3: Graphische Darstellung Client/Server Kommunikation Bildquelle: http://www.enzyklopaedie-der-wirtschaftsinformatik.de/Members/fettke/cs-1.gif/image_preview Textbasiertes

    Kommunikationsprotokoll Protokoll definiert Befehle Daten, Spielzustand, etc Essentiell für funktionierendes Spiel CS108 Bootcamp –Konzept und Techniken 15 / 23
  24. Kommunikation Abbildung 3: Graphische Darstellung Client/Server Kommunikation Bildquelle: http://www.enzyklopaedie-der-wirtschaftsinformatik.de/Members/fettke/cs-1.gif/image_preview Textbasiertes

    Kommunikationsprotokoll Protokoll definiert Befehle Daten, Spielzustand, etc Essentiell für funktionierendes Spiel CS108 Bootcamp –Konzept und Techniken 15 / 23
  25. Modularisierung Auftrag Definieren von Komponenten Erstellen einer möglichen Modul-Skizze Software

    in logische Komponenten aufteilen → Java: packages verwenden Trennen der Abstraktionslevel CS108 Bootcamp –Konzept und Techniken 17 / 23
  26. Modularisierung Abbildung 4: Mögliche Modularisierung Software in logische Komponenten aufteilen

    → Java: packages verwenden Trennen der Abstraktionslevel CS108 Bootcamp –Konzept und Techniken 17 / 23
  27. Modularisierung Abbildung 4: feinere Modularisierung Software in logische Komponenten aufteilen

    → Java: packages verwenden Trennen der Abstraktionslevel CS108 Bootcamp –Konzept und Techniken 17 / 23
  28. Client Design –Model View Controller Abbildung 5: Model View Controller

    Konzept Bildquelle: https://upload.wikimedia.org/wikipedia/commons/a/a0/MVC-Process.svg Trennen der Abstraktionslevel Unterscheidung zwischen Darstellung (View) Speicherung der Daten (Model) Verwaltung / Veränderung (Controller) der Daten und Benutzereingaben CS108 Bootcamp –Konzept und Techniken 19 / 23
  29. Design Muster –Observer Abbildung 6: Observer-Muster als UML-Diagramm Bildquelle: https://upload.wikimedia.org/wikipedia/de/8/88/Beobachterentwurfsmuster.png

    Einsetzbar z.B. für Spielfluss Teile des Konzept der Java-Swing Bibliotheken Geeignet für Spielstandupdates Serverseitige Administration der Clients CS108 Bootcamp –Konzept und Techniken 20 / 23
  30. Design Muster –Observer Abbildung 6: Observer-Muster als UML-Diagramm Bildquelle: https://upload.wikimedia.org/wikipedia/de/8/88/Beobachterentwurfsmuster.png

    Einsetzbar z.B. für Spielfluss Teile des Konzept der Java-Swing Bibliotheken Geeignet für Spielstandupdates Serverseitige Administration der Clients CS108 Bootcamp –Konzept und Techniken 20 / 23
  31. Ausblick Bootcamp III Heute erlerne Konzepte anwenden auf “Kampf der

    Burgen” Effektives Programmieren → http://eclipse.org Best Practices kennenlernen CS108 Bootcamp –Konzept und Techniken 22 / 23
  32. Ausblick Bootcamp III Heute erlerne Konzepte anwenden auf “Kampf der

    Burgen” Effektives Programmieren → http://eclipse.org Best Practices kennenlernen CS108 Bootcamp –Konzept und Techniken 22 / 23
  33. Ausblick Bootcamp III Heute erlerne Konzepte anwenden auf “Kampf der

    Burgen” Effektives Programmieren → http://eclipse.org Best Practices kennenlernen CS108 Bootcamp –Konzept und Techniken 22 / 23