The easiest way to code this with traditional methods would be to still use deep learning for the image recognition part of it. The input to the agent at each step includes an array of numbers representing the pixels on the screen. So it doesn't get to see the 3d terrain directly; it sees a projection into 2d, and needs to recognize the 3d terrain and objects. And from there it needs to synthesize that into a map of the situation-- for example, the presence of lava, water, cliffs, and hostile monsters.
Doing that kind of object recognition without deep learning would be pretty onerous. The strategy and planning parts of this, though, I agree would be comparatively straightforward. Further, even if it started with a representation of the actual terrain blocks in a 3d model, the synthesis step into a representation of what the overall situation is-- that also is much more easily done with deep learning than with traditional methods.
Back in the day I wrote a highly effective bot for playing Star Wars Galaxies which would run missions unattended. It was created exclusively with hand-coded routines and a big nested state machine. It included a hand-written OCR library for reading the compass coordinates and accepting missions from the mission terminal in a particular direction. It knew a pre-recorded path for navigating in and out of town to and from the mission terminal. It used the little red dots on the radar scanner to determine the presence of nearby hostile creatures and mission targets. I ended up selling this system to a gold farming outfit in China; it was only available for sale to the public for a handful of days.
I bring this up because this bot for SWG didn't contain any modern machine learning or deep learning techniques, and it worked great. But if it weren't for the coordinates displayed on the radar (used for navigating through the maze of town back to the mission terminal), along with easily discernible red dots on the radar indicating enemy presence (used for knowing which direction to face during combat), I'd have been at a loss for the complex object recognition / situation recognition necessary to turn this into a task solvable by a straightforward nested state machine.
The rule is actually quite vague, which is not very surprising, as it seems quite hard to define what domain knowledge is allowed and what isn't without having lots of loopholes.
I’ve written bots for MMO’s and the hardest part for a task like this is fighting the API the bot has access to. I suspect I could even solve this challenge 10% of the time with a blind bot that just did some brownian motion. Unless you never run into trees, every other resources is pretty easy to just dig down for.
The only thing that would make this hard is the thing that makes it hard for a human player which is knowing you’re on the diamond level without using the xyz debugging info.
That’s a really good point, lava pools start at y=10 so mining around 11 is both safe and in the diamond zone. The question is if there’s enough training data to reinforce an agent so that once it finds a (underground) lava pool it should start mining at that level.
Something else that makes this much harder than it is for a human: there's no sound! You can't hear the nearby lava or water when digging down.
Check out the information in the observation space-- nothing about sound in here.
http://minerl.io/docs/environments/index.html#minerlobtaindi...
But maybe a computer could do a better job than a human at looking at the clouds before digging, estimating how high they are, then keeping track of how many levels down we've dug. I'm pretty sure the clouds are at a fixed altitude.