PlayPendium

Salvo · Matéria para Reflexão

Por dentro do Salvo

Por baixo do simples ato de clicar em células há um motor determinístico que modela frotas ocultas, raciocínio ponderado por probabilidades e o duelo clássico entre ocultação e descoberta. 3

Escrito e editado em inglês. Esta versão em português foi produzida por tradução automática; quando a precisão importa, o original em inglês é a referência. Ler o original em inglês →

Os Dois Tabuleiros

No coração do jogo há um par de objetos Board, um representando a sua posição oculta e o outro representando a posição oculta do oponente. Cada tabuleiro carrega uma frota de navios posicionados em uma grade quadriculada, mas as localizações permanecem escondidas do outro lado. Você atira na grade inimiga enquanto a IA atira na sua, e cada tiro ou atinge um navio ou cai em água vazia. Essa arquitetura de dois tabuleiros estabelece a assimetria fundamental de informação do duelo de frotas ocultas: cada lado conhece o próprio tabuleiro por completo, mas só pode inferir a configuração do outro a partir do padrão dos seus tiros. 3

A simetria dessa montagem é o que dá ao jogo o seu caráter. Nenhum dos lados vê diretamente os navios do outro. Em vez disso, ambos precisam construir um modelo mental da grade oculta a partir do retorno esparso de acertos e erros. Cada tiro se torna um dado, cada acerto estreita as possibilidades e cada erro elimina território da consideração. O coordenador de partida do motor gerencia esses dois tabuleiros, garantindo que os tiros sejam registrados, que os acertos sejam devidamente atribuídos e que o jogo só termine quando toda a frota de um dos lados tiver sido afundada. 3

Um modelo determinístico transforma o palpite cego em busca informada.

Disposição Aleatória, Regras Determinísticas

Antes de a partida começar, o motor chama randomFleet para dispor os navios da IA de forma aleatória. Essa aleatoriedade não é arbitrária; ela tem semente, o que significa que um determinado valor de semente sempre produzirá a mesma disposição. Esse determinismo com semente é uma escolha de design que torna o jogo reproduzível e testável. Se você rodar o jogo com a mesma semente, obterá os mesmos posicionamentos de navios, a mesma sequência de decisões da IA e o mesmo resultado. Essa propriedade é valiosa para depuração e para entender como a IA se comporta em diferentes condições. 3

Uma vez disposta a frota, as regras que governam a partida são fixas e determinísticas. A IA não joga dados, e o motor não introduz aleatoriedade no meio da partida. Cada decisão que a IA toma decorre do modelo de probabilidade que ela mantém, e cada tiro que você dispara é registrado e analisado. A única fonte de variação é a semente que determina o posicionamento inicial da frota. Isso significa que o jogo é, no fundo, um quebra-cabeça: dadas as restrições das regras e o retorno dos tiros, você consegue deduzir a configuração oculta antes que a IA deduza a sua? 3

Disparando o Tiro

Quando você dispara um tiro, o motor o registra no tabuleiro alvo e verifica se o tiro acertou ou errou. Isso é feito por meio da função fire, que atualiza o estado do tabuleiro e determina o resultado. Um acerto marca a célula como ocupada por um navio, enquanto um erro a marca como água vazia. O motor então verifica se o navio que contém aquela célula foi completamente afundado, examinando todas as suas células. Se todas as células de um navio tiverem sido atingidas, o navio está afundado, e essa informação é comunicada a ambos os lados. 3

A condição de vitória é simples, mas de grandes consequências. Um lado vence quando todos os navios do oponente estão afundados. Isso é verificado por meio da função allSunk, que examina se cada navio do tabuleiro do oponente foi completamente atingido. O jogo termina imediatamente quando essa condição é satisfeita. Essa natureza de tudo ou nada da condição de vitória significa que cada tiro importa, e que a pressão para afundar navios rapidamente é equilibrada pela necessidade de não entregar a sua própria configuração. 3

A IA caça por probabilidade e conclui com a mira.

O Motor de Probabilidade

