EGGG: Automated programming for game generation J. ORWANT PRESENTED BY HANFENG CHEN MARCH 25, 2015.

Post on 29-Dec-2015

214 views 0 download

Transcript of EGGG: Automated programming for game generation J. ORWANT PRESENTED BY HANFENG CHEN MARCH 25, 2015.

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