Вдохновившись недавней публикацией игры ""King's Bounty", я решил тоже рискнуть и выложить свои наработки в области гейм дизайна в среде 1С.
Игра представляет собой намёк на РПГ, с кастомизацией персонажа, распределением очков, свободой действий, открытым миром, взаимодействием с НПС.
Основная причина того, что это конфигурация, а не обработка - расширенные возможности в хранении данных.
По пунктам.
1. Кастомизация персонажа
Персонажи представлены справочником, спрайты хранятся в справочнике. Можно загружать любые картинки для отображения
2. Свобода действий
Есть возможность исследовать мир.
3. Открытый мир
Мир представлен в виде большого острова, который генерируется методом фрактальной генерации ландшафтов. Каждая клетка мира является отдельной локацией. Присутствует бесшовная подгрузка локаций фоновыми заданиями.
4. Взаимодействие с НПС
С НПС можно общаться, они перемещаются по локации, у них можно получать задания, торговаться.
5. Сюжет
Изначально есть 5 настроек сюжета, каждая из которых определяет начальный текст игры.
Изначальная задумка состояла в том, можно ли на 1С сделать какую-нибудь игру.
В качестве игры была выбрана "Чепуха", как наиболее простая в реализации. После пришла идея генерации рассказа на основе действий персонажа (примерно как в RimWorld'е). Сперва всё это реализовывалось посредством обработки, постепенно наращивались возможности, прикручивались фишки типа глобальной карты, в которой были маленькие локальные карты. Хранилось всё в структурах, работало медленно, особенно первоначальная генерация карты. Перешел на конфигурацию после того, как не смог реализовать крафт вещей.
После перехода на конфигурацию, началась оптимизация кода, механик. Добавились красивые спрайты.
Основные фишки, которые я смог реализовать в конфигурации:
1. Фрактальная генерация ландшафта. Ссылка
Используется для генерации мира.
2. Алгоритм А* Ссылка
Используется для прокладки дорог между городами и деревнями.
3. Бесшовная подгрузка локаций.
Реализована посредством фоновых заданий, когда игрок перемещается в новую локацию. При этом происходит загрузка 4 соседних локаций.
4. Динамическая смена дня и ночи.
Реализация есть, но очень сырая. Реализована посредством наложения полупрозрачной текстуры поверх табличного поля.
Помимо прочего, в конфигурации реализованы:
- Тетрис
- Игра "Жизнь"
- Крестики-нолики (сетевые)
Режим совместимости выставлен на 8.3.16, но я её разрабатывал на 8.3.9, так что думаю и на ней пойдет.
UPD. Обнаружил некорректное заполнение первоначальных данных.
В новой версии регулируется константой "Начальное заполнение прошло". Если Ложь, то выполняется начальное заполнение базы.
В старой версии регулируется константой "Начальное заполнение". Если Истина, то выполняется начальное заполнение базы.