PDA

Виж пълната версия : Виртуалното бойно поле



Сун Дзъ
21-04-2012, 11:27
Играта наближава и аз все повече си мисля за реалните битки, и начина по който ще се разиграят.
Ще ми се да опитвам да хвана алгоритъма по който ще се отчита изхода от всяко стълкновение.
Да вземем примерно един квадрат от тактическата карта с размер 30х30 километра и някъде вътре квадрата се пресича от границата между противниците.
Да приемем, че ние имаме три оръжия, противника също три.
И трите наши оръжия са нападателни (три авиационни), а на противника - три наземни ( две отбранителни ПВО и едно нападателно РСЗО например). Също така противника в съседните три квадрата има по още три от същите оръжия, но те имат далекобойност само на 1/2 заради разстоянието плюс още две две отбранителни ПВО с голяма далекобойност за всичките разглеждани квадрати.
По този начин примерният квадрат от тактическата карта с размер 30х30километра се отбраняваот 10 ПВО оръжия, от които 4 могат да поразят и нашият носител (самолет/хеликоптер), и атакуващата бомба/ракета. Останалите 6 ПВО оръжия имат далекобойност само за атака срещу бомбата/ракетата.
Примерната задача на нашето съединение е да разруши тяхната РСЗО.
Приемам, че всяко съвременно високоточно оръжие (наше и тяхно) има 90% шанс за поразяване на целта.
Логически тогава за сигурно поразяване на една цел ще трябва да пуснем 2 бомби/ракети.
Но противника има 10 ПВО оръжия с по 2 ракети например. Това са 20 ракети, които по обратната логика могат да свалят 10 наши бомби/ракети. Тогава ако ние пуснем 12 бомби/ракети би следвало на 100% да успеем да разрушим тяхната РСЗО.
Но това е в случай, че ПВО оръжия обстрелват само ракетите, но не и носителите.
За да избегнем свалянето на самолет/хеликоптер значи трябва пуска на бомбите/ракетите да сеизвърши извън обсега на ПВО-то на противника - квадрат и 1/2 от картата.
Как мислите дали подобни сметки ще са удачни ? :unsure:

Кухулин
21-04-2012, 19:24
Според мен няма начин да се влезе в такива детайли. Първо, обектите са много. Второ,сметките са страшно сложни, практически са невъзможни без специална техника. Ако аз бях посредник, щях да подходя различно:

1) изисквам подробен план за нападение;
2) изисквам подробен план за отбрана;
3) преглеждам подробно характеристиките на техниката и съответните коефициенти;
4) преглеждам подробно всички глобални и локални фактори с отношение към боя;
5) правя анализ на боя;
6) ако е нужно, обсъждам детайлите с всяка от двете страни поотделно;
7) излизам с решение относно изхода на боя.

Демек, за всеки отделен бой щях да взимам субективно решение въз основа на максимална информираност и безпристрастност. Иначе не виждам как може да стане работата.

Изключение може да се направи за по-простите атаки, които се смятат сравнително лесно. Примерно 20 ракети нападат ескадра.

gollum
21-04-2012, 23:38
О, да, в подобни детайли може да се влиза в един-единствен случай - ако вместо цяла война (или дори операция) имаме само едно сражение, а ходовете са 5-10 минути всеки. Това ще е тактическа симулация (също интересна задача за разработване).
Към оперативните игри има два възможни (според мен) подхода: прост и сложен. Не бих казал, че някой от двата е по-достоверен, разликата е, че първият не изисква никаква специална помощ (може да се свърши на ръка, в ексел, разбира се, малка програмка би била от помощ), вторият изисква да се направи програма, която да смята сраженията. Аз избрах втория, защото мие по-интересен към момента (с първия съм се занимавал повече).

ОПРОСТЕН ВАРИАНТ
Всеки тип "сила" (т.е. пехота, танкове, бронетехника и прочее) се изразява в боен коефициент (срещу различните войскови родове: бронетехника, пехота, артилерия, ПТУР и т.н.), който се модифицира според тактическите обстоятелства на сблъсъка, т.е. офанзивен, дефанзивен и прочее. След това допълнително се модифицират според местността.
Това позволява числеността или организацията на съответното ниво - бригада, да се превръща в числов боен коефициент според условията на сблъсъка, като това коя част с кой от параметрите ще се използва се определя от състава на противника.
След това се смятат параметирте и се получава съотношение на силите. Към него се прибавя преценката на посредника за тактическата позиция на всяка от страните под формата на процентна добавка и се хвърля зар за случаен фактор (+-10%) за всяка от страните. Получават се две числа, изразяващи съотношението на силите на двете страни.
Загубите се изчисляват по таблица, която е съставена на базата на възможните съотношения (1 към 1, 1 към 2, 1 към 3 и прочее, естествено, с междинни степени) и са пропорционални от бойния коефициент (затова се пази по типове).
Освен загуби, това дава и резултат.
Естествено, тази схема може да се усложни допълнително ако се добави организираност (модифицира бойните коефициенти след като са сметнати) и "боен дух" (влияе на възможния резултат след изчисляване на загубите).
Разбира се, изчисляват се бойните коефициенти само за участващите директно в сражението сили, с добавка за артилерия и ВВС.
Положителната страна е простотата. Със сравнително проста програма може много да се ускори. Отрицателната е в сложността да се изразят някои по особени видове бойно взаимодействие.
Принципно този вариант го има в още по-проста форма: директно се задават типове единици, всяка със собствен коефициент срещу всеки друг тип.

