<
>
swopdoc logo
Download
a) trade for free
b) buy for 2.38 $
Document category

Specialised paper
Information Technology / Computer S

University, School

Köln, Realschule

Grade, Teacher, Year

3, Prof. lang, 2013

Author / Copyright
Text by Glenn G. ©
Format: PDF
Size: 0.07 Mb
Without copy protection
Rating [details]

Rating 4.5 of 5.0 (2)
User:
Super text und alles gut und ausführ­lich erklärt­. Keine rechtsch­reibfehl­er. Ich bin begeiste­rt und würde mich sehr um eine fortsetz­ung der reihe wünsche­n.

Live Chat
Chat Room
Networking:
0/1|0[-3.0]|1/7







More documents
Facharbeit Spieleprogrammi­eru­ng mit JAVA und MySQL Inhaltsangabe Kapitel Seite Nr. 1. Anforderungsana­lys­e 2. Dokumentation 2.1 Datenbank 2.2 Java Programm 3. Theoretische Implementierung 3.1 Map und Map-Editor 3.1 “Gameplay”-Mech­ani­ken 3.2 Mehrspieler-Mec­han­ik (Synchronisatio­n) 4. Anhang 4.1 ER-Modell 4.2 UML Diagramm Anforderungsana­lys­e Bei der zu entwickelnden Applikation handelt es sich um ein zugbasiertes Mehrspieler Strategiespiel, wobei der grundlegende Unterschied in der Art und…
Sequenz In der folgenden Übersicht ist eine Methode, die einen Roboter namens karol eine Reihe aus drei Ziegeln legen lässt, auf drei verschiedene Weisen dargestellt. Dabei steht links die Methode in der aus der 7. Klasse bekannten Form für das Werkzeug Karol, rechts ist die Umsetzung in Javasyntax für JavaKarol zu sehen, verfasst also in der Programmierspra­che JAVA, die Sie mit diesem Material etwas näher kennenlernen sollen. In der Mitte ist eine programmierspra­che­nunabhän­gige Darstellung in graphischer Form, genannt…

// settings, so we have to create a new compatible one

System.out.println("backBuffer - IMAGE_INCOMPATIBLE");

createBackBuffer();

}

// get Graphics object from backbuffer

Graphics g = backBuffer.getGraphics();

// render on backbuffer

g.drawImage(myImage,0,0,this);

g.drawLine(0,0,10,20);

// .

// rendering is done; now check if contents got lost

// and loop if necessary

} while (backBuffer.contentsLost());

}

// . more code to write here

}Einsatz und Grenzen der VolatileImage API

Die VolatileImage API ist momentan noch stark in Entwicklung und wird mit kommenden Java

Versionen noch weiter verbessert werden. Derzeit ist nur das Zeichnen von Lienen und das

Kopieren und Füllen von rechteckigen Bereichen hardwarebeschleunigt, sowie einige komplexere

Funktionen, die als Kombination dieser Basisfunktionen auftreten. Beim Rendern von Text können

die einzelnen Buchstaben nach dem Rendern im VRAM zwischengespeichert und von dort bei

weiteren Render-Durchläufen wieder kopiert werden, wodurch man sich ein aufwendiges Neu-

Free of charge
Download
Spieleprogrammierung in Java - Grundlagen; Aktives Rendern - Kann man Spiele in Java Programmieren?
Click on download to get complete and readable text
• This is a free of charge document sharing network
Upload a document and get this one for free
• No registration necessary, gratis

Aliasing und Komposition sind nicht hardwarebeschleunigt und werden derzeit über reines

Software-Rendering realisiert. Da aber Software-Rendering im Hauptspeicher stattfindet, führt das

Verwenden dieser Funktionen auf einem VolatileImage zu starken Performance-Einbußen. Deshalb

muß man je nach Anwendung und Einsatzbereich abwägen, ob sich die Verwendung eines

VolatileImages lohnt oder nicht.

Hinweis: Da Linux und Solaris keinen direkten Zugriff auf das VRAM unterstützen, ist der Inhalt

eines VolatileImage unter diesen Betriebssystemen auch nicht “flüchtig” und somit auch nicht

hardwarebeschleunigt. Lediglich bei der Verwendung eines X-Terminal Clients kann man mit

einem VolatileImage an Performance gewinnen, da der BackBuffer hier serverseitig in einer pixmap

gespeichert wird.

c) Animation und Timing

Über Aktives Rendern und Double Buffering kann man nun Komponenten mit sich schnell und

regelmäßig ändernder Grafik darstellen und hat so schon die Grundlage für Animation geschaffen.

Diese benötigt nämlich ein kontinuierliches, flüssiges und performantes Neuzeichnen von Bildern.

Gemeinsamkeiten bzw. Unterschiede im Bildaufbau hin zu analysieren. Dabei fallen ihm besonders

die unterschiedlichen Merkmale auf, während ähnliche Merkmale als “normal” hingenommen und

damit mehr oder weniger ignoriert werden. Dieses Wissen wird z.B. im militärischen Bereich bei

der Tarnung angewandt, wo bewußt zum Umfeld passende Muster verwendet werden, um so die

unregelmäßigen Merkmale des zu tarnenden Objektes zu verschleiern und dadurch das menschliche

Auge zu täuschen.

High-Resolution Timer

Wendet man dieses Wissen nun auf die Animation an, dann stellt man fest, daß das menschliche

Auge schon kleine Unregelmäßigkeiten im Bildaufbau besonders stark wahrnimmt und den Spieler

