Deliberately Planning and Acting for Angry Birds with Refinement Methods
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Deliberately Planning and Acting for Angry Birds with Refinement Methods

Angry Birds has been a popular game throughout the world since 2009. The goal of the game is to destroy all the pigs and as many obstacles as possible using a limited number of birds. Since the game environment is subject to change tremendously after each shot, a deterministic planning model is very likely to fail. In this paper, we integrate deliberately planning and acting for Angry Birds with refinement methods. Specifically, we design a refinement acting engine (RAE) based on ARP-interleave with Sequential Refinement Planning Engine (SeRPE). In addition, we implement greedy algorithm, Depth First Forward Search (DFFS) and A* algorithm to perform the actor's deliberation functions. Eventually, we evaluate our agent to solve the web version of Angry Birds in Chrome using the client-server platform provided by the IJCAI 2015 AI Birds Competition. In our experiments, we find out that our agent using SeRPE with A* algorithm greatly outperforms the agent using greedy algorithm or forward search without SeRPE. In this way, we prove the significance of refinement methods for planning in practice. Please see the supplementary video [here] [0] for more results.


[Ruofei Du], [Zebao Gao], [Zheng Xu]




Our project uses a number of softwares to work properly:

  • [Google Chrome] - To web the web version of Angry Birds
  • [Angry Birds Plugins] - Chrome extension to communicate between server and client. Under /plugins/
  • [Marked] - a super fast port of Markdown to JavaScript
  • [JRE] - Java SE Runtime Environment 8
  • [JSON Simple] - under /external/json-simple-1.1.1.jar/
  • [Jama] - under /external/Jama-1.0.2/
  • [Jar in Jar Loader] - under /external/
  • [Common Codec] - under /external/ commons-codec-1.7.jar
  • [WebSocket] - under /external/ WebSocket.jar


The main class is under the package of ab.demo.MainEntry; a simple run can be:

java -jar project.jar -ai

All possible command

-g [level] // greedy algorithm
-d [level] // DFFS
-a [levle] // A*
-gi [level] // SeRPE with greedy algorithm
-di [level] // SeRPE with DFFS
-dir [level] // SeRPE with DFFS repeating one level
-air [level] // SeRPE with A*



Free Software, Hell Yeah! [0]: [Google Chrome]: [Angry Birds Plugins]: [JRE]: [JSON Simple]: [Jama]: [Jar in Jar Loader]: [Common Codec]: [WebSocket]: [Ruofei Du]: [Zebao Gao]: [Zheng Xu]: