Антар: приключенческая игра. Исследование лабиранта с элементами выживания (1С 8.3, Управляемые формы, любая конфигурация)


Смысл игры в исследовании случайно сгенерированного лабиринта (поля?) из различных ландшафтов, для преодоления которых требуются различные предметы (изначально у игрока отсутствующие) и сборе всех монет (конечная цель). Необходимость поиска предметов, поддержания запаса воды и выносливости позволяет использовать термин "Элементы выживания" 🙂
Идея игры базируется на статье «Страна Монстров» журнала "Техника Молодежи" за 1990 год.

Я не совсем уверен, что эта обработка будет полезна или интересна хоть кому-нибудь, но раз уж есть возможность разместить публикацию — то почему бы  и нет? 😉

Суть

В начале новой игры персонаж игрока оказывается на случайно сгенерированном (но подверженом определенной логике) поле из 10-ти видов ландшафта и одним (обычно) случайным предметом. Для преодоления любого из ландшафтов (кроме Степи и Оазиса)  без потери выносливости требуется определенный предмет:

  • Лес (Бурелом) — нужен Топор; 
  • Холмы  (Скалы) — нужен Ледоруб;
  • Пески  (Зыбучие пески) — Веревка;
  • Мелководье (Глубокая вода)  — Лодка.

При передвижении по Степи выносливость не тратится (если не волочь за собой лодку), а при посещении Оазиса выносливость и запас воды игрока полностью восстанавливается. 

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

Управление

Экран игры разделен на два табличных документа. Левый служит для визуализации игрового поля, а двойными кликами на правом игрок выбирает отдаваемые персонажу команды. Реакция игры на выполненные действия приведены в логе (располложенном ниже команд), а статистика ландшафтов и предметов (с их короткими описаниями) размещены в Легенде (вызывается по кнопке «Показать легенду»).

Возможности игры

  • Размеры игрового поля при генерации имеют ограничения от 5х5 до 200х200 (количество предметов подствраивается под размеры поля, чтобы чрезмерно не усложнять прохождение);
  • Размеры отображаемого на экране поля могут быть настроены отдельно под конкретное разрешение монитора, чтобы избежать появления полос прокрутки;
  • Сохранение игры в любой момент хода;

Дополнительные возможности

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

Послесловие

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

В любом случае, благодарю вас за время, потраченное на чтение публикации!

И еще. Код открыт — ограничений нет.

