{"id":326,"date":"2022-06-20T22:34:06","date_gmt":"2022-06-20T22:34:06","guid":{"rendered":"https:\/\/staging.gdwtrier.de\/?page_id=326"},"modified":"2022-06-20T23:26:57","modified_gmt":"2022-06-20T23:26:57","slug":"programmierung","status":"publish","type":"page","link":"https:\/\/gdwtrier.de\/en\/aufgaben\/programmierung\/","title":{"rendered":"Programmierung"},"content":{"rendered":"<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<div class=\"wp-block-cover alignfull is-light\" style=\"padding-top:0;padding-right:0;padding-bottom:0;padding-left:0;min-height:644px;aspect-ratio:unset;\"><img loading=\"lazy\" decoding=\"async\" width=\"1080\" height=\"362\" class=\"wp-block-cover__image-background wp-image-1104 size-large\" alt=\"\" src=\"https:\/\/gdwtrier.de\/wp-content\/uploads\/2022\/06\/GDW-Websitebanner_2026-1080x362.png\" data-object-fit=\"cover\" srcset=\"https:\/\/gdwtrier.de\/wp-content\/uploads\/2022\/06\/GDW-Websitebanner_2026-1080x362.png 1080w, https:\/\/gdwtrier.de\/wp-content\/uploads\/2022\/06\/GDW-Websitebanner_2026-300x101.png 300w, https:\/\/gdwtrier.de\/wp-content\/uploads\/2022\/06\/GDW-Websitebanner_2026-768x258.png 768w, https:\/\/gdwtrier.de\/wp-content\/uploads\/2022\/06\/GDW-Websitebanner_2026-1536x515.png 1536w, https:\/\/gdwtrier.de\/wp-content\/uploads\/2022\/06\/GDW-Websitebanner_2026-18x6.png 18w, https:\/\/gdwtrier.de\/wp-content\/uploads\/2022\/06\/GDW-Websitebanner_2026.png 1920w\" sizes=\"auto, (max-width: 1080px) 100vw, 1080px\" \/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim-0 has-background-dim\" style=\"background-color:#000000\"><\/span><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<p class=\"has-text-align-center has-large-font-size wp-block-paragraph\"><\/p>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><br>Die T\u00e4tigkeiten eines Programmierers k\u00f6nnen je nach Aufgabenbereich sehr unterschiedlich ausfallen. Im Allgemeinen belaufen sich die Aufgaben auf die logische Verkn\u00fcpfung der einzelnen Spielelemente und deren Interaktion miteinander.<\/p>\n\n\n\n<h2 class=\"alignfull has-text-align-center has-ast-global-color-1-background-color has-background wp-block-heading\">Aufgabengebiete f\u00fcr Programmierer<\/h2>\n\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\"><div class=\"wp-block-group__inner-container\">\n<p class=\"wp-block-paragraph\">Innerhalb der Teams werden die Aufgaben h\u00e4ufig in Bereiche eingeteilt und einer oder mehreren Personen zugewiesen. Als Programmierer kannst Du mit folgenden Aufgabengebieten und deren Unterbereiche rechnen:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Game Logic<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Die Game Logik Aufgaben reichen von der Implementierung der einzelnen Spieleraktionen bis zur allgemeinen Backend Logic und ist daher elementar f\u00fcr das Spiel.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Game Manager<\/li><li>Camera Controller<\/li><li>Player Input<\/li><li>Movement Controller<\/li><li>Collision Detection\/Layers<\/li><li>Physics<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">User Interface (UI)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">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\u00f6sungsunabh\u00e4ngig zu arbeiten und die UI Logik mit der Game Logik entsprechend zu koppeln.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Menu\/HUD<\/li><li>UI Transitions<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Artificial Intelligence (AI)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Viele Spiele ben\u00f6tigen auf unterschiedliche Art und Weise eine k\u00fcnstliche Intelligenz &#8211; 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.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>State Machines<\/li><li>Behavior Trees<\/li><li>Goal Oriented Behavior<\/li><li>Navigation Mesh\/Graph (A*)<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Level Design<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Nicht nur ein Designer besch\u00e4ftigt sich mit dem Level Design. Von gescripteten Level Ereignissen bis hin zu bestimmten Logik Abfragen k\u00f6nnen, je nach Game Design, Programmieraufgaben anfallen.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Ereignisbehandlung<\/li><li>Trigger Zonen<\/li><li>Level Logik<\/li><li>Editor Tools<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Rendering<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">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\u00f6glich die optische Generierung der Objekte durch Code zu ver\u00e4ndern.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Custom Shader<\/li><li>Particle Systems<\/li><li>Image\/Postprocessing Effects<\/li><\/ul>\n<\/div><\/div>\n\n\n\n<h2 class=\"alignfull has-text-align-center has-ast-global-color-1-background-color has-background wp-block-heading\">Entwicklungsumgebung<\/h2>\n\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\"><div class=\"wp-block-group__inner-container\">\n<h4 class=\"wp-block-heading\">Engine<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Bei der Entwicklung eines Spiels ist es wichtig, auf einem soliden Framework aufzubauen, welches den Spielverlauf und die visuelle Darstellung steuern kann. Hierf\u00fcr bietet es sich an, mit etablierten Game Engines wie der <a href=\"https:\/\/unity.com\/\" data-type=\"URL\" data-id=\"https:\/\/unity.com\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Unity Engine<\/strong><\/a>, <a href=\"https:\/\/www.unrealengine.com\/en-US\" data-type=\"URL\" data-id=\"https:\/\/www.unrealengine.com\/en-US\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Unreal Engine<\/strong><\/a> oder <a href=\"https:\/\/www.cryengine.com\/\" data-type=\"URL\" data-id=\"https:\/\/www.cryengine.com\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>CryEngine<\/strong><\/a> zu arbeiten. Dar\u00fcberhinaus gibt es f\u00fcr narrative Spiele wie Text-Adventures oder Game-Books <a href=\"https:\/\/twinery.org\/\" data-type=\"URL\" data-id=\"https:\/\/twinery.org\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Twine<\/strong><\/a>.<br><br>Bei der GDW ist es Dir und Deinem Team selbst \u00fcberlassen, ob Ihr \u00fcberhaupt eine und welche Game Engine Ihr nutzen m\u00f6chtet. Da die Programmierung einer eigenen Engine jedoch viel Zeit und Erfahrung ben\u00f6tigt, wurde in der Vergangenheit der GDW in den meisten Teams eine etablierte Game Engine verwendet.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Unity<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Die Unity Engine erm\u00f6glicht einen schnellen Einstieg f\u00fcr Anf\u00e4nger und bietet gen\u00fcgend Tools f\u00fcr erfahrene Entwickler, weswegen diese bei der GDW am h\u00e4ufigsten verwendet wird. Die zumeist verwendete Sprache in Unity ist C# (JavaScript ist auch m\u00f6glich).<br><br>Bevor Du Dich an die Arbeit mit Unity machst, solltest Du Dich mit dem Konzept von <a href=\"https:\/\/docs.unity3d.com\/ScriptReference\/MonoBehaviour.html\" data-type=\"URL\" data-id=\"https:\/\/docs.unity3d.com\/ScriptReference\/MonoBehaviour.html\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>MonoBehaviours<\/strong><\/a> vertraut machen, da diese die Kernbausteine von Unity Projekten darstellen. Dar\u00fcberhinaus kannst Du Dich mit den <a href=\"https:\/\/learn.unity.com\/\" data-type=\"URL\" data-id=\"https:\/\/learn.unity.com\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Unity Tutorials<\/strong><\/a> befassen, um einen Einstieg in Unity zu erlangen.<br><br>Als Referenz f\u00fcr Unity Projekte dient das Projekt der GDW 2018.2 <a href=\"https:\/\/gitlab.fsi.hochschule-trier.de\/GDW-SS-18\/to-the-surface\" data-type=\"URL\" data-id=\"https:\/\/gitlab.fsi.hochschule-trier.de\/GDW-SS-18\/to-the-surface\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>To the Surface<\/strong><\/a>. Hier kannst Du einen ersten Einblick bekommen, wie ein Unity Projekt aussehen kann, wobei Details bei neueren Unity Versionen abweichen k\u00f6nnten.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">IDE<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">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 <a href=\"https:\/\/docs.unity3d.com\/Manual\/ScriptingToolsIDEs.html\" data-type=\"URL\" data-id=\"https:\/\/docs.unity3d.com\/Manual\/ScriptingToolsIDEs.html\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Visual Studio<\/strong><\/a> als C# IDE angeboten. Diese l\u00e4sst sich aber je nach Vorlieben einfach <a href=\"https:\/\/docs.unity3d.com\/Manual\/ScriptingToolsIDEs.html\" data-type=\"URL\" data-id=\"https:\/\/docs.unity3d.com\/Manual\/ScriptingToolsIDEs.html\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>austauschen<\/strong><\/a>. Zum Beispiel durch:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.jetbrains.com\/rider\/\" data-type=\"URL\" data-id=\"https:\/\/www.jetbrains.com\/rider\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Jetbrains Rider<\/strong><\/a> (empfohlen)<\/li><li><a href=\"https:\/\/visualstudio.microsoft.com\/\" data-type=\"URL\" data-id=\"https:\/\/visualstudio.microsoft.com\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Visual Studio Code<\/strong><\/a><\/li><\/ul>\n<\/div><\/div>\n\n\n\n<h2 class=\"alignfull has-text-align-center has-ast-global-color-1-background-color has-background wp-block-heading\">N\u00fctzliche Links<\/h2>\n\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\"><div class=\"wp-block-group__inner-container\">\n<h4 class=\"wp-block-heading\">Unity<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Allgemein<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a rel=\"noreferrer noopener\" href=\"https:\/\/docs.unity3d.com\/Manual\/index.html\" data-type=\"URL\" data-id=\"https:\/\/docs.unity3d.com\/Manual\/index.html\" target=\"_blank\"><strong>Documentation<\/strong><\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.gamedeveloper.com\/design\/50-tips-and-best-practices-for-unity-2016-edition-\" data-type=\"URL\" data-id=\"https:\/\/www.gamedeveloper.com\/design\/50-tips-and-best-practices-for-unity-2016-edition-\" target=\"_blank\"><strong>50 Tips and Best Practices<\/strong><\/a><\/li><li><a href=\"https:\/\/medium.com\/@adamramberg\/unity-atoms-tiny-modular-pieces-utilizing-the-power-of-scriptable-objects-e8add1b95201\" data-type=\"URL\" data-id=\"https:\/\/medium.com\/@adamramberg\/unity-atoms-tiny-modular-pieces-utilizing-the-power-of-scriptable-objects-e8add1b95201\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Scriptable Objects\/Unity Atoms<\/strong><\/a><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">UI<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.febucci.com\/2018\/10\/unity-ui-tutorial\/\" data-type=\"URL\" data-id=\"https:\/\/www.febucci.com\/2018\/10\/unity-ui-tutorial\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Aufl\u00f6sungsunabh\u00e4ngige UI<\/strong><\/a><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">AI<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/learn.unity.com\/tutorial\/pluggable-ai-with-scriptable-objects\" data-type=\"URL\" data-id=\"https:\/\/learn.unity.com\/tutorial\/pluggable-ai-with-scriptable-objects\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Finite State AI with the Delegate Pattern<\/strong><\/a><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Rendering<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.youtube.com\/watch?v=AJdEqssNZ-U\" data-type=\"URL\" data-id=\"https:\/\/www.youtube.com\/watch?v=AJdEqssNZ-U\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>The Art of Screenshake<\/strong><\/a><\/li><li><a href=\"https:\/\/www.youtube.com\/watch?v=T-HXmQAMhG0&amp;list=PLJ4rOFLQFH4BUVziWikfHvL8TbNGJ6M_f\" data-type=\"URL\" data-id=\"https:\/\/www.youtube.com\/watch?v=T-HXmQAMhG0&amp;list=PLJ4rOFLQFH4BUVziWikfHvL8TbNGJ6M_f\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Shader 101<\/strong><\/a><\/li><\/ul>\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Die T\u00e4tigkeiten eines Programmierers k\u00f6nnen je nach Aufgabenbereich sehr unterschiedlich ausfallen. Im Allgemeinen belaufen sich die Aufgaben auf die logische Verkn\u00fcpfung der einzelnen Spielelemente und deren Interaktion miteinander. Aufgabengebiete f\u00fcr Programmierer Innerhalb der Teams werden die Aufgaben h\u00e4ufig in Bereiche eingeteilt und einer oder mehreren Personen zugewiesen. Als Programmierer kannst Du mit folgenden Aufgabengebieten und &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/gdwtrier.de\/en\/aufgaben\/programmierung\/\"> <span class=\"screen-reader-text\">Programmierung<\/span> Read More &raquo;<\/a><\/p>","protected":false},"author":2,"featured_media":0,"parent":324,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"plain-container","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"","footnotes":""},"class_list":["post-326","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/gdwtrier.de\/en\/wp-json\/wp\/v2\/pages\/326","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gdwtrier.de\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/gdwtrier.de\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/gdwtrier.de\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/gdwtrier.de\/en\/wp-json\/wp\/v2\/comments?post=326"}],"version-history":[{"count":4,"href":"https:\/\/gdwtrier.de\/en\/wp-json\/wp\/v2\/pages\/326\/revisions"}],"predecessor-version":[{"id":361,"href":"https:\/\/gdwtrier.de\/en\/wp-json\/wp\/v2\/pages\/326\/revisions\/361"}],"up":[{"embeddable":true,"href":"https:\/\/gdwtrier.de\/en\/wp-json\/wp\/v2\/pages\/324"}],"wp:attachment":[{"href":"https:\/\/gdwtrier.de\/en\/wp-json\/wp\/v2\/media?parent=326"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}