Sunday, January 31, 2021

 In the begging, when we were discussing about building a knowledge based game, we talked about what the player will gain from this game. We had a lot of conversations about it but the finally our opinions were that we must create a game which provide knowledge to the player about different kind of specialties. We decided that we will put for each door one specialty and that this specialty will have 3 different kinds of objectives about it. During the game if you had collect and the 3 objectives then the player will be able to go to this door to open it but before of this the player must answer in the question that the game ask to the player. This question is based from the specialty we put for each door.

In my opinion we can say that the game provide not only knowledge but and cleverness to the player for the reason that in one part of this game the player must collect one objective that it is inside the lake and must be able to take unless if the player wants to open the door. The player must be clever if he wants to collect it. Player must find the best way to get inside the lake and to take it.

Resume
First, we will mention that this game is a game of knowledge. The main purpose of the game is that HERO must be able to collect all the objectives for the reason that he must open all the doors to pass to the Final Level that means he will pass to a different stage and must fight against with the BIG BOSS if he wants to save the PRINCESS.

During the game there are a lot of conflicts, for example with the enemies and after with the BIG BOSS and you must face them if you want to continue and finish the game.

In the beginning, the game provide you a gun, because is necessary to start it.

There are a lot of doors inside the stage. Each door has 3 objectives and if you have all these then the game ask you to answer in one question. If your answer is correct then you can open the door but if your answer is wrong then you can try again. The doors aren’t same.

Each door is different and you must collect different 3 types of objectives for each door.

There are 6 different types of doors and the objectives of all these doors are:

  • History objectives
  • Computer Science objectives
  • Math objectives
  • Literature objectives
  • Game Design objectives
  • Science objectives

Another thing that I want to tell is that during the game when you collect an objective the game provide you a little bit power (life).

For example:

As we can see in the Figure 1, we don’t have full power because we didn’t take the objective but if you can see in the Figure 2 when you have all ready take the objective the game provide to you a little bit of power (Life).

Finally when you had collected all the objectives, you had open all the doors and you had answered all these questions then game transfer you to the Final Stage. This stage is more difficult than the others stage because there are a lot of enemies and one more reason is that there are a lot of difficult questions you must answer:

  • If your answer is correct then the game provides you with a little bit power (life).
  • If you don’t answer correct then the game put in the stage 3 more enemies to be against you.
  • When you had answer correct in all the questions then the game transfer you automatically to the same stage but you must face the BIG BOSS.

Theoretical introduction to the game category.

The game can be included within the First Person Shooter genre (FPS) which is the most popular video game genre today, along with MMORPGs (Massively Multiplayer Online Role Playing Games). The most striking feature of these types of game is that the player is controlled from a first person perspective, that means that the player sees through the character’s eyes.

These games were some of the first type of games to experiment with 3D graphics, and multiplayer gaming, since they could be played in several computers connected via LAN or through the internet with the use of servers.

Although some FPS had been released in the late 70’s this genre’s popularity skyrocketed with the release of two games, Wolfe stein 3D and Doom, both of them released for the PC (and later, home consoles) by ID Software.

A classic FPS, Wolfe stein 3D and a modern FPS, Halo 3

Other famous FPS include Half-Life, Halo, Gears of War, Quake, Duke Nuke, etc.

With the networking capabilities of Next-Gen Consoles like the Wii, the Play station 3 or the Xbox 360, these games enjoyed a huge increase in popularity due to multiplayer gaming and modding (customizing of characters, weapons and levels by players). Players from all over the world get online using servers like Xbox Live, and have fun playing in a variety of modes, like taking an enemy’s team base, cooperative or competitive modes, etc.

We chose this genre because the game requires for the player to explore for items that are hidden within the maze. Seeing this game from a 2D, third person perspective would not be as realistic or as exciting as seeing this game as if a person was actually inside the level, making his way through obstacles and boundaries to find objects carefully hidden and guarded by enemies. So exploring a level became more realistic, unpredictable, challenging and fun.

