Presentation on theme: "Introduction Games have always been a fundamental part of human life. Space storm “ عاصفة الفضاء” is a 3D SCI-FI game that consists of two stages presented."— Presentation transcript:
Introduction Games have always been a fundamental part of human life. Space storm “ عاصفة الفضاء” is a 3D SCI-FI game that consists of two stages presented through an Arabic interface.
The main goal of this project is to apply some graphical and physical principles. Present the game through a well designed Arabic Sci-Fi adventure game. Show female abilities in the field of game programming. Goal and Objectives
Graphics Design Designing 2D images. Modeling 3D objects. Adding light to models in 3DSTATE World Builder. Using texture mapping.
Stage One Design A control frame with multiple objects 3D Objects (3Ds Max) 2D Designs (PhotoImpact XL)
Stage Two Design The two environments of the stage Green environmentWild environment
Stage Two Design Spaceman ( Adding hair using the editable mesh selection )
Stage Two Design Modeling Box with a star shape slot
Max Models VS. In-game Graphics Different models’ quality between those made with 3Ds Max and those in the In-game graphics. Model is converted into 3DState world without its features. Game engine lacks: - Glossiness - Reflection Light must be added in World Builder but still does not give the same model quality.
With light Couldn’t get a better result! Without light The 3Ds Max model In World Builder Max Models VS. In-game Graphics
Stage One Control Frame Using the texture mapping technique to add 2D image to the control frame
The 3Ds Max model Without light Adding light In World Builder Adding light to energy faces Max Models VS. In-game Graphics
Texture mapping for crystals Crystal in World Builder 3Ds Max model In-game texture mapped crystal Max Models VS. In-game Graphics
3Ds Max model Spaceman in World Builder before adding light After adding light (in-game graphic) Max Models VS. In-game Graphics
Motion Control (Shuttle) Multiple transformations are applied on both camera and shuttle.
View from inside the shuttle Motion Control (Shuttle)
By using trigonometric functions to form a wavy path (direction) for the UFOs to follow. Motion Control (UFOs)
1.Increment theta variable. 2.Update direction. direction. x = 1 - cos (Theta); direction. y = cos (Theta); direction. y = cos (Theta); direction. z = 0; direction. z = 0; 1.Define a theta variable. 2.Set initial location. 3.Set initial direction (toward shuttle). 4.Set speed. Motion Control (UFOs)
Collision detection between opponent and the UFO. Convert from 3D to 2D We apply conversion from world system (3D) to screen system (2D) to avoid depth checking Collision Detection (Stage One)
Collision detection between opponent and the UFO. convert Move the opponent No collision is not detected Position of opponent != position of UFO Collision Detection (Stage One)
Collision detection between opponent and the UFO. No collision is not detected Position of opponent != position of UFO collision is detected Position of opponent== position of UFO Collision Detection (Stage One)
Collision detection between opponent and the UFO Collision Detection (Stage One)
3D STATE collision detection method Collision Detection (Stage Two)
Show explosion effect Set vector direction Particle System
Particle System Algorithm 1.Get the target object. 2.Get the polygons belonging to it. 3.Make the object’s polygons move in all directions, by computing random vectors (directions) for each polygon. The principle of computing these vectors is according to the spherical-coordinate specification. –Inside a for loop that is repeated by object's polygons number count. »An emitter defines a sphere as the flowing: »Theta = 2 * ∏ * RANDOM(); »Phi = 2 * ∏ * RANDOM(); »Random_vector. x = cos (Theta) * sin (Phi); »Random_vector. y = sin (Theta) * sin (Phi); »Random_vector. z = cos (Phi); »Set new speed, since Random_vector is only a normalized vector, so we have to multiply it with a true speed »Speed = 5 * (factor of computer speed) »Random_vector … *= speed;
4. move the polygons, during each time, one step according to the random vector (direction) as well as scaling it, then render each step on the window to see the explosion effect. –For a certain number of time For each object's polygons –Move the polygon according to the corresponding random vector one step. –Scale the whole object, because the object contains the polygons –Render the image seen from the camera to the window, by using the built in 3DSTATE function (STATE_engen_render(…)) –The final step is to free the memory, and make the exploded UFO disappear, by using this statement: –Delete array; –STATE_object_set_event(object, 10, STATE_DELETE); Particle System Algorithm
Control panel (frame) RadarNumber of tries Energy faces Buttons shapes Control Panel Construction (Stage One)
It plays an important role in detecting the location of any UFO visible to the player or not. Radar
Conversion of the location of UFO from the world coordinate system (xy-plane) to the local coordinates system (zy plane) of the radar. Y X Z Y X Z world coordinate system local coordinate system of radar convert
Conversion the location of UFO from the world coordinate system (xy-plane) to the local coordinates system (zy plane) of the radar. Y X Z Y X Z UFO in world coordinate system UFO in local coordinate system of radar Radar
Conversion is done through the following equations: Scaling factors Sx = (xr max –xr min) / xw max – xw min Sy = (yr max –yr min) / yw max – yw min Locations on radar Xr =xr min + (xw- xw min)* sx Yr =yr min +(yw – yw min) * sy Radar
Control panel (frame) TimerNumber of tries Crystals and keys Map Control Panel Construction (Stage Two)
Before correctionAfter correction Control Panel Construction (Stage Two)
Shows the time left for the player to achieve his mission. Using an MFC function called OnTimer( ) to count one second of time. Timer
Optional Features Adding movies and sounds. Adding simple animations.
Future work Use a more advanced game engine. Link two players through a network. Add advanced animation to certain objects. Add more stages with difficulty levels. Add more particle system effects. Add shadow for objects.
Conclusion We produced a uniquely new game in Arabic language in a timely manner. We applied all project requirements. Our knowledge had expanded in the programming field as we learned MFC. We learned how to work and cooperate with each other to achieve our goal.