Skip to content

Morigun/NovelEngine

Repository files navigation

NovelEngine

Движок для создания визуальных новелл на Python с использованием Pygame.

Запуск игры

Запуск из исполняемого файла (для пользователей)

  1. Скачайте файл NovelEngine.exe
  2. Запустите файл двойным щелчком мыши
  3. Наслаждайтесь игрой!

Запуск из исходного кода (для разработчиков)

  1. Установите Python 3.8 или выше
  2. Установите зависимости: pip install -r requirements.txt
  3. Запустите игру: python main.py

Управление

  • Левая кнопка мыши - переход к следующей сцене, взаимодействие с кнопками или выбор варианта
  • Кнопки "Назад" и "Вперед" - навигация по сценам
  • F11 или Alt+Enter - переключение полноэкранного режима
  • ESC - выход из игры (с подтверждением)

Функциональность

  • Отображение фоновых изображений
  • Отображение персонажей с возможностью позиционирования
  • Текстовые диалоги с именами персонажей
  • Навигация по сценам
  • Система выбора и ветвления сюжета
  • Полноэкранный режим
  • Масштабирование под любой размер экрана
  • Обработка ошибок при загрузке ресурсов

Структура проекта

  • main.py - точка входа в приложение
  • engine/ - основные компоненты движка
    • game.py - основной класс игры
    • scene.py - класс сцены
    • config.py - настройки и константы
  • story/ - сюжет игры
    • story.py - определение сцен и сюжета
  • Assets/ - ресурсы игры
    • Characters/ - изображения персонажей
    • Backgrounds/ - фоновые изображения

Создание сцен с выбором

Для создания сцены с выбором используйте следующий код:

Scene("Текст сцены", 
      character="персонаж",
      background="фон",
      scene_id="уникальный_id",
      choices=[
          {"text": "Вариант 1", "next_scene": "id_следующей_сцены_1"},
          {"text": "Вариант 2", "next_scene": "id_следующей_сцены_2"},
          {"text": "Вариант 3", "next_scene": "id_следующей_сцены_3"}
      ])

Каждой сцене, к которой будет осуществляться переход, необходимо задать уникальный scene_id.

Прямые переходы между сценами

Для создания прямого перехода между сценами используйте параметр next_scene_id:

Scene("Текст сцены", 
      character="персонаж",
      background="фон",
      scene_id="уникальный_id",
      next_scene_id="id_следующей_сцены")

При нажатии на текст или кнопку "Вперед" игра автоматически перейдет к сцене с указанным scene_id. Это позволяет создавать нелинейные сюжеты с произвольными переходами между сценами.

Система переменных и условий

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

Установка и получение переменных

# Установка переменной
game.set_variable("visited_lab", True)

# Получение значения переменной
value = game.get_variable("visited_lab", False)  # False - значение по умолчанию

Действия при входе в сцену

Вы можете задать действия, которые будут выполнены при входе в сцену:

Scene("Текст сцены", 
      scene_id="lab_scene",
      on_enter=[
          {"action": "set_variable", "variable": "visited_lab", "value": True}
      ])

Условные выборы

Вы можете создавать варианты выбора, которые будут отображаться только при выполнении определенных условий:

Scene("Текст сцены", 
      scene_id="choice_scene",
      choices=[
          {"text": "Вариант 1", "next_scene": "scene1"},
          {"text": "Вариант 2", "next_scene": "scene2"},
          {"text": "Секретный вариант", "next_scene": "secret_scene", "condition": {
              "variable": "found_key",
              "equals": True
          }}
      ])

Сложные условия

Вы можете создавать сложные условия с использованием операторов "and" и "or":

# Условие "И" - все подусловия должны быть истинными
"condition": {
    "variable": "visited_lab",
    "equals": True,
    "and": [
        {"variable": "visited_library", "equals": True},
        {"variable": "visited_garden", "equals": True}
    ]
}

# Условие "ИЛИ" - хотя бы одно подусловие должно быть истинным
"condition": {
    "variable": "has_key",
    "equals": True,
    "or": [
        {"variable": "has_lockpick", "equals": True},
        {"variable": "door_is_open", "equals": True}
    ]
}

Сборка проекта

Для сборки проекта в исполняемый файл:

  1. Установите PyInstaller: pip install pyinstaller
  2. Запустите скрипт сборки: python build_exe.py
  3. После завершения сборки в корневой директории появится файл NovelEngine.exe

Лицензия

Этот проект распространяется под лицензией MIT.

Авторы

  • M0r19un(with Cursor AI)

About

Testing the capabilities of the trial version of Cursor AI

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages