ZX Power #04
09 января 2000
  Игры  

Игротека - SNAKE-HELP1. Советы по игре Snake.

<b>Игротека</b> - SNAKE-HELP1. Советы по игре Snake.
"Snake" - история создания 
    и особенности игры 

(С) 1999, Пелепейченко Александр 
__________________________________________ 

               Предисловие. 

   Игра  Snake  задумывалась  как игра для 
двух  или более человек, поэтому "самому с
собой"  играть  в нее будет не очень инте-
ресно. Да и вообще она вышла довольно-таки
сложной  для всеобщего понимания. Практика
показала  что  95%  загрузивших игру юзают
ее, не используя основной возможности (ин-
теллект), а только сидят и смотрят на вза-
имное  поедание.  :)  Между тем 5%, хоть и
понимают  как именно следует обучать змею,
практически не юзают сию прогу. Цель этого
хелпа  -  ознакомление с общими принципами
работы  со  змеями. Также здесь вы найдете
некоторые советы.


           1. Основные понятия. 

   Итак,  игра состоит из двух фаз. Первая 
фаза - это создание боевой змеи, оно будет 
рассмотрено  ниже.  Вторая фаза - это само
сражение,  в  котором  пользователь играет 
только  роль  зрителя  и, в какой-то мере,
судьи.

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

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

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

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

   Таким образом, суммарная длина участни- 
ков боя остается постоянной, а длина Вашей 
змеи  является показателем того, насколько
успешно  воюет именно она. Задача-максимум
для  пользователя состоит в том, чтобы его
змея  полностью  "съела" всех противников,
задача-минимум  - добиться того, чтобы его
змея имела максимальную длину.

   В самой битве одновременно участвует от
двух  до  четырех  змей. Сразу замечу, что
бой  с участием четырех змей гораздо инте-
реснее и менее предсказуем, чем с участием
пары.  Бой заканчивается в одном из случа-
ев:

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

   Можно продолжить сражение, обновить по-
ложения  змей,  выйдя и зайдя в БОЙ снова. 
Так  как  фактор  случайности  играет  су-
щественную  роль, результат однораундового 
боя,  вообще говоря, не является особо по-
казательным,  так  что  стоит проводить не 
менее  десяти раундов, для того чтобы дос-
таточно  объективно оценить силу противни-
ков. Исследование показало, что надежность
порядка  90% в определении победителя дает
матч, состоящий из 15 раундов.


         2. Создание боевой змеи. 

   Создание  боевой  змеи  включает в себя 
несколько операций:

 - выбор имени змеи. 
 - выбор пароля змеи.
 - пользователь заполняет паспорт змеи,
   указав в нем ту информацию, которую 
   считает нужной (например, информацию
   о себе).

            3. Обучение змеи. 

   Как  же программируется поведение змеи? 
Итак, слушайте...


       3.1 Чему змею учить будем? 

   1. Змея должна "видеть" поле. Она долж- 
на  уметь находить хвост противника, начи-
нать  его преследование, сближаться и ата-
ковать.  Итак,  змея  должна "сканировать"
окружающее пространство. Чем больше радиус
"сканирования" Вашей змеи, тем интеллекту-
альнее ее поведение.

   2. Змея должна избегать тупиковых ситу- 
аций  вблизи кромки поля. Пример такой си- 
туации,  когда  она  не  может никуда дви-
нуться,  приведен  на  рис. 1. Хвост такой 
змеи  беззащитен  для  атак соперников. От
кромки  вообще,  по-видимому,  стоит  дер-
жаться  подальше, кроме тех случаев, когда
там водится добыча.

        Рис. 1. "Тупик" у стенки. 










   3. "Умная" змея может  избегать  ситуа- 
ции,  когда она запутывается в собственных
(и не только собственных) кольцах (рис.2) 

   Рис.2 "Тупик" в собственных кольцах. 










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

      Рис.3 Техника "срезания" углов











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

         Рис. 4 Патовая ситуация 
          "взаимного поедания".











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

   7. Бои с участием 2-х, 3-х или 4-х бой- 
