Григорий (gest) wrote,
Григорий
gest

Categories:

Игра на реалфизике

- Движок по его правилам ничего не весит, корпус ничего не весит???????
makarovslava (с)


На самом деле, я хотел поговорить о посте gcugreyarea "Я уже джва года хочу такую игру... 2d-экшон, суть такова" "Может ли быть увлекательной игра на реалфизике?"

Все мы время от времени хотим "такую игру". Вон, один мой друг(тм) "джва года" хотел игру, как Navyfield, но про танчики... Так, настраиваемся на серьёзный лад.

Этот пост заставил меня задуматься. Я даже обсуждал его с makarovslava, в августе. Видимо, проще будет озвучивать мысли в хронологическом порядке, или около того.

Или нет.
Тогда в качестве пролога...

"Кроме распределения массы, мы прописываем каждому Кораблю уникальный движок. Движок места и массы не занимает, пожалеем игроков. Это просто параметр. Вернее, три параметра. Скорость истечения, тяга, и тепловыделение. Два первых параметра произвольно выставляются игроком, третий рассчитывается, как произведение двух первых... Если оба параметра высоки - у вас есть практически идеальный движок, быстрый и экономный... только вам приходится его каждые пять минут выключать, чтобы корабль не поджарился".

Видите, и здесь тоже проявляется принцип "выбирай два из трёх". Хороший движок будет либо прожорливым, либо медленным, либо будет быстро перегреваться.

Правда, я чувствую, что фраза "увлекательная игра на реалфизике" - это уже само по себе "два из трёх". Про увлекательную модель на реалфизике я как-то писал - это "Моделирование полёта спутников" от САПР "Сударушка". Честно говоря, я не уверен, что описанное в постинге gcugreyarea тянет хотя бы на один параметр из трёх... но я хочу об этом поговорить!

Чем меня зацепил этот пост?

1. Первым делом, тем, о чём я там упомянул в комментах. В моём любимом - серьёзно, самом любимом - фантастическом романе "Тигр! Тигр!" Альфреда Бестера колонизированные спутники Юпитера вели войну с внутренними планетами (Венерой, Землей, Марсом), в том числе используя межпланетные баллистические ракеты, нацеленные на демографические центры противника. В уникальном произведении "All Tomorrows" Немо Рэмджета, история будущего начинается с аналогичной войны между Землёй и терраформированным Марсом, которая тоже велась при помощи управляемых снарядов и по сути представляла собой одну большую артиллерийскую дуэль. С миллиардными жертвами.

У меня это всё подшито в папку "Объективные законы империализма", где также находится повесть "Пепел" Фёдора Березина. "Объективные законы империализма" гласят, что параллельное существование двух сопоставимых экономических центров неизбежно приводит к войне между ними - войне на уничтожение. В этом смысле, "объективные законы мира" являются довеском и мрачным антиподом "Теории демократического мира" (англ.), гласящей, что демократии не воюют друг с другом. Я бы сказал, что для реального мира большее значение имеет вторая теория, но мы же говорим о фантастике...

И это именно та ситуация, о которой идёт речь у gcugreyarea.

2. В посте упоминаются лазеры, ракеты и космические линкоры. А это и есть моя идеальная модель космооперного боя, с противоречием между пушками и управляемыми снарядами, которое, в свою очередь, порождает "красную" и "синюю" тактику (ставку на пушки и на управляемые снаряды соответственно).

3. "Да, чуть не забыл. Чтобы наши космолёты все не были одноразовыми, необходимо дать им возможность заправляться. Так как построение кораблей-заправщиков потребует решения той же неприятной проблемы стыковки, можно отступить от реализма, и позволить кораблям заправляться рабочим телом на лету. Скажем, в собственной атмосфере, во вражеской атмосфере, и в раскиданных по карте газовых облаках".

Эта фраза вызвала у меня приступ эстетического отвращения. И, по-моему, не только у меня. Облака - это просто плохо. Всё лучше, чем это. Аркадные power-up'ы лучше, чем это. Нерастраченное топливо, вылетающее из взорванного корабля в качестве power-up'а, который потом можно будет подобрать, допустим. И потом, можно сделать кнопку "слив топлива", так и чаемые корабли-заправщики появятся. Они сбрасывают топливо, другие корабли его подбирают.

