---from 0-0-7

Кто где живет?

1. О ранней разведке замолвите слово…

(В этом разделе рассуждаем о пользе умения определять имена рас по номерам неизвестных групп в пространстве)


«Кто где живет?» - интересный вопрос, не правда ли? Разузнать чего-либо о соседях - святое дело. Не грех и в беседе пойти на хитрость, дабы новости выведать. Гиперкасты и броудкасты, приваты и дроны - вот источники всяческой информации.

Разумеется, послать собственный корабль на разведку и самому взглянуть на то, что делается "там, за горизонтом", самое надежное. Так мы можем черпануть информацию непосредственно. Но - не всегда получается. Особенно в начале, когда дроны еще не долетают до всего, куда бы хотелось.

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

***from Редакции
За пределы редакции репы не гуляли, и не гуляют. И гулять не будут, можете не сомневаться.

Конечно, можно "обстрелять" район вашей геополитической заинтересованности гиперкастами. Ковровое разбрасывание информации кроме преимуществ доступности имеет и недостатки «односторонности».

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

Тем более, закидывать гиперкасты на дальние расстояния, куда и дрон не летает. Очень трудоемко, и даже опрометчиво. Кто его знает, где оно потом аукнется.

А знать-то иной раз сильно хочется. Например, вы учуяли подвох в составе участников (скажем, тень предопределенного альянса вам пригрезилась, или еще что). Так лучше уж пораньше определиться в вопросе: кто-где. И принять своевременные меры, если подозрительные субъекты слишком близко друг от друга оказались. Но так они вам сами это все и сказали. Как говорится: "щаз-з-з".

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

С Т О П !

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


2. Стой! Кто идет?
(Общие сведения о методике определения принадлежности групп)

Методикой такого допроса мы с вами и займемся.

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

Отметим лишь: GVNG ограничивается прорисовкой траекторий и только. А в самой точке нахождения корабликов, кроме количества групп в этой точке, GVNG ничего не показывает. Поэтому мы займемся разбором полетов в верном GComm ("испытанном веками" (С) MapleKSI).

