Pelita is a PacMan™ like game. Two teams each of two bots are placed in a maze with food pellets. The maze is split into two parts, the left one belongs to the team on the left (the blue team), the right one belongs to the team on the right (the red team). When a bot is in its own homezone it is a ghost. A ghost can defend its own food pellets by killing the enemies. When a bot is in its enemy's homezone it is a pacman and can eat the enemy's food.
Your task is to write a bot implementation. You have to implement the intelligence to navigate your bots successfully through the maze, kill the enemy's pacmen, and eat the enemy's food.
No special previous knowledge about machine learning, artificial intelligence, deep neural networks, [insert your buzzword here], is required! All you need is a bit of Python knowledge and having attended the first three days of ASPP ;)
Install pelita:
pip3 install git+https://github.com/ASPP/pelita.git
Clone the group repo (where N
is your group number):
git clone https://github.com/ASPP/groupN.git
See the documentation directly on https://github.com/ASPP/groupN
We want to give you a chance of putting into practice the software development techniques and tools we have been talking about during the school.
We expect you to try out the techniques, and evaluate what is feasible and what not, what helps you being more efficient at writing reliable code, and what feels like a hindrance instead. By doing this in the group we expect you to profit from the experience of other students, and, by explaining to other students your own experiences, to become more aware of what is it that you already master and what is it that you still have to learn.
Write tests for the part of your code which are testable, decide what parts you can test, what parts you should test, what parts you must test, and also what parts can not be tested. Use git and GitHub, use branches or pull-requests: is this going to facilitate your work or is this adding a useless overhead? Feel invited to explore the trade-offs involved!
The idea of the group project is not to write the coolest AI-powered bots! Remember that and don't get carried away by the competition :)
The group setting adds some additional hurdles to the challenge: you will be confronted with group dynamics which go beyond each member's technical skills. Try and have a curious and open attitude towards this experience, even when it becomes frustrating, annoying or even irritating. Everyone makes mistakes: enjoy making your own and helping other discover theirs.
Remember that as a group you can define your own rules. You are responsible as a group for keeping a nice and stimulating atmosphere during your long programming sessions. Talk about how to distribute the work and how to distribute responsibility: these things don't happen on their own by magic! Be open in the group about problems, even inter-personal problems ;) And, if nothing else helps, come to us and we will help you!
The final tournament is intended as a final party, where you can have fun watching your “product” running around in a maze. It doesn't really matter which group is going to win. Remember: no bot will be harmed in the making of this film ;)
Organizational:
master
without having a review by another member of the team?No
to all questions :)]Technical:
TEAM_NAME
, but choose one before the tournamentgroupN.py
, where N
is your group numberTEAM_NAME
and the function move(turn, game) ⟶ (dx, dy)
The tournament is organized in two phases:
0
points for losing a game1
point for a draw2
points for winning a game32×16
maze without dead-endsTo play against the more advanced bots in the network, start a network game:
pelita groupN.py remote:tcp://10.0.2.144:30001 pelita groupN.py remote:tcp://10.0.2.144:30002 pelita groupN.py remote:tcp://10.0.2.144:30003 pelita groupN.py remote:tcp://10.0.2.144:30004 pelita groupN.py remote:tcp://10.0.2.144:30005 pelita groupN.py remote:tcp://10.0.2.144:30006 pelita groupN.py remote:tcp://10.0.2.144:30007
(Of course, remember that your bot can also play on the right side, so make sure to test eg. pelita remote:tcp://10.0.2.144:30001 groupN.py
as well.)