Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
pelita [2018/09/07 14:43] – [Network games] Rike-Benjamin Schuppnerpelita [2019/08/28 15:08] – external edit 127.0.0.1
Line 1: Line 1:
 ====== Programming Project ====== ====== Programming Project ======
  
-[[https://github.com/ASPP/pelita_template|{{ :pelita_gui.png?nolink&600 }}]] +[[https://github.com/ASPP/pelita_template|{{ https://github.com/ASPP/pelita_template/raw/master/pelita_GUI.png?nolink&600 }}]] 
-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.+Pelita is a Pac-Man 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 pac-man 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.+Your task as a group 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, <color #949494>[insert your buzzword here]</color>, is required! All you need is a bit of Python knowledge and having attended the first three days of ASPP ;) No special previous knowledge about machine learning, artificial intelligence, deep neural networks, <color #949494>[insert your buzzword here]</color>, is required! All you need is a bit of Python knowledge and having attended the first three days of ASPP ;)
Line 11: Line 11:
 Install pelita: Install pelita:
  
-    pip3 install git+https://github.com/ASPP/pelita.git+    pip install git+https://github.com/ASPP/pelita.git
  
 Clone the group repo (where ''N'' is your group number): Clone the group repo (where ''N'' is your group number):
Line 27: Line 27:
 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! 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 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. More about this in the next paragraph.
  
-==== Working in a team ====+==== The Competition Factor==== 
 +Some of you will feel the rush of competition, and when working under time pressure may start skipping good coding practices to get “something that works” or “to win”. 
 +Others may be annoyed by it, and may feel it is important to stay focused on good practices and don't care much about the result of the competition. 
 + 
 +In part, this is the way humans work, so there is not much you can do about it. 
 +But it may help to frame the experience in a different way.  
 + 
 +Back in the lab you will be also subject to all kinds of pressure. A typical situation is your boss asking for results and not caring about you writing nice, tested and reusable code. You will be often asked to just “deliver”, independent of the standards you set for yourself. 
 + 
 +Look at the programming project as a paradigmatic example of a real life situation. How do //you// work under pressure? How do //you// handle the trade-off between “just deliver” and “live up to your own standards”? How do //you// deal with the fact the other people, be it your boss or your team mates, put pressure on you?  
 +There is a lot to learn in such a context! 
 + 
 +==== Working in a Team ====
 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. 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!+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! You will be amazed at discovering how many of the things you take for granted are not granted at all for other people. Be open in the group about problems, even and especially about 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 ;) 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 ;)
Line 66: Line 78:
  
 <alert type="warning" icon="fa fa-warning"> **WARNING** <alert type="warning" icon="fa fa-warning"> **WARNING**
-  * The repos are going to be **frozen** on Saturday September at exactly **17:00**!+  * The repos are going to be **frozen** on Saturday September at exactly **17:00**!
   * Be sure there is a file in your repo named ''groupN.py'', where ''N'' is your group number   * Be sure there is a file in your repo named ''groupN.py'', where ''N'' is your group number
-  * The file should define the string ''TEAM_NAME'' and the function ''move(turngame) ⟶ (dxdy)''+  * The file should define the string ''TEAM_NAME'' and the function ''move(botstate) ⟶ (x,y), state''
 </alert> </alert>
  
Line 76: Line 88:
     * ''1'' point for a draw     * ''1'' point for a draw
     * ''2'' points for winning a game     * ''2'' points for winning a game
-    * the maze is a random ''32×16'' maze without dead-ends +    * the maze is randomly chosen for each game among the built-in mazes of normal size (32x16) 
-    * the side (blue/red) is randomly assigned+    * your team'side (blue/red) is randomly assigned
   - a knockout round (based on the rank from the round-robin):   - a knockout round (based on the rank from the round-robin):
     * semifinal 1: the 1st team against the 4th     * semifinal 1: the 1st team against the 4th
Line 87: Line 99:
  
 ==== Network games ==== ==== Network games ====
 +… more info soon … 
 +/*
 To play against the more advanced bots in the network, start a network game: To play against the more advanced bots in the network, start a network game:
  
Line 98: Line 111:
     pelita groupN.py remote:tcp://10.0.2.144:30007     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.)+(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.) 
 +*/