O oponente neste jogo não é um simples atirador aleatório. É uma IA de mira probabilística que pondera a probabilidade de cada célula oculta conter um navio. A IA mantém um modelo de probabilidade da grade inimiga, atualizando-o à medida que os tiros são disparados e o retorno é recebido. Células que não podem conter navios, devido às restrições de posicionamento dos navios restantes, são marcadas como improváveis, enquanto células que precisam conter navios para acomodar os posicionamentos restantes são marcadas como prováveis. A IA então atira na célula de maior probabilidade, transformando o palpite cego em busca informada. 3

Esse modelo de probabilidade se apoia na matemática da verossimilhança, em que os eventos são descritos por números entre zero e um 2. Uma probabilidade zero significa que um evento não pode ocorrer, enquanto uma probabilidade um significa que ele deve ocorrer. A IA usa essas descrições numéricas para guiar seus tiros, favorecendo as células em que a probabilidade de encontrar um navio é mais alta. É essa abordagem que distingue a IA de um atirador puramente aleatório e lhe dá o seu comportamento característico de caça.

Caça e Alvo

O comportamento da IA pode ser descrito em duas fases: caça e alvo. Na fase de caça, a IA procura navios atirando nas células onde os navios ainda não descobertos têm mais chance de estar. É uma busca ampla que visa encontrar o primeiro contato com os navios inimigos. Assim que um acerto é registrado, a IA passa para a fase de alvo, em que se concentra nas células vizinhas do acerto para terminar de afundar aquele navio. Essa abordagem em duas fases espelha a maneira como jogadores humanos encaram o jogo: primeiro encontre os navios, depois afunde-os. 3

A transição entre caça e alvo é determinada por o último tiro ter sido um acerto ou um erro. Se o último tiro errou, a IA volta ao modo de caça e procura as células de maior probabilidade. Se o último tiro acertou, a IA entra no modo de alvo e atira nas células vizinhas do acerto. Essa regra simples, combinada com o modelo de probabilidade, cria uma estratégia coerente que equilibra exploração e aproveitamento. A IA explora a grade para encontrar navios e aproveita o conhecimento de um acerto para afundar aquele navio com eficiência. 3

Três níveis de força ajustam o comportamento da IA.

Três Forças

A IA tem três níveis de força, ou dificuldade, que ajustam o seu comportamento. Esses níveis afetam a forma como a IA pondera as probabilidades e toma decisões. Nos níveis mais baixos, a IA pode cometer mais erros ou ser menos agressiva na mira. Nos níveis mais altos, a IA é mais consistente nos seus cálculos de probabilidade e mais implacável na mira. Essa variedade de níveis permite que os jogadores encontrem um grau de desafio que lhes sirva, do jogo casual à competição séria.

A implementação exata desses níveis vive no componente de IA do motor, a classe SalvoAI. Os níveis de dificuldade modificam a forma como a IA interpreta o modelo de probabilidade e como equilibra exploração e aproveitamento. Esse design permite que a IA seja ao mesmo tempo acessível a jogadores casuais e desafiadora para os experientes, sem mudar a mecânica fundamental do jogo. 3

Sonar

Sobre as regras clássicas há uma variação: o sonar. Essa habilidade permite a um lado revelar uma leitura 3×3 da grade inimiga ao custo do tiro daquele turno. O sonar revela se cada célula da área 3×3 contém um navio ou é água vazia. Essa informação pode ser inestimável para estreitar a localização dos navios, mas vem ao preço de perder o seu tiro naquele turno. 3

A decisão de usar o sonar é estratégica. Quando a informação vale o custo? Se você está com dificuldade para encontrar navios, o sonar pode dar o avanço de que você precisa. Se você está perto de afundar um navio, o custo de perder o seu tiro pode ser alto demais. O sonar acrescenta ao jogo uma camada de gestão de recursos, forçando os jogadores a pesar o valor da informação contra o valor da ação. 3

A reposição é uma opção defensiva de uso único.

Reposição Única por Jogo

Outra variação sobre as regras clássicas é a reposição única por jogo. Cada lado pode mover um dos seus próprios navios uma vez durante a partida. Essa esquiva defensiva não custa um turno, o que significa que você pode reposicionar e ainda assim disparar um tiro na sua vez. A habilidade de reposição permite tirar um navio do perigo quando ele está ameaçado, ou reposicioná-lo em um local mais defensável. 3