СЛОЖЕН ВАРИАНТ
Всеки тип въоръжение и снаряжение се описва с поредица от характеристики (уязвимост, бойна ефективност и прочее). До голяма степен прилича на горни вариант, но е по-сложен като структура.
След това се описват участниците от двете страни и тактическите условия на сражението (местност, "строй", т.е. "насоченост" на всяка от страните (офанзивна, дефанзивна и прочее), групови характеристики организираност, боен дух, боеготовност.
След това програмата автоматично смята на фази "огъня" на всеки тип срещу избрана (донякъде случайно, донякъде според списък с приоритети) цел, като "върти" сражението на фази (поне 5-10 за всяка сражение), като в края на всяка фаза обновява с нанесените загуби и промените в бойния дух, организираността и прочее групови параметри, проверява дали едната страна няма да се откаже и прочее.
Накрая дава списък с понесените загуби и достигнатия резултат.
В този случай резултатът може да изгледа за някого по-достоверен и позволява описване на по-сложни ситуации. Ключово е пълното и точно описване на ситуацията (моделиране).
Сложното е да се състави структурата от данни и възможните сценарии и да се напише самата програма. Следващата по ред сложност е да се въвеждат началните данни за всяко сражение (може да се организира някакво взаимодействие с база данни, разбира се, но лично за мен това е малко извън сегашните ми умения; впрочем, въпрос на научаване).

Естествено, може да се постъпи и по предложения от Кухулин метод. Сложността в този случай е натоварването, което пада върху Посредника. При гореописаните методи натоварването е голямо при създаването на структурата от данни и процедурите за обработка, след това е до голяма степен рутина. Намесата на водещия се свежда до правилна преценка и вкарване на ситуацията в модела.
При предложения метод почти няма предварителна работа, но пък преценката на всяко сражение може да се окаже времеотнемаща.

Кухулин
23-04-2012, 02:49
Ключово е пълното и точно описване на ситуацията (моделиране).
От два дена съм се хванал да чета по-задълбочено за ПВО-проблемите - възможностите на различните системи за атака и защита, тактики и прочее. Честно казано, не знам как ще се моделират тези неща. Виждат ми се свръх силите на един програмист, още повече в режим "свободно време".

Субективния вариант е бавен, наистина, но пък ние не бързаме за никъде.

Може би, ако програмките пробачкат на някакъв предварителен етап, няколко теста ще са полезни.

gollum
23-04-2012, 09:40
Виждат ми се свръх силите на един програмист, още повече в режим "свободно време".
Ъъъ, явно съм оставил погрешно впечатление за себе си - не съм програмист (нито по образование, нито по професия). Навремето съм се занимавал малко, а напоследък разширих познанията си по друг повод. Но сравнително прости програмки успявам да скалъпя (да речем, бойният калкулатор за играта на Крылов) и мисля, че това е по силите ми (проблем е свободното време).
Въпросът е, че когато се прави чисто, как да се изразя, числово моделиране, т.е. няма кажи-речи никакво графично представяне (като изключим графи за въвеждане на началните данни и за извеждане на лог на сражението), работата значително се опростява. Естествено, с толкова много данни ще си има нужда от сериозно тестване и лов на бъгове, но е постижимо.


Може би, ако програмките пробачкат на някакъв предварителен етап, няколко теста ще са полезни.
Това е задължително. Нали написах - ще дам възможност на двата отбора да си "поръчат" по 20-30 пробни сражения.


Субективния вариант е бавен, наистина, но пък ние не бързаме за никъде.
Въпросът е, че в крайна сметка отнема повече време, особено ако сраженията са наистина много. За част от това време може да се направи програма, която да отмени голяма част от механичната работа, а на посредника остава да влияе на ситуацията с няколко входни параметъра. Главният проблем е, че когато боят се разгори, ще има твърде много сражения за смятане и обикновено на този етап игрите се разтеглят и спират. Примерно, да прецениш субективно 2-3 сблъсъка за 203 дни е постижимо. Обаче 40-50 дори и за седмица или две е невъзможно.
Ако успея да автоматизирам нещата така, че само да вкарвам параметрите, то вероятно ще е възможно играта да се смята. Вярно, още един посредник е за предпочитане, главно за смятане на "засичанията" при движението на единиците.

Да обобщя: може би ти се вижда много сложно, защото мислиш, че аз ще смятам всеки пуск на ракета и прочее, но аз съм далеч от тази мисъл - наистина подобно нещо би изисквало да се напише пълноценна симулативна игра, а това е над възможностите ми (поне като свободно време, може и и инак).
Ако се действа по опростения вариант цялата работа може да се свърши за по-малко от седмица. Главният недостатък на този вариант не е в достоверността, както отбелязах, а атмосферен. Повечето играчи биха предпочели да "играят" с реални войници, танкове и прочее и съответно да получават "загубите" в такъв режим. Докато този вариант е с абстрактна "бойна ефективност", т.е. при него може да се зададат единиците като комбинация, от танкове, бронетранспортьори, пехота и прочее, след това структурата да се "преведе" в боен потенциал, но обратното ще е сложно (и много ще усложни модела), т.е. загубите ще са в боен потенциал. Точно по тази причина се насочих към сложния вариант, при който през цялото време се работи с "реални" единици.
Когато сраженията се смятат като сблъсъци на "високо ниво", отпада нуждата от проследяване на всеки отделен изстрел и прочее: интересуват ни общата ефективност и възможности.
В този смисъл, артилерията, авиацията, ПВО-то, ПТО-то - всички те са добавки/отнемания от бойната ефективност и ще се смятат точно по този начин.
Т.е. всяка отделна "система" въоръжение (като се започне от простия пехотинец с автомат) се описва чрез няколко прости механични" параметъра като ефективност в атака/отбрана и срещу конкретни типове цели (бронирани, небронирани, въздушни (самолети/вертолети), морски), след което се описва ефективност в конкретна местност. Това е "базата", която дава какво може да се постигне в конкретните условия.
След това идва взаимодействието, т.е. "добавки", които дава пехотата, ако съпровожда бронетехника (и обратното), и прочее, т.е. кумулативни бонуси за използване на комбинирани сили.
После идват груповите характеристики като качество на подготовката, организираност (симулира качеството на вътрешната комуникация и командване) и боеготовност (тук основна роля играе боекомплекта и горивото). След това идва бойният дух, който влияе на "волята за сражение" (т.е. кога единицата ще се пречупи и ще отстъпи - при какво ниво на загуби).
Съвкупността от тези параметри дава бойната ефективност на задействаните в сражението единици.
Влиянието на играча се свежда до това да определи диспозицията и състоянието на единицата, от което тя влиза в сражение. Последното се отнася до това колко време за подготовка и в каква посока ще бъде осигурено. Логично, времето за подготовка на отбраната повишаване устойчивостта и "щетата" на единицата в отбрана. Времето за подготовка на атаката осигурява по-висока ефективност на силите в атака. Разузнаването с бой или специални средства позволява да се нанесе по-висока "щета" на огневата система на противника. И прочее.
Т.е. вие ще влияете като определяте движенията и най-общо харчите основната си "валута" - времето.
Моята работа ще е да въведа точно параметрите на единиците в калкулатора и да добавя своята преценка под формата на мнението ми за "позиционното" и "тактическо" преимущество на всяка от страните. Тези параметри пряко влияят върху бойната ефективност, получена до момента на основа на останалите фактори. Така хем аз имам възможност да влияя субективно, хем по-голямата част от изчисленията се правят автоматично, което ми спестява време в хода на самата игра, за сметка на време изгубено за разработка.
Случайният фактор може да бъде въведен в системата като "плоско" върху бойната ефективност, така и "под шапката" като вариация на нанасяната "щета" (между някакъв минимум и максимум или при определен брой хвърляния за "щета") и след това като вариация в понесените загуби. Или само в рамките на единия етап.
Да се върна на въпроса на Сун Дзе в началото на темата. Задължително (за мен) в подобна система трябва да присъства случаен елемент. Така че едва ли ще е възможно да се каже със сигурност кое е "остатъчно" или "сигурно". Грубо казано, ако имаш задействани повече сили от противника (с отчитането на коефициентите за състоянията), то най-вероятно ще постигнеш целта си.
Затова целта на играта не е с някакви хитроумни машинации да се постигне успех в конкретен сблъсък, а да се "очертае" оперативната картина на нещата. А в нея се печели не на тактическо, а на оперативно ниво - т.е. зависи от това къде ще струпате вие повече сили и къде ще успее да осъществи това противника ви. Въпрос на концентрация, марш и снабдяване.