Cheb's Game Engine

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

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

Re: Cheb's Game Engine

Сообщение Cheb » 07.06.2022 10:28:36

"To go beyond the Super Sayan that is beyond the Super Sayan".

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

Тем временем, на фронтах движка: очередной фичакат, решительный и беспощадный. На этот раз фтопку отправляется переключение модулей, запускаемых одним екзешником-маткой. НЕ БУДЕТ. Один модуль - один екзешник, где весь код ДЛЛ заодно вкомпилированн в матку. В идеале - один поток физики/логики.
Нужен инструмент на основе движка - делаю отдельное приложение и учу движок корректно закукливаться при потере фокуса.

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

Re: Cheb's Game Engine

Сообщение runewalsh » 07.06.2022 12:50:27

Cheb писал(а):то-ли оптимизатор кода в турбе сосал

Его вообще не было, i := i + 1 и inc(i) компилировались в разный код (я в том возрасте в ассемблерный код не смотрел, так что по слухам).
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 578
Зарегистрирован: 27.04.2010 00:15:25

Re: Cheb's Game Engine

Сообщение Cheb » 07.06.2022 16:59:18

runewalsh писал(а):Его вообще не было,

От как.

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

Re: Cheb's Game Engine

Сообщение Cheb » 09.06.2022 09:54:17

Дополнительно фтопку: "режим разработчика" - *только* под Win32. То.Есть. Для других платформ НЕ БЫВАЕТ отладочных DLL. От слова совсем.
Линуксовая версия - это экзешник. Всё.

Чего, блfгодаря этому, НЕ придётся делать: механизм отлова исключений в длл для Линукса. Месяца три мозготраха в минус.
У меня в своё время ушёл ГОД на создание мозголомных хаков к механизму отлова исключений Фри Паскаля, который не работал (от слова "совсем") в версиях ниже фпц 3.2 (любое AV становилось классическим crash-to-desktop, забивая большой и толстый на все блоки try). Теперь я этот эпик вырезаю за ненадобностью, ибо в 3.2 "всё работает" (tm).
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение Alex2013 » 09.06.2022 13:17:53

Cheb писал(а):Да, но сначала надо было *знать*, что существует такая штука. Интернет у меня появился в 1998-м, кажется, но точно не раньше, чем пентиум. Сначала - пентиум, потом уже - модем.

А BBS и FIDO профукал ? Зря батенька! :idea: Самый смак ФИДО был в первую волну! ( Я уже во "вторую волне" до ФИДО добрался где-то в 1997-м ( и просидел в FIDO где-то 10 лет ), а ББС начали появляются где-то с 93-го (помню что Дум 2 - в 94 -95-м точно был самым "укачиваемым" контентом ) несмотря "на военно китайские" модемы в 2400-бод )
Alex2013
долгожитель
 
Сообщения: 2925
Зарегистрирован: 03.04.2013 11:59:44

Re: Cheb's Game Engine

Сообщение Cheb » 09.06.2022 13:48:58

Alex2013 писал(а):А BBS и FIDO профукал

Ну и от кого бы я про них узнал?
Это повезти с друзьями должно было.
Иметь свой ПК в то время - это надо было родиться богатеньким буратиной - я, конечно, и близко не стоял с некоторыми сокурсниками, рассекавшими на собственной иномарке (хоспади, его манера вождения травмировала меня на остаток жизни) - но 386-й это таки тысяча долларов. Для подавляющего числа людей... Ога, ога. На панель, в бандиты, волшебник в голубом вертолёте - нужное подчеркнуть.

По проекту: а язык .BAT файлов, используемых мною в качестве makefile, травмировал меня сегодня.
Если хотите потерять покой и сон - пояндексите SETLOCAL ENABLEDELAYEDEXPANSION :cry:
Я, конечно, перемог - но просто ощущаю, как седой волос в бороде добавился.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение Alex2013 » 09.06.2022 14:11:54

Ну во второй половине 90-х с компами все уже не было так печально. (Для "ты-же-программиста" вполне были на халяву доступны конторы, вузы, и отчасти игровые клубы, а дома я эволюционировал с 286х до 486х DX2-66(-100) где-то года за три (хотя с первыми пнями дома у меня "не сложилось" от слова совсем - пошел по альтернативной цепочке вначале Цирусы, а потом полотно подсел на АМД ) А вообще в FIDO заходили даже с ZX Спектрумов но это отдельная история)
Alex2013
долгожитель
 
