$game_player não é literalmente o mesmo que Game_player.new. Imagine a situação.
Tu chega descobre um bar na esquina próximo à sua casa, que não tinha visto antes, e decide que nos fins de semana
vai dar uma passada lá para molhar a garganta. Lá encontra uma cerveja artesanal, que você tanto gosta, tanto que
apelidou a cerveja de "docinha". Aí tu chega lá e diz pro dono do estabelecimento:
- E aí, xara!? Olha, eu gosto muito dessa cerveja, tanto que a chamo de docinha. Devo vir cá mais vezes, então
quando eu pedir uma docinha, já sabe qual me dar.
Assim, toda vez que tu pedir a docinha, o dono do bar sabe o que tu quer. Porém, se tu não explicar pra ele o que é
a docinha antes de pedir, ele não saberá o que tu quer.
Digamos que o dono do bar é o sistema do jogo, a docinha é o $game_player, e você é... você. Se tu não explicar
pro sistema que docinha = Cerveja_Artesanal.new, ou melhor, que $game_player = Game_player.new, e chamar por
$game_player, ele não vai saber o que tu quer. Como disse, acho que esse código teu tá sendo lido antes dessa
varável ser estabelecida.
Tu pode adicionar o código $game_player = Game_player.new antes do print pra ver se vai.