Systemprogrammierung > Projektgruppe: Alexander Schesler, Hristo Matev.

16
Systemprogrammierun Systemprogrammierun g g << Realisierung eines 3D-Spiels mittels >> << Lightwave3D und Java3D >> Projektgruppe : Alexander Schesler, Hristo Matev

Transcript of Systemprogrammierung > Projektgruppe: Alexander Schesler, Hristo Matev.

Page 1: Systemprogrammierung > Projektgruppe: Alexander Schesler, Hristo Matev.

SystemprogrammierSystemprogrammierungung

<< Realisierung eines 3D-Spiels mittels >>

<< Lightwave3D und Java3D >>

Projektgruppe:

Alexander Schesler, Hristo Matev

Page 2: Systemprogrammierung > Projektgruppe: Alexander Schesler, Hristo Matev.

SpielbeschreibungSpielbeschreibung

Erstellung eines virtuellen 3D- Raums mit Hindernissen

Roboter bewachen eine Waffe Spieler versucht diese zu finden und

unschädlich zu machen Spiel ist beendet, wenn Waffe unschädlich

ist, oder Spieler vom Wachroboter erfasst

Page 3: Systemprogrammierung > Projektgruppe: Alexander Schesler, Hristo Matev.

AufgabenbereichAufgabenbereich

Raummodellierung Texturierung des virtuellen 3D- Raums Wachrobotersteuerung ( Computerseite ) Sounds im Spiel Spielschwierigkeitsgrade Netzwerkspiel / „Multiplayer“ , „Client“ -Teil Optimierung der Szene Schluss-Video mit LW

Page 4: Systemprogrammierung > Projektgruppe: Alexander Schesler, Hristo Matev.

RaummodellierungRaummodellierung 1 1

4 Wände - die Grenzen des Spielfeldes 4 Wände - die Seitehintergrund eine Untergrundfläche - Boden 8 flache Flächen - Hindernisse ein Gebäude - Hindernis eine Kugel - Sonne mit Lichteffekten

Page 5: Systemprogrammierung > Projektgruppe: Alexander Schesler, Hristo Matev.

RaummodellierungRaummodellierung 2 2 Flächen-Objekte:

QuadArray qa = new QuadArray(4, QuadArray.COORDINATES );

qa.setCoordinate (0, new Point3f (-100.0f, -3.0f, -100.0f ));

qa.setCoordinate (1, new Point3f (-100.0f, -3.0f, 100.0f ));

qa.setCoordinate (2, new Point3f (100.0f, -3.0f, 100.0f ));

qa.setCoordinate (3, new Point3f (100.0f, -3.0f, -100.0f ));

Sonne-Objekt: Sphere sp = new Sphere (1.4f, Sphere.GENERATE_NORMALS |

Sphere.ENABLE_APPEARANCE_MODIFY,a);

PointLight pl = new PointLight (bound, lPos);

Appearance a = new Appearance ();

Material mat = new Material ();

Page 6: Systemprogrammierung > Projektgruppe: Alexander Schesler, Hristo Matev.

Texturierung Texturierung des 3D- Raumsdes 3D- Raums

QuadArray qa = new QuadArray(4, QuadArray.TEXTURE_COORDINATE_2);

qa.setTextureCoordinate (0,new Point2f (0.0f, 1.0f));

qa.setTextureCoordinate (1,new Point2f (0.0f, 0.0f));

qa.setTextureCoordinate (2,new Point2f (1.0f, 0.0f));

qa.setTextureCoordinate (3,new Point2f (1.0f, 1.0f));

2D Texturen für alle Flächen-Objekte:

Page 7: Systemprogrammierung > Projektgruppe: Alexander Schesler, Hristo Matev.

Wachrobotersteuerung 1Wachrobotersteuerung 1

Steuerung durch Fuzzy-Regler

Wissensbasis

Lingw. Variablen und Terme

z.B Abstand

Fuzzy-Regeln:

if .... then....

Fuzzy-

Inferenz

Defuzzy-

fizierung

Fuzzy-

fizierungY

x1x2x3

Wissensbasis

FS

Page 8: Systemprogrammierung > Projektgruppe: Alexander Schesler, Hristo Matev.

