Download presentation
Presentation is loading. Please wait.
Published byPablo Quintero Flores Modified over 6 years ago
1
A Penguin Attack AI Jason Buck CS 470 1
2
Project Overview Goal Why
Develop an AI that can play a competent game of Penguin Attack Why Ensures an opponent is always available
3
What is Penguin Attack? Created by myself and Tom Kircher
Open source implementation of a Nintendo puzzle game Designed for network play
4
How is Penguin Attack Played?
4
5
How is Penguin Attack Played? (continued)
6
Project Requirements Network AI is a network client
Sends moves Game server sends game state information Sends game state information Sends control signals
7
Project Requirements (continued)
AI Search game state for potential combos Generate move sequence to achieve combos Can send a string of sequential characters Often sends one-character strings Must be competent Typically able to last 3 min against me
8
System Design Written in Java Network component
Not ideal, but “good enough” Network component Largely isolated from AI Connects to the server Receive and store messages from the server Send moves/commands from the AI to the server
9
System Design (Continued)
AI Parse game state data Update internal representation 2D-array of ADT “PenguinAttackBlock” Generate move sequence
10
Protocol Redesigned since proposal
Client requests state information as needed Commands are b, c, and t Client sends move sequences Commands are u, d, l, r, s, m Client can notify server with quit All other notifications are server to client
11
Protocol (Continued) Server notifications: start pause ... start win
lose closing connection
12
Protocol (Continued) Board State: Mouse position: Timing: [1000 2000]
_ _ _ _ _ _ _ _ _ _ _ 0n1. 1n1h _ _ _ _ 0n5. 1n3h1n4h _ _ 0n1.0n4. 2n5h1n2h1n5h0n3.0n4.0n1. _ _ _ 0n2.0n2.0n5. _ _ 0n1.0n3.0n3.0n4. 0n5.0n1.0n2.0n4.0n4.0n5. 0n4.0n3.0n5.0n1.0n2.0n1. 0n1.0n3.0n1.0n4.0n4.0n2. 0n1.0n2.0n3.0n3.0n2.0n2. 0n5.0n5.0n4.0n4.0n1.0n1. 0n3q0n3q0n4q0n4q0n1q0n4q } Mouse position: <2 1> Timing: [ ]
14
Algorithms playPenguinAttack() loops through: breakGarbage();
raiseStackToSafeHeight(); breakGarbage(); levelOffStack(); makeCombosAndChains();
15
Evolutionary Prototyping
Strategy needed to be refined Different leveling algorithms Keep improving the strategy Much time spent testing Prototype was never ‘complete’ to my satisfaction Never figured out how to make intentional chains Didn’t find a way to deal with ‘accidentals’
16
Schedule Didn’t keep detailed records of what happened when
Worked on it whenever course load allowed Made majority of progress during spring break Spent way more time than budgeted
17
What’s next? Will continue beyond the semester
Preventing accidentals and intentionally making chains; AI will be brutal Analyze the board in different ways while waiting (Threads) Improve efficiency (Synchronized clock? Maintain own board state?) 17
18
Conclusion
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.