Transcript game_part
Multi-Group Network Game
Project
A Project By:
Erez Gazit and Sagi Katz
Agenda
•
Project description.
• Project goals.
• Overview of network platform.
• Network platform explanations.
• Overview of the game.
• User interface overview.
• The way it works.
• Challenges and their solutions.
Project description
The project is a multi-group networked version of
the classic “Capture the flag” type of game.
It divides into two parts:
– The network platform:
• The platform is responsible for communications between
groups and within the groups.
– The game:
• The implementation of the “capture the flag” algorithms
and its interfaces.
Therefore, this presentation also divides into two
parts: The network platform presentation and a
presentation of the game.
Project Goals
Creating the multi-group networking platform.
– It should be able to support:
• The connection establishment, and maintain
communications.
• A wide variety of applications (Platform is generic).
Designing the game: “coOperation”.
Creating a simple interface between the two parts
of the projects.
The Network Platform
A multi-group networking platform.
– Network communications are divided into a tree of
connections.
Each session member is part of a group.
– All communications from session member go only to his
group leader.
Each group has a group leader.
– Group leader is also a session member in the group, and
sends data to his group leader – himself.
Communications go through the session leader.
– Only group leaders send their data to session leader.
– Some internal group messages are not sent to session leader.
Platform usage through multiple-groups strategic game.
Why connection tree?
Information security:
– Internal group messages need never leave the group network.
Delay:
– All messages need to pass a max of 4 arcs.
Synchronization:
– Two levels of synchronization:
• Synchronization inside group.
• Synchronization between groups.
Programming:
– Each role can be implemented separately and in a different
thread than the other.
Platform 1 on 1.
The network platform has three major parts:
– Session construction.
• How do all the members of the session connect and
assume their roles?
– Communications flow.
• How does information get from one session member to
another member or group?
– Handling disconnections.
• What happens when a Session member, Group leader or
Session leader disconnects?
Step 1: Session construction:
Every member connects to external host server.
– Host server address is ‘known’ to all.
Host server organizes the members into groups,
and creates group leaders and the game leader.
– Leader roles are usually given on a first come first
served method.
Everyone disconnects from the external host with
knowledge needed for connecting to other
session members.
– When connecting to host server, each client sends port
numbers it will be listening to.
Host server
1st connection:
Session Leader
Group 1 Leader
Group 1 member
4th
connection:
Group 1 member
2nd connection:
Group 2 Leader
3rd connection:
Group 1 member
5th
connection:
Group 3 Leader
And so forth and so forth…
6th connection:
Group 2 member
Session
Leader
Group Leader 1
Also Session leader
Group
Leader 2
Also
Group
Leader
Also
Group
Leader
Also
Group
Leader
Group
Leader 3
Step 1: Connection builder:
Starts group leader and session leader hosts for future use.
– Hosts used in case member becomes group leader or session
leader.
Connects to external host.
– External host address is specified by user.
Creates GUI for writing alias and selecting group (and role
in some cases).
– First to connect also picks number of groups and number of
members in group. Is usually also session leader.
Writes all members’ data in global list to be used in session.
Disconnects from external host, sends data to net-manager
and exits.
Step 2: Communications Flow:
Every member sends data to group leader.
Group leaders collect data from all members, process it,
and send it to session leader.
– Internal group messages are not sent to session leader, but
remain in group.
Session leader collects data from all group leaders,
processes it, and sends it to group leaders.
– Normal messages are only sent after all group leaders send
their messages.
– Most messages are sent back ‘as is’, with the exception of
special messages (disconnections, etc.)
Group leaders send data to group members.
Each member uses its new data.
Step 2: Net-manager:
Receives global list of addresses from connection builder.
– List used throughout the session and updated upon disconnections.
In charge of connecting clients to hosts and maintaining
connections.
– Hosts and clients are external threads that send messages to
functions in net-manager.
Presents simple send function to outside program.
– Outside program only has to add header and dest. to message and run
send function.
Contains routines for sending the messages:
– Currently, routine is group leader collects messages from all group
members and sends to session leader who collects from all group
leaders and sends all data back to group leaders.
Currently, outside program (game) determines interval
between sending of messages.
Handling disconnections:
“Normal” group player disconnection detected by group leader.
– Message is sent through game leader informing of disconnection.
– Player removed from group and from game.
Group leader disconnection detected by group and Session leader.
– New group leader from group waits for group to connect and
announces disconnection to session leader.
– Old group leader removed from group and from game.
– If Group empty then session leader removes group, and removes old
group leader from game.
Session leader disconnection detected by group leaders.
– New session leader is taken from old session leader group, or next
group if empty.
– New session leader waits for connections from group leaders and
resynchronizes game, and announces disconnection of old session
leader.
Handling disconnections:
Divides into two parts:
– Intentional disconnection:
• Program sends message to all about disconnection and waits for
everyone to disconnect from him, and closes client and host
threads.
– Accidental disconnection:
• Usually occurs when program abnormally exits, or computer locks
up.
• The clients and hosts that detect disconnection send message to
all and close threads to disconnected member.
After a session member is disconnected, it is remarked in all
other members’ global lists.
Overview Of The Game
“Capture the flag” kind of game
– The goal of each group is to get the flag of the other
teams and get back to the base.
– The winning group is the one whose flag wasn’t taken.
– Capabilities of the tanks:
• Moving around
– Tanks can be moved in 4 directions (up,down,left,right)
• Shooting
– Every player can shoot all the other players.
– After being shot 10 times a player will be disabled (killed).
– The base (which contains flags) of each team can be
destroyed after 20 shots.
• Hiding
– Every player can cloak so only his team members can see
him.
– When being in cloaked state, the player can’t make any
moves. This is a good way to make ambushes.
User Interface
Input methods:
– Tanks may be moved and operated by clicking around the tank
to make it move, or double clicking to make the tank shoot.
– Another way to control the tanks is pressing on the buttons on
the right side of the screen or just using the keyboard.
Menus
– Connect
• Connect
• Disconnect
• Exit
– Options
– Help
• Instructions
• about
User Interface
Connect menu
– Connect:
• This will trigger the “connection builder” and ask the
user which group he wants to join
• In case the user is the first user to join the game, he
will be asked for the number of groups and the
number of members in each group.
– Disconnect:
• Choosing this option will disconnect the user from
the other users (he will be treated as if he died)
– Exit:
• This will exit the program after disconnecting.
User Interface
Option menu
– Choosing the “options” option will bring up
the pop-up menu shown below which contains
the following:
• Host IP and host port number of the constant server
which helps creating the game
• Resolution choosing box
• Performance scroll bar
• Music on/off check box
• Manual scrolling on/off check box
User Interface
Help menu
– Choosing the “instructions” in the help menu
will bring up a pop-up window with internet
explorer that shows the help files in HTML
format
The Way It Works
Game_form
Game_manager
Net_manager
(initalizes the
connections and
maintain them)
Game_algo
Game_object
The Way It Works
Player(1,2) object
Player(2,1) object
Player(2,2) object
Player(3,1) object
Player(3,2) object
Player(n,1) object
Player(n,2) object
Update screen
Player(1,1) object
process
command
External interactor
game_manager
game_algo
User input
Send
The Way It Works
net_manager
Clock (timer)
1 sec. intervals
command variables
input
send
previous command
Challenges And Their Solutions
Flickering effect
– When scrolling the map there is an effect of
disappearing items.
– This effect arises from the fact that the
background map takes a lot longer to draw on
the screen than the objects on the map (like
the tanks or flags).
– Solution: draw all the object that should
appear on the screen into a buffer first.
draw
background to
screen
game_form
draw to
screen
game_form
w rite to buffer
Challenges And Their Solutions
Creating and managing the background map
– We thought of 2 ways for implementing the map
• 1) Sprite mapping
– The map is actually a matrix of numbers where each number
is actually an index to a bitmap.
– Advantages:
– This method is very effective when trying to cut back on
memory usage (it is used in many commercial games)
– Scrolling is very fast
– Disadvantages:
– There is a need to create many small bitmaps to create the
full map and make sure that the bitmaps match.
– Need to create the matrix and assign numbers for the
bitmaps
Challenges And Their Solutions
Creating the background map
• 2) Treating the map as an object
– This way we just load the map and use offsets from the origin
to specify a position (for scrolling and object placement)
– Advantages:
– Easier to program (no need for any matrix building)
– Easy to load and maintain the map
– Disadvantages:
– Consumes a lot of memory
– There is a need to analyze the map (water detection)
Challenges And Their Solutions
Problem of water detection:
– We thought of 2 solutions:
• 1) Deciding between land and water by the color
–
–
–
–
Disadvantages:
Very hard to decide only by color
Limits the colors of the objects
Very hard to implement (many cases to be checked)
• 2) Creating a matrix that contains different values for land
and water
–
–
–
–
–
A matrix could be created by using applying threshold effect
Advantages:
Easy to create the matrix (load the B/W bitmap)
Pretty accurate
Very easy to program
Challenges And Their Solutions
Challenges And Their Solutions
Moving objects simultaneously on the screen
– There is a difficulty in moving several objects on the screen
simultaneously
– We didn’t want to create a thread for each moving tank (too
much overhead)
– Our solution was to get and process all of the commands from
the network and wait for a “special” command that indicates
an “end of a round”.
– Only after getting the special command do we act according to
the commands that we got earlier. This way we have all the
information to move all the objects together.
– The simultaneous moving of the objects is done by going over
all the objects n times while moving each one of them 1/n of
the way.