Regler Komponente

Wachrobotersteuerung 2Wachrobotersteuerung 2

Page 9: Systemprogrammierung > Projektgruppe: Alexander Schesler, Hristo Matev.

Wachrobotersteuerung 3Wachrobotersteuerung 3

Implementierung

private native double getFuzzyAnswer (String f, double [] p);

System.loadLibrary (libName);

rotAngle = (new FuzzyAnswer ().getFuzzyAnswer (fisModule, distace))

target.getTransform (targetTransform);

rotateRob.rotY (Math.toRadians (rotAngle));

targetTransform.mul (rotateRob);

target.setTransform (targetTransform);

Page 10: Systemprogrammierung > Projektgruppe: Alexander Schesler, Hristo Matev.

„„Sounds“ im SpielSounds“ im Spiel

BacktroundSound PointSound ConeSound Soundspace

BackgroundSound bgSound = new BackgroundSound();

MediaContainer mc = new MediaContainer ();

mc.setURLString (fileName);

mc.setCacheEnable (true);

bgSound.setEnable (true);

Page 11: Systemprogrammierung > Projektgruppe: Alexander Schesler, Hristo Matev.

SpielschwierigkeitsgradeSpielschwierigkeitsgrade Bewegungsgeschwindigkeit der Roboter Fuzzy-Regler Anzahl Roboter

switch (severity)

{

case 1:

rotAngle = myFis.getAngle (dist, fisModule2);

speedRobo = speed = (Math.abs (r.nextInt () % 100));

nRobo = 6;

break;

...

}

Page 12: Systemprogrammierung > Projektgruppe: Alexander Schesler, Hristo Matev.

Szenegraph 1Szenegraph 1

BG

ViewBG

BGBGBGBG

Locale

Virtual Universe

createSceneLand createSceneBgWalls

TG

sLand

S

sWall1

S

TG

sWall1

S

sWall1

S

sWall1

S

TG TG

Sphere

tgBgWalls(Seitenhintergrund)

tgLand(Grundfläche)

bSound sScape pl bSound

tgSound(Hintergrundmusik)

createSceneSound createSceneSuncreateScenePlay

Siehe unten tgSun

(Kugel mit Licht)

BackgroundSound

SoundScape PointLight

AmbientLight

Page 13: Systemprogrammierung > Projektgruppe: Alexander Schesler, Hristo Matev.

Szenegraph 2Szenegraph 2

TG

S

tgWalls(Spiel-grenzen)

createScenePlay

tgBg (Hintergrund)

tgRobot(Roboter)

BG

TG TG TG TG

S S S S S S S S S S

Locale

Virtual Universe

tgObstacle(Hindernisse)

tgBuild(Gebäude)

...

sWallssRobot(Roboter-Objekt)

sBuild(Gebäude-Objekt)

sO2sO1 sO3 sO5 sO6 sO7 sO8sO4

Page 14: Systemprogrammierung > Projektgruppe: Alexander Schesler, Hristo Matev.

KlassendiagrammKlassendiagramm

PlayGround

Applet{abstact}

MyShapes

MyLight

MySound

MyIntro

FuzzyAnswer

MyFiles

PickObstacle

Behavior{abstact}

Schnittstelle zu c-Dateien (dll)

Enthält main ()

MediaContainer BackgroundSound

AuralAttributes

Thread

TerrainFileReader

QuadArray

Page 15: Systemprogrammierung > Projektgruppe: Alexander Schesler, Hristo Matev.

Schluss-Video mit LWSchluss-Video mit LWTextszene Raumszene

WeltraumszeneTerrainszene

Page 16: Systemprogrammierung > Projektgruppe: Alexander Schesler, Hristo Matev.

Entwicklungszeit Entwicklungszeit Aufgabenteil Gesamtzeit / hAnimation 90,6Programm 61,2Dokumentation 15,0  166,8

  Rendering - Zeit Rendering - Zeit Szene Frame /s # Frames Gesamtzeit / hTextszene 3 300 0,25Raumszene 45 1501 18,75Terrainszene 150 1971 82,0

Weltraumszene 180 800 40,0  141,0