цов  проходят по-разному. Известны примеры 
отличных индивидуальных бойцов, которые не
способны   хорошо   работать  в  групповой
схватке и наоборот. Так что "сила" бойца -
понятие  относительное. Все зависит от то-
го,  с кем и в каких условиях ему придется
сразиться.   Поэтому  воспитание  "универ-
сального"  бойца  -  это дело, связанное с
чувством баланса и многими компромиссами.

   8. Интересно, что во многих случаях си- 
ла  бойцов  - понятие нетранзитивное. Так, 
если змея "Альфа" устойчиво побеждает "Бе-
ту",  а  "Бета",  в  свою очередь, не дает
спуску "Гамме", то это еще совсем не озна-
чает,  что  "Альфа" будет сильнее "Гаммы".
Вполне  может  оказаться,  что у последней
есть такие индивидуальные черты характера,
которые  "Альфе" окажутся не по зубам. По-
работав  несколько дней со своими бойцами,
Вы сами это почувствуете и, опять же, вос-
питание  универсального бойца станет делом
скрупулезного  исследования  и взвешенного
баланса различных качеств и свойств.


            3.2 Как учат змею. 

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

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

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

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

   Незанятая клетка матрицы в виде сеточки
означает, что данный квадратик не принима-
ется во внимание.

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

   Элемент "ИЛИ" - совпадение фиксируется, 
если  совпал  хотя  бы один из подкрашеных
этим цветом.

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

   4. Некоторые стандартные положения. 

   Запутавшаяся и заблокировавшая сама се- 
бя  змея.  Если такая ситуация возникнет в 
ходе  игры,  то  любой  противник сможет с
комфортом  "съесть" значительную часть та-
кой  змеи, прежде чем она освободится. Хо-
рошая  змея  должна стараться избегать по-
добных ситуаций.

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

   Три  змеи сидят друг у друга на хвосте. 
В результате каждого такта сражения каждая
из  них как приобретает, так и теряет одну
единицу длины и длина каждой змеи остается
неизменной. Подобная ситуация часто возни-
кает  и с двумя змеями. Читатель может по-
думать  о том, стоит ли и каким именно об-
разом  пытаться  разорвать  такой  цикл. Я
придумал два возможных механизма подобного
разрыва,  но  они пока несовершенны и чаще
ухудшают, а не улучшают ситуацию.

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


         5. Немного об аналогах. 

   Вообще  прообразом Snake явилась PC-de- 
mo. В хелпе к ней имелось следующее:


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

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

   А  "CoreWar" была не просто программой, 
это  была  поистине  культура и явление. И
развивалась  эта культура наиболее активно
в  начале  80-х.  Суть состояла в том, что
каждый  программист  сам  писал  себе  не-
большую  программу  в машинном коде, после
чего две программы разных авторов запуска-
ли  в  память машины. Куда, в какие адреса
пошли эти программы, никому неизвестно.

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

   Но  "обстреливать"  память  наугад - не
единственное, чем занимались бойцы. Лучшие
образцы умели "размножаться", "залечивать"
поврежденные   участки,   "маскироваться",
"сканировать" память и пр.

   "CoreWar" получила широчайшее распрост- 
ранение на Западе. Проводились чемпионаты,
турниры.  Организовывались  клубы,  а  эти
клубы  выпускали  регулярные бюллетени, то
есть,  появились  как бы средства массовой
информации по этой культуре.

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

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

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

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

   Конечно  полной  аналогии между "Боем в 
памяти" и "Змеиным Боем" нет и быть не мо- 
жет.  Но  я  думаю, что сама идея довольно
хороша  для  создания нового направления в
написании игровых программ.
__________________________________________ 



Другие статьи номера:

Авторы - Авторы журнала и контакты редакции.

Вступление - Приветствия и вступительное слово.

Вступление - Описание возможностей оболочки.

Вступление - Содержание номера.

Игротека - GLADIATOR. Анализ интересной fightingовой игры.