Сообщения: 2925
Зарегистрирован: 03.04.2013 11:59:44

Re: Cheb's Game Engine

Сообщение Seenkao » 09.06.2022 19:24:23

runewalsh писал(а):Его вообще не было, i := i + 1 и inc(i) компилировались в разный код

потому что в то время это было правильно
Код: Выделить всё
inc AX

работало быстрее и код был короче
Код: Выделить всё
add AX, BX

для 8-и и 16-ти битных систем. И лишь в 32-х битных произошли изменения, но изначально оставляли всё как есть.

Добавлено спустя 4 минуты 14 секунд:
Cheb писал(а):Ну и от кого бы я про них узнал?

достаточно популярная сетка была. Если даже не было компьютера, но была возможность их использовать, то зачастую можно было "столкнуться" хотя бы с названием.
Seenkao
энтузиаст
 
Сообщения: 502
Зарегистрирован: 01.04.2020 03:37:12

Re: Cheb's Game Engine

Сообщение Cheb » 09.06.2022 22:18:19

Значит, меня подкосил тот факт, что когда нормальные дети рыскали в поисках друзей с компом - я напрашивался к маме в институт экономики. И я общался не со спектрумом, а советским госплановским монстром ценой с автомобиль "Волга" с жёстким диском со сменными дисками, принтером - ромашкой раазмером со стол и графикой высокого разрешения 512х256 1 бит. "Искра-226" оно звалось.
А потом - 286-й в сейфе (который, вообще-то, предназначен был работать тупым терминалом для советского мэйнфрейма, вместо этой самой "искры"). Зацените, я нарисовал в 1987-м - а для этого сам написал графический редактор, управляемый с клавиатуры:
(упс)
..нууу и любые усилия искать что-то ещё - просто не существовали. А в универе у сокурсников интересы были не в той плоскости - а на факультет вычислительной техники я не решился поступать, там конкурс огого, а армия за спиной уже зияла. Со всеми страшными историями про дедовщину, популярными в 1992-м.

Добавлено спустя 5 минут 34 секунды:
З.Ы. что-то форум тупит, калечит урл со скобками

Добавлено спустя 3 минуты 41 секунду:
З.З.Ы. А не, это мой сервер таки издох. Отключается.
На выходных буду чинить.

Добавлено спустя 39 минут 43 секунды:
З.З.З.Ы. Когда отключаете в сервере основной корпусной вентилятор за бздёх над ухом - не забывайте об этом на следующие лет пять. Ибо лето, жара, опаньки.

Изображение
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение Alex2013 » 10.06.2022 00:41:03

Ух Искра 226 ? Я их застал но сам с ними не работал (Вон книжка на полке до сих пор лежит "Искра 226 архитектура и программирование" :D ) А свой первый графический редактор я для Ямахи Кувт 2 на школьном кружке писал.
Тоже где-то в 1987-м
Изображение
...а еще завилял говорить «Тюлилихум ааухум» (это из страшилки "Белая трость калибра 7.62") потусторонним голосом с помощью команды play .
Последний раз редактировалось Alex2013 10.06.2022 21:25:07, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 2925
Зарегистрирован: 03.04.2013 11:59:44

Re: Cheb's Game Engine

Сообщение Shleps » 10.06.2022 09:52:01

А я - на УКНЦ в 88 или 89. Живая УКНЦ до сих пор стоит дома (хотя естессно не тот экземпляр). А распечатанный скриншот редактора - рядом в рамочке.
Изображение
Аватара пользователя
Shleps
постоялец
 
Сообщения: 194
Зарегистрирован: 14.06.2006 20:25:14

Re: Cheb's Game Engine

Сообщение Alex2013 » 10.06.2022 14:21:07

Shleps писал(а):А я - на УКНЦ в 88 или 89. Живая УКНЦ до сих пор стоит дома (хотя естессно не тот экземпляр). А распечатанный скриншот редактора - рядом в рамочке.
Изображение

