PlayPendium

Salvo · Düşündürücü Konular

Salvo'nun İçinde

Karelere tıklamak gibi basit bir eylemin altında, gizli filoları, olasılık ağırlıklı akıl yürütmeyi ve gizlenme ile keşfin klasik düellosunu modelleyen deterministik bir motor yatar. 3

İngilizce yazılmış ve düzenlenmiştir. Bu Türkçe sürüm makine çevirisiyle oluşturulmuştur; kesinliğin önemli olduğu yerlerde İngilizce özgün metin esas alınmalıdır. İngilizce orijinalini okuyun →

İki Tahta

Oyunun merkezinde bir çift Board nesnesi bulunur; biri sizin gizli konumunuzu, diğeri rakibin gizli konumunu temsil eder. Her tahta, çizgili bir ızgaraya yerleştirilmiş bir filo taşır, ancak konumlar diğer taraftan gizli kalır. Siz düşman ızgarasına ateş ederken yapay zeka sizinkine ateş eder ve her atış ya bir gemiye isabet eder ya da boş suya düşer. Bu çift tahta mimarisi, gizli filo düellosunun temel bilgi asimetrisini kurar: her taraf kendi tahtasını tamamen bilir, ancak diğerinin yerleşimini yalnızca kendi atışlarının deseninden çıkarabilir. 3

Bu kurulumun simetrisi, oyuna karakterini veren şeydir. Hiçbir taraf diğerinin gemilerini doğrudan görmez. Bunun yerine her iki taraf da, isabet ve ıskaların seyrek geri bildiriminden gizli ızgaranın zihinsel bir modelini kurmak zorundadır. Her atış veriye dönüşür, her isabet olasılıkları daraltır ve her ıska bir bölgeyi değerlendirme dışı bırakır. Motorun oyun koordinatörü bu iki tahtayı yönetir; atışların kaydedilmesini, isabetlerin doğru şekilde atfedilmesini ve oyunun yalnızca bir tarafın tüm filosu batırıldığında sona ermesini sağlar. 3

Deterministik bir model, kör tahmini bilgiye dayalı aramaya dönüştürür.

Rastgele Yerleşim, Deterministik Kurallar

Oyun başlamadan önce motor, yapay zekanın gemilerini rastgele bir düzende yerleştirmek için randomFleet fonksiyonunu çağırır. Bu rastgelelik keyfi değildir; bir seed'e dayanır, yani belirli bir seed değeri her zaman aynı yerleşimi üretir. Bu seed tabanlı determinizm, oyunu yeniden üretilebilir ve test edilebilir kılan bir tasarım seçimidir. Oyunu aynı seed ile çalıştırırsanız aynı gemi yerleşimlerini, aynı yapay zeka karar dizisini ve aynı sonucu alırsınız. Bu özellik, hata ayıklama ve yapay zekanın farklı koşullar altında nasıl davrandığını anlama açısından değerlidir. 3

Filo yerleştirildikten sonra, oyunu yöneten kurallar sabit ve deterministiktir. Yapay zeka zar atmaz ve motor oyunun ortasında rastgelelik katmaz. Yapay zekanın verdiği her karar, tuttuğu olasılık modelinden kaynaklanır ve yaptığınız her atış kaydedilip analiz edilir. Değişkenliğin tek kaynağı, başlangıçtaki filo yerleşimini belirleyen seed'dir. Bu, oyunun nihayetinde bir bulmaca olduğu anlamına gelir: kuralların kısıtları ve atışlardan gelen geri bildirim verildiğinde, yapay zeka sizinkini çıkarmadan önce siz gizli yerleşimi çıkarabilir misiniz? 3

Atışı Yapmak

Bir atış yaptığınızda motor bunu hedef tahtaya kaydeder ve atışın isabet mi yoksa ıska mı olduğunu kontrol eder. Bu, tahtanın durumunu güncelleyen ve sonucu belirleyen fire fonksiyonu aracılığıyla yapılır. Bir isabet, kareyi bir geminin bulunduğu yer olarak işaretlerken, bir ıska onu boş su olarak işaretler. Motor ardından, o kareyi içeren geminin tamamen batırılıp batırılmadığını tüm karelerini inceleyerek kontrol eder. Bir geminin tüm kareleri isabet aldıysa gemi batmıştır ve bu bilgi her iki tarafa iletilir. 3

