PlayPendium

Salvo · Pagkain para sa Pag-iisip

Sa Loob ng Salvo

Sa ilalim ng simpleng pagkilos ng pag-click sa mga cell ay may isang deterministikong engine na nagmomodelo ng mga nakatagong armada, ng pangangatwirang tinitimbang ayon sa probabilidad, at ng klasikong tagisan ng pagtatago at pagtuklas. 3

Isinulat at in-edit sa Ingles. Ang bersyong Filipino na ito ay ginawa sa pamamagitan ng machine translation; kung saan mahalaga ang katumpakan, ang orihinal na Ingles ang awtoritatibo. Basahin ang orihinal sa Ingles →

Ang Dalawang Board

Sa puso ng laro ay may isang pares ng mga Board object, ang isa ay kumakatawan sa iyong nakatagong posisyon at ang isa naman ay kumakatawan sa nakatagong posisyon ng kalaban. Ang bawat board ay may dalang armada ng mga barko na nakalagay sa isang may-guhit na grid, ngunit nananatiling tago ang mga lokasyon sa kabilang panig. Pumuputok ka sa grid ng kaaway habang pumuputok ang AI sa iyo, at ang bawat putok ay tumatama sa isang barko o bumabagsak sa bakanteng tubig. Ang arkitekturang ito ng dalawang board ang nagtatatag ng pangunahing asimetriya ng impormasyon sa tagisan ng mga nakatagong armada: lubos na alam ng bawat panig ang sarili nitong board, ngunit mahihinuha lamang nito ang kaayusan ng kaaway mula sa pattern ng mga putok nito. 3

Ang simetriya ng kaayusang ito ang nagbibigay sa laro ng katangian nito. Walang panig na direktang nakakakita sa mga barko ng isa't isa. Sa halip, kailangang bumuo ang magkabilang panig ng isang mental na modelo ng nakatagong grid mula sa kakaunting feedback ng mga tama at sablay. Ang bawat putok ay nagiging datos, ang bawat tama ay nagpapakitid sa mga posibilidad, at ang bawat sablay ay nag-aalis ng teritoryo mula sa pagsasaalang-alang. Ang game coordinator ng engine ang namamahala sa dalawang board na ito, na tinitiyak na naitatala ang mga putok, na wastong naiuugnay ang mga tama, at na nagtatapos lamang ang laro kapag lumubog na ang buong armada ng isang panig. 3

Ginagawa ng deterministikong modelo na maging may-batayang paghahanap ang bulag na panghuhula.

Random na Paglalatag, Deterministikong Mga Patakaran

Bago magsimula ang laro, tinatawag ng engine ang randomFleet upang ilatag ang mga barko ng AI sa random na paraan. Ang pagiging random na ito ay hindi arbitraryo; ito ay may seed, na nangangahulugang ang isang partikular na halaga ng seed ay palaging magbubunga ng parehong paglalatag. Ang seeded na determinismong ito ay isang desisyon sa disenyo na ginagawang maaaring ulitin at masubok ang laro. Kung patatakbuhin mo ang laro gamit ang parehong seed, makukuha mo ang parehong mga paglalagay ng barko, ang parehong pagkakasunod-sunod ng mga desisyon ng AI, at ang parehong kalalabasan. Mahalaga ang katangiang ito para sa pag-debug at para sa pag-unawa kung paano kumikilos ang AI sa iba't ibang kondisyon. 3

Kapag nailatag na ang armada, ang mga patakarang namamahala sa laro ay nakatakda at deterministiko. Hindi nagpapagulong ng dais ang AI, at hindi nagpapasok ng pagiging random ang engine sa kalagitnaan ng laro. Ang bawat desisyong ginagawa ng AI ay sumusunod sa modelo ng probabilidad na pinananatili nito, at ang bawat putok na ipinapaputok mo ay naitatala at sinusuri. Ang tanging pinagmumulan ng pagkakaiba-iba ay ang seed na nagtatakda ng paunang paglalagay ng armada. Nangangahulugan ito na ang laro, sa huli, ay isang palaisipan: dahil sa mga hangganan ng mga patakaran at sa feedback mula sa mga putok, mahihinuha mo ba ang nakatagong kaayusan bago mahinuha ng AI ang sa iyo? 3

