the cse 331 version by jeff golden and paul madrid
Post on 21-Dec-2015
216 Views
Preview:
TRANSCRIPT
The CSE 331 Version
By
Jeff Golden and Paul Madrid
The Project
• Implement Risk for the computer.
• Requires:– Graphics plus user interface– Multiplayer capabilities– Network support
• Can support:– AI modules– Other user interfaces
Language
• Risk is written in C++ using OpenGL as the graphics library.
• Why C++?– Could not find sockets library– ISE graphics library not suitable for games
Client/Server Model
• Server– The game is stored on the server.– The server performs all move validations.– Server sends messages and results to client.– Server can be on the client machine or remote.
• Client– Client receives messages from server.– Client displays the game map and other game data– Client receives user input, translates it, and sends it to
server.
Server Issues
• Move validation:– How can we detect
adjacent countries?– How can we tell when
certain moves are valid?
• Process communication:– Stream communication in
sockets?– What language do
processes speak?
Move Validation
• Use a graph for adjacencies.– We implemented a Graph ADT for this
purpose, inheriting from the STL map container.
• Keep track of game states for proper move validation.– Also helps eliminate need for multithreading.
Process Communication
• Create abstract Socket class– Allows cross-platform socket communication.– Allows C++-stream-style I/O.
• Define a communication protocol– FTP-like syntax– Covers all information a viewer would need– Plain text
Client Issues
• Graphical– How does the viewer display the stored data?– Receiving/sending messages?
• Interface– Easy way for user to communicate?
Graphical
• Data– Number of armies at center of country.– Countries colored according to owning player.– Status through a pop-up box.
• Messages– When received from the server, will be
displayed in the lower part of screen.– When sent by user, will also be displayed in
lower part of screen.
Interface
• Main Window– Divided in three: the map component,
message component, and a dice box.– Mainly for display of data.
• Menu-system– Context-menu-style system– All commands necessary at disposal of player
through context-menu.
Division of Labor
• Jeff worked from the client end of the project.– Learned OpenGL GLUT and developed the client
through it.– Developed user interface– Developed bitmaps and other graphics
• Paul worked from the server end of the project.– Implemented Graph and Socket classes, and all
game data classes– Wrote game logic– Determined command syntax
Expansion
• AI Modules– If they can follow
command syntax, they should be able to work.
• Other user interfaces– Text based– Variants of graphics
based– Three-dimensional
References
• Josuttis, Nicolai M. The C++ Standard Library: A Tutorial and Reference. Addison-Wesley Publication Co. 1999.
• Neon Helium Productions. NeHe Productions (OpenGL). Url: <Http://nehe.gamedev.net>
• Risk Home Page! Url: <http://www.ascu.unian.it/~bepi/risiko/index_e.html>
• Risk: The World Conquest Game. Parker Brothers, Ltd. 1994.
• Rosen, Kenneth H. Discrete Mathematics and its Applications. McGraw Hill, 1998.
top related