Änderungen

Wechseln zu: Navigation, Suche

GameDevWeek/Programmieren

1.062 Bytes hinzugefügt, 08:55, 13. Mär. 2016
Tutorials
== Allgemein ==Als Dieser Artikel ist für Programmierer arbeitet man in der Regel in einem Teilbereich zusammen mit anderen Programmierern. Im folgenden sind Teilbereiche aufgelistet mit einer Auflistung welche Klassen man sich dazu mal anschauen sollteJava-Gruppe gedacht. Je nach dem für welches Aufgabengebiet ihr euch interessiertEs wird empfohlen, solltet ihr euch die angegeben Klassen und Packages einmal anschauen. Außerdem empfehlen wir auch sehr das Libgdx Wiki und deren Demoprogramme sowie Libgdx Tests. Wir empfehlen erst einmal den Wikieintrag Artikel sorgsam zu lesen, danach etwas im zugehörigen Quellcode zu stöbern und dann noch einen Blick anschließend die Tutorials in die Demos und Tests den Themengebieten zu werfen! Das Ziel istbearbeiten, dass ihr für die ein ungefähres Verständnis habt was Interesse besteht. Weiterhin empfiehlt es für Klassen sich, die Struktur von [https://github.com/GameDevWeek/GDW-2012-SS/tree/master/gdx-sotf/src/main/java/de/hochschuletrier/gdw/ss12 Code] und Zusammenhänge gibt[https://github. Manches davon wie Physik oder Rendering ist kompliziertercom/GameDevWeek/GDW-2012-SS/tree/master/gdx-sotf/src/main/resources/data Assets] des Spiels Survival of the Fattest anzuschauen, anderes wie Audio und Assets ist eher einfacher welche als Guideline für alle GDW-Projekte gilt.Um bereits im Vorraus zu verstehenexperimentieren, kann der Code des [https://github.com/GameDevWeek/CodeBase Master Branches] ausgecheckt/geforkt werden. Es wird ein [http://www.gamedev.net/page/resources/_/technical/game-programming/understanding-component-entity-systems-r3013 Entity Component System] ''(ECS)'' namens [https://github.com/libgdx/ashley/wiki Ashley] verwendet. Jeder Programmierer sollte zumindest die [http://www.gamedev.net/page/resources/_/technical/game-programming/understanding-component-entity-systems-r3013 Grundidee] eines ECS verstanden haben.
== Entwicklungsumgebung ==
Als Entwicklungsumgebung werden Eclipse und NetBeans unterstützt. Für jede der beiden IDEs wird es fertige Bundles geben, die alle benötigten Plugins und Voreinstellungen beinhalten.
Sollte eine bereits installierte IDE genutzt werden wollen, muss zunächst sichergestellt werden, dass die nötigen Plugins installiert und konfiguriert sind.
Sollte eine andere IDE genutzt werden wollen, kann im Problemfall kein umfassender Support garantiert werden.
 
=== Anforderungen an die IDE ===
Es wird erwartet, dass die genutzte IDE folgende Anforderungen erfüllt:
* JDK 8
* Maven Unterstützung
* Projektspezifische Einstellungen:
** UTF-8 Character Encoding
** 4 Whitespaces anstelle von Tabs
 
Im Abschnitt[[GameDevWeek/Programmieren#Tutorials|Tutorials]] finden sich Hilfestellungen hierzu.
Unsere Entwicklungsumgebung wird Eclipse sein=== Git Tools ===Jede moderne IDE beinhaltet eingebettete Tools zur Unterstützung der Versionsverwaltung Git ''(EGit u.A. Wir werden euch ein fertiges Eclipse Bundle anbieten, das alle Plugins und das voreingestellte Projekte beinhaltet)''. Solltet ihr euer bereits installiertes Eclipse nutzen wollen, stellt bitte sicher, dass ihr die nötigen Plugins installiert Diese verschleiern oft den Git Workflow und konfiguriert. Solltet ihr eine andere IDE nutzen wollen sorgen so können wir euch nicht 100% versprechen euch helfen zu können, sollten Probleme auftretenfür Verständnis- und Technikproblemen. In diesem Fall solltet ihr eure IDE selbst gut kennen ;)
== Versionskontrolle und Build System Genutzte Technologien ===== Framework & Codebase ===Um nicht jeden Aspekt eines Spiels selber zu implementieren und sich somit auf die Entwicklung des Spiels konzentrieren zu können, wird das Java-Spieleframework [http://libgdx.badlogicgames.com/ LibGDX] in Kombination mit dem ECS [https://github.com/libgdx/ashley/wiki Ashley] (auch von LibGDX) verwendet.
Zur Versionsontrolle setzen wir GIT ein. Dazu wird es auf Zudem existieren eigene Klassen, die in der [httphttps://www.github.com/ Github] ein Repository geben zu dem jeder Teilnehmer Zugriff bekommt. Das bedeutet jeder Programmierer benötigt '''einen Github Account'''. Solltet ihr noch überhaupt keine Ahnung von Versionskontrolle habe, dann lest euch die Dokumentation auf der [http:/GameDevWeek/git-scm.comCodeBase/ Git Homepagewiki Codebase] durchzur Verfügung gestellt werden. Zumindest das Prinzip und das Ziel eines solchen Systems solltet ihr schonmal gehört haben. Die eigentliche Benutzung ist dann relativ einfach und mit wenigen (aber bitte durchdachten! ) Klicks erledigt. Während der GDW stehen euch die Organisatoren hier natürlich zur Seite!=== Versionskontrolle ===
Um Als Versionsontrolle wird Git zu nutzen stehen euch 2 Möglichkeiten zur Verfügung. Einmal könnt ihr das mittlerweile in Eclipse integrierte Plugin EGit benutzeneingesetzt. Dazu müsst ihr unter “Window-> Open Perspective” nur die “Git Repository Exploring” View öffnen. Nähere Informationen findet ihr wird es auf der [httpshttp://www.eclipsegithub.org/egitcom/ EGit HomepageGitHub]ein Repository geben zu dem jeder Teilnehmer Zugriff erhält. Das bedeutet jeder Programmierer benötigt '''einen Account auf github.com'''. Oder falls ihr es etwas ausführlicher wollt gibt es Sollten keine rudimentären Kenntnisse zur verwendung einer Versionskontrolle vorhanden sein, wird darum gebeten die standalone GUI Dokumentation auf der [httpshttp://code.googlegit-scm.com/p/gitextensions/ Git ExtensionsHomepage]zurate zu ziehen. Im Mindestens das Prinzip und das Ziel eines solchen Systems solltet in Grundzügen verstanden werden. Wir empfehlen Die Verwendung des Programms Git beschränkt sich meist auf wenige, einfache Konsolenbefehle. Während der GDW stehen die standalone VersionOrganisatoren für Fragen zur Verfügung. Hier habt ihr deutlich mehr Überblick über den Ablauf!
Um die Abhängigkeiten für Java, Libgdx und andere benötigte Bibliotheken einfach Es stehen euch zwei Möglichkeiten bereit Git zu verwalten, werden wir Maven verwenden. Maven benötigt nur eine Datei mit dem Namen “pom.xml” und lädt dann dynamisch die nötigen Bibliotheken aus zentralen Repositories. Damit müssen wir keine Libraries mehr mit nutzen:* Git synchronisieren. Für Maven gibt es bereits das Eclipse Plugin als Kommandozeilen Programm* [http://www.eclipsesourcetreeapp.org/m2e/ m2eclipsecom SourceTree]. Nach der Installation könnt ihr über “Import->Maven” ein solches Projekt importieren. Die Abhängigkeiten werden dann direkt heruntergeladen und in das Projekt integriert.''(als "Einsteigerfreundliche" GUI)''
== Beispielcode ==Build System === Um die Abhängigkeiten für Java, Libgdx ===und andere benötigte Bibliotheken einfach zu verwalten, wird Maven verwenden. Maven benötigt lediglich eine Datei mit dem Namen "pom.xml" und lädt auf deren Basis dynamisch die nötigen Bibliotheken aus zentralen Repositories. Auf diese Art und Weise müssen keine Libraries über Git synchronisiert werden.
Um euch den Einstieg etwas zu erleichtern und schonmal funktionierenden Code zu sehen, solltet ihr das Libgdx Repository herunterladenNetBeans kann Maven Projekte von Haus aus laden. Am besten klont ihr Eclipse benötigt das Git Repository. So könnt ihr schonmal mit Git üben. Der ganze Prozess ist bereits im Libgdx Wiki beschrieben. Also folgt bitte Plugin "''([httpshttp://githubwww.eclipse.com/libgdxorg/libgdxm2e/wiki/Running-demos-%26-tests dieser Anleitungm2eclipse])''", welches das Maven Projekt in ein Eclipse Projekt konvertiert. Das Klonen des Repositories müsst ihr natürlich nicht auf der Konsole machen sondern mit dem Eclipse Plugin oder Nach der Git ExtensionsInstallation kann über "Import -GUI!> Maven" ein solches Projekt importiert werden. Die Abhängigkeiten werden dann heruntergeladen und in das Projekt integriert.
Sobald ihr alles heruntergeladen und importiert habt erscheinen erstmal sehr viele neue Projekte in == Tutorials ==* [[GameDevWeek/Poolrechner|Aufsetzen auf dem Poolrechner]]* IDE für die GDW korrekt aufsetzen:** [[GameDevWeek/NetBeans|NetBeans]]** [[GameDevWeek/Eclipse|Eclipse]]* Versioning:** [http://buildamodule. Ihr habt jetzt wirklich das komplette Libgdx Projekt inklusive Game engine, backends, utilities,tests und demoscom/video/change-management-and-version-control-deploying-releases-features-and-fixes-with-git-how-to-use-a-scalable-git-branching-model-called-gitflow How to use a scalable Git branching model called Gitflow]** [[GameDevWeek/SourceTree|SourceTree Einführung]]** [https://github. Sollten davon einige Fehler haben liegt das wahrscheinlich daran, dass euch com/nvie/gitflow Git Flow für die Android Development Bibliotheken fehlenKommandozeile]** [https://github.com/GameDevWeek/Conflict-Test Konflikt-Lösung Übungsaufgabe]** [https://cloud. Das ist nicht schlimm, ihr könnt die Desktopversion trotzdem ausführenfsi.hochschule-trier.de/index.php/s/g47mwE93s0PXAbE Git Vortragsfolien]* Sonstiges:** [https://github.com/GameDevWeek/CodeBase/wiki Die Codebase]
Hier sind noch einige andere Links Einige externe Tutorials zu TutorialsLibGDX:
* [https://github.com/libgdx/libgdx/wiki/A-simple-game A simple game]
* [https://code.google.com/p/libgdx/wiki/VideoTutorials ältere Tutorial videos]
* [http://steigert.blogspot.de/2012/02/1-libgdx-tutorial-introduction.html steigert blog]
* [https://github.com/libgdx/ashley/wiki Ashley Tutorials]
=== GDW Bibliothek =Themengebiete ==Als Programmierer arbeitet man in der Regel in einem Teilbereich zusammen mit anderen Programmierern.Im Folgenden sind Teilbereiche aufgelistet, die regelmäßig vorkommen.
Einige Dinge sind während der letzen GDWs entstanden, die wiederverwendet werden können. Code für die Netzkommunikation, ein Box2DWrapper, Asset Loader und andere Helferklassen findet ihr darin. Wir werden das dann auch im Git Repository ablegen.
 
== Themen ==
=== User Interface ===
==== Heads Up Head-up-Display ====Ihr visualisert Es werden die Informationen aus den Klassen der Spielweltvisualisert. Ihr entscheidet Es muss über das Layout und die Widgets mit denen etwas dargestellt wirdentschieden werden. Manche davon sind bereits etabliert wie Label, Listen oder Slider. Andere wie bspw z.B. eine Minimap müssen selbst umgesetzt werden.
==== Menü ====
Hier besteht die Anforderung darin , ein Menu und eine Menüstruktur zu implementieren. Dazu gehören bspw beispielsweise ein Splashscreen zu Beginn, ein Startscreen, Serverbrowser, Charakterauswahl und ähnlichesÄhnliches. Ihr kümmert euch Es wird sich auch um mit den Input während das Menü angezeigt wirdfür die Menüs beschäftigt. Dazu müsst ihr müssen Maus und Tastatureingaben verarbeitenverarbeitet werden.
=== Assetverwaltung ===
 Eure Die Aufgabe in diesem Bereich ist es , alle nötigen Mediendateien des Spiels zu laden und zu verwalten. Dazu gehören Texturen, Audiofiles, Schriftarten, Mapdateien, Settings Einstellungen und ähnlichesÄhnliches. Ihr setzt euch Es wird sich damit auseinander wann auseinandergesetzt, zu welchem Zeitpunkt welche Assets geladen werden müssen. Um speicherfreundlich zu arbeiten sollten nicht immer alle Assets des Spiels im Speicher gehalten werden. Ihr erschafft also die Es wird eine Schnittstelle für Assets geschaffen, die viele andere Gruppen nutzen . Aus diesem Grund muss sichergestellt werden und müsst sicherstellen, dass jeder alle Mitarbeiter bequem auf die Assets zugreifen kannkönnen.
=== Audio ===
 Euer Team bring Das Audioteam bringt den Ton ins Spiel. Ihr Es verwaltet alle laufenden Sounds und achtet darauf , dass nicht zuviele zu viele Geräusche gleichzeitig abgespielt, geladen oder gestreamt werden. Je nach Spielsituation werden die Sounds auch verändert werden. 
=== Input ===
Das Inputteam verarbeitet jegliche Benutzereingabe während des laufenden Spiels. Es verarbeitet Tastatur-, Maus-, Touchpad- und Controllereingaben und leitet diese an die Spielobjekte weiter, um die zugehörigen Aktionen auszulösen. Es beschäftigt sich weiter mit verschiedenen Tastaturbelegungen und mit der Unterstützung verschiedener Controllertypen
Euer Team verarbeitet jeden Input während des laufenden Spiels. Ihr verarbeitet Tastatur, Maus, Touchpad und Controllereingaben und leitet diese an die Spielobjekte weiter um die zugehörigen Aktionen auszulösen. Ihr kümmert euch um verschiedene Tastaturbelegungen und darum verschiedene Controllertypen zu unterstützen.  === Gamelogik Spielelogik === Eure Die Aufgabe der Spielelogik-Abteilung ist das Grundgerüst die Implementierung des Grundgerüstes für das Spiel zu implementieren. Ihr Sie implementiert die zentrale Klasse zentralen Klassen und Schnittstelle Schnittstellen für alle anderen Teams. Hauptsächlich Im Wesentlichen setzt ihr sie alle Objekte der Spielwelt mit ihrer Funktionalität um. Dazu gehören bspw z.B. der Spieler, die Gegner NPCs und die Items. Oder auch , sowie interaktive Mapelemente Elemente wie Türen und Schranken. Ihr setzt also die ''(Spielmechaniken um.)''
=== Rendering ===
 Eure Aufgabe ist das Diese Abteilung beschäftigt sich mit dem Zeichnen von der Welt, den Spielern, Entities, etcAnimationen. Animationen, Partikeleffekte und Shader benötigen b3esondere hierbei besondere Aufmerksamkeit. Ihr seid für den WOW Effekt zuständig. Oft kann man durch visuelles Feedback den der Spielspaß stark erhöhengesteigert werden.
=== Physik ===
 Euer Team Das Physikteam beschäftigt sich damit die mit der Anbindung der Physikengine "Box2D anzubinden". Dazu gibt es existiert bereits einen Wrapper in LibgdxLibGDX. Ihr kümmert euch darum den Spielobjekten Es sorgt dafür, dass die Spielobjekte eine Repräsentation in der Physikimulation zu gebenPhysiksimulation erhalten. Dazu gehören einerseits Form, Masse, Dichte und Reibung eines Objekts. Andererseits , andererseits müssen diese Objekte aktiviert, deaktiviert, bewegt und verändert werden können. Dazu ist ein genaueres Verständnis der Physikengine notwendig. Außerdem stellt ihr sicherwird sichergestellt, dass die Spielobjekte korrekt mit der Physiksimulation synchronisiert werden, damit Grafik und Physik sich nicht unterscheidendivergieren.
=== Netzwerk ===
 Eure Die Aufgabe des Netzwerkteams ist es , die Spieldaten im Netzwerk synchron zu haltensynchronisieren. Damit sich das Spiel in auf jedem Client das selbe istim selben Status befindet, müssen ausgewählte Daten ständig synchronisiert werden. Ihr setzt euch Es wird sich mit Timing und Umfang dieser Datenpakete auseinanderauseinandergesetzt. Außerdem müsst ihr Weiter muss ein Client-Server Konzept integrieren. Dieses Aufgabengebiet berührt sehr viele andere integriert werden, was aufgrund der starken Verknüpfung mit den Aufgabenbereichen anderer Teams und erfordert viel Abspracheeine empfindliche Aufgabe darstellt.
=== Künstliche Intelligenz ===
 Sollte es im Spiel irgendeine Art von künstlicher eine künstliche Intelligenz gebenerforderlich sein, dann wird auch hierfür ein Team gebildet. Ihr Dieses beschäftigt euch sich mit Handlungsbabläufen wie für beispielsweise bei Bots. Dazu wird es eine eigene Implementierung eines Behaviour Trees geben. Ihr müsst , mit dessen Hilfe die NPCs auf Grundlage der aktuellen Spielsituation die computergesteuerten Spieler steuerngesteuert werden.
[[Kategorie:GameDevWeek]]
385
Bearbeitungen

Navigationsmenü