forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Godot (http://forum.boolean.name/forumdisplay.php?f=181)
-   -   Вопросы (http://forum.boolean.name/showthread.php?t=20848)

Arton 28.01.2021 18:08

Ответ: Вопросы
 
Цитата:

Сообщение от MadMedic (Сообщение 318406)
Импортированы как текстуры, все настройки импорта были по умолчанию кроме выключенного флажка filter

Погоди, если у тебя для 2D интерфейса то нужно выбрать Image.
По идеи.

Нет.

ant0N, где почитать про режимы импорта?
Почему если я Texture меняю на Image или TextureAtlas редактор обязательно перезапускается?
...
Так, TextureAtlas вроде позволяет несколько изображений в одно объединить, ладно.

Цитата:

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

Ты имеешь ввиду настройки импорта, а не пересохранение в .tex?
Потому что в последнем не вижу смысла (пригодилось для mip-map), в первом же копии импорта создаются автоматически.

P. S. Термин «запечь» в данном случае неуместен.

P. P. S.
Цитата:

Сообщение от Arton (Сообщение 318407)
Ты имеешь ввиду настройки импорта, а не пересохранение в .tex?
Потому что в последнем не вижу смысла (пригодилось для mip-map)

Ошибся, в этом есть смысл. Не будет копии в папке import, т. к. файл уже готов для движка.
По идеи относиться ко всем ресурсам окромя сцен и кода.

ant0N 31.01.2021 18:30

Ответ: Вопросы
 
Сорян что так долго, работал
воевал с юнити


Цитата:

Сообщение от Arton (Сообщение 318408)
ant0N, где почитать про режимы импорта?
Почему если я Texture меняю на Image или TextureAtlas редактор обязательно перезапускается?

В доках, прям в поиск вбивай то что нужно найти, там достаточно информации.
Например: Texture, Image
То, что редактор перезапускается, это нормально для некоторых ресурсов. Видимо необходимо для реимпорта, думаю со временем это исправят.

Цитата:

Сообщение от MadMedic (Сообщение 318406)
Версия 3.2.3 штабле официале
Импортированы как текстуры, все настройки импорта были по умолчанию кроме выключенного флажка filter

Нажми на проблемное изображение и покажи что у тебя в окне импорта написано.

MadMedic 01.02.2021 06:33

Ответ: Вопросы
 
Вложений: 1
Вот скрин. Тут и настройки импорта, и ворнинги и кусочек кода

ant0N 01.02.2021 10:39

Ответ: Вопросы
 
Твоя проблема в том, что ты грузишь картинки не через Resourceloader.
Поэтому настройки импорта игнорируются.

Вместо:
temp_image.load("path")

Пиши:
temp_image = load("path")

MadMedic 01.02.2021 10:58

Ответ: Вопросы
 
О, спасибо!

MadMedic 28.04.2021 11:36

Ответ: Вопросы
 
Хм, скрипты обновляются в разных потоках? Получил ситуацию , когда в ходе выполнения функции скрипта, значение переменной другого скрипта изменилось.

Arton 28.04.2021 22:41

Ответ: Вопросы
 
Цитата:

Сообщение от MadMedic (Сообщение 318820)
Хм, скрипты обновляются в разных потоках? Получил ситуацию , когда в ходе выполнения функции скрипта, значение переменной другого скрипта изменилось.

Я не в курсе потоков, но на всякий случай, у тебя какая версия?

В версии 3.2.3 была ошибка из-за которой после удаления объекта не удалялась ссылка, и вела на новый объект в этой же памяти (часть оптимизации).

Актуальная версия сейчас 3.3

MadMedic 30.04.2021 05:03

Ответ: Вопросы
 
Цитата:

Сообщение от MadMedic (Сообщение 318820)
Хм, скрипты обновляются в разных потоках? Получил ситуацию , когда в ходе выполнения функции скрипта, значение переменной другого скрипта изменилось.

Сорян, это я затупил по серьезному и накосячил, все работает нормально. Еще раз убедился, что Годот классный ))

ant0N 30.04.2021 12:22

Ответ: Вопросы
 
Цитата:

Сообщение от MadMedic (Сообщение 318820)
Хм, скрипты обновляются в разных потоках?

в одном конечно, иначе нужны были бы всякие мьютексы и вот это вот все