28 Comments

  1. Ibrogim

    Клёво. Надо заказать установку

    Reply
  2. tonic

    Класс:)

    Я так понимаю, она походовая?

    Reply
  3. HorusTheOne

    (2) tonic, Да, она пошаговая. Пошаговость — родилась из первоначальной идее сделать ее сетевой, но пока взаимодействие игроков я не продумал, а пошаговость — уже есть.

    (1) Ibrogim, Хм… Она — вроде же простая обработка… «Файл — открыть» — какая тут установка? Хотя можно написать подключение в любую конфигурацию. Просто я не знал, как написать универсальное определение.

    Reply
  4. Ibrogim

    (3) Это шутка, В публикации есть кнопка «Заказать установку» просто ))

    Reply
  5. HorusTheOne

    (4) Ibrogim, Ёптушки, теперь вижу…. Это я сделаль? :))

    Reply
  6. tonic

    (3) Слушай а ты через что хочешь сделать взаимодействие игроков?

    Reply
  7. HorusTheOne

    Первейшее, что приходило в голову — через файл состояния игры. Игроки бы поочереди вносили данные о своих действиях в обще доступный файл. Но тут проблема как регулировать взаимодействие с одним и тем же объектом в случае асинхронных ходов. В случае синхронных — это будет бокс по переписке (очень долго).

    Идея о файле упирается рогами в необходимость отсутствия изменений в конфигурациях.

    Reply
  8. tonic

    (7) Есть еще один вариант… правда он тоже не лишен недостатков, сделать взаимодействие через промежуточную базу mySql например, а ее разместить на каком нить бесплатном хостинге. А вообще идея интересная:)

    А при чем тут синхронность или асинхронность ходов, она у вас пошаговая… я не зря про этот момент спросил:)

    Reply
  9. HorusTheOne

    (8) Вариант возможный… Только это уменьшит автономность системы — без инета уже и не поиграешь (предполагал состязания внутри одного отдельно взятого коллектива). Синхронность выполнения хода важна: толи все сразу выполняют ход, а затем обсчитывается результаты, толи каждому игроку придется ждать завершения хода предыдущего.

    Reply
  10. necropunk

    (9) пиши в журнал регистрации :))) Он-то почти в любой базе есть.

    Reply
  11. HorusTheOne

    (8) Вообще я рассмотрю этот вариант, тем более, что скулевых баз у меня хренова толпа…. Да и хостингов в наличии — столько же.

    Reply
  12. tonic

    (9) Ну если предполагается внутри одного коллектива, то да вариант с инетом отпадает.

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

    Reply
  13. tonic

    (11) necropunk, А не будет очень долгой выборка из этого журнала, туда же не только данные игры будут падать…

    Reply
  14. HorusTheOne

    (11) Tonic прав. Я сижу на БП 3,0 и в журнал регистрации даже по малому не хожу. Пару раз приходилось снимать задачу, настолько это жирноватая штука.

    (12) Вариант 🙂

    Reply
  15. Bassgood

    (7) может быть стоит еще рассмотреть вариант хранения информации в стандартном хранилище общих настроек? В нем же можно хранить произвольные данные.

    Reply
  16. HorusTheOne

    (15) Bassgood, может быть. Дело в том, что программирование в восьмерке — скорее хобби и конфигуратор то ее я открыл первый раз полгода назад, и я вовсе не в курсе уже существующих механизмов. Наверняка существует еще с десяток возможных решений, про которые я пока не знаю. Возможность с хранилищем я тоже рассмотрю.

    Итого, уже почти ясно «как»: 1) Хранилище в случае игры в единой конфигурации, 2) Файл — в случае общей локальной сети, 3) Внешняя скуль база — во всех остальных (еще и сервера поднять с матчмейкером :)).

    Осталось узнать — «что», потому как текущее наполнение, без взаимодействия игроков посредством увечий их персонажей вряд ли заинтересует массы. 🙂 Как минимум нужны ловушки, отравления снадобий и пр…

    Reply
  17. tonic

    (16) на вопрос «что»: мне кажется что достаточно в этом хранилище хранить данные о времени хода и о позиции игрока (игроков), у вас же расчет состояния мира идет после каждого хода.

    А вот еще что интересно, скажите а где вы храните ифну о том что находится на каждом тайтле? логично эту инфу тоже хранить в каком нибуть внешнем хранилище.

    У меня просто нет денег скачать вашу обработку:))

    Reply
  18. HorusTheOne

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

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

    Reply
  19. tonic

    (18) ну раз так стоит вопрос, то само собой напрашивается ответ: Квесты:))) хабар(он уже есть), всякие неписи в общем корованы и набигающие домики:)))

    Reply
  20. HorusTheOne

    (19) tonic,

    «Я джва года уже хочу такую игру»?

    Reply
  21. tonic

    (20) Точно:))

    Reply
  22. necropunk

    (13) tonic, конечно будут, там поэтому смайлик стоит.

    Reply
  23. Yashazz

    Плюс чисто из принципа.

    Слушай, а не пробовал запрячь «Географическую схему» вместо табличного документа? Может, там задизайнить круче выйдет?

    Reply
  24. HorusTheOne

    (23) Yashazz, спасибо!

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

    Reply
  25. dsitiy

    Отлично получилось!

    Идея — 5 баллов.

    Реализация — 5 баллов.

    Юморной текст в игре 5 баллов.

    Reply
  26. jONES1979

    Круто! Помню описание этой игры в журнале. И как они псевдографикой визуализировали охоту на рыбу 🙂

    Reply
  27. HorusTheOne

    (26) 🙂 На «речного змея»: http://leonid.shevtsov.me/post/monsterland-article/

    (25) Спасибо за оценку, хоть она и чрезмерная 🙂

    Reply
  28. pvlunegov

    (7) Сохраняйте обработку в папке, которая упакована в архив.

    Запуск обработки из папки. Сохранение состояния в текстовый файл в папке.

    Можно шифровать файл чтобы не подделали.

    Загрузка состояния игры из файла в той-же папке.

    Для состояний игры можно предусмотреть отдельную папку «save»

    Состояния игры называть «save» как принято в игровом деле.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *