Cheb's Game Engine

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

Re: Cheb's Game Engine

Сообщение Alex2013 » 21.07.2022 11:58:42

Shleps писал(а): ...интересный по графике советский мультик "Полигон" был

В "Полигоне" насколько я помню была примитивная версия "захвата движений" то есть движения людей прорисовывались поверх реального видеоряда . ( Что то похожее было в первых версиях игры "Принц персии" только еще грубее )
В принципе ткакя фишка подходит "для всего " кроме чуть нереальной "трехмерной акробатики" но и там можно частично выкрутится подвесив трюковых каскадеров на специальной сбруе . :idea:

"ФФ стиле" кинематика и взаимодействие с миром передается шикарно, но идейно это полная противоположность "плакатному" стилю RWBY с его утрировано четкими фазами и "моментальными кадрами" (ФФ даже "замедленная съемка" всегда кажется слитной) но в тоже время более живым и совсем "нестерильным" хотя и более "чоби-образным" мультяшным поведением героев .

То есть в RWBY эмоции утрированы почти до фарса, но они хотя бы точно есть, а в ФФ-стиле где вроде бы есть вполне выразительная мимика на лицах персонажей, но она постоянно производит впечатление то ли кривовато надетой маски, то ли того что вся мимика срисована у "людей страдающих запором", а большую часть времени лица вообще "нереально нейтральны" с постоянно застывшим "фирменным выражением".

Это даже не сказать, что совсем плохо, потому что "ФФ-стиль", как я уже говорил, это явная попытка предать "взгляд на мир глазами аристо" ( все плавно гипер-детализировано и как бы преисполнено "тайного смысла", а вокруг тихо жужжит "мир механизм" где только аристо (и те кто "достоин их мимолетного взгляда" ) имеют чуть больше степеней свободы слегка отделяясь "от фона", но всеравно являются частью механизма иерархии )

То есть концепция RWBY это "люди строят систему ", а концепция Финал Фентази " система строит людей". ( разумеется в реальности "истина где-то посередине" но обе этих крайности могут быть интересно обыграны в сюжетах и мироустройстве фантастических вселенных. )
А интереснее всего бывает там где две этих концепции "сталкиваются лбами" . ( Например в фильме "Боевой ангел Алита" или сериале "Грань" )
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

Re: Cheb's Game Engine

Сообщение Shleps » 21.07.2022 14:05:35

Cheb писал(а): само понятие "работа камерой" применять просто некуда. Шутер от первого лица. Без катсцен.

в шутере Vietcong и, кажется, в Operation FlashPoint камера при гибели игрока _красиво_ показывает ему, кто же и чем его убил.
Как правило потому что во Vietcong дофига листьев и можно за 10 метров ничего не увидеть, а в OFP часто убивает снайпер за фиг знает сколько или танк какой-нибудь.
Хотя смотреть на даже красивую анимацию собственной кончины... несколько мазохистично. а если согласно диздоку ущерб отображается раздеванием...
Как там у Лукьяненко было? Аутосадомазохизм? А тут типа нарциссомазохизм выходит.
Аватара пользователя
Shleps
постоялец
 
Сообщения: 194
Зарегистрирован: 14.06.2006 20:25:14

Re: Cheb's Game Engine

Сообщение Cheb » 21.07.2022 22:00:41

Shleps писал(а): А тут типа нарциссомазохизм выходит.

Гы :D
Можно камеру на противницу включать на момент *после* того, как отыграла полусекундная "анимация смерти", так что всё, что игрок увидит от себя - это опадающие клочья одежды.

Но встаёт ма-ахонькая проблемка, как организовать это в игре, где сложных препятствий может быть овердофига и даже оттянуть камеру назад - нетривиальная задачка. Поворачивать в направлении, где сейчас фрагнувший тебя? Можно показать стенку. Запоминать последнюю позицию, в которой ты видел противницу? Лишние O*N^2 проверок видимости.
А если ты подорвался на взрыв-тегах куноичи, которая ныкается невидимая?
А если тебя фрагнули, выпнув в глубокую пропасть и противницу камера никак увидеть не сможет, поскольку она за закруглением скалы?
А если тебя фрагнули, наложив дот?
Куча всяких если. Проще резко довернуть камеру на того, кто тебя фрагнул, не двигая точку зрения, а затем в течение секунды погасить экран. А в случае хедшота/бакстаба/падения насмерть - гасить мгновенно, даст больше силы ганкерам.
В игре-вдохновителе, кстати, посмертная камера тупо вращалась мышью вокруг твоего надгробия на фиксированном расстоянии. А при включении выбирала вектор до этой сферы, не перекрытый блоками.
Тут в 1:07 я самофрагнулся из-за недолёта до макушки ёлки: http://chebmaster.com/_share/aos%202015 ... -09-02.avi (80 Мб)

Shleps писал(а):, а в OFP часто убивает снайпер за фиг знает сколько или танк какой-нибудь.

У меня аллергия на хитскановых снайперов, поэтому даже духу их не будет - НО. Чтобы карась не дремал, будет управляемый фаербол.
Слизанный вот отсюда: http://chebmaster.com/_share/best_fireball_ever.avi (50Мб, битва с вёртким боссом, который шарахается вбок раза в четыре быстрее, чем фаербол летит)
И аналогичная управляемая искра с уроном 10.

З.Ы. Работа... Баги... Отчёты... Мозг разжижился, упал, выпал в осадок. Ни-че-го не могу.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение Shleps » 22.07.2022 00:41:16

Cheb писал(а): как организовать это в игре, где сложных препятствий может быть овердофига и даже оттянуть камеру назад - нетривиальная задачкау.

в офп тоже и рельеф, и дома, и зеленка. там камерапосле круга вокруг трупа разворачивается на убийцу и летит к нему даже через полкарты, а потом делает круг почета вокруг убийцы и летит снова к трупу.
особо пикантно прилететь к убийце, который исполняет танец, произносит double/multikill или показывает фак

Добавлено спустя 10 часов 53 минуты 20 секунд:
Alex2013 писал(а):В "Полигоне" насколько я помню была примитивная версия "захвата движений" то есть движения людей прорисовывались поверх реального видеоряда

не, там очень дикая манера рисунка, подложка с малым количеством полутонов, люди с огромным количеством полутонов и как бы "блюр" поверх "уншарп маска".
Но блюр только внутри кадра, а не межкадровый, и обилие cross-fade между кадрами, поэтому все движение убито напрочь.

В принципе такая фишка подходит "для всего "

для активного движения не подходит. тем более для кулачных боевиков, где основная зрелищность должна быть на хореографии боя.
Примерно такой же эффект был, когда в шоурумах появились первые 4к телевизоры. Фотографическое качество стоп-кадра полностью нивелируется убитым движением, которое даже на вакуумных телевизорах в комплекте с VHS-камерой передается неизмеримо лучше (собственно для этого чересстрочная развертка с 50 полями в секунду и придумана, и поэтому видеоряд последних серий "Следствие ведут знатоки", снятых на телекамеру сразу можно отличить от кинофильмов). Стоишь, смотришь и понимаешь, что твой Mini-DV с матрицей на 1/4 дюйма снимает лучше. а у них от малейшей панорамы стробит.

"ФФ стиле" кинематика и взаимодействие с миром передается шикарно, но идейно это полная противоположность "плакатному" стилю RWBY с его утрировано четкими фазами и "моментальными кадрами" (ФФ даже "замедленная съемка" всегда кажется слитной) но в тоже время более живым.

Вот эти "утрированно четкие фазы" все и убивают! специально, чтобы этого не было, Брюс Ли замедлял скорость трюков для 25-40fps кинотехники, а в современных фильмах вставляют slowmo и bullet time (либо синтезированное, либо снятое на камеры 75-100fps, которых в 70-е у киношников не было).
ФФ выглядит выхолощенным из-за явно видимой компьютерной природы изображения и утрированно театральных выражений героев, живое там только движение.
Плакатный, "рисованный" стиль с пониженным количеством полутонов, подключает воображение и делает картинку "более живой", но зачем для этого убивать живое движение???
Ещё раз приведу в пример "Идентификацию Борна" - достойные трюки на базе айкибудзюцу полностью угроблены фирменной "трясущейся камерой" и рваным монтажом. Причем в следующих сериях операторы вообще забыли о всякой мере и трясущаяся камера от первого лица просто требует выключить фильм. не удивлюсь, если люди заблевывали кинотеатры или выходили оттуда с больной головой - там-то кнопку "стоп" не нажмешь.
В той серии RWBY, на которую тут дали ссылку, боевые сцены смотреть невозможно - остается только начальная стойка, фаза попадания удара, конечная стойка, а все остальное сваливается в нечитаемое мельтешение, которое мозг при просмотре аккуратно удаляет. Еще Станислав Ростоцкий, комментируя церемонию вручения премии каскадеров, жаловался, что сейчас перестали нормально монтировать боевые сцены: оставляют только замах-удар и прием удара, а все остальное хоть одним проходом снимай, хоть клей из 4-5 дублей. (то ли у мультипликаторов научились, то сами их научили) Поэтому таких боевых сцен, как у Брюса Ли, Джеки Чана и Джета Ли больше не делают - сложно, дорого, рискованно, а с помощью монтажа можно сляпать "не хуже", дешево и сердито. Последний, кто реально мог и показывал - Тони Джаа в Онг Бак. У фехтовальщиков еще Роб Рой. у нас - Джамал Ажигирей.
Из очень сбалансированной гармоничной смеси CG с механическими трюками и живыми сценами боя - "Крадущийся тигр, Затаившийся дракон", несколько хуже "Дом летающих кинжалов". Более поздние фильмы с тем же Чоу Юн Фатом тоже ушли в CG-рисованность и неправдоподобие.

причем если смотреть на современной экосистеме - в цифровом виде с удаленного сервиса, с агрессивными кодеками, лагами, неравномерностью движения - "рваная" картинка сильно хуже уже не становится - то ли достигнут уровень днища, то ли мозг зрителя уже приучен исправлять дефекты цифровой природы. но если рядом поставить пресловутую аналоговую экосистему на пике - т.е. большой вакуумный телевизор и полупро камеру mini-dv с тройной матрицей CCD (не CMOS!) в 1/3 дюйма (я уж молчу о betacam) - то ветер, листва и волны будут как в зеркале, а современную экосистему захочется немедленно отключить.
пардон за оффтопик, наболело.
Аватара пользователя
Shleps
постоялец
 
Сообщения: 194
Зарегистрирован: 14.06.2006 20:25:14

Re: Cheb's Game Engine

Сообщение Cheb » 23.07.2022 18:31:36

Shleps писал(а): там камерапосле круга вокруг трупа разворачивается на убийцу и летит к нему даже через полкарты, а потом делает круг почета вокруг убийцы и летит снова к трупу.

