o2 dev
108 subscribers
49 photos
4 videos
25 files
54 links
About o2 engine development
加入频道
● test_gpt.py - PetStory - Visual Studio Code 2024.png
424 KB
окей, посмотрим на сам скрипт. В целом, он весьма простой
ну а теперь самое интересное - результаты!
При тренировке промта я пробовал разные куски кода через Copilot. Выходило, ну нормально. Но прогнав целые сорцы, результат меня разочаровал
Fork 2024-02-03 14.59.06.png
194.3 KB
вот пример где сработало хорошо
Fork 2024-02-03 14.58.29.png
68.8 KB
вот тоже, хоть и опечатку сверху оставил
Fork 2024-02-03 14.59.27.png
185.4 KB
во многих местах решил поменять табы на пробелы. Я пробовал ему явно это запрещать, но наверное он тоже считает что те кто ставит пробелы, зарабатывают больше
но в основном получалась полная херня. Постоянно фантазирует и вставляет откровенную дичь. Делает не то что ты попросил. Не делает то что ты попросил. Дальше, просто несколько примеров
остается понять, какую часть я смогу себе реально взять. Это сложно, потому что мне так же рутинно нужно все посмотреть
да, можно продолжить эксперименты с промтами, сделать систему подсказок для определенных сорцов и ситуаций и дотюнивания. Но, выгодно ли это? Я думаю скорее нет. К сожалению, для такой задачи GPT плохо подошел. Но я попробую еще идею с документацией, как-нибудь в будущем )
сегодня попробуем достать тему из закромов - про физику в играх.

Когда-то давно я очень этим увлекался, писал свои физические движки и симуляции. Есть даже несколько старых видео
- 3д физика
- физика тканей
- физика самолета
- физика авто

Все это писал сам, в основном по сторонним туториалам, ибо тогда мозгов было маловато чтобы до всего допереть самому. Например, как этот чел с gamedev.ru

Но общие принципы в голове сформировались, и имхо это полезно знать каждому разработчику игр
Вообще, мне кажется значимость физики в играх весьма недооценена. Везде слышишь и видишь как в движках дрочат на графику, у кого лучи, у кого хаки, и кого чуть больше стало похоже на реальную картинку. И это так, сейчас можно снимать скриншоты из игры и они крайне похожи на реальность. Даже Unreal Engine активно используется в кино, тк он может реалтайм выдавать классную картинку, неотличимую от реальной картинки.

Но вся иллюзия быстро рассыпается когда эта картинка начинает двигаться. Даже не так, какие-то "твердые" вещи в играх выглядят весьма правдоподобно - дома, машины, роботы и тд. Но персонажи, разрушения - это прям беда. А наш мозг очень сложно обмануть, он подмечает самые мельчайшие детали. И пусть даже словами сложно сказать что не так, то мозг быстро отличает фейковую картинку от настоящей. Особенно это заметно на всяких лицевых анимациях. Будем честны, технологии шагают вперед, но как были резиновые рожи в играх так они и остались. Они не выглядят естественными и правдоподобными. Они выглядят "окей", чего вроде бы достаточно. Единственный пример обратного, который я могу привести - это Hellblade: Senua's Sacrifice. Там лицевая анимация просто топ, имхо это должно стать стандартом индустрии

Ключ к этому, на мой взгляд, именно в физике. Она может добавить еще большей реалистичности, еще больше обмануть мозг в том, насколько реалистичную картинку он видит. Просто взгляните на этот пример захвата физики мышц. Выглядит гораздо реалистичнее современных игры? Причем, в плане самого рендера картинка супер-примитивная. Здесь нет физичного освещения, никаких карт нормалей и других поверхностей, однако человек выглядит хорошо и правдоподобно
Еще пару моих любимых примеров качественной физики: всем известный beam.ng и малоизвестные мододелы для besiege. Здесь учтены те самые детали, которые сложно описать словами, но легко заметить глазу.

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

Итак, как же оно устроено внутри в игровых движках? А точнее физических
Первое с чего нужно начать - это дискретность. В отличии от реальной жизни, на компьютере нам приходится считать физику по кадрам. То есть раз в какой-то короткий промежуток времени (1/60 секунды обычно) тела замирают, происходит пересчет точек контакта, взаимодействующие силы, и затем 1/60 секунды тела летят по своим направлениям как будто ничего нет. Снова останавливаются, все пересчитывается и они снова летят

И в этом огромны геморрой
Казалось бы 1/60 секунды - достаточно малый промежуток времени. Но не в физике... За это время может произойти многое. Как правило это связано с большими силами, и, как следствие, большими скоростями. Тела проникают слишком глубоко, или вовсе друг через друга. Классический пример: пуля, летящая через тонкую стенку. Один кадр она с одной стороны стены, следующий кадр - с другой. И никакого контакта между ними не было