Но в целом - зачем?! Тут корабли и так одноразовые, по любому! Да, корабль, растративший топливо и не попавший в планету, улетает нахрен. Что тут удивительного? О какой вообще заправке "в собственной атмосфере, во вражеской атмосфере" идёт речь?! У нас с тысячи километров начинается таранная дистанция, по правилам. Если я подведу свой корабль к вражеской планете, я его об неё убью, с целью поднять её температуру. Что является целью игры, собственно. А нафига я буду разгонять свой корабль в сторону своей планеты? Чтобы попытаться автогол забить? Опять же, если у меня медленная скорость относительно вражеской планеты, можно висеть и облучать её лазерами, благо они бесконечные. Но "заправка" здесь никак не будет фигурировать, ни при каких условиях.

4. Вообще, если пробежать глазами то, что там написано, сразу возникает ощущение, что работать это не будет. Как я сказал Макарову, если бы речь шла о реальной игре, непонятно, чем я там должен заниматься, как игрок. Это звучит скучно.

4.1. "[Нужды бегунки масштаба] для изменения скорости течения времени (полёт длится неделями, а сражение может занять секунды)".

Этот пункт сразу исключает игру с другим человеком. Или я хочу, значит, распланировать свою кораблестроительную программу на следующий месяц, а противник хочет поминутно отыгрывать боёвку. Как мы с ним тогда будем договориваться? Это является огромной проблемой даже для стратегических игр с посредником, если там нет жёсткой привязки к тактам.

4.2. В чём вообще суть игры? В том, чтобы построить правильный флот - или в том, чтобы его довести до вражеской планеты? О какой реалистичной физике идёт речь? Что представляет собой тамошний плоский космос?

Ведь это может быть:

а) Подробная модель Солнечной системы, с Солнцем, Меркурием, Венерой, Землёй с Луной и т.д. Все планеты крутятся по своим орбитам, повинуясь законам небесной механики, у всех есть своё гравитационное поле и т.д.

б) Земля и Марс, вращающиеся вокруг Солнца, Земля по внутренней орбите, Марс по внешней. Луна и остальные планеты условно не показаны. Всё ещё можно срезать путь по околосолнечному пространству, разгоняться за счёт солнечной гравитации, атаковать со стороны Солнца (когда не видно засветок кораблей на фоне светила), но при этом Солнце само по себе огромно и сильно греет корабли. Мягко говоря.

в) Земля и Марс вращаются вокруг общего центра, который условно не показан и не обладает какими-либо свойствами.

г) Земля и Марс - две планеты условного "среднего" размера, занимающие два фокуса гигантского эллипса. Расстояние между ними неизменно, вокруг них - пустое пространство, ближайшее расстояние между двумя точками - прямая. Я бы сказал, что это самый "реалистичный" вариант с точки зрения игры.

д) Земля и Марс - это "западная" и "восточная" границы карты. Снаряды, улетевшие в ту или другую сторону, считаются попавшими в планету. Снаряды, вылетевшие за "южную" или "северную" границу, считаются уничтоженными.

4.3. Если сложность в самом полёте - то это просто убивает игру. Легендарную "Посадку на Луну" помните"? Чем она заканчивается для начинающего игрока в первые пятьдесят раз? Правильно, он разбивается о поверхность. Или сжигает всё топливо, пытаясь погасить скорость, а потом падает и разбивается о поверхность. Fun с большой буквы F.

Представим себе размеры игрового поля. "Если два корабля оказываются на расстоянии тысячи километров друг от друга или менее, любой из них может выполнить спецкоманду "идти на таран"". Это позволяет нам разбить поле на условные гексы со стороной в тысячу километров - если в одном гексе оказываются два корабля, они сталкиваются (в том случае, если хотя бы один из них выбрал опцию "таран" - вообще, это должна быть такая галочка в меню). Если вам любопытно, то с точки зрения евклидовой геометрии, площадь такого гекса будет равна... примерно 2,55 миллионам квадратных километров. Расстояние между Землей и Марсом... "Минимальное расстояние от Марса до Земли составляет 55,76 млн км (когда Земля находится точно между Солнцем и Марсом), максимальное — около 401 млн км (когда Солнце находится точно между Землёй и Марсом)". В любом случае, речь пойдёт о десятках (а то и сотнях) тысяч гексов. Это только чтобы прямую дорожку выложить. Размеры планет... стоит уровнять их диаметры, а то будет нечестно, если Марс окажется в два раза меньше. Но в любом случае, это будут мишени шириной в несколько гексов. Посреди сотен тысяч - миллионов - гексов пустоты.

Если это "посадка на Луну", то подавляющее большинство запусков будет кончатся следующим - корабль промахнулся по вражеской планете, бездарно сжёг топливо и покинул Солнечную систему. Вернее, вышел на сильно вытянутую орбиту, без разницы.

О каком строительстве боевых флотов и продуманной стратегии может тогда идти речь? Если я по планете промахиваюсь, как я по вражеским кораблям попаду? Боёвка исключена.

4.3.1. Сразу возникает насущный вопрос - умеет ли компьютер просчитывать траектории? В тексте упоминаются ракеты - неужели предполагается, что я в каждом залпе должен буду вручную управлять каждой ракетой? Если компьютер управляет кораблями не лучше меня, то вражеский флот перестаёт быть проблемой - он также будет мазать на миллионы километров. Очень смешная война. Война двух идиотов, которые научились строить космические корабли, но не научились запускать их в нужном направлении.

Если компьютер считает траектории лучше меня, то пусть он этим и занимается. Это не должно быть проблемой игрока.

Или кого я вообще отыгрываю? Офицера марсианского советского Генштаба, которому выдали бумагу, карандаш и логарифмическую линейку, чтобы он рассчитал параметры флота вторжения?

4.3.2. Отсюда получаем, что существует кратчайшая дистанция между двумя точками. По которой будет следовать тоннаж из точки А в точку Б, и наоборот. А посередине они будут сталкиваться. Такая вот "реалфизика". Кто лучше просчитал параметры своего флота, тот больше тонн довезёт до противника.

4.4. Поэтому я сказал Макарову, что такую схему проще на механике коллекционной карточной игры отыгрывать. Типа патриотичной "Войны". Если принять, что траектории рассчитывает компьютер, то от игрока требуется только подобрать правильную комбинацию из обширного (но конечного) списка возможных юнитов, стратегий и тактических приёмов. Производимый тоннаж - манна, температура планеты - хиты. Межпланетное пространство условно не показано, время сводится к абстрактным ходам.

- Так, позвольте мне небольшой intermission.

Я перечитал пост, и я катался, дойдя до фразы "боль-мень соображающим программистом это лепится за пару суток, насколько я понимаю". Нет, Серая Зона, ты не понимаешь.

Итак, нам нужен движок. Он должен учитывать все эти миллионы километров и месяцы игрового времени. Плюс, включать в себя масштабируемость пространства и времени в тысячи раз (так заявлено в тексте). Это легко? Сколько объектов этот движок должен обсчитывать одновременно? Учитывая, что а) "планеты производят Массу. Обе по десять килограммов в секунду, например. 864 тонны в сутки" б) "количество таких "матрёшек" упирается только в предел делимости (масса кораблей измеряется в килограммах)" - объектов на игровом поле может быть Очень Много.

И да, может быть, я придираюсь, но "Скорость, Ускорение" - это не две переменные, а четыре. Ведь есть же ещё вектор скорости и вектор ускорения. А "Масса" - не константа, а переменная, ведь корабль сжигает топливо во время полёта _и_ отстреливает ракеты. (Или это очень "реалфизика".) То есть, понятно, что у него там есть "Текущее количество топлива" в переменных, но тогда не понятно, из чего вообще масса складывается, если движок по правилам ничего не весит, корпус ничего не весит, масса складывается только из топлива, груза, лазеров и радиаторов, а лазеры, радиаторы и груз (ракеты) - это отдельные пункты.

Помимо этого, нашему несчастному программисту придётся написать код искусственного интеллекта. Который умел бы делать всё, что необходимо уметь делать в подобной игре. Рассчитывать путь до планет, строить необходимые корабли, выбирать ту или иную стратегию и адекватно реагировать на действия игрока.

Плюс, обращает на себя внимание, что gcugreyarea не привёл никаких формул. То есть, их придётся выводить самому программисту. Баланс тоже на нём.