Pagpapaputok ng Putok

Kapag pumutok ka, itinatala ito ng engine sa target na board at sinusuri kung tumama o sumablay ang putok. Ginagawa ito sa pamamagitan ng fire function, na nag-a-update sa estado ng board at nagtatakda ng kalalabasan. Ang isang tama ay nagmamarka sa cell bilang inookupahan ng isang barko, habang ang isang sablay ay nagmamarka rito bilang bakanteng tubig. Pagkatapos ay sinusuri ng engine kung ganap nang lumubog ang barkong naglalaman ng cell na iyon sa pamamagitan ng pagsusuri sa lahat ng cell nito. Kung natamaan na ang lahat ng cell ng isang barko, lumubog na ang barko, at ipinapabatid ang impormasyong ito sa magkabilang panig. 3

Ang kondisyon ng panalo ay simple ngunit makabuluhan. Nananalo ang isang panig kapag lumubog na ang lahat ng barko ng kalaban. Sinusuri ito sa pamamagitan ng allSunk function, na tumitingin kung ganap nang natamaan ang bawat barko sa board ng kalaban. Agad na nagtatapos ang laro kapag natugunan ang kondisyong ito. Ang katangiang lahat-o-wala ng kondisyon ng panalo ay nangangahulugang mahalaga ang bawat putok, at na ang presyur na mabilis na lubugin ang mga barko ay binabalanse ng pangangailangang iwasang maibunyag ang sarili mong kaayusan. 3

Nanghuhuli ang AI batay sa likelihood at tinatapos ito sa pamamagitan ng pagtarget.

Ang Engine ng Probabilidad

Ang kalaban sa larong ito ay hindi isang simpleng random na tagapaputok. Ito ay isang AI na nagta-target batay sa probabilidad, na tumitimbang kung gaano kalamang na may barko sa bawat nakatagong cell. Pinananatili ng AI ang isang modelo ng probabilidad ng grid ng kaaway, na ina-update ito habang pumuputok at tumatanggap ng feedback. Ang mga cell na hindi maaaring maglaman ng barko dahil sa mga hangganan ng paglalagay ng mga natitirang barko ay minamarkahan bilang malabong, habang ang mga cell na kinakailangang maglaman ng barko upang magkasya ang mga natitirang paglalagay ay minamarkahan bilang malamang. Pagkatapos ay pumuputok ang AI sa cell na may pinakamataas na probabilidad, na ginagawang may-kaalamang paghahanap ang bulag na panghuhula. 3

Ang modelong ito ng probabilidad ay nakabatay sa matematika ng likelihood, kung saan inilalarawan ang mga pangyayari sa pamamagitan ng mga bilang sa pagitan ng zero at isa 2. Ang probabilidad na zero ay nangangahulugang hindi maaaring mangyari ang isang pangyayari, habang ang probabilidad na isa ay nangangahulugang tiyak itong mangyayari. Ginagamit ng AI ang mga numerikong paglalarawang ito upang gabayan ang mga putok nito, na pinapaboran ang mga cell kung saan pinakamataas ang probabilidad na makahanap ng barko. Ang paraang ito ang nagtatangi sa AI mula sa isang purong random na tagapaputok at nagbibigay rito ng katangiang gawi nito sa panghuhuli.

Panghuhuli at Pagtarget

