13.09.2026

MilSim

Simulācijas sistēmas Lēmumu sistēmas Spēļu arhitektūra

Kara spēle, lai pētītu, kā MI varētu prognozēt situāciju kaujas laukā

MilSim ir modulāra komandvadības simulācija, kas veidota ap ierobežojumu, kuru lielākā daļa stratēģijas spēļu novērš: spēlētājs neredz objektīvo kaujaslauka stāvokli.

Spēlētājs darbojas kā vada komandieris, dod pavēles nodaļām un pieņem lēmumus pēc ziņojumiem, kas pienāk ar kavēšanos, satur ierobežotus novērojumus un simulācijas gaitā noveco. Galvenā mehānika ir atšķirība starp notiekošo un komandiera pašreizējo priekšstatu par notiekošo.

Projekts sākās ar headless simulācijas kodolu, pēc tam izauga par pilnu teksta režīma first playable, JSON scenāriju sistēmu un lokālu pārlūka prototipu ar interaktīvu taktisko karti.

Komandiera aina nav pati realitāte

Parastās stratēģijas spēles nodrošina gandrīz pilnīgu informētību. Sabiedroto un pretinieku pozīcijas ir redzamas, informācija atjaunojas nekavējoties, un pavēli var novērtēt pret kartes patieso stāvokli.

MilSim šādu piekļuvi uzskata par galveno dizaina problēmu.

Simulācijai pieder pilns objektīvais stāvoklis: reālās vienību pozīcijas, slēptie kontakti, apvidus, pavēles un notikumi. Spēlētājs šo stāvokli nekad nesaņem tieši. Role View Layer veido atsevišķu komandiera projekciju, kurā ir tikai pilnvarām atbilstošās vienības, zināmās pozīcijas, piegādātie ziņojumi, novērojumu laiki un ticamība.

Pretiniekam objektīvajā stāvoklī ir iekšēja entītijas identitāte. Komandiera ainā tas parādās kā kontakta pēda ar citu identifikatoru. Tādēļ marķieris nozīmē, ka konkrētā vietā un laikā kaut kas tika novērots, nevis to, ka pretinieks noteikti joprojām atrodas tur.

Šī atšķirība padara nenoteiktību par sistēmas noteikumu, nevis vizuālu dekorāciju. Pareizs lēmums var balstīties uz informāciju, kas novērošanas brīdī bija precīza, bet līdz piegādes brīdim jau ir mainījusies.

Vispirms headless kodols, pēc tam saskarne

Pirmais tehniskais risks bija informācijas modelis, nevis grafika. Tāpēc izstrāde sākās ar deterministisku C# un .NET 10 kodolu, kas nav atkarīgs no klienta.

Arhitektūra nodala objektīvo simulāciju, spēlētāja komandas, automatizētu scenāriju izpildi, testus un attēlojumu atkārtoti lietojamos moduļos. CLI, headless runner un pārlūka klients izmanto vienus domēna noteikumus, nevis ievieš atsevišķas kustības, atklāšanas, ziņošanas vai vērtēšanas versijas.

Komandas ceļš ir skaidri noteikts:

Spēlētāja pavēle
-> pilnvaru un maršruta pārbaude
-> objektīvais simulācijas stāvoklis
-> kustības un atklāšanas notikumi
-> aizkavēta ziņojuma dzīves cikls
-> komandiera Role View
-> CLI vai pārlūka klients

Notikumu žurnāls
-> objektīvs replay
-> pēcdarbības salīdzinājums

Simulācijas laiks virzās diskrētās taktīs, nevis pēc sistēmas pulksteņa. Notikumi saņem sakārtotus secības numurus, un viens sākuma stāvoklis ar vienām komandām rada vienu rezultātu. Tas padara pilnus izspēles ciklus reproducējamus un ļauj pārbaudīt kļūmes bez ekrāna renderēšanas.

Pilns first playable cikls

Apstiprinātais teksta MVP izmanto apzināti nelielu scenāriju: vada komandieris pārvalda trīs nodaļas 20 reiz 20 šūnu režģī. Spēlētājs saņem uzdevumu, izpēta pašreizējo komandiera ainu, plāno kustību, dod pavēli, virza laiku, saņem kontaktu ziņojumus un pabeidz misiju ar vērtējumu, pēcdarbības analīzi un objektīvu replay.

Ziņojumam ir savs dzīves cikls:

Observed -> Created -> Sent -> Delayed -> Delivered
                                      -> Expired

Novērošanas, izveides, plānotās piegādes un faktiskās saņemšanas laiks tiek glabāts atsevišķi. Tādēļ saskarne var parādīt ne tikai ziņoto pozīciju, bet arī informācijas vecumu un statusu.

CLI nodrošina pilnu spēles ciklu ar komandām uzdevumam, mērķiem, statusam, kartei, maršruta priekšskatījumam, kustībai, laika virzīšanai, ziņojumu iesūtnei, pavēļu vēsturei, kopsavilkumam, pēcdarbības analīzei un replay. Apmācība, kontekstuāli nākamie soļi, leģenda, iebūvēta demonstrācija, scenāriju saraksts un automātiska MVP pārbaude ļauj izspēlēt simulāciju bez koda bāzes lasīšanas.

Apvidus, maršruti un atkārtoti lietojami scenāriji

Sākotnējais kustības modelis izauga par apvidu ņemošu plānošanu. Atklāts lauks, ceļi, nelīdzens apvidus un bloķētas šūnas ietekmē pārvietošanās laiku, maršruta derīgumu, redzamību un atklāšanas varbūtību.

Maršruta priekšskatījums aprēķina ierašanās laiku, nemainot simulācijas stāvokli. Pavēles ar waypoint pirms iesniegšanas pārbauda visu vairāku posmu maršrutu un pēc punkta sasniegšanas automātiski izdod nākamo posmu. Bloķēts apvidus pārtrauc redzamības līniju, bet nelīdzens apvidus apgrūtina kontakta atklāšanu.

Scenāriji tika pārvietoti no hardcoded iestatījuma uz validējamu JSON. Scenārijs nosaka kartes izmēru, sākuma vienības, slēptos kontaktus, apvidu, mērķus, norādes un ieteicamo laika virzību. Trīs iebūvētie scenāriji aptver aizkavēto ziņojumu pamata ciklu, izlūkošanu apvidū un redzamības līnijas darbību.

Scenāriju datu, domēna noteikumu un klienta attēlojuma nodalījums ļauj veidot jaunas misijas, nemainot simulācijas kodolu.

No komandrindas līdz taktiskajai kartei

Teksta režīma laidiens pierādīja komandvadības ciklu, taču nepierādīja, ka jauns spēlētājs spēj saprast sistēmu bez CLI apguves. Nākamais vertikālais griezums ieviesa lokālu ASP.NET Core servisu un pārlūka klientu.

Pārlūks nodrošina scenārija izvēli, sesijas vadību, interaktīvu taktisko režģi, nodaļas un galamērķa izvēli, maršruta priekšskatījumu, kustības un takts vadību, misijas progresu, ziņojumu iesūtni, pavēļu vēsturi, kopsavilkumu un pēcdarbības analīzi.

Agrīnās versijas rādīja pārāk daudz konsoles struktūras un paslēpa svarīgos mērķus zem kartes. Spēles testēšana pārvietoja misijas stāvokli un nākamo darbību uz primāro skatu, pievienoja fit-to-view un mērogošanu, padarīja sabiedroto marķierus atlasāmus, precizēja kustības darbības un nodalīja pašreizējo rezultātu no vēstures.

Vizuālā karte joprojām saņem tikai Role View. Tā neielādē objektīvās pretinieka pozīcijas, lai pēc tam tās paslēptu ar CSS. Viena informācijas robeža darbojas gan teksta, gan grafiskajā klientā.

