Попробовал сделать игру в Godot Engine

Последнее время часто тут вижу, как люди делают что-то интересное: кто игру, кто интерфейс по приколу пилит. В общем, это меня замотивировало поднять свою жопу и тоже что-нибудь сделать.

3434

Я когда пробовал сделать - оказалось что все 3д игры на годоте текут памятью и из меня главный разраб годоте вымогал бабло за решение этой проблемы.

https://www.youtube.com/watch?v=Pjivz_3BQZo

До официального релиза годота фикс утечки добрался месяцев так через восемь.

Ответить

если ты про эту проблему:
https://github.com/godotengine/godot/issues/40059

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

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

Но не суть.

Эта хуита, проблема, решалась простейшим пуллингом без удаления из дерева.

```
freezed = true
collision_layer = 0
collision_mask = 0
visible = false
set_physics_process(false)
```
просто в место удаления, ты просто отключаешь обьекту физику и скрываешь его.
Это даже будет лучше, в буффере держать тысячу обьектов, чем делать тысячу free, new, instance и add_child, самые дорогие операции по производительности кстати.

Вторая жалоба, на тени - там использовался GLESS2 который с динамическими тенями работает ОЧЕНЬ плохо, а он в физическом кадре рескейлит обьект, который в кадре рендера пересчитывает весе тени в той области. В место этого, проблема решается невидимым ПРИМИТИВНЫМ мешем бросающим тень и оригинальным мешем без тени. Примитив не трогаем, оригинал - скейлим. Физическое тело кстати скейлить тоже не рекомендую. Лучше в этом случае сделать 2-3 вида шейпов для 1.0, 0.7, 0.5 и 0.3 размером. Но если обьект достаточно быстро исчезает, то шейп можно не скейлить вообще, а только визуальный меш с отключением физики обьекта.

Что еще лучше по производительности.

Ответить