The updated and future maintained version of this page can be found at https://github.com/nbatfai/RedFlowerHell
Nowadays the key players in the artificial intelligence industry have their own platform for AGI research that is typically built on some well-known current or former game title. For example, Google uses the Quake III Arena and Star Craft II. Microsoft uses Minecraft for similar research purpose [1].
The Project MALMÖ is a Minecraft mod created by the Microsoft. Now we have started to use MALMÖ in education of programming. Then based on the experience gained with this we would like to use it in AGI research too. For this purpose we have begun to experiment with our own series of competitions called Red Flower Hell. The specific purpose of this challenge series is to collect as many red flowers as possible before the lava flows down the hillside as it can be seen in the following figure.
In the elements of Red Flower Hell series we are going to develop intelligent agents to collect poppies. After this we would also like develop AGI agents in this environment. It is therefore essential to know that how many poppies can a human player collect?
nb4tf4i.xml
nb4tf4i_red_flower_hell_basic_human.py
HI agents Results
These programs do not contain the usual MI solutions (such as graph searching or Q-learning), but only naive heuristic algorithms.
The first experiments with MALMÖ we had taken in our immediate family circle as we did with, for example, project BrainB [1] or SMNIST [2]. We have played with cheating (using ObservationFromGrid) and without cheating as well.
nb4tf4i.xml
nb4tf4i_red_flower_hell_basic.py
to rotate Steve at half speed.# Loop until mission ends:while world_state.is_mission_running:print("--- nb4tf4i arena -----------------------------------\n")self.agent_host.sendCommand( "move 1" )time.sleep(.5)self.agent_host.sendCommand( "turn 1" )time.sleep(.5)world_state = self.agent_host.getWorldState()
nb4tf4i_d.xml
nb4tf4i_red_flower_hell_basic_d.py
# Loop until mission ends:while world_state.is_mission_running:print("--- nb4tf4i arena -----------------------------------\n")self.agent_host.sendCommand( "move 1" )time.sleep(.5)self.agent_host.sendCommand( "move 1" )time.sleep(.5)self.agent_host.sendCommand( "move 1" )time.sleep(.5)self.agent_host.sendCommand( "turn 1" )time.sleep(.5)world_state = self.agent_host.getWorldState()
Let's do the same task as in the first circle but now with using discrete motion commands.
Programming task
nb4tf4i_red_flower_hell_basic_d_sense.py
class Steve:def __init__(self, agent_host):self.agent_host = agent_hostself.x = 0self.y = 0self.z = 0self.yaw = 0self.pitch = 0def run(self):world_state = self.agent_host.getWorldState()# Loop until mission ends:while world_state.is_mission_running:print("--- nb4tf4i arena -----------------------------------\n")if world_state.number_of_observations_since_last_state != 0:sensations = world_state.observations[-1].textprint(" sensations: ", sensations)observations = json.loads(sensations)nbr3x3x3 = observations.get("nbr3x3", 0)print(" 3x3x3 neighborhood of Steve: ", nbr3x3x3)if "Yaw" in observations:self.yaw = int(observations["Yaw"])if "Pitch" in observations:self.pitch = int(observations["Pitch"])if "XPos" in observations:self.x = int(observations["XPos"])if "ZPos" in observations:self.z = int(observations["ZPos"])if "YPos" in observations:self.y = int(observations["YPos"])print(" Steve's Coords: ", self.x, self.y, self.z)print(" Steve's Yaw: ", self.yaw)print(" Steve's Pitch: ", self.pitch)
Hint:
if "LineOfSight" in observations:lineOfSight = observations["LineOfSight"]self.lookingat = lineOfSight["type"]print(" Steve's <): ", self.lookingat)
Then modify the code further to print a debug message if Steve sees a red flower.
A solution can be seen in this video: https://youtu.be/mT9FOzzSjUI
Finally, modify the code to mine a red flower.
Programming task: Steve should go up to the lava then come back down to the starting level walking ahead of the lava.
Let's do the same task as in the previous circle but now with using 5x5x5 or 7x7x7 grid of blocks in ObservationFromGrid.
In these courses students can earn extra points by solving MALMÖ based programming tasks.
Syllabus, lectures, laboratory work, community.
There are usually roughly 130 students in the High-level programming languages I lecture. This picture was taken on Wed, 19 Feb 2020.
The purpose of the following contests (Red Flower Hell I.-IV.) is to gain experience in agent programming. There is no reward or prize. We play the game for the game's sake.
10 Feb - 2 Mar
Using ObservationFromGrid has already been a cheating in itself. But in this first round there are no rules, anything is allowed, for example the students can use directly the coordinates of flowers from mission XML file with the teleport command... and so on.
How to participate? Comment the link of your YouTube video to the post: https://www.facebook.com/groups/udprog/permalink/1337108209810398/
Results
Summary: the purpose of this round was to install and learn about MALMÖ.
2 Mar - 23 Mar
Based on experience gained in the first round, the following are prohibited:
How to participate? Comment the link of your YouTube video to the post: https://www.facebook.com/groups/udprog/permalink/1342653805922505/
Results
23 Mar - 6 Apr
Qualification limit: 14 poppies. The deadline for submission of the source code of your SF agent is 1 Apr. There will be online qualifiers followed by offline finals at the spring school holidays. Until now the red flowers have always been placed to the same place. In the finals, the locations of the red flowers will be re-generated. (For example, try this mission XML file: nb4tf4i_d_2.xml )
Results
6 Apr - 13 Apr
In this round the full arena will be re-generated: not only the coords of the red flowers but also the walls of the hillside will change as it can be seen in the following figure.
Results
See AI agents
See AGI agents
[1] Johnson, M., Hofmann, K., Hutton, T.,Bignell, D. (2016). The Malmo Platform for Artificial Intelligence Experimentation, 25th International Joint Conference on Artificial Intelligence, https://www.ijcai.org/Proceedings/16/Papers/643.pdf
[2] Bátfai, N., Papp, D., Besenczi, R., Bogacsovics, G., & Veres, D. (2019). Benchmarking Cognitive Abilities of the Brain with the Event of Losing the Character in Computer Games. Studia Universitatis Babeș-Bolyai Informatica, 64(1), 15-25. doi:10.24193/subbi.2019.1.02
[3] Norbert Bátfai, Dávid Papp, Gergő Bogacsovics, Máté Szabó, Viktor Szilárd Simkó, Márió Bersenszki, Gergely Szabó, Lajos Kovács, Ferencz Kovács, Erik Szilveszter Varga (2019). Object file system software experiments about the notion of number in humans and machines. Cognition, Brain, Behavior. An interdisciplinary journal. Volume XXIII, Nr 4, 257-280, doi:10.24193/cbb.2019.23.15
[4] Bátfai, N., Csukonyi Cs., Papp D, Hermann Cs., Deákné O. E., Győri K. (2020) The DEAC-Hackers esport department's education and research concept in AI in Minecraft (accepted Hungarian manuscript)
Norbert Bátfai, PhD., University of Debrecen, IT Dept., batfai.norbert@inf.unideb.hu
nb4tf4i
Last modified: Tue, 3 Mar 2020 21:18:00 GMT