Maaaring ilarawan ang gawi ng AI sa dalawang yugto: panghuhuli (hunt) at pagtarget (target). Sa yugto ng panghuhuli, hinahanap ng AI ang mga barko sa pamamagitan ng pagpuputok sa mga cell kung saan pinakamalamang na nakalagay ang mga hindi pa natutuklasang barko. Ito ay isang malawak na paghahanap na naglalayong matagpuan ang unang kontak sa mga barko ng kaaway. Kapag may naitalang tama, lumilipat ang AI sa yugto ng pagtarget, kung saan tumutuon ito sa mga kalapit na cell ng tama upang tapusin ang paglubog sa barkong iyon. Ang dalawang-yugtong paraang ito ay sumasalamin sa paraan ng paglapit ng mga taong manlalaro sa laro: hanapin muna ang mga barko, pagkatapos ay lubugin ang mga ito. 3

Ang paglipat sa pagitan ng panghuhuli at pagtarget ay itinatakda kung ang huling putok ay tama o sablay. Kung sumablay ang huling putok, bumabalik ang AI sa mode ng panghuhuli at naghahanap ng mga cell na may pinakamataas na probabilidad. Kung tumama ang huling putok, pumapasok ang AI sa mode ng pagtarget at pumuputok sa mga kalapit na cell ng tama. Ang simpleng patakarang ito, kasama ang modelo ng probabilidad, ay lumilikha ng isang magkakaugnay na estratehiya na nagbabalanse ng paggalugad at pagsasamantala. Ginagalugad ng AI ang grid upang makahanap ng mga barko at sinasamantala nito ang kaalaman nito sa isang tama upang mahusay na lubugin ang barkong iyon. 3

Tatlong antas ng lakas ng hirap ang nagtatakda sa pag-uugali ng AI.

Tatlong Antas ng Lakas

May tatlong antas ng lakas ng hirap ang AI na nagtutuon sa gawi nito. Nakakaapekto ang mga antas na ito sa kung paano tinitimbang ng AI ang mga probabilidad at gumagawa ng mga desisyon. Sa mas mababang antas, maaaring mas maraming pagkakamali ang AI o hindi gaanong agresibo sa pagtarget nito. Sa mas mataas na antas, mas pare-pareho ang AI sa mga kalkulasyon nito ng probabilidad at mas walang-awa sa pagtarget nito. Ang pagkakaiba-ibang ito ng antas ay nagbibigay-daan sa mga manlalaro na makahanap ng antas ng hamon na angkop sa kanila, mula sa kaswal na paglalaro hanggang sa seryosong kompetisyon.

Ang eksaktong implementasyon ng mga antas na ito ay nasa bahaging AI ng engine, ang SalvoAI class. Binabago ng mga antas ng hirap kung paano binibigyang-kahulugan ng AI ang modelo ng probabilidad at kung paano nito binabalanse ang paggalugad laban sa pagsasamantala. Ang disenyong ito ay nagbibigay-daan sa AI na maging kapwa abot-kaya para sa mga kaswal na manlalaro at mahamon para sa mga bihasa, nang hindi binabago ang mga pangunahing mekanika ng laro. 3

Sonar Ping

Sa ibabaw ng mga klasikong patakaran ay may isang bagong twist: ang sonar ping. Ang kakayahang ito ay nagbibigay-daan sa isang panig na ibunyag ang isang 3×3 na readout ng grid ng kaaway kapalit ng putok sa turnong iyon. Ibinubunyag ng sonar ping kung ang bawat cell sa 3×3 na lugar ay may barko o bakanteng tubig. Maaaring napakahalaga ng impormasyong ito para sa pagpapakitid ng lokasyon ng mga barko, ngunit may kapalit ito: mawawala ang putok mo sa turnong iyon. 3

Ang desisyong gamitin ang sonar ping ay isang estratehikong desisyon. Kailan sulit ang impormasyon sa halaga nito? Kung nahihirapan kang makahanap ng mga barko, maaaring ibigay ng sonar ping ang pagbabagong kailangan mo. Kung malapit ka nang makalubog ng barko, maaaring masyadong mataas ang halaga ng pagkawala ng iyong putok. Nagdaragdag ang sonar ping ng isang patong ng pamamahala ng yaman sa laro, na pinipilit ang mga manlalaro na timbangin ang halaga ng impormasyon laban sa halaga ng pagkilos. 3

