

Classic Nintendo Games are NP-Hard - JacksonGariety
http://jeremykun.com/2012/03/22/nintendo-np-hard/

======
shasta
This is ridiculous. The real maps in these games didn't include even a hint of
this kind of branching nonsense, so this kind of result says nothing about the
actual difficulty of these games. And yet I sadly suspect "Zelda is NPC" is
now going to become Internet folk wisdom. Groan. This paper is actively
harmful if you ask me.

~~~
algorias
NP-completeness doesn't say anything about the difficulty of a specific
instance of a given problem. It's trivial to construct CNF formulas that are
solvable in polynomial time, for example.

An algorithm that is able to determine for _every_ Zelda level, in polynomial
time, whether or not the exit can be reached from the start is something quite
different. As shown in this paper, this would imply that the same algorithm
can solve every instance of every problem in NP efficiently, a.k.a. answer the
million dollar question.

A cleaner way of stating the results of the paper would be: "The puzzle
mechanics of Zelda are NPC". This statement is harder to misread, though I
wouldn't hold my breath given the extreme illiteracy concerning theoretical
computer science prevalent even among programmers with a degree, never mind
the internet.

~~~
Dylan16807
Zelda is not simply a single instance of a static puzzle with a well-defined
solution, it has code creating things dynamically. The title implies that the
NP-complete problems are part of the actual gameplay. If you're only looking
at mechanics you can pick nearly any game with _movement_ and pull out
traveling salesman.

~~~
algorias
A straight up implementation of TSP (I assume you mean the decision variant)
needs some kind of door that shuts with a timer.

How do you plan to encode arbitrary graphs? This poses a challenge for 2d
platformers. In case of any 2d game, how do you encode non-planar graphs? You
would need some kind of teleportation device.

A graph with few edges and large edge values will also be problematic if you
plan on keeping your input size polynomial (in |V| and |E|), as you'd need a
widget capable of encoding an arbitrarily long edge in constant map space.

Once you have solved all the above problems, feel free to write a paper about
it ;).

~~~
Dylan16807
Those features are nice but unnecessary. Just use planar graphs. Then you
don't have to enforce single-visiting either. Limited scrolling will bound the
longest edges but you don't need arbitrary edges. Only problems of a limited
size will be able to fit in the limited memory of the game but that's still
NP-complete over what does fit.

------
daniel-cussen
When designing a game [I didn't build], I realized one of the most important
ways of making the game indefinitely interestingly was to make it really hard
to solve. This meant making it NP-hard on purpose.

~~~
sgift
This is helpful, but not sufficient. At the same time it has to be engaging
and still look solvable i.e. the player must always have the feeling that
"next time I'll do it!" or he will just stop playing.

One of the last bosses in Zelda is an interesting example. It starts as a
dragon with three heads. One which is only killable by fire, the other by ice,
the last one is invincible but tries to bite you. When the outer heads are
dead the third head transforms to a fast moving snake which you have to hit at
a specific point to damage. Each time you hit it it gets faster. Now, if you
die something interesting happens: The next snake will start slower i.e.
easier, so players should be able to kill more parts of it. This repeats
itself every time you die. I noticed this when my mother (who loves Nintendo
games, but isn't a really good player) died 20 times or so at the snake. Every
time it was a bit slower and every time she was like "Well I did manage to
kill one more part. THIS time I kill it!" and ran in again. In the end she
killed the boss and was happy.

~~~
iknowno_one
Zelda 2 is considered by so many weak-willed children of the 80s to be the
"hardest" Zelda game, and yet it was not even included...

------
maaaats
I have a book called _Games, Puzzles, and Computation_ (Hearn & Demaine). It
discusses and proves the hardness of various games and puzzles. Not the scale
of AAA titles, though.

It's an interesting read. Not too mathy. They make clause gadgets in the same
way as the example here for Super Mario Brothers and use that to prove things.

Edit: Realized the author of this book is actually one of the authors of this
paper. So, yeah, if you found this article/paper interesting be sure to pick
up the book.

~~~
kriro
Nice, I'll check it out.

------
sehugg
It's worth pointing out that even tic-tac-toe is PSPACE-complete. Here is a
StackExchange question discussing the "solvability" of PSPACE vs NP:
[http://cstheory.stackexchange.com/questions/5323/are-
pspace-...](http://cstheory.stackexchange.com/questions/5323/are-pspace-
complete-problems-inherently-less-tractable-than-np-complete-prob)