Подумал, подумал - и решил, что ограничусь тупой камерой, как в игре-вдохновителе. Причин - две:
1. Дорого. Мой самый ограниченный ресурс - человеко-часы разработчика (одна штука).
2. Идёт вразрез с крайне динамической природой карты. 50% геймплея - перекраивание поля боя в свою пользу. Летающая камера порушила бы принцип "доберись живым, чтобы рассмотреть укрепления противника".

Вот одно из немногих видео полного матча из игры-вдохновителя (на ютубе от таких опытных игроков, как я, вообще нет) - тут расхреначивание спавна синих в труху с последующей охотой на спавнящихся в глубоких ямах. Но возможности строительства - аналогичные. См. что *один* наш игрок высрал над спавном синих - он в одиночку создал потолок над всей той частью карты. И хрен снесёшь. Сами синие тупили и вообще не пытались ничего строить. Только прокапывались от спавна прочь, чтобы зайти спавн-кемперам в тыл.
http://chebmaster.com/_share/aos%202016 ... -02-34.avi 380 Мб

По части разрушения/созидания я собираюсь клонировать один в один, но никакого хитскана, низкий дистанционный дпс, общий пул для патронов всех оружий и блоков - что повысит ценность рукопашки и заставить *ещё* больше думать и расчитывать каждый выстрел, нередко - маневрируя на виду друг у друга, прежде, чем противницы откроют огонь.

Shleps писал(а):Из очень сбалансированной гармоничной смеси CG с механическими трюками и живыми сценами боя - "Крадущийся тигр, Затаившийся дракон", несколько хуже "Дом летающих кинжалов".

Спасибо, гляну на эти примеры, когда руки доползут (скорей всего - к Гималайскому чемпионату по свисту среди раков). Больше знаешь - лучше делаешь.
Дальше - осталось сделать и посмотреть, что у меня получится.

Не могу сейчас кодить от слова совсем, я даже на выходных должен держать мозг свежим, готовым к авральному кранчу.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение Alex2013 » 23.07.2022 19:32:58

Про ролик.....
http://chebmaster.com/_share/aos%202016 ... -02-34.avi
Чрез vlc.exe в режиме "открыть URL" смотрится без скачивания.

1 Гениально поработан фон ! ( уровни детализации совмещаются и подобраны идеально )
2 "Вечерние освещение" и пастельная цветовая гама отлично скрадывают почти весь "кубизм "
3 Красиво работает "взрывотехника".
Но вообщем (ИМХО) нет "ощущения поля боя " неважно от 1-его или то 3-его лица "красивый бой" это не хаос.
(Не знаю уж как это получилось в Первом Квейке но там даже при игре по сети нет "ощущения хоса" )
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

Re: Cheb's Game Engine

Сообщение Cheb » 23.07.2022 22:14:40

Alex2013 писал(а):нет "ощущения поля боя " неважно от 1-его или то 3-его лица "красивый бой" это не хаос.

Потому что это не бой, а избиение нубов.
Синяя команда на карте "колизей" имела критическую уязвимость спавна в том, что он был открытый, хрупкий и лёгким движением превращался в ловушку.
Что они *должны* были сделать с первых секунд - это начать мостить площадку, по типу той, что потом построил зелёный предатель, укреплять её толстыми стенами с фронта и забивать комнаты массивом блоков (двойной прочности, должен заметить) чтобы некуда было проваливаться. Потом начинать оттуда выращивать воздушные мосты, с которых нагибать нас с высоты. Но они просто попёрли, как лемминги. Я разменял несколько жизней на то, чтобы потрепать их спавн - и снайперы уже не могли работать с верхнего этажа, оступались и проваливались в дыры, спавнящиеся проваливались сразу. Обрати внимание - я два бутылька с кислотой в ямки на первом этаже. Это потому, что координаты спавна были - из фиксированного набора, вычисляешь блок, где спавнятся, углубдляешь на 5 блоков - и коси готовеньких, запертых в колодце. Как те двое коммандос, которых впоследствии я закидал кислотой, пока они пытались из этого колодца пропилить себе путь наверх из миниганов.
Дальше - ситуация переломлена, результат немного предсказуем. Вторая половина матча - это не игра, а изнасилование на спавне.
У меня были сотни матчей гораздо более интересных - увы, записать удалось всякую нудятину. Или избиение нубов, или войны снайперов стенка на стенку "хедшот - респавн - хедшот - респавн - хедшот - респавн". Потому что фрапс жрал дисковое пространство, как не в себя, а больше терабайта свободного места на 2015 год - это утопия.
А теперь - всё, с 2019 та игра более не существует.

Добавлено спустя 11 минут 51 секунду:
З.Ы. При наличии целеустремлённых копателей и отсутствии противодействия, колизей подкапывался по всему периметру минут за семь, после чего он исчезал, превращая карту в огромное плоское поле. И вот тогда-то снайперы начинали нагибать!
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение Shleps » 23.07.2022 22:53:13

ОМГ, только что вернулся с первой постковидной игры с более-менее нормальным числом игроков. понял, что играл в основном сам с собой.
выдаешь одной команде задачу на штурм склада и БТР впридачу.
А команда (имеющая опытных игроков, ориентирующаяся на площадке. знающая как работает этот БТР на этой площадке) забивает болт на грамотный проход со страховкой БТРа в окрестности точки и на сам БТР вообще.
Объясняю, что если их раш не пройдет, им в спину ударит вторая половина армии противника, предлагаю послать отсекателей, которые захватят хотя бы дома, хотя бы частично прикрывающие маршрут атаки. 0 внимания. в результате "рашисты" вернулись через 2 минуты в виде трупов, остальные провафлили всю площадку и дождались пока их вомнут в респаун. Причем половина защитников склада даже не увидела ни одного противника.