Source (http://en.wikipedia.org/wiki/First-person_shooter)

LAN Party: Hundreds of gamers organize conventions so they can meet, exchange moods and play.

Project Phases

Conceptualization
The team met to decide what type of game we were going to make. At first we thought about making an adventure game with a 3rd person perspective (i.e Zelda or the Final Fantasy SNES games). However after consulting a tutorial from the Game Maker site about how to create First Person Shooter game we decided to analyze their source code.

So we turned our game from a 2D, 3rd person view adventure game to a 3D, 1st person view adventure game.

Furthermore, the team discussed the objectives within the game. It was decided that the player would face enemies and be able to use weapons to defeat them. It was also decided that the player would have to collect different items in order to advance to other areas in the game map. The feature that included the player gaining extra health after collecting an item was added on a further iteration.

Further we dedicated our time to level design, the rendering of the objects (items, gun and buildings) and to develop the scripts that would control events in the game like player movement, enemies’ health, unlocking doors and other non game play related actions like moving to the next room, decreasing the health, preventing the player to move through the room if certain items are not collected.

Preproduction

Prototyping
Once the objectives were set, our first prototypes were developed in pen and paper. We drew ideas of what our maps would look like and after we analyzed how did they built the 3D levels in the tutorial by Mark Over mars, found on the Game Design Website we attempted to recreate what we had drawn in the rooms. However the standard size for a room (640 x 480 pixels) was not enough for the level we had designed so we had to resize it several times until two resolutions (900 x 900 in the first level and 800 x 800 in the final dungeon) were chosen to create the mazes within that space.

Paper prototype used for level and game play design

The prototypes designed in pen and paper was the only ones that were physical throw away prototypes. The rest of the prototypes were software based. This prototype was not thrown away, it was tested at certain points were milestones were completed (i.e. Map completed, items added, creation of the gun and enemies, scripts for doors and items added, etc) and further features were added in that same prototype when the current features were tested successfully. In case a feature had bugs that affected the rest of the system, backups from previous iterations of the program were stored in case of any contingencies, which occurred frequently during the development on our game.

Prototype for our first level using the Game Maker 7.0 Application

Play Testing
Our testing evolved in the way described in Game Design Workshop, consisting on 3 different stages. Testing the game ourselves. Tested by a confidant, and finally tested by others.

When features were being developed, the team tested them extensively. Once these features were finished and we had a playable prototype. People close to us would test the game and give us feedback about it.

After the game was completed, the testing was done in groups. One person would play the game while the others observed and gave their comments about what they were seeing. Their feedback helped us shape the game play and the difficulty of the questions asked, which were designed for people with high school or higher education.

Design Document
Description: A hero must rescue a princess from an evil dictator by infiltrating into their headquarters, built like a maze. In order to escape the maze the placer must unlock the doors that give access to further areas of the map. These Doors must be unlocked by gathering 3 specific keys. These keys represent objects from a variety of educational topics, like science, math, history, literature, computer science and game design.

Once the keys have been gathered the player must answer a question correctly to proceed.

All levels are filled with enemies which want to defeat the player. The player can either avoid them or defeat them using a laser gun will decrease the enemies’ health until it is depleted. These enemies hide in strategic places so items and doors are hard to reach.

Unlocking all doors will grant access to the final dungeon were the player must defeat enemies and find 6 question mark signs that are hidden in the dungeon. If the questions are answered incorrectly, the player will be teleported to an uncomfortable location and more enemies will be created nearby to attack him, giving the player a huge disadvantage (a trap).

Finding all the questions and answering them correctly will enable the player to face the final boss, which is way stronger than the average soldiers patrolling the levels.

Features
The relevant items and objects in the game are the following:

Note: Props used for the game such as walls, trees and bodies of water are used for boundary purposes only and will not be mentioned in this part.

Player: Main character in the game he is able to move, collect items and shoot a laser gun to defeat enemies.

Laser gun: A laser gun used by the player to stun and to defeat enemies. It can only shoot one bullet at the time so one must press the space-bar repeatedly to shoot faster and multiple times.

Doors: These structures block the player for accessing different items and areas in the maze. The doors can be unlocked by gathering 3 specific keys that open it and by answering a question on a specific topic correctly. Unlocking all the doors is a primary objective to beat the maze.

Keys: There are 18 keys in the maze. These keys are divided into 6 sets. Each set opens a specific door within the maze. Finding them also replenishes some of your health if you have been injured by any of the enemies.

The set of keys are the following:

History: Napoleon’s Hat, the bust of Aristotle and the Mayan Pyramid of Chichén Itzá.

Math: Pi symbol, the portrait of Karl Frederic Gauss, and the Square root of X.

Literature
A copy of Don Quixote, A copy of Hamlet and the photo of writer Franz Kafka.

Science
A water molecule, the DNA Double Helix and a photo of Albert Einstein.

Computer Science
The @ Symbol, Tux the Penguin and the Java Logo.

Game Design

The graph of flow, a copy of Game Design Workshop and a Surprise Item.

Question Marks: These items are only found in the final dungeon. These have the same function as doors except for the fact that these do not block areas from being explored. These questions contain traps that mean that if you answer incorrectly you will be ambushed by a squad of soldiers. Answering all questions correctly is necessary to beat the dungeon and proceed to the fight with the final boss. As the keys, these items replenish some of your health if answered correctly.

Enemies: These are the antagonists of the game, followers of the dictator who has kidnapped the princess and patrol their secret headquarters. There are two kinds of enemies in this game:

Foot Soldiers: These enemies are the easiest to find in the game. They usually hide near objects or doors in order to prevent the player from going further. They have 3 life points..each shot from the laser gun decreases a life point.

Final Boss: The final boss from the game appears after the player has answered all the questions in the dungeon correctly. When attacking the boss can deplete the player’s health faster than a soldier and has 20 life points…every time he gets shot a life point is decreased.

Description of User interface

As described in the conceptualization, the game is played from a First person Perspective. So you see the maze through the player’s eyes. In the lower-center part you can see the laser gun that the player carries. In the lower left corner, you can see a green bar, this is the player’s health. It decreases and turns yellow and then red as the player is injured by enemies. It the life bar becomes entirely depleted, the player loses and has to restart the game from the beginning.

User interface during the game

Levels: This prototype has two levels…props like trees, bodies of water and walls are used as boundaries, so the player has a limited area he can explore. These are the maps for each one of the levels.

Level 1: Enemy maze

Most of the game play takes place in this area….when rendered it is an enemy base located outdoors. There are boundaries like invisible walls, doors, rivers (the only way through is by using a bridge) and a lake. This area is larger and more difficult to explore than the dungeon, but the enemies are more scattered between each other, making it very difficult for the player to suffer an ambush by 2 or more enemies. All of the purple lines build up the blueprints for the rooms, which are indoor areas.

Level 2: Final Dungeon

This level is way smaller than the maze, but it has more enemies and those are closer to each other, so ambushes by 2 or more enemies are likely to happen. Boundaries for this levels are determined by the dungeon walls which are the black lines in the figure. Unlike the maze, this level contains traps, these traps create instances of enemies near the player, making it difficult to escape the room intact. These traps are activated when the questions are answered incorrectly. The main boss will spawn in the big room in the center.

Technology Specification

After testing the game on different computers we concluded the minimum requirements a computer must meet in order to play our game without delays and graphic related issues.

Operating System: Windows XP or Higher *
RAM 512 Mb
Hard drive 30 Gb or Higher
DirectX 9.0
Good Graphics card.

*Mac and Linux users can use this software by using virtualization software like VMware, Parallels Desktop or Virtual box. However they must enable 3D graphics acceleration before running the Virtual Machines. Mac users may also run Windows via Boot Camp, which is highly recommended since the OS would run natively.

Source Code Highlights

As we have mentioned earlier our project was based on the tutorial for creating a First Person Shooter game, by Mark Over mars that was found on the Game Design website, so we took the available code as a base and adapted it to our game’s needs.

In the beginning of program the most important thing is to find the good direction for the Hero. It means that the player can be control movements from the Hero by using keyboard who we decided, which is easy to play the game.

All codes belongs to the Hero which is the main person and he has the control, as walls, floors, bridge, water, ceiling, also you can see the all codes below.

Next we have states which after it is getting all pictures and killing the enemies and of course answering the questions, the Hero draw to the next level which is more difficult to kill enemies and find the right answer.

Explanation of the code which we used on the program

Execution a piece of code to turn left:

{
direction += 3;
}
Execution a piece of code to turn right:
{
direction -= 3;
}

Execution a piece of code to up forward and the speed can be minimum 2 and less:

{
if
(speed < 2) speed = min(2,speed+0.4);
}

Execution a piece of code to down forward:

{
if
(speed > -2) speed = max(-2,speed-0.4);
}

Execution a piece of code is a message when we lose all the health in the game, send a message that Game over and we need to try again:

{
show_message(“Game Over…Try Again”);
d3d_end();
game_restart();
}

Execution a piece of code is the setting the projection with the Hero who it can seen the first person perspective:

{
// set the projection
d3d_set_projection(x,y,10, x+cos(direction*pi/180),
y-sin(direction*pi/180),10, 0,0,1);

Set color and transparency, it is when the Hero draw next level the state will change color and transparency:

// set color and transparency
draw_set_alpha(1);
draw_set_color(c_white);

Drawing floor and ceiling, we use simply the code for following shape, the floor, roof, the bridge and the water. Yes but it isn’t so simple as long as it appears, because before we write the code we need it measure the state which we have made. Using the squares on the window that it provides us the program, we simple measuring the dimensions and then we start to build the state that we will play:

// draw floor and ceiling
d3d_draw_floor(0,0,0,900,800,0,background_get_texture(texture_grass),24,18);
d3d_draw_floor(0,0,32,900,800,32,background_get_texture(texture_horizon),1,1);
d3d_draw_ellipsoid(0,0,0.01,50,50,0.01,background_get_texture(texture_water),10,10,10);
d3d_draw_floor(272,272,0.02,321,340,0.02,background_get_texture(texture_bridge),1,1);
d3d_draw_floor(0,284,0.01,900,324,0.01,background_get_texture(texture_water),1,1);
d3d_draw_floor(127,0,0.01,424,164,0.01,background_get_texture(texture_floor),1,1);
d3d_draw_floor(127,0,31.99,424,164,31.99,background_get_texture(texture_ceiling),1,1);
d3d_draw_floor(560,363,0.01,800,480,0.01,background_get_texture(texture_floor),1,1);
d3d_draw_floor(560,363,31.99,800,480,31.99,background_get_texture(texture_ceiling),1,1);
d3d_draw_floor(592,0,0.01,890,185,0.01,background_get_texture(texture_floor),1,1);
d3d_draw_floor(592,0,31.99,890,185,31.99,background_get_texture(texture_ceiling),1,1);
d3d_draw_floor(16,334,0.01,229,485,0.01,background_get_texture(texture_floor),1,1);
d3d_draw_floor(16,334,31.99,229,485,31.99,background_get_texture(texture_ceiling),1,1);
d3d_draw_floor(64,645,0.01,294,755,0.01,background_get_texture(texture_floor),1,1);
d3d_draw_floor(64,645,31.99,294,755,31.99,background_get_texture(texture_ceiling),1,1);
d3d_draw_floor(575,528,0.01,840,745,0.01,background_get_texture(texture_floor),1,1);
d3d_draw_floor(575,528,31.99,840,745,31.99,background_get_texture(texture_ceiling),1,1);
d3d_draw_ellipsoid(288,496,0.01,464,608,0.01,background_get_texture(texture_water),50,50,50);
d3d_set_fog(true,c_white,10,300);
}

Description for the gun, the door (just one) and the question mark. In the beginning of game the hero keeps a gun which uses to kill the enemies that it meets each time front him.

Execution a piece of code for the gun:

{
// check whether you can shoot
if (not can_shoot) exit;
can_shoot = false;
// show the animation and play the sound
image_speed = 0.4;
image_index = 0;
sound_play(zap);
// determine what you hit
var xx, yy, ii;
xx = global.camx;
yy = global.camy;
repeat (50)
{
xx += 5*global.camcos;
yy -= 5*global.camsin;
ii = instance_position(xx,yy,enemy_basic);
if (ii == noone){ continue;}
if
(ii.object_index == enemy1) {
if
(shots = 0){
with
(ii) instance_destroy();
shots = 3;
}
else
{
sound_play(scream);
shots = shots — 1;
}
}
break
;
}
}

Tries it gathers the items that we have put in difference points of dance floor, because without the items, doesn’t open the door for the next dance floor. When you find the three items the itemount becomes 0 and that unlocks the door and check the collision event in door.

Execution a piece of code for the items:

{
show_message(“You have found the photo of Albert Einstein!”);
global.sItemCount = global.sItemCount — 1;
if(health < 100){
health = health + 10;
}
}

Each time where we meet door, the game provide us a question which we should answer it rightly, because only 3 specific keys open every door, in the code there is a variable called mItemCount or litemCount, those variables decrease when you find objects, you can’t open the door until you find the object.

Execution a piece of code for the door:

{
if
(global.lItemCount < 1){
show_message(“Good, you have found the items! Now you must answer one final question!”);
switch(show_message_ext(“Which of the following books was NOT written by Shakespeare?”,”Macbeth”,”The Prince”,”Othello”)){

case 1:
show_message(“Incorrect, try again”); 
break;

case 2:
show_message(“Correct! You may pass..”);
sound_play(unlock);
instance_destroy();
global.doorsLeft = global.doorsLeft — 1;
if(global.doorsLeft = 0){
d3d_end();
show_message(“Level Clear”);
sound_stop(sound0);
room_goto_next();
}
break
;

case 3:
show_message(“Incorrect, try again”); break;
}
}
else
{
show_message(“You must collect 3 literature related items to go through”);
}
}

Execution a piece of code for the question mark:

{
show_message(“Answer this question correctly or suffer the consequences!”);
switch(show_message_ext(“The French Revolution started in the year..”,”1810",”1776",”1789")){

case 1:
show_message(“Incorrect…now pay for your mistake”);
instance_create(32,416,enemy1);
instance_create(64,336,enemy1);
instance_create(80,480,enemy1);
instance_create(850,333,laser); 
break;

case 2:
show_message(“Incorrect…now pay for your mistake”);
instance_create(32,416,enemy1);
instance_create(64,336,enemy1);
instance_create(80,480,enemy1);
instance_create(850,333,laser); 
break;

case 3:
show_message(“Correct..seek the other questions in the remaining rooms”);
instance_create(850,333,laser);
global.qmarks = global.qmarks -1 ;
if(health < 100){
health = health + 10;
}
instance_destroy();
break;
}
}