Сколько кораблей может одновременно присутствовать на поле, какой потолок для каждого игрока? Какой будет максимально возможная масса корабля? Какой будет максимально возможная скорость? (Как её набрать, и что произойдёт, если её набрать?)

"Два первых параметра произвольно выставляются игроком, третий рассчитывается, как произведение двух первых". И какие возможны значения? Пять, пять и двадцать пять? В какое ускорение (относительно массы) трансформируется эти показатели, и в какую температуру?

"Корабль считается уничтоженным и снимается с карты, если его температура превысит определённое значение" - какое?

"Кроме того, от температуры напрямую зависит заметность при движении по инерции - радиус, в котором его видят другие корабли и планетарные датчики. При ускорении радиус во много десятков раз выше и пропорционален текущему тепловыделению (скорости роста температуры), а не температуре как таковой". Какой, во сколько?

"Можно потратить часть Массы на радиаторы - они ускоряют снижение температуры". О каких цифрах речь?

"Лазер работает на том же принципе - повышает температуру вражеского корабля, чтобы довести её до точки разрушения. Десять процентов всегда идёт на нагрев собственного корабля. А сколько из девяноста процентов оставшихся идёт на нагрев вражеского - зависит от расстояния". Какое соотношение между нагревом и массой лазеров в килограммах? Какое соотношение между процентами нагрева и дистанцией (в тысячах километров)?

"При этом оба корабля получают существенный прирост температуры, пропорциональный массе и относительной скорости партнёра. Как правило его достаточно для разрушения обоих кораблей, хотя крупный и может иметь достаточно радиаторов, чтобы это тепло сбросить". Как соотносится масса, скорость и повышение температуры при столкновении?

"Атмосфера противника (как и наша) имеет параметр температуры. Она греется, когда в неё влетают корабли (особенно если у них высокая масса и скорость), а также когда её облучают лазерами. Медленнее греется, чем звездолёт, конечно. Зато радиаторов на неё не поставишь. Конечная цель войны - нагреть атмосферу противника до критической температуры и не дать нагреть нашу" - сколько хитов у планеты? До какой температуры её надо нагреть? Каков коэффициент "медленности"? Какой массе и скорости врезающихся в планету кораблей это соответствует?

Проще говоря. Возьмём корабль типа "кирпич":



Да, я старался, рисовал. Этот корабль весит два килограмма и состоит из радиатора (синий квадрат) и топлива (жёлтый квадрат).

Какими ТТХ он обладает, в зависимости от характеристик движка? "Тяга отвечает за ускорение на единицу времени, а скорость истечения - за ускорение на единицу топлива (делённое на общую массу, само собой)". Общая масса - два килограмма, единицу топлива (1 кг, предел делимости) он истратит за единицу времени - какая после этого будет скорость у оставшегося килограмма (радиатора), какая температура, как быстро он её сбросит и за какое время преодолеет расстояние между Марсом и Землёй? (И сколько градусов кирпич добавит Земле, когда рухнет на неё?)

А какие ТТХ будут у более сложного корабля, типа "спичечный коробок"?



Вот, сорок восемь килограммов, на такой корабль можно накопить за пять секунд. Для образности я поделил его на четыре равные части - топливо (12 кг), лазеры (12 кг), радиаторы (12 кг), грузовой отсек - шесть торпед типа "кирпич" (12 кг).

Какие у него свойства? Что изменится, если мы пожертвуем половиной лазеров (или радиаторов) в пользу топлива?

Откуда программист возьмёт эти данные - за двое суток? Сколько времени потребуется для плэйтестинга, а?

5. И тут мы сталкиваемся с настоящей проблемой. Чтобы подобная игра имела смысл, в ней должно присутствовать не менее трёх равно оптимальных стратегий. Именно эта особенность сделала "Камень-Ножницы-Бумагу" вечной игрой. Согласитесь, играть в "Камень-Ножницы" было бы совсем не так весело.

...И когда я обо всём этом рассказывал makarovslava, несколько лет назад, он поддержал меня и сказал, что тот же принцип можно проиллюстрировать на примере трёх основных тактик бессмертной "мотыги" (Magic The Gathering), и подобных ей карточных игр. Это "раш" ("агра", "битдаун") - ставка на дешёвые карты-юниты и снятие хитов с противника за счёт постоянных атак; "комба" - попытка собрать в руке убийственную комбинацию, способную разом решить исход партии; и "контроль" - стремление контролировать карты на столе и на руках. Если я что-нибудь перепутал, извините профана. Короче, "раш" бьёт "контроль", "контроль" бьёт "комбу" (не давая собрать комбинацию), "комба" бьёт "раш".