2 миссию пришлось отменить поскольку очевидно, что команда, только что просравшая более простое задание, с более сложным вообще обломается, расстроится и уедет.

дали им построить бункер на самом ходу вражеской армии, вражескую собрали всю в одно место.
Орлы построили прямую стенку и сами чуют, что как-то не вдохновляют.
начинаю загибать края стенки, предлагаю использовать БТР в виде ДОТа, обложив его ещё укреплениями. в результате получили 2 бункера вместо одного, которые могли прикрывать друг друга. в результате держались, пока патроны не кончились.

миссия эвакуации - пошлите базукера, который перехватит БТР, эвакуирующий людей из здания
не хотите далеко бегать - ловите на прямой на подходе к точке эвакуации. или в момент посадки. или на развороте. или на прямой на отходе. чтобы цель по фронту не перемещалась.
Эвакуаторщики, а вы водителю БТРа объяснили, где обратно разворачиваться? он же вас привезет в засаду.
кстати, вы же можете его развернуть, чтобы дверь десантного отсека погрузку прикрывала
а еще вы можете загнать его кормой прямо в обороняемое здание - вас тогда при посадке с фасада не подстрелят.

Добавлено спустя 14 часов 10 минут 24 секунды:
Cheb писал(а):1. Дорого. Мой самый ограниченный ресурс - человеко-часы разработчика (одна штука).
2. Идёт вразрез с крайне динамической природой карты. 50% геймплея - перекраивание поля боя в свою пользу. Летающая камера порушила бы принцип "доберись живым, чтобы рассмотреть укрепления противника".

первая - самая уважительная причина всех времен и народов.
а вторая.... а ведь для мультеплеера с респавном это просто нечестно по отношению к снайперу, потому что 100% палево.
видимо это только для single-player миссий годится, где умер - и доставай сохранение.
Аватара пользователя
Shleps
постоялец
 
Сообщения: 194
Зарегистрирован: 14.06.2006 20:25:14

Re: Cheb's Game Engine

Сообщение Cheb » 24.07.2022 13:25:19

Shleps писал(а):с более-менее нормальным числом игроков. понял, что играл в основном сам с собой.

Вот :evil: Они такие :evil:
По мотивам сходного рукалицо опыта, я дополнил диздок:

Боты как палка, чтобы заставить игроков осознать полный потенциал игры

Игра-вдохновитель страдала от некорректного описания в Стиме, отсутствия внятного мануала и неспособности большинства игроков осознать, в чём суть игры и как играть весело, используя все её возможности.

Самый большой провал игроков - не использовать возможности строительства, играя, как в обычный шутер со статическими картами, и не использовать возможности разрушения.

Наилучший выход, который я вижу - дополнять команды ботами до минимального числа 8 vs 8 и научить ботов использовать строительство и разрушение - криво, тупо и неэффективно, но достаточно, чтобы надрать задницу неопытному игроку, а главное - наглядно показать «а что, так можно было?».

Бот по любому должен обладать нетривиальными алгоритмами чтобы ориентироваться в том месиве, в какое способны превратить карту игроки.

Тупой комок рефлексов

Сам по себе бот способен лишь на растительное существование в двух режимах: бесцельно бродить и сражаться на рефлексах.
Бесцельно бродить - выбирает случайную путевую точку в радиусе 15 в конусе 120 градусов от предыдущего пути, ищет путь до неё. Три попытки, кулдаун четыре секунды. Если путь не найден - медленно ходит, обходя препятствия по правилу правой или левой руки. Если путь найден - бежит к той точке спринтом.
Сражаться на рефлексах - если не сражается, в случайные моменты времени проверяет видимость и достреливаемость случайно выбранной противницы, с вероятностью, пропорциональной запасу маны. Только базовое оружие, исключая специализированные средства разрушения карты (проруха, ядрён-тотем, осадный фаербол использованы не будут). При попадании агрится на атакующую. Правило случайного брожения при этом сохраняется, только стрейфится лицом к противнице и путевая точка выбирается та, где стоит противница (если внутри радиуса 15) или та, откуда та видна / не видна (в зависимости от преимущества оружий от дальности). При наличии летящих снарядов с переднего конуса 120 градусов - дополнительно стрейфится, пытаясь уклониться.

Сверхразум роя

Осмысленные действия ботов заставляет совершать ИИ «Сверхразум», который один на обе команды и думает за каждую команду по очереди, и только за одного бота за раз. Причём, крутится он только в базовом слое реальности, чтобы не нагружать лагокомпенсацию, и команды ботам доходят с задержкой на лагокомпенсацию (секунда или меньше).

Приближённо, максимум 16 ботов думают с периодом в две секунды = 8 мыслей в секунду.

Сверхразум не имеет тумана войны, но даёт команды ботам делать что-то только в пределах их видимости (исключение - заход противнику в тыл). Ведает поиском пути дальше 15 блоков и обновлениями навигационного графа.

Голимое читерство: карта строится от обратного, определяются «стратегические высоты» и пути подхода, уже под них генерируется местность. Генератор подставляет скалы, перешейки, плавные подъёмы или мосты и лестницы из префабов согласно заранее утверждённому навигационному графу. Точно так же любые подкопы и тоннели, просверливаемые ботами, осуществляются по путям, проложенным до генерации карты, а генератор строит рельеф вокруг этого. Подкопы могут даже иметь мосты через ущелья - но всё это заранее срежиссировано, никакого разума за этими действиями не стоит. Точно то же самое с воздушными мостами для кемперства.

