Einführung in die Programmierung von 2-D-Spielen
By Danny Reinhold and Wolfgang Schmidt
()
About this ebook
Related to Einführung in die Programmierung von 2-D-Spielen
Titles in the series (100)
Java EE Security Rating: 0 out of 5 stars0 ratingsJavaScript für Eclipse-Entwickler: Orion, RAP und GWT Rating: 0 out of 5 stars0 ratingsSkalierbare Softwaresysteme: Design, Betrieb und Optimierungspotenziale Rating: 0 out of 5 stars0 ratingsHTML5 für Mobile Web Rating: 0 out of 5 stars0 ratingsErfolgreiche Spieleentwicklung: OpenGL, OpenAL und KI Rating: 0 out of 5 stars0 ratingsSharePoint-Entwicklung für Einsteiger Rating: 0 out of 5 stars0 ratingsNFC: Near Field Communication für Android-Entwickler Rating: 5 out of 5 stars5/5Geolocation mit PHP: Foursquare-API, Google Places & Qype Rating: 0 out of 5 stars0 ratingsApache Tapestry: Einstieg in die komponentenorientierte Webentwicklung Rating: 0 out of 5 stars0 ratingsHTML5 Security Rating: 0 out of 5 stars0 ratingsErfolgreiche Spieleentwicklung: OpenCL Rating: 0 out of 5 stars0 ratingsEinstieg in Google Go Rating: 0 out of 5 stars0 ratingsServiceorientierte Architektur: Anforderungen, Konzeption und Praxiserfahrungen Rating: 0 out of 5 stars0 ratingsTFS 2012 Anforderungsmanagement: Work Items und Prozessvorlagen Rating: 0 out of 5 stars0 ratingsAmazon Web Services für .NET Entwickler Rating: 0 out of 5 stars0 ratingsUX Design für Tablet-Websites: Ein Überblick Rating: 0 out of 5 stars0 ratingsM2M by Eclipse Rating: 0 out of 5 stars0 ratingsIT Wissensmanagement: Theorie und Praxis Rating: 0 out of 5 stars0 ratingsBig Data: Executive Briefing Rating: 0 out of 5 stars0 ratingsJavaScript auf dem Server Rating: 0 out of 5 stars0 ratingsAlgorithmen: Grundlagen und Implementierung Rating: 0 out of 5 stars0 ratingsTitanium Mobile: Multi Platform Apps mit JavaScript Rating: 0 out of 5 stars0 ratingsADF - Mobile Apps entwickeln und Swing ablösen: Mobile Apps entwickeln und Swing ablösen Rating: 0 out of 5 stars0 ratingsÜberzeugende Präsentationen: Konzeption, Technik und Design Rating: 0 out of 5 stars0 ratingsTFS 2012 Versionskontrolle: Grundlagen, Check-In Policies und Branch-Modelle Rating: 0 out of 5 stars0 ratingsNutzeraspekte in Suchmaschinen: Komponenten für eine gelungene Usability-Gestaltung Rating: 0 out of 5 stars0 ratingsJava 7: Fork-Join-Framework und Phaser Rating: 0 out of 5 stars0 ratingsBig Data: Technologiegrundlagen Rating: 0 out of 5 stars0 ratingsUser Experience Testing 3.0: Status Quo, Entwicklung und Trends Rating: 0 out of 5 stars0 ratingsZend Framework 2: Für Einsteiger und Umsteiger Rating: 0 out of 5 stars0 ratings
Related ebooks
Programmieren in C: Programmieren lernen von Anfang an - Mit vielen Programmierbeispielen - Geeignet zum Selbststudium Rating: 0 out of 5 stars0 ratingsLinux-Musikserver - Die Anleitung: 1hourbook Rating: 0 out of 5 stars0 ratingsMicrosoft KINECT: Programmierung des Sensorsystems Rating: 0 out of 5 stars0 ratingsOpenOffice kurz & gut Rating: 0 out of 5 stars0 ratingsPraktisches Programmieren in C: Grundlagen und Tipps Rating: 0 out of 5 stars0 ratingsF#: Ein praktischer Einstieg Rating: 0 out of 5 stars0 ratingsHilfreiche Programme für Linux-Einsteiger Rating: 0 out of 5 stars0 ratingsTastenkombinationen für den Mac: Alle wichtigen Funktionen Rating: 0 out of 5 stars0 ratingsMach's einfach: Erste Schritte Raspberry Pi programmieren: Der perfekte Einstieg in die Programmierung mit Scratch und Python Rating: 0 out of 5 stars0 ratingsDas inoffizielle iPad-Buch: Jailbreak mit wenigen Klicks und Grundstücksüberwachung mit dem iPad Rating: 0 out of 5 stars0 ratings3D-Druck für Anspruchsvolle: Mit dem Ultimaker perfekte Werkstücke erstellen Rating: 0 out of 5 stars0 ratingsRaspberry Pi: Einstieg • Optimierung • Projekte Rating: 5 out of 5 stars5/5Coole Projekte mit Raspberry Pi: Mit viel Spaß und ohne Frust die Welt des Raspberry erobern Rating: 0 out of 5 stars0 ratingsMach's einfach: 123 Anleitungen Raspberry Pi 4 als Media Center: Fotos, Audio- und Videostreaming sowie Fernsehen mit KODI Rating: 0 out of 5 stars0 ratingsMit Scratch 3 programmieren lernen Rating: 0 out of 5 stars0 ratingsErste Schritte mit dem Raspberry Pi: Installation, Konfiguration, Tuning und Praxis für alle aktuellen Raspberry-Pi-Modelle Rating: 0 out of 5 stars0 ratingsSchnelleinstieg Raspberry Pi 3: Schritt für Schritt: Installation, Konfiguration, Tuning und Praxiseinsatz Rating: 0 out of 5 stars0 ratingsantiX Linux für Einsteiger Rating: 0 out of 5 stars0 ratingsCoole Projekte mit dem Arduino™ Micro: Physical Computing im Projekteinsatz Rating: 0 out of 5 stars0 ratingsRadio machen Rating: 0 out of 5 stars0 ratingsJournalismus der Dinge: Strategien für den Journalismus 4.0 Rating: 0 out of 5 stars0 ratingsLexikon des internationalen Films - Filmjahr 2011: Das komplette Angebot im Kino, Fernsehen und auf DVD/Blu-ray Rating: 0 out of 5 stars0 ratingsGoogle & mehr: Online-Recherche: Wie Sie exakte Treffer auf Ihre Suchanfragen erhalten Rating: 0 out of 5 stars0 ratingsOnlinejournalismus Rating: 0 out of 5 stars0 ratingsDie Postproduktion eines Fernsehfilms Rating: 0 out of 5 stars0 ratingsJürgen Klopp: DIe Biografie Rating: 0 out of 5 stars0 ratingsMaker-Projekte mit JavaScript: Mit Espruino und JavaScript aus Alltagsobjekten intelligente Maschinen bauen Rating: 0 out of 5 stars0 ratingsWissenschaftsjournalismus Rating: 0 out of 5 stars0 ratingsDreamweaver CS5: Webseiten entwerfen und umsetzen Rating: 0 out of 5 stars0 ratingsC# 6.0 – kurz & gut Rating: 5 out of 5 stars5/5
Programming For You
PowerShell: Anwendung und effektive Nutzung Rating: 5 out of 5 stars5/5Microsoft Word 2016 (Microsoft Press): Einfache Anleitungen für wichtige Aufgaben Rating: 0 out of 5 stars0 ratingsProgrammieren lernen mit Python 3: Schnelleinstieg für Beginner Rating: 0 out of 5 stars0 ratingsPython | Schritt für Schritt Programmieren lernen: Der ultimative Anfänger Guide für einen einfachen & schnellen Einstieg Rating: 0 out of 5 stars0 ratingsHTML5-Programmierung von Kopf bis Fuß: Webanwendungen mit HTML5 und JavaScript Rating: 0 out of 5 stars0 ratingsDas große Python3 Workbook: Mit vielen Beispielen und Übungen - Programmieren leicht gemacht! Rating: 4 out of 5 stars4/5Python kurz & gut: Für Python 3.x und 2.7 Rating: 3 out of 5 stars3/5Hacken mit Python und Kali-Linux: Entwicklung eigener Hackingtools mit Python unter Kali-Linux Rating: 0 out of 5 stars0 ratingsRaspberry Pi: Einstieg • Optimierung • Projekte Rating: 5 out of 5 stars5/5Raspberry Pi: Mach's einfach: Die kompakteste Gebrauchsanweisung mit 222 Anleitungen. Geeignet für Raspberry Pi 3 Modell B / B+ Rating: 0 out of 5 stars0 ratingsPython programmieren lernen: Der spielerische Einstieg mit Minecraft Rating: 0 out of 5 stars0 ratingsNew Game Plus: Perspektiven der Game Studies. Genres - Künste - Diskurse (Bild und Bit. Studien zur digitalen Medienkultur) Rating: 0 out of 5 stars0 ratingsAndroid-Entwicklung für Einsteiger - 20.000 Zeilen unter dem Meer: 2. erweiterte Auflage Rating: 0 out of 5 stars0 ratingsSoftwareentwicklungsprozess: Von der ersten Idee bis zur Installation Rating: 0 out of 5 stars0 ratings.NET-Praxis: Tipps und Tricks zu .NET und Visual Studio Rating: 0 out of 5 stars0 ratingsUser Experience Testing 3.0: Status Quo, Entwicklung und Trends Rating: 0 out of 5 stars0 ratingsEinstieg in TypeScript: Grundlagen für Entwickler Rating: 0 out of 5 stars0 ratingsVue.js kurz & gut Rating: 0 out of 5 stars0 ratingsJavaScript kurz & gut Rating: 3 out of 5 stars3/5C++: Eine kompakte Einführung Rating: 0 out of 5 stars0 ratingsSoft Skills in der IT Rating: 0 out of 5 stars0 ratingsPowerprojekte mit Arduino und C: Schluss mit dem frustrierenden Ausprobieren von Code-Schnipseln! Rating: 0 out of 5 stars0 ratingsAndroid-Programmierung kurz & gut Rating: 0 out of 5 stars0 ratingsEigene Spiele programmieren – Python lernen: Der spielerische Weg zur Programmiersprache Rating: 0 out of 5 stars0 ratingsGit kurz & gut Rating: 0 out of 5 stars0 ratingsJavaScript kinderleicht!: Einfach programmieren lernen mit der Sprache des Web Rating: 0 out of 5 stars0 ratingsC von Kopf bis Fuß Rating: 3 out of 5 stars3/5Python lernen – kurz & gut Rating: 0 out of 5 stars0 ratingsProgrammieren für Einsteiger: Teil 1 Rating: 0 out of 5 stars0 ratingsMicrocontroller für das IoT Rating: 0 out of 5 stars0 ratings
Reviews for Einführung in die Programmierung von 2-D-Spielen
0 ratings0 reviews
Book preview
Einführung in die Programmierung von 2-D-Spielen - Danny Reinhold
GmbH
1 Einführung in die Programmierung von 2-D-Spielen
Die meisten Softwareentwickler haben in ihrem Leben wohl mindestens einmal ein Computerspiel gespielt – und viele werden sich gefragt haben, wie das eigentlich funktioniert. Bei Recherchen trifft die/der Interessierte dann schnell auf Frameworks und Tools, die sehr mächtig und leistungsfähig sind. Diese verlangen aber auch eine gewisse Einarbeitungszeit, außerdem sind sie fast immer an bestimmte Technologien/Plattformen gebunden. Das führt dann oft dazu, dass man sich dann doch nicht weiter mit diesem eigentlich interessanten Thema beschäftigt. Das ist bedauerlich, denn einerseits kann man anhand der Programmierung von Spielen viel lernen, und andererseits macht das Entwickeln eigener Spiele auch sehr viel Spaß.
In diesem shortcut wollen wir deshalb – zunächst unabhängig von konkreten Frameworks, Technologien und Plattformen – die Grundlagen der Spieleprogrammierung in 2-D beleuchten und anschließend demonstrieren, wie diese Grundlagen mit verschiedenen Technologien konkret umgesetzt werden können. Dabei wird jeweils ein vollständig spielbares Spiel implementiert. Auf dieser Basis sollte der Leser dann in der Lage sein, eigene Ideen mit der Technologie seiner Wahl umzusetzen.
Computerspiele sind allgegenwärtig. Es gibt sie auf dedizierter Hardware (Nintendo, Microsoft, Sony), als hochgezüchtete Spiele für ebenso hochgezüchtete High-End-Gamer-PCs, als Java-Game für das „Dumbphone", als Android-/iPhone-App für Smartphones und als Browserspiel im Internet. Die zugrunde liegenden Technologien sind vielfältig. Nichtsdestotrotz gibt es grundlegende Techniken, die weitgehend unabhängig von der jeweils eingesetzten Technologie sind. Das Verständnis dieser Techniken bildet die Basis, auf der dann eigene Spiele unter Verwendung beliebiger geeigneter Technologien umgesetzt werden können.
Spieleprogrammierung ist ein sehr komplexes und anspruchsvolles Thema, das in einem kurzen E-Book unmöglich erschöpfend behandelt werden kann. Aus diesem Grund wollen wir uns in diesem shortcut auf die Umsetzung einfacher 2-D-Spiele beschränken, um dem Leser den Einstieg zu erleichtern und erste eigene Schritte in der Spieleprogrammierung zu ermöglichen.
Ein Blick zurück – Computerspiele von den Anfängen bis heute
Computerspiele können auf eine lange Geschichte zurückblicken. Die ersten Spiele wurden schon zu einer Zeit implementiert, als ein Computer für eine Privatperson unerschwinglich war. Eines der ersten Spiele war etwa Spacewar!, das im Jahr 1962 fertiggestellt wurde und auf einem PDP-1 lief [1].
Sehr früh wurden die Möglichkeiten einer kommerziellen Verwertung von Computerspielen entdeckt. Zunächst begann man mit Spielautomaten (Arcade-Games), bei denen ein entsprechendes Gerät in einer geeigneten Lokalität (Kneipe, Disco, Spielhalle) aufgestellt wurde und sich durch die eingeworfenen Münzen schnell amortisierte.
Wenig später entwickelten sich die Telespiele, spezialisierte Spielhardware, die an den heimischen Fernseher angeschlossen werden konnte. Die grafischen Fähigkeiten waren anfangs eher bescheiden (verglichen mit den Arcade-Maschinen). Nichtsdestotrotz erlaubten die Telespiele endloses Spielen zu (verglichen mit ihren professionellen Pendants in den Spielhallen) sehr überschaubaren Kosten. Die Telespiele entwickelten sich zu modularen Systemen mit einer Basiskomponente, die die grundlegende Funktionalität bereitstellte, und Steckmodulen, die die konkrete Implementierung eines Spiels darstellten.
Anfang der Achtzigerjahre erlangten die Heimcomputer eine größere Verbreitung. Entscheidend war, dass es sich hier erstmals um erschwingliche Computer handelte, die komplett zusammengebaut waren. Ihr Betrieb setzte weder Kenntnisse der Digitaltechnik noch Versiertheit im Umgang mit dem Lötkolben voraus. In der ersten Generation bestand die Hardware typischerweise aus einem 8-Bit-Prozessor mit einer Taktung von 1 bis 4 MHz, 1 bis 64 KB Hauptspeicher sowie einem rudimentären Betriebssystem mit eingebautem BASIC im ROM.
Die grafischen Möglichkeiten waren aus heutiger Sicht wenig beeindruckend, die Auflösung betrug meist 192 x 256 oder 300 x 200 Pixel, wobei die Anzahl von darstellbaren Farben (wenn überhaupt vorhanden) stark begrenzt war. Ähnlich eingeschränkt war die Möglichkeit der Klangerzeugung. Als Leitfossil dieser Generation ist der C64 von Commodore zu nennen, der insbesondere aufgrund seiner Grafik- und Soundmöglichkeiten weiteste Verbreitung fand. Letztere wurden durch fest eingebaute Spezialkomponenten (Grafik- und Soundchips) ermöglicht, die diese Aufgaben anstelle der CPU übernahmen – insofern können sie als Vorgänger der heutigen Grafik- und Soundkarten angesehen werden.
Mit der Weiterentwicklung der Heimcomputer zu 16- und 32-Bit-Maschinen mit verbesserten Grafik- und Soundkarten wurden auch die Spiele anspruchsvoller. Relativ spät erhielten dann auch die bis dahin stark eingeschränkten IBM-PCs und ihre Nachfolger leistungsfähigere Grafik- und Soundhardware. In den Neunzigerjahren starben die Heimcomputer dann nach und nach aus – die PCs übernahmen ihre Nachfolge und wurden zu den wichtigsten „Spielmaschinen" in diesem Marktsegment.
Mit der Einführung immer kleinerer portabler Computer (Personal Digital Assistants, PDAs) und den ersten programmierbaren Handys kam es zu einem Revival vieler ursprünglich aus der Heimcomputerära stammender Spiele, da sie mit der verfügbaren Prozessorleistung und Grafikauflösung nahezu identisch übernommen werden konnten. Mit der Weiterentwicklung des Handys zum Smartphone und des PDAs zum Tablet wurden auch hier viel komplexere Spiele möglich.
Parallel entwickelten sich darüber hinaus die Browsergames. Die Besonderheit ist, dass die Spiele im Allgemeinen nicht installiert werden müssen, sondern über den Webbrowser ausgeführt werden. Dabei ist meist ein Teil der Logik auf einem Webserver implementiert, während ein anderer Teil lokal über Technologien wie JavaScript oder Flash umgesetzt wird.
Besonderheiten der Programmierung von Spielen
Das Programmieren von interaktiven Spielen mit grafischen Komponenten stellt in vielen Fällen neue Anforderungen an Programmierer, die bisher z. B. nur typische Businessanwendungen auf Grundlage von GUI-Frameworks erstellt haben. Wir werden im Folgenden einige der relevanten Unterschiede erläutern, wobei wir uns an klassischen Arcade-Spielen wie Space Invaders, Asteroids oder Ähnlichen orientieren.
Darstellung des Spiels auf dem Bildschirm
Einer der wichtigsten Aspekte ist, dass sich der Programmierer intensiver mit Fragen der Darstellung auseinandersetzen muss. Eine GUI-Anwendung wird im Allgemeinen erstellt, indem vorgefertigte Widgets aus einem GUI-Toolkit verwendet werden. Bei Spielen dagegen ist es notwendig, Objekte direkt auf dem Bildschirm zu zeichnen (rendern). Das kann auf verschiedene Weisen geschehen. Ein Weg besteht darin, Objekte als Streckenzüge (Polygone)