Arhitektūra aizsargā nenoteiktību

Vairākas robežas uztur simulācijas godīgumu.

Objektīvie DTO ir nodalīti no spēlētājam paredzētajiem DTO. Truth-leak testi nepieļauj iekšēju pretinieka identitāšu, objektīvā replay datu un neierobežota simulācijas stāvokļa nonākšanu spēlētāja atbildēs. Komandvadības pilnvaras tiek pārbaudītas pirms pavēle nonāk simulācijā. Jauna informācija maina komandiera projekciju tikai pēc attiecīgā ziņojuma piegādes.

Notikumu žurnāls nodrošina gan deterministisku replay, gan pēcdarbības analīzi. Spēlētājs var salīdzināt no pieejamās informācijas pieņemtos lēmumus ar objektīvo notikumu secību, nedodot dzīvajam komandiera skatam piekļuvi šai patiesībai.

Šī arhitektūra ir izmantojama plašāk par vienu militāru spēli. Objektīvā stāvokļa un lomai ierobežotas uztveres atšķirība parādās incidentu pārvaldībā, loģistikā, operacionālajos rīkos, aģentu novērtēšanā un jebkurā lēmumu sistēmā, kur dati pienāk novēloti vai šķērso pilnvaru robežu.

Pierādījumi un pašreizējās robežas

Tīrais committed baseline tika atkārtoti pārbaudīts 2026-09-13. Sekmīgi izpildīti visi 143 automatizētie testi. Web projekts veiksmīgi tika uzbūvēts, abi pārlūka JavaScript faili izturēja sintakses pārbaudi, un HTTP smoke test izveidoja sesiju, ielādēja visus trīs iebūvētos scenārijus un atgrieza paredzēto 400 šūnu karti.

Apstiprinātais laidiens ir First Playable MVP v1. Tas aptver pilnu teksta komandvadības ciklu, bet īstenotais pārlūka GUI joprojām atrodas review stadijā.

Pašreizējā izstrāde pēta engagement pavēles, kaujas iznākumus, detalizētākus kontaktu stāvokļus, distances un redzamības noteikumus, militāros simbolus un šķēršļus apejošu ceļa meklēšanu. Šie eksperimenti netiek pasniegti kā izlaista funkcionalitāte. Svaigs neapstiprinātās darba kopijas tests ietvēra 151 testu: 140 bija sekmīgi, bet 11 zināmi kritieni atspoguļo mainīgo maršrutu, kontaktu un CLI uzvedību. Pārbaudītais committed baseline paliek zaļš.

MilSim vēl neietver pretinieka AI, multiplayer, save/load, scenāriju redaktoru, nobriedušu ieroču, zaudējumu vai morāles modeli, elektroniskos traucējumus, iepakošanu vai publisku izvietošanu.

Mana loma

Es definēju produkta koncepciju un MVP robežu, izstrādāju domēna un informācijas modeli, īstenoju simulācijas kodolu, CLI, scenāriju sistēmu un pārlūka prototipu, kā arī izveidoju automatizēto un end-to-end pārbaudi ap tiem.

Darbs apvieno produktu dizainu, sistēmas arhitektūru, C# un .NET izstrādi, pārlūka UX, testu dizainu, spēles testēšanu, backlog pārvaldību un arhitektūras dokumentāciju. Katra iterācija tika organizēta kā vertikāls griezums, kam bija jāpievieno pārbaudāma komandvadības pieredzes daļa, nevis tikai jauna tehniska abstrakcija.

MilSim parāda ceļu no abstraktas mehānikas līdz strādājošai lēmumu sistēmai: objektīvais stāvoklis paliek aizsargāts, nenoteiktībai ir skaidra struktūra, vairāki klienti izmanto vienu deterministisku kodolu, un katru publisko apgalvojumu ierobežo reproducējami pierādījumi.