Цепочки феромонов: Сверхразум никаким разумом не обладает (на Rasperry Pi 2 -то, ога). Что игрок, что боты, успешно фрагнув кого-то оставляют там невидимый маркер, держащийся 4 минуты, а фрагнутый оставляет маркер «плохое место, меня тут фрагнули» - и эти маркеры связаны друг с другом. Самим ботам в автономном режиме эти маркеры глубоко до лампочки, но сверхразум по ним вычисляет приоритеты мест для кемпинга, учитывает гиблые места при поиске пути и принимает решения сносить структуры.
При перемещении все - и игроки и боты - тоже оставляют цепочки «хлебных крошек», держащиеся 4 минуты. Сверхразум использует среднюю концентрацию для оценки пригодности мест кемпинга и засад.

Осмысленная деятельность
Сверхразум может давать ботам команды на конкретные виды деятельности.

1. Строить лестницу через препятствие:
Каждый игрок способен быстро построить лестницу, протянув линию из блоков (подошёл к обрыву, начал линию так высоко, как только дотягивается, отошёл назад, держа лкм зажатой, выровнял до земли так, что получилась ровная, проходимая лестница, отпустил. Но игроки, скотины тупые, чаще не догадываются так делать, прут, как лемминги и дохнут как они же.
Если сверхразум определяет, наличие высоты, дающей тактическое преимущество, но не имеющей удобного пути наверх, или построенного врагами препятствия, которое сделало ранее проходимое плечо графа непроходимым - может скомандовать боту построить лестницу. Включая многоэтапные лестницы до очень высоких скал: сначала короткая, забравшись на неё - более длинная, от докуда дотянется уже с той лестницы, на один блок левее или правее, чтобы не мешала чинить первую, и так повторять, пока не дотянется до верха. По завершении - добавить вертикальные линии между низом верхней лестницы и боком нижней, чтобы вся конструкция не рухнула от разрушения всего двух блоков.

2. Чинить:
Противницы способны быстро разломать что зону спавна, что возводимые игроками или ботами строения. Сверхразум может скомандовать боту защищать и чинить заданную зону - т. е. бродить в её пределах, ставить блоки на место снесённых противницами и сносить блоки, поставленные противницами. Включая, если есть кирка, выдалбливание сильно повреждённых блоков и замену их свежими. В качестве окучиваемой зоны может быть задан спавн лечилки, если особо хитрые игроки просвертели там глубокую яму, блокируя доступ.

3. Идти на указанную точку и кемпить оттуда в указанном предпочтительном направлении:
Сверхразум периодически проверяет стратегические высоты и созданные игроками структуры на пригодность к кемпингу (хорошо просматривается область, где часто тусит противник, или много фрагов сделано оттуда) и может попытаться дать ботам, имеющим дальние атаки, команду идти туда и кемпить. Если нет пути - попытается дать команду строить лестницу.
У Сверхразума нету понятия «атаковать», он оперирует только понятием «кемпить». Если противник сливает и боты дошли до их спавна - даст команду кемпить спавн. Соответственно, бот не может преследовать конкретную противницу, только идти на позицию, где противницы (скорее всего та, с которой дерётся сейчас, окажется ближайшей выбранной) будут в эффективном радиусе оружия, и бродить-кемпить оттуда.

4. Делать подкоп:
Только по заранее утверждённым линиям, например, на вершину стратегической высоты или в тыл вражеского спавна. Команда предпочтительно отдаётся боту - крушиле, но дикарка тоже сойдёт (хотя та будет копать в 6 раз медленнее, проделывая проход в те же 3 блока шириной). Ботам не нужно уметь делать подкопы эффективно, достаточно просто уметь делать их.

5. Ломать:
Сверхразум может дать команду ломать и крушить блоки в указанной зоне. Возможные цели: вражеский спавн, вражеские сооружения, у которых высокий показатель «отсюда фрагнули», вражеские сооружения, которые являются препятствиями, перерезающими линии навигационного графа или блокирующими доступ к спавну лечилок. Команда даётся только дикарке или крушиле - это единственная ситуация, в которой боты могут применять осадный фаербол, проруху и ядрён-тотем.

6: Строить воздушный мост для кемпинга:
Только по зщаранее утверждённым линиям и только, если игроки за 4 минуты от начала матча ничего массивного не построили дальше 15 блоков от спавна. Мост будет массивным, укреплённым (т. е. строится крайне медленно, по сравнению с молниеносными эрзацами, что способны высрать игроки), и эта команда отдаётся только ботанке.

7: Устроить засаду:
Крайне примитивное поведение. Обнаружив место, по которому часто ходят противницы - причём, преимущественно в одном направлении - Сверхразум может скомандовать крушиле, куноичи или ботанке устроить там засаду. Крушила выкопает себе нычку, так, чтобы противница появилась в поле зрения на малорй дистанции спиной к ней и засядет там, ожидидая противницу, чтобы выскочить и угостить веером искр в спину. Ботанка посадит цветок-турель так, чтобы на него выскочили из-за поворота на предпочтительной дистанции, желательно - спиной к нему, и пометит себя свободной для следующей задачи. Куноичи засядет рядом с тропой под невидимостью или маскировкой под блоки.

Таким образом, тупящие игроки будут нещадно биты тупыми ботами - и либо уйдут из игры в ярости, либо в мозгах у них просветлеет.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение Cheb » 26.07.2022 11:33:41

На досуге мыслил мысль. Новая механика финального wardrobe malfunction - заодно дешевле в исполнении и без костылей с разворотом модели передом к смотрящему.
1. Одежда исчезает, не разлетаясь клочьями - я здохну в борозде каждому наряду правильные клочья моделить и стартовые позиции подбирать, а движок сдохнет их физику -- а именно исчезает, пуф партиклами спецэффектов, как теневые клоны в наруте.
2. Феечка 300..500 мс продолжает в полу-управляемом рэгдоле (см. видео с зайцем, падение), переходя от позы, в которой застал фраг, к попытке прикрыться. Это чистый red herring, см. ниже. Потом тоже пуф, другими партиклами (ориентировочно, что-то искристое, в командных цветах).
3. Самая жестокость - в методе, которым расставляются и рендерятся партиклы взрыва одежды:
а) партиклы подлежат лагокомпенсации, но при этом являются чисто клиентскими, завися от позиции камеры. Оценочно - их массив забит в параметры модели, которые являются частью физики -там же, где положение костей.
б) все партиклы текстурятся одним и тем же шейдером, что-то вроде Перлинова шума в экранных координатах. Маскируют глубину, не имеют вариаций яркости (берётся средняя освещённость модели).
в) модель рендерится со специальным шейдером, где все неположенные места закрашиваются тем же шейдером, что партиклы - в экранных координатах, без вариаций яркости, так что слияние с партиклами идеальное. Запечено в вершины модели, для которых заодно запечены битые текстурные координаты плюс анатомия барби - чтобы обломать любителей подменить шейдер в ресурсах.
г) переходные зоны *вокруг* неположенных мест закрашиваются тем же шейдером, включаемым да/нет по градиенту от угла нормали на камеру и вариации плотности текстуры. Максимальный фактор при нормали, направленной на камеру, нулевой при нормали перпендикулярной. Таким образом шейдер успешно притворяется частью партикла, а вовсе не виртуальными трусами нарисованными на самой модели, и края округлостей вне 100% запрещённых зон всегда проглядывают.
д) 100% запрещённым зонам сопоставлены четыре вектора (привязаны к костям) которые всегда гарантированно прикрыты партиклом, в указанном радиусе, если камера смотрит на них спереди. Два сверху, два снизу. Система частиц мухлюет, начинает с перекрытия этих векторов партиклами, располагая их между началом вектора и камерой так, чтобы точка была внутри заданного минимального радиуса от края партикла. И только потом добавляет остальные партиклы до нужного количества. Каждый кадр движение и размер партиклов подмухлёвывается так, чтобы эти четыре вектора всегда оставались перекрытыми. Решает проблему с краями закруглений 100% запрещённых зон, которые после рендера модели всегда получатся чёткими.