Kazanma koşulu basittir ancak sonuçları büyüktür. Bir taraf, rakibin gemilerinin tümü batırıldığında kazanır. Bu, rakibin tahtasındaki her geminin tamamen vurulup vurulmadığını inceleyen allSunk fonksiyonu aracılığıyla kontrol edilir. Bu koşul sağlandığında oyun derhal sona erer. Kazanma koşulunun bu ya hep ya hiç doğası, her atışın önemli olduğu ve gemileri hızla batırma baskısının kendi yerleşiminizi ele vermekten kaçınma ihtiyacıyla dengelendiği anlamına gelir. 3

Yapay zeka olasılığa göre avlanır ve hedefleyerek işi bitirir.

Olasılık Motoru

Bu oyundaki rakip basit bir rastgele atıcı değildir. Gizli her karenin bir gemi içerme olasılığını tartan, olasılık hedeflemeli bir yapay zekadır. Yapay zeka, düşman ızgarasının bir olasılık modelini tutar ve atışlar yapıldıkça ve geri bildirim alındıkça bu modeli günceller. Kalan gemilerin yerleşim kısıtları gereği gemi içermesi imkânsız olan kareler düşük olasılıklı olarak işaretlenirken, kalan yerleşimleri karşılayabilmek için gemi içermesi zorunlu olan kareler yüksek olasılıklı olarak işaretlenir. Yapay zeka ardından en yüksek olasılığa sahip kareye ateş eder ve kör tahmini bilinçli bir aramaya dönüştürür. 3

Bu olasılık modeli, olayların sıfır ile bir arasındaki sayılarla tanımlandığı olasılık matematiğine dayanır 2. Olasılığın sıfır olması bir olayın gerçekleşemeyeceği, bir olması ise mutlaka gerçekleşeceği anlamına gelir. Yapay zeka, atışlarını yönlendirmek için bu sayısal tanımları kullanır ve gemi bulma olasılığının en yüksek olduğu kareleri tercih eder. Bu yaklaşım, yapay zekayı tamamen rastgele bir atıcıdan ayıran ve ona karakteristik avlanma davranışını kazandıran unsurdur.

Avlanma ve Hedefleme

Yapay zekanın davranışı iki aşamada açıklanabilir: avlanma ve hedefleme. Avlanma aşamasında yapay zeka, henüz keşfedilmemiş gemilerin bulunma olasılığının en yüksek olduğu karelere ateş ederek gemileri arar. Bu, düşman gemileriyle ilk teması kurmayı amaçlayan geniş bir aramadır. Bir isabet kaydedildiğinde yapay zeka, o gemiyi batırma işini bitirmek için isabetin komşu karelerine odaklandığı hedefleme aşamasına geçer. Bu iki aşamalı yaklaşım, insan oyuncuların oyuna yaklaşımını yansıtır: önce gemileri bulun, sonra onları batırın. 3

Avlanma ve hedefleme arasındaki geçiş, son atışın isabet mi yoksa ıska mı olduğuna göre belirlenir. Son atış ıskaladıysa yapay zeka avlanma moduna döner ve en yüksek olasılığa sahip kareleri arar. Son atış isabet ettiyse yapay zeka hedefleme moduna girer ve isabetin komşu karelerine ateş eder. Bu basit kural, olasılık modeliyle birleştiğinde, keşif ile kullanımı dengeleyen tutarlı bir strateji oluşturur. Yapay zeka, gemileri bulmak için ızgarayı keşfeder ve o gemiyi verimli bir şekilde batırmak için bir isabete dair bilgisini kullanır. 3

Üç zorluk gücü, yapay zekanın davranışını ayarlar.

Üç Güç Düzeyi

Yapay zekanın davranışını ayarlayan üç zorluk gücü vardır. Bu güç düzeyleri, yapay zekanın olasılıkları nasıl tarttığını ve kararlarını nasıl verdiğini etkiler. Düşük güç düzeylerinde yapay zeka daha fazla hata yapabilir veya hedeflemesinde daha az agresif olabilir. Yüksek güç düzeylerinde yapay zeka olasılık hesaplamalarında daha tutarlı ve hedeflemesinde daha acımasızdır. Bu güç çeşitliliği, oyuncuların gündelik oyundan ciddi rekabete kadar kendilerine uygun bir zorluk seviyesi bulmalarına olanak tanır.

Bu güç düzeylerinin kesin uygulaması, motorun yapay zeka bileşeni olan SalvoAI sınıfında bulunur. Zorluk seviyeleri, yapay zekanın olasılık modelini nasıl yorumladığını ve keşif ile kullanımı nasıl dengelediğini değiştirir. Bu tasarım, oyunun temel mekaniklerini değiştirmeden yapay zekanın hem gündelik oyuncular için erişilebilir hem de deneyimli oyuncular için zorlayıcı olmasını sağlar. 3

