FiEctro писал: Я так понимаю, Дядя Миша из Ксаша решил сделать первый квейк.
Скорее, Юнити. Движок будет уметь самое основное, а все утехи навроде сейврестора и дельта-компрессии будут вынесены в дллки, которые, возможно, будут продаваться в xash-store за тридцать рублей.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
XaeroX писал: Клиентская часть? Всякие хардкодед-мессаги для восстановления всяких разных скринфейдов?
Насчёт клиента я пока не думал. Да в сущности какая разница. После чтения из .sav файла оно всё равно так же по сети общим порядком идёт на клиент.
Цитата:
nemyax писал: Ну прям микродвижок
Сущности к движку никакого отношения не имеют на самом-то деле. Сущности это конкретика, а ядро оно про абстракцию.
Цитата:
FiEctro писал: Дядя Миша из Ксаша решил сделать первый квейк.
ну разве что по названию пользовательской дллки. Я долго думал как её лучше назвать, ничего не придумал и плюнул.
Добавлено 10-09-2019 в 14:15:
Цитата:
XaeroX писал: Движок будет уметь самое основное
Я бы сказал базовое:
Консоль, сетевая подсистема, звуковая подсистема, менеджер ресурсов, докачка ресурсов, рендеринг моделей с заданными параметрами, менеджер декалей, система материалов, механизм смены уровней, менеджер текстур и лайтмап, файловая подсистема, поддержка модов, сетевая таблица строк.
Ну вообщем всё, что и положено иметь в ядре. Ну и да, разумеется ядро оперирует клиентскими сущностями в плане установления сетевой коммуникации. Но и только.
Примерно так я всё это вижу.
Дядя Миша писал: После чтения из .sav файла оно всё равно так же по сети общим порядком идёт на клиент.
Главное, чтобы был полноценный "клиентский" сейв. То есть все звуки, партикли, декали и всякое всякое чтоб сохранялось и восстанавливалось. Мне, например, очень понравилась демонстрация сейв/рестора темпэнтить для обычной халфы, хотя в ней, как таковой нет смыла. На то они и темп энтити. А вот что из этого в итоге получилось у меня: сохраняемые треки с позицией воспроизведения во фмоде, сохраняемые спрайтовые декали из инвазиона... Да, какая это была в своё время боль, что они исчезали после загрузки. Осталось это всё использовать в моём проекте, который я никак не могу закончить.
эту хрень логичнее вынести в паблик и собирать вместе с каждой библиотекой. Попытка выстроить из них какие-то уровни только портит архитектуру. Я уже когда-то так делал, ничерта хорошего не вышло. Больше не хочу. Вот например есть у меня виртальная файловая система. Раньше бы я её действительно зопехал в какой-нибудь tier1.dll. А сейчас я её оформил как АТД одним хидером и воще не парюсь. Так намного удобнее. Если что-то близкое к CRT не тянет за собой специфичных движковых функций, то и нет никакого смысла оформлять это как очередной интерфейс.
Цитата:
XaeroX писал: Это тот же самый сейврестор с парой дополнительных фишек, разве нет?
Нет, механизм смены уровней ортогонален сейв-рестору. Я имею в виду механизм очереди команд, когда мы ставим задачу загрузить уровень или загрузить сейв, она добавляется в очередь, потом сама вызывает завершение текущей сессии, со следующего кадра, пропускает его и еще на следующем собсно идёт загрузка нового уровня или там сейва. Потому что вызывать такие вещи из Cbuf_Execute стрёмно.
Цитата:
Ku2zoff писал: Главное, чтобы был полноценный "клиентский" сейв.
Ну в ксаше и так декали-звуки сохранялись. А темп-энтитей не будет, я ж объяснял уже. Они не нужны просто. В халфе темп-энтити были такая калечная замена нормальным партиклям. А там где они представляли собой что-то более существенное, тем более нет смысла делать их клиентскими. Ну например те же обломки от ящика. Ну впрочем я этот механизм еще не до конца продумал, там несколько вариантов.
Кстати интересно как с лимитами будет здесь? А то а халве если честно с ними совсем туго, и на количество оружия и на кол во моделей и вылезти за них очень легко чтобы половина энтитей стала не видимой или игра вообще вылетела. В других движках оно не так жестко, взять хотя бы тот же Unreal Engine к примеру помню проходил сингл моды на анрил торнамент вроде Operation Na Pali и других там в настройках можно отключить к примеру исчезновение кусков мяса, вон в брутал думе тоже не только кровищя но и магазины с гильзами остаются, и ничего, работает и не лагает даже на старом железе, а в халве чуть что и можно вылет словить.
Да и на кол во моделей и спрайтов лимит тоже не удобно, если всего много добавлено как к примеру взять ХЛВЕ то приходится кучу моделей соединять в одну с кучей бодигруп, со спрайтами тоже самое.
Ну вот всё это как раз и делается для того (в том числе), чтобы наращивать лимиты из игровой дллки, не затрагивая ядро.
Добавлено 10-09-2019 в 18:14:
Если вам хочется порассуждать за тиеричность, то самый нижний уровень - это собсно ядро, бакэнд всякий, туда пользователю соваться вообще нет смысла. Средний уровень - это игровая дллка с энтитями, логикой, монстрами. И верхний уровень - скрипты.
Дядя Миша
А партиклы вообще-то не мешало бы. Довольно некрасиво выглядит ситуация когда сохранился, например, под дышалкой с паром. Загрузился, а пар снуля начинает идти, будто только включили его.
thambs видимо да, т.к. ребяты из FWGS замутили возможность запускать сервер на ведроиде через ви-фи. Не знаю, работает ли оно через сотовую связь, т.к. там по-умолчанию все исходящие порты закрыты самим ОпСоСом.
Завершил перенос сейв-рестора в игровую дллку. Движок, соответственно, вызывает только сами методы LoadGame, SaveGame и ChangeLevel, с передачей имён уровня или .sav файла. В этом действии, как вы понимаете заключён глубокий смысл. Можно будет сделать несколько вариантов progs.dll в зависимости от лицензии и цены на покупку. То есть совсем без сейва и без чейнджлевела - это одна цена, с сейвом и чейнджлевелом, по типу кушного - другая цена и со сглаженным чейнджлевелом - максимальная.
Так же можно будет приложить исходник пустой игровой библиотеки, ну сделать там класс камеры и пару энтить. В дефолте. Или скажем физика будет различаться в разных ценовых категориях. Так что тут большое поле для возможностей.