Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Godot

Ответ
 
Опции темы
Старый 28.01.2021, 18:08   #46
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,996
Написано 2,302 полезных сообщений
(для 5,334 пользователей)
Ответ: Вопросы

Сообщение от MadMedic Посмотреть сообщение
Импортированы как текстуры, все настройки импорта были по умолчанию кроме выключенного флажка filter
Погоди, если у тебя для 2D интерфейса то нужно выбрать Image.
По идеи.

Нет.

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

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

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

P. P. S.
Сообщение от Arton Посмотреть сообщение
Ты имеешь ввиду настройки импорта, а не пересохранение в .tex?
Потому что в последнем не вижу смысла (пригодилось для mip-map)
Ошибся, в этом есть смысл. Не будет копии в папке import, т. к. файл уже готов для движка.
По идеи относиться ко всем ресурсам окромя сцен и кода.
(Offline)
 
Ответить с цитированием
Старый 31.01.2021, 18:30   #47
ant0N
Бывалый
 
Аватар для ant0N
 
Регистрация: 10.06.2011
Адрес: В горах
Сообщений: 849
Написано 331 полезных сообщений
(для 853 пользователей)
Ответ: Вопросы

Сорян что так долго, работал
воевал с юнити


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

Сообщение от MadMedic Посмотреть сообщение
Версия 3.2.3 штабле официале
Импортированы как текстуры, все настройки импорта были по умолчанию кроме выключенного флажка filter
Нажми на проблемное изображение и покажи что у тебя в окне импорта написано.
__________________
Абсолютли!
(Offline)
 
Ответить с цитированием
Старый 01.02.2021, 06:33   #48
MadMedic
ПроЭктировщик
 
Регистрация: 05.08.2006
Сообщений: 183
Написано 107 полезных сообщений
(для 410 пользователей)
Ответ: Вопросы

Вот скрин. Тут и настройки импорта, и ворнинги и кусочек кода
Изображения
Тип файла: jpg Bufer.jpg (286.3 Кб, 352 просмотров)
(Offline)
 
Ответить с цитированием
Старый 01.02.2021, 10:39   #49
ant0N
Бывалый
 
Аватар для ant0N
 
Регистрация: 10.06.2011
Адрес: В горах
Сообщений: 849
Написано 331 полезных сообщений
(для 853 пользователей)
Ответ: Вопросы

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

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

Пиши:
temp_image = load("path")
__________________
Абсолютли!
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо ant0N за это полезное сообщение:
Arton (02.02.2021), MadMedic (01.02.2021), St_AnGer (02.02.2021), Tiranas (01.02.2021)
Старый 01.02.2021, 10:58   #50
MadMedic
ПроЭктировщик
 
Регистрация: 05.08.2006
Сообщений: 183
Написано 107 полезных сообщений
(для 410 пользователей)
Ответ: Вопросы

О, спасибо!
(Offline)
 
Ответить с цитированием
Старый 28.04.2021, 11:36   #51
MadMedic
ПроЭктировщик
 
Регистрация: 05.08.2006
Сообщений: 183
Написано 107 полезных сообщений
(для 410 пользователей)
Ответ: Вопросы

Хм, скрипты обновляются в разных потоках? Получил ситуацию , когда в ходе выполнения функции скрипта, значение переменной другого скрипта изменилось.
(Offline)
 
Ответить с цитированием
Старый 28.04.2021, 22:41   #52
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,996
Написано 2,302 полезных сообщений
(для 5,334 пользователей)
Ответ: Вопросы

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

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

Актуальная версия сейчас 3.3
(Offline)
 
Ответить с цитированием
Старый 30.04.2021, 05:03   #53
MadMedic
ПроЭктировщик
 
Регистрация: 05.08.2006
Сообщений: 183
Написано 107 полезных сообщений
(для 410 пользователей)
Ответ: Вопросы

Сообщение от MadMedic Посмотреть сообщение
Хм, скрипты обновляются в разных потоках? Получил ситуацию , когда в ходе выполнения функции скрипта, значение переменной другого скрипта изменилось.
Сорян, это я затупил по серьезному и накосячил, все работает нормально. Еще раз убедился, что Годот классный ))
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Tiranas (30.04.2021)
Старый 30.04.2021, 12:22   #54
ant0N
Бывалый
 
Аватар для ant0N
 
Регистрация: 10.06.2011
Адрес: В горах
Сообщений: 849
Написано 331 полезных сообщений
(для 853 пользователей)
Ответ: Вопросы

Сообщение от MadMedic Посмотреть сообщение
Хм, скрипты обновляются в разных потоках?
в одном конечно, иначе нужны были бы всякие мьютексы и вот это вот все
__________________
Абсолютли!
(Offline)
 
Ответить с цитированием
Старый 31.03.2022, 07:38   #55
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,996
Написано 2,302 полезных сообщений
(для 5,334 пользователей)
Ответ: Вопросы

Загружаю сцену:
Создаю переменную 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 переменная для загрузки всех уровней, или для каждой своя переменная?



godot_log.webp
(Offline)
 
Ответить с цитированием
Старый 31.03.2022, 11:00   #56
ant0N
Бывалый
 
Аватар для ant0N
 
Регистрация: 10.06.2011
Адрес: В горах
Сообщений: 849
Написано 331 полезных сообщений
(для 853 пользователей)
Ответ: Вопросы

Сообщение от Arton Посмотреть сообщение
В справке рекомендуется 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()
__________________
Абсолютли!
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Arton (31.03.2022)
Старый 31.03.2022, 20:54   #57
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,996
Написано 2,302 полезных сообщений
(для 5,334 пользователей)
Ответ: Вопросы

Сообщение от Arton Посмотреть сообщение
Загружаю сцену:
Создаю переменную Scene
ant0N ответил в чате.

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

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

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


Godot_load_remove_scenes.webp
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Arton за это полезное сообщение:
pozitiffcat (16.05.2022), Randomize (31.03.2022), Tiranas (01.04.2022)
Старый 19.06.2022, 07:25   #58
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,996
Написано 2,302 полезных сообщений
(для 5,334 пользователей)
Ответ: Вопросы

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

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

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


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


P. S. Написал и подумал, только во втором варианте можно нормально организовать работу через потоки.
(Offline)
 
Ответить с цитированием
Старый 19.06.2022, 10:55   #59
ant0N
Бывалый
 
Аватар для ant0N
 
Регистрация: 10.06.2011
Адрес: В горах
Сообщений: 849
Написано 331 полезных сообщений
(для 853 пользователей)
Ответ: Вопросы

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

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


В общем, тут мне проще тебе объяснять на живом примере уже в IDE, чем расписывать это на форуме
__________________
Абсолютли!
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com