======Pogamut 3 Labs 2017======
We welcome you our student/s :-) or anybody who has ventured up to this point while gathering info about the Pogamut 3 platform, welcome!
This page contains materials from labs for the [[https://is.cuni.cz/studium/predmety/index.php?do=predmet&kod=NAIL068|Human-like Artificial Agents (NAIL068)]] course that is/has been taught during summer semester of 2016/2017 at [[http://www.mff.cuni.cz/|Charles University]] in [[http://www.praha.eu/jnp/cz/home/magistrat/index.html|Prague]], Czech Republic. The course is/was lead by [[http://ksvi.mff.cuni.cz/~brom/|Cyril Brom]] and [[http://gamedev.cuni.cz/contacts|Jakub Gemrot]]. Labs are/were (mainly) backed up by [[http://gamedev.cuni.cz/contacts|Jakub Gemrot]].
Lecture slides can be found at [[http://gamedev.cuni.cz/study/courses-2016-2017/human-like-artificial-agents-st-20162017/|Lecture webpage]].
======Dates======
Tuesday's labs, 15:40, SW2, Jakub Gemrot: [[mailto:jakub.gemrot@gmail.com|jakub.gemrot@gmail.com]]
======How to pass the practice======
First, you should see [[https://drive.google.com/open?id=1Z5QE8AAVKOBcdnNQ815158b266QdBeK1_gv89eB-FTg|hours-dotation (GDrive)]] for the whole course.
Then you should study [[https://docs.google.com/spreadsheets/d/1A7jhg3YBjiYOirckLcJD7hVjrZ2FiXWyRoTDhL82KUo/edit?usp=drivesdk|the schedule + scoring-system (GDrive)]] for the labs that gives you hints how you can obtain points and how many you need them to pass the labs (+strategy guidelines). You know, life is a game :-)
Long story short, you have to get at least **140 points** to be admitted to Labs Test (or PreTest as I call it). If you obtain **160 points or more** you automatically pass the practice (you don't have to go to Labs Test). You can get points for the attendance (2 for class), short tests (done during the lesson, 6 max, if you fill them later, you will get -2 points penalization), doing your homework assignments (typically 10 points on average) or by having high-quality tournament bots (up to 32 points per tournament). Beware of the last assignment is worth 60 points! \\
If you obtain at least **125 points** and want to pass, we will give you an extra assignment and based on your performance we will then admit you to Lab Test.
In order to get to the Final Exam of the Course you have to:
* pass the labs (by getting enough points and/or passing Labs Test)
* do whatever Cyril says you have to do (participating in experiments, etc.)
Always send your finished assignments / bots for tournaments to [[mailto:jakub.gemrot@gmail.com|jakub.gemrot@gmail.com]] !
======Exam======
* **Final exam** will be on **2.6.2017** from **9:00** up to **17:20** (worst case, but we finish around 15:00 typically)
* Let us know if the time/date does not suit you
* To get a final grade you need to have more than 139 points from workshops!
======Tournaments======
=====Capture the Flag=====
Start: 28.5.2017 8:00
State: To be announced...
=====Deathmatch=====
Start: 7.5.2017 8:00
State: To be announced...
=====Hide & Seek=====
Start: 16.4.2017 8:00
State: To be announced...
=====Tag!=====
Start: 26.3.2017 8:00
State: To be announced...
======Labs======
**Lab 11** - [[https://drive.google.com/open?id=0B49ID9s3-zhTVFY3cExuSHFSc1k|(PDF)]] **16.5.2017**
* NOTA + BeTS
* Pretest / Examchecklist: [[https://drive.google.com/open?id=0B49ID9s3-zhTMWc4YmFoUGN3SGc|PDF]]
* Be sure to go through this and review anything that will not instantly pop into your head ;)
**No Lab** - **9.5.2017**
* Finish CTF Team of bots
* Scoring:
* CTF team of single bots (no team communication) - 20 points
* Team Communication
* Synchronizing item picking - 20 points
* Environment aweraness
* Thinking about different paths in the map - 20 points
* Any extra behavior you come up with
* Describe in email - up-to 20 points
**Lab 10** - [[https://drive.google.com/open?id=0B49ID9s3-zhTN0dpMWtJOUpUNlU|(PDF)]] **(2.5.2017)** //Test links included//
* Today's topic is Team Communication
* Learn how to use UT2004TeamComm project to send messages between bots
* **Assigment 10**
* Introducting TeamComm into CTF!
* CTF bot from previous lab
* Plus "team item picking"
* Template [[https://drive.google.com/open?id=0B49ID9s3-zhTQnVRU0czS25ObEU|CTFBot Stub + TeamComm]]
**Lab 09** - [[https://drive.google.com/open?id=0B49ID9s3-zhTQXBRakdhYl95QUE|(PDF)]] **(25.4.2017)** //Test links included//
* Today's topic is Capture-the-Flag
* Learn CTF Rules
* Create team w/o coordinations
* **Assigment 09**
* Create CTF bot
* Collects weapons, ammo and armor on the map
* Fight other players
* Steal enemy flags, Defend own flag
* Implement three roles: attacker, roamer, defender
* Use CTF-1on1-Joust, CTF-Lostfaith, CTF-January, CTF-DoubleDammage maps
* [[https://drive.google.com/open?id=0B49ID9s3-zhTVUI5M2NOTlJYWVE|CTF Bot Stub]]
* No deadline / No points ... but submit the bot if you have it so I can give you feedback
* You will receive points for the "CTF Team" eventually, but it is a big task to do, so better start coding today
**Lab 08** - [[https://drive.google.com/open?id=0B49ID9s3-zhTQlVDa2FiR3hhY2s|(PDF)]] **(18.4.2017)** //Test links included//
* Today's topic is DeathMatch Bot
* We will start from: [[https://drive.google.com/open?id=0B49ID9s3-zhTaXhkYXlHNmptWVE|DM bot stub 3.7.1-SNAPSHOT]]
* **Assigment 8**
* Create DeathMatchBot!
* Must have following behaviors: Combat, Intercept, Cover, Focus, Item Collecting behaviors (collects weapons and armor on the map)
* Does not stuck (its ok, if he occasionally freezes somewhere for a few seconds, but not forever!)
* Use DM-1on1-Roughinery-FPS map
* **All your DM bots will automatically take part in DM bot tournament**
* Bots submit till 7.5.2017 8:00 will participate!
**Lab 07** - [[https://drive.google.com/open?id=0B49ID9s3-zhTUXdLRkxrQWZRbDg|(PDF)]] **(11.4.2017)** //Test links included//
* Steerings and Steering Game, get Steering Game 2.0 [[http://pogamut.cuni.cz/pogamut_files/misc/SteeringGame/SteeringGame2.0-install.exe|(installer EXE)]], [[http://pogamut.cuni.cz/pogamut_files/lectures/misc/SteeringGame2.0.zip|(ZIP file)]]
* Download [[http://pogamut.cuni.cz/pogamut_files/misc/SteeringGame/PracticalsScenes.zip|practical steering examples]] for the steering game
* **Assigment 7**
* Install Steering Game 2.0 [[http://pogamut.cuni.cz/pogamut_files/misc/SteeringGame/SteeringGame2.0-install.exe|(installer EXE)]], [[http://pogamut.cuni.cz/pogamut_files/lectures/misc/SteeringGame2.0.zip|(ZIP file)]], do at least 4 easy missions and 2 intermediate missions and send us proof you did them
* How to send proof - Save Scene after completing each mission, send us the resulting xml files
* Easy mission ~ 1 point (up-to 4 points)
* Intermediate mission ~ 2 points (up-to 4 points)
* (Optional) Hard mission ~ 2 points (up-to 6 points)
* // 8 points + up to 6 bonus points//
**Lab 06** - [[https://drive.google.com/open?id=0B49ID9s3-zhTSW5pUlY2MmFQbTA|(PDF)]] **(4.4.2017)** //Test links included//
* Today's topic is Weapons and Items!
* Learn about UT2004ItemType, ItemType.Category, Items and Weapons descriptors
* Learn to prioritize pickups
* Modules: items
* We will start from: [[https://drive.google.com/open?id=0B49ID9s3-zhTQWgtM2Zva1dPY1k|ItemPicker Template]]
* **Assignment 6**
* Create CollectorBot
* Collects weapons, ammo and armor on the map
* Try to be really clever about this, prioritize items in best-you-can do order
* I.e., don't make obvious mistakes like "rocket ammo better than 50 armor"
* Does not stuck (its ok, if he occasionally freezes somewhere for a few seconds, but not forever!)
* If he sees the item he wants is not there (e.g. you run three collector bots and the other one got it first), he re-plans and goes for a different item
* Use DM-1on1-Albatross or DM-1on1-Roughinery or DM-1on1-Solitude map
* BONUS: try to "time" your picking, e.g., include "time required to travel to item respawn location" in your "decision", what item are you going to run for
* //5 points + 5 bonus points//
**Lab 05** - [[https://drive.google.com/open?id=0B49ID9s3-zhTUEVVODdaUExrOHM|(PDF)]] **(28.3.2016)** //Test links included//
* Static visibility information
* Visibility Matrix
* A-Star implementation within Pogamut 3
* UT2004AStar
* IPFMapView
* Hide&Seek Game
* Hide&Seek Tournament announcement
* We will start from: [[https://drive.google.com/open?id=0B49ID9s3-zhTc2F1RlBkZi1KZHM|HideAndSeekBot Template 3.7.1-SNAPSHOT]]
* It contains update to your UT2004/ installation, specifically DM-HideAndSeekMap.ut2 file, put that into UT2004/Maps directory in order to be able to run it
* Use UT2004/System/startGamebotsDMServer-DM-HideAndSeek.bat to start DM-HideAndSeek map instead of DM-TrainingDay
* **Assignment 4**
* Implement HideAndSeek Bot, both roles
* Tournament will be held on a different map, so we do not recommend using static information, e.g. run to [1000,500,0] ... :-)
* Submit your bots before **9.4.2016 8:00** (and always send a copy to jakub.gemrot@gmail.com)
* //10 points + up to 16 from tournament ! //
**Lab 04** [[https://drive.google.com/open?id=0B49ID9s3-zhTUXFVNDhZWXgtdVE|(PDF)]] **(28.3.2017)** //Test links included//
* Navigation, Navigation Graph, Navigation Mesh
**Lab 03** [[https://drive.google.com/open?id=0B49ID9s3-zhTRkZvSGo0SnIwYkE|(PDF)]] **(14.3.2017)** //Test links included//
* Running around UT2004 environment
* Sensors - self, players
* Effectors - move, jump, dodge
* Tag! Game
* Tag! Tournament announcement
* Download [[https://drive.google.com/open?id=0B49ID9s3-zhTV3NCZFZISGxrdDA|TagBot project template]] (50 MB!).
* It contains updates to your UT2004/ installation, namely DM-TagMap.ut2 file
* Use UT2004/System/startGamebotsDMServer-DM-TagMap.bat to start DM-TagMap instead of DM-TrainingDay
* Note that the file also contains:
* Movies with bots from Tag! 2013&14, chance to learn a few tricks!
* Files to execute match with best bots from Tag! 2014+2015 to check how good your bot is!
* **Assigment 3**
* TagBot! First real scenario that requires smart AI!
* Create the best TagBot, win the tournament and score extra points!
* Don't forget that the TagBot should implement both roles 1) seeker as well as 2) runner
* GOOD LUCK!
* //10 points//
**Lab 02** [[https://drive.google.com/open?id=0B49ID9s3-zhTQTlrZmhZSU84WnM|(PDF)]] **(7.3.2017)** //Test links included//
* Pogamut gentle introduction
* Virtual worlds, virtual agents
* Basics of Pogamut - interface, API
* How to run your first bot
* Download [[https://drive.google.com/open?id=0B49ID9s3-zhTRXpqellSelI0U3M|EmptyBot example]] and [[https://drive.google.com/open?id=0B49ID9s3-zhTMXhMQ2w2N29tSXc|ResponsiveBot example]].
* Want to know more? Or did you forget something from the lecture? Read [[http://pogamut.cuni.cz/pogamut_files/latest/doc/tutorials/00-EmptyBot.html|EmptyBot tutorial]] and [[http://pogamut.cuni.cz/pogamut_files/latest/doc/tutorials/01-ResponsiveBot.html|ResponsiveBot tutorial]]!
* **Assigment 2**
* Easy and fun! :-)
* Fool around with your first Pogamut bot
* Create a follow bot that will listen to your commands! :-)
* //5 points//
* And perhaps do a bonus stuff, return as many damage as received from others
* //2 bonus points//
**Lab 01** [[https://drive.google.com/open?id=0B49ID9s3-zhTblBHX1psUWFKX1U|(PDF)]] **(28.2.2017)** //Test links included//
* Labs scoring details - read them very carefully
* Java Revisited
* Which Java version is required (recommended for advanced users), what IDEs you can use
* How to install SVN and Maven + "how-to-use" links
* **Assignment 1**
* Install Subversion and Maven
* Finish implementation of Java classes inside the project [[svn://artemis.ms.mff.cuni.cz/pogamut/trunk/project/Incubator/Lectures/JavaRevisited]]
* Confirm that your implementation is correctly working by successfully passing all bundled JUnit tests
* Implementation of "Listeners class" is for extra points (challenging task) ~ you can let all "Flag" tests in "failing" state
* //10 points + 5 bonus//
**Promo** [[https://drive.google.com/open?id=0B49ID9s3-zhTamZQNDNhU2hfTzQ|(PDF)]] **23.2.2017**
* Slides that gives you an overview what ordeal (translate as 'fun') awaits you during labs :-)
* Ok, we do not want to scare you - honestly, we think that labs we have prepared for you are lots-of-fun and will inspire you to experiment with AI within the boundaries of UT2004 virtual environment
======Score tracking=====
* We will continually track your Attendance/Tests/Homeworks/Tournaments
* Provided as Google Doc, mail us to receive the link
======Pogamut 3 platform======
**Installers:**
* Pogamut UT2004 3.7.0 and Pogamut Emohawk Installer 3.7.0. Get them at [[http://pogamut.cuni.cz/main/tiki-index.php?page=Download|Pogamut download page]]
* Date: 23.2.2015
* For Pogamut UT2004 Installer you have to have UT2004 installed somewhere.
* Both installers will install: Maven 3.0.4+, NetBeans plugins, Pogamut Example archetypes. Note that you need [[http://netbeans.org/downloads/7.3.1/index.html|NetBeans 7.3.1+]], otherwise Pogamut archetypes won't be accessible from NetBeans context menu (New Project -> Maven -> Project From Archetype -> Local Archetypes Catalog).
* Before you launch the bot, you need to start Unreal server:
* For UT2004, go to directory Unreal Anthology/UT2004/System and there launch startGamebotsDMServer.bat. To observe the bot in the environment launch startUT2004low.bat from the same directory.
* For UnrealEngine2Runtime, go to directory UnrealEngine2RuntimeDemo/System/ and there launch startEmohawkServer.bat. To observe the bot in the environment launch startUE2Runtime.bat (after the server is launched).
**Alternatively**
* If you have UT2004 installed, you can follow guidelines of tutorial Pogamut 3 quickstart tutorial found at [[http://pogamut.cuni.cz/main/tiki-index.php?page=Documentation|Pogamut Documentation page]]. However, we recommend to use installers above.
======FAQ======
**Q:** **Which version of Pogamut are we using?**\\
**A:** 3.7.0, always check your pom.xml after you download bot templates or materialize Maven archetypes
to check whether you're using correct version.
----
**Q:** **I am missing help on all methods, attributes and classes (Javadoc is not working). :-/**\\
**A:** In NetBeans open your project and right click the **Dependencies** folder, click **Download Javadoc**, NetBeans should now download Javadoc and the help should be working. If it is not, click also **Download Sources** and after it is done (watch lower right progress bar) restart NetBeans. Sometimes NetBeans refuse to show help - it can be usually resolved by trying to **Download Javadoc** several times.
----
**Q:** **How to get account in our computer laboratory for non-MFF students?** \\
**A:** \\
* **a)** Print and fill up this form: http://www.ms.mff.cuni.cz/students/externisti.html.cs
* **b)** Get the network administrator of students school to sign the form above (if you are unable to get the signature, then ask Cyril Brom)
* **c)** Go to the SISAL, Mala Strana, fourth floor - in the corridor in the back and there they will create an account for you\\
----
**Q:** **How do I create PogamutUT2004 Bot project in NetNeans from archetype?** \\
**A:** Its easy. Simply click New Project, from categories choose Maven. From projects choose Maven project. Click on Next. Click on Add... button and the NetBeans will ask you about archetype details. That is :
* **Group Id:** cz.cuni.amis.pogamut.ut2004.examples
* **Artifact Id:** 00-empty-bot-archetype
* **Version:** 3.7.0
* **Repository:** http://diana.ms.mff.cuni.cz:8081/artifactory/repo
Full list of available archetypes can be found [[http://diana.ms.mff.cuni.cz:8081/artifactory/libs-snapshot-local/archetype-catalog.xml|here]]. (always use repository above)
Also be sure that NetBeans is using Maven v3.0.4+! You can always obtain Maven from here: [[http://maven.apache.org|Maven 3.0.4]]. After unpacking, go to NetBeans->Tools->Options->Miscellaneous->sheet Maven->set Maven home directory.
----
**Q:** **I have a problem with imports - the NetBeans help doesn't work. :-/**\\
**A:** Two solutions, either add PogamutUT2004.jar and PogamutCore.jar to libraries to
your project (the help should be working), or add imports to your class manually.
Some useful imports:
import cz.cuni.amis.pogamut.base3d.worldview.object.*; //for Location, Velocity..
import cz.cuni.amis.pogamut.ut2004.communication.messages.gbcommands.*; //GB commands
import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.*; //GB messages
----
**Q:** **I am a student and want to use Pogamut, but I don't have UT2004.** \\
**A:** Unfortunately school cannot provide you with UT2004 - however you are free to use Pogamut in SW1 laboratory (when it is free) and there is one Pogamut computer in MS lab (far end against the entrance) where we can create an account for you. Second solution is to use UnrealEngine2RuntimeDemo exclusively, which is free for educational purposes and which is installed with Pogamut Emohawk installer.
----
**Q:** **How to disable master server authentication in UT2004?**\\
**A:** In UT2004/System/UT2004.ini find **[IpDrv.MasterServerUplink]** and set the following:
[IpDrv.MasterServerUplink]
DoUplink=False
UplinkToGamespy=False
SendStats=False
----
**Q:** **I'm trying to setup @EventListener or @ObjectClassEventListener in POSH actions (or senses) and they are not working, why?** \\
**A:** These listeners works only in XxxContext classes. You have to declare them there and then access them from actions or senses.
----
**Q:** **How can I tell what version of Unreal Tournament 2004 I am running (v. 3369 required)?** \\
**A:** Just start Unreal Tournament 2004 GUI, open the Join Game tab and the news page will have the number in the upper right corner.
----
**Q:** **I'm having problems running UT2004 tournament matches ... UCC is not starting properly it seems.** \\
**A:** Try to move UT2004 into other folder that does not have whitespaces within the path, e.g.: C:\UT2004
----
**Q:** **Having problems with invalid jar files being loaded in Eclipse? Try this...**
**A:** In Eclipse disable all extensions: Eclipse > Preferences... > Installed JREs > [choose version of Java you are using] > Edit... > add into Default VM arguments "-Djava.ext.dirs=" (that is, you are overriding/wiping default paths to extensions that might be incompatible, Maven will download them anyway), then in JRE system libraries remove entries containing "/System/Library/Java/Extensions/".
======Acknowledgement======
Creation of this course was partially supported by the project Integration of IT Tools into Education of Humanities, which is financed by the European Social Fund, the state budget of the Czech Republic, and by the budget of Municipal House Prague.
Inovace kurzu v letech 2011/2 a 2012/3 byly podpořeny projektem CZ.2.17/3.1.00/33274 financovaným Evropským sociálním fondem a rozpočtem hlavního města Prahy.
{{:lectures:loga.png|}}
**Evropský sociální fond** \\
**Praha & EU: Investujeme do vaší budoucnosti**