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

Структура файлов и папок

При создании проекта в среде Varwin автоматически формируется следующая иерархия файлов и директорий:

├── Blockly.py
├── Main.py
└── Varwin/
    ├── Varwin.py
    ├── SceneObjectTypes.py
    ├── SceneObjects.py
    └── Objects/

Каждый элемент этой структуры играет определённую роль в архитектуре приложения.

Blockly.py

Тип файла: только для чтения

Назначение: содержит логику, сгенерированную визуальным редактором блоков (Blockly).

Этот модуль автоматически обновляется при изменении в визуальном редакторе.

Main.py

Тип файла: редактируемый

Назначение: основная точка входа в приложение.

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

Пример содержимого:

import Varwin
from SceneObjects import *
import Blockly

async def OnStart():
    # Пользовательская инициализация при запуске сцены
    pass

async def OnUpdate():
    # Логика, выполняемая зацикленно
    pass

# Регистрация пользовательских обработчиков
Varwin.Async.AddStart(OnStart)
Varwin.Async.AddUpdate(OnUpdate)

Varwin.py

Тип файла: только для чтения

Назначение: предоставляет API для взаимодействия с объектами сцены, системными событиями и служебными функциями.

Основные возможности:

  • Управление жизненным циклом сцены (например, Varwin.Async.AddStart)

  • Отладочный вывод (Varwin.Debug.Log)

  • Доступ к объектам сцены

  • Реализация корутин

  • Стандартные поведения

Полный перечень доступных классов, функций и методов с сигнатурами, параметрами и примерами использования приведён в разделе:

Varwin

SceneObjectTypes.py

Тип файла: только для чтения

Назначение: маппинг технических имён типов объектов на удобочитаемые псевдонимы.

Внутренние имена объектов имеют формат <C#_TypeName>_<Root_GUID>. Этот модуль заменяет их на короткие и понятные имена.

Предупреждение

Если в проекте обнаружены конфликтующие имена (два разных типа с одинаковым псевдонимом), система автоматически использует полное имя с GUID, чтобы избежать неоднозначности.

SceneObjects.py

Тип файла: только для чтения

Назначение: содержит экземпляры всех объектов, размещённых на сцене.

Каждый объект представлен как переменная с именем, заданным в поле «Имя переменной» в редакторе сцены.

Пример:

from SceneObjectTypes import *

# В редакторе сцены задано имя переменной: player
player = PlayerWrapper(...)

Этот модуль автоматически генерируется и обновляется при изменении сцены.

Совет

Используйте from SceneObjects import * в Main.py или других модулях для прямого доступа к объектам по их именам.

Пользовательские модули

Тип файла: редактируемый

Назначение: расширение функциональности приложения.

Varwin поддерживает модульную архитектуру, позволяя разделять логику на независимые Python-файлы.

Преимущества:

  • Читаемость: каждая функциональная область вынесена в отдельный файл.

  • Изоляция: каждый модуль имеет собственное пространство имён.

  • Повторное использование: модули легко импортировать в других проектах.

  • Автоматическая загрузка: платформа управляет порядком инициализации (при отсутствии циклических зависимостей).

Как использовать:

  1. Создайте новый Python-файл (например, movement.py).

  2. Реализуйте в нём нужную логику.

  3. Импортируйте модуль в Main.py или другом месте.

Пример:

Файл MyModule.py:

import Varwin

def hello():
    Varwin.Debug.Log("Привет, Мир!")

Файл Main.py:

import Varwin
import MyModule

async def OnStart():
    MyModule.hello()

Varwin.Async.AddStart(OnStart)

Совет

Группируйте связанную логику в отдельные модули:

  • movement.py — управление перемещением объектов

  • sensors.py — обработка данных с датчиков

  • ui.py — взаимодействие с пользовательским интерфейсом

  • ai.py — поведенческие алгоритмы