5.1. Очевидно, что gcugreyarea представлял себе нечто вроде "контроля". Красивые, большие космооперные линкоры - корабли "с большим количеством радиаторов и лазеров, со сбалансированным движком", и с кучей ракет на борту ведут интересную космическую войну на встречных и пересекающихся курсах. Победивший в генеральном сражении флот медленно двигается к планете проигравшего и устраивает ей экстерминатус. Проигравший пытается отсрочить свой конец, бешено клепая на своих орбитальных верфях дешёвые эрзац-корабли, но ему уже ничего не поможет - их сжигают лазерами с той скоростью, с какой он успевает их производить.

(Но стоит отметить, что один момент в модели gcugreyarea вышел весьма удачным. Большие корабли, с большими количеством топлива и радиаторов, могут позволить себе форсированные движки. Чем больше корабль, чем круче его скоростные характеристики.)

...А чем тогда будет "комба"?

5.2. Я сразу же подумал о "раше": напрашивается спам ракетами - максимальное число минимальных одноразовых кораблей.

Честно говоря, его ответ был совсем не в кассу: "Фишка в том, что тут не совсем ясно, какую ракету считать минимальной. Видимо, без радиаторов и лазеров, с минимальной массой и небольшим запасом топлива. Но всё равно таких ракет будет минимум два типа - "ионки", которые ускоряются пару месяцев, но сохраняют управляемость весь полёт, и "снаряды", которые сжигают почти всё топливо на старте, а затем летят по инерции".

Во-первых, "минимальность" определяется по конкретным формулам, заложенным в модель. Если есть формулы, можно высчитать необходимые характеристики.

Во-вторых, какие "ионки"? Игру выигрывает тот, кто _первый_ сожжёт планету противника. Рост температуры, по условиям, зависит от массы и скорости корабля-камикадзе. Отсюда получаем, что снаряд должен лететь как можно быстрее, иначе это напрасная трата тоннажа. Более медленный земной снаряд долетит до Марса позже, чем более быстрый марсианский снаряд долетит до Земли - и снимет меньше хитов. Какой в этом смысл? Опять же, зачем управляемость - снаряды пойдут по оптимальной траектории! Компьютер, не способный рассчитать оптимальную траекторию, позволяющую пройти дистанцию за счёт однократного включения двигателей, не нужен.

/*ворча*/ У Уэллса марсиане добивали до Земли, стреляя из гигантских пушек, установленных на _поверхности_. И попадали, как-то! makarovslava и serb это даже считали, кажется. Слава ещё утверждал, что так можно даже в конкретную точку на поверхности Земли попасть - ну, в пределах сотни километров. Но тут я уже не выдержал и заявил, что он гонит.

5.2.1. К вопросу о Макарове. Я тут представил, как он начал бы выворачивать подобную модель наизнанку. Есть ещё один возможный тип корабля, о котором gcugreyarea не упомянул - разгонная ступень. "Ракета может в любой момент отделиться от корабля-носителя (спецкоманда) при этом у неё будет та же скорость, что и у корабля-носителя в момент отделения". Итак, разгонная ступень - это корабль, состоящий только из топлива и мощного движка (или из топлива и радиаторов, в зависимости о того, что выгоднее). Цель - набор максимальной скорости. Конструкция рассчитывается так, чтобы температура дошла до критических показателей в тот самый момент, когда будет истрачено всё имеющееся на борту топливо. После этого происходит отстыковка, и перегревшаяся разгонная ступень взрывается. Она больше не нужна. (И таких ступеней может быть несколько, представьте себе - правилами это не запрещено, и нигде не сказано, что температура корабля переходит на груз. Да и потом, было бы абсурдно, если бы ракеты взрывались от перегрева в тот момент, когда они отлетают от корабля-матки и впервые включают собственный двигатель...)

Дальше по инерции летит кинетическая боеголовка. Состоящая из одних радиаторов, потому что это одновременно масса и броня. Имейте в виду, что эту штуку нельзя засечь (на карте была видна разгонная ступень - она перегрелась и взорвалась, всё, точка погасла). "От температуры напрямую зависит заметность при движении по инерции - радиус, в котором его видят другие корабли и планетарные датчики. При ускорении радиус во много десятков раз выше и пропорционален текущему тепловыделению (скорости роста температуры), а не температуре как таковой". Наш корабль не ускоряется, и он ни разу не включал двигатель - у него и двигателя-то нет. Это огромный кусок льда.

Ну, зная Славу.. эти тонны кинетической боеголовки будут порезаны на аккуратные шарики по килограмму. Предел делимости. "Хоп! Хоп, хоп! Макаров-стайл! Хоп! Хоп, хоп! Макаров-стайл!" И дальше этот поток массы долетает и тюкается о планету.

Нужно ли говорить, что если для игры тонна кинетических снарядов - это тысяча кораблей, то таранить их бесполезно? А для уничтожения их всех из лазера потребуется произвести тысячу залпов? Плюс, малозаметность. Плюс, предельная скорость.

5.2.2. Всё, что написано в посте, указывает на то, что в этой модели неизбежно будет существовать способ доставить максимальный тоннаж к планете противника с максимальной скоростью, чтобы причинить максимальный ущерб. Тривиальное решение. Не обязательно то, которое я описал - это зависит от конкретных цифр - но оно будет. После того, как один из противников начнёт реализовывать это решение, второй автоматически проиграет. Если он будет тратить ресурсы на оборону, ему конец - всех снарядов он всё равно не перехватит, а пока он будет заниматься обороной, он не будет нагревать вражескую планету. (При желании, кинетические боеголовки могут поиграть с боевыми противоракетными орбитальными станциями во взаимную аннигиляцию - и всё равно остаться в плюсе.) Если же второй игрок решит сам переключиться на ракетный спам, то он уже опоздал, проиграв гонку тоннажа и температур.

5.2.3. Это как если бы вам сказали: "Эту игру выиграет тот, кто сбросит больше мегатонн на вражескую столицу. Можно также строить танковые армии. Вместо части танков можно произвести БМП". А зачем вообще строить танковые армии?!

5.3. Нет, я могу постараться и придумать условный альтернативный вариант. Возможно, существуют такие параметры системы, при которых эффективность лазеров обесценит кинетические боеголовки. Что мы знаем о лазерах? Они бьют далеко - очевидно, сильно дальше дистанции тарана, которая, напоминаю, равна 1000 км. И у них нет дискретной дальности - с повышением расстояния просто падает мощность. Предельная дистанция существует, но она приличная. Лазер обладает бесконечным боезапасом. Мощность лазера зависит от его массы. Нигде не сказано, что дальность зависит от массы (иначе рейдер "с единственным хилым лазером" был бы бесполезен).

В таком случае, может сыграть ставка на "лазерную пыль" - производство предельного количества "минимальных дредноутов". Также известных, как "лазерные кирпичи". Килограмм лазеров (лазер - 1 шт.), плюс необходимые для его _постоянной_ работы радиаторы (чтобы снимать десятипроцентный нагрев от работы килограмма лазеров). Плюс, ионный двигатель (холодный и экономный) с минимальными запасами топлива. И вот это строится на все деньги - десять килограмм в секунду, 600 килограмм в минуту, 36 тонн в час. Сначала "лазерными кирпичами" насыщается всё околопланетное пространство. Чтобы каждый залетевший туда объект получал сотни (тысячи) контактов, аналогичных залпу батареи лазеров соответствующего веса. Постепенно, это облако "лазерной пыли" вытягивается в сторону противника... Ни один корабль в радиусе эффективной стрельбы не выживет, так как быстро перегреется. Попытается маневрировать - перегреется ещё быстрее. А если каждый "лазерный кирпич" настроить на "таран", рой минимальных кинетических боеголовок будет быстро стачиваться (за счёт множества отдельных попаданий и взаимной аннигиляции). К тому моменту, когда облако достигнет вражеской планеты... а это будет очень нескоро... программа сойдёт с ума и крашнется. Но, в общем, врага медленно вскипятят.

Вы будете смеяться, но у меня к этому посту даже плашка "продолжение следует" имеется :).
Tags: космоопера
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 6 comments