Заметить весь этот мухлёж за треть секунды, когда мельтешащие партиклы невозможно отличить один от другого и от "виртуального бикини" в той же экранной текстуре? Ну, удачи, бро.

Метод работает во *всех* ситуациях, включая "я ползу на четвереньках по лазу высотой в один блок, другой игрок ползёт следом, упираясь мне в задницу". Позволяет нормальный рэгдол отпнутых в пропасть, падения мордой об землю от пинка со спины и падения на спину, если слетаешь с обрыва спиной вперёд.
Принесёт неисчислимые страдания вечно надеющимся разглядеть больше :mrgreen:

Всё это - поверх штатного механизма, не позволяющего камере проникнуть в модель игрока (потом опишу, там будет хитрый шейдер с пре-рендером в буферы глубины сверхнизкого разрешения, включая бекфейсы, рендерённые с матрицей глаза на затылке - короче, игрок становится местами прозрачным, если камера утыкается, а тем более - погружается в него)
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение Cheb » 27.07.2022 20:07:55

Организация графики и оптимизация менеджмента ассетов:

На досуге кручу организацию движка в уме, обрезая бритвой Оккама всё лишнее.
Идеально заточу под эту игру, и ничего сверху. Любое дальнейшее развитие - пусть будет эволюционным.

Компромиссное решение - сделать модели частью логики. Они достаточно сложные, чтобы для их хранения нельзя было обойтись без использования СУБД. Которая жёстко однопоточная, живёт в потоке логики.
Модели живут от запуска до конца сессии, никуда не сохраняются - и при каждой загрузке читаются из ресурсного контейнера (в котором лежит такой же снапшот БД, как и сохранёнки и сетевые пакеты).
Таким образом, при каждой загрузке модели парсятся заново в потоке логики - что делает быстродействие загрузки не супер-идеальным. Но поскольку общий объём всех моделей ожидается меньше 100к вершин (сильно меньше), фриз смехотворно малый. Особо учитывая, что основной поток умеет рендерить прошлый кадр если поток логики не отвечает.
А учитывая, основной режим игры - сетевой, это вообще ничтожная цена.

Модель - это универсальная сущность (для примера: включает в себя босую ногу, ногу в носке, в сползшем с ноги рваном носке, в сапогах разных стилей, в тех же сапогах, только рваных -- как слои в фотошопе, тако же все головы, все причёски и т.п.). Короче, набор-конструктор. Для рендера служит друга сущность, "вижуал".

прим. авт.: «Pukan» - сердце моей системы рендера, которую буду создавать по итогам нынешнего философствования. Взято несколько идей от Вулкана (такие, как неделимые рендер-стейты, командные буферы) и реализовано в виде лисапеда-обёртки над GL2.1 / GL ES 2.

Вижуал - это то, что раньше называплось «ассет», хранится в программе-матке, имеет очень простой формат (определённый в матке, чтобы его изменить - надо её перекомпилировать). Вижуалы - это то, что напрямую скармливается Пукану в составе командных буферов.