Ang paglipat ay isang depensibong opsyong minsanan lamang.

Paglipat na Isang Beses Kada Laro

Isa pang twist sa mga klasikong patakaran ay ang paglipat na isang beses kada laro. Maaaring ilipat ng bawat panig ang isa sa sarili nitong mga barko nang isang beses sa buong laro. Ang depensibong pag-iwas na ito ay hindi gumagastos ng turno, na nangangahulugang maaari kang maglipat at pumutok pa rin sa iyong turno. Ang kakayahang maglipat ay nagbibigay-daan sa iyo na ilayo ang isang barko sa panganib kapag nanganganib ito, o ilipat ito sa isang lokasyong mas madaling ipagtanggol. 3

Ang kakayahang maglipat ay isang opsyong minsanan lamang, kaya napakahalaga nito. Kailan mo ito dapat gamitin? Kung malapit nang lumubog ang isang barko, maaari itong iligtas ng paglipat. Kung tiwala ka sa iyong kasalukuyang posisyon, maaaring aksaya ang paglipat. Ang desisyong maglipat ay isang estratehikong desisyon na nangangailangan ng maingat na pagsasaalang-alang sa kasalukuyang estado ng laro at sa mga malamang na kilos ng iyong kalaban. 3

Isang Putok Bawat Turno

Sa ilalim ng lahat ng mekanikang ito ay ang klasikong patakaran ng isang putok bawat turno. Ang bawat panig ay pumuputok ng eksaktong isang putok bawat turno, nang salitan. Ang patakarang ito ang nagtatatag ng ritmo ng laro at tinitiyak na pantay ang pagkakataon ng magkabilang panig na kumilos. Ang patakarang isang-putok-bawat-turno ang gumagawa sa laro na tagisan ng talino sa halip na karera ng bilis. 3

Ang klasikong patakarang ito ang nag-uugat sa laro sa tradisyon ng Battleship, isang larong panghuhula na uring-estratehiya para sa dalawang manlalaro na nilalaro sa mga may-guhit na grid kung saan ang armada ng bawat manlalaro ay nakatago sa kalaban 1. Ang patakarang isang-putok-bawat-turno ang gumagawa sa laro na pagsubok ng paghihinuha at probabilidad sa halip na pagsubok ng mga repleks. Simpleng patakaran ito, ngunit ito ang nagbibigay sa laro ng katangian at hamon nito.

Ginagawang masusubok ang laro ng purong determinismo.

Seeded na Determinismo

Ang engine ay puro at seeded-deterministiko, na pinapaandar ng sarili nitong seeded na random-number generator. Nangangahulugan ito na ang bawat aspeto ng laro ay itinatakda ng halaga ng seed na ibinibigay sa simula. Sa parehong seed, palaging magbubunga ang laro ng parehong pagkakasunod-sunod ng mga pangyayari, mula sa paunang paglalagay ng armada hanggang sa huling putok. Ang katangiang ito ang gumagawang masusubok ang laro, dahil maaaring ulitin at suriin ang parehong senaryo. 3

May mga implikasyon din ang seeded na determinismo sa pag-unawa sa laro. Kung nais mong maunawaan kung paano kumikilos ang AI sa isang partikular na senaryo, maaari mong patakbuhin ang laro gamit ang isang tiyak na seed at obserbahan ang kalalabasan. Kung nais mong subukan ang isang partikular na estratehiya, maaari mong patakbuhin ang laro nang maraming beses gamit ang parehong seed at tingnan kung paano ito gumaganap. Ang kakayahang ulitin na ito ay isang mahalagang katangian para sa mga manlalaro at mga developer.

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