Игротека - BARD-S TALE. Продолжение "штурма" классической РПГ.

Игротека - SUPAPLEX. Презентация харьковской boulder dash-еобразной игры.

Игротека - SNAKE Презентация написанной в Харькове недетерминированной игры.

Игротека - SNAKE-HELP1. Советы по игре Snake.

Игротека - SNAKE-HELP2. Принципы игры и история создания.

Игротека - СОЛДАТИКИ. Рассказ автора о созданной им стратегической игре.

Игротека - КОРАБЛИКИ. Информация о новом стратегическом проекте.

Игротека - BRAIN PRESSURE. Рассказ о новой логической игре.

Игротека - ПСЕВДОШАШКИ. Еще одна логическая игрушка.

Интервью - Интервью с создателями нашумевшей игры Зеркало, группой ART WORK.

Интервью - Интервью с DEMIURGE ASH.

Интервью - Интервью с MIDISOFT/EM.

Интервью - Интервью с ENERGY MINDS.

Интервью - X-PROmotion. Рассказ о поездке XPJ в Донецк.

Интервью - SSG-99. Рассказ о проходившей в Севастополе Party

Интервью - Интервью с группой из Феодосии - X-THEME.

Ликбез - ВОССТАНОВЛЕНИЕ ИГР#3. Заключительная статья.

Ликбез - алгоритмы быстрой 3D-графики №2. Дополнения и замечания.

Ликбез - CHEATS&POKES. Две последние части из цикла.

Комната смеха - ПРО СИСАДМИНОВ. Подборка анекдотов.

Комната смеха - КАК СДЕЛАТЬ ЖУРНАЛ. Советы "экспертов"

Комната смеха - ГАМЛЕТ#1. Первая часть новой версии бессмертной трагедии.

Комната смеха - БЕЛЫЙ ПИНГВИН. Антиновелла по одной известной игре.

Меломания - МЕЛОМАНИЯ#2. Второй выпуск музыкальной рубрики.

Меломания - ОБЗОР АЛЬБОМОВ. Обзор heavy-metal CD за 98/99 гг.

Меломания - VOODOO (рус.)Перевод альбома King Diamond-98.

Меломания - VOODOO (англ.)Оригинальный текст альбома.

Обозрение - НОВЬЕ?.. Рассуждения на тему свежего софта, список новых игр.

Обозрение - ОБЗОР свежих электронных журналов для ZX Spectrum.

Обозрение - ИГРЫ. Знакомство с новинками игрового ПО: Козел, Охота на кротов, Белый Орел, Leprikon, 12 Тайных Книг, King, C.H.I.F., Черный Ворон - новые миссии.

Вокруг света - Intel: скептики опять ошиблись?

Вокруг света - Новые машины Silicon Graphics: ПК или рабочие станции?

Вокруг света - Новинки с MacWorld Expo.

Разное - НАШЕ НИЩЕНСТВО. Очерк А.П.Чехова.

Разное - ROLE PLAYING GAMES. История ролевых игр.

Разное - ЧЕМПИОНАТ ЗМЕЙ. Новый конкурс.

Разное - И СНОВА AY. Статья о коррекции звучания муз. сопроцессора.

Разное - РЕКЛАМА.

Разное - КОНКУРС.

Рабочий стол - DIGITAL SOUND EDITOR. Презентация цифрового редактора звука.

Рабочий стол - NEOS. Рассказ о новой операционной системе для Спектрума.

Рабочий стол - INTERMINAL. Новая терминальная программа.

Теверна - первый выпуск рубрики, посвященной игровым программам: концепция игры "Таверна".

Почта - Переписка с читателями журнала.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Rants & Raves - Что мы используем при создании газеты ?..
Теория бесконечных текстов - Прежде всего, следует заметить, что бесконечные тексты вовсе не являются бесконечными...
Железо - схема подключения внутреннего Hayes модема к ZX Spectrum.
Программистам - Ассемблер для рукомойников.
Железо - спектрум-наладонник: ZX-Pad - мнение.

В этот день...   21 ноября