Вижуал идентифицируется 256-битным хешем. Объект, имеющий привязанный вижуал, создавая его (при отсутствии) или обновляя его, генерирует хеш и спрашивает у матки «есть такой?». Если нет - создаёт каждый раз с нуля. Если за один кадр пытается создать слишком много вижуалов - то если это после загрузки - крутит индикатор загрузки, иначе «жди до следующего кадра, а пока жри старый». Без никакого менеджера или сортировки по приоритетам, а голимо как карты лягут. Оставшиеся не у дел стирает менеджер матки, когда протухнут или исчерпается дозволенный лимит пространства (учитываемых ресурсов два: память и видеопамять). Не объектам решать, что делать с их старым, ненужным вижуалом - ибо оный может !внезапно понадобиться обратно, если лагокомпенсация отменила, например, сверхмассивное изменение ландшафта.

Вижуалам привязан только верхний слой локального настоящего, поэтому когда всплывающий слой заменяет его - при рендере первого своего кадра вынужден искать и присоединять все вижуалы по хешам. Хеши, однако, имеются и вычисляются воо всех слоях (иначе ослик здохнет, внезапно пересчитывать хеши всех чанков ландшафта при каждом всплывании слоя, когда подавляющее большинство не менялось уже минуты).

Вижуал может быть чистой текстурой (в т.ч. подцепляемой в виде рендер-таргета), включать в себя уникальную текстуру, либо не включать. Типы: статическая модель, анимированная модель, модель суб-чанка ландшафта.

Модель суб-чанка ландшафта: жесточайше пожатая до 8 бит (а нафиг больше, если блоки всё одно по сетке?) Первый раз рендеря её, Пукан запихивает её в 8-битную текстуру, переводя массив описаний граней в массив описаний вершин, которые вершинный шейдер будет выколупывать из этой текстуры. Очень малая работа для цпу, передаётся на гпу в гипер-сжатом виде (единственное 16 битное - это индексы). Даже внутри гпу минимум гоняний по шине.

Статическая модель: пожатая до 16 бит (для человека это погрешность в тысячные доли милиметра), с уникальной текстурой сгенерированной из модели, причём, один и тот же вижуал может быть использован 100500 кустами или пучками травы.

Лирическое отступление: Модель - в формате редактора, где развёртка и текстура скрыты от художника за слоем абстракции. Художнику надо разметить поверхность на несколько больших областей для развёртки, задать им приоритеты (где почётче, а где и мыльца можно). Сама текстура создаётся наложением декалей и ретушированием кистями весьма ограниченного функционала. В редакторе каждая область поверхности - отдельная текстура, но в движке все используемые участки комбинируются в атлас - уникальный для каждой комбинации подключённых слоёв - и уникальный скин генерится рендером в текстуру всех декалей и мазков кисти. Каждый раз, на лету, после каждой новой дырки в носке. То же с трисами.

Т.е. получить вижуал из модели - это примерно как в фотошопе «Свести изображение» для видимых слоёв + экспорт в png, только применительно к геометрии. Анимированные модели отличаются от не анимированных только наличием данных для скиннинга.


Анимированная модель: положения костей и динамика движения костей (ускорения) - часть объекта, т. е. полностью часть логики. Подлежат полной лагокомпенсации. Анимация не считается изменением вижуала, записывается в командный буфер Пукана в паре с вижуалом. Физическим вторым проходом анимации занимается только Пукан, в основном потоке, предпочтительно - с привлечением гпу.

Итак, весь наш бывший менеджер ассетов съёжился до простейшей специализации TMap с парой дополнительных методов авто-вычистки не используемых элементов.
Что очень хорошо, и очень удачно: конь здесь ещё не успел поваляться. Сэкономлены многия человеко-часы.

Добавлено спустя 36 минут 25 секунд:
З.Ы. Что такое сиська?
С точки зрения физики - это сферический коллайдер с массой, подвешенный на нелинейных пружинках.
С точки зрения первого прохода анимации - это кость морфинга, материальная точка, за отклонением которой линейно следуют все вершины (включая невидимые вершины тетрокселей), с коэффициентом от 1.0 на конце до 0.0 у основания.
С точки зрения второго прохода анимации - это генератор сил, действующих на соответствующий массив тетрокселей, эмулируя инерционность (поскольку сами тетроксели имеют нулевую инерционность).

З.З.Ы. Что такое тетроксель? Это основа второго физического прохода анимации, составляющая внутреннюю физическую структуру модели. От трисов поверхности до глубоко внутри идёт сетка тетраэдров. Тетроксель генерирует силы, прилагаемые к вершинам, исходя из стремления сохранить константный объём. Просчитывается до примерного схождения в 2..3 итерации.

Добавлено спустя 3 часа 33 минуты 39 секунд:
З.З.З.Ы. Напоминаю: ещё ранние версии СУБД, в 2008-м, показывали скорость десериализации около миллиона инстансов в секунду. На бюджетном аналоге Core 2 Duo, искусственно замедленном до 1.0 ГГц, с памятью DDR2 400. Даже вторая малина шустрее, да ещё основноым ограничивающим фактором были диспетчер памяти и загрязнение кеша. Диспетчер памяти инстансов в нынешней версии свой, гипер-оптимизированный, от загрязнения кеша я избавился "ускоренными полями" (так и не смог придумать этой фиче крутого названия, хнык)
Надо будет устроить бенчмарк уже нынешней. Жду не дождусь.