recht schnell darauf aufmerksam macht. Deshalb sollte eine gute Animation so flüssig und

regelmäßig wie nur möglich sein!

Java selbst bietet hierfür allerdings noch nicht die besten Voraussetzungen. Der bisher integrierte

Timer System.currentTimeMillis() liefert nur Werte im Mikrosekundenbereich und ist zudem

benötigt, der im Nanosekundenbereich arbeitet. Abhilfe können hier externe Bibliotheken schaffen,

die z.B. über JNI auf Timer des Betriebssystems zugreifen. Der Preis dafür ist jedoch die zusätzlich

verwendete Bibliothek und evtl. damit verbunden Lizenzrestriktionen. Dieses Problem ist bekannt

und soll nun in der neuen Java Version 1.5 gelöst werden. Diese soll nämlich den lange ersehnten

high-resolution Timer beinhalten und damit eine einheitliche Lösung für alle Java Plattformen

bieten.Timing über Threads

Eine Alternative zu einem externen high-resolution Timer wäre noch ein Timing über das Thread-

System von Java. Der Ausführungszeitpunkt eines Threads ist zwar ungenau, aber die Methoden

werden in relativ regelmäßigen Abständen und immer(!) nacheinander ausgeführt. Nutzt man dieses

Wissen und bewegt jetzt mit jedem Methoden-Aufruf die zu bewegenden Bilder um die gleiche

Anzahl an Maßeinheiten weiter, dann läßt sich eine relativ flüssige Animation erzeugen, wenn die

Auslastung der CPU und die Anzahl der aktiven Threads gering ist. Diese Art der Animation eignet

verwendeten Rechners abhängig und wird auf schwächeren Systemen natürlich deutlich langsamer

laufen. Die Synchronisation von Multiplayer-Spielen kann man deshalb nicht über ein reines

Thread-Timing realisieren, sondern muß hier zusätzlich noch eine andere (evtl. auch ungenauere)

und von der Performance des Systems unabhängige Form des Timings verwenden.

2.2. Java 3D und andere Bibliotheken

Will man 3D Grafik oder 3D Sound in Java-Programmen verwenden, dann hat man hier

verschiedene Möglichkeiten: entweder man greift auf die Java3D API von Sun zurück, oder aber

man verwendet externe Bibliotheken von Drittherstellern.

Die einfachste und auch komfortabelste Lösung ist die Verwendung der Java3D API von Sun.

Diese bietet nämlich, neben 3D Grafik, ein Framework für 3-dimensionalen Sound, sowie

Unterstützung für zahlreiche, teilweise auch exotische Eingabegeräte, wie z.B. “VR-Headsets” und

“Data Gloves”. Ihr größter Vorteil jedoch ist die Verwendung eines Szene-Graphen, welcher nicht

zusätzliche Features wie z.B. “collision detection” und “collision handling” bereitstellt. Der

Programmierer kann mit Java3D von einer sehr mächtigen und funktionsreichen API profitieren

und so auf einem extrem hohen Abstraktionsniveau arbeiten. Dadurch spart man sich natürlich jede

Menge Entwicklungszeit. Allerdings zahlt man auch einen Preis dafür, denn die Java3D API wurde

als generelle API für 3D Anwendungen konzipiert und ist somit natürlich nicht primär auf die

Anforderungen von Spielen optimiert. Ein Großteil ihrer Funktionalität wird in der Regel auch nicht

in Spielen benötigt und ist damit erst einmal unnötiger Ballast. Trotzdem ist Java3D eine stabile

API, deren Performanz für eine Vielzahl von 3D Anwendungen und Spielen locker ausreicht.

Java3D ist nicht Bestandteil des Java “Core” und muß daher zusätzlich heruntergeladen und

installiert werden. Allerdings kann Java3D danach problemlos in die “Java Foundation Classes”

eingebunden werden und mit AWT-Komponenten (mit etwas Anpassung auch Swing-

Eine Alternative zu Java3D wäre die Verwendung verschiedener externer Bibliotheken von

Drittherstellern. Beispielsweise könnte man eine OpenGL-Bibliothek wie JOGL

( oder GL4JAVA ( verwenden, um so

die 3D Grafik über die OpenGL Schnittstelle zu realisieren. Dadurch hat man nicht nur einen

direkten Zugriff auf die Rendering Pipeline und somit die Möglichkeit, das Rendering selbst zu

beeinflussen, sondern kann zusätzlich sogar noch, durch die Verwendung hardwarespezifischer

Funktionen, ein extremes “Performance-Tuning” vornehmen. Wie man sich sicher vorstellen kann,

ist diese Variante natürlich performanter, erfordert dafür aber ein Arbeiten auf einem relativ

niedrigen Abstraktionsniveau und bedeutet damit auch einen deutlichen Mehraufwand in der

Entwicklungszeit. Funktionalitäten wie 3D Sound, “collision detection / handling” oder die

Unterstützung von Eingabegeräten muß man hier entweder selbst implementieren, oder aber in

zusätzlichen Bibliotheken “einkaufen”. Dadurch steigt natürlich zum Einen die Komplexität der

damit verbundene Lizenzrestriktionen (z.B. GPL).


ACHTUNG:

DIESER TEXT IST NUR EIN AUSSCHNITT!!! FÜR WEITERE TEXTE BITTE FRAGEN .



GESCHRIEBEN VON:


Legal info - Data privacy - Contact - Terms-Authors - Terms-Customers -
Swap+your+documents