jokerstars: online poker william sanville cse 4904 milestone ii
TRANSCRIPT
JokerStars: Online Poker
William SanvilleCSE 4904
Milestone II
Background
Popular Systems PokerStars, Full Tilt Poker “Virtual Casino” Players connect from all over the world Support multiple games concurrently
Variety of card games at different stakes Tournaments, cash games
Popular Card Games Hold 'em, Omaha
Motivation
Not only an interest in playing cards
Online Poker System Requires: Desktop Development Network Programming Multi Threading Security
Project Description
Simulate a card game over the Internet Allow players to communicate View and handle the cards Make decisions
Place bets, fold, etc.
Support for multiple games Project should be flexible to support any card game
Game should run by a modular, interchangeable rule engine
User Requirements
Internet Connection Preferably high speed
.NET Framework Supported Operating Systems:
Windows 98 or higher Linux, Solaris, Mac OS X
www.mono-project.com
Development Environment
Application will be written in C# Visual Studio 2008 Code will be documented using XML Comments Code should pass FxCop code analysis
Static code analysis to ensure proper practices, naming conventions
Server module will be deployed on a Windows Server 2008 machine
High Level Modules
Server Module Client Module Networking User Interface Game Engine Game Entities
High Level Modules Cont.
Server Module Deployed on a dedicated machine Continuously listen for connections
TCP/IP Send and receive data to and from clients Solicit actions from players Broadcast player actions to other players
High Level Modules Cont.
Client Module Deployed on the end user's machine Connect to game server Pass and receive messages to and from game
server
High Level Modules Cont.
Networking Module Basic functionality and classes used by both Client
and Server modules Packets, Serialization
High Level Modules Cont.
User Interface Bridge between the end user and Client module Receive input from user Display the users currently playing the game Display cards, chips, and other game elements
High Level Modules Cont.
Game Engine Defines the rules of the game Handle the flow and runtime of the game
Determine which player needs to act Determine what actions are valid for each player Evaluate winning hands
High Level Modules Cont.
Game Entities Class definitions for various elements of the game
Cards Chips Deck Player Dealer
Priority
Problem: One team member One semester Unrealistic to deliver a fully featured online card
system
Solution: Cut scope Prioritize
Ensure that the project is a success
Priority Continued
Main Focus: Networking Client and Server modules will be the highest
priority Manage multiple connections Develop a working message passing system
Second Focus: Game Entities & Engine Automate the runtime of the game
Third Focus: User Interface A basic interface will need to be developed in order
to test the game engine and entities
Concepts
User Interface Concept Nothing fancy, just buttons and pictures
End Result
Single table of No Limit Texas Hold 'em 1 to 9 players
Automated game flow Game Engine determines whose turn it is and asks
them for their action If time is running short, this will be substituted with
a “human dealer” to perform the duties of the game engine
Server Module will have a debugging control panel
Support for future enhancements Keep it clean, modular, easy to upgrade
Future Enhancements
Security Data will need to be encrypted
Out of scope for this semester Integrity of messages must be preserved
Man in the middle attacks Identity spoofing
Scalability Support for multiple, concurrent tables Greater number of users
Other Enhancements
Randomness “Anyone who considers arithmetical methods of
producing random digits is, of course, in a state of sin.” - John von Neumann
Project will be using standard math libraries, pseudo random numbers
Commercial systems use more sophisticated methods
Mouse movement of users Temperature readings
Questions?