Arton 31.03.2022 07:38

Ответ: Вопросы
 
Вложений: 1
Загружаю сцену:
Создаю переменную Scene
Цитата:

var Scene
Кнопка 1 Загружаю-подключаю
Цитата:

Scene = load("res://Level_1.tscn")
var scene = Scene.instance()
var spat_node = get_node("Spatial")
spat_node.add_child(scene)
Кнопка 2 Удаляю-очищаю
Цитата:

var scene_del = get_node("Node//Level_1")
scene_del.queue_free()
Но я хочу под одной переменной Scene, загружать разные уровни .tscn
И сразу возникает вопрос, как правильно очистить Scene?

В справке рекомендуется queue_free(), ей я могу удалить только инстанс загруженной сцены.

Если я копирую код выше, но меняю загрузку на Level_2.tscn
И начинаю по очереди загружать-выгружать разные сцены.
То в консоли видно что с каждой подобной загрузкой, увеличивается PackedScene (см. скриншот).
Получается в памяти продолжают висеть объекты. Что логично, я ведь ничего не делаю с Scene.

Вопрос правильно удалять ресурсы? Как полностью очистить Scene что бы загрузить под ней новую?
Какой подход вернее, 1 переменная для загрузки всех уровней, или для каждой своя переменная?



Вложение 23384

ant0N 31.03.2022 11:00

Ответ: Вопросы
 
Цитата:

Сообщение от Arton (Сообщение 319189)
В справке рекомендуется queue_free(), ей я могу удалить только инстанс загруженной сцены.

Да, так и надо делать

Мне кажется что твоя проблема в том, что ты на самом деле не удаляешь прошлую сцену
вот ты ее создаешь:
Код:

var scene = Scene.instance()
var spat_node = get_node("Spatial")
spat_node.add_child(scene)

а вот удаляешь:
Код:

var scene_del = get_node("Node//Level_1")
scene_del.queue_free()

что за путь такой? get_node("Node//Level_1")

Попробуй у себя сделать удаление так:
Код:

var spat_node = get_node("Spatial")
for n in spat_node.get_children()
    n.queue_free()


Arton 31.03.2022 20:54

Ответ: Вопросы
 
Вложений: 1
Цитата:

Сообщение от Arton (Сообщение 319189)
Загружаю сцену:
Создаю переменную Scene

ant0N ответил в чате.

Короче всё правильно. Надо удалять ноду, о загруженном ресурсе беспокоится не надо.
При необходимости его можно обнулить Scene = null.
Система так и работает, загрузить ресурс, создать его инстанс, подключить к нужной ноде.

Примерный код:

Подробности тут - Reference.


Вложение 23385

Arton 19.06.2022 07:25

Ответ: Вопросы
 
У меня созрел вопрос (в контексте движка).
Как правильно организовать программную часть игры.

Самый простой способ, на каждый активный объект: дверь, персонаж, враг и т. д. Нацепить скрипт, обернуть в сцену. И расставить на игровой-сцене инстансы.
Просто, быстро, сердито.

Второй вариант, добавлять всё активное в группы/списки, и тому подобное.
А дальше управлять всем этим из универсального скрипта. Скрипт для врагов, скрипт для всех дверей и т. д.
Сложнее, надо продумать правила для разработки уровней. По идеи выигрыш в скорости и удобство управления.


Как «правильно», насколько допустим первый вариант вне прототипа?
Какая разница в скорости выполнения и т. п.?


P. S. Написал и подумал, только во втором варианте можно нормально организовать работу через потоки.

ant0N 19.06.2022 10:55

Ответ: Вопросы
 
Вопрос слишком абстрактный. Если ты спрашиваешь как сделать архитектуру игры, то на этот вопрос нет правильно ответа, есть лишь разного рода паттерны.

Советовать конкретный паттерн бессмысленно, это зависит от проекта.
Но есть некоторые правила, которым следует придерживаться:
- единая точка входа в игру, единый апдейт.
- скрипты, которые ты весишь на объекты в редакторе - просто вьюшки, в них не должно быть логики.
Вся логика должна быть на другом уровне (в Контроллерах, в случае MVC или в Системах - если ECS)


В общем, тут мне проще тебе объяснять на живом примере уже в IDE, чем расписывать это на форуме


Часовой пояс GMT +4, время: 15:32.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot