Прежде всего без экрана
Трёхмерного вида нет, и ничего не отрисовывается. То, что вьюер тратит на видеокарту, NeuraCore тратит на возможность держать открытым десяток сессий сразу на обычной машине.
Second Life без вьюера
Клиент Second Life для тех, кто ведёт больше одного аватара.
Настольное приложение для Linux, Windows и macOS. Один процесс, все аватары.
Замысел
Трёхмерного вида нет, и ничего не отрисовывается. То, что вьюер тратит на видеокарту, NeuraCore тратит на возможность держать открытым десяток сессий сразу на обычной машине.
Каждый аватар это сессия внутри одного приложения, со своим окном, своим инвентарём, своим чатом. Переключение между ними это щелчок, а не вход в систему.
Каждая возможность интерфейса зарегистрирована как действие Automation и доступна встроенному Python и контроллеру ИИ. Ничего из того, что делают кнопки, не находится вне досягаемости скрипта.
Возможности
Подключайте, переподключайте и запускайте по очереди целые группы аватаров, в Second Life или на сетке OpenSimulator. Каждый возвращается сам после обрыва, отвечает на код двухфакторной проверки, когда сетка его просит, и сообщает в строке состояния, под какой лицензией работает.
Публичный профиль, пики, объявления, заметки и надетая форма, а также всё, что присылает сетка: приглашения, извещения о платежах, запросы разрешений и системные сообщения, с подсчётом тех, что ещё ждут ответа.
Баланс в линденах и вся история платежей, полученных и отправленных. Оплата выключена, пока вы её не включите, и это единственная настройка по умолчанию, о которой стоит сказать.
Просмотр, поиск, создание, перемещение, копирование, предпросмотр, передача и удаление. Фильтр по дате находит только что появившееся, а Fetch All загружает всё, когда поиск должен охватить весь инвентарь.
Надевать и снимать наряды, заменять весь образ или добавлять поверх, видеть, что и к какой точке прикреплено, и править надетую форму ползунок за ползунком, если она допускает изменение.
Локальный чат, личные сообщения и групповые беседы, разделённые по аватарам со счётчиком непрочитанного и пересылаемые вашему аватару, когда вы этого попросите.
Телепорт домой, в названный регион или по координатам, ответ на предложения телепорта, кто рядом и кого видели раньше, и список объектов, присланных регионом.
Ходить, летать, сидеть, телепортироваться и следовать за другим аватаром из региона в регион, на выбранном расстоянии и в выбранном направлении, причём следующий прямо говорит, когда действительно не может его догнать.
Пройдите маршрут один раз сами, и аватар пройдёт его сам: вперёд, по кругу, задом наперёд или в случайном порядке, садясь там, где сели вы, и продолжая после обрыва связи.
Реестр каждого действия, доступного клиенту, отдельный переключатель разрешения на каждое, история каждой попытки с её результатом и встроенный Python, чтобы связать их вместе. В соответствии с интерфейсом его держит правило проекта, а не чья-то память.
Выберите сервис, модель и характер, решите, кому можно с ним говорить, и наблюдайте, как приходят запросы, ответы и выбранные действия. То, что он помнит о себе и о каждом жителе, ваше: читайте, правьте или стирайте.
Расскажите аватару о своём деле в Second Life, и он будет отвечать покупателям тем, что вы написали, а не догадками, беря только ту часть, которая нужна вопросу. Идёт с лицензией Business.
Архитектура
Продукт это настольный клиент. Всё остальное существует, чтобы ответить на один вопрос о нём, под какой лицензией он работает, и честно сказать, когда ответить не может.
Запускает аватаров и спрашивает при старте, а затем регулярно, что ему разрешено. Сам он ничего о лицензиях не решает.
Единственное место, где решается вопрос о лицензии. Каждый вызывающий подтверждает, кто он, общим секретом, а запросу, который этого не может, отвечают 403 без объяснений.
Вторая половина покупки. Надетый HUD записывает аватара, который его носит, и этим единственным применением расходуется.
Каждое чтение и каждая запись идут через хранимую процедуру. У учётной записи приложения есть EXECUTE и больше ничего: ни одного права на таблицы.
Лицензии
Лицензии продаются как HUD для Second Life в marketplace. Надеть такой и активировать значит записать его на вашего аватара; клиент заметит изменение при следующей проверке.
Один главный аватар и одно место, навсегда. Ничего покупать не нужно, и ничто не истекает.
Входная покупка и обязательное условие для любой лицензии со сроком. Даёт шесть месяцев Individual или три месяца Business, и что именно, вы выбираете в HUD.
Неделя, месяц или год времени на одном месте. Приостанавливается, а не теряется, пока идёт время Business.
Те же три срока на уровне Business. Имеет приоритет на месте и держит время Individual в ожидании, пока не закончится.
Время живёт на месте, а не в календаре: приостановленная лицензия не расходуется.
Что несёт каждая действующая лицензия. Начальная лицензия это не столбец: это покупка, которая превращает Бесплатную в одну из двух других.
| Бесплатная | Individual | Business | |
|---|---|---|---|
| Сколько аватаров можно вести | Одного | По одному на место, места можно докупать | По одному на место, места можно докупать |
| Подключение, автопереподключение, Master, разрешённые жители | Входит | Входит | Входит |
| Профиль, инвентарь, внешность, друзья, группы, чат, карта, радар | Входит | Входит | Входит |
| Follow Me | Фиксированные полметра | Расстояние и направление на выбор | Расстояние и направление на выбор |
| Деньги | Не входит | Входит | Входит |
| Объекты мира | Не входит | Входит | Входит |
| Automation и встроенный Python | Не входит | Входит | Входит |
| Контроллер ИИ и память | Не входит | Входит | Входит |
| Сервисы ИИ | Нет | Четыре облачных сервиса | Четыре облачных сервиса, а также Ollama и LM Studio на вашей машине |
| Знание о магазине для покупателей | Не входит | Не входит | Входит |
| Характер Formal Business | Не входит | Не входит | Входит |
| Позволить ИИ отвечать всем жителям | Не входит | Не входит | Входит |
| Запись маршрутов патрулирования | Нет | Один маршрут на аватара | Сто маршрутов на аватара |
Как это сделано
Каждая операция с базой данных в этом решении это хранимая процедура, вызванная со связанными параметрами. Веб-приложения входят под учётной записью с правами EXECUTE и без прав на таблицы, поэтому полный захват процесса PHP позволяет вызвать только те процедуры, которые уже существуют.
Ни одна часть не считается доверенной из-за того, откуда пришли её пакеты. Каждый запрос между частями этого решения подтверждает себя общим секретом, привязан к собственному содержимому и моменту и принимается ровно один раз.
Отображаемые имена не хранятся. Телеметрия клиента истекает сама, когда клиент перестаёт отчитываться. Хранится то, что нужно для решения о лицензии, и журнал, по которому расследовали бы происшествие.