Homework 4: Working with an AI
Short Description:
Create a simple game world which employs an AI.
This assignment is worth 100 points.
Goals
When you finish this homework, you should
- Have created a NPC with an attached AI element.
Formal Description
Please note for this homework you will be submitting both a game and a document.
- [20 points] Please complete the tutorial Introduction to AI with Blueprints.
- I have some Notes to accompany this tutorial.
- Please include a screenshot of the badge showing your have completed this tutorial in your final document..
- [50 points]
- Create a virtual world occupied by autonomous agents. This world should include
- [5 points] A navigation mesh which allows the agents to find locations in the world.
- [10 points] An item cache. This could be a supply of gold, food or some other type of consumable item.
- You may adapt the "cache" to your ideal world. In my fox world, this would be a cache of food. If you are building a civilization buildoing style world, this could be a wood pile that the agents are harvesting. If this is a wildlife world, this might be a food source, that is consumed by the agents.
- Your world generates a cache at random at up to four different places during the game. It may, if you wish, be at more than one cache placed at a time.
- Each cache is worth between 3 and 5 units.
- When an agent interacts with this cache, one unit of the cache is transferred to the agent.
- The size of the cache on screen is proportional to the number of items in the cache. Each time an agent removes a unit, the physical size of the cache decreases.
- When the cache reaches size 0, the item disappears.
- When ther eare no caches in the world, at least one new cache should be spawned.
- [35 points] An agent with at least the following behaviors.
- Initially the agent knows of no locations where a cache occurs.
- If the agent discovers a cache they will store this location and continue to "mine" the cache until it has been consumed.
- After "collecting" a unit from the cache, the agent should take this item "home", the location where the agent was originally placed.
- You do not need to represent the collection of items at "home" graphically, but you may if you wish.
- The agent should keep a list of locations where a cache has been found.
- When the agent does not know the location of an active cache, they should visit the list of known cache sites.
- If an agent does not know of cache sites, or they have visited all of the cache sites, they should explore the map at random.
- I think I would have the agent keep track of the cache sites and which one should be explored next.
- I would have the agent decide, through a timer, when it is time to recheck the known sites.
- This however, is just a suggestion, implement as you wish.
- The agent should occasionally "go home" to location where it was originally placed.
- If you wish you could build a second agent. This agent should
- Have some sort of "sense" that will allow it to locate the caches more quickly, but will not remember where the sources are.
- You should use the EQS to do this.
- A cache should create an EQS event when it is created
- Or possibly continuously after it has been created.
- The agent should "sense" the cache through the EQS.
- A neat addition would be to have your second agent somehow inform the first agaent of the find through a different sense in the EQS.
- [30 points] Create a document to accompany your virtual world. This will consist of three parts
- A screen shot of your achievement badge for from the tutorial.
- A design document specifying in high level pseudo code specifying
- The major algorithms involved in each programmable component of your virtual world.
- The data structures involved with each programmable component of your virtual world.
- A description of how information will be transferred between different components of your virtual world.
- For each component provide
- The name/unreal type of the component.
- A description of the data structures used by the component.
- Include types, default values and where/how other values can be added.
- Include a screenshot of these data structures as implemented in Unreal.
- A description of the algorithms as implemented in unreal.
- Include screenshots of the implementation of these algorithms.
- The final screenshots must be readable, no credit will be given for unreadable screenshots.
- A description of how the component communicates with other elements in the virtual world.
- Include screenshots where appropriate.
Submission
Submit your final homework to your class homework submission folder in a sub folder called homework 4. Send an email message to your instructor when you have completed this task.