Добавлено спустя 8 часов 49 минут 20 секунд:
З.З.З.З.Ы: И вот тут Штирлиц догадался, что Пукан имеет потенциал задействовать *все* ядра для просчёта анимации на цпу. А это, минуточку, + 2 потока на четырёхъядернике (да та же вторая малина - она же четырехъядерная). Или хреналион потоков на Тредриппере.

Добавлено спустя 2 минуты 18 секунд:
Символ сей графической библиотеки - шар Свиборга, с суровой мордой возносящийся на реактивной струе.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение Shleps » 28.07.2022 20:58:28

Cheb писал(а):Пукан имеет потенциал задействовать *все* ядра для просчёта анимации на цпу. А это, минуточку,... хреналион потоков на Тредриппере.


Тим Суини, автор анреал энджин, кстати, всегда был за рендеринг на цпу и считает его идеологически более правильным и именно амдшное супермногопоточное железо дает ему разгуляться.
Аватара пользователя
Shleps
постоялец
 
Сообщения: 194
Зарегистрирован: 14.06.2006 20:25:14

Re: Cheb's Game Engine

Сообщение Alex2013 » 28.07.2022 21:35:02

Привет ! "Информация к размышлению" На всякий пожарный ! Если надумаешь все же купить "чудо враждебной техники " (Квест 2) то рекомендую посуетится бо "враги государства и всего живого " объявили, что намереваются "на новый год" поднять цену на сто баксов. ( Наверное потому что "подавлением прогрессивной общественности" придется снять обязательную регистрации на злобной мордо-книге - наче видимо "вкусного китайско рынка" им в всерьез не видать как своих ушей ). Оба известия для "жителей ближнего заполярья" (да не и только бо лишние хлопоты будут всем юзерам ) нешибко радостные бо черт знает что там будет с новым аккаунтом на новом сайте и будут ли его блокировать ( по идее недолжны бо к мордо-книге отношения не имеет но "запрещенные буквы" в названии есть так что хрен его знает ) В принципе пока всем пользователям пофиг ( все "БлижнеЗаполярные" научись лихо юзать VPN и не юзать мордо-книгу иначе чем для использования Квеста + регистрироваться "жителями Нагонии и Гарибаса" что даже теоретически не оставляет следов ). А вообще судя по интернету сами Квесты 2 и их продажу в РФ никто не запрещает. ( что забавно и не может потому, что их давно уже юзает целая куча госконтор и вузов )
Зы
По идее сильным ходом китайцев будет "встречное" снижение цены на "импортозамещающий" Pico Neo 3 (а потом и Pico Neo 4) хотя мне уже весной попадались на али-экспресс лоты с ценой в 300-350$ за 128 мб версию ( правда держались они недолго ) но как он будет в ИРЛ все-же непонятно . Так что думай!
https://www.ozon.ru/product/ochki-virtu ... 1lJLr2qCCQ
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

Re: Cheb's Game Engine

Сообщение Cheb » 29.07.2022 11:20:53

Урезание: модулю НЕ будет доступен гапи напрямую. Только через Пукан.
Результат - упрощение длл режима разработчика, возможность использовать любые заголовки OpenGL, а не только специально допиленные, возможность штатно грузить OpenGL средствами SDL.

Alex2013 писал(а):Если надумаешь все же купить "чудо враждебной техники "

Нет, звиняй. Это очень вкусно, но слишком дорого по человеко-часам. Даже задумываться о поддержке пико начну не раньше завершения *второй* игры на движке.
К тому же, я уже вбухал все деньги, которые были - и те, которых не было, тоже - в апгрейды игрового компа и файл-сервера. Хватал, как укушенный чёрной пятницей потребитель, в режиме "удав проглотил крокодила и лопнул". Теперь задница скребёт по мели, даже недавняя толстая премия не помогла.

Shleps писал(а):кстати, всегда был за рендеринг на цпу

Согласен. Для планируемого мной механизма анимации, простейший четырёхъядерник даёт 3 потока. Восьмиядерник - это уже выход на околоземную. И только на двухъядерном Core 2 Duo всё будет грустно, только в основном потоке.
Но механизм анимации сложный, лоды на шейдер тесселяции не переложишь (т.к. физическая анимация - в несколько проходов, где потенциально каждая вершина зависит от всех остальных). Даже портирование на OpenCL маловероятно, т.к. задача слишком высокой сложности для новичка в OpenCL.

Ещё на ту же тему:
Why you SHOULD build your own GAME ENGINE
Unity DOTS vs Handbuilt: Sample Project : скромненькая такая десятикратная разница в производительности.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение Alex2013 » 29.07.2022 13:24:42

Cheb писал(а):Нет, звиняй. Это очень вкусно, но слишком дорого по человеко-часам. Даже задумываться о поддержке пико начну не раньше завершения *второй* игры на движке.

Ну как знаешь .. (Версия Пико что на Озоне 256 Мб что типа "про-версия" (По этому стрит 400$) а Квест 2 как вариант даже не рассматриваешь ? Ладно больше спрашивать не буду. ) . Что касается Пико Нео 3 то его "и хочется и колется" ( есть то в чем он явно лучше Квеста 2 но есть и "темные стороны" ) Кстати в продаже есть и значительно более дешовый (раза в три ) Пико Нео 2 это что-то промежуточное между Окулус Гоу (или Квест 1) и Квестом 2 . Но смысла в нем действительно немного хотя разрешение впечатляет есть сильные искажения и т.д .
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

Пред.След.

Вернуться в Разработки на нашем сайте

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17

Рейтинг@Mail.ru