Sonar Sinyali

Klasik kuralların üzerine bir yenilik oturur: sonar sinyali. Bu yetenek, bir tarafın o sıranın atışı karşılığında düşman ızgarasının 3×3'lük bir okumasını açığa çıkarmasına olanak tanır. Sonar sinyali, 3×3'lük alandaki her karenin bir gemi mi içerdiğini yoksa boş su mu olduğunu gösterir. Bu bilgi, gemilerin konumunu daraltmak için paha biçilmez olabilir, ancak bedeli o sıradaki atışınızı kaybetmektir. 3

Sonar sinyalini kullanma kararı stratejik bir karardır. Bilgi ne zaman maliyetine değer? Gemileri bulmakta zorlanıyorsanız, sonar sinyali ihtiyaç duyduğunuz atılımı sağlayabilir. Bir gemiyi batırmaya yakınsanız, atışınızı kaybetmenin maliyeti çok yüksek olabilir. Sonar sinyali oyuna bir kaynak yönetimi katmanı ekler ve oyuncuları bilginin değerini eylemin değeriyle tartmaya zorlar. 3

Yeniden konumlama, tek seferlik bir savunma seçeneğidir.

Oyun Başına Bir Kez Yeniden Konumlama

Klasik kurallara getirilen bir başka yenilik de oyun başına bir kez yeniden konumlamadır. Her taraf, oyun sırasında kendi gemilerinden birini bir kez hareket ettirebilir. Bu savunma amaçlı kaçış bir sıraya mal olmaz; yani yeniden konumlama yapıp yine de sıranızda bir atış yapabilirsiniz. Yeniden konumlama yeteneği, tehdit altındaki bir gemiyi tehlikeden çıkarmanıza veya onu daha savunulabilir bir konuma taşımanıza olanak tanır. 3

Yeniden konumlama yeteneği tek seferlik bir seçenektir ve bu da onu değerli kılar. Ne zaman kullanmalısınız? Bir gemi batırılmak üzereyse, yeniden konumlama onu kurtarabilir. Mevcut konumunuzdan eminseniz, yeniden konumlama israf olabilir. Yeniden konumlama kararı, oyunun mevcut durumunun ve rakibinizin olası hamlelerinin dikkatle değerlendirilmesini gerektiren stratejik bir karardır. 3

Sıra Başına Bir Atış

Tüm bu mekaniklerin temelinde, sıra başına bir atış şeklindeki klasik kural yatar. Her taraf sırası geldiğinde tam olarak bir atış yapar ve sıralar dönüşümlü olarak ilerler. Bu kural oyunun ritmini belirler ve her iki tarafın da eşit eylem fırsatına sahip olmasını sağlar. Sıra başına bir atış kuralı, oyunu bir hız yarışı olmaktan çıkarıp bir zekâ düellosuna dönüştüren unsurdur. 3

Bu klasik kural, oyunu Amiral Battı geleneğine oturtur: her oyuncunun filosunun rakibinden gizlendiği, çizgili ızgaralar üzerinde oynanan, iki oyunculu bir strateji türü tahmin oyunu 1. Sıra başına bir atış kuralı, oyunu bir refleks sınavı olmaktan çıkarıp bir çıkarım ve olasılık sınavına dönüştüren unsurdur. Basit bir kuraldır, ancak oyuna karakterini ve zorluğunu veren de bu kuraldır.

Saf determinizm, oyunu test edilebilir kılar.

Seed Tabanlı Determinizm

Motor saftır ve seed tabanlı deterministiktir; kendi seed'li rastgele sayı üreteci tarafından sürülür. Bu, oyunun her yönünün başlangıçta sağlanan seed değeri tarafından belirlendiği anlamına gelir. Aynı seed verildiğinde oyun, ilk filo yerleşiminden son atışa kadar her zaman aynı olay dizisini üretir. Bu özellik, aynı senaryonun yeniden oluşturulup incelenmesine olanak tanıdığı için oyunu test edilebilir kılar. 3

Seed tabanlı determinizmin oyunu anlama açısından da sonuçları vardır. Yapay zekanın belirli bir senaryoda nasıl davrandığını anlamak istiyorsanız, oyunu belirli bir seed ile çalıştırıp sonucu gözlemleyebilirsiniz. Belirli bir stratejiyi test etmek istiyorsanız, oyunu aynı seed ile birden fazla kez çalıştırıp nasıl performans gösterdiğini görebilirsiniz. Bu yeniden üretilebilirlik, hem oyuncular hem de geliştiriciler için değerli bir özelliktir.

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