Идея игры базируется на статье «Страна Монстров» журнала "Техника Молодежи" за 1990 год.
Я не совсем уверен, что эта обработка будет полезна или интересна хоть кому-нибудь, но раз уж есть возможность разместить публикацию — то почему бы и нет? 😉
Суть
В начале новой игры персонаж игрока оказывается на случайно сгенерированном (но подверженом определенной логике) поле из 10-ти видов ландшафта и одним (обычно) случайным предметом. Для преодоления любого из ландшафтов (кроме Степи и Оазиса) без потери выносливости требуется определенный предмет:
- Лес (Бурелом) — нужен Топор;
- Холмы (Скалы) — нужен Ледоруб;
- Пески (Зыбучие пески) — Веревка;
- Мелководье (Глубокая вода) — Лодка.
При передвижении по Степи выносливость не тратится (если не волочь за собой лодку), а при посещении Оазиса выносливость и запас воды игрока полностью восстанавливается.
Еще одним фактором ограничения на перемещение является запас воды, которы тратится каждый ход, и восстановить который можно только у воды или в Оазисе. Если запас воды персонажа равен нулю, то вместо него тратится выносливость. А падение выносливости до нуля — обозначает проигрыш.
Управление
Экран игры разделен на два табличных документа. Левый служит для визуализации игрового поля, а двойными кликами на правом игрок выбирает отдаваемые персонажу команды. Реакция игры на выполненные действия приведены в логе (располложенном ниже команд), а статистика ландшафтов и предметов (с их короткими описаниями) размещены в Легенде (вызывается по кнопке «Показать легенду»).
Возможности игры
- Размеры игрового поля при генерации имеют ограничения от 5х5 до 200х200 (количество предметов подствраивается под размеры поля, чтобы чрезмерно не усложнять прохождение);
- Размеры отображаемого на экране поля могут быть настроены отдельно под конкретное разрешение монитора, чтобы избежать появления полос прокрутки;
- Сохранение игры в любой момент хода;
Дополнительные возможности
В «настройках программы» можно установить парметры «Автоматически сохранять игру при выходе» и «Загружать последнюю сохраненную игру при запуске». В этом случае исследование одного лабиринта можно расстянуть на несколько ссесий отдыха между выполнением основных задач (Минестерство труда предупреждает, что вам платят именно за основную работу).
Послесловие
Прошу оставлять свои пожелания и предложения в комментариях, так как взгляд уже замылился и я могу не видеть даже очевидных ошибок и недочетов. Нутром чую, что описал игру сумбурно (да и обработку написал наверно так же), но я уже заблукал в буковках.
В любом случае, благодарю вас за время, потраченное на чтение публикации!
И еще. Код открыт — ограничений нет.
Клёво. Надо заказать установку
Класс:)
Я так понимаю, она походовая?
(2) tonic, Да, она пошаговая. Пошаговость — родилась из первоначальной идее сделать ее сетевой, но пока взаимодействие игроков я не продумал, а пошаговость — уже есть.
(1) Ibrogim, Хм… Она — вроде же простая обработка… «Файл — открыть» — какая тут установка? Хотя можно написать подключение в любую конфигурацию. Просто я не знал, как написать универсальное определение.
(3) Это шутка, В публикации есть кнопка «Заказать установку» просто ))
(4) Ibrogim, Ёптушки, теперь вижу…. Это я сделаль? :))
(3) Слушай а ты через что хочешь сделать взаимодействие игроков?
Первейшее, что приходило в голову — через файл состояния игры. Игроки бы поочереди вносили данные о своих действиях в обще доступный файл. Но тут проблема как регулировать взаимодействие с одним и тем же объектом в случае асинхронных ходов. В случае синхронных — это будет бокс по переписке (очень долго).
Идея о файле упирается рогами в необходимость отсутствия изменений в конфигурациях.
(7) Есть еще один вариант… правда он тоже не лишен недостатков, сделать взаимодействие через промежуточную базу mySql например, а ее разместить на каком нить бесплатном хостинге. А вообще идея интересная:)
А при чем тут синхронность или асинхронность ходов, она у вас пошаговая… я не зря про этот момент спросил:)
(8) Вариант возможный… Только это уменьшит автономность системы — без инета уже и не поиграешь (предполагал состязания внутри одного отдельно взятого коллектива). Синхронность выполнения хода важна: толи все сразу выполняют ход, а затем обсчитывается результаты, толи каждому игроку придется ждать завершения хода предыдущего.
(9) пиши в журнал регистрации :))) Он-то почти в любой базе есть.
(8) Вообще я рассмотрю этот вариант, тем более, что скулевых баз у меня хренова толпа…. Да и хостингов в наличии — столько же.
(9) Ну если предполагается внутри одного коллектива, то да вариант с инетом отпадает.
Насчет регулировки асинхронности, может сделать по времени? кто первый успел того и тапки. в файл записывать время хода.
(11) necropunk, А не будет очень долгой выборка из этого журнала, туда же не только данные игры будут падать…
(11) Tonic прав. Я сижу на БП 3,0 и в журнал регистрации даже по малому не хожу. Пару раз приходилось снимать задачу, настолько это жирноватая штука.
(12) Вариант 🙂
(7) может быть стоит еще рассмотреть вариант хранения информации в стандартном хранилище общих настроек? В нем же можно хранить произвольные данные.
(15) Bassgood, может быть. Дело в том, что программирование в восьмерке — скорее хобби и конфигуратор то ее я открыл первый раз полгода назад, и я вовсе не в курсе уже существующих механизмов. Наверняка существует еще с десяток возможных решений, про которые я пока не знаю. Возможность с хранилищем я тоже рассмотрю.
Итого, уже почти ясно «как»: 1) Хранилище в случае игры в единой конфигурации, 2) Файл — в случае общей локальной сети, 3) Внешняя скуль база — во всех остальных (еще и сервера поднять с матчмейкером :)).
Осталось узнать — «что», потому как текущее наполнение, без взаимодействия игроков посредством увечий их персонажей вряд ли заинтересует массы. 🙂 Как минимум нужны ловушки, отравления снадобий и пр…
(16) на вопрос «что»: мне кажется что достаточно в этом хранилище хранить данные о времени хода и о позиции игрока (игроков), у вас же расчет состояния мира идет после каждого хода.
А вот еще что интересно, скажите а где вы храните ифну о том что находится на каждом тайтле? логично эту инфу тоже хранить в каком нибуть внешнем хранилище.
У меня просто нет денег скачать вашу обработку:))
(17) tonic, в текущий момент (в однопользовательской версии игры) для хранения мира в течении хода использую локальные массивы, этого достаточно. Потом придумаю, как реализовать «серверный» расчет, если резон будет.
Используя слово «что» я имел в виду более широкий вопрос — что нужно добавить в игру (какие взаимодействия игроков), чтобы собственно был смысл делать многопользовательскую.
(18) ну раз так стоит вопрос, то само собой напрашивается ответ: Квесты:))) хабар(он уже есть), всякие неписи в общем корованы и набигающие домики:)))
(19) tonic,
«Я джва года уже хочу такую игру»?
(20) Точно:))
(13) tonic, конечно будут, там поэтому смайлик стоит.
Плюс чисто из принципа.
Слушай, а не пробовал запрячь «Географическую схему» вместо табличного документа? Может, там задизайнить круче выйдет?
(23) Yashazz, спасибо!
Конечно не пробовал, потому как до твоих слов я даже не знал про «географическую схему» 🙂 . Мне бы пример реализации посмотреть достойный, чтобы понять стоит ли оно того (да и на чужом коде проще учится, нежели по справке)
Отлично получилось!
Идея — 5 баллов.
Реализация — 5 баллов.
Юморной текст в игре 5 баллов.
Круто! Помню описание этой игры в журнале. И как они псевдографикой визуализировали охоту на рыбу 🙂
(26) 🙂 На «речного змея»:http://leonid.shevtsov.me/post/monsterland-article/
(25) Спасибо за оценку, хоть она и чрезмерная 🙂
(7) Сохраняйте обработку в папке, которая упакована в архив.
Запуск обработки из папки. Сохранение состояния в текстовый файл в папке.
Можно шифровать файл чтобы не подделали.
Загрузка состояния игры из файла в той-же папке.
Для состояний игры можно предусмотреть отдельную папку «save»
Состояния игры называть «save» как принято в игровом деле.