Systemprogrammierung > Projektgruppe: Alexander Schesler, Hristo Matev
Spielbeschreibung 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
Aufgabenbereich Raummodellierung Texturierung des virtuellen 3D- Raums Wachrobotersteuerung ( Computerseite ) Sounds im Spiel Spielschwierigkeitsgrade Netzwerkspiel / Multiplayer, Client -Teil Optimierung der Szene Schluss-Video mit LW
Raummodellierung 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
Raummodellierung 2 Flächen-Objekte: QuadArray qa = new QuadArray(4, QuadArray.COORDINATES ); qa.setCoordinate (0, new Point3f (-100.0f, -3.0f, f )); 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, f )); 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 ();
Texturierung des 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:
Wachrobotersteuerung 1 Steuerung durch Fuzzy-Regler Wissensbasis Lingw. Variablen und Terme z.B Abstand Fuzzy-Regeln: if.... then.... Fuzzy- Inferenz Defuzzy- fizierung Fuzzy- fizierung Y x1 x2 x3 Wissensbasis FS
Regler Komponente Wachrobotersteuerung 2
Wachrobotersteuerung 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);
Sounds im Spiel BacktroundSound PointSound ConeSound Soundspace BackgroundSound bgSound = new BackgroundSound(); MediaContainer mc = new MediaContainer (); mc.setURLString (fileName); mc.setCacheEnable (true); bgSound.setEnable (true);
Spielschwierigkeitsgrade 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;... }
Szenegraph 1 BG View BG Locale Virtual Universe createSceneLandcreateSceneBgWalls TG sLand S sWall1 S TG sWall1 S S S TG Sphere tgBgWalls (Seitenhintergrund) tgLand (Grundfläche) bSoundsScapeplbSound tgSound (Hintergrundmusik) createSceneSoundcreateSceneSuncreateScenePlay Siehe unten tgSun (Kugel mit Licht ) Background Sound SoundScapePoint Light Ambient Light
Szenegraph 2 TG S tgWalls (Spiel- grenzen) createScenePlay tgBg (Hintergrund) tgRobot (Roboter) BG TG SSSSSSSSSS Locale Virtual Universe tgObstacle (Hindernisse) tgBuild (Gebäude)... sWallssRobot (Roboter -Objekt) sBuild (Gebäude -Objekt) sO2sO1sO3sO5sO6sO7sO8sO4
Klassendiagramm PlayGround Applet {abstact} MyShapes MyLight MySound MyIntro FuzzyAnswer MyFiles PickObstacle Behavior {abstact} Schnittstelle zu c- Dateien (dll) Enthält main () MediaContainerBackgroundSound AuralAttributes Thread TerrainFileReader QuadArray
Schluss-Video mit LW Textszene Raumszene Weltraumszene Terrainszene
Entwicklungszeit AufgabenteilGesamtzeit / h Animation90,6 Programm61,2 Dokumentation15,0 166,8 Rendering - Zeit Rendering - Zeit SzeneFrame /s# Frames Gesamtzeit / h Textszene33000,25 Raumszene ,75 Terrainszene ,0 Weltraumszene ,0 141,0