Monday, May 29, 2006
Hansel added heath, gem and coin status
display in the main game view so that the player can see how much
health, gem and coin do he have, also implemented the collision
detection for the game walls with reaction of a bounce when knock
on to wall it is up and running but there is some flaws in it as
when it bounce, direction of the character can be change and when
it change, there is no collision detaction done, therefore it can
get to the other side of the wall when this happens. So currently
looking in to how to make it more smarter, also looking in to way
to reduce the number of wall checking to be done for wall that are
way from the character. as for frame rate wise, frame rate are good,
running at and average of 59 - 60 fps on a Nivida 6200 graphic card.
Nigel integrated spring camera prototype
with hansel's collsion detection prototype. Version now 5. Camera
is observed to be very jerky, when the 'w' key is depressed all
the way and the distance between cam and charatcer is at max.
Completed springy camera, using my own special method with the
mathematical formula from Treglia Dante's example.
Thought of a new approach where the update_camera() will be called
in glIdleFunc(), with parameters taken directly from the camera
class itself. Those parameters will be supplied separately rather
than condensing both setPosition and UpdateCamera into a function.
Begin work on new and perhaps final build of the springy camera.
Used a different approach by coding the springing by myself, with
only the math forumla taken from the example. Managed to build however
the camera position is not updating properly, and a function call
placed in the glIdleFunc() causes the camera position to get sucked
out into infinity.
Sought help from teacher for debugging dante's code. Real work
can now begin. Tried to implement the code without success: either
my standard is too low or his formatting is atrocious.
Discussed about all the collision detection needed in the game.
A document was produced.
Ren Hao last week renhao did the customise
key setting. He implemented four more buttons in the customise menu
to change the buttons key for the movement of the character. He
also added the game sound in the game world.
Now the player can change his key input in customise setting. This
customised key input is also being saved so there is no need for
the player to customise the key setting again when he restart the
game.
Now renhao will implement the customisation of mouse sensitivity
in customise setting.
Melissa thanks to Nigel, I discovered
what went wrong with my codes. I did not use the proper call functions
for each loader. So we created an ID for the loaded texture, so
that it could be mapped onto the model. As for mapping the texture
correctly onto the model, I have to use an unwrapper to map my texture.
This is because the texloader maps (0,0) of my texture to the first
polygon.
Learning how to use Ultima Unwrapper. It's abit tricky...
Discovered I did not save the almost-complete texture loader. Had
to redo. Couldn't complete because I couldn't compile without Ren
Hao's Fmod. Need to ask Nigel about a recurring ( and irritating)
error...
![redline](images/lines_red.gif)
Friday, May 13, 2006
Hansel have improve the control system
of the game which now able to move front, back, left, right and
diagonal by using flags. Also used render list for maze and skybox
whcih have very much improvement on the frame rates. Also helped
nigel with intergration of the menu to the gameworld and enable
to start new game, exit from the gameworld and also exiting game
from menu.
Nigel Begin work on implementing Dante's
code for the third person camera and second attempt to understand
and disect the code. This is just to ensure the camera is "chasing"
rather than rigidly following a certain point behind the character.
Successfully implemented thrid person camera in gameworld v3-4
(now gameworld v4). It is a rigid third person camera where no difference
is observed in the feel of the game, except that now the character
no longer "spins" on its own axis. Uploaded to ftp as
gameworld v4.
Begin work on third person camera. Character is to be controlled
directly by keyboard and mouse inputs, and the camera is positioned
a certain distance behind it and looking in the direction of the
character, consistently.
Tried to understand Treglia Dante's code for camera and spring
damping but failed, too messy and unclear beyond my abilities. Main
issue includes being unable to find where camera positions are generated.
Hansel has returned back the game skeleton and named it gameworld
v3-4. Background is changed, and character now follows the camera.
Movement and facing of both the character and camera is parallel
and thus the character appears to spin on its own axis. Uploaded
the final build of game skeleton to hansel.
Integrated hansel's gameworld into the menu system, named as game
skeleton. I have used the game state software design approach, where
upon selected , the buttons will change the game's state accordingly
and the game environment will automatically create the required
classes and run them.
Done the mouse input for the gameworld, where the mouse movement
corresponds to the direction where the character is facing, just
like a shooter game. Difference of the mouse coordinates of the
current and previous frames is set as the angle of rotation for
the camera and character.
Ren Hao this week continue to work
on putting sound in the menu. Have implemented the background music
for the menu and it can loop once it played finish, also implemented
a wav sound when the mouse move the buttons in the menu, and also
come up with the GUI for the customising of sound volume.
Now i am current working on the customise menu to adjust sound
volume. The volume can be adjusted by using the keyboard. But now
i am working on adjusting the volume using mouse.
Melissa use Ms Dioselling's obj loader
to load models into game temporary. Completed the models for miscellanous
items (coins, gems) as well as monster and corrupt guard.
Working on obj loader code so that it can load texture in as well.
Changed menu background to .tga format.
Found a way of loading .3ds models, with bitmap texture. Figuring
out how to implement it to read datas of multiple polygons, by parsing
through addresses of these polygons and storing their vertices,
and other information. First need to find out how to get the addresses
of these information.
![redline](images/lines_red.gif)
Wednesday, May 8, 2006
Hansel completed the map designer using
flash and gameworld with some dummy TGA textures on the wall and
floor also implemented the camera with control into the game world.
Nigel completed mouse input for the
menu, where a callback function will call up the method in menu
class, which will in affect the indivual buttons. This bypassed
the problem of glut not allowing callback functions in classes.
Implemented alpha channel for the textures, as the button's textures
have a background behind it, which needs to be hidden by means of
an alpha channel.
A new problem turns up, when the buttons spin upon selection, the
transparent backgrounds of the buttons' texture "cuts"
into neighbouring buttons, especially those lower down the screen.
This is due to orthographic view not being used before drawing the
buttons, so they are angled slightly to the camera. However this
was easily resvolved by just reversing a loop to draw the lower
buttons first, so that they show through the transparent background
of the textures.(All hail good programming practices!!!)
Ren Hao researching on fmod in order
to play music and sound in the game and figured out how to use fmod.
I Will begin the implementation of the sound into the menu background,
menu buttons, and the gameworld.
In addition, i also helped out with our designer, Melissa to get
the object loader working.
Melissa finished 3D model of hero using
Maya 7.0 . There's alot of polygons used, which will lag the game,
so I need to find out how to reduce the polygon count, without comprimising
the quailty of the models, graphics etc.
Improved wall texture, and completed 3 types of floor texture.
Improved menu graphics.
![redline](images/lines_red.gif)
Wednesday, May 3, 2006
Hansel started on coding out various
parts of the gameworld loader. starting from reading in of files
and and store in to array, and also studied the various type of
wall design need to form a dynamic maze that can be reference from
the text file. Got a tga loader from website www.morrowland.com,
it uses winmain but manage to convert it to be used in our game.
Nigel realised that when the glRotatef
is used on the buttons, the buttons don't display. After referring
to the returned prototype from yesterday, which had the buttons
rotate and display correctly, realised that setting orthographic
view to draw the buttons is giving problems. This is due to the
matrix that isbeing manipulated to set orthographic view, affecting
the rotation function, as openGL collapses matrices for camera coordinates
and world coordinates into a single matrix.
In light of this issue, I am overhauling the system of the drawing
of the buttons to simply find the correct position in 3D space,
rather than in 2D. Thankfully, I need only change the naming of
the varibles to reflect (x,y,z) coordinates rather than just (x,y);
the camera view now is such that z is the side vector.
Renamed GameWorld class to Menu class.
![redline](images/lines_red.gif)
Tuesday, May 2, 2006
Meeting with Ms Dioselin, discussion of the problems encountered
in coding mouse input and also showcase the game flow concept and
gameworld map loader concept.
Hansel returned the prototype with
keyboard input detection and included background music. During meeting
with Ms Dioselin, talk to her about the gameworld concept as well
as the game flow concept.
Nigel solved the framerate problem,
which is due to loadtextures being called in DrawSelf(), rather
than in main. This means that intially the loadtexture was being
called at every frame, and thus slowed the machine. cleaned up some
of the hard-coded numbers and reverted back to the example of the
first glut-sample where position of the vertices is calculated by
the computer exclusively and the variables, rather both a combination
of variable and numbers, are passed as parameters into the glVertex3f(int,int,int);
Melissa saved buttons in tga format
once alpha channel is implemented. Couldn't do 3D model, because
Maya 6.5 crashed on home desktop. Designed monster of the game.
![redline](images/lines_red.gif)
|