======Pogamut 3 Pilsen Workshop 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 for the practice lessons of the Pogamut workshop performed at Pilsen ZČU university in 2017. The workshop are/were (mainly) backed up by Ondřej Rohlík and [[http://pogamut.cuni.cz/main/tiki-index.php?page=About+authors|Jakub Gemrot]].
======Contacts======
Ondřej Rohlík
Jakub Gemrot: [[mailto:gemrot@gamedev.cuni.cz|gemrot@gamedev.cuni.cz]]
======Workshop History======
=====Workshop 2 (20.3.2017)=====
**Lesson 2 - CTF FTW Mayhem** [[https://drive.google.com/open?id=0B49ID9s3-zhTVGVvY3JPT1d0X1U|(PDF)]] \\
* Tricks how to encode smart shooting
* **BOT 05** - SmartShooterBot
* [[https://drive.google.com/open?id=0B49ID9s3-zhTZ3NwdTl5d3FLblE|SmartShooterBot project template]]
* implement smart shooting!
* run at DM-1on1-Albatross
* weapon collecting behavior already implemented!
* **BOT 06** - RunCoverBot
* [[https://drive.google.com/open?id=0B49ID9s3-zhTSjN4a19ZeDM2N0E|RunCoverBot project template]]
* implement item collector that is preferring travelling unseen!
* run at DM-1on1-Albatross
* finish implementation of CoverMapView and provide item collecting behavior
* **BOT 07** - FlagStealerBot
* Extend RunCoverBot to start stealing enemy flags!
* [[https://drive.google.com/open?id=0B49ID9s3-zhTYWZYdGwxMEFWQ1E|Extra navmeshed and visibility matrices for CTF maps]], addon to the RunCoverBot project template above
* Again, prefer cover paths...
* **BOT 08** - DifferentPathsBot
* [[https://drive.google.com/open?id=0B49ID9s3-zhTZkU4N0hNYWUzanc|DifferentPathsBot project template]]
* Find different paths between CTF bases and visualize them!
* **BOT 09** - TeamCommBot
* [[https://drive.google.com/open?id=0B49ID9s3-zhTUExvVWdXVDFwSm8|TeamCommBot template]]
* The assignment is actually to learn from the code!
* Start CTF game
* Start TCServer
* Start bots
* Read logs
* Read code to learn how it is designed!
* **BOT 10** - Automated CTF Matches
* [[https://drive.google.com/open?id=0B49ID9s3-zhTYnV0V2NlR3UwMHM|Automated CTF Matches template]]
* This actually is not a bot but a project that shows you how you can automate evaluation of your bots!
* But it actually contains simple CTFBot it uses for the show case...
* **BOT 11** - CTFBot!
* Now wrap it all together and create CTF UBER-BOTS TEAM!
* You're on your own here ;-)
**Lesson 1.1 - Pogamut Gentle Introduction** [[https://drive.google.com/open?id=0B49ID9s3-zhTNXdabmZzZU1ybk0|(PDF)]] \\
* Pogamut gentle introduction
* Virtual worlds, virtual agents
* Basics of Pogamut - interface, API
* How to run your first bot
* **BOT 01** - EmptyBot
* [[https://drive.google.com/open?id=0B49ID9s3-zhTbW4zbE9kR2hybXc|EmptyBot project template]]
* You might want to read through [[http://pogamut.cuni.cz/pogamut_files/latest/doc/tutorials/00-EmptyBot.html|EmptyBot tutorial]]
* Fool around with your first Pogamut bot
* **BOT 02** - ResponsiveBot
* [[https://drive.google.com/open?id=0B49ID9s3-zhTXzZ3TXJsd3hpeTg|ResponsiveBot project template]]
* You might want to read through [[http://pogamut.cuni.cz/pogamut_files/latest/doc/tutorials/01-ResponsiveBot.html|ResponsiveBot tutorial]]!
* Learn how to setup event handlers
**Lesson 1.2 - Pogamut Low-level API ** [[https://drive.google.com/open?id=0B49ID9s3-zhTUkd5cDZab2Z5Skk|(PDF)]] \\
* Running around UT2004 environment
* Sensors - self, players
* Effectors - move, jump, dodge
* **BOT 03** - Rocket Dodger Bot
* [[https://drive.google.com/open?id=0B49ID9s3-zhTR0hSR1g2eDNfS1k|RocketDodger project template]]
* Implement reaction to IncomingProjectile!
* Find TODO within the code...
**Lesson 1.3 - Navigation & Combat** [[https://drive.google.com/open?id=0B49ID9s3-zhTVWxUSmFMN3BldTQ|(PDF)]] \\
* How to navigate within UT2004 environment
* What items can we pickup and use?
* What weapons are there to shoot with?
* **BOT 04** - Navigation Bot
* [[https://drive.google.com/open?id=0B49ID9s3-zhTeHdnS3pSb09rWjg|NavigationBot project template]]
* Navigate between random navpoints
* **BOT 05** - Collector bot
* Extend Navigation bot to be able to collect items according to their distance/value ratio
* **BOT 06** - Hunter bot
* Extend collector bot with combat sub-behavior!
* [[https://drive.google.com/open?id=0B49ID9s3-zhTYUE1azNmWG8weTQ|Simple DM Bot]] we've done during the workshop
======Pogamut 3 platform installation======
**Installers:**
* Pogamut UT2004 3.7.0. Get them at [[http://pogamut.cuni.cz/main/tiki-index.php?page=Download|Pogamut download page]]
* Date: 22.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.4/index.html|NetBeans 7.4]], 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.
**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 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 3.0.4! 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.