Die Tätigkeiten eines Programmierers können je nach Aufgabenbereich sehr unterschiedlich ausfallen. Im Allgemeinen belaufen sich die Aufgaben auf die logische Verknüpfung der einzelnen Spielelemente und deren Interaktion miteinander.

Aufgabengebiete für Programmierer

Innerhalb der Teams werden die Aufgaben häufig in Bereiche eingeteilt und einer oder mehreren Personen zugewiesen. Als Programmierer kannst Du mit folgenden Aufgabengebieten und deren Unterbereiche rechnen:

Game Logic

Die Game Logik Aufgaben reichen von der Implementierung der einzelnen Spieleraktionen bis zur allgemeinen Backend Logic und ist daher elementar für das Spiel.

  • Game Manager
  • Camera Controller
  • Player Input
  • Movement Controller
  • Collision Detection/Layers
  • Physics

User Interface (UI)

Die allermeisten Spiele kommen nicht ohne ein User Interface aus, da es die optische Schnittstelle zwischen Spieler und Spiel darstellt. Bei der Arbeit am UI ist es wichtig, auflösungsunabhängig zu arbeiten und die UI Logik mit der Game Logik entsprechend zu koppeln.

  • Menu/HUD
  • UI Transitions

Artificial Intelligence (AI)

Viele Spiele benötigen auf unterschiedliche Art und Weise eine künstliche Intelligenz – klassisch sind da zum Beispiel Gegner, die dem Spieler das Leben schwer machen wollen. AI ist daher in der Regel eng mit der Spieler Logik gekoppelt.

  • State Machines
  • Behavior Trees
  • Goal Oriented Behavior
  • Navigation Mesh/Graph (A*)

Level Design

Nicht nur ein Designer beschäftigt sich mit dem Level Design. Von gescripteten Level Ereignissen bis hin zu bestimmten Logik Abfragen können, je nach Game Design, Programmieraufgaben anfallen.

  • Ereignisbehandlung
  • Trigger Zonen
  • Level Logik
  • Editor Tools

Rendering

Verwendet man eine Game Engine so ist in der Regel bereits ein Rendering Prozess von Spielobjekten im Hintergrund in Gange. Ohne eine Engine, aber auch bei Benutzung einer Engine ist es möglich die optische Generierung der Objekte durch Code zu verändern.

  • Custom Shader
  • Particle Systems
  • Image/Postprocessing Effects

Entwicklungsumgebung

Engine

Bei der Entwicklung eines Spiels ist es wichtig, auf einem soliden Framework aufzubauen, welches den Spielverlauf und die visuelle Darstellung steuern kann. Hierfür bietet es sich an, mit etablierten Game Engines wie der Unity Engine, Unreal Engine oder CryEngine zu arbeiten. Darüberhinaus gibt es für narrative Spiele wie Text-Adventures oder Game-Books Twine.

Bei der GDW ist es Dir und Deinem Team selbst überlassen, ob Ihr überhaupt eine und welche Game Engine Ihr nutzen möchtet. Da die Programmierung einer eigenen Engine jedoch viel Zeit und Erfahrung benötigt, wurde in der Vergangenheit der GDW in den meisten Teams eine etablierte Game Engine verwendet.

Unity

Die Unity Engine ermöglicht einen schnellen Einstieg für Anfänger und bietet genügend Tools für erfahrene Entwickler, weswegen diese bei der GDW am häufigsten verwendet wird. Die zumeist verwendete Sprache in Unity ist C# (JavaScript ist auch möglich).

Bevor Du Dich an die Arbeit mit Unity machst, solltest Du Dich mit dem Konzept von MonoBehaviours vertraut machen, da diese die Kernbausteine von Unity Projekten darstellen. Darüberhinaus kannst Du Dich mit den Unity Tutorials befassen, um einen Einstieg in Unity zu erlangen.

Als Referenz für Unity Projekte dient das Projekt der GDW 2018.2 To the Surface. Hier kannst Du einen ersten Einblick bekommen, wie ein Unity Projekt aussehen kann, wobei Details bei neueren Unity Versionen abweichen könnten.

IDE

Die Wahl eines geeigneten Editors ist auch nicht unwichtig, da dieser Dir die Arbeit beim Coden erleichtern kann. Im Falle von Unity wird bei der Installation Visual Studio als C# IDE angeboten. Diese lässt sich aber je nach Vorlieben einfach austauschen. Zum Beispiel durch:

Nützliche Links