MS TextWorld: open-source engine that both generates and simulates text games
microsoft.com
microsoft.com
[1] https://arxiv.org/abs/1902.04259
The process of obtaining just a single piece of the Triforce (the primary indicator of progress) is so complicated that you'll essentially never see it happen with random button-pressing. So any agent attempting to play and win Zelda is going to need to develop its own model of the game world and try to understand things that way. I don't see how that is supposed to happen though, without any context.
They're rewarded by exploring, not by values in game.
Maybe alone they're not enough, but in conjunction with other things, I bet we could beat Zelda. I had the bot exploring enough to find the first dungeon of LoZ.
Like maybe you could get American Fuzzy Lop [1] to beat Zelda. Isn't that the same thing, in principle?
[1] https://www.usenix.org/system/files/conference/usenixsecurit...
This is a stateful pathfinding problem, you can solve it with Dijkstra's. But how fast can you find the shortest route through 100 Zelda-likes?
Or take a page from maze-running bots and not provide the map up-front, but require an agent that actually explores to get information, and judge results on the sum of three times through the same game.
Without foreknowledge, on the other hand, Zelda becomes a whole mess of meaningless pixels and sound waves whereas NetHack retains a level of intelligibility due to its ASCII interface.
[1] https://www.reddit.com/r/nethack/comments/2tluxv/yaap_fullau...
Here's the connection to your post. I think a human and a computer have about the same chance of solving Zelda. At least a computer could be programmed to drop bombs in every rock wall in the game. For a human, that would be too brain-numbing hard.
That said, I did finish the original LOZ without hints too.
Programming the computer to drop bombs everywhere is giving it way too much foreknowledge. I'm envisioning a computer agent not even knowing what a bomb is. Having to figure out how to beat Zelda without any context for the shapes and colours on the screen, let alone what bush to burn to find level 8 or where to play the recorder to open level 7.
This would be a test of general intelligence so I have no problem giving the agent access to the Internet. If it can figure out how to find an FAQ for Zelda and make sense of that information well enough to win the game then more power to it! That's much harder to achieve than building a bot with all of the rules of Zelda pre-programmed in.
I used it to train an AI to play Mario Kart ( https://www.youtube.com/watch?v=A8oSnh0M864 )
I also had it playing The Legend of Zelda (got as far as finding the first dungeon, but with more power, I'm certain it could explore the whole map.).
Truly, this is a new Microsoft.
Of course they may want to be targeting Linux and MacOS for nefarious purposes, or maybe its a peace offering to make up for skype?
Disclaimer: I work at Microsoft on Python, linux and container things. This however is just my personal opinion and I'm not affiliated with this project.
EDIT: just to preempt suggestions that I should just use the home-row, I am, but it's really annoying for those of us not using qwerty (Colemak in my case).
Source at: https://github.com/berndverst/mstextworld/
We needed to pull in a few ways of running the backend game and communicating with it that weren't quite convenient on Windows. A number of integrated third-party components related to generating and running IF games are either linux-only or behave differently in windows and linux. In addition, the target audience is reinforcement learning researchers, who overwhelmingly use Python on Linux, so that focus was prioritized.
Ubuntu on WSL actually is a test platform, and guided a few technical decisions (in part, WSL issues #902 and #162 narrowed what we could do). Honestly, that comment is not too far from the mark. :)
Let's compare and contrast the two. Linux has a usable shell that has GCC, Bash, Awk, dozens of specific commands that can be piped together, Perl, Python, TCL...etc all built-in and easily composable. Windows has well...CMD which is horrible, Batch files, VBScript (deprecated), VBA, and Powershell (a mess). If you install Visual Studio Tools you can get a C++ compiler and .NET languages like C# and VB.NET. Linux might have its faults, but the design is coherant and you can get stuff done. With Windows your only options are use a GUI or write at least a 1/2 page of code for something that is a oneliner in Linux. Powershell is a sometimes great (mostly meh) attempt to right this, but the everything is an object design is just simply more complex than the Unix philosophy of strings, pipes, and interoperable pieces. It seems like the Windows approach is to recognize the failing, while keeping in mind that a lot of desktop software uses Windows. So give developers Linux via WSL and people can still run their other Windows only software without Wine.
In this particular case, it is very strange that they claim something which appears like it shouldn't be OS-dependent at all (Python is supposed to be portable, and there's no GUI stuff) would require a specific OS. A new Microsoft indeed, but unfortunately not one I'm a fan of...
I have a hard time believing this couldn’t have just as easily been windows based with the exact same amount of effort. Windows has fantastic developer tooling that I think you’re downplaying quite a bit.
> Powershell is a sometimes great (mostly meh)
Powershell has a different philosophy for sure - but I have seen sys admins do some pretty powerful things with it, and quickly. What can a Linux shell do that power shell can’t (that isn’t specific to Linux platform needs)?
To give an example, suppose you have a directory with 20 .CSV files that are all 200 MB. This is extremely common for me and the files are much larger for many developers. Say you want to extract certain data matching a string and then sort the whole thing into a new file. In Linux this is really simple with a oneliner and it also runs really fast. Powershell has a oneliner capability, but it is quite frankly abysmally slow. The Linux solution takes about 5 seconds and the Powershell takes 15 minutes. Now there is a way to speed up the powershell code. Running it in parallel helps, but the true performance aid comes in calling some C# within the script and now it is definitely not a oneliner. That is the overall issue. The Unix philosophy is simple to execute, understand, and fast to run. The Windows is complex to understand and often slow. Powershell is great in some instances. The language is certainly better than Bash, but if I have to constantly use C# with it...you might as well just use C#.
That said, JS/Node is often my goto... I also do a fair amount of `npm i -g UTIL` mainly out of convenience between platforms. There isn't a really universal scripting system I can completely rely on where at least one of the three aren't oddities.
I do use bash pretty much everywhere, and that's what I use ... it's just when I'm writing a script for reuse, I'm more inclined to use NodeJS.
Bingo (I'm on the TextWorld team).
I tend to use mac at home, windows at work, and linux via docker, ssh and/or VM for pretty much all targeted/test work.
Not a big fan of PS, other than some of the commands available there that aren't generally outside PS.
It seems to be that the former has natural language processing/semantics integrated, while the latter relies on a rather old school approach to text-based games. Or am I mistaken?
TextWorld actually uses Inform7. The framework first builds a game object (e.g. objects, locations, quests) according to some settings. Then, it converts it into Inform7 code before being compiled into a playable game. See https://imgur.com/oOcy5kk