A habilidade de reposição é uma opção de uso único, o que a torna preciosa. Quando você deve usá-la? Se um navio está prestes a ser afundado, reposicionar pode salvá-lo. Se você está confiante na sua posição atual, reposicionar pode ser um desperdício. A decisão de reposicionar é estratégica e exige uma consideração cuidadosa do estado atual da partida e das ações prováveis do seu oponente. 3

Um Tiro por Turno

Por trás de todas essas mecânicas está a regra clássica de um tiro por turno. Cada lado dispara exatamente um tiro por turno, alternando de um lado para o outro. Essa regra estabelece o ritmo do jogo e garante que ambos os lados tenham oportunidade igual de agir. A regra de um tiro por turno é o que faz do jogo um duelo de inteligência, e não uma corrida de velocidade. 3

É essa regra clássica que ancora o jogo na tradição da Batalha Naval, um jogo de adivinhação do tipo estratégia para dois jogadores, disputado em grades quadriculadas em que a frota de cada jogador fica escondida do oponente 1. A regra de um tiro por turno é o que faz do jogo um teste de dedução e probabilidade, e não um teste de reflexos. É uma regra simples, mas é ela que dá ao jogo o seu caráter e o seu desafio.

O determinismo puro torna o jogo testável.

Determinismo com Semente

O motor é puro e determinístico por semente, movido pelo seu próprio gerador de números aleatórios com semente. Isso significa que cada aspecto do jogo é determinado pelo valor de semente fornecido no início. Dada a mesma semente, o jogo sempre produzirá a mesma sequência de eventos, do posicionamento inicial da frota ao tiro final. Essa propriedade torna o jogo testável, já que o mesmo cenário pode ser reproduzido e examinado. 3

O determinismo com semente também tem implicações para a compreensão do jogo. Se você quiser entender como a IA se comporta em um cenário específico, pode rodar o jogo com uma semente específica e observar o resultado. Se quiser testar uma estratégia específica, pode rodar o jogo várias vezes com a mesma semente e ver como ela se sai. Essa reprodutibilidade é um recurso valioso tanto para jogadores quanto para desenvolvedores.

Sources & notes

  1. "Battleship (game)," Wikipedia, a strategy-type guessing game for two players, played on ruled grids on which each player's fleet of warships is marked and concealed from the opponent; players alternate calling shots at the other's grid to hit and sink ships, aiming to sink the entire fleet; the game evolved from a pencil-and-paper game dating to around the World War I era; the first commercial version was called Salvo, published by the Starex company in 1931, and in 1967 Milton Bradley published a version using plastic pegboards and miniature ships; and in the "salvo" variant a specified number of squares are targeted at one time, all attacked simultaneously. en.wikipedia.org/wiki/Battleship_(game).
  2. "Probability," Wikipedia, a branch of mathematics concerning numerical descriptions of how likely events are to occur; the probability of an event is a number between 0 and 1, where 0 indicates impossibility and 1 indicates certainty, and the larger the probability the more likely the event (for example, a fair coin flip has probability 0.5 for each outcome). en.wikipedia.org/wiki/Probability.
  3. This game's engine: a Battleship game where each side has a Board with a hidden fleet, the human fires at the enemy fleet and the AI at the human's, one shot per turn (classic rules), fire records a hit or miss, and a side wins when the opponent's ships are all sunk (allSunk); the opponent is a probability-targeting SalvoAI with three difficulty strengths that "hunts" for ships by favouring the cells where an undiscovered ship is most likely to sit and then "targets" the neighbours of a hit to finish it; two twists sit on the classic rules, a sonar ping reveals a 3×3 ship/empty readout but costs that turn's shot, and each side may reposition one of its own ships once per game (a dodge that does not cost the turn); and the engine is pure and seeded-deterministic.
  4. Further reading on Probability, Interpretations of Probability (Stanford Encyclopedia of Philosophy/Winter 2012 Edition). plato.stanford.edu.
  5. Further reading on Probability, Probability -- from Wolfram MathWorld. mathworld.wolfram.com.
  6. Further reading on Probability, Logical foundations and measurement of subjective probability. doi.org.
Was this worth reading?
← Back to Salvo
PlayPendium · About · Contact · Privacy · Terms · Cookies · Accessibility · Copyright · Browse all games · Inspirations · © 2026