GComm, как уже ясно, дает важную информацию: номер неизвестной группы в пространстве. В том порядке, как они располагаются в вашем репе. Почти всегда. Почему почти? Увидим чуть позже. (Здесь же только поставим зарубку номер 1, ##1).

Неизвестные группы (Unidentified Groups) рисуются по умолчанию розовой точкой. В опциях GComm есть возможность изменения такого цвета, но, как будет ясно из дальнейшего изложения, недостаточная. По моему скромному мнению. (Зарубка ##2).

Тыкаем левой мышиной кнопкой по точке, и видим в информационной панели надпись, примерно такую:
Unidentified Ship Group #160 @ (153.32, 281.34)
3 group(s) in point


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

То есть это: (#160) - номер группы, оказавшейся в точке пространства (153.32, 281.34), где вам видны какие-то неизвестные корабли, и количество групп (3) в этой точке пространства.

Кроме номеров неизвестных групп (Unidentified Ship Group, как пишет вьюер), мы еще будем говорить о номерах групп, принадлежащих конкретной расе. Пожалуйста, обращайте на это внимание: это разные вещи, с непривычки легко запутаться.

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

Понятно, почему такое сохранилась: этим же почти никто не пользуется cо времен game19, когда Fangmoons приделал к GV Дмитрия Гуртяка блок, определяющий по номерам групп имена рас, а сам Chips (Дмитрий Гуртяк) помогал это отлаживать… И блок тот канул в Лету… Так с тех самых времен (1995 год), никто толком этим не занимался.

Конечно, порядковая нумерация неизвестных групп в пространстве - это не то же самое, что номера групп расы. У каждой расы есть своя нумерация групп, вычисляемая сервером по мере их создания.

Тем не менее, эти номера групп (внутреннее, казалось бы, дело каждой расы), «вылазят», «засвечиваются» при наблюдении за ними из дальнего космоса.

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

В целом, нужно знать для начала анализа два факта:
- все номера точек упорядочены по именам рас-хозяев;
- все номера точек упорядочены по номерам групп расы-хозяина (внутри сортировки по именам рас-хозяев).
Весь анализ строится по итерационной схеме: определяем принадлежность групп хоть к какой-то расе, затем смотрим - а какую расу еще можно определить? И так далее, до выяснения всех мест обитания.

Или, пока терпение не кончится.

Получается, центральный момент - выделить группы какой-то выбранной расы. Разумеется, при этом необходимо использовать весь запас разведсведений, какой только доступен, начиная от официальных данных о технологиях (особенно - двигателя) и кончая слухами. Что бы не попасть впросак при определении групп одной расы, разберем подробно именно этот этап методики.

3. Представьте себе,
представьте себе,
простенький он был
(Простейший случай идентификации)

Сначала рассмотрим все на самом простом примере (условном, конечно).

Дано:
Карта, где буквы (a - e) означают планеты соответствующих рас. Звездочкой (*) отрисована ничья планета. Цифры (1 - 7) показывают номера неизвестных групп. Точки (.) изображают трассы групп. Драйв у всех пусть будет 1.0.
---------------------------------------------

  a               b                       d
    .          .    .               6    .
     1        4       3           .     .
       .    .            .     .       .
        .  .              .  .        .
          e.....7..........*         .
                            .       .
                             2     5
                              .   .
                               . .
                                c

---------------------------------------------

Табличка соответствия номеров групп и их владельцев поможет нам разобраться в кухне.

Name    # gr 
a         1
b         2, 3, 4    
c         5
d         6
e         7

Итак, группы все отлетели от планет на расстояние 20, т.е. это первые дроны. Какой турн? Пусть будет 5, какая разница? ;-)

Группы 4 и 3 вылетели с одной планеты (b), логично их отнести к одному владельцу (b), не так ли? Тогда группа 1, скорее всего, собственность (а). Однако, группа 5, летящая с (c), не укладывается в порядковую нумерацию по владельцам. У нас есть группа 2, побывавшая на (*) и полетевшая далее, на (c). Ничего не поделаешь, значит, группа 2 тоже принадлежит не в меру прыткому (b). Тогда и для группы 5 владелец ясен: (c). Группы 6 и 7 хорошо приблудились в кучки номеров, где их не спутаешь с чужими группами, и легко определяются по владельцам (d, e).

Что в этом упрощенном примере может быть не так? Ну, первое: уж если группа с планеты (b) успела прогуляться так далеко, то почему бы и прочим группам не принадлежать тому же (b)? Разумеется, надо выяснить, какие трассы были на предшествующих турнах, и могли ли хозяева прочих планет запускать такие же дроны. А то ведь как бывает: дрон летит с планеты, а у ее хозяина дронов нет :(

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

Разумеется, дружное отсутствие совершенствования двигателей мало вероятно. Да и столь удачное расположение групп (что только ленивый их не определит), вряд ли вам когда встретится. Зато, я надеюсь, принцип должен быть понятен.

Но в жизни так не бывает: группы летят куда попало; драйв все качают буквально так, как хотят. Да и не все расы «вовремя» запускают своих дронов. А некоторые еще и умудряются посылать корабли так, что они попадают в одну и ту же точку пространства, и вы вместо нескольких групп видите только одну.

Безобразие, короче. Поэтому сейчас перейдем к несколько усложненному случаю, и разберем подробней, что может происходить с номерами групп.

4. Здесь вам не равнина.
И здесь,
за камнепадом идет камнепад…
(Уточнение правил нумерации неизвестных групп для одной расы)

К сожалению, неразвитость инструментария ранней разведки даже в таком классическом произведении программистского искусства, как GComm, приводит к тому, что новичков могут сбить с толку некоторые шероховатости в его работе. (Замечание. Кроме GComm с номерами групп умеет работать еще более древний инструмент: GV Дмитрия Гуртяка. Давно не запускал его, но, сколько помню, методика анализа неизвестных групп была такой же).

Какие такие шероховатости?
Вьюер не выводит номера всех групп, находящихся в данной точке пространства. Позиция автора вьюера понятна: ну какая разница? номер первой группы выводится, а зачем остальные? Опять же, будет показано, что остальные тоже желательны. Ставим зарубку ##3, и снимаем зарубку ##1. Именно об этом и говорилось в зарубке ##1, когда указывалось, что «почти всегда в том же порядке, что и вашем репе». В том же-то в том же, да только с пропусками.

Иногда по 2-3 часа тратишь на поиск какой-то «затерявшейся» группы, и все из-за того, что ее номер не выводится вьюером. Теперь в сложных случаях сразу реп открываю, и ищу группы с одинаковыми координатами. Зато потом не надо обыскивать всю карту…

Показывать процедуру анализа буду на конкретном примере: когда и я видел все группы соседа (U), и он любезно согласился дать мне свой реп. Да еще в его репе оказались представлены типичные случаи нумерации групп. А точнее: типичные случаи пропусков в нумерации.

Для удобства восприятия прилагается скриншот. Серый круг обводит то самое место, где рассматривается точка пространства.



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

Соединив сведения расы U и свои, получил табличку, хорошо иллюстрирующую происходящее.

  #группы                #      #    
##   в   Dest R   Fleet неизв. про-    коорд.
    rep                  гр.   пущ     групп

 1   3   120  42,71      158         76.64 283.37
 2   9   105  20,19      159         97.08 277.54
 3  10*  169  16,35 kri  160        153.32 281.34
 4  14   120  25,12      161         94.21 280.78
 5  15    41  13,25      162        112.74 275.91
 6  19** 169  23,45      163        146.22 281.39
 7  23   120   3,06      164        116.73 283.21
 8  28   141  14,1       165        103.74 291.34
 9  30   141  16,08      166        105.42 290.29
10  39*  169  16,35 kri  160   167  153.32 281.34
11  47*  169  16,35 kri  160   168  153.32 281.34
12  55   169  23,55      169        147.21 274.16
13  56** 169  23,45      163   170  146.22 281.39
14  57   169  13,27      171        156.81 277.95

  *  группы принадлежат одному флоту и имеют одинаковые координаты в пространстве
 
  ** группы имеют одинаковые координаты в пространстве

Расскажу о табличке.

Строки просто пронумерованы по порядку (столбец ##).

Потом идут номера групп из репа моего соседа (# группы в rep). Все строки отсортированы мною именно по этим номерам. Это важно. Я их специально отсортировал так для объяснения методики. В репе номера групп каждой расы-соседа идут именно подряд, и именно в том же порядке, как у нее самой группы пронумерованы. Но что бы это предъявить, мне пришлось соединить номера неизвестных групп из своего репа, и номера групп из репа соседа.

Потом идет столбец - планета, куда летит группа, и расстояние до планеты (Dest и R). Это нужно для облегчения поиска группы на карте.

Столбец название флота (Fleet) приведен для иллюстрации факта пропуска номеров неизвестных групп (при объединении групп во флот).

Далее приведен столбец «# неизв.гр.», который из-за пропусков в нумерации получается не последовательным, а с дырками.

Сразу за ним идет столбец с «исправлениями» номеров неизвестных групп (# пропущ.), которые должны бы были показываться вьюером, будь он в этой части не столь заброшенным. :-(
(Это по зарубке ##3).

Последние два столбца - обычные координаты пространства (коорд. групп). Они приведены, чтоб увидеть, как точки с одними и теми же координатами оказываются в совсем разных местах сортировки номеров групп. Меня это сильно впечатлило, когда я в первый раз это осознал.

Для удобства разглядывания эффекта потери номеров неизвестных групп строчки, относящиеся к одной и той же «дыре», отмечены одинаково:

*  - группы принадлежат одному флоту;

** - группы имеют одинаковые координаты в пространстве потому, … что имеют одинаковые координаты в пространстве. И все! Просто хозяева групп «захотели» их так отправить.

Ну хорошо, я имел реп соседа, и знал где искать его группы. А как быть, когда соседских репов нет? (Что есть почти 100% случаев на практике).

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

Например, как у нас, номера идут с 158 по 171, и если туда затесался номер 78, то значит он из другой «сказки». Т.е. не этого соседа, а другого. Какого? Ну, раз номер перед основной нумерацией, значит с именем, идущим по алфавиту раньше.

Где начало и где конец групп от каждого владельца? Это трудно алгоритмизировать в виде плагинов или макросов. Во всяком случае - пока. Ведь основные критерии-то - это кучность, плюс разные расчеты исторического характера о возможности-невозможности попасть группам от расы Х в точку У.

В game19 я на 3-4 турне просил союзников (BumbleBee, Fangmoons, Trusting) отправить самые медленные дроны на максимум расстояния, чтобы облегчить определение принадлежности групп. Пока дрончик-тихоходчик летел, мы по несколько раз передавали его друг другу. Естественно, при изменении владельца номер группы (тихохода), изменялся. Очень, знаете, помогало :)

Например, в game400 имена нескольких рас поменяли, как специально для урока по определению владельцев групп. Теперь в тех же районах треки совсем другими цветами окрашены. :-) (Это я мечтаю, как номера групп вьюеры будут раскрашивать по цветам владельцев сами :)
(Снимаем зарубку ##2).

5. Выводы-рекомендации

Сначала дам самые общие замечания о методике.

 - Определить имена рас на основе одних только номеров неизвестных групп, чаще всего, трудно.

 - Для определения имен нужно использовать историю расы и ее групп (т.е. приходится изучать историю чуть ли не каждого дрона).

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

- «Дорога ложка к обеду», а имена рас и место их жительства важно узнать до 10-12 турна (в обычных партиях). Потом уже и дронами можно нащупать ответ на сабж статьи.

Далее я смело даю рекомендации разработчикам вьюеров и исследователям пространства. :-) На самом деле, если хоть что-то из этого будет реализовано и пригодится, то я буду очень рад. Ведь если наступит, наконец, (благодаря совершенствованию инструмента) облегчение в использовании подобных методик, то и трудоемкость работ снизится. Значит, станет реально этим чаще пользоваться.

Разработчикам вьюеров:

5.0. Конечно, самое-самое важное и желательное дополнение к возможностям вьеров по работе с группами: найти неизвестную группу с заданным номером.

5.1. Показывать все номера групп в точках их дислокации (можно через дополнительное контекстное меню, что ли…).

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

5.3. Реализовать раскрашивание неизвестных групп. Например, в цвета, заданные для рас-хозяев.

5.4. Автоматизировать процедуры идентификации групп. Поскольку весь алгоритм не может быть полностью автоматическим, должен присутствовать диалог для ввода разведсведений о каких-то определенных «внешними» средствами именах владельцев групп. (Внешними - это в отношении автоматизации).

5.5. В развитие 5.4. Импортировать информацию о прибывающих группах из репов союзников и преобразовывать такую информацию в сведения о неизвестных группах. В том числе, проводить соответствующую раскраску.

5.6. Возможности анализа давно нуждаются в развитии. Для Gcomm возможность открывать одну и ту же партию в разных экземплярах программы сильно выручает. Как говорится, остается пожелать того же и другим чемпионам галаксианского программистского искусства.

Исследователям пространства:

5.7. Развитие инструментария анализа групп в пространстве вполне может привести к таким дипломатическим письмам (все, опять же, выполнено на рассматриваемом примере):

***
Привет!
Уважаемый сосед, прошу в качестве оказания научно-консультационной помощи сообщить параметры передвижения ваших групп (находящихся на этом турне в гиперпространстве). Достаточно первой и последней (по величине номера группы в вашем репе).

Со своей стороны сообщаю, что соответствующие мои группы были:

 #в rep   Dest  from    R  
    3     120   196   42,71
   57     169   163   13,27

***

5.8. На поздних стадиях жизни галактики знание правил нумерации групп в пространстве (кроме банального определения того, кто куда полетел), позволяет отвечать на интересный вопрос: «а какая, собственно, группа отправилась от соседа к соседу»? (Это может быть даже очень важно, если дронов сбивают). Вспомним: соотношения в нумерации групп сохраняются.

Поэтому номер группы свежей непробивахи будет больше номера группы старенького колонайзера.




Опубликовано в электроной газете "Galaxy Club" #6  12.04.2004

Подписаться на текстовую рассылку газеты "Galaxy Club" можно здесь:
http://www.galaxyplus.org/mailman/listinfo/galaxyclub

Архив текстовых выпусков газеты "Galaxy Club" можно скачать отсюда:
http://www.galaxyplus.org/pipermail/galaxyclub/

Можно посылать свои мысли по адресу:
galaxyclub@list.ru

Сайт газеты:
http://www.uplanet.ru/GalaxyClub/