Круто !
Самый интересный графический редактор я для Электроники 85 на первом или втором курсе института писал (где-то 89 или 90-м году) .
Там была возможность использовать "мировые координаты" и я отрывался делая "бесконечное увеличение" Типа : Длинный тунель коридор "сходящийся в точку", который после нескольких итераций зума выводил на ночной пейзаж с озером лесом замком и луной при приближении к луне можно было посмотреть на катающейся по ней луноход и т.п.
Alex2013
долгожитель
 
Сообщения: 2925
Зарегистрирован: 03.04.2013 11:59:44

Re: Cheb's Game Engine

Сообщение Shleps » 10.06.2022 14:31:59

У меня есть электроника МК-85. Увы уже неживая. Портативный микрокомпьютер с бейсиком, который замечательно считал определители, брал численные нтегралы для проверки и работал, как шпора для формул по физике, если калькулятор разрешался, чтобы посчитать. Однажды на вопрос препода "где же ваш математический
Аппарат" я гордо потряс сим девайсом.

А бесконечный зум у меня сейчас есть в pencil'е, но до замка под луной и лунохода я не додумался, хватило только на трёх буквенное слово внутри чертежа ))))
Аватара пользователя
Shleps
постоялец
 
Сообщения: 194
Зарегистрирован: 14.06.2006 20:25:14

Re: Cheb's Game Engine

Сообщение Alex2013 » 10.06.2022 14:58:31

Shleps писал(а):У меня есть электроника МК-85. Увы уже неживая. Портативный микрокомпьютер с бейсиком, который замечательно считал определители, брал численные нтегралы для проверки и работал, как шпора для формул по физике, если калькулятор разрешался, чтобы посчитать. Однажды на вопрос препода "где же ваш математический
Аппарат" я гордо потряс сим девайсом.

Самое интересное что для Электроники 85 был доступен "светский Юникс" ИНМОС (Инструментальная мобильная операционная система) жуткая в изучении и сильно тормозная ось но многозадачная и с кучей софта. Вроде была еще аналогичная ОС ДЕМОС (Диалоговая единая мобильная операционная система) но я ее не видел.)
Alex2013
долгожитель
 
Сообщения: 2925
Зарегистрирован: 03.04.2013 11:59:44

Re: Cheb's Game Engine

Сообщение Cheb » 12.06.2022 15:29:53

Звиняйте, други, я долго любил настройки сервера, а настройки сервера любили меня.

Alex2013 писал(а):А свой первый графический редактор я для Ямахи Кувт 2 на школьном кружке писал.

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

Shleps писал(а):Живая УКНЦ до сих пор стоит дома

Вай :D
Просто душу греет.

Alex2013 писал(а): при приближении к луне можно было посмотреть на катающейся по ней луноход и т.п.

Фига ж себе :D

Добавлено спустя 12 часов 13 минут 4 секунды:
В дополнение к посту от 19 декабря 2015-го:

- слои будут реализовываться за счёт флагов и ускоренных полей (реализованы в 2019-м). Число возможных слоёв ограничено (ориентировочно, 6 слотов: слоёв - максимум 5 + один свободный), т.к. пространства флагов и ускоренных полей очень ограниченные (29 или менее) и достаточно дорогие. Флаги будут отмечать наличие клонов инстанса в других слоях (для скорости: флаги - это одно ускоренное поле), а в ускоренных полях будут храниться ссылки на инстансы (на 64-битной платформе - специальная функция упаковки их в uint32, закодил ещё в 2019-м)
- инстанс на кладбище не может быть удалён, если у него есть клоны в вышележащих слоях: ссылка на инстанс - *всегда* на экземпляр того слоя, где был порождён, а доступ к вышележащим клонам - всегда через его ускоренные поля. То есть, он застревает в зомби-стейте, пока не исчезнут вышележащие слои. Удаление клонов НЕ освобождает его, поскольку эти цепочки имеют знание только снизу вверх.
- поскольку все открываемые на запись инстансы слоя клонируются в ближайший вышележайший - то они не могут быть удалены, пока этот слой не сдохнет. А слой может сдохнуть *только* пребывая на самом верху и будучи заменён следующим всплывшим. Для базого слоя - это может стать проблемой, т.к. он всегда полный, а отпочковывающийся от него слой живёт минимум 500мс. И все инстансы, модифицированные за эти 500мс., продолжат отягощать кладбище. Кстати, серьёзный повод задуматься о дроблении кладбища на несколько, зависимые от слоёв и авто-дропаемые при сдыхании оных.
Инстансы, *созданные* во всплывающем слое - никак не влияют на нижележащий (предполагается, что он породит точно такие же, но свои, когда дотикает до того же места)
- поскольку слой может двигаться только вверх, возможно, порождая отпочковывающихся потомков - и желательно, чтобы сдыхал поскорее, чтобы память не забивалась - не может быть фиксированных ролей слоёв.
1. базовый эталонный, на -500 или -1000 мс, в зависимости от настроек сервера
2. медленный всплывающи - превращается в 3, когда выталкивает тот - а на замену ему 1 отпочковывает новый 2.
3. ближняя база на -200..-150 мс.. превращается в 4, когда его снизу выталкивает 2
4. быстрый всплывающий - превращается в 5, когда выталкивает тот. На замену ему 3-й отпочковывает новый 4-й - если там на подходе нету 2-го, который выпнет сам 3-й стать 4-м.
5. настоящее локального игрока. дискардится, когда его выталкивает всплывший 4.

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

