def game_node_hash(game_node):
	"""
	Creates a unique hash of a game node.

	Hashes are created with respect to the current state of the board and the
	move that put it in that state.

	Parameters
	----------
	game_node : chess.pgn.GameNode
		Some node to hash.

	Returns
	-------
	str
		A hash value.
	"""
	board = game_node.board()
	if game_node is game_node.game(): #is root node, ie no (recorded) move lead to this position
		h = board.fen()
	else:
		h = '_'.join([board.fen(), game_node.san()])
	h = h.replace("/", "_")
	h = h.replace(" ", "_")
	return h