Upload
belinda-tucker
View
214
Download
0
Embed Size (px)
Citation preview
EGGG: Automated programmingfor game generation
J. ORWANT
PRESENTED BY HANFENG CHEN
MARCH 25, 2015
Introduction EGGG: the Extensible Graphical Game Generator
EGGG is a program that generates programs◦ Define the rules of games◦ Rules are rendered into real computer games
The games generated by EGGG should satisfy◦ Simple game description◦ Efficiently create games with relatively large size◦ Easily generate variations◦ Be portable◦ Easy to modify
Game Categories and Descriptions
Classify games according to the following attributes:
1. Frenetics (timed)
2. History (record)
3. Synchrony (order)
4. Movement
5. Topology (shape)
6. Board (surface)
7. Pieces (items on board)
8. Compartment (barriers)
9. Genre (theme)
10. Information (communication)
11. Referees
12. Endings (goal)
An Example - Poker game is poker
turns alternative clockwise
Discard means player removes 0..3 cards or 4 cards
if Ace
Fold means player loses
2..6 players
….
game is <rules>
…. Game Description
How does EGGG know that poker is a game of rounds?
Decide that poker is a game of rounds by heuristics.
1. The game has levels.
2. The game has a particular solution.
3. The game has no hands.
4. The game has hands, but the hands contain more than 13 pieces per side.
5. The game is played on a grid with more than 25 squares.
Heuristics
A New Game - Deducto A logical game
Played on a 5 x 5 square
Each of the 25 squares is either black or white
It has levels
Each level has a secret rule
The goal is to determine the rule
Rule level 1: at least half squares are white
The game is described in 42 lines of EGGG
VoteYes, if you think you understand the rule in levels
VoteNo, otherwise.
Easy to Create Variations
Tetris
SideTetris
TwoPlayerSideTetris
Bouncetris
BounceFast
SquareBounce
Pong(A classic video game)
Implementation Inspired by the Programmer’s Apprentice and METAGAME
EGGG is written in Perl and the generated games are Perl programs
Data structures to store properties of games
Documentation is generated for both developers and players
Game Components A generic minimax procedure
subroutine: enumerate_moves()
A generic static evaluator subroutine: score_board()
A generic library of opening movesThe steps of playing games are save on EGGG global repositories
Strategies Predict human players’ actions Analyzing strategies with hidden Markov models A dozen of simple strategies are included in EGGG Generating hypotheses, making interesting moves and probabilistic bluffing
Rock-Paper-Scissors
EGGG can predict
your next choice by
the move histories.
Other Functionalities Multiplayer games
No spatial meaning Each player has his or her own side of a grid or canvas The orientation is fixed
Generating TCP/IP networking code port 10900
Conclusion Given brief description of a game, the EGGG creates a graphical game written in Perl
However, rules should be specified
It is not a generic solution for creating games, but the reusable components enable that the EGGG is a productive tool
The EGGG provides a quick and easy way for the game design