Прикидочный порядок выполнения (слой-потомок ничего не знает про слой-прародитель, и никак не влияет на состояние его инстансов, хотя вовсю пользуется принадлежащими ему инстансами - так что, выполнять их можно в любом порядке) (З.Ы. шаг физики - 1мс, т.е. эффективные fps физики = 1000)
- 5 настоящее локального игрока сдвигается на число милисекунд, прошедшее с прошлого кадра
- заполнение командного буфера на рендер
- 1 эталонное прошлое - сдвигается на число милисекунд, прошедшее с прошлого кадра
- 4 быстрый всплывающий - сдвигается по одной милисекунде, пока его выполнение не сожрёт выделенное число милисекунд (с учётом отожранного предыдущими этапами) или он не выпнет 5-й
- 3 ближняя база сдвигается по одной милисекунде, пока не наберёт число милисекунд, прошедшее со времени последнего кадра - или не упрётся в аварийный лимит реального времени.
- 2 медленный всплывающий - сдвигается по одной милисекунде, пока не выжрет оставшееся реальное время по остаточному принципу.
Тут самый адаптивный - 4-й, жгёт циклы до железки ради повышения качества лагокомпенсации (на современном быстром компе - просто тупо пересчитывает все изменения мира за последние 200мс каждый кадр и возносится до 5-го). Балансировщик отнимает у него время, если начинает отставать 3-й или слишком замедляется 2-й (который должен идти вперёд на 1.5х..2х). Если реального времени хоть анусом жуй - ускоряет и 2-й, ибо чем быстрее они всплывают - тем плавнее лагокомпенсация.
Всё, естественно, расчитано на *худший* случай (абсолютно музейный проц + память DDR2 666 МГц) - а на современном игровом компе рискует выйти на околоземную орбиту.

Добавлено спустя 7 часов 22 минуты 23 секунды:
З.Ы. Насчёт использования лишних ядер для ИИ - у меня есть весьма извращённая идея. Запускать дополнительный экземпляр екзешника, давать ему копию игрового мира - и присоединять его к игре, как "локальный бот-мыслитель". До опупения неэффективно, т.к. каждый такой будет заодно к ИИ гонять полную копию всего мира - но достижимо.
Но это вилами на воде писано, ибо чую я, что моя оптимизированная физика будет всегда упираться в память, выжирая её пропускную способность одним тредом. И тогда такое распараллеливание ну вот нахрен не нужно.

Основной, жирный, минус - один и тот же объект может существовать в идентичном до бита виде в разных слоях, не затронутый влиянием ни одного игрока - и таких, по факту, будет абсолютное большинство. Но это разные инстансы, один огр подменяется абсолютно идентичным огром, когда слой 4 становится слоем 5, дискардя тот. Иии... Как прикажете связывать их с ассетами? Чтобы, например, экономить на анимации, просчитыва только дельту с прошлого кадра? Или с модифицированным скином, где глаз подбит?
Это *возможно*, за счёт контрольных сумм. По факту, у всех ассетов идентификация по хешу. Но он а) толстый (32 байта) и б) вычисление мд5 суммы тяжёлое. Но всё равно при дропании слоя надо устраивать пляску с передачей ассетов...

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

Пред.След.

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

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

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

Рейтинг@Mail.ru