Сохранен 496
https://2ch.hk/gd/res/766120.html
24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Godot #21.09: ЯКАЛЕНДАРЬ EDITION

 Аноним OP 26/08/21 Чтв 15:08:00 #1 №766120 
1629979678113.jpg
Добро пожаловать в тред прощанья, в тред где горят костры рябин!

Краткий гайд по вкату в движок:
1. Читать документацию.
2. Качать примеры.
3. ПРОФИТ!

Ссылки
Новости движка: https://godotengine.org/news/
Скачать движок: https://godotengine.org/download/ или http://store.steampowered.com/app/404790/Godot_Engine/
Теперь прямо онлайн - можно и с дивана: https://godotengine.org/online/godot.tools.html
FAQ: https://docs.godotengine.org/ru/latest/about/faq.html
Документация: https://docs.godotengine.org/ru/latest/ https://docs.godotengine.org/en/stable/
Примеры качаются прямо в движке через свой магазин в отдельной вкладке AssetLib. Там есть всё - от платформера до чата.
Игры, созданные глобальными кириллами: https://steamcommunity.com/app/404790/discussions/0/412448792354265655/
Изумительный Годот: https://github.com/Calinou/awesome-godot - подборка дополнений, модулей и минишоукейс от одного из авторов, левый необновляемый форк-репо, есть оффициальный обновляемый оригинал https://github.com/godotengine/awesome-godot
Аддон для диалоговой системы: https://github.com/coppolaemilio/dialogic

Для любителей пощекотать конпеляцию
Бинды LUA: https://github.com/perbone/luascript
Бинды JS: https://github.com/GodotExplorer/ECMAScript

Для ностальгирующих дидов
Конвертор кваковских карт https://github.com/Shfty/qodot-plugin

Годнота от анона
- Для приверженцев опенсорца существует возможность распространять проекты в незапакованном формате. Просто скачай темплейт с оф.сайта и положи экзешник/эльфешник в папку с проектом, этого достаточно. Имя файлу можно задать любое. Дополнительно можешь вшить свою иконку в экзешник. После этого, запустившийся файл темплейта обнаружит рядом с собой файл project.godot и начнет грузить проект из него и из файлов, лежащих в распакованном виде в той же директории. Для запущенного таким образом проекта папка res:// становится доступна для записи (если это не ограничено правами доступа в системе).
- В версии 3.2 появилась возможность прикреплять pck к бинарнику. Не появилась, а вернулась - 2.х умел. Бриллиант для любителей однофайлового продукта!
- Редактор персонажей на основе makehuman: https://github.com/Lexpartizan/Go_MakeHuman_dot
- Тест-бенчмарк:
- - Веб-версия - https://govdot.herokuapp.com
- - Вишмастер для винды - https://govdot.herokuapp.com/4Anon.rar

Предыдущий: >>747202 (OP)

Архивный: https://arhivach.net/thread/682305/
Аноним 26/08/21 Чтв 15:11:00 #2 №766125 
Можно с кем созвониться по тг пообсуждать геймдизайн?
Аноним 26/08/21 Чтв 16:22:30 #3 №766172 
>>766142 →
Ответил тебе не я, я проигнорил.
Аноним 26/08/21 Чтв 16:49:48 #4 №766178 
>>766125
Был бы Сахедо жив... Хоть бы списался
немимопикселеёб
Аноним 26/08/21 Чтв 17:33:49 #5 №766189 
Опять забыли в шапку добавить список успешных игр.
Аноним 26/08/21 Чтв 17:46:21 #6 №766192 DELETED
>>766189
Действительно.
Ну оставлю тут одну на миллион долларов.
(Автор этого поста был предупрежден.)
Аноним 26/08/21 Чтв 19:56:17 #7 №766221 
>>766178
Сахедо просит передать, что он покушал арбузик и смотрит ютубчик. Думать о геймдеве ему неохота. Приходите завтра.
Аноним 26/08/21 Чтв 19:57:23 #8 №766222 
>>766192
Целая одна? Успех.
Аноним 26/08/21 Чтв 20:06:58 #9 №766225 
>>766192
Вырвиглазная стыдная параша, годоти даже тут обосрались. Вроде реально есть игра, а вроде такое постить зашкварно пиздец
Аноним 26/08/21 Чтв 20:23:42 #10 №766232 
>>766221
Ну жив и хорошо. Это главное
Аноним 26/08/21 Чтв 20:50:27 #11 №766235 DELETED
>>766222
>ПОЧЕМУ НЕ ДВЕ
>>766225
Спрашивали про успешную, а не про красивую.
Аноним 26/08/21 Чтв 21:37:49 #12 №766244 
>>766235
Ну так то да. Играть в это я конечно же не буду

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

Cruelty Squad - это Deus Ex, если бы он был создан сегодня, естественный продукт разъяренных людей, измученных неравенством богатства, милитаризацией полиции и упрямыми структурами, которые заставляют человечество катиться к полному уничтожению души. Ага.

Но Отряд жестокости хочет повеселиться до неизбежного конца. Это игра-невидимка, которая подпирает чистую, безмозглую радость от ощущения, что я перехитрил дизайнеров с помощью диких экспериментов, даже если я делаю именно то, что они ожидали. Как и Хитман, это катарсическое упражнение по уничтожению абсолютно худших живых людей. Это аудиовизуальное чудо, виртуальный мир, распадающийся на ваших глазах. И это одна из самых блестящих абсурдных игр, в которые я играл, видение будущего, в котором люди считаются корпоративными дочерними компаниями, а рынок оружия меняется в зависимости от того, какое оружие лицензировано для использования в популярном аниме.
Аноним 26/08/21 Чтв 23:15:11 #13 №766254 
>>766225
Кто тебя из загона выпустил, животное.
Аноним 27/08/21 Птн 04:01:38 #14 №766269 DELETED
Сила годота! Проперти сами все считают как калькулятор.
Аноним 27/08/21 Птн 17:27:29 #15 №766429 
В тайлмапы анимацию добавили уже?
Аноним 27/08/21 Птн 17:29:44 #16 №766431 
>>766429
Она там давно есть, через animated texture. В пуштайме так блоки с глазами моргают.
Аноним 27/08/21 Птн 17:31:00 #17 №766432 
>>766429
https://kidscancode.org/godot_recipes/2d/tilemap_animation/
Аноним 28/08/21 Суб 14:14:53 #18 №766570 DELETED
Мастхев аддон, сразу дающий +100 к качеству вашей игры
https://godotengine.org/asset-library/asset/977
Инструкция проста до безобразия.
Просто кидаешь в главную сцену.
Опционально если какие-то сцены загружаются динамически, подвешиваешь их под него.
Все, вы великолепны.
Аноним 29/08/21 Вск 16:46:52 #19 №766734 DELETED
Начал писать многие скрипты в виде
func get_some(index)
var smth = {"KeyA": "value1", "KeyB": "value2"}[index]
Удобно для джемов
Аноним 29/08/21 Вск 16:50:50 #20 №766736 DELETED
>>766734
И другой лайфхак
for s in ["Circle", "Triangle", "Square"]: ...
Аноним 29/08/21 Вск 17:09:06 #21 №766747 
>>766734
Зачем функция вообще? Объяви и заполни без задней мысли словарь в начале скрипта, а потом без задней мысли пиши где надо: smth[index]
>>766736
Вот это охуенная фича питона! Слава Хуану, что перетащил её в годот.
К слову, в си# так же можно, но разумеется, формальностей больше:
foreach (string s in new string[] { "Circle", "Triangle", "Square" } ) { Console.WriteLine(s); }
Аноним 29/08/21 Вск 17:53:34 #22 №766759 DELETED
>>766747
Вот чтобы в начало скрипта к словарю не листать.
Аноним 29/08/21 Вск 18:42:31 #23 №766771 
1630251752165.png
>>766759
> чтобы в начало скрипта к словарю не листать
Палю тебе лайфхак. Если скрипт объявить вместе с содержимым, оно подставляется в подсказках редактора.
Аноним 29/08/21 Вск 21:16:39 #24 №766805 
1630261000215.jpg
>>766771
> Если словарь объявить
Слоооооуфикс.
Аноним 01/09/21 Срд 17:21:50 #25 №767551 
image.png
Я чо, списки шарповские юзать тут не могу? Или что то не так делаю?
Аноним 01/09/21 Срд 17:26:05 #26 №767552 
>>767551
Там
System.Collections.Generic
а не
System.Collection.Generic
Аноним 01/09/21 Срд 17:30:34 #27 №767554 
>>767552
Ох, вей, точно, надо будет студию подключить видимо лучше
Аноним 01/09/21 Срд 17:33:50 #28 №767555 
Вот в списке у меня экземпляры классов персов лежат. Как мне их на сцену добавить, при этом для каждого еще разные спрайты должны быть в зависимости от их полей?
Аноним 01/09/21 Срд 18:04:56 #29 №767567 DELETED
>>767554
Можно vscode подключить
Аноним 01/09/21 Срд 18:10:41 #30 №767569 
>>767567
Я к студии привык, вс код как то всрато выглядит, ну и с ним ебля какая то нужна, а не включил и код пишешь, насколько я помню
Аноним 01/09/21 Срд 18:23:11 #31 №767572 DELETED
>>767555
Не очень понятен вопрос. Я обычно делаю так
var npc = npc_tscn.instance()
npc.set_parameters(blabla) #какая то инициализация
npc_container.add_child(npc)
npc.set_position_and_other(...) #то что имеет смысл только после добавления в дерево, например global_position
Аноним 01/09/21 Срд 18:31:33 #32 №767575 
>>767572
Не, вот гляди. Есть у мейн сцена. Есть у меня класс с коллизией. В классе поля, типо, pozitionX, pozitionY, weapon и тд.
В мейн сцене скрипт, в методе Ready я создаю штук десять этих экземпляров классов и кладу их в лист, естественно, чтобы потом можно было перебирать. При создании указываю у них разное оружие. Теперь мне их надо на мейн сцену всех добавить, но при этом спрайт самого хумана один и тот же, меняется только спрайт оружия в зависимости от того что в поле weapon. То есть по итогу на сцене должны быть десять хуманов, но с разным спрайтом оружия
Аноним OP 01/09/21 Срд 20:30:20 #33 №767599 
>>767569
А я и в студии работаю, и в коде. В студии удобно десктопные формы формошлёпить и встроееным дебаггером запускать на дебаг, а в коде удобнее кодить модули стороннего софта (годот, юнити) который самостоятельно проекты запускает на дебаг/исполнение.
Аноним 01/09/21 Срд 20:40:24 #34 №767604 DELETED
>>767575
>positionX
Это есть штатно в нодах
> чтобы потом можно было перебирать
Их и так можно перебирать через GetChildren(), но тут уже как тебе удобней.
>я создаю штук десять этих экземпляров
Ок, их и добавляешь через AddChild куда хочешь.
В годоте сцена представлена деревом, у любой ноды есть метод AddChild. Я обычно для однотипных сущностей держу отдельную ноду, типа NpcContainer, BulletContainer. Помогает например быстро удалить всех.
> при этом спрайт самого хумана один и тот же, меняется только спрайт оружия в зависимости от того что в поле weapon.
Берешь и меняешь, это можно сделать кучей способов.
У меня в таких случаях оружие - отдельная сцена, но можно и просто спрайт. За смену может отвечать сам класс хумана. В C# есть проперти, они же setget в гдскрипте. При изменении переменной вызовется соответствующая функция, в ней и поменяешь спрайт
[Export] Weapon weapon
{
get {return weapon;}
set {weapon = value; set_your_texure(weapon); }
}
Аноним 02/09/21 Чтв 12:34:16 #35 №767656 
>>767604
Ага, понятно, спасибо.
С точки зрения программиста нода это некая сущность, любой объект, класс по сути. А сцена тогда это что? Контейнер для классов, типо, модуль или как?
Аноним 02/09/21 Чтв 16:06:36 #36 №767677 DELETED
>>767656
Если ты только вкатываешься, то читай step by step
https://docs.godotengine.org/en/stable/getting_started/step_by_step/index.html
Потому что пересказывать документацию смысла особого нет.
Как устроена сцена, можешь в блокноте смотреть, это текстовый файл.
Аноним 02/09/21 Чтв 16:50:27 #37 №767683 
>>767677
> это текстовый файл
Это если в расширении файла есть метка t - текстовый, файлы же scn - бинарные. Правда ими никто не пользуется (даже я).
Аноним 02/09/21 Чтв 18:27:05 #38 №767694 
>>767677
Ну вот открыл и чо

Nodes
But let's start with the basics. Nodes are fundamental building blocks for creating a game. As mentioned above, a node can perform a variety of specialized functions. However, any given node always has the following attributes:

It has a name.

It has editable properties.

It can receive a callback to process every frame.

It can be extended (to have more functions).

It can be added to another node as a child.

../../_images/tree.png
The last one is important. Nodes can have other nodes as children. When arranged in this way, the nodes become a tree.

In Godot, the ability to arrange nodes in this way creates a powerful tool for organizing projects. Since different nodes have different functions, combining them allows for the creation of more complex functions.

Don't worry if this doesn't click yet. We will continue to explore this over the next few sections. The most important fact to remember for now is that nodes exist and can be arranged this way.

Scenes
../../_images/scene_tree_example.png
Now that the concept of nodes has been defined, the next logical step is to explain what a Scene is.

A scene is composed of a group of nodes organized hierarchically (in tree fashion). Furthermore, a scene:

always has one root node.

can be saved to disk and loaded back.

can be instanced (more on that later).

Running a game means running a scene. A project can contain several scenes, but for the game to start, one of them must be selected as the main scene.

Basically, the Godot editor is a scene editor. It has plenty of tools for editing 2D and 3D scenes as well as user interfaces, but the editor is based on the concept of editing a scene and the nodes that compose it.

Нода это узел, узел может содержать другие узлы и у него есть имя и свойства. И чо? Чо это такое, с точки зрения программиста? Класс? Ну вот сцена может инстанциироваться, так вроде тогда сцена это класс, а узел тогда что?
Аноним 02/09/21 Чтв 18:40:48 #39 №767697 DELETED
>>767694
>Чо это такое, с точки зрения программиста?
Нода это один из базовых классов, узел дерева (спрайты, элементы интерфейса и прочее наследуются от него).
Сцена это дерево, состоит из узлов, может включать подсцены. Имеет определенную логику, например, более нижние узлы рисуются поверх предыдущих (если не задать z-глубину), по умолчанию работает более нижняя камера и т.д.
Аноним 02/09/21 Чтв 18:59:08 #40 №767698 
>>767694
> И чо? Чо это такое, с точки зрения программиста?
Сериализованные данные.
Дальше сам.
Аноним 02/09/21 Чтв 19:02:21 #41 №767700 
>>767698
Бля затупил. Отвечаю повторно.>>767694
> И чо? Чо это такое, с точки зрения программиста?
Дерево нод - это шаблон проектирования, известный как Компоновщик https://refactoring.guru/ru/design-patterns/composite
Вот теперь дальше сам, по ссылочкам и в гугел.
Аноним 02/09/21 Чтв 20:44:09 #42 №767714 
>>766221
Кстати, планируешь закатываться снова, пока всю какаву не выпили и музыку для жёлтой зоны не нашли?
Аноним 02/09/21 Чтв 20:48:43 #43 №767715 
1630604922110.png
1630604922135.png
>>767714
Я пока в сомнениях. Не вдохновляет меня пиксельарт. Я хочу делать игры в графическом стиле Crippy Tale, например, со скелетной анимацией и художественным графоном. Ты, как я понимаю, такой уровень графона мне поставить не сможешь.
Аноним 02/09/21 Чтв 20:53:08 #44 №767717 
>>767715
Всё так. Я в пуксели потому и подался, что рисовать не умею.
Может в /гд/ и будут идейные товарищи кто так запилит, но сомневаюсь
Аноним 02/09/21 Чтв 21:53:20 #45 №767725 
Есть ли в годоте какие-то алгоритмы по графам, кроме AStar? Или надо самому всё реализовывать/библиотеки искать?
Аноним 02/09/21 Чтв 22:34:32 #46 №767741 DELETED
>>767725
Не попадались, вроде бы нету.
Аноним 05/09/21 Вск 10:33:17 #47 №767997 
>>767725
Не занимайся преждевременной оптимизацией. Делай игру на астаре.
Аноним 05/09/21 Вск 13:59:05 #48 №768016 
>>767997
Да есть у меня AStar уже.
Но с ним ИИ вытворяет дикие кренделя в сборке ресурсов по карте. Потому что когда надо обойти граф, то получается жадный алгоритм, который бегает от вершины к ближайшей вершине. Обмазал пока его кучей ифов, чтобы составить правдоподобный маршрут. Но выглядит костыльно, хотя и работает. Я не хочу сделать, чтобы ИИ бегал по карте с максимально оптимальным маршрутом, потому что 100% эффективность не выглядит интересной, но ИИ, который мечется на ровном месте тоже выглядит странным.

У меня другой вопрос возник. Что я делаю не так с извлечением значения в двумерном массиве (естественно, массив массивов)?
У меня извлекается нужное значение, но в виде массива, например vortexDistance[2][6] как [4]. При этом для одномерных массивов там сразу извлекается int, вроде 4.
Пока закостылил через даблкаст int(str()), но костыль же.
Аноним 05/09/21 Вск 14:22:20 #49 №768020 DELETED
>>767997
>>768016
AStar надо тюнить, иначе он рисует зигзаги или тупо диагональ и потом прямую.
По-моему для базового тюнинга хватает годотовского из коробки, там можно переопределять функции compute_cost, estimate_cost https://docs.godotengine.org/en/stable/classes/class_astar.html
Можешь попробовать формулы отсюда или отсюда
https://www.redblobgames.com/pathfinding/a-star/implementation.html#troubleshooting-ugly-path
http://theory.stanford.edu/~amitp/GameProgramming/Heuristics.html#exact-heuristics
Аноним 05/09/21 Вск 14:33:16 #50 №768023 DELETED
>>768016
> Что я делаю не так с извлечением значения в двумерном массиве
Возможно ты не так его заполняешь. Т.е. засовываешь не значение, а массив.
Аноним 05/09/21 Вск 17:10:06 #51 №768069 
1630851007254.png
>>768016
> Что я делаю не так с извлечением значения в двумерном массиве (естественно, массив массивов)?
Возможно, у тебя типичная ошибка при работе с массивмассивычем. У него чтение элементов идёт в формате массивыч[y][x]. Массив-наоборот с толщечислами.
Аноним 05/09/21 Вск 17:35:08 #52 №768081 DELETED
>>768016
Кстати не советую массивы массивов, это почти наверняка удар по производительности. Можешь написать простую функцию-помощник, типа
get_value(i,j): return array[i+j*ARRAY_WIDTH]
Аноним 05/09/21 Вск 18:26:02 #53 №768096 
>>768081
Кстати двачую.
Чтобы произвести обратное действие и разложить индекс массива на координаты i,j (они же x,y) нужно применить несложную формулу:
X = index % ARRAY_WIDTH
Y = index / ARRAY_WIDTH
Аноним 05/09/21 Вск 19:53:26 #54 №768119 
>>768069
Не вижу никаких проблем. Ты же говоришь [2][1], что соответствует в человекочитаемом языке "эй, годо, отдай мне третий массив, второй элемент".
>>768081
Уже отказался. Слишком много возни. Перешёл на словари массивов, кек. Но работать стало удобнее + осталась возможность пользоваться преимуществами одномерных массивов + возможность использования фунцкии для создания соваря-перевёртыша, что позволяет обратный поиск совершать удобно именно по значению.
Вообще, не думаю, что на ограниченных объёмах таблиц размеров типа 6*6 производительность прямо критично просядет. И всяко удобнее, когда ты не знаешь, будет у тебя таблица 2х2 или 5х5,но точно никогда 8х8 и больше.
Аноним 05/09/21 Вск 21:05:54 #55 №768133 
>>768069
Так ведь же именно так и работают массивы, с обратной перечислением координат.
Именно поэтому во всех топ-современных софтах с тремя осями XYZ высоту обозначают Z, а не Y.
Потому, как если бы мы хотели трёхмерный массив сделать (аля чанк майнкрафта), мы бы выбирали элемент по elements[z][y][x]. То есть, сначала слой по высоте, потом ряд, потом элемент из ряду.
Аноним 05/09/21 Вск 21:32:38 #56 №768147 
>>768133
> Именно поэтому во всех топ-современных софтах с тремя осями XYZ высоту обозначают Z, а не Y.
А почему раньше высота была Y?
Аноним 05/09/21 Вск 23:42:29 #57 №768175 
image.png
А по сохранениям подскажите.
Как лучше сделать? Пилить предварительно свою структуру данных, которую потом сохранять? Или есть возможность, например, сохранить пачку глобальных переменных и радоваться жизни? До этого пикрил накидал в качестве заглушки, а вот теперь дошёл до того, чтобы сделать системы сохранения и загрузки.
Аноним 05/09/21 Вск 23:55:04 #58 №768177 
>>768175
А, пожалуй, поторопился.
С json всё красиво раскладывается.
Аноним OP 06/09/21 Пнд 13:33:34 #59 №768244 
>>768177
>>768175
Ретранслирую совет из документации. Делай группу сохраняемых сущностей, в каждой из них делай метод get_save_data, возвращающий жсон с актуальными данными, затем собирай это всё и в файл.

А от себя хочу предложить мой авторский метод, который я частично и у тебя на скрине наблюдаю. Делаешь синглтон WORLD в котором есть глобальный словарь со всем конфигом мира, членами которого являются подсловари-секции локаций, внутри которых можно организовать подсловари-секции объектов на локации.
Синглтон держит всю инфу игрового мира в памяти всё время, когда пользователь играет. При загрузке загружается полный файл, со всеми данными мира. При записи записывается так же весь файл.

Казалось бы оверхэд?
Но нет. При такой системе элегантно и без дополнительных усилий игра может менять состояния незагруженных в данный момент объектов. И когда игрок придёт в новую локацию, там его будут уже автоматически ожидать изменившиеся условия.

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

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

Или третий пример. Квест затрагивает несколько локаций. Согласно стадиям квеста, локации должны принимать тот или иной вид. На одной руке имеем принудительную проверку каждой загружаемой локацией состояние всех квестов в книге Довакина. На другой - элегантная запись самим квестом изменений в параметры затрагиваемых локаций, так что им при своей загрузке ничего лишнего проверять не надо. Об Довакине и его книге квестов знать ничего не надо.
Аноним 06/09/21 Пнд 15:08:31 #60 №768254 DELETED
Пилю пошаговую игру, и решил потестить на одном некро андроиде.
Так вот, вопрос в чем. Версия на C# грузится 5 секунд, на gdscript 4 секунды (+ 2 секунды если холодный старт в обоих случаях). Я правильно думаю что ради 1 секунды загрузки нет смысла отказываться от плюшек C#? Или в гуглоплее с этим строго.
Аноним 06/09/21 Пнд 16:28:53 #61 №768261 
>>768147
Дети смотрели на доску и видели траекторию полёта мячика. "Ага, значит Y — высота". Но потом пришло поколение, которое видело тертрадку, а тетрадь горизонтально расположена, значит X и Y это горизонтальные оси.
На самом деле я не знаю, почему и зачем так делали. Я и сам раньше был адептом игрековой высоты, но как осознал индексацию, так и понял, что лучше Z использовать.
Аноним 06/09/21 Пнд 16:32:24 #62 №768262 
>>768244
>элегантная запись самим квестом изменений в параметры затрагиваемых локаций, так что им при своей загрузке ничего лишнего проверять не надо
Лишь бы разработчик не допустил баг, записывающий в локации неправильное, так что даже при перезапуске игры прохождение будет запоротым.
Аноним 06/09/21 Пнд 18:21:18 #63 №768296 
>>768261
> а тетрадь горизонтально расположена, значит X и Y это горизонтальные оси.
А ты на тетрадь смотришь под углом в 90 градусов? Потому что у всех нормальных людей верх тетрадного листа - это "вверх", а не "вперёд".
Аноним 06/09/21 Пнд 18:30:58 #64 №768300 
>>768296
Ты невнимательно читаешь анона. Если позволите вступлюсь за него.
Он написал, что мыслить следует категориями: Слой-Ряд-Элемент. Тогда все противоречия отпадают. Иначе же можно до хрипоты спорить, что один видит лист так, а второй - эдак. Одному игрек высота, другому ширина.
Аноним 06/09/21 Пнд 21:07:59 #65 №768338 
Как изменить размеры экрана при смене ориентации с модом keep? Не выходит из размера считанного с конфига 1080.500 сделать 500,1080 в рилтайме.
Аноним 06/09/21 Пнд 21:56:40 #66 №768345 
var _size:Vector2 = Vector2.ZERO setget size_set, size_get;
func size_set(value:Vector2)->void:
if value == _size:
return;
var is_landscape:bool = self.is_landscape();
_size = value;
if is_landscape != self.is_landscape():
if !is_landscape:
get_tree().set_screen_stretch(1,2,Vector2(380,640));
else:
get_tree().set_screen_stretch(1,2,Vector2(640,380));
self.emit_signal("orintation_changed");

Вроде помогли, но за двумя исключениями =>
1) Первый раз окно поворачивается, но его масштабирование не верно. Если снова повернуть в это положение, все будет нормально.
2) Черные бордеры от keep не изменились даже от смены размера.
Аноним 06/09/21 Пнд 22:09:52 #67 №768347 
>>768345
Скорее всего годот сам меняет пропорции, а потом приходишь ты и меняешь ещё раз вручную. Чисто с дивана предположил. Чисто по своему опыту знакомства с годотом - я многие вещи пытался велосипедить, а потом оказывалось, что всё это было искаропки, надо только доки почитать внимательно.
Аноним 06/09/21 Пнд 22:16:06 #68 №768351 
>>768347
Так, и как мне искаропки сделать возможность менять ориентацию экрана, но с keep_width?
Аноним 06/09/21 Пнд 22:41:24 #69 №768365 
>>768351
Я не знаю. Читай документацию.
Аноним 06/09/21 Пнд 23:21:44 #70 №768409 
>>768365
Ага, спасибо, помогло.
Аноним 06/09/21 Пнд 23:26:43 #71 №768411 
>>768262
Кстати, злобная штука, когда сейвы херятся по техническим причинам.
У меня так похерилось 2 катки в стелларисе на айрон моде. Потому что оно записало где-то ошибку, видимо, и меня выкидывало на следующий внутриигровой месяц всегда.
Аноним 06/09/21 Пнд 23:46:10 #72 №768417 
>>768411
На каждую старуху бывает проруха, хоть делай интегрити-чек, хоть нет, особенно, если игра с модами.
Аноним 07/09/21 Втр 00:05:25 #73 №768418 DELETED
Будущее наступило Аноним 07/09/21 Втр 14:56:15 #74 №768489 
1631015776419.jpg
Яндекс сделал автоматический голосовой перевод видосов.
Я ухожу пересматривать гейм эндевора на русском!
Будущее наступило Аноним 07/09/21 Втр 15:06:38 #75 №768493 
>И до следующего раза... ВЫ ВСЕ УСПОКОЙТЕСЬ!
Сделан мой вечер!
Аноним 07/09/21 Втр 16:50:51 #76 №768511 
>>768489
Переводы улучшились, но всё равно почти в каждом предложении косячат
Будущее наступило Аноним 07/09/21 Втр 18:01:41 #77 №768532 
1631026902190.png
>>768511
А вы используете Государственную Машину в своих играх?
Аноним 07/09/21 Втр 20:48:37 #78 №768581 
"Технически Ultimate скорее реконструкция на новом движке, чем ремастер. Colors перенесли с форка Hedgehog Engine на открытый движок Godot. Здесь создатели Ultimate поступили максимально странно: они создали свой форк Godot, назвали его Blind Squirrel Engine, и удалили все упоминания Godot. Разработчики уже извинились и пообещали исправить эту оплошность в ближайшем патче"

https://twitter.com/falessandrelli/status/1433856957476216840

как перестать ржать??)
Аноним 07/09/21 Втр 21:04:01 #79 №768583 
>>768581
>Разработчики уже извинились и пообещали исправить эту оплошность в ближайшем патче
Следующий патч: "Обратите внимание, это не мы с игрой обосрались, это годотя нам в штаны насрала".
Аноним 07/09/21 Втр 21:06:51 #80 №768584 DELETED
>>768583
Sonic Colors: Ultimate isn’t even officially out yet
Аноним 07/09/21 Втр 21:09:46 #81 №768586 
qz3NuYk.jpeg
>>768584
Да-да, к релизу все обязательно пропатчат и заапдейтят. Ты, может, еще в деда мороза веришь до сих пор?
Аноним OP 07/09/21 Втр 21:23:12 #82 №768587 
1631038993284.jpg
>>768581
> Здесь создатели Ultimate поступили максимально странно
Поступили как и большинство ньюфагов, встречающих опенсорс. БЛЯТЬ, КОД! БЕСПЛАТНО! Я ЕГО ПЕРЕИМЕНУЮ И ВЫДАМ ЗА СВОЙ
Аноним 07/09/21 Втр 21:25:10 #83 №768588 DELETED
>>768586
В корпорациях конечно бюрократия, но добавить кредитсы это не долго.
Аноним 07/09/21 Втр 21:41:02 #84 №768591 
>>768588
Я не про кредитсы говорю, а про то, что игра - забагованный пиздец.
Аноним 07/09/21 Втр 21:56:23 #85 №768593 DELETED
>>768591
Ну понятно. Вот только баг там несложный для исправления, да и вызывают его спецом задрачивая меню выбора уровня.
Аноним 10/09/21 Птн 13:25:25 #86 №768995 
Как воспроизвести видео из ютуба или все еще не завезли поддержку кодеков?
Аноним 10/09/21 Птн 20:52:22 #87 №769080 DELETED
>>768995
Сам напиши
https://github.com/Nolkaloid/godot-youtube-dl
Аноним 10/09/21 Птн 20:56:05 #88 №769081 DELETED
>>769080
И да, оно качает откуда-то ffmpeg.exe :)
Аноним 11/09/21 Суб 22:31:38 #89 №769243 DELETED
Ваше мнение?
https://docs.godotengine.org/en/stable/classes/class_jsonrpc.html
Можно через это взаимодействовать с сервером на другом языке.
Аноним 12/09/21 Вск 08:17:59 #90 №769265 
image.png
>>769243
Можно, разрешаю
Аноним OP 12/09/21 Вск 18:54:22 #91 №769366 
1631462062971.jpg
>>769243
Я тоже не против.
Аноним 12/09/21 Вск 22:36:57 #92 №769390 DELETED
>>769265
>>769366
Спасибо, котятки.
В целом, работает, но требуются доработки.
Во-первых, параметры передаются не по стандарту.
Во-вторых, обработчик то один объект. Для простых команд этого хватит, но надо свою схему городить, если хочется вызывать функции других нод.
Аноним 13/09/21 Пнд 04:32:23 #93 №769413 DELETED
Кстати, кто то опять поднял справочник по API C#
http://www.polymo.de/gdsharp/api/Godot.html
Не идеально, проскакивают примеры на гдскрипте. Но лучше чем угадывать названия полей и методов
Аноним 13/09/21 Пнд 14:14:07 #94 №769454 DELETED
>>769390
Почитав исходники, понял, что 2-й пункт работает, просто неочевидным образом.
Можно подобавлять нужные объекты через
rpcHandler.set_scope("Player", player)
rpcHandler.set_scope("Enemies/Enemy1", player)
А потом вызывать их функции как пути
{ method = "Player/shoot" ... }
{ method = "Enemies/Enemy1/die" ... }
Аноним 13/09/21 Пнд 14:59:15 #95 №769460 
>>769413
>Кстати, кто то опять поднял справочник по API C#
Ненужно, есть гдскрипт
Аноним 13/09/21 Пнд 17:25:34 #96 №769479 DELETED
>>769460
To whom how. Мои проекты его уже переросли.
Аноним 14/09/21 Втр 01:32:57 #97 №769522 
image.png
image.png
Котаны, а вот вопрос, над которым я задумался только что. Как лучше с сигналами работать? Всё время цеплял их через гуя, а потом понял, что местами начал через .connect() писать, и теперь (пока) у меня смесь того и другого.
В чём разница? Или вопрос сугубо персонального удобства?

>>769413
Мне кажется, проблема шарпа в годоте в том, что основная масса примеров, проблем и обсуждений ведётся на гдскрипте. Без всего этого шарпу не захватить массу.
Я шарпом когда-то пользовался, потом лет на 5 забил. Потом скачал годот и понял, что шар я так и не очень-то помню, а тут ещё и годот пытаешься освоить попутно, спотыкаясь то на одном, то на втором.
Аноним 14/09/21 Втр 05:37:21 #98 №769530 
>>769522
>масса примеров, проблем и обсуждений ведётся на гдскрипте. Без всего этого шарпу не захватить массу.
Именно так. Нужно выбрать один вариант, твёрдо и чётко. Так же в анриале большинство ответов на блюпринтах, просто нелепо. В юнити изредка натыкаюсь на ответы с яваскриптом, хотя он никогда не был популярен там.
Аноним 14/09/21 Втр 16:06:06 #99 №769556 DELETED
>>769522
>Мне кажется, проблема шарпа в годоте в том, что основная масса примеров, проблем и обсуждений ведётся на гдскрипте.
Так а проблемы-то нет. Тот же код можно построчно переписать на шарпе. (ну, циклы какие-нибудь по другой форме записать)
Единственная трудность в названиях полей. Потому что get_parent() может называться GetParent, а может просто проперти Parent. Но вот это как раз можно посмотреть на сайте что я скинул.
Аноним 14/09/21 Втр 16:08:33 #100 №769557 DELETED
>>769522
>В чём разница? Или вопрос сугубо персонального удобства?
В скрипте проще назначать динамически создаваевым объектам, или когда обработчики в другой сцене. Но из минусов - надо самому переименовывать, если перетащил/переименовал ноду где-то.
Аноним 14/09/21 Втр 20:46:52 #101 №769590 
>>769556
> Единственная трудность в названиях полей. Потому что get_parent() может называться GetParent, а может просто проперти Parent.
Ну на то в студии (и в коде, и в любом уважающем себя ИДЕ) есть синтаксические подсказки (интеллисенс и т.п. синонимы), ты набираешь gtpr а тебе уже вываливается в подсказках:
>GetParent
>GotPoopRequest
>GoatTeamProduce<T>
Встроенный редактор годота увы под шарп не заточен. В шарпе надо кодить из стороннего ИДЕ. Годот обещает всё-в-одном только при использовании гдскрипта, если ты берешь сторонний язык, то уже как бы внутренне готов к стороннему редактору кода.
Аноним 14/09/21 Втр 20:55:21 #102 №769592 
>>769557
> из минусов - надо самому переименовывать, если перетащил/переименовал ноду где-то
Решения тоже есть. Самое простое, описанное у Пети-сканера на ютубе, сделать один синглтон, пересилить себя и пойти против правил так сказать. В синглтоне завести пустые переменные, любая интересующая тебя нода, хоть она цельная сцена, хоть объект на внешней от неё сцене, неважно, каждая из них при своей загрузке прописывает себя в свою переменную. При выгрузке обнуляет переменную. Таким образом ты быстро, без зумерских заморочек, небезопасным, неконтролируемым дедовским способом нарушаешь кучу СОЛИДов энтих зумерских и из любой другой ноды видишь любую нужную тебе. Например, в синглтоне есть переменная Player, в которую очевидно прописывается перс игрока при загрузке. И стало быть, все Enemies без задней мысли чекают плеера, если он не нуль, то насколько он далеко? Прикинуться что не замечают его? Или атаковать?
При разработке в соло проблем не будет. При командной разработке такой клубок лапши быстро превратит проект в ад.
Аноним 14/09/21 Втр 21:04:07 #103 №769593 DELETED
>>769592
Я тебе опишу с чем чаще всего сталкиваюсь
Вот была у меня нода Scene/Spawn и у него какой-то сигнал
Я перетащил и теперь нода Scene/Town/House/Spawn
Если сигнал мышкой через интерфейс подключен, то он автоматически исправляется на ../../../script
Аноним 14/09/21 Втр 21:56:40 #104 №769596 
1631645800566.png
>>769593
Ага, понятно. А в шарпе как вообще сигналы работают? Это классические ивенты EventHandler<EventArgs> или какой то хитровыкрученный велосипед?

>>769522
> Котаны, а вот вопрос, над которым я задумался только что. Как лучше с сигналами работать? Всё время цеплял их через гуя, а потом понял, что местами начал через .connect() писать, и теперь (пока) у меня смесь того и другого.
> В чём разница? Или вопрос сугубо персонального удобства?
Для меня персональное удобство вручную назначаемых в гдскрипте сигналов в том, что туда можно любые данные прибиндить, какие я захочу. Через интерфейс только встроенные классы (пикрелейтед). А кодом я могу в сигнал как минимум сендера прихуячить, и ссылку на словарь с данными, и любую произвольную ноду и, и, ооо, да, детка!
Аноним 14/09/21 Втр 22:05:34 #105 №769600 DELETED
>>769596
Там хотели переделать на шарповские events, но пока обертка над годотовскими


[Signal]
public delegate void MySignal(bool value, int other_value);

EmitSignal(nameof(MySignal), true, 42);

GetNode("Timer").Connect("timeout", this, nameof(_on_Timer_timeout));
Аноним 14/09/21 Втр 22:13:19 #106 №769603 DELETED
>>769600
Хотя пишут, что подписываться уже можно по шарповскому
MySignal += MySignalHandlerFunc;
А как найти такой делегат у Timer, к примеру, я пока не понял.
Аноним 14/09/21 Втр 22:14:26 #107 №769605 
>>769600
Ну, хз, вроде не очень уж и страшно выглядит. Зато наверняка через [Signal] этот делегат регистрируется внутри редактора и его можно мышкой прибиндить к другим нодам.
>>769603
> А как найти такой делегат у Timer, к примеру, я пока не понял.
Через интеллисенс студии.
Аноним 14/09/21 Втр 22:17:05 #108 №769606 
>>769603
> MySignal += MySignalHandlerFunc;
Неее... Я освоил анонимные методы через лямбду и хуячу их везде, где надо и не надо:

> MySignal += (args) => { //Здесь набираю сам код, если много кода, разношу на несколько строк, и только если кода становится больше экрана - выношу в отдельный метод. };
Аноним 14/09/21 Втр 22:17:36 #109 №769607 DELETED
>>769605
>Через интеллисенс студии.
Нету его там. И вообще в исходниках .cs нету. Думаю, он из гдскрипта прилетает. Ведь объекты в C# могут общаться с остальными.
Аноним 14/09/21 Втр 22:19:01 #110 №769608 
>>769607
Так, нипонил. Рассказывай сначала. Чего нету? А я пока моногодот скачаю. Сто лет не годошарпил.
Аноним 14/09/21 Втр 22:21:57 #111 №769610 DELETED
>>769608
Не объявлен он.
Аноним 14/09/21 Втр 22:23:47 #112 №769611 DELETED
>>769608
Если ты свой сигнал создаешь, ты можешь написать [Signal] delegate... и к нему цепляться. А у встроеных они не объявлены в C#. Через Connect подключиться можно, но это идет через ядро движка, так же как в гдскрипте.
Аноним 14/09/21 Втр 22:40:44 #113 №769612 
1631648444211.png
1631648444232.png
>>769611
Я понел. Смотри какую я хрень накопал. Там вместо этого навелосипежен некий SignalAwaiter, принимающий инстанс ноды и текстовое описание сигнала этой ноды. Если я правильно понял, затем надо следить за состояниями этого эвэйтера. ХЗ, чот неудобно.
Аноним 14/09/21 Втр 22:53:31 #114 №769613 DELETED
>>769612
Ага, чет пока не дописали, пока по старинке.
Аноним 14/09/21 Втр 22:59:16 #115 №769614 
1631649556418.png
1631649556440.png
>>769613
Сигналы биндятся через редактор годота (вкладка узел/сигналы), но до сих пор игнорируют скобачьки - обработчик дописывается в хвост файла и его надо принудительно переместить вверх, внутрь скобачекь объекта. Тогда заработает.
Аноним 14/09/21 Втр 23:18:43 #116 №769616 
gd.jpg
Аноним 14/09/21 Втр 23:27:42 #117 №769617 
>>769616
2 секунды сэвед, зато 10 секунд вастед на массив-массивыч.
Аноним 14/09/21 Втр 23:32:41 #118 №769618 
image.png
image.png
image.png
В продолжение эпопеи с сохранениями. Есть пикрил.
Директория выводится не та, что я хочу заюзать, в if я не проваливаюсь. Есть похожий баг, но что-то круто для бага такого рода. Это он, или всё же пользовательские директории можно зхаставить работать?

https://github.com/godotengine/godot/issues/35346
Аноним 14/09/21 Втр 23:36:32 #119 №769620 
>>769618
А, всё, отбой. Через dir.open() обошёл проблему.
Аноним 18/09/21 Суб 21:25:50 #120 №770016 
Как правильно настроить Margin чтобы контролы стояли в три столбца: 10%, 30%, 60% помогите, я нихуя не понимаю и не получается. При ресайзе всё разъезжается в стороны!
Аноним 18/09/21 Суб 21:37:10 #121 №770018 DELETED
>>770016
Anchor задавай 0.3, 0.6
Аноним 18/09/21 Суб 22:09:35 #122 №770023 
>>770018
Спасибо! Всё получилось!
Аноним 20/09/21 Пнд 20:16:55 #123 №770200 
Анончики, в отчётах гугл плэя иногда проскакивает ANR для игрушки на годоте. С чем это может быть связано?
Аноним 20/09/21 Пнд 20:23:51 #124 №770203 DELETED
>>770200
Долгие рассчеты вроде ИИ или загрузки уровней вынести в отдельный Thread?
Аноним 20/09/21 Пнд 22:00:30 #125 №770221 
>>770203
Какой нафик ии, там рассчёты не сложнее калькулятора. Такое не массово происходит, а редко случается - может одно на сотню устройств. Какие-то допотопные кирпичи с 4-м и 5-м андроидом судя по аналитике нормально работают. Из последних anr - galaxy a10 с 10-м или 11-м андроидом, не помню.
Аноним 20/09/21 Пнд 22:18:46 #126 №770226 
Мзизиз пилит халфу своей мечты
https://www.youtube.com/watch?v=iGah8RemjE0
Аноним 20/09/21 Пнд 22:32:19 #127 №770227 DELETED
>>770226
Эх...
Аноним 21/09/21 Втр 17:42:56 #128 №770337 
Гуру, подскажите, а есть ли какой-то встроенный построитель диаграмм? У меня всего десяток сцен и два десятка скриптов, а я уже начинаю путаться что откуда вызывается, если от проекта отвлекусь на несколько дней. Просто чтобы иметь под рукой всегда накиданную шпаргалку связей (не автоматических, а хотя бы руками связанных), а не листать тетрадь с записями каждый раз.
Аноним 21/09/21 Втр 17:43:30 #129 №770338 
>>770337
>диаграмм
Точнее схем, наверно. Но смысл не меняется.
Аноним 21/09/21 Втр 19:26:48 #130 №770376 DELETED
>>770337
Могу предложить посмотреть это
https://godotengine.org/asset-library/asset/879
А для более глубокой разработки вот это
https://godotengine.org/asset-library/asset/817
Аноним OP 21/09/21 Втр 19:32:32 #131 №770378 
>>770376
Охуенно! Это в шапку однозначно.
Аноним 22/09/21 Срд 19:12:02 #132 №770611 DELETED
Пока не видел оф новости, но в папке лежит новая версия
https://downloads.tuxfamily.org/godotengine/3.4/beta5/
https://downloads.tuxfamily.org/godotengine/3.4/beta5/mono/
Или у них там найтли билд?
Аноним 22/09/21 Срд 19:41:31 #133 №770615 
>>770611
А смысл дёргаться в минорных версиях? Только если тебе нужен специфический добавленный функционал или фикс проблемы.
Аноним 22/09/21 Срд 20:07:15 #134 №770619 DELETED
>>770615
А не знаю. Что-то лечат, что-то калечат. Вроде move_and_slide улучшали.
Аноним OP 22/09/21 Срд 21:01:04 #135 №770629 
1632333663787.png
>>770619
Сорока-белобока!
Аноним 22/09/21 Срд 23:52:22 #136 №770662 DELETED
>>770629
Не балабока, а евангелист
https://godotengine.org/article/dev-snapshot-godot-3-4-beta-5
Аноним OP 22/09/21 Срд 23:56:16 #137 №770663 
>>770662
Оу! Сорян. Евангелисты нам нужны. Ну, расписывай тогда все воцньюсы по пунктам.
Аноним 23/09/21 Чтв 01:46:34 #138 №770668 
image.png
Ситуация. Есть Control вот такой ширины (изначально на весь экран). В чём суть проблемы. Вот эта область в оранжевом прямоугольнике, оказывается, непрозрачна для мыши, не смотря на то, что там элементов нет. Как заставить её быть прозрачной для событий с мыши, например, чтобы увеличить эффективную площадь взаимодействия с игровыми объектами? В хайд отправлять всё меню не плинирую, дробить на пачку Control тоже не хотелось бы.
Аноним 23/09/21 Чтв 01:49:42 #139 №770669 
image.png
>>770668
Как обычно, до решения допёр сам. Пробовал пасс, игнор не пробовал. А именно он и делает то, что хочу. Однако вопрос, почему работает только вариант игнор?
Аноним 23/09/21 Чтв 10:09:33 #140 №770685 DELETED
>>770669
Возможно там неудачное название, но pass делает обычный event bubbling, в терминах web DOM.

stop - дает обработать событие и на этом останавливает его продвижение вглубь
pass - дает обработать событие и передает его глубже по поддереву контролов, чтобы они тоже могли обработать.
ignore - отключает обработку событий этим деревом контролов.
Аноним 23/09/21 Чтв 16:51:12 #141 №770734 
>>770685
Спасибо. Очень доходчиво. Нашёл описание этого уже в доках, но там, кстати, менее ясно смысл описан.
Аноним 25/09/21 Суб 04:15:26 #142 №770843 
Можете подсказать туториалов для максимально тупых? Давно хочу что-то склепать для души, и пытался освоить годо, но соснул хуйца дважды. Прошел официальный туториал в котором нужно уворачиваться от летающих головастиков и вроде все понятно. Но как садишься за что-то своё и ощущаешь полную беспомощность.
Аноним 25/09/21 Суб 12:48:17 #143 №770861 DELETED
>>770843
Могу посоветовать только нарабатывать базу.
Пройди какой-нибудь курс по программированию. На питоне или C#.
Попробуй воспроизвести туториал по памяти, вообще не заглядывая в подсказки.
После туториала, добавляй в эту игру какую-нибудь новую фичу, главное не растекайся а делай по одной за раз.
Изучи какие средства есть в годоте, банально смотри какие есть ноды, какие у них методы, была какая-то серия видосов know your nodes
Смотри на другие игры, попробуй анализировать, как бы ты их сделал, из каких элементов они состоят. Какой-нибудь рогалик, платформер и т.д.
Пройди больше туториалов (1 это вообще ни о чем - хотя бы с десяток)

В конце концов, расскажи, что ты хочешь делать свое и какие у тебя трудности возникают, что непонятно как сделать.
Аноним OP 25/09/21 Суб 19:05:41 #144 №770939 
>>770843
> как садишься за что-то своё и ощущаешь полную беспомощность
Очень вредное ощущение новичка. В любой сфере, не только в кодинге/геймдевелопинге. Оно может отвернуть от дальнейшего изучения и продвижения. Какой тут может быть совет? Удваиваю предыдущего анона, нарабатывай базу. Пили на движке простые вещи, которые просто работают. Одновременно читай матчасть. Не по годоту матчасть, а по компам вообще. Ты должен осознать, как всё работает. Осознать, почему, например, Хуан в Годоте сделал так, а не иначе. И тогда, постепенно, шаг за шагом, будет приходить понимание:
> Я могу сделать это.
> Я могу сделать вот так.
Аноним 25/09/21 Суб 20:56:56 #145 №770957 
1632592609429.mp4
>>770939>>770843
Для мотивации вот тебе видос, как я начинал 3 года назад. Скрипт из одной строки Rotate() остальное - работа с материалами и текстурами.
Аноним 25/09/21 Суб 21:39:53 #146 №770966 
1632595188227.mp4
>>770957
> как я начинал 3 года назад
Потом прошло 3 месяца и я начал лепить первые поделия. Нихуя не понимал, но всюду лез. В данной технодемке с включённым отображением коллизий показано, как я лепил инстансы объектов без полного понимания наследования.
Аноним 25/09/21 Суб 21:45:08 #147 №770968 
1632595503368.mp4
>>770966
Прошёл год и я ощутил себя в силах поучаствовать в своём первом ТВГ. О, как же я ошибался. Я запилил катающегося Йобу-Супер-Йобика и был осмеян за это.
Аноним 25/09/21 Суб 21:49:25 #148 №770969 
1632595753304.mp4
>>770968
В ужасе от масштабной травли, я забил на двадэ и вернулся к триде, вспомнил свои старые мечты и задумки. Начал воплощать. Но охуел от масштаба работ, которые нужно провернуть в тридэ для запила сколь нибудь толковой игори.
Аноним 25/09/21 Суб 21:54:27 #149 №770970 
1632596064015.mp4
>>770969
Месяц спустя я перешел на мини-игры, размяться решил с признанной классики.
Аноним 25/09/21 Суб 22:01:21 #150 №770971 
1632596479173.mp4
>>770970
Прошло ещё три месяца метаний из двадэ в тридэ, и тогда мне анон подсказал, что зачем, мол ты пытаешься велосипедить, когда всё уже есть в интернетах: генераторы людей, наборы анимаций. Я подумал, и действительно. И провёл рисёрч.
Аноним 26/09/21 Вск 01:03:43 #151 №770985 
>>770861
>>770939
>>770957
Спасибо за ответы. Но на самом деле я программист. Просто стек совсем отличный от геймдева. У меня проблема не с языком, хоть гдскрипт и отличен от того на чем я обычно калякаю. Проблема в самом подходе что ли. Ладно, пойду в третий раз сяду делать летабщих головастиков.
Аноним 26/09/21 Вск 02:49:01 #152 №770988 
>>770939
>Осознать, почему, например, Хуан в Годоте сделал так, а не иначе.
Задроты движкодрочеры. Нафика простому Васяну знать, что там под капотом.
Аноним 26/09/21 Вск 03:34:04 #153 №770990 
>>770971
кулстори бро, продолжай в том же духе.
Аноним 26/09/21 Вск 15:56:10 #154 №771027 DELETED
>>770985
Стек можно свести к такому: есть неподвижные части уровня, и есть "фишки" которые двигаются каждый кадр. Ну а когда они сталкиваются, создаются события которые отправляются-получаются, и они могут запускать анимации, спавнить/уничтожать другие фишки. Конечно, есть элементы сложнее, типа генерации уровней. Но в целом, каждый объект отвечает за свое поведение и реакции на окружающие события, просто работает process каждый кадр. Пуля просто продолжает лететь в нужную сторону, персонаж просто летит по параболе прыжка. А навешанные Area и Body ловят столкновения и вызывают обработчики триггеров.
Аноним 27/09/21 Пнд 14:19:20 #155 №771102 
Безымянный.png
print(_triple_point, second, rad2deg(_triple_point.angle_to_point(second)))

p1(1.4, 190) p2(0, 0) angle = 89.577829
p1(1.4, 190) p2(3.5, 1100) angle = -90.132221
p1(1.4, 190) p2(3.8, 500) angle = -90.443569

Как блять посчитать ебаный сука угол от оси XЭ. Какие нахуй 90 градусов, блять.
Аноним 27/09/21 Пнд 14:30:58 #156 №771104 DELETED
>>771102
Это почти прямая линия вдоль оси, а сколько по-твоему должно быть?
Аноним 27/09/21 Пнд 21:59:54 #157 №771146 
1632769193959.png
>>771102
> Как блять
> Какие нахуй
Ну що, дядя, убедился в том, что матеша в школе джвадцать лет назад была таки нужна?
Аноним 28/09/21 Втр 01:55:32 #158 №771160 
>>771104
Т.е. твое утверждение, что оси x и y перепутаны и из-за этого угл неверен?
Аноним 28/09/21 Втр 02:11:07 #159 №771163 
>>771160
Естественно это нихуя не помогло
(190, 1.4)(0, 0)0.422172
(190, 1.4)(1100, 3.5)-179.867773
(190, 1.4)(500, 3.8)-179.556425

Мы видим явно рост точки вверх, а углы теперь отрицательные. Пиздец.
Аноним 28/09/21 Втр 02:12:24 #160 №771164 
>>771146
Мне не нужна математика, епта. Мне нужен угол, блять! А годот его посчитать не может.
Аноним 28/09/21 Втр 08:57:10 #161 №771175 DELETED
>>771160
>>771164
Тебе, как раз нужна математика. За 5 класс.
Между точками угла не бывает. Угол бывает между векторами
Очевидно ты сравниваешь два вектора (0,0)(190, 1,4) и (0,0)(1100,3.5) и получаешь угол близкий к 0, 90 или 180.
Тебе надо сравнивать что-то типа (0,0)((1100,3.5)-(190, 1.4)) и (0,0)(10000,0)
Аноним 28/09/21 Втр 09:00:13 #162 №771176 
>>771175
Это и есть angle_to_point функция. И она не работает
Аноним 28/09/21 Втр 12:26:12 #163 №771202 
>>771163
> Пиздец.
А пиздец в том, что человек, прогулявший матешу в свои 16цать, срёт на дваче, вместо того, чтобы курить матчасть до просветления.
https://docs.godotengine.org/ru/latest/tutorials/math/vector_math.html#introduction
Аноним 28/09/21 Втр 12:35:06 #164 №771203 
>>771202
Какой код я должен написать, чтобы все работало?
Аноним 28/09/21 Втр 12:54:37 #165 №771204 
1632822878261.jpg
>>771203
Пятихатку мне на киви - а я в ответ готовый код.
Аноним 29/09/21 Срд 15:19:27 #166 №771360 
>>771203
Либо добавь 360 градусов, либо поменяй точки местами.
Аноним 29/09/21 Срд 18:55:20 #167 №771381 DELETED
>>771203
Пользуйся angle_to, раз не разобрался с angle_to_point.
Аноним 01/10/21 Птн 04:47:12 #168 №771490 
>>771360
>>771381
Это все не поможет. Почему в треде годота сидят на столько тупые?
Аноним 01/10/21 Птн 13:04:14 #169 №771515 DELETED
>>771490
Тралируй где-нибудь в другом месте, двоечник.
Аноним 01/10/21 Птн 21:48:52 #170 №771567 DELETED
Чего только не узнаешь в ходе подготовки к джему.
https://www.youtube.com/watch?v=-hbZSH1t6VE
Аноним 01/10/21 Птн 22:17:55 #171 №771571 
>>771567
Я как-то ебался с этим сортингом, ещё на 3.0.6., там столько подводных камней, что я плюнул и решил либо делать плоское двадэ без имитации тридэ, либо настоящее тридэ делать.
Аноним 01/10/21 Птн 22:24:04 #172 №771573 DELETED
>>771571
Ее тогда еще только добавляли, может сейчас нормально, завтра попробую.
Аноним 02/10/21 Суб 19:18:46 #173 №771704 
1633191526296.png
>>771573
Ну чё? Ну как? Я ж переживаю...
Аноним 03/10/21 Вск 00:53:53 #174 №771721 
image.png
Гуру, помогите разобраться с плавным передвежением камеры по сцене.

Есть два стула. Свободно двигать камеру по нажатию и двигать камеру по нажатию, цепляясь за ландшафт.

Стул первый.
Вроде всё просто. В абсолютном значении mouseMoveX(Y)Ratio - величина от 0 до 1, которая регулирует скорость от 0 до максимальной moveSpeed.
Знак mouseMoveX(Y)Ratio зависит от того, как изменяется положение мыши относительно момента, когда нажал сренюю кнопку.
Косяки начинаются, когда я верчу камеру. Чем ближе поворот камеры к 90 или -90 градусов, тем сильнее меняются верх-низ местами с право-лево. Должно быть тут надо как-то трансформ заварить, но у меня не получается.

Второй стул.
Есть идея цепляться за точку на поверхности, но тут вопрос, как плавно двигать камеру от текущей точки к точке зацепления.
Но этот вариант я даже не начинал. Как считать изменение позиции камеры относительно точки зацепления? Прямоугольными треугольниками?
Аноним 03/10/21 Вск 01:02:39 #175 №771723 DELETED
>>771704
Не понадобилось. Делаю платформер без изометрии.
Аноним 03/10/21 Вск 01:15:51 #176 №771724 DELETED
>>771721
Вообще на это есть готовые решения, сейчас несколько занят чтобы детально расписывать, например есть https://docs.godotengine.org/en/stable/classes/class_interpolatedcamera.html
Также можно посмотреть как в принципе считают интерполяцию
https://kidscancode.org/godot_recipes/3d/interpolated_camera/
Да и остальные рецепты с сайта посмотри
Посмотри как делают тут, плавный поворот через slerp
https://www.youtube.com/watch?v=XvFlM1uf2MM
https://godotengine.org/asset-library/asset/723
Наверное можно еще Tween навернуть ради easing
Аноним 03/10/21 Вск 13:42:22 #177 №771736 DELETED
>>766734
Логическое продолжение лайфхака
crouch_pos += delta * [-CROUCH_SPEED, +CROUCH_SPEED][int(Input.is_action_pressed("move_crouch"))]
Аноним 03/10/21 Вск 15:53:51 #178 №771744 
>>771736
Вот тебе ещё лайфхак, замени
> int(Input.is_action_pressed("move_crouch"))
на
> Input.get_action_strength("move_crouch")
избавишься от лишнего преобразования буль-инт.

Аноним 03/10/21 Вск 15:59:14 #179 №771746 
image.png
image.png
Как сделать, чтобы воспроизводилась анимация прыжка?

Суть проблемы в том, что когда персонаж прыгает, то не производится вся анимация, а лишь первый спрайт, как сделать чтобы воспроизводились все 4 спрайта? С анимацией ходьбы таких проблем нет.
Аноним 03/10/21 Вск 16:05:43 #180 №771747 DELETED
>>771746
Тебе надо делать play("Jump") там, где ты подпрыгиваешь на jumpForce
А так ты каждый кадр, _когда не на полу_, начинаешь воспроизводить с первого кадра.
Аноним 03/10/21 Вск 16:06:52 #181 №771748 DELETED
>>771744
А что будет если там ось джойстика? Автопреобразование float в int?
Аноним 03/10/21 Вск 16:15:56 #182 №771749 
image.png
>>771747
Если ты имеешь введу пикрил, то я так делал и ничего не поменялось.
Аноним 03/10/21 Вск 16:28:09 #183 №771750 DELETED
>>771749
Тогда, наверное, у тебя play("Idle") перекрывает ее.
Можешь проверять, не играется ли анимация прыжка
if not (spr.is_playing() and spr.animation == "Jump"): play("Idle")
Аноним 05/10/21 Втр 12:16:02 #184 №771876 
screen.png
>>771746
>>771749
Аноним 06/10/21 Срд 18:42:30 #185 №772006 
Разрушаемый террейн, как в вормсах
https://www.youtube.com/watch?v=aBxk-n61SjM
Это годот!
Аноним 06/10/21 Срд 18:48:56 #186 №772008 DELETED
>>772006
https://www.youtube.com/watch?v=KNvvPh2HlBI
Аноним 16/10/21 Суб 04:48:39 #187 №773251 
image.png
проходим товарищи бейкаем нестессняемся

https://www.youtube.com/watch?v=yQZKXdwyh-Q


https://www.kickstarter.com/projects/gdquest/learn-to-code-from-zero-with-godot-the-free-game-engine
Аноним 19/10/21 Втр 00:07:55 #188 №773682 
16312701610140.png
>>773251
Так релиз курса весной 2022 а что всё это время делать? Не проще начать учить язык просто по урокам на ютубе, я вот только вкатываюсь и так планирую сделать, поседений месяц метался между годо и ГМ2, но вот все таки годо выбрал, хотя уже проебал две недели на гм2 после работки, сделал по урокам понг.
Аноним 19/10/21 Втр 00:21:41 #189 №773686 DELETED
>>773251
C++ там не будет.
Робот зачетный
Аноним 19/10/21 Втр 03:34:19 #190 №773696 
>>773682
> проще начать учить язык просто по урокам на ютубе
просто проект пилится для калифорнийских бойчиков, которым будучи угашенным травой очень сложно начать напрягаться и учить, а тут няшная обучалка в игровой форме

от гугла (кажется) пазлы с кодом были подобные, к ним тоже игровую логику какого то известного тайтла прикручивали

а так все правильно сделал котей

>>773686
> C++ там не будет.
па ху ю

Аноним 19/10/21 Втр 16:36:58 #191 №773782 
Плагин для реализации диалоговой системы.
Напоминаю. Пилить свой велосипед больше не нужно.
https://www.youtube.com/watch?v=xOqbZBL0V7A
Аноним 19/10/21 Втр 17:06:52 #192 №773796 
>>771744
>избавишься от лишнего преобразования буль-инт.
А если ему именно int нужен, а не float? У него вроде 2D.

>>771748
>А что будет если там ось джойстика?
Будет всё то же самое, что и с обычными кнопками.

get_action_strength() возвращает float от 0.0 до 1.0, независимо от того, какие кнопки ты назначил на action.

Если, например, написать так (явно объявить ожидаемый тип):
var number: Int = Input.get_action_strength("action")
Будет предупреждение о том, что происходит неявное преобразование из float в int, которое может привести к потере точности.

>Автопреобразование
Во-первых, это называется "неявное приведение/преобразование". Неявное - потому что из кода не ясно, будет оно или нет, нужно смотреть документацию на компилятор/транслятор и/или смотреть код в другом месте (заголовки функций, объявление переменных). Явное - это когда ты прямо в коде пишешь запрос на преобразование (int(), float()).
Во-вторых, чтобы оно произошло (в GDScript), получатель результата этой функции должен явно указывать тип, который ему нужен. Это может быть указание типа переменной (как выше) или указание типа функции. На массивы это не распространяется - массив тут может хранить произвольный тип в каждой из ячеек (исключение - специальные классы Pool...Array). Если получателю безразличен тип данных, то он получит float от этой функции без преобразования.
Аноним 19/10/21 Втр 17:13:10 #193 №773800 
>>773796
> А если ему именно int нужен, а не float?
Он на дельту умножает. Дельта уже флоат, итог будет флоат энивей.
> У него вроде 2D.
А это неважно.
Аноним 19/10/21 Втр 17:37:42 #194 №773810 DELETED
>>773796
>>А что будет если там ось джойстика?
>Будет всё то же самое, что и с обычными кнопками.
Ты не вкурил. Ось джойстика это именно ось с плавными значениями.
Аноним 19/10/21 Втр 17:43:43 #195 №773812 
>>773796
>указание типа функции
типов аргументов функции

>>773800
>Он на дельту умножает
Я думал, это отдельное выражение, там знака между ними нет.
>А это неважно.
В смысле? Если делать pixel perfect 2D, то все координаты должны быть целыми...

>>772006
>как в вормсах
В вормсах другой террейн. В вормсах сравнение попиксельное или с использованием сжатия RLE:
https://gamedev.stackexchange.com/questions/158906/destructible-terrain-like-worms
Террейн на полигонах, конечно, заманчивый, но у него куча подводных камней.
Аноним 19/10/21 Втр 17:51:54 #196 №773814 DELETED
>>773812
Думаю сейчас все делают на полигонах, а потом шейдером в пиксель перфект.
Аноним 19/10/21 Втр 17:57:25 #197 №773815 
>>773810
>Ось джойстика это именно ось с плавными значениями.
Ну и?

Допустим, у нас такое выражение:
>translation.x += speed x delta x (Input.get_action_strength("move_forward") - Input.get_action_strength("move_backward"))

Если управляем клавишами:
>100 x 0.01667 x (1 - 0) = 1.667 пикселя за кадр x 60 = 100 пикселей в секунду
Если управляем джойстиком:
>100 x 0.01667 x (0.75 - 0) = 1.25 пикселя за кадр x 60 = 75 пикселей в секунду

То есть в случае управления с клавиатуры, персонаж резко начинает двигаться на максимальной скорости (если мы не добавим сглаживание движений), а в случае управления с джойстика, персонаж двигается настолько плавно и на той скорости, насколько и которую хочет игрок. Наклоняешь грибок на 50% - получаешь половину скорости, наклоняешь на 75% - 3/4 скорости и т.д.

Кстати, я этим летом делал виртуальный джойстик, управляемый одной только мышью. Получилось, по-моему, круто, но я забил на проект, т.к. не люблю 2D и вообще в депрессии был. Просто мой китайский геймпад имеет хреновые стики, и мне хотелось почувствовать, каково это - управлять с хорошего джойстика.
Аноним 19/10/21 Втр 20:25:20 #198 №773844 DELETED
>>773815
Ты вообще не вкурил про что шла речь. Причем тут translation.x?
Аноним 19/10/21 Втр 23:03:22 #199 №773850 
>>773844
Всё он вкурил. Это ты не выкупаешь.
>>773815
Поэтому игра должна детектить устройство ввода, и своевременно переключать модель движения согласно действующему устройству ввода. Для геймпада - вышеописанный вариант. Для клавиатуры - интерполяция к максимальной/минимальной скорости, создающая видимость плавного разбега/остановки.
Аноним 19/10/21 Втр 23:06:46 #200 №773851 
>>773850
И да, в настройках следует добавить опцию "спидран мод" которая лочит модель движения геймпада на клавиатуру. Иначе спидранеры сделают это самостоятельно сторонними тулзами. Зачем расстраивать посанов? Пусть себе спидранят на официальных настройках от девелопера.
Аноним 19/10/21 Втр 23:09:17 #201 №773852 DELETED
>>773850
>Всё он вкурил. Это ты не выкупаешь.
Ты тоже не вкурил.
Аноним 19/10/21 Втр 23:18:01 #202 №773853 DELETED
https://www.youtube.com/watch?v=mRixyMUr5VM
Аноним 20/10/21 Срд 03:50:34 #203 №773859 
>>773850
>Для клавиатуры - интерполяция к максимальной/минимальной скорости
В чём проблема включить интерполяцию для всех способов ввода, включая джойстики? Дешёвые китайские джойстики нуждаются в интерполяции ничуть не меньше, чем клавиши. Да и на дорогих наверняка хотелось бы плавности, у пальцев-то неточные движения.

Я написал вариант без интерполяции только потому что его проще было написать по памяти.

>>773851
Вообще не понял про спидранеров, почему спидранерам нужна интерполяция? Интерполяция же замедляет разгон и торможение, то есть без неё можно сэкономить время прохождения.
Аноним 20/10/21 Срд 12:52:28 #204 №773883 
Два дня мучился с одним вопросом, наконец решил сформулировать его в этом треде, и пока печатал, нашёл ответ на него. Всем спасибо, очень помогли, вопрос постить не буду, там многобукав.

inb4 https://en.wikipedia.org/wiki/Rubber_duck_debugging
Аноним 20/10/21 Срд 14:41:27 #205 №773897 
>>766120 (OP)
>ЯКАЛЕНДАРЬ EDITION
Что это значит? iCalendar? Как с Годо связано?

Алсо, не одобряю просёр нумерации. Этот тред вроде 24, да? Почини нумерацию в следующем (25?) треде, а то неудобно получается.

>Теперь прямо онлайн - можно и с дивана: >https://godotengine.org/online/godot.tools.html
>The requested page cannot be found
Эта фича ещё в конце 2020 или самом начале 2021 (судя по веб архиву) сдохла, теперь даже упоминания на сайте нет - ты давно ссылки из шапки проверял?
Кстати, почему они от онлайн версии отказались? Слишком сложно поддерживать, наверное? Я год назад вроде пробовал запустить, чёт ничего не вышло. Что там было?
Аноним 20/10/21 Срд 18:32:06 #206 №773935 DELETED
>>773897
Фича не сдохла, наоборот, постоянно допиливается
https://editor.godotengine.org/releases/3.4.rc1/godot.tools.html
Аноним 20/10/21 Срд 18:36:18 #207 №773937 
>>773897
Ты дурак, я МегаФон?
Аноним 20/10/21 Срд 20:15:29 #208 №773946 
>>773937
Чиво? Это какой-то мем?

>>773935
Ясно, понятно, но ссылку давно пора обновить, она с начала года не работает, если верить веб архиву. За ~3 переката можно было много раз перепроверить.

Алсо, если тут
>можно и с дивана
подразумевается мобильный браузер, то
>Mobile browsers are currently not supported.
Аноним 20/10/21 Срд 22:57:51 #209 №773961 
Поясните за визуалскриптинг в вашем говне, кто-нибудь пользовался? Для каких задач подходит, если вообще подходит или это ради рофла сделано?
п.с. извините за говно
Аноним 21/10/21 Чтв 00:12:45 #210 №773965 
>>773961
>визуалскриптинг
Не пользовался. Я программист-любитель со средней школы и GDScript оказался очень простым и удобным, в отличие от C#. Встроенный редактор с подсветкой и автодополнением, а что ещё можно желать для кодинга?

Визуальные скрипты (вообще любые, не конкретно в Godot) могут быть удобны для маленьких детей, которые ещё не умеют печатать на клавиатуре, а для взрослых текст должен быть удобнее.

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

Пиши документацию, тогда код не придётся мышкой таскать.
Аноним 21/10/21 Чтв 04:05:37 #211 №773981 
image.png
>>773946
ЯМЕГАФОН
Аноним 21/10/21 Чтв 22:11:11 #212 №774090 DELETED
Автор неплохо Human Diaspor-у развил
https://www.youtube.com/watch?v=AyUNjc3IK9I
Аноним 21/10/21 Чтв 23:31:24 #213 №774101 
Не могу понять, в чём проблема.
Есть ригидбоди. У него есть несколько колиженшейпов. Игрок добавляет новые колиженшейпы. Чтобы ригидбоди работал как мне нужно, его начало координат (0;0;0) должно совпадать с центром масс. Я вычисляю "центр масс" как среднее арифметическое позиций всех колиженшейпов. Затем смещаю все колиженшейпы на этот вектор, а сам ригидбоди - на обратный вектор. Происходит это всё однократно и только в _physics_process(), а для надёжности ригидбоди усыпляется на время смещения и пробуждается сразу после него.
Что я ожидаю? Что визуально ригидбоди останется на том же месте, где и был, но его масса станет более равномерной.
Что получается? Две ситуации:
1) Ригидбоди лежит в сцене изначально. Всё вышеописанное работает как и ожидается. Даже если его физически сдвинуть, повернуть или отбросить, всё будет работать как и ожидается (вроде бы).
2) Ригидбоди уничтожается, затем создаётся (instance()) заново, наполняется теми же колиженшейпами, что и были, падает и останавливается. Если теперь попытаться добавить ему ещё один колиженшейп, он начнёт сдвигаться в определённом направлении, хотя должен оставаться неподвижен. При этом смещаться может прямо внутрь препятствий, в которые при обычных условиях попасть не может - то есть это из-за моего смещения кодом, а не из-за ошибок физического движка (надеюсь).

Как такое может происходить? Я проверял через дебаггер сцену и трансформы, внутренние переменные этих ригидбоди. Всё выглядит нормально. Пробовал print() вектора, на который происходит смещение, но эти числа мне ни о чём не говорят - я не знаю, какими они должны быть, это сложно посчитать вручную.

В общем, куда копать, что делать? Проблема довольно раздражающая из-за своей непостоянности, то есть, то нет.
Аноним 22/10/21 Птн 00:15:53 #214 №774105 DELETED
>>774101
1. Убедись что делаешь физические штуки в _physics_process, а не _process
2. Попробуй перед манипуляциями переводить в режим Kinematic или Static
3. Может быть где-то надо подождать 1 физический кадр между манипуляциями: yield(get_tree(), "physics_frame")
4. Если у тебя объект ползет внутри пола, хз. То есть теоретически у тебя такая ситуация, что ты к объекту приделал ногу и эта нога теперь внутри пола, и что по-твоему должен делать движок? Тебе надо игровой логикой поднять объект на высоту ноги.
5. Саму скорость можно как-то менять, то ли через linear_velocity, то ли через _integral_forces, я этим никогда не занимался.
Аноним 22/10/21 Птн 10:30:19 #215 №774137 
>>774101
Только что наконец-то исправил проблему! Причина обнаружилась в неочевидной разнице между translate() и прямым изменением transform.origin. Судя по всему, RigidBody каким-то особым образом работает со своим орижином, поэтому трогать его нельзя, но можно двигать через translate(). Т.е. заменил
>transform.origin += delta
на
>translate(delta)
И все "заикания" волшебным образом исчезли. Странно, ведь у остальных объектов можно менять орижин без таких последствий... Интересно, это моё личное непонимание ситуации и "так и задумано" или это всё-таки баг движка?

>>774105
1. Всё так и есть, разумеется. Я ставлю флаг "откалибровать центр масс", а в _physics_process вызываю функцию калибровки, снимая флаг. Сделал так в т.ч. потому, что за один кадр может добавиться очень много новых блоков, и каждый ставит флаг, но калибровка происходит только раз за физический тик, если нужна.
2. Я думал об этом. Не пробовал, но мне кажется, что установка в статичный режим сбросит все скорости, т.о. ригидбоди застынет в пространстве и затем снова начнёт ускоряться. Я ведь не зря именно с ригидбоди работаю, мне нужно чтобы он свободно двигался.
3. У меня всего одна манипуляция за физический тик)
4. На самом деле ситуация с "ногой внутри пола" обрабатывается движком вполне ожидаемо: объект начинает трястись и медленно выдавливаться из пола, либо застревает в нём и трясётся. Это нормально и ожидаемо; избежать легко, если проверять коллизии добавляемого объекта и запрещать добавление, если он пересекает пол, стены и другие объекты. Но проблема была в том, что когда я крепил что-нибудь сбоку, объект мог сдвигаться в противоположную сторону, застревая в стене. Чуть с ума не сошёл, пытаясь найти причину.
5. Знаю, когда-то я баловался с этими силами и скоростями. Но это не то, смещение должно быть мгновенным и никак не влиять на происходящее движение (в идеале, конечно).
Аноним 22/10/21 Птн 10:38:24 #216 №774138 
>>774101
>для надёжности ригидбоди усыпляется на время смещения
Кстати, оказалось, что усыплять ригидбоди вообще не нужно - можно спокойно крепить новые детали на движущийся ригидбоди и он не будет менять свою траекторию (вроде бы). А вот пробуждать после крепления нужно, потому что новые детали смещают центр масс, смещённый центр масс в теории может спровоцировать движение (наклонить, опрокинуть), но этого не происходит, если ригидбоди в режиме сна.

Ещё добавлю увеличение массы и вообще круто будет, а то сейчас большая конструкция из блоков слишком сильно реагирует на столкновение со всего одним блоком... выглядит так, будто добавление блоков уменьшает их массу. А блоки с разной массой будут смещать центр масс сильнее/слабее, вот это самая интересная часть - какой-нибудь парус сильно легче металлического двигателя, несмотря на больший размер.
Аноним 22/10/21 Птн 13:56:07 #217 №774161 DELETED
>>774137
Хорошо, что разобрался, честно говоря не знаю в чем между ними разница.
Аноним 22/10/21 Птн 17:06:38 #218 №774203 
>>774161
Хотел тебе ответить и полез в документацию по апи движка, и нашёл ответ на мучавший меня вопрос:
https://docs.godotengine.org/en/stable/classes/class_spatial.html
>void force_update_transform ( )
>Forces the transform to update. Transform changes in physics are not instant for performance reasons. Transforms are accumulated and then set. Use this if you need an up-to-date transform when doing physics operations.
То есть я получал в своём коде неактуальный origin и присваивал это неактуальное значение, чем вызывал рывки. Теоретически, вызов этой функции должен был бы помочь, но это лишние строчки кода - обратиться к translate оказалось проще и удобнее.

Кстати, о разнице между тем и этим:
>void translate ( Vector3 offset )
>Changes the node's position by the given offset Vector3.
>Note that the translation offset is affected by the node's scale, so if scaled by e.g. (10, 1, 1), a translation by an offset of (2, 0, 0) would actually add 20 (2 х 10) to the X coordinate.
Если я правильно понял, translate() принимает во внимание масштаб объекта, т.е. увеличенный в 2 раза объект будет смещаться на в 2 раза большее расстояние. Вроде логично. В то же время в Transform масштаб хранится в виде длины векторов basis, а origin - это отдельный вектор, поэтому если мы только меняем орижин, мы игнорируем масштаб объекта (но это стоит проверить на практике, а то я что-то сомневаюсь).

А мне, получается, translate() позволяет изменить актуальное смещение ригидбоди, а не то, что есть в орижине.
Аноним 22/10/21 Птн 17:45:27 #219 №774206 DELETED
>>774203
> Transform changes in physics are not instant for performance reasons. Transforms are accumulated and then set.
Честно говоря не вижу принципиальной разницы. translate() тоже просто читает-записывает origin и никаких специальных путей кода с отложенной записью в нем нет.
> принимает во внимание масштаб объекта
А не менял ли ты масштаб самого rigidbody? Не могу найти в документации, но много где читал, что ridibody нельзя менять scale. Об этом есть предупреждение в редакторе. Причем, судя по описанию, это касается вообще любых объектов, то есть довольно неудобно, например если ты хочешь поставить одинаковый ассет камня разных размеров, то тебе надо во втором реально менять коллижншейпы.
Аноним 22/10/21 Птн 22:54:42 #220 №774260 
>>774206
>translate() тоже просто читает-записывает origin и никаких специальных путей кода с отложенной записью в нем нет.
Странно. Но на практике он точно работает иначе простого обращения к origin. Возможно, где-то в другом месте стоит триггер на вызов транслейта.

>А не менял ли ты масштаб самого rigidbody?
Нет, конечно, я знаю, что менять масштаб ригидбоди нельзя.

>это касается вообще любых объектов
Нет, только RigidBody в режимах Rigid и Character.
Всего у него четыре режима:
Rigid - нормальное состояние, в котором тело подвергается воздействию физических сил и может вращаться.
Static - аналог StaticBody.
Character - подвергается воздействию физических сил, но не может вращаться (персонаж не кувыркается).
Kinematic - аналог KinematicBody.

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

>ты хочешь поставить одинаковый ассет камня разных размеров, то тебе надо во втором реально менять коллижншейпы.
Если камень неподвижный (StaticBody), тогда масштаб изменить можно вроде бы. А если тебе нужен подвижный камень, тогда есть такой вариант: вешаешь скрипт на RigidBody, у скрипта export var custom_scale = Vector3(1.0, 1.0, 1.0), в функции скрипт меняет масштаб всех своих потомков. Да, в визуальном редакторе масштаб не будет отображаться, но такой способ должен быть удобен, если тебе нужно программно спавнить камни разных размеров. Создал камень - присвоил размер custom_scale - добавил в сцену.
Аноним 22/10/21 Птн 23:15:51 #221 №774264 
1634933749031.png
>>774260
> менять масштаб ригидбоди нельзя
Почему именно?
Аноним 22/10/21 Птн 23:24:25 #222 №774265 DELETED
>>774264
Потому что физика это обертка над буллетом, а в буллете все работает в масштабе 1:1. В 4-м годоте будет опция чтобы масштаб ригидбоди автоматически пересчитывал все масштабы коллижншейпов, но это, надо понимать, требует дополнительных вычислений.
Аноним 22/10/21 Птн 23:26:06 #223 №774267 
>>774265
Прекрасно! Давай зачётку.
Аноним 22/10/21 Птн 23:33:28 #224 №774269 DELETED
>>774267
Собака съела.

Тут какой-то курс математики для геймдевов показывают

https://www.reddit.com/r/godot/comments/q8zevk/i_completed_assignments_46_from_freya_holm%C3%A9rs/

https://github.com/charliedavenport/Godot_Math_Exercises
Аноним 26/10/21 Втр 15:20:41 #225 №774767 
Кто-нибудь может подсказать, нужно ли работать для камеры с углами эйлера или нужно преобразовать в кватернионы?
Аноним 26/10/21 Втр 16:23:42 #226 №774785 
>>774767
Я в годоте работал с матрицей преобразования, так же известной в дереве классов годота как Transform. Не знаю, Эйлер ли это или кватернион? Но если тебе надо без задней мысли работать с камерой, просто построй из невидимых нод киношную вышку, или как она там правильно называется? Ну тоесть, воссоздай рабочее место оператора ИРЛ. Тебе понадобится в общем случае два шарнира класса Spatial, один ты будешь вращать вокруг вертикальной оси влево-вправо, второй вокруг поперечной оси вверх-вниз. В 90% туториалов предлагается делать так. В остальных 10% в зависимости от требований игоры может потребоваться покачивание вокруг продольной оси, а так же удаление и приближение по ней же.

А так же в новые версии движка завезли автоотдаляющуюся камеру.
Аноним 26/10/21 Втр 19:14:34 #227 №774818 
Ребята я что календарь?
Аноним 26/10/21 Втр 19:19:04 #228 №774820 DELETED
>>774785
Двачую этого анона.
Хотя я подумываю о флайтсиме, там, наверное, кваты нужны.
Аноним 26/10/21 Втр 20:23:35 #229 №774834 
>>774820
Да я нашел у них в пособии, что лучше юзать кватернионы. Я просто понял, что если тупо юзать матрицу преобразований, то там траблы выходят, что при движении одной оси двигаются другие и как бы угол уже не тот выходит, когда вращаем некс ось. Плюс там при определенных положениях может возникнуть ситуация, что степень свободы можем потерять, т.е вращаться только по одной оси.
Аноним 26/10/21 Втр 20:35:14 #230 №774839 
>>774785
Вообще Transform, там комбинация Basis и origin. Ну в Basis походу перемножение scale и rotation. А вот orgion будто бы просто добавлена строка и все. Rotation задается виде матрицы с векторами 3х3. Т.е по идеи если я домножу эту матрицу вращения, то получу углы эйлера.
Аноним 27/10/21 Срд 13:41:06 #231 №774922 
>>774820
>подумываю о флайтсиме
Так там ведь просто RigidBody.add_force() юзать и всё, зачем тебе что-то вручную поворачивать?

>>774834
Суть в том, что нужно соблюдать порядок вращения. Сначала по одной оси, потом по другой, если наоборот - выйдет не то, что ты ожидал. Да и за направлением вращения следить надо. В мануале пишут, что от обоих этих проблем можно избавиться, юзая кватернионы, но для большинства простых игр хватит повесить камеру на одну/две вложенные ноды или SpringArm.
https://docs.godotengine.org/en/stable/classes/class_springarm.html
Аноним 27/10/21 Срд 15:41:31 #232 №774934 DELETED
>>774922
>зачем тебе что-то вручную поворачивать?
Обзор камеры
Аноним 27/10/21 Срд 19:10:54 #233 №774959 
>>774922
А лол, прикольный костыль, но я бы чисто матан хотел поизучать.
Аноним 28/10/21 Чтв 14:10:06 #234 №775044 
>>774934
>Обзор камеры
Тебя интересует, как сохранять вертикальную ориентацию камеры, когда самолёт наклоняется? Тоже планирую делать что-то вроде авиасимулятора на минималках.

>>774959
>костыль
SpringArm - это не костыль, это встроенное решение, позволяющее не городить самодельный рейкаст и код для приближения камеры. Во всех играх от третьего лица камера должна приближаться к персонажу, когда сталкивается с препятствиями или когда препятствия встают между камерой и персонажем, иначе игроку будет неудобно и он может увидеть скрытые объекты сквозь стены. Так что радоваться надо, что такой "костыль" есть в Годо из коробки.

Примерно год назад пилил-пилил свой велосипед, потом узнал про SpringArm и половину кода выкинул, лол.
Аноним 28/10/21 Чтв 22:03:07 #235 №775203 
>>766120 (OP)
Посоветуйте что ли по чарактерконтроллеру. У меня есть на основе кинематикбоди, сам сделал кое-как. На статичном ландшафте работает более-менее приемлемо, но у меня в игре подвижные конструкции на основе ригидбоди, движутся с помощью add_force(). В общем, персонаж вроде как немного мешает движению ригидбоди, когда ригидбоди поднимается вверх (но не сильно), но хуже всего то, что персонаж немного остаёт от ригидбоди при движении вниз. Алсо давно заметил, что мой персонаж падает быстрее любых ригидбоди... Это всё можно как-то пофиксить, оставаясь на кинематикбоди, или нужно обязательно переписывать чарактерконтроллер на ригидбоди? Я просто уже несколько раз туда-сюда перекатывался за последние пару лет, я уже не знаю что делать, и там и там косяки вылезают (помню, ригидбоди персонаж расшвыривал другие ригидбоди как будто они ничего не весят, да ещё и проблемы были с определением пола, короче ну нафиг).

Алсо хочется в будущем сделать регдолл, посоветуйте, нужно ли к этому как-то специально готовиться? В плане адаптации чарактерконтроллера под это дело. Кинематикбоди не помешает же?
Аноним 29/10/21 Птн 14:28:24 #236 №775255 
Как чекнуть, что игра уже запущена? Делаю типа сетевой, а если запустить дохуя одинаковых экзешников на одной машине, то можно нихуёво ботоводить, нужно пофиксить.
Аноним 29/10/21 Птн 15:00:24 #237 №775259 
>>775255
Просто чекай айпишки, че за пляски?
Аноним 29/10/21 Птн 15:23:39 #238 №775260 DELETED
>>775255
Можно сделать так - при запуске запрашиваешь определенный порт, и если пришел ответ, то игра уже запущена, если нет, то запускаешь сервер на этом порту, который ждет запрос.
Можно посмотреть просто средствами винды (чет то там про ProcessName)
Но надо понимать что это все довольно легко обходится. Надежного способа нет.
Аноним 29/10/21 Птн 15:24:41 #239 №775261 DELETED
>>775255
Алсо подумай насчет геймдизайна, чтобы простое ботоводство не давало тупо плюшек (нельзя было набирать бесконечные очки избивая неподвижного противника и т.д.)
Аноним 29/10/21 Птн 19:03:23 #240 №775286 
>>775259
>чекай айпишки
Кеклол, в современном мире под одним внешним v4 айпи могут сидеть сотни пользователей, а у v6 покрытие мизерное, по сути он практически не используется ещё. Теоретически можно чекать внутренние айпи, но откуда тебе знать, что там конкретный провайдер Сычов Тырнет накрутил в своей сети?

>>775255
>Делаю типа сетевой, а если запустить дохуя одинаковых экзешников на одной машине, то можно нихуёво ботоводить, нужно пофиксить.
Забей, во всех ММО ботоводят, в некоторых это даже поощряется вроде как. Лучшее, что можно сделать - стимулировать игрока играть только одним персонажем, не давать преимуществ игроку с несколькими персонажами. К примеру, запретить свободную передачу предметов между персонажами, а за игру соло давать существенный бонус опыта, чтобы не было желания водить хороводы.

>>775260
>запускаешь сервер на этом порту, который ждет запрос
Можно сделать проще: игра создаёт файл, открывает его на чтение/запись и держит открытым. Если её копия попытается получить доступ к тому же файлу, то получит ошибку доступа и должна закрыться. Если пользователь найдёт этот файл и попытается удалить или переименовать, то получит ошибку доступа. Если пользователь обойдёт блокировку файла, то оригинальная игра должна заметить пропажу файла и принять соответствующие меры (специальный флаг на аккаунт или бан). Но это не решает проблемы куллхацкера, который изменяет имя файла в данных игры (зная имя файла сделать это несложно, если exe не проверяется хэш-суммой). Также это не решает проблемы эмуляторов ОС... Вариант с сервером вроде бы тоже не защищает от эмулятора ОС, т.к. все сервера будут на независимых виртуальных машинах. Т.е. кто ищет способ запустить бота, обязательно его найдёт.

>Можно посмотреть просто средствами винды (чет то там про ProcessName)
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-findwindowa
Аноним 30/10/21 Суб 04:23:54 #241 №775357 
>>775286
>Можно сделать проще
Вот да, думаю в том же направлении.
Просто держать на пеке файл, который будет говорить каждому новому экзешнику, что игра-то уже запущена. + добавлю мб проверку на сервере, должно хватить.
Аноним 30/10/21 Суб 04:25:59 #242 №775358 
Хотя я пилю игру под Steam, думал у них встроенный запрет на множественный запуск одной игры, но проверил и оказалось, что не так.
Аноним 30/10/21 Суб 16:35:48 #243 №775409 
>>775286
> игра создаёт файл, открывает его на чтение/запись и держит открытым
>>775357
> держать на пеке файл, который будет говорить
Вы двое только что изобрели мьютексы. Чтобы вы не изобретали семафоры, я пишу этот пост, с гуглящимися словами.
Аноним 30/10/21 Суб 16:37:07 #244 №775410 
>>775409
https://docs.godotengine.org/ru/stable/classes/class_mutex.html
https://docs.godotengine.org/ru/stable/classes/class_semaphore.html
Аноним 30/10/21 Суб 17:43:59 #245 №775425 
>>775409
При чём тут мьютексы и семафоры? Они же регулируют потоки внутри приложения, а не сторонние приложения? Задача анона стоит как "не допустить запуск второго экземпляра приложения". Решение с файлом подразумевает использование особенности ОС, которая не позволяет двум приложениям одновременно работать с одним и тем же файлом в файловой системе.

Приложение 1 открывает файл "файл" на запись.
ОС блокирует доступ к "файл" для остальных приложений.
Приложение 2 пытается открыть "файл" на запись.
ОС сообщает код ошибки: "доступ запрещён".
Приложение 2 получает код и завершает свою работу.
Приложение 1 завершает работу, закрывает файл.
ОС разблокирует доступ к "файл" для приложений.
Приложение 1 или 2 можно снова запустить.

Итого мы можем иметь только 1 или 2, но не оба сразу. Но это не решает проблемы виртуальной машины, у которой отдельная файловая система и которая не знает о существовании соседних виртуальных машин.

>>775358
Может, нужно где-то в настройках включить? Или воспользоваться фичами из АПИ Стима. Потому что обычно игры из Стима автоматически запускают Стим перед своим запуском, может, там в апи есть какой-то интерфейс для теста типа "играет ли пользователь в эту игру"?
Аноним 31/10/21 Вск 23:00:56 #246 №775529 
Кто работал с этим:
https://docs.godotengine.org/en/stable/classes/class_physicsserver.html
Подскажите, насколько хорошо использование этого сервера оптимизирует сцены с большим количеством коллиженшейпов на небольшом количестве объектов? В частности всего несколько статикбоди и несколько ригидбоди, но у них может быть очень большое количество шейпов, которые могут добавляться и удаляться динамически. Хочу прикинуть, на сколько сотен/тысяч шейпов я могу рассчитывать на своём древнем ПК. Прототип на нодах уже работает и пока не лагает, если не спавнить слишком много шейпов, но мне нужно прикинуть перспективы масштабирования.
Аноним 01/11/21 Пнд 17:08:45 #247 №775608 DELETED
Поздравим скаммер софт
Аноним 01/11/21 Пнд 17:15:34 #248 №775609 
>>775608
>скаммер
В чём скам? Вроде бесплатно туториалы делает же.
Аноним 01/11/21 Пнд 17:15:49 #249 №775610 DELETED
>>775529
Я хз, но заметил там интересную функцию area_set_shape ( RID area, int shape_idx, RID shape )

Substitutes a given area shape by another. The old shape is selected by its index, the new one by its RID.

На этом, наверное, можно пул коллижнов сделать.
Аноним 01/11/21 Пнд 17:16:10 #250 №775611 DELETED
>>775609
Шютка над ником.
Аноним 01/11/21 Пнд 18:20:13 #251 №775623 
>>775609
Ты новенький здесь? Это токсик-борда. Все стараются побольней ужалить любого.
Аноним 01/11/21 Пнд 18:23:43 #252 №775624 
>>775610
> пул коллижнов сделать
Игра-то есть? Или опять преждевременной оптимизацией несуществующей игоры занимаемся? В гдскрипте ящитаю выигрыша не будет по сравнению с искаробочными классами-хелперами. Если бы у тебя была игра и тебе нужно было её оптимизировать, ты бы написал модуль на крестах, реализующий пул коллижншейпов и пересобрал бы движок со своим модулем.
Аноним 01/11/21 Пнд 18:31:43 #253 №775625 
>>775611
>Шютка
Ты сделал 7 ошибок в слове "клевета", анон.
>Клевета — заведомо ложная порочащая информация или распространение заведомо ложных сведений, порочащих честь и достоинство другого лица или подрывающих его репутацию.

>>775610
>area_set_shape
По-моему, эта функция делает то же самое, что ты делаешь вручную, когда добавляешь ноду CollisionShape к ноде Area.
>пул коллижнов
Мне не пул нужен, а собрать одну большую физическую модель из множества шейпов в процессе игры. Не ясно только, на сколько шейпов я могу рассчитывать, прежде чем всё начнёт лагать.

Прост раньше пробовал чисто на дерево инстанциировать отдельные статикбоди с простыми шеймпами и всё дико лагало после нескольких десятков тысяч нод в дереве (более 40k). Я знаю, что дерево сильно замедляет работу, но сомневаюсь в эффективности "серверов", а на них работать всё-таки значительно сложнее, чем с деревом сцены. Щас напишу огромный велосипед, а вдруг прирост производительности будет +5 фпс, ну нафиг такое.

Алсо не совсем понятно, что лучше - несколько статикбоди с десятками шейпов или один статикбоди с сотнями шейпов? Они же так и так не двигаются, можно склеить...
Аноним 01/11/21 Пнд 18:42:40 #254 №775628 
2021.08.05.png
>>775624
>Игра-то есть? Или опять преждевременной оптимизацией несуществующей игоры занимаемся?
Игры нет, но есть несколько прототипов, в одном из которых я ощутил довление со стороны дерева сцены, но узнав сложности работы с серверами как-то приуныл и сдулся. Теперь я думаю, а что было бы, если бы я переписал всё на сервера? Вдруг фпс подскочил бы до небес и я бы смог на одну такую карту в сотню раз больше контента накидать, а не оставлять недоделанные тестовые кубы.

Если что, я пробовал сделать чанковую систему. Проблема в том, что добавление/удаление чанков в/с дерева сцены создаёт ещё более сильные тормоза, чем само существование нескольких десятков тысяч нод. Непонятно, будут ли такие же тормоза в чанковой системе на основе серверов или нет.

Я видел чей-то проект на базе серверов годо, но там чувак хвастался тем, что с самого начала делал на серверах, поэтому никакой сравнительной статистики у него нет. Да и проект у него, гм, с видом сверху, т.е. обзор камеры ограничен очень малым числом объектов (непонятно зачем ему вообще сервера понадобились).
Аноним 01/11/21 Пнд 18:53:51 #255 №775631 DELETED
>>775625
Скамер != скаммер. Кроме того, закон о сатире козырней.
Аноним 01/11/21 Пнд 19:43:35 #256 №775636 
i1.jpg
i2.jpg
i3.jpg
>>775631
>Скамер != скаммер.
Эксперты в суде разберутся без твоей подсказки))((

Оригинальное слово scammer по правилам английского языка с двойной m, слова scamer в английском не существует, а в русском многие забывают или ленятся удваивать согласные и со временем заимствованное слово может потерять одну согласную. Но, тем не менее, оба варианта слова в народе означают "мошенник".

Я понимаю, что ты так пошутил, но шутка неуместная и тупая. Уровня школьников, которые смеются над Миссисипи и другими Телепорно.

>>775623
>токсик-борда
А ты токсик-борд не видел, похоже.
Аноним 01/11/21 Пнд 20:39:01 #257 №775642 DELETED
>>775636
А в русском языке нет слова скаммер.
>шутка неуместная и тупая.
Добро пожаловать на двач.
Аноним 01/11/21 Пнд 21:35:30 #258 №775648 
>>775628
> довление со стороны дерева сцены
> тормоза в чанковой системе

Я не знаю. Вроде многопотоки надо лепить с мьютексами и семафорами. Иначе я ХЗ какую надо слепить чорную магию пиксельговгину в окне 400х300 отскейленном чтобы запилить в одном потоке динамический опенворлд.
Аноним 02/11/21 Втр 11:11:30 #259 №775703 
>>775648
>Вроде многопотоки надо лепить с мьютексами и семафорами
Какие там многопотоки, дерево сцены работает в одном потоке. Сильные тормоза возникают из-за, как минимум:
- обхода дерева движком каждый кадр;
- добавления новых нод в дерево (add_child());
- удаления нод из дерева (remove_child()).
Чтобы избавиться от этой проблемы, в движке есть АПИ для прямой работы с серверами (графическим, физическим и т.д.). Ты можешь отправить какие-то данные на сервер и не теребонькать дерево сцены. Но работа с сервером сложнее работы с деревом сцены, поэтому применять их нужно только когда в этом есть необходимость. Вот я и пытаюсь понять, насколько выгодно их использовать, а то вдруг прирост производительности +1%, зачем мне он...

>пиксельговгину в окне 400х300 отскейленном
Графика вообще проблемы не составляет, у меня и 5+ миллионов вершин на экране было и ничего не тормозило (75 фпс), а тут >>775628, как видишь, меньше миллиона вершин, но фпс просел до 3, потому что 88к нод в сцене.

Ладно, я всё понял, тут никто опенворлды не делает, придётся самому на практике выяснять, насколько выгодны сервера.
Аноним 02/11/21 Втр 11:25:45 #260 №775704 DELETED
>>775703
Попробуй сделать синтетический тест.
Аноним 02/11/21 Втр 11:26:55 #261 №775705 
>>775703
Если ты такой крутой, то лепи свой собственный майнлуп без дерева сцены вообще.
https://docs.godotengine.org/ru/stable/classes/class_mainloop.html
Аноним 02/11/21 Втр 11:50:00 #262 №775711 
>>775705
Зачем? В прошлом пробовал писать движок с нуля, бросил и перешёл на готовый движок, только чтобы снова писать с нуля?

Дерево сцены удобно для многих задач. Но не справляется с большим количеством объектов (десятки тысяч). Обычно в таких случаях используют сервера...

>>775704
Хм... Попробую.
Аноним 02/11/21 Втр 12:27:26 #263 №775716 
>>775636
Какой же ты душный пиздец
мимо
Аноним 02/11/21 Втр 13:34:32 #264 №775726 
>>775711
> Зачем? В прошлом пробовал писать движок с нуля, бросил и перешёл на готовый движок
Свой майнлуп в готовом движке проще, чем свой движок и сложнее, чем чужой готовый майнлуп. Это типа нечто среднее. У тебя остаются серверы и менеджеры ресурсов. Вся инфраструктура годота остаётся. Только майнлуп твой.
Вместо дерева сцены менеджер сцены, который ты можешь сделать... эммм... деревом.
Аноним 02/11/21 Втр 13:35:41 #265 №775727 
>>775716
У нас всегда так. Либо душно, либо токсично.
Аноним 02/11/21 Втр 14:07:49 #266 №775732 
>>775726
В чем он не прав?
Аноним 02/11/21 Втр 18:24:17 #267 №775783 
>>775726
Ну это всё понятно, но я делаю 3Д и мне нужно изкоробочное дерево сцены для таких вещей, как, например, персонажи. Дерево мешает только с большим количеством однотипных простых элементов, например, модули генерируемого ландшафта или модули сборных построек. Т.к. модули в большинстве своём тупые, тратить на них ноды нерационально, а их потенциально огромное количество перегружает дерево сцены.


Пару часов назад сделал тест на обычной сцене. Результат неожиданный - добавление коллиженшейпов в один статикбоди нагружает игру намного сильнее, чем создание того же количества статикбоди с одиночными шейпами (в обоих случаях ещё добавляются меши с материалом и текстурой). Как я понял, буллет начинает серьёзно тормозить после 1000 шейпов на одном боди, а вот дерево сцены тормозит у меня примерно после 20-30 нод, то есть в простейшем случае без тормозов (~75 фпс) можно иметь 10к статикбоди или менее 15к коллиженшейпов на одном статикбоди, но чтобы достичь второго варианта, придётся убить уйму времени (где-то полчаса) на пропихивание коллиженшейпов в статикбоди. И это я даже не пытался ничего на них сбрасывать, просто камеру крутил. Хорошо, что я не начал реализовывать второй способ в игре (ну как "не начал", он уже реализован, но только для ригидбоди).

Глянул как юзать сервера... для статикбоди должно быть несложно, жаль, что с ригидбоди получится хрень - нужно вручную передавать трансформы из физиксервера в визуалсервер. Почему так-то? Я ожидал чего-то вроде link(body, mesh) и дальше пусть оно само повторяет трансформы. Сомневаюсь что есть какая-то большая польза от того, что все боди по умолчанию невидимые.

Хе-хе, щас как напишу оболочку для обращения к серверам и снова буду абстрагирован от всех этих низкоуровневых апи)
Аноним 02/11/21 Втр 18:47:25 #268 №775789 DELETED
>>775783
У тебя что вообще за жанр? Как бы обычной игре не нужно иметь ВЕСЬ город в физике одномоментно, только чанк квартала вокруг игрока/ов.
Аноним 03/11/21 Срд 00:37:37 #269 №775824 
>>775789
>У тебя что вообще за жанр?
У меня несколько заготовок, эти две самые серьёзные:
1. GTA-like с генерируемыми городами. Есть базовый генератор карты островного типа из модулей 24х24 метра, есть система чанков. Проблема: все объекты на нодах, число нод растёт очень быстро, из-за этого даже "голая" карта достаточного размера тормозит, но если применять выгрузку и загрузку чанков во время движения игрока, тормоза становятся ещё сильнее - операции по извлечению нод из сцены дороже, чем хранение их в сцене. В общем, я испугался сложности необходимых оптимизаций (серверы) и отложил проект в долгий ящик (уже который раз за последние ~13 лет).
2. Игра про летающие острова и строительство летающих кораблей. Есть базовый прототип строительства на нодах - компоненты на базе CollisionShape соединяются с кораблём-RigidBody, конструкция правдоподобно летает, можно достраивать прямо в полёте. Острова планируется генерировать по тому же принципу, что и города из предыдущего прототипа, но из более крупных фрагментов и меньшей суммарной площади. Но тут я сталкиваюсь с тем, что после 1000 CollisionShape добавление новых затруднительно, да и загрузка/выгрузка острова доставит проблем, особенно со всеми мелкими компонентами (деревья/кусты, например). Я в раздумьях, стоит ли сразу писать под серверы или можно сделать на нодах...

Если что, я знаю про то, что загрузку/выгрузку можно ставить в очередь и распределять по кадрам, чтобы минимизировать задержки. Не помню точно, вроде не пытался таким способом оптимизировать чанковую систему... но главная проблема в том, что даже единичная выгрузка (через remove_child) занимает кучу времени. А если распределение по времени будет слишком долгим, игрок быстро добежит до дырок и провалится или застрянет в них.
Аноним 03/11/21 Срд 00:47:48 #270 №775825 
>>775824
Беседы про репарент нод несколько тредов назад ты, видимо пропустил?

Если вкратце. Там некий анон хвастался, что добился прироста производительности, создав пул нод, висящий в памяти, загруженный и не выгружающийся. У пула парент не в дереве. Соответственно, и он сам и его потомки не активны - у них не вызываются колбэки процесса и т.п. При необходимости, ноды из этого пула внедряются в дерево сцены и начинают работать, а потом обратно удаляются в пул. И якобы у него там был прирост производительности по сравнению с загрузкой/выгрузкой нод. Но пруфов он не предоставил.
Аноним 03/11/21 Срд 13:04:15 #271 №775873 
>>775825
>Беседы про репарент нод несколько тредов назад ты, видимо пропустил?
Да, я вообще не слежу за тредами здесь, редко захожу.

>создав пул нод, висящий в памяти, загруженный и не выгружающийся. У пула парент не в дереве. Соответственно, и он сам и его потомки не активны - у них не вызываются колбэки процесса и т.п. При необходимости, ноды из этого пула внедряются в дерево сцены и начинают работать, а потом обратно удаляются в пул.
Я делал точь-в-точь такую же систему полтора года назад. Сразу в двух вариантах:
1. Объекты интерьера скрываются, когда игрок выходит за дверь, и отображаются, когда игрок входит в дверь.
2. Чанки скрываются, когда игрок отходит от них на определённое расстояние, и отображаются, когда подходит к ним.

>по сравнению с загрузкой/выгрузкой нод
Я неправильно выразился.
"Загрузка" - add_child(chunk)
"Выгрузка" - remove_child(chunk)
Т.е. точно та же фигня, что у того анона.

Проблема в том, сколько нод нужно добавлять/удалять за кадр. В случае с интерьером я особо не тестил нагрузку, но там у меня были мелкие комнаты и в идеале нод было мало (на самом деле была значительная нагрузка, если попытаться включать интерьеры в нескольких ближайших домах). В случае с чанками вышло так, что даже имея крупные чанки (24 метра), нужно за один раз работать сразу с несколькими десятками, даже в небольшом радиусе, а ведь внутри чанка тоже ноды. Возможно, если создавать очередь, это было бы не так заметно...

В общем, ноды для больших сцен - это плохо, нужно изучать работу с серверами и не насиловать дерево сцены тысячами нод, особенно физических (т.к. каждая физическая нода регистрирует себя на физическом сервере, а он работает асинхронно в отдельном потоке, отсюда лаги).
Аноним 03/11/21 Срд 21:31:12 #272 №776022 
>>775873
Ну я в самом начале сказал, что пилить надо многопоточную систему, а это невозможно в дефолтной (однопоточной!) реализации дерева сцены. Следовательно, нужно пилить собственный майнлуп, в который впроектировать многопоточную архитектуру.

И это логично, не в упрёк Хуану, но его решения исключительно учебного характера. Не рассчитанные на реальный продакшен.
Аноним 03/11/21 Срд 21:42:44 #273 №776027 DELETED
>>776022
Ты же знаешь, что в годоте есть https://docs.godotengine.org/en/stable/tutorials/threads/using_multiple_threads.html
Аноним 03/11/21 Срд 21:51:01 #274 №776034 
>>775703
> Какие там многопотоки, дерево сцены работает в одном потоке
>>776022
> дефолтной (однопоточной!) реализации дерева сцены
>>776027
> Ты же знаешь
Нет ты.
Аноним 03/11/21 Срд 21:54:24 #275 №776036 DELETED
>>776034
Аноним 03/11/21 Срд 22:12:12 #276 №776044 
>>776036
На дерево это не влияет. Во сколько потоков ты ни грузи ноды, тебе придётся локнуть главный поток, чтобы присоединить их к дереву. Об том и речь.
Аноним 04/11/21 Чтв 00:09:28 #277 №776064 
Сделал свой тест производительности на базе серверов по официальному туториалу. Что печалит:
- визуальный сервер начинает плавно тормозить примерно с 13-14 тысяч визуальных объектов одновременно на экране, и это не зависит от видеокарты (подозреваю, всё упирается в число запросов от процессора к видеокарте);
- визуальный сервер не отсекает объекты, перекрытые другими объектами (ну это и так всем известно);
- физический сервер резко захлёбывается и снижает общую производительность до минимальной (5 FPS лол) на 12-13 тысячах статических объектов, при этом нагрузка на 4-ядерный процессор неполная - видимо, всё упирается в производительность на ядро;
- если неправильно вызвать free_rid() (например, освободить шейп, который привязан к боди), программа зависает и завершается без каких-либо сообщений об ошибке (похоже на баг).
Что радует:
- визуальный сервер отсекает объекты вне поля зрения камеры, поэтому можно без проблем создать 300 тысяч и больше визуальных объектов, лишь бы они не отображались одновременно;
- физический сервер создаёт новые физические (статические) тела молниеносно вплоть до примерно 10 тысяч объектов;
- удаление объектов пачками через free_rid() практически не влияет на производительность примерно до тысячи объектов за кадр (один объект - это 3 вызова free_rid(): шейп, боди и графический инстанс).

RigidBody, несколько шейпов на объект и т.д. тестить не стал. Главный для меня вывод - чанковая система на основе серверов будет работать лучше, т.к. тормоза во время создания и удаления объектов меньше. Я знаю, что удалять не обязательно, но т.к. это самые затратные операции и они не занимают много времени - другие способы будут быстрее. Хотя через сервера управлять объектами сложнее...

Эх, ещё немного потыкался - всё-таки прирост производительности минимальный. Ноды и дерево, конечно, замедляют игру, но не так сильно, как казалось. Впрочем, разница в производительности заметна невооружённым глазом, а это что-то да значит. В любом случае, главное - это умная система чанков, я просто в тупую пытался тысячи объектов туда-сюда таскать, поэтому и медленно было.

>>776022
>пилить надо многопоточную систему
Ну я прикинул, если использовать серверы - многопоточности не нужно, добавления/удаления 1000 объектов за кадр должно хватить чанковой системе, учитывая возможность поставить всё это в очередь, растянув на несколько кадров. Многопоточность нужна физическому движку, который захлёбывается из-за 12 тысяч статичных объектов, не нагружая процессор, но это вопрос к Bullet, а не к Godot. Конкретно к Godot вопрос в том, почему он до сих пор не умеет отбрасывать невидимые (перекрытые) объекты, но, мне кажется, это должны скоро исправить (порталы вот уже сделали в одной из бета-версий, а ведь я их велосипедил когда-то).

>>776044
>тебе придётся локнуть главный поток, чтобы присоединить их к дереву
Таки почему у меня цикл
>for child in children(): remove_child(child)
Работает существенно медленнее чем
>for object in objects:
>...free_rid(object.body)
>...free_rid(object.shape)
>...free_rid(object.mesh)
? Это ведь в обоих случаях однопоточная задача, при том что в первом случае я даже ничего не высвобождаю - только разрываю связь ноды с деревом, тогда как во втором случае высвобождаются блоки памяти (или, как минимум, собираются это сделать).

Т.е. проблема не в потоках. Тот же remove_child() происходит в потоке сцены, тогда как обращения free_rid() идут к отдельным потокам, в которых вертятся сервера (по идее).
Аноним 04/11/21 Чтв 00:42:59 #278 №776065 
>>776064
>Таки почему у меня цикл
>>for child in children(): remove_child(child)
>Работает существенно медленнее
А-а-а, блин! Я совсем запутался.
Короче, этот цикл у меня был таким:
>for child in get_children():
>_ remove_child(child)
>_ child.queue_free()
Вот из-за этой последней строчки возникала значительная задержка. Закомментировал эту строчку, оставив только remove_child() - теперь удаление объектов из сцены занимает ровно столько же времени, сколько и free_rid(). Щито? Почему так? То есть у серверов вообще никаких преимуществ перед деревом сцены не остаётся? Где этот прирост производительности-то... куда он делся?(

Я запутался. Впрочем, ладно, сделаю что-нибудь. Главная задача была - определить практический лимит количества нод/объектов, выше которого всё начинает жёстко тормозить. И этот лимит примерно на уровне 30 тысяч нод для моего компьютера.

Кажется, я кое-что вспомнил. Предыдущий проект я забросил не из-за проблем с производительностью, а из-за того, что не смог выдавить из себя красивый контент, в результате карта выглядела крайне унылой. Я переключился на 2D, рассчитывая что рисовать 2D с видом сверху проще, но там нужно было сильно переделывать генератор карт и я окончательно на всё забил... Блин.
Аноним 04/11/21 Чтв 10:29:23 #279 №776077 
1636010963518.jpeg
>>776065
> queue_free()
> Где этот прирост производительности-то... куда он делся?(
Ты меня не слушал.
>>775825
> создав пул нод, висящий в памяти, загруженный и не выгружающийся.
Загруженный.
Не выгружающийся.
Пул, мазафака, ду ю но ит? Тормоза берутся, когда ГЦ высвобождает память. И когда менеджер памяти выделяет память под новую ноду. Минимизируешь загрузку/выгрузку из памяти за счёт максимального реиспользования нод. Это напрямую значит, что чайлды нод создаются только один раз при старте игры. Возможно даже в отдельных потоках. После того как поток просигналил о завершении, ты знаешь, что в определенной переменной лежит новая нода. Нода помещается в пул. Далее ноды, оставаясь в памяти, вмять! перемещаются репарентом по необходимости из пула в дерево и из дерева в пул.
Аноним 04/11/21 Чтв 13:10:23 #280 №776100 
Парни, хелпайте, в геймдеве опыта не имею, а тут такие обидные штуки случаются.
В общем, баловался с Camera2D и управлением как во всяких стратегиях с видом сверху. Я смог понять, как камера передвигается с помощью мыши и вроде не так уж и криво, но решил привязать gui к этой камере.
Так вот, сама суть: когда Camera2D достигает лимита, то если я делаю движение по смене позиции в сторону лимита, то картинка за лимит не уходит, но туда gui съезжает, т. е. Camera2D всё равно меняет позицию, уходя за лимит, но этого не видно.
Вообще, можно как-то сдетектить, что лимит был достигнут(чтобы не передвигалась Camera2D за него) или нужно gui не к камере привязывать, лол? Если что, реализовал перемещение камеры через изменение global_position.
Аноним 04/11/21 Чтв 13:57:14 #281 №776106 
>>776100
> или нужно gui не к камере привязывать, лол?
This.
Изучи класс CanvasLayer и зачем он нужен. Если вкратце, то ты делаешь несколько таких слоёв, в одном гуй, в другом сцена и камера.
Аноним 04/11/21 Чтв 14:31:13 #282 №776113 
>>776077
Это ты меня не слушал.
>перемещаются репарентом по необходимости из пула в дерево и из дерева в пул.
Я именно так и делал. Но это вызывает дичайшую нагрузку, когда нужно репарентить сколь-либо существенное количество нод. Именно поэтому я заинтересовался серверами, но на практике выяснилось, что они не дают никакого прироста производительности по сравнению с этим самым "пулом нод".

Единственный выход - делать очередь на репарент и пропихивать ноды в час по чайной ложке, чтобы не было резких просадок фпс. Аналогично с созданием и освобождением нод.

Вообще, мне кажется, что тот хваставшийся анон - это я, ведь именно я 1.5 года назад где-то здесь хвастался, как у меня десятки тысяч нод находятся в скрытом пуле (только слова я такого не знал, я называю это контейнером), пока игрок не зайдёт в помещение.
Аноним 04/11/21 Чтв 14:47:00 #283 №776119 
>>776113
Ну ладно. Значит отбрасываем эту идею и ищем дальше.
Аноним 05/11/21 Птн 08:06:14 #284 №776207 
>>776106
действительно, теперь ничего не съезжает, спасибо, анончик.
Аноним 05/11/21 Птн 13:41:17 #285 №776241 
>>776100
>>776207
В следующий раз, прежде чем задавать вопрос, попробуй почитать официальные туториалы в мануале, например: https://docs.godotengine.org/en/stable/tutorials/2d/canvas_layers.html - первая же статья в категории "Tutorials > 2D".
Аноним 05/11/21 Птн 16:07:42 #286 №776260 
Тут недавно туториал вышел:
https://www.reddit.com/r/godot/comments/qmy2er/a_lot_of_people_wanted_to_know_how_to_make_a/
Но зачем делать так, если можно просто:
export var player = {
speed = 50.0,
weight = 75.0,
weapons = []}
И так далее. Всё организованно, можно свернуть/развернуть.
И доступ из кода удобный, через точку: player.speed, player.weight
Зачем может быть нужно что-то другое? Тем более сложное.
Аноним 05/11/21 Птн 17:02:40 #287 №776265 DELETED
>>776260
>зачем делать так, если можно просто:
Очевидно чтобы были категории, сворачиваемые списки.
Есть еще ассет цветные кнопочки наворачивать.
https://godotengine.org/asset-library/asset/1054
Аноним 06/11/21 Суб 10:57:03 #288 №776345 
>>776260
> Зачем может быть нужно что-то другое?
Всё это - вопрос вкуса. Тебе удобнее через словари/объекты/таблицы/ассоц.массивы. Через точку. Кому-то другому нравится через классы и методы, через функцию с аргументом в скобочках. Некоторым нравится ещё и через словари, но не через точку, а через квадратные скобочки.
Аноним 06/11/21 Суб 11:08:38 #289 №776346 
>>776260
> export var
> weapons = []
Насколько я помню, в инспектор вылезет интерфейс нетипизированного массива, в который можно напихать любой хуйни, от которой игра обмякнет, если не писать кучу проверок на дурака при работе с этим массивом. Возможно уже сделали механизм, позволяющий фильтровать, а лучше типизировать данные для добавления в массив из инспектора?

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

Внимание! Костыль с говнокодом через 3... 2... 1...
https://godotengine.org/asset-library/asset/514
Аноним 07/11/21 Вск 10:43:19 #290 №776456 
>>776432
> не вывезли реквест
> на мобиле
Никто не вывезет. 100500 кубов с физоном это лютая подъёбка, которую раскусили ещё джва года назад (но не смирившиеся были изгнаны в срачетред). Суть токова: мобилы это глобальное наебалово быдла корпоративными кабанчиками. Хочешь, чтобы мобила вывозила ГРАФОНИУМ - покупай мобилу за 50К. Но зачем, если вместо игровой мобилы выгоднее купить плойку?
Аноним 07/11/21 Вск 10:55:29 #291 №776459 
>>776458
> я плавал я знаю
Так а почему же тогда 15 ФПС на вебэмке, лол?
Аноним 07/11/21 Вск 11:00:09 #292 №776462 
Screenshot20211107105956.png
Аноним 07/11/21 Вск 23:31:54 #293 №776604 
image.png
image.png
image.png
Анончики, подскажите как правильно настроить fog. Хочу сделать атмосферное затенение для высокой башни для задника, но нужный мне эффект достигается только фогом с высталеннымы параметрами height max и height min (500 и 3000 соответвенно) но при этом все объекты находящиеся снизу закумариваются фогом вглухую. Как можно настроить реалистичный фог, который усиливается вдаль, и уменьшается с высотой?
Аноним 07/11/21 Вск 23:56:43 #294 №776608 
>>776604
> реалистичный фог, который усиливается вдаль, и уменьшается с высотой?
Плагином. Буквально вчера видел.
Аноним 07/11/21 Вск 23:57:54 #295 №776609 
>>776608
>>776604
https://www.youtube.com/watch?v=wDD7c7IEFTQ
Аноним 07/11/21 Вск 23:59:27 #296 №776610 
>>776609
>>776608
>>776604
https://github.com/SIsilicon/Godot-Volumetrics-Plugin
Аноним 08/11/21 Пнд 12:46:48 #297 №776661 
>>776265
>Очевидно чтобы были категории, сворачиваемые списки.
Это и через словари с массивами делается.
>Есть еще ассет цветные кнопочки наворачивать.
Зачем?

>>776345
>Всё это - вопрос вкуса.
Согласен, но я не понимаю, кому может быть удобно группировать переменные с именами типа player_weapon, player_weapon_count, player_weapon_pistol_bullets_damage, player_weapon_pistol_bullets_count и т.д., когда такие вещи нужно сортировать по разным объектам (player, weapon, pistol, bullet) или внутри древовидного словаря (player.weapons.pistol.bullets.damage - всё просто, понятно и, главное, компактно как в коде, так и в интерфейсе)..

>>776346
>от которой игра обмякнет, если не писать кучу проверок на дурака при работе с этим массивом
Лучшая проверка на дурака - это человек, который контролирует доступ дураков к конкретному компьютеру. Если программа встретила ошибку в данных, она должна упасть с сообщением об ошибке, требующим эту ошибку исправить, а не тихо проглотить или попытаться исправить. Мы ведь не прошивку для космических ракет пишем (для этого нужна Ada), а развлекательные программы, от которых не требуется надёжной безотказной работы во что бы то ни стало. И если ты объявил динамический массив, а потом САМ напихал в него всякой херни, от которой твоя игра обмякла - виноват тут только ты сам.

Другое дело, что строго типизированные переменные ускоряют операции на сколько-то %, но это вроде как только в будущих версиях. Кстати, в GDScript 2.0 будут типизированные массивы, что-то вроде Array[String] - массив строк. Мне, как воспитанному Паскалем, очень хочется такие массивы, я привык к "array of тип". Впрочем, гораздо больше мне не хватает создания пользовательских типов (в Паскале это раздел type любого модуля/программы)...
Аноним 08/11/21 Пнд 12:54:12 #298 №776662 
>>776458
>400 кубов
Тебе кинуть ссылку на алиэкспресс, где можно купить детские кубики с буковками? Как раз скоро распродажа 11.11, купишь себе 500 кубиков и будешь с ними в своей комнате играть сколько влезет, без единого лага на максимальной частоте кадров, сколько могут воспринять твои глаза. Я же вижу, ты не наигрался в детстве, наверное, тебе их просто не покупали...

А на игровых движках нужно делать нормальные игры.
Аноним 08/11/21 Пнд 14:22:52 #299 №776676 
>>776661
> Мы ведь не прошивку для космических ракет пишем (для этого нужна Ada), а развлекательные программы, от которых не требуется надёжной безотказной работы во что бы то ни стало.
Тодд Говард в треде! С его падающим каждые 5 минут скайримом!
> кому может быть удобно группировать переменные с именами типа player_weapon, player_weapon_count, player_weapon_pistol_bullets_damage, player_weapon_pistol_bullets_count и т.д.
Ты невнимательно смотрел видос. Там имена переменных даются для наглядности. В реале через оверрайд тех методов ты можешь в инспекторе прописать переменную Foo в категории Bar, которая перенаправляет значения во внутреннюю переменную Baz скрипта. И даже (о ужас!) в индекс массива записывать!
Мне не понравилось, что для этого скрипт нужно тулскриптом делать. Это добавит головняка.
Аноним 08/11/21 Пнд 15:58:19 #300 №776730 
>>776676
>падающим каждые 5 минут скайримом
Я не предлагаю выпускать в релиз неотлаженную версию, которая падает каждые 5 минут. Просто позволь игре падать, пока ты её разрабатываешь, чтобы ты знал о существовании внутренних проблем и пытался их исправить. А если игра у тебя сейчас молча съедает любые данные и не падает, то потом ты очень удивишься, когда в релизе вылезут непонятные баги, о которых ты ничего не знаешь, потому что даже не пытался их отлавливать.

>ты можешь в инспекторе прописать переменную Foo в категории Bar, которая перенаправляет значения во внутреннюю переменную Baz скрипта. И даже (о ужас!) в индекс массива записывать!
З А Ч Е М
А
Ч
Е
М

В каких ситуациях вот прям очень нужно внедрять такую мудрёную систему? Тем более что она в любом случае
>добавит головняка.
Аноним 08/11/21 Пнд 23:52:19 #301 №776775 
1636404738654.jpg
>>776730
> З А Ч Е М
Чтобы все охуели, как я могу.
Аноним 09/11/21 Втр 04:52:32 #302 №776792 
>>776775
Вообще-то речь про инструменты разработчика - их никто кроме тебя не увидит, если ты работаешь над проектом один и не спамишь скриншотами редактора везде где можно.
Баг всплывающих подсказок редактора Аноним 09/11/21 Втр 14:12:01 #303 №776832 
А у всех подсказки в редакторе Годо мигают? Навожу курсор на элемент интерфейса, подсказка появляется, через секунду исчезает, потом снова появляется и т.д. Читать текст подсказки из-за этого очень сложно. Версии Годо - разные, я этот баг уже 2 года наблюдаю. Система Windows 10. Дрейфа курсора точно нет и в других программах с всплывающими подсказками всё нормально, впервые встретил такое именно в Годо. Почему это так и как исправить? Очень редко, бывает, подсказка работает нормально, но потом опять ломается и начинает мигать. Очень раздражает...
Аноним 09/11/21 Втр 15:57:33 #304 №776847 DELETED
>>776832
Нет, никогда не сталкивался. Погуглил, пишут такое бывает, если стоит какой-то сторонний софт, типа кастомного рабочего стола. Особенно если у софта настройка "всегда поверх других окон". М.б. мессенджер какой-то.
Аноним 09/11/21 Втр 18:03:48 #305 №776863 
>>776847
>кастомного рабочего стола
Нет такого. Есть только драйвер мыши, но он ничего особенного на экран не выводит, тем более в окно Godot, тем более постоянно.
>всегда поверх других окон
Ну вот диспетчер задач никак подсказкам Годо не мешает, хотя находится поверх всех окон... Да и как оно может мешать, если подсказки Годо рендерятся прямо в окне редактора, не выходя за его пределы?
>мессенджер
Вообще не пользуюсь.

Короче, хотел сейчас протестировать, закрыв лишние программы, но ВНЕЗАПНО подсказки сейчас работают нормально со всеми теми программами что обычно открыты. Я позавчера перекатился на 3.4, не уверен, замечал ли этот баг в этой версии или нет... Почему-то кажется, что вчера он был, а сейчас пропал.

Вспомнил ещё, что меня раздражает в подсказках: там часто есть ссылки на какие-нибудь компоненты, разделы справки и т.д., но кликнуть по ним невозможно, потому что подсказка скрывается, если навести на неё курсор. Приходится искать тот же текст в окне по F1. Это так и задумано что ли? Я бы сделал так, чтобы подсказки задерживались на экране, давая кликнуть на ссылку.

Кстати, кто уже перекатился на 3.4 - как ощущения? По-моему редактор стал в несколько раз шустрее откликаться, сцены быстрее открываются и даже отклик игры лучше. Они что, повысили частоту опроса устройств ввода? Я благодаря этому обнаружил баг в своём коде вращения камеры мышкой, лол, вместо "+=" было "=" и смещение курсора не накапливалось, из-за чего камера двигалась рывками.
Аноним 09/11/21 Втр 19:07:31 #306 №776871 
>>776847
>>776863
>ВНЕЗАПНО подсказки сейчас работают нормально
Опять мигают. Но теперь я погуглил и нашёл источник проблемы.
https://github.com/godotengine/godot/issues/41251
Только в моём случае подсказки мигают с частотой примерно 1 Гц пока MPC-HC воспроизводит музыку. От режима отображения окна никак не зависит, даже если окно свернуть в трей.

Кстати, забавно, но подсказка сохраняется и не мигает, если двигать курсором туда-сюда вдоль элемента управления, которому принадлежит эта подсказка. Ну а если поставить музыку на паузу, например, медиаклавишей, то подсказка вообще мигать перестаёт и работает нормально.

Какой-то дурацкий баг. Но теперь хотя бы понятно, как читать подсказки)
Аноним 09/11/21 Втр 21:39:18 #307 №776889 
1636483159170.jpg
>>776871
> Какой-то дурацкий баг.
Это не я! Это всё драйвера опен гл ес! Вот выкачу четвёрку на вулкане и подсказки будут мигать уже при одновременно запущенном в фоне вулкан-приложении!
мимохуан
Аноним 10/11/21 Срд 03:23:13 #308 №776914 
Порталы 3д оптимизируют нормально?
Аноним 10/11/21 Срд 08:53:51 #309 №776923 DELETED
>>776871
Что тут сказать. С видео/музыкой vlc, mpv и firefox картинка-в-картинке таких проблем нет.
Аноним 10/11/21 Срд 13:33:40 #310 №776940 
>>776923
> Что тут сказать
Еблан наставил говна себе в винду, что она вся моргает и трисётси, а виноват конечно - кто? Ну-ка хором!
Аноним 10/11/21 Срд 14:03:54 #311 №776942 
16079757674750.jpg
>>776940
>а виноват конечно - кто? Ну-ка хором!
Иван Васильевич Бунша?!
Аноним 10/11/21 Срд 17:15:25 #312 №776960 
>>776923
>vlc, mpv
Да я просто MPC:HC пользуюсь сколько себя помню, ещё с Windows XP, не хочу переходить на какие-то непривычные свестяще-пердящие альтернативы. И это первый такой случай, чтобы MPC:HC мешал каким-либо приложениям. Но помеха минимальная, мне эти подсказки редко нужны, а поставить музыку на паузу вообще не проблема с медиа-клавишами клавиатуры. Просто баг очень странный, MPC:HC вообще-то использует DirectX, а Godot только OpenGL, при этом речь даже не о видео, а о музыке... Но каким-то мистическим образом воспроизведение музыки MPC:HC вызывает ежесекундные обновления окна редактора Godot и мигание подсказок (которые цветные с форматированием, с жёлтыми всё нормально).

>>776914
Сделай тестовую сцену и проверь сам. Мне вот порталы не нужны, у меня опенворлд и оптимизация должна быть чанками, а порталы используют только в помещениях, то есть в каких-нибудь коридорных уровнях, где игрок идёт из комнаты в комнату.
Аноним 11/11/21 Чтв 21:51:35 #313 №777089 
Как делать ДЛЦ? Как бы делали вы?
Аноним 12/11/21 Птн 00:40:41 #314 №777119 DELETED
>>777089
Официальный способ таков
https://docs.godotengine.org/en/stable/getting_started/workflow/export/exporting_pcks.html
Аноним 12/11/21 Птн 06:42:36 #315 №777127 
Как настроить освещение, чтобы было как, например, в майнкрафте? Там на освещённых местах ярко, а в пещерах тьма, вообще ничего без источника ​света не видно. Я у себя ​настроил освещение так, чтобы тени были светлыми, но из-за этого в закрытых помещениях слишком светло... Я так понимаю, придётся динамически определять, находится ли игрок в помещении или снаружи?
Аноним 12/11/21 Птн 09:44:12 #316 №777129 
>>777127
>Как настроить освещение, чтобы было как, например, в майнкрафте?

В мойнкрафте освещение считается велосипедно поиском пути по A* от кубиков
Аноним OP 12/11/21 Птн 12:41:36 #317 №777159 
>>777127
> Я так понимаю, придётся динамически определять, находится ли игрок в помещении или снаружи?
Правильно понимаешь.
Вообще, работа со светом - отдельный параграф геймдизайна, требующий без шуток кинематографических знаний и желательно опыта. Когда ты в современных играх видишь, как освещение меняется по ходу движения, там желтеет, тут синеет, там ярче, тут глубже, - ты порой даже не задумываешься, что за этим стоит долгая (и высокооплачиваемая!) постановочная работа.

Ну а технически, в годоте, рекомендую делать это через Area. Прошёл сигнал, что камера, через которую игрок смотрит в пещере - источники света переключаются для неё в режим пещер. Так же удобно сразу подгружать в камеру соответствующий файл окружения. Думаешь это просто так Хуан сделал окружение отдельным файловым ресурсом Environment, и полем для его динамической подгрузки в камеру?
Аноним 12/11/21 Птн 13:08:04 #318 №777164 
792338975id14416gol.jpg
Top Down.png
Анон, расскажи перекату с первого GameMaker за Годо. Хочу запилить две игори, но не могу оценить затраты по времени, дошику и общий заеб -

1) 2D, Симулятор сетевого маркетолога. По фронту близкое к визуальной новелле, то есть набор сцен, артов персонажей, на движке упрощенной RPG со статами, прокачкой и инвентарем (без менеджмента). Возможно будет передвижение по городу аля JRPG.

2) 3D топ-довн шутан. Очень нравится эстетический лук пикрелейтед, но с 3D до этого вообще не работал и не могу осознать насколько это гемор или нет. По механикам всё стандартно на уровне технодемки: стрельба, перезарядка, смена оружия, разные параметры оружия, смэрть и сердешки. AI тоже простой, на паре стейтов типа "покой, бег к цели до дистанции атаки, атака".

На коммерцию не рассчитываю, хочу пощупать движок и воплотить идеи. Может быть потом когда-нибудь с кем-нибудь как-нибудь это будет допиливаться/перепиливаться для сторов, но сейчас цели другие.

Какие подводные? Стоит ли вообще вкатываться в Годо?
Аноним 12/11/21 Птн 13:50:30 #319 №777167 DELETED
>>777127
В годоте есть визуальные слои (как в блендере), соответственно если какой-то объект находится в слое 2, то источник света в слое 1 на него не действует. Это же касается камер. Например можно сделать объект стены, который только отбрасывает тень.
Аноним 12/11/21 Птн 13:51:20 #320 №777168 DELETED
>>777164
>Какие подводные?
Никаких.
>но с 3D до этого вообще не работал
За месяца 3 научишься.
Аноним 12/11/21 Птн 17:05:24 #321 №777178 
image.png
>>777164
>Стоит ли вообще вкатываться в Годо?
Посмотри на тысячи готовых успешных законченных годот игр и ты сам себе ответишь на этот вопрос.
Аноним 12/11/21 Птн 19:02:10 #322 №777193 
>>777178
Двачую. Ссылка на игры в оп-посте.
Аноним 12/11/21 Птн 21:25:48 #323 №777212 
>>777129
>велосипедно поиском пути по A* от кубиков
Про это я слышал, но меня интересует не велосипед майнкрафта, а то, как выглядит результат - светлые тени на поверхности и кромешная тьма в подземельях - и как можно добиться его в игре на Годо.

>>777167
>можно сделать объект стены, который только отбрасывает тень
Как это поможет в ситуации, когда я хочу светлые тени в одном месте и тёмные тени в другом? Тени друг с другом не складываются же.

>>777159
>требующий без шуток кинематографических знаний и желательно опыта
Это если нужен реализм, а мне реализм не нужен. Я просто собрал из примитивных блоков "пещеру", прогулялся по ней, вроде всё ок - но вдруг подумал, а чё так светло-то, будто днём под деревом? И вспомнил, какая в майнкрафтовских пещерах тьма... Так что мне особых знаний и опыта не нужно, мне, надеюсь, достаточно темноту нагнать.

>делать это через Area
О, точно, а я что-то про рейкаст "в потолок" думал. Area действительно удобнее будет, я могу её шейп динамически смоделировать и объединить все ближайшие однотипные зоны в одну.

>Думаешь это просто так Хуан сделал окружение отдельным файловым ресурсом Environment, и полем для его динамической подгрузки в камеру?
Нет, конечно, я понимаю такое решение, но не совсем ясно, как сделать переключение, да ещё и плавное. Про отдельный ресурс я, кстати, читал в блоге Overwatch - там они для Overwatch 2 изобрели какой-то велосипед, позволяющий легко менять настройки окружения для любой карты - раньше всё окружение, как я понял, запекалась в карту, из-за чего нельзя было просто так взять и изменить день на ночь, не создавая отдельной карты. Забавно, что в Godot уже давно есть то, что только собираются внедрить в ещё не вышедший сиквел Overwatch...

А про поле в камере впервые слышу, я у себя создал отдельную сцену с какой-то нодой environment и источником света, имитирующем солнце, и сделал её синглтоном. Нужно будет мануал почитать)
Аноним 12/11/21 Птн 22:12:59 #324 №777214 
>>777164
>перекату с первого GameMaker за Годо
GM/GMS - это "конструктор игр", а Godot - "игровой движок", хотя и выглядит внешне как "конструктор игр". Разница в том, что конструктор даёт компоненты по типу деталек Лего, из которых любой ребёнок без опыта и знаний соберёт игру, но что-то более сложное сделать не всегда возможно, тогда как игровой движок даёт сложные программные инструменты, которые нужно изучать перед использованием, но зато и ограничений намного меньше. Однако система нод Godot сильно напоминает такие детальки Лего, просто разобраться в них сложнее и многое придётся делать самостоятельно в виде скриптов, а не кнопками на экране. Можешь рассматривать GM как Lego Duplo, а Godot - как Lego Technic.

>оценить затраты по времени
1) Читай туториалы, там всё есть. Затраты по времени будут снижаться многократно в процессе выработки навыков.
2) Читай туториалы и не бойся, что это 3D, потому что геймплейно твоя идея 2D, и трёхмерные модельки в данном случае усложняют работу лишь художникам. 3D сложно кодить только если геймплей 3D.

>Какие подводные?
Самое сложное в игре - нарисовать вменяемую графику, от которой не будет тошнить хотя бы тебя. Тем более если ты никогда графикой не занимался, в частности 3D. Закинуть модельки с текстурами в движок и заставить их двигаться - вообще очень легко в сравнении с созданием этих самых моделек и текстур...

>Стоит ли вообще вкатываться в Годо?
Поскольку у тебя нет никаких конкретных запросов, стоит попробовать, а дальше сам разберёшься, продолжать или искать что-то другое. Порог входа в Godot ниже, чем у других популярных движков, он нетребователен к компьютеру, мало весит и полностью бесплатен, поэтому не вижу причин не пробовать.
Аноним 13/11/21 Суб 09:52:05 #325 №777253 
1636786325984.png
>>777212
> про поле в камере впервые слышу
Аноним 13/11/21 Суб 12:55:48 #326 №777274 
>>777178
Не вижу прямой связи между количеством успешных игр и движком. Может, дело в игроделах? Или фазе Луны?

>>777214
Вопрос скорее был именно про актуальность движка и его выбор в рамках специфики конкретных игр. По тому же GMS я могу сказать - да, это конструктор. Он дает больше возможностей если писать код, а не дропать компоненты. Но вывозит что-то дальше геймджемов он с трудом. Быстрое прототипирование и возможность писать костыли - это плюс на короткосроке и в мелких проектах, но на дальней дистанции лично я заработал смерть жопы, пытаясь развить игру во что-то большее. Плюс готовых решений практически нет - от освещения до UI, всё нужно костылить самому, а это тянет за собой необходимость курить дохера материалов и учиться разбираться во всём вообще. Даже поддержка Steam SDK барахлит, и на долгосроке вылезает косяками, помимо непонятных ошибок с исчезающими ключевыми объектами и данными.
Возможно это я криворукий, наиболее вероятно так и есть. Тем не менее.

Поэтому вопрос так верхнеуровнево и звучит - стоит ли в Годо? Потому что я не могу предвидеть все подводные, это можно озвучить только человек который плотно елозится с движком уже год, а лучше и не один. По тому что я успел увидеть в гайдах и в выдаче на ютабе - выглядит слишком оптимистично и идеально. Запнулся только о сигналы, какой-то люто абстрактный прекол, суть вроде бы ясна, а имплементация душит. В остальном выглядит как райский рай где всё модульно, для UI всё готово, освещение, камеры, вагон готовых нодов, скелетная анимация, 2Д, 3Д, и просто уруру и уняня. Тут и возникает вопрос - а какие подводные, и почему еще весь геймдев не перешел на Годо? Дело в движке, или в геймдеве?
Аноним 13/11/21 Суб 12:57:17 #327 №777275 
А, ну и Python-like очень привлекает, после GMS-ного недоси, недохренпоймичего.

>>777274
Аноним 13/11/21 Суб 14:54:20 #328 №777286 
>>777274
Проблема в годоте - комплексные ноды работают как говно. Ими никто не пользуется. Все что больше кнопки или лейбла уродливо.
Проблемы с оптимизацией. Boolean весит 1 байт. Некоторые решения сделаны очень топорно и будут фризить даже на небольшом количестве данных. Типа выполнение кода с# в первый раз, добавление партиклов в первый раз, некоторых шейдерочков на сцены. Надо делать кучу пустых нод чтобы делать слои шейдеров. Написание 1 буквы вызывает 1 драв колл. Буквы с большим шрифтом (100-200+) будут ещё сжирать видеопамять. Конкретной клетке в тайлмапе нельзя задать высоту, поэтому придется всегда костылить свою тайлмапу. Шейдеры не могут выпукивать свои данные в другие шейдеры или быть зациклены от текущего состояния экрана.
В остальном, особенно для 2д, норм.
Аноним 13/11/21 Суб 15:17:46 #329 №777289 
>>777274
>актуальность движка
Движок регулярно обновляется большой группой людей на гитхабе, в следующем году должна выйти версия 4.0, которая исправит массу недоработок.
>специфики конкретных игр
Годо универсален. Есть, конечно, игры, для которых текущая версия Годо не очень подходит - это игры, в которых нужно выжимать из железа максимум производительности, т.е. оптимизировать игру на очень низком уровне абстракции. Твои идеи ничего такого не содержат, это обычные игры.
>готовых решений практически нет - от освещения до UI
Ну, в Годо такие базовые вещи есть, но всё равно придётся многое самостоятельно делать под свою игру, если она необычная.
>развить игру во что-то большее
Разделяешь игру на независимые компоненты и проблем с гибкостью расширения контента и механик не будет, в этом вся суть нодовой системы Годо. Проблема может быть, если будет слишком много нод в дереве сцены (десятки тысяч), тут уже придётся думать над оптимизациями (например, объединять сотни мешей в один).
>человек который плотно елозится с движком уже год
У всех свои игры мечты, соответственно разные подводные камни. Я вот хочу опенворлд песочницу с физикой, Годо сейчас для этого не очень подходит, но у тебя же идеи намного проще.
>Запнулся только о сигналы
Рассматривай их как события из таких средств разработки, как Delphi/Lazarus, а ещё это похоже на события HTML страниц, которые обрабатывают JS функции. Пример: пользователь нажимает кнопку на экране, это генерирует событие а.к.а. сигнал "кнопка нажата", дальше движок смотрит, какие обработчики (функции) ждут это событие/сигнал, и вызывает их как обычные функции. Это позволяет разнести по разным местам генераторы событий и обработчики событий, объединяя их между собой динамически по мере необходимости.

>почему еще весь геймдев не перешел на Годо?
У юнити была агрессивная политика пиара, благодаря которой она за последнее десятилетие заработала бешеную популярность. Хочешь сделать игру и гуглишь "как сделать игру"? В первых строчках выдачи юнити. Ищешь видео по геймдеву на ютубе? Они все про юнити. Ищешь платные курсы? Там всё про юнити. Ищешь вакансии? Кроме юнити ничего нет. Естественно, если ты совсем нуб, то выберешь то, что у всех на слуху. А потом привыкнешь и будешь мириться со всеми недостатками из-за синдрома утёнка и привычек. Большинство юзают то, что им пропихнули хитрые маркетологи юнити, и они довольны этим, потому что нетребовательны. Если бы у Годо была такая же агрессивная политика пиара, он бы легко превзошёл все остальные движки, но откуда у опенсурса деньги на хитрых маркетологов и пиар-компании? У опенсурса есть только преданные поклонники, которые чисто на энтузиазме рассказывают знакомым о том, как им помогает конкретный продукт, но их усилий недостаточно, чтобы превзойти пиар-компании гигантов рынка.

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

Засим предлагаю свернуть это обсуждение, если хочешь делать игры - просто качай движок, читай мануал и следуй туториалам, если что-то категорически не нравится - ищи другой движок, в чём проблема?
Аноним 13/11/21 Суб 15:41:40 #330 №777293 
>>777286
>комплексные ноды работают как говно.
Какие именно? KinematicBody пофиксили в 3.4, теперь нормально на движущиеся платформы реагирует.
>Ими никто не пользуется.
Были какие-то опросы?
>Все что больше кнопки или лейбла уродливо.
В каком смысле? Я вот пробовал разные UI элементы - всё нормально, как в старые добрые времена и даже лучше благодаря темам.
>Boolean весит 1 байт
Это во всех языках так, побитовая упаковка флагов - отдельная фича, которая далеко не везде есть, тем более в скриптовых ЯП. Вряд ли тебе нужны огромные массивы флагов в обычной игре, если ты не под микроконтроллеры пишешь.
>Типа выполнение кода с# в первый раз
Это JIT-компиляция. Не используй C#, раз не нравится. В юнити ты вынужден ждать перекомпиляции всех скриптов игры несколько минут, а здесь ты запускаешь игру сразу, без компиляции.
>добавление партиклов в первый раз, некоторых шейдерочков на сцены.
Это ленивая компиляция шейдеров - особенность OpenGL, а не движка. Решается скрытным добавлением материалов на сцену во время загрузки игры, чтобы вызвать компиляцию принудительно.
>Написание 1 буквы вызывает 1 драв колл.
Это уже давно пофиксили 2D батчингом.
>клетке в тайлмапе нельзя задать высоту
Так для этого нужно несколько тайлмапов на сцене, это вроде стандартная практика в изометрических тайловых картах.
>Шейдеры
Все проблемы шейдеров скорее всего из-за поддержки OpenGL 2.1, WebGL 1.0 и OpenGL ES одновременно. Ограничения разных платформ суммируются, иначе кроссплатформы "в один клик" не видать.

На счёт остального не знаю, не сталкивался.
Аноним OP 13/11/21 Суб 20:48:55 #331 №777322 
Шоукейсы свежие
https://www.youtube.com/watch?v=iAceTF0yE7I
https://www.youtube.com/watch?v=BhwMSfX-8iw
Аноним 13/11/21 Суб 21:23:29 #332 №777332 
C# или GDScript?
Аноним 13/11/21 Суб 21:41:08 #333 №777337 
>>777332
> GDScript
Аноним 13/11/21 Суб 22:46:06 #334 №777343 DELETED
>>777332
Все пытаюсь перейти на C# (ну как перейти, писал на нем 10 назад) но быстрые итерации
разработки с гдскриптом так расслабляют, что все не перейду.
Аноним 14/11/21 Вск 19:03:33 #335 №777391 
>>777332
А ты с какой целью интересуешься?

Для простых задач лучше GDScript ничего нет. Для сложных задач лучше всего писать модули для движка на C++ или использовать GDNative. C# в Godot, по-моему, только для привлечения зумерков, которые ничего кроме юнити никогда в жизни не видели.

Алсо не понимаю, как сочетается опенсурс и порождение Micro$oft, которое суть клонированная Java без блекджека и без шлюх...
Аноним 14/11/21 Вск 19:24:39 #336 №777393 
>>777391
интерес больше вызывал выбор пользователей и их отношение к тому или иному языку.

Аноним 14/11/21 Вск 21:06:24 #337 №777403 
Годаны, расскажите, плиз, как получается распрыжка у спидранеров в старых шутанах? Меня интересует техническая часть. Какую ошибку допускали разработчики ФП-контроллера, что позволяло наращивать скорость при определенных действиях?
Аноним 14/11/21 Вск 21:08:27 #338 №777405 
>>777391
> Алсо не понимаю, как сочетается опенсурс и порождение Micro$oft
Человек слаб. Если тебе дают многотысячный донат с условием, что ты их язык нативно интегрируешь в свой продукт, - сложно отказаться.
Аноним 14/11/21 Вск 22:22:11 #339 №777409 
>>777403
множитель скорости, которая дамперилась от времени. если множить быстрее чем идет дамперинг - получается упс
Аноним 14/11/21 Вск 22:28:03 #340 №777410 
>>777409
> дамперинг
По русски.
Аноним 14/11/21 Вск 23:09:17 #341 №777413 
>>777391
>суть клонированная Java без блекджека и без шлюх
Уж что-то, а бэкджека и шлюх в шарпе немеряно. Джава очень убогий язык по сравнению с шарпом, ни перегрузки операторов, ни нормальных дженериков, ни типов-значений, дохрена чего нет.
Аноним 14/11/21 Вск 23:41:33 #342 №777418 DELETED
Возрадуемся.
Алсо включаем галочку "Verbose Stdout" и получаем кучу фиксов какого-то многопоточного затыка.
Аноним 14/11/21 Вск 23:55:55 #343 №777419 DELETED
>>777403
Все эти ошибки можно описать так - неверная максимальная длина вектора.
Первая была, емнип, в думе - когда идти по диагонали, то есть зажав вперед и влево, было быстрее, чем просто вперед. Это фиксится нормализацией суммы векторов вперед и вбок.
Распрыжка тоже связана с диагональю. Проверялся не общий вектор скорости, а его проекция на направление движения. Таким образом и получается, что скорость больше допустимой, но игра считает, что ты не сильно отклонился от линии взгляда, поэтому все норм. Фиксится тем, что ограничиваешь окончательный вектор скорости, а не промежуточные рассчеты.
Еще один фактор связан с проверкой on_floor. В контроллерах годота она быстро обрастает кучей проверок, и надо следить, когда обнулять скорость через трение.
Аноним 14/11/21 Вск 23:58:41 #344 №777421 DELETED
>>777391
Можно писать на C# те части, которые потенциально надо переписывать на C++. Тогда, во-первых, их будет проще отлаживать, во-вторых, возможно, не придется переписывать, в-третьих, будет легче переписать, с языка со скобочками, чем с гдскрипта.
Аноним 15/11/21 Пнд 13:57:22 #345 №777471 
>>777419
Хоспаде, как же много надо знать, чтобы игроки проходили мою игру как я задумал, а не скипали большую часть контента.
Аноним 15/11/21 Пнд 16:41:06 #346 №777493 
>>777418
Он включает галочку для гладкого геймплея?
Аноним 15/11/21 Пнд 19:06:31 #347 №777506 
Годаны! Как сделать, чтобы при удалении от игрока мобы уменьшали свой ФПС, как в большинстве современных игор, и экономили ресурсы компа?
На ум приходит доропать функции _process по таймеру, что-то типа if timer < distance: return
Аноним 15/11/21 Пнд 20:00:11 #348 №777510 
>>777471
>как я задумал
Они в любом случае найдут способ сломать игру. Если у тебя в одиночной игре есть, например, валюта, патроны или любое другое часто изменяющееся по желанию игрока число, обязательно найдётся умник, который накрутит её с помощью Cheat Engine. Короче, не парься и делай просто хорошую игру, кому нужно - тот пройдёт её именно так, как ты задумывал.

>>777506
>мобы уменьшали свой ФПС
>экономили ресурсы компа
А они у тебя точно эти ресурсы потребляют больше необходимого? Что у тебя там за код каждый кадр выполняется, что нужно именно от расстояния зависимость вводить?

Мне на ум такое решение приходит: разделить мир на чанки, каждому чанку назначить отдельный таймер, таймер будет обновлять состояния мобов вместо process. Игрок, приближаясь к чанку, увеличивает частоту срабатывания таймера чанка и снижает частоту предыдущих чанков. Моб, переходя из чанка в чанк, переключается с одного таймера на другой. Связь таймер-моб, разумеется, через сигналы. Такая система позволит избежать вычисления расстояния от моба до игрока каждым мобом каждый кадр, что звучит очень избыточно. В системе чанков переключение таймеров происходит только когда игрок пройдёт некоторое расстояние, сами таймеры не крутят циклы впустую, а переключение с таймера на таймер вряд ли будет частым - но это зависит от размера чанков и поведения твоих мобов.
Аноним 15/11/21 Пнд 22:30:14 #349 №777526 
>>777510
> Что у тебя там за код каждый кадр выполняется
Селектор стейтмашины, который выбирает стейт по обширному набору входных данных, например, голод-жажда, агрессия, состояние погоды в локации, суета в локации, нахождение враждебных сущностей в зонах обнаружения (видимости, слышимости). Ну и еще там по мелочи.
Godot Editor на Android Аноним 16/11/21 Втр 00:09:57 #350 №777531 
Оказывается и такое делается:
https://github.com/godotengine/godot/pull/36776
Скачать без смс и регистрации:
https://mega.nz/folder/u6IHQI4R#OLMeA8tqwWL_2T8vEo6CRQ

Только что попробовал сентябрьский билд. На моём смартфоне элементы управления слишком мелкие, пальцем тяжело попасть - масштаб для полноценного FullHD экрана. Подключил мышку с клавиатурой через OTG - управляется нормально, почти как на ПК, хотя сцену вращать я не смог (ПКМ/СКМ закрывают приложение, т.к. их перехватывает ОС, воспринимая как "назад"/"домой"). Рендеринг 3D (мобильный вулкан) так и не завёлся, а в редакторе на вкладке 3D сильные тормоза (GPU на 100%) и текстуры не отображаются. Но 2D рендерится нормально и без тормозов. Попробовал сделать визуальный скрипт - редактируется и запускается нормально. Но в какой-то момент экран стал на каждое нажатие мигать оранжевым, пришлось перезагружать проект. Также в настройках проекта почему-то нет очень многих опций, там почти ничего нет по сравнению с 3.4.

Короче, штука пока неюзабельная и вряд ли когда-нибудь будет юзабельной на смартфонах, не подключать же каждый раз мышку с клавиатурой. В лучшем случае на планшетах с HD разрешением или если масштабировать интерфейс. А жаль, было бы здорово иметь специальную мобильную версию, с мобильным (вертикальным) интерфейсом...

Алсо, я не понял, они совсем от поддержки OpenGL избавляются?
Аноним 16/11/21 Втр 00:44:03 #351 №777533 
>>777506
>_process
>>777526
>выбирает стейт по обширному набору входных данных, например, голод-жажда, агрессия, состояние погоды в локации, суета в локации, нахождение враждебных сущностей в зонах обнаружения (видимости, слышимости)
Зачем тебе всё это каждый кадр проверять? Если у игрока монитор, допустим, 240 Гц, твои мобы будут каждые 4 мс интересоваться состоянием погоды - зачем? Если, допустим, пошёл дождь, менеджер погоды должен разослать всем мобам предупреждение, что они должны изменить поведение соответственно погоде. Желудок моба вполне может обновляться раз в секунду или намного реже, а изменение поведения будет только при определённом % заполненности. "Суета" может проверяться общим для локации менеджером раз в несколько секунд, далее аналогично погоде. Агрессия должна исходить, очевидно, от агрессора. И так далее. Если тебе прям очень нужно все состояния проверять - можно делать это в момент изменения одного из состояний. Так моб, который отдыхает в одиночестве в комнате, вообще не будет ничего делать, пока кто-нибудь или что-нибудь (включая его внутренние органы) не повлияет на него.

Собственно для этого сигналы и нужны, моб подключается слушателем к нескольким разным системам и ждёт сигналов, которые изменят его поведение. Т.е. вместо взгляда в облака каждые 4 мс моб просто почувствует падение капель на его голову, или почувствует, что капли перестали падать. Аналогично с желудком, он почувствует голод, когда желудок переварит пищу, а не будет каждые 4 мс проверять наполненность своего желудка.

Также, насколько я понимаю, для принятия решений не обязательно проверять все возможные параметры. У каждого параметра для каждого решения должен быть приоритет, например, для решения "убежать от врага" параметрами с наивысшим приоритетом будут "присутствие врага" и "состояние здоровья" - тяжело раненный моб попытается убежать от врага независимо от текущей погоды, наполненности желудка и т.д. Это также должно ускорить вычисления, особенно если у тебя сотни/тысячи параметров.
Аноним 16/11/21 Втр 02:01:28 #352 №777540 DELETED
>>777506
Area.
Когда kinematicbody игрока входит в радиус, включить, когда выходит, выключить повышенный фпс.
Если не хватает, разделить мир на чанки. Включать детектор Area только тем врагам, которые по списку относятся к чанку, в котором находится игрок.
Аноним 16/11/21 Втр 02:06:31 #353 №777541 DELETED
>>777533
Поддвачну анона, насчет последнего абзаца на эту тему есть готовые аддоны, Behavior tree и GOAP
Алсо можно батчить мобов. Например у тебя 100 мобов, если разделить их на 4 пачки, каждый моб будет выполнять свою тяжелую логику только раз в 4 кадра. Как в 4 тактном двигателе.
Аноним 16/11/21 Втр 16:15:07 #354 №777582 
>>777533
> тяжело раненный моб попытается убежать от врага независимо от текущей погоды, наполненности желудка и т.д.
Ну ХЗ, тут бывает на дваче посмотришь иной раз, даже тяжело раненные бугуртом аноны продолжают боевые картиночки постить, надеясь на еду.
> подключается слушателем к нескольким разным системам и ждёт сигналов, которые изменят его поведение
Хм, да. Чего-то я перемудрил с архитектурой. Придётся переделывать.
Аноним 16/11/21 Втр 16:15:48 #355 №777583 
>>777541
> готовые аддоны, Behavior tree и GOAP
О, спасибо! Потестим.
Аноним 16/11/21 Втр 16:52:28 #356 №777587 
>>777540
>Когда kinematicbody игрока входит в радиус, включить, когда выходит, выключить повышенный фпс.
Area сама по себе повышает нагрузку. Поскольку ему нужно по какой-то причине оптимизировать ФПС логики мобов - причина скорее всего в том, что мобов ОЧЕНЬ много, следовательно, лишние Area в таком количестве вызовут слишком большую нагрузку. В идеале система чанков должна опираться только на простейшие математические формулы, в то время как Area нужна для геометрически сложных случаев.

>>777582
>даже тяжело раненные бугуртом аноны продолжают боевые картиночки постить, надеясь на еду.
А это уже индивидуальные особенности. Кто-то бежит с поля боя, получив лёгкое ранение, а кто-то сражается до последней капли крови. Для симуляции в игре можно генерировать коэффициенты в формулах в определённых приделах, тогда один моб в первую очередь будет смотреть на своё здоровье, а другой моб - на здоровье врага. Это должно сделать игру более правдоподобной, но при этом намного более непредсказуемой для игрока (что не всегда требуется).

У тебя же не на if'ах логика? Решение должно приниматься суммированием, типа Σ решениеi x коэффициентi, где результат решенияi зависит от внешних обстоятельств, а коэффициентi - это уже индивидуальные предпочтения. Пример: нужно_ли_бежать? = своё_здоровье x 1.0 + здоровье_врага x 5.0 - это агрессивный моб, а если поменять коэффициенты местами - получится моб трусливый. Ну как-то так, я пробовал это делать, но уже не помню подробностей. Решения, если что, можно совмещать древовидно...

>Чего-то я перемудрил с архитектурой
Ты просто взял решение, первым приходящее на ум - брутфорсить все изменяющиеся переменные. К такому все новички приходят, пока не узнают про события/сигналы.
Аноним 16/11/21 Втр 17:04:46 #357 №777590 
>>777587
>определённых приделах
Лол, пределах.

>нужно_ли_бежать? = своё_здоровье x 1.0 + здоровье_врага x 5.0 - это агрессивный моб
Что-то я напутал в параметрах... Ну, не важно - в таком виде логику вообще сложно отлаживать, лучше всего вооружиться таблицами, чтобы сразу видеть изменение всех решений во множестве ситуаций, когда изменяешь какой-то параметр.

Эх, как же хочется ИИ в своей игре... Разве я многого хочу?
Аноним 16/11/21 Втр 17:21:29 #358 №777593 DELETED
>>777587
Если Area сферы, скорее всего там и так просто радиусы проверяются, впрочем можно померить, сколько будет на чистой математике и сколько оверхеда от солвера.
Аноним 16/11/21 Втр 19:06:45 #359 №777606 
>>777593
Area в форме сферы, по идее, проверяет все объекты, и реагирует только на те, у которых флаг в определённом слое. И делает это каждый физический тик. К тому же каждая проверка расстояния требует вычисление квадратного корня...

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

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

Но так-то да, нужно проверить на практике.
Аноним 16/11/21 Втр 19:12:16 #360 №777608 
Почитал issues на гитхабе Godot - я не понял, они планируют отказаться от интеграции Bullet? Просто моей игре GodotPhysics не подходит из-за того, что центр масс нельзя сместить в произвольное место.

Вообще чёт много иссуев, которые висят годами с отметкой "milestone: 4.0"...
Аноним 16/11/21 Втр 19:18:06 #361 №777611 DELETED
>>777606
>проверяет все объекты
Если там буллет используется, может там уже octotree оптимизирует такое
> проверка расстояния требует вычисление квадратного корня
Обычно сравнивают сами квадраты расстояний, без корня.

>С чанками всё намного проще: целочисленно делишь позицию моба на размеры чанка и получаешь адрес чанка, в котором находится данный моб.
Вообще, отличная мысль, просто кодить лень :3
Аноним 16/11/21 Втр 19:22:29 #362 №777615 DELETED
>>777608
Буллет будет через нативный плагин.

>Просто моей игре GodotPhysics не подходит из-за того, что центр масс нельзя сместить в произвольное место.
Посмотрел в доках, написано
>With Bullet physics (the default), the center of mass is the RigidBody3D center.
>With GodotPhysics, the center of mass is the average of the CollisionShape centers.
То есть по идее ты можешь добавить какой-то фиктивный collisionshape чтобы сумма центров оказалась в нужном месте.
Аноним 16/11/21 Втр 20:00:58 #363 №777619 
>>777615
Какая вероятность, что физика Хуана будет производительнее буллета? Или какие там супер особенности будут?
Аноним 17/11/21 Срд 07:32:46 #364 №777665 
>>777615
Ты предлагаешь сделать костыль, который тяжело рассчитать и с которым невозможно предсказать последствия. Вот на буллете я могу добавить в ригидбоди 1000 коллиженшейпов и расположить центр масс ровно так, как хочу, с учётом массы каждого отдельного коллиженшейпа. А с тем, что представляет из себя годофизикс сейчас, я такого сделать не могу...

>>777619
Годофизикс - это затычка уровня "шоб было". Кому нужна физика, будут подключать сторонние библиотеки...
Аноним 17/11/21 Срд 09:42:33 #365 №777669 DELETED
>>777665
Да вроде легко рассчитать. У тебя есть сумма центров коллижншейпов, напримеп в точке (5,3). Ты хочешь чтобы цм был в точке (0,0). Для этого тебе надо добавить еще один коллижншейп в точке (-5,-3). При добавлении фигуры пересчитать. Это один цикл и одно вычитание вектора. Для проверки гипотезы про производительность тут работы минут на 15.
Аноним 17/11/21 Срд 11:10:57 #366 №777677 
godot.png
Поясните пожалуйста этот пункт
Аноним 17/11/21 Срд 11:16:57 #367 №777678 
>>777677
Смешная попытка заманить пикселедаунов в свою парашу.
Аноним 17/11/21 Срд 12:24:20 #368 №777680 
>>777678
Мне бы конкретные технические особенности, а не субъективное мнение
Аноним OP 17/11/21 Срд 12:29:22 #369 №777681 
>>777665
> Кому нужна физика, будут подключать сторонние библиотеки...
Более того, опенсорц - это движок. Игра опенсорцом быть не обязана, поэтому игроделу ничто не мешает прикрутить через адаптер любую проприетарную физику, например, Newton Dynamics, Tokamak Physics, Havok, PhysX, Meqon, TrueAxis, SPE. Главное, умей в плюсы. Ах, как я завидую умеющим в кресты!
Аноним 17/11/21 Срд 12:56:25 #370 №777682 
>>777681
> Ах, как я завидую умеющим в кресты!
а что там сложного в современных крестах?
Аноним OP 17/11/21 Срд 13:27:46 #371 №777685 
>>777682
Ну ни траль, крестовик! Я сколько раз пытался в это вкатиться, ниасиливаю все эти закорючки.
Аноним 17/11/21 Срд 14:14:25 #372 №777691 
>>777685
Туда ли ты вкатывался? Там после 11 стандарта все только проще и проще, даже мантры про байтики и ручное выделение памяти уже не работает
Аноним 17/11/21 Срд 15:52:38 #373 №777700 DELETED
>>777691
Непонятно, к чему ты это пишешь - по-твоему, апи хавока или физ-икс написано после 11 стандарта?
Аноним 17/11/21 Срд 16:25:16 #374 №777702 
>>777700
в их апи просто дергаешь функции, там сам ничего тоже не выделяешь вручную, ты бы хоть пописал что ли на них для начала
Аноним 17/11/21 Срд 16:32:27 #375 №777704 DELETED
>>777702
Свободные функции что ли? В цпп? Ну-ну.
Аноним OP 17/11/21 Срд 17:47:58 #376 №777717 
Опенсорсная благодать полилась мне в уши на лицо и за щеку
https://youtu.be/r5JGDiI22s4
Аноним 17/11/21 Срд 19:01:56 #377 №777724 
gd.png
пиздец.. короче четверка еще на год откладывается
Аноним 17/11/21 Срд 22:01:47 #378 №777754 
1637175708139.png
>>777724
И хорошо. Чего они там наворотили в четвёрке - лучше вообще отменить. Поломали всё что работало. ГДСкрипт сделали похожим на сишарп. Куча бессмысленных переименований в дереве классов. Вместо запила контейнера для окон они выпилили всю оверлейную оконную систему и перенесли её в оконную систему отдельных окон, пикрелейтед. И теперь если я хочу 2д-дисплей с окнами внутри 3д игры - я иду нахуй. Точнее иду рисовать самодельные велосипедные окна.

В общем, четвёрка очень огорчила. Лучше бы Хуан одумался и отыграл бы всё взад.
Аноним 17/11/21 Срд 22:30:01 #379 №777762 
>>777754
> 2д-дисплей с окнами внутри 3д игры
это нужно паре анонов
а вот новый рендер для дерева более эффектинвный - вот это нужно
Аноним 18/11/21 Чтв 00:55:27 #380 №777786 
>>777677
Измерение в пикселях - это значит, что ты размещаешь все спрайты в пикселях экрана, а не вещественными числами. Если у тебя экран 800х600, ты размещаешь спрайт в точке (200; 150), а не в (-0.5; 0.5). Это помогает делать пиксель-арт игры, потому что все пиксели спрайтов попадают в пиксели экрана, а не размазываются, пытаясь нарисоваться по дробным координатам.

Также есть встроенная функция "увеличения пикселей", т.е. можно один игровой пиксель рисовать четырьмя экранными пикселями или больше. Это тоже полезно для пиксель-арта, потому что позволяет рисовать спрайты с размером пикселей 1х1, а выводить на экран увеличенные пиксели (2х2, 3х3, 4х4 и т.д.). Вообще-то эта функция скорее для снижения нагрузки на видеокарту, такое часто можно встретить в 3D играх (называется "половинное разрешение" или что-то такое), но для пиксель-арта подходит лучше всего.
Аноним 18/11/21 Чтв 07:09:08 #381 №777794 
>>777786
Спасибо большое, это вот как раз то, что я и хотела услышать
Аноним 18/11/21 Чтв 18:00:51 #382 №777863 
>>777762
> это нужно паре анонов
Я задал простой вопрос. Почему нельзя было сделать окно контейнер (Viewport/Window на скрине), а всё остальное оставить как есть (в зелёных нодах) чтобы у нас была свобода, (блять фри ас фри бир же, ёпт!) выводить окна хоть через этот контейнер, хоть внутри существующего CanvasItem?
Аноним 18/11/21 Чтв 18:44:33 #383 №777867 
>>777794
Для справки, то что в юнити этого нет - просто пиздёж.
Аноним 18/11/21 Чтв 19:17:18 #384 №777872 
>>777863
Ну, вероятно, это с чем-то конфликтовало в архитектуре. Так глубоко я пока не копался еще.
Но вот новые методы рендеринга и физики точно нужны большому количеству анонов, поэтому четверку многие и ждут.
Аноним 18/11/21 Чтв 22:29:28 #385 №777888 
Как в годоте вкинуть в polygon2d тайлсет, вырезать 1 тайл из него и расклонить. Так же было бы неплохо засмузить углы. Нихуя не получается. Где то ещё был примерно такой ассет, но чето найти не могу.
Аноним 19/11/21 Птн 13:21:32 #386 №777913 
>>777754
>если я хочу 2д-дисплей с окнами внутри 3д игры
А ты разве не можешь рендерить во вьюпорт и затем накладывать результат как текстуру на любую плоскость? У тебя же на скриншоте окошки во вьюпорте - что мешает получить текстуру с этого вьюпорта? Или в вулкане больше нельзя получать текстуры?

>>777863
>свобода выводить окна хоть через этот контейнер, хоть внутри существующего CanvasItem
А в чём смысл CanvasItem, если Viewport мощнее и позволяет тебе рендерить текстуру куда угодно? Хоть все модели обклей текстурой с гуёвыми кнопками и слайдерами.

Или Window будет рендерить в отдельный буфер независимо от вьюпорта, в котором находится? Это, по-моему, какой-то баг.

>>777872
>четверку многие и ждут
Кстати, а почему в четвёрку откладывают все breaking changes? Почему нельзя сначала выпустить 4.0, потом, через полгодика, 5.0, ещё через полгодика 6.0 и т.д.? Ведь такими небольшими шагами будет намного проще портировать игры на следующую версию, чем переписывать всё с нуля из-за одного перехода с 3.x на 4.0. Насколько я понимаю, многие модификации уже готовы к релизу и ждут только выхода 4.0, а так можно было бы быстрее релизнуть их, передвинув остальные фичи на 5.0 или 6.0. Браузеры вон вообще каждый месяц мажорную версию наращивают и никто не жалуется...

>новые методы рендеринга и физики
Мне лично они не нужны. Мне нужны багфиксы. Но они и багфиксы тоже переносят на 4.0. Зачем?
Аноним 19/11/21 Птн 14:18:18 #387 №777922 
>>777913
> Почему нельзя сначала выпустить 4.0, потом, через полгодика, 5.0, ещё через полгодика 6.0 и т.д.?
1) потому что у некоторых разработчиков есть крайняя помешанность на обратной совместимости
2) некоторые вещи нельзя исправить без других потому что они взаимосвязаны или это очень трудозатратно, поэтому целые группы вещей остаются до четверки
но многое прямо сейчас спокойно кочует в тройку, поэтому и выходят новые ее версии
> Но они и багфиксы тоже переносят на 4.0. Зачем?
большинство из-за пункта 2
Аноним 19/11/21 Птн 15:21:16 #388 №777934 
1637324475604.png
1637324475642.png
>>777913
> Viewport мощнее и позволяет тебе рендерить текстуру куда угодно?
Вот в таком конфиге окно действительно
> рендерить в отдельный буфер независимо от вьюпорта
При попытке его включить возникает новое окно, а ожидается, что вообще ничего не должно было произойти, чтобы я потом подключил текстуру в колоррект.
Кроме того, Вьюпорт теперь абстрактный класс, а для вышеописанного тобой рендеринга будет юзаться субвьюпорт пикрелейтед. Который вынесен в отдельную ветвь наследования от окон, пикрелейтед 2.

Надеюсь, что вся четвёрка - это ебучий баг, сраная ошибка, Хуан опомнится и отменит всё это.
Аноним 19/11/21 Птн 16:06:11 #389 №777941 
>>777934
четверка - это пока единственный шанс выйти в нормальное 3D сейчас (и это я не про переход на вулкан, а на глобальное изменение внутреннего устройства системы рендера)
Аноним 19/11/21 Птн 16:27:47 #390 №777945 
красиво.jpg
>>777934
>субвьюпорт
Ну и? Юзай субвьюпорт вместо виндоу, в чём проблема-то?

>Хуан опомнится и отменит всё это
И мы будем ждать багфиксов физики в 5.0 ещё лет пять.

>>777941
>выйти в нормальное 3D
>глобальное изменение внутреннего устройства
Да что вам всем так не нравится? По-моему замечательное 3D, блюр и блум точно есть и работают нормально. Единственный существенный косяк - тени странно себя ведут, никак не могу добиться того, чтобы тень от персонажа не проваливалась под землю...
Аноним 19/11/21 Птн 16:52:53 #391 №777949 
1637329972949.jpg
>>777945
> в чём проблема-то?
>>777934
> При попытке его включить возникает новое окно, а ожидается, что вообще ничего не должно было произойти, чтобы я потом подключил текстуру в колоррект.
Аноним 19/11/21 Птн 17:06:48 #392 №777952 DELETED
>>777888
Может быть вот этот?
https://godotengine.org/asset-library/asset/160
Но он старый, я его не пробовал.
Аноним 19/11/21 Птн 17:10:37 #393 №777953 DELETED
>>777754
> рисовать самодельные велосипедные окна.
А мне и сейчас пришлось рисовать свое велосипедное окно. Потому что шрифт из темы не работал с масштабированием, и с кнопками что-то не так было, не помню уже, что-то с хоткеями и esc.
Аноним 19/11/21 Птн 17:21:33 #394 №777954 
>>777953
У меня проблем не было. Впрочем, я в принципе не возражаю против велосипедных окон, просто за кодобазу обидно. Всё ж есть. А возьмут и удолят к хуям.
Аноним 19/11/21 Птн 17:29:49 #395 №777955 
>>777945
> Да что вам всем так не нравится?
Долго обеснять. Если бы были архивы движкосрач-треда, можно было бы сослаться на них, там периодически, когда толстенные траллищи уставали делать вид, что обижаются на толстоту друг друга, они начинали вести вполне аргументированные споры по вопросу того, что именно не работает, и как оптимизировать. Но увы, тред бесконечный самозатирающийся там.

Если вкратце, то в годоте нагорожены сомнительные велосипеды, хотя индустрия уже предлагала отточенные до уровня паттерна решения. Хуан полез в залупу и отказался убирать велосипеды. А в четвёрке вроде как сдал назад и убрал одни велосипеды, но обязательно накидает новых. Потому что тщетно бытие опенсорсное. И большинству девелоперов придётся выбирать межу релизами точёными из трёшки, и релизами дрочёными из четвёрки. Универсального решения не будет.

В выигрыше будут только крестовики, которым под силу будет взять улучшенный рендер из одной ветки, улучшенные классы из другой, собрать в свой кастомный билд и довольно урча делать игру мечты.
Аноним 19/11/21 Птн 17:57:18 #396 №777959 
>>777952
Не, мне нужно просто шоб я сделал многоугольник с помощью area и залил его текстурой тайлов на репите
Аноним 19/11/21 Птн 18:01:37 #397 №777960 
>>777959
Многоугольник ты делаешь отдельно, а текстуру ты делаешь отдельно, через шейдер или канву. Не мешай в кучу две задачи.
Аноним 19/11/21 Птн 19:41:35 #398 №777963 DELETED
>>777959
Может быть вот этот?
https://godotengine.org/asset-library/asset/715
https://www.youtube.com/watch?v=r-pd2yuNPvA
Вчера эту игру на нем упоминали
https://connorrowe.itch.io/fragile-payload-ld49

Аноним 19/11/21 Птн 21:11:09 #399 №777976 
Гдскриптом все можно описать и сделать?
Аноним 19/11/21 Птн 21:14:10 #400 №777977 DELETED
>>777976
С одной стороны все, это же тьюринг-полный язык.
С другой, тут один анон хотел иконку в трее, так для этого АПИ нет.
Аноним 19/11/21 Птн 21:30:46 #401 №777981 
>>777977
> тут один анон хотел иконку в трее
Тут?
Не, ты наверное что-то путаешь. Это было не тут. Это было в шарпотреде в /пр/
Аноним 19/11/21 Птн 21:32:59 #402 №777982 
А визуал где рисовать?
Аноним 19/11/21 Птн 21:34:51 #403 №777983 DELETED
>>777982
пиксели - в aseprite
непиксели - в крите
3д - в блендере
Аноним 19/11/21 Птн 21:36:27 #404 №777984 
>>777981
И кстати, если уж хочется из трея управлять приложением, у годота есть OS.shell_open("myTrayAppWithMinerLOL.exe")
Аноним 19/11/21 Птн 21:40:29 #405 №777985 DELETED
>>777984
Еще нет поддержки нескольких окон, это надо делать несколько приложений и между ними гонять данные.
Аноним 19/11/21 Птн 21:56:01 #406 №777988 
>>777985
> между ними гонять данные
Если всё таки вспомнить, что мы в треде игрового движка и предположительно говорим всё таки об играх, то стоит отметить, что играм нужно всего два окна: конфигуратор и само окно с игрой. Запускаешь игру, она ищет конфиг, не находит, открывает окно конфигуратора, создаёт конфиг по умолчанию и, чтобы не раздражать игрока, в конфигураторе сразу посередине есть крупная зелёная кнопка ИГРАТЬ. При нажатии на которую если есть изменения в параметрах, конфиг сохранится, затем игра запускает окно собсна игры, которое при своём запуске читает актуальный конфиг и действует соответствующе. В парадигме тройки даже окна не нужны, конфигуратор - это одна сцена, главная игра - вторая сцена. Всё.
Аноним 19/11/21 Птн 22:09:34 #407 №777990 
1637348973419.png
>>777988
Как-то так.
Аноним 19/11/21 Птн 22:26:52 #408 №777993 DELETED
>>777988
Раньше встречались игры, стратегии, в которых было много окон и они все двигались и ресайзились, и могли быть поверх или снизу других.
Аноним 19/11/21 Птн 22:46:46 #409 №777994 
>>777993
И это были оверлейные псевдоокна внутри одного полноэкранного окна игры. Как сейчас в трёшке. И вместо того, чтобы добавить к существующим оверлейным окнам системные окна, Хуан переименовал их, выпилил из наследников Control и впилил в наследники Viewport. Ужасно. Просто ужасно!
Аноним 19/11/21 Птн 23:32:15 #410 №777999 
>>777985
поддержка многооконности для игр и не нужна
1) запускается лаунчер
2) в лаунчере производятся настройки игры или просто нажимается играть
3) лаунчер или пересоздает контекст рендера окна, если требуется выводить на другом типе, либо просто отрисовывает содержимое прямо в том же окне
Аноним 20/11/21 Суб 01:20:26 #411 №778001 DELETED
>>777994
>И это были оверлейные псевдоокна внутри одного полноэкранного окна игры
Нет, я про оконные игры, которые работали просто в виндоус.
Аноним 20/11/21 Суб 03:20:29 #412 №778004 
>>777949
Ты как-то невнятно объясняешь.

>>777994
>переименовал их, выпилил из наследников Control
ЧТО он выпилил?
Ладно, сам разберусь:
https://docs.godotengine.org/en/latest/classes/class_control.html
https://docs.godotengine.org/en/stable/classes/class_control.html
Что, только попыт?
https://docs.godotengine.org/en/latest/classes/class_popup.html
https://docs.godotengine.org/en/stable/classes/class_popup.html

И зачем он тебе нужен вообще? Бери Panel и делай свой собственный попыт с надписями и кнопками. В ЧЁМ ТВОЯ ПРОБЛЕМА?

А Хуан делает всё абсолютно правильно. ПОПЫТ подразумевает модальное окно, которое должно перекрывать окно игры в тех ОС, где есть модальные окна (вроде во всех есть). Всё, что находится внутри окна игры, по определению не может быть модальным окном, потому что не является окном (с точки зрения ОС) в принципе. Если тебе нужно симулировать поведение модальных окон внутри окна игры - используй простые панельки. Это просто!

А текущая реализация попытов, судя по всему, костыль, который давно пора было заменить. Лично меня бесит, что вместо родного color picker'а винды я вынужден бороться с каким-то глючным говном, которое появляется внутри окна Годо на долю секунды и исчезает. Конечно, в виндовом нет альфа-канала, но его можно было бы и циферками напротив поля с цветом вводить...

Впрочем, если новые попыты окажутся не системными, а созданием нового графического контекста (2-3 секунды на открытие модального окна, лол), то это, конечно, ещё хуже, чем глючная имитация внутри единственного окна.
Аноним 20/11/21 Суб 06:49:08 #413 №778006 
Револбшн уже скоро?
Аноним 20/11/21 Суб 09:11:24 #414 №778007 
>>778004
> В ЧЁМ ТВОЯ ПРОБЛЕМА?
В том что я щупаю реальную сборку четвёрки, а ты читаешь манядокументацию, думая, что переключение с latest на stable - это истина.
Вчера ещё одну интересную вещь заметил. Подсказки в щупаемой мною сборке тоже переделаны на графический контекст и захватывают фокус, если быстро елозить мышкой по окну настроек, и попасть на всплывшую подсказку и щёлкнуть, то она ворует клик и не происходит переключения на ожидаемый пункт настроек. Раздражающе.
Аноним 20/11/21 Суб 09:12:38 #415 №778008 
>>778007
Пойду свежую сборку скачаю, а то вдруг там уже всё откатили взад, а я тут ругаюсь почём зря.
Аноним 20/11/21 Суб 09:28:05 #416 №778009 
>>778004
> Впрочем, если новые попыты окажутся не системными, а созданием нового графического контекста
Это и не должно быть в играх вызовом реальных системных. Потому что разработчик почти всегда для игры делает свой стиль, поэтому у него должна быть собственная реализация любых игровых окон так, как ему нужно отрисовывать для конкретно его приложения\игры. Поэтому похожесть окон на системные будет добиваться схожестью стиля, установленного в ОС при необходимости, но технически вся новая отрисовка будет на новом рендере
Аноним 20/11/21 Суб 09:43:38 #417 №778011 
1637390618667.png
>>778008
В свежей сборке пофиксили
>>778007
> захватывают фокус, если быстро елозить мышкой по окну настроек, и попасть на всплывшую подсказку и щёлкнуть, то она ворует клик и не происходит переключения на ожидаемый пункт настроек
Претензия снимается.
>>778004
> попыт?
> ПОПЫТ
> В ЧЁМ ТВОЯ ПРОБЛЕМА?
> вместо родного color picker'а винды я вынужден бороться с каким-то глючным говном
Вот! Вот это "глючное говно" является контентом, который собран на нодах, вот хотя бы к нему Хуан должен был оставить доступ. Обесню на рисунке, чтобы было внятно: пикрелейтед. То есть, никаких диалогов не переносится в новую ветку. Всё остаётся на своём месте. Создаётся вьюпорт и окно, а в окно можно выводить любой контент. Почему Хуан так не сделал? Я описал выше. Он настойчиво игнорирует открытия в области кодинга, и делает сомнительной адекватности велосипеды. Он должен был оставить оконный класс и возможность выводить в него контент, в том числе запросить системное окно в системе и скормить своему оконному классу хендл этого окна, как делают все, когда надо показывать платформ-специфичнное окно, разное в разных платформах. При этом оставалась бы возможность выводить в отдельное окно как брендированные авторские диалоги, так и любой авторский контент.
Аноним 20/11/21 Суб 09:45:13 #418 №778012 
>>778009
> Это и не должно быть в играх вызовом реальных системных
Согласен. Но на годо нынче можно и приложения писать. Знаменитый клон асепрайта - пикселорама - написан на годо.
Аноним 20/11/21 Суб 10:56:16 #419 №778014 
>>778012
Да и в приложениях это тоже нахуй не надо. А то раньше приложения любили распадаться на триста отдельных окошек, как тот же гимп - нахуй это вообще надо?
Аноним 20/11/21 Суб 11:22:05 #420 №778015 
>>778014
Разобрался в вопросе. Претензии снимаю все вышеизложенные. Оказывается! В проекте! На уровне настроек/конфига есть опция EmbedSubWindows которая если true выводит попапы в стиле трёшки, оверлейно. Это снимает все мои вопросы к новой системе.
Аноним 20/11/21 Суб 11:26:18 #421 №778016 
>>778014
> нахуй это вообще надо?
Для мультимониторобогов. На основном мониторе кидаешь вьюпорт со сценой, на дополнительном мониторе размещаешь инспекторы, табы, листы, тулзы.
Аноним 20/11/21 Суб 11:30:36 #422 №778017 
>>778012
> Но на годо нынче можно и приложения писать
в подавляющем числе приложений также не нужны отдельные физические окна, поэтому игровому движку можно не усложнять архитектуру под ряд этих специфических задач
Аноним 20/11/21 Суб 11:50:19 #423 №778018 
>>778017
> не нужны отдельные физические окна
Зачем Хуан их сделал в четвёрке?
Аноним 20/11/21 Суб 12:26:54 #424 №778020 
>>778018
Чтобы ты не плакал.
Аноним 20/11/21 Суб 12:40:52 #425 №778021 
>>778018
> Зачем Хуан их сделал в четвёрке?
Они в SDL2 есть по умолчанию, поэтому добавить не сложно
Аноним 20/11/21 Суб 13:36:07 #426 №778024 
1637404567251.png
>>778020
>>778021
Аноним 20/11/21 Суб 21:38:00 #427 №778059 
>>778015
>EmbedSubWindows
Ясно, был один стул, стало два (embed дрочёные).

>>778011
>пофиксили
А на ссылку в подсказке уже можно нажать?
Аноним 23/11/21 Втр 11:33:01 #428 №778313 
>>766120 (OP)
Вот что в следующую шапку пойдёт.
https://docs.godotengine.org/en/stable/getting_started/workflow/assets/escn_exporter/index.html
Аноним 23/11/21 Втр 17:00:38 #429 №778347 DELETED
>>778313
А я вот такой сегодня поставил
https://github.com/V-Sekai/godot-blender
Надо только в настройках проекта путь к blender.exe указать.
Потом просто закидываешь .blend в папку и импортируется.
Аноним 23/11/21 Втр 21:11:34 #430 №778388 
>>778347
Тоже ЗБС. Чем больше возможностей - тем лучше.
Аноним 24/11/21 Срд 17:27:24 #431 №778447 
>>766120 (OP)
Репост из ньюфаг треда. Сел за godot, первый день, нарисовал карту 2д, персонажа, джойстик управления и кнопку. Когда я перемещаю персонажа, камера двигается за персонажем а кнопки остаются на месте. Даже не знаю как гуглить. Руководствовался https://youtu.be/oeC_3l0tODg.
Мой высер.
https://github.com/learngodot/test1.git
Аноним 24/11/21 Срд 17:29:43 #432 №778448 
>>778447
А, все, спс. Заработало. Прицепил к родительскому элементу кнопку и получилось.



Аноним 24/11/21 Срд 17:31:42 #433 №778450 DELETED
>>778448
Не за что, удачи тебе!
Аноним 24/11/21 Срд 17:58:54 #434 №778453 
>>778447
>камера двигается за персонажем а кнопки остаются на месте
Тебе нужно это: https://docs.godotengine.org/en/stable/tutorials/2d/canvas_layers.html

>Даже не знаю как гуглить
>Руководствовался
Прежде чем гуглить и проходить туториалы на Ютубе, почитай сначала официальный мануал (частично переведён на русский, но лучше читать на английском), особенно это: https://docs.godotengine.org/en/stable/getting_started/step_by_step/index.html
Большинство вопросов сами собой отпадут.

>>778448
>Прицепил к родительскому элементу кнопку и получилось.
К какому именно? Могут возникнуть проблемы, когда попытаешься приближать/отдалять камеру. CanvasLayer позволяет рендерить GUI независимо от игровых объектов.
Аноним 24/11/21 Срд 19:02:05 #435 №778454 
>>778450
Спасибо.

>>778453
И тебе Спасибо.
Я пока по туториалу за пару дней первый раз пробну что-то сделать, посмотреть по себе. Если зайдет эта движуха, стану gdscript учить и оф доки курить.
Очень тяжело пока ориентироваться в игровом физ пространстве, векторах, осях и т.д. Надеюсь, скоро будет легче.
Давно уже хотел чем-то эдаким заняться, буду реализовывать хотелки.
Аноним 25/11/21 Чтв 19:37:48 #436 №778562 
>>778454
>тяжело пока ориентироваться в игровом физ пространстве
Если у тебя 2D, то "пространство" - это просто лист бумаги. Ты можешь сложить несколько полупрозрачных листов вместе и двигать их независимо друг от друга (параллакс), но вся игра у тебя будет происходить всегда на одном листе, остальные только для декораций (если не придумывать каких-то необычных механик).
>векторах
Специальный туториал поможет: https://docs.godotengine.org/en/stable/tutorials/math/vector_math.html
Ну и в старшей школе вроде должны были это давать.
>осях
В 2D оси как в геометрии из средней школы, только Y перевёрнута из-за особенностей вывода графики на экран, т.е. точка (0;0) в левом верхнем углу экрана (так было принято ещё в прошлом веке - потому что строчки пикселей на экране нумеруются сверху вниз). Но привыкнуть легко.

>буду реализовывать хотелки
Если есть некая концепция игры, лучше сначала записать все идеи как "дизайн-документ" (удобнее всего в формате вики, рекомендую попробовать TiddlyWiki), чтобы потом не забыть ничего. Потому что любая идея реализуется достаточно долго и занимает собой всё внимание, поэтому легко потерять другие идеи в процессе реализации одной из них. Также любую задумку нужно разделять на мельчайшие компоненты и реализовать их, а не абстрактную "идею", так будет легче (это называется декомпозиция). Собственно поэтому вики-движок удобнее для записи, т.к. позволяет описывать идею и её части по отдельности, соединяя ссылками в любую структуру.
Аноним 25/11/21 Чтв 20:20:47 #437 №778568 
>>778562
> TiddlyWiki
Есть что-нибудь попроще, оффлайновое? Это тоже можно заставить работать локально, но там нужно свой локальный сервер поднимать. Нахуй так сложно?
другой анон
Аноним 25/11/21 Чтв 20:23:00 #438 №778570 
>>778568
З.Ы. Я давно уже ищу компактное и простое оффлайн-приложение для организации диздока в виде гипертекста (зумерск. вики), скоро я потеряю терпение и напишу его себе сам, на годоте!
Аноним 25/11/21 Чтв 20:45:07 #439 №778571 
>>778568
>попроще
В каком смысле? На мой взгляд, TiddlyWiki максимально проста, если не учитывать необходимость в браузере. В сжатом архиве пустая вики весит меньше 400 КБ.
>оффлайновое
Просто открываешь .html файл в браузере и работаешь локально. Никакой сервер не нужен, можно даже на телефоне открывать и всё будет работать почти как на компе. Сохранение происходит путём "скачивания" копии .html файла по нажатию кнопки на странице - не очень логично, но удобно в контексте бекапов. Собственно, сам .html файл может быть где угодно, например, на флешке или удалённом жёстком диске, главное чтоб браузер разрешал протокол file:// или content:// (на Android недавно запретили браузерам читать .html через file://, но по-прежнему можно открывать через файловый менеджер, поддерживающий создание content:// ссылок).

Вообще, просто почитай официальный сайт: https://tiddlywiki.com/ - можешь его прямо сейчас скачать себе (значок в виде галочки внутри окружности, меняет цвет на красный, если вносишь изменения) и открыть оффлайн, лол. Я так и сделал, схоронил копию сайта себе на комп и на телефон, т.к. там справка по многим фичам и будет жалко потерять к ней доступ.

>>778570
>гипертекста (зумерск. вики)
Вики - это не гипертекст. Вики - это сайт с определёнными свойствами, отличающими его от других сайтов. https://ru.wikipedia.org/wiki/Вики
В случае с TiddlyWiki это не совсем сайт, это просто один .html файл, который хоть и можно разместить на сайте, но не обязательно.

>напишу его себе сам, на годоте
У TiddlyWiki преимущество в том, что тебе нужен только браузер, чтобы её открыть - сможешь открыть на любой платформе, где есть браузер с JS (кроме разве что древних версий браузеров). Т.е. не нужно таскать с собой несколько версий приложения и отдельный файл с записями. Плюс вся мощь JS для создания своих собственных фич прямо внутри работающей вики...

Я как-то тоже хотел свой велосипед сделать, но потом осознал, сколько труда вложено в проект вроде TiddlyWiki и решил не тратить время зря на глупые хотелки.

Некоторые даже пробуют использовать TiddlyWiki как игровой движок, например, текстовые игры относительно легко делать...
Аноним 25/11/21 Чтв 20:53:20 #440 №778573 
>>778571
> не нужно таскать с собой несколько версий приложения и отдельный файл с записями
У меня один комп и одна платформа. Не нужно ничего таскать. Ладно попробую почитать сайт ещё раз.
Аноним 25/11/21 Чтв 20:56:24 #441 №778574 
>>778571
>Вики - это не гипертекст. Вики - это сайт с определёнными свойствами, отличающими его от других сайтов.
Тут вот это больше подходит: https://ru.wikipedia.org/wiki/Персональная_вики
>...однопользовательские вики-приложения, не имеющие веб-сервера и сервера баз данных.
>TiddlyWiki — вики-движок и вики-концепция, заключающаяся в том, что весь вики-сайт представляет собой одну HTML-страницу, интерактивность которой обеспечивается сценариями.
Ну и там ещё целая статья про саму TiddlyWiki.

Мне лично очень зашла своей компактностью, дизайном и возможностями. Полноценный сайт, только оффлайн без сервера. Есть недостатки или особенности работы (к примеру, нерационально вставлять большие изображения в сам .html, их нужно хранить отдельными файлами; сложно организовать совместное редактирование), конечно, но мне они не мешают.
Аноним 25/11/21 Чтв 21:04:06 #442 №778577 
>>778574
Нет. Не моё. Попробовал ещё раз, накидал пару тидлеров. По ссылкам друг на друга не открываются. Почему? Нет желания разбираться. Хотелось просто писать текст в одном окошке, и где надо обрамлять [[ссылки]] двойными скобками, чтобы автоматически создавались статьи, потом щелкать по ссылкам и ебашить текст туда. Скачанный хтмл у меня в ффоксе не работает. Может для этого нужен зумерский пориджехром? Не знаю. Похуй. Буду искать дальше.
Аноним 25/11/21 Чтв 21:08:42 #443 №778578 
1637863721579.png
>>778577
Ну ладно, разобрался, тидлеры создаются. Ну ХЗ. Будем посмотреть.
Аноним 26/11/21 Птн 20:19:44 #444 №778685 DELETED
1. Зачем нужен physical_scancode? Для лягушатников с AZERTY вместо QWERTY?

2. У set_as_toplevel() нет подводных? Нода остается в дереве, но при этом движется как будто прикреплена к корню дерева?
Аноним 26/11/21 Птн 20:29:51 #445 №778687 
Щас будет боевой клич безыгорника... РРЯЯЯЯЯЯЯЯ!

В ветке 3.x у нас есть два стула:
1. Bullet точёный:
1.1. Спящий RigidBody полностью игнорирует KinematicBody, т.е. можно спокойно двигаться даже по круглому мячику и не будет никаких глюков. Но стоит только RigidBody проснуться, и он будет отлетать от KinematicBody. Впрочем, стоя на проснувшемся мячике его поведение предсказуемо и не вызывает проблем.
1.2. Дверь на RigidBody и 2-х HingeJoint нормально толкается KinematicBody и не зажимает его, но получает слишком сильные удары от него - ведь она не спит, пока открывается.
2. GodotPhysics дрочёный:
2.1. RigidBody не реагирует на KinematicBody даже когда не спит, но только если столкновение боковое: если встать на мячик, то даже если мячик спал, начнётся дикий расколбас - KinematicBody будет резко метаться во все стороны, а мячик рано или поздно вылетит из-под него, что совершенно нереалистично и не должно происходить.
2.2. Та же дверь из 2.1 нормально толкается KinematicBody, получая ровно такие удары, какие я прописал в коде, но ВНЕЗАПНО может зажимать KinematicBody между собой и StaticBody стенкой (точнее CSG с галочкой collider или как там её), в результате чего KinematicBody не может сдвинуться с места и как будто бы находится в воздухе (velocity.y не обнуляется move_and_slide).

Я не знаю, что делать. Я хочу чтобы ПРОСТО можно было двигаться и ПРОСТО правдоподобно взаимодействовать с окружающими предметами, без регулярных застреваний, резких толчков и расколбаса всех ближайших объектов. Кто там Godot 4.0 щупает, как там с физикой? Поправили уже всё или только обещают? Я читал на гитхабе, что они решили избавиться от KinematicBody и сделать специальный CharacterBody, а StaticBody и RigidBody дополнить новыми функциями, но на счёт исправления багов непонятно.

Кто-то скажет "делой игру без RigidBody" - отвечаю сразу, мне не нужен ассетфлип для рубки бабла, я пытаюсь реализовать конкретные идеи и в результате вынужден бороться с багами движка, хотя ВНЕЗАПНО Bullet позиционируется как среда для симуляции роботов и т.п. важных вещей. Т.е. получается это не Bullet виноват, это KinematicBody в Godot такой кривой? Почему они уже несколько лет не могут пофиксить взаимодействие разбуженного RigidBody и KinematicBody, если в GodotPhysics это частично пофикшено? И почему в GodotPhysics начинается расколбас, если Bullet обрабатывает те же ситуации нормально? Хотя, плевать на GodotPhysics, Bullet кажется более взрослым и серьёзным.
Аноним 26/11/21 Птн 20:37:19 #446 №778689 DELETED
>>778687
>Но стоит только RigidBody проснуться, и он будет отлетать от KinematicBody.
https://kidscancode.org/godot_recipes/physics/kinematic_to_rigidbody/
Аноним 26/11/21 Птн 20:37:22 #447 №778690 
>>778685
1. Если будешь публиковать в Стим или на любую другую международную платформу, рано или поздно придут игроки, которым твоя дефолтная раскладка не даёт нормально играть, а сменить некоторые клавиши, допустим, невозможно, или ты поленился делать меню смены раскладки. Или может быть какая-то проблема с раскладками в, например, линуксе. Короче, гораздо надёжнее опираться на сканкоды, потому что сканкод - это адрес физической клавиши, не зависящий от системной раскладки и надписей на клавише. В теории сканкоды у всех современных клавиатур одинаково расположены, не считая кастомных.

2. Попробуй сам и увидишь. Ещё поищи по issues на гитхабе, там может быть полезная инфа. А зачем тебе эта фича? Имхо, если тебе нужно двигать какую-то ноду в глобальной системе координат, для этого нужно или конвертировать координаты (to_local() или global_transform), или размещать эту ноду в другом месте.
Аноним 26/11/21 Птн 20:42:32 #448 №778691 DELETED
>>778690
>сканкоды
В том то и дело, что какую-то новую систему добавили, есть сканкоды, а есть физические сканкоды, а описание не гуглится.

>2 А зачем тебе эта фича?
Есть объект который то летает в глобальную координату, то возвращается привязанный к игроку. Раньше я перецеплял ноды remove_child add_child через call_deferrer, если это все можно заменить одной строчкой будет удобно, интересуюсь может пользовался кто.
Аноним 26/11/21 Птн 20:52:32 #449 №778697 
>>778689
Ну и что ты мне эту ссылку тычешь? Я уже тыщу раз этот туториал видел. И даже сделал тычки RigidBody как там описано. Проблема не в этих тычках, а в том, что RigidBody в Bullet САМОСТОЯТЕЛЬНО отлетает от KinematicBody, если sleeping == false, хотя этого происходить не должно и в GodotPhysics это не происходит, за исключением случаев "KinematicBody залез на RigidBody", в которых происходят глюки.

Смотри что получается. Вот у меня есть в сцене большой мячик и маленький кусочек сыра.
1. Если я выберу Bullet, я могу пройти по кусочку сыра и ничего не произойдёт. Но мячик будет отлетать от игрока очень далеко из-за того, что излишне реагирует в пробуждённом состоянии.
2. Если я выберу GodotPhysics, мячик будет нормально отлетать с фиксированной силой. Но если игрок случайно или специально пройдёт по кусочку сыра, этот кусочек заглючит и вылетит из-под него в неизвестном направлении с высокой скоростью, а мячик в той же ситуации будет трясти игрока во все стороны.

И это ещё не говоря о дверях, которые в первом случае неадекватно отлетают, а во втором случае могут зажать намертво и хрен знает как эту ситуацию распознать из кода...
Аноним 26/11/21 Птн 21:04:05 #450 №778704 
>>778691
>какую-то новую систему добавили
Добавили только "физические клавиши" в меню действий.
>есть сканкоды, а есть физические сканкоды
Ты, видимо, говоришь о scancode в InputEvent? Там это как было, так и осталось. Но теперь можно привязывать к действиям эти сканкоды из меню, что удобнее. "Физическими клавишами" это называли, скорее всего, для новичков, которым будет непонятно название "сканкод".

>летает в глобальную координату, то возвращается привязанный к игроку
В смысле "летает"? Если это какой-то дрон, который игрок может взять в руки и запустить в самостоятельный полёт, то логичнее использовать add_child/remove_child, потому что этот дрон в свободном полёте является независимой от игрока сущностью. Если, например, тебе потребуется реализовать сцену в подвижном помещении типа грузовика, то дрон должен будет двигаться вместе с грузовиком, а не в глобальной системе координат. ИМХО.
Аноним 26/11/21 Птн 21:05:20 #451 №778705 DELETED
>>778697
Он отлетает в момент пробуждения? Когда sleeping меняется с false на true? Может быть просто отследить этот момент и сбросить векторы?
Аноним 26/11/21 Птн 21:11:42 #452 №778708 DELETED
>>778704
>Там это как было, так и осталось. Но теперь можно привязывать к действиям эти сканкоды из меню, что удобнее. "Физическими клавишами" это называли, скорее всего, для новичков, которым будет непонятно название "сканкод".
Там теперь есть И сканкод, И другая сущность физический сканкод.
>логичнее использовать add_child/remove_child,
Я и так знаю как сделать на add_child/remove_child, вопрос был в том нет ли глюков или подводных в set_as_topdown. С грузовиком проблем не вижу, дрон или на игроке, который может ехать на грузовике, или трекает глобальную цель, которая может быть или не быть привязана к грузовику.
Аноним 26/11/21 Птн 21:21:44 #453 №778713 
>>778704
Хотя я понял про что ты, типа дрон 5км/с в закрытом поезде 100км/с, да пожалуй это подводный, спасибо
Аноним 26/11/21 Птн 22:23:11 #454 №778735 
>>778705
>Он отлетает в момент пробуждения? Когда sleeping меняется с false на true?
Нет же. Это уже давно известный баг. Если sleeping == false, то флаг "infinite_inertia = false" тупо перестаёт работать, как если бы он был true.

>Может быть просто отследить этот момент и сбросить векторы?
Куда их сбрасывать? Если мячик катится мимо KinematicBody и сталкивается с ним, он должен отскочить от него как от StaticBody (т.е. как от другого RigidBody с бесконечной массой), а не улететь за горизонт из-за неработающего флага infinite_inertia. А если сбросить вектор скорости, он остановится на месте.

>>778708
>другая сущность физический сканкод
Где?

>>778713
>дрон 5км/ч в закрытом поезде 100км/ч
Да, именно так.
Аноним 26/11/21 Птн 22:26:28 #455 №778738 DELETED
>>778735
> Если мячик катится
То причем тут sleeping?
Аноним 26/11/21 Птн 23:58:03 #456 №778757 
>>778738
>причем тут sleeping?
Катится == не спит
Лежит == может спать, а может и не спать
В любом случае, когда не спит - буянит из-за воздействия KinematicBody. Я даже слышал мнение, что "в игре могут быть только кинематики или только ригиды", но это бред какой-то.

Впрочем, я уже решил проблемы повышением safe_margin у KinematicBody с 0.001 (1 мм) до 0.05 (5 см). Правда, это не совсем решает проблемы GodotPhysics: KinematicBody продолжает колбасить на RigidBody, сами RigidBody тоже под ним колбасятся, но всё это в меньшей степени. А вот Bullet на первый взгляд полностью вылечился и проснувшийся мячик не реагирует на движущийся KinematicBody. Жаль, я подумывал переключиться на GodotPhysics, но, похоже, Bullet всё-таки лучше. Вдвойне жаль, что его выпиливают из 4.0 в отдельный модуль, который ещё непонятно как подключать (хорошо бы просто кинуть dll в папку с игрой, без перекомпиляции движка)...

Забавно, но года 1.5 назад я уже вроде как решал эту проблему с помощью того же safe_margin, просто совсем забыл.

Судя по документации:
>If the body is at least this close to another body, it will consider them to be colliding and will be pushed away before performing the actual motion.
Похоже, ситуация такова:
1. Если safe_margin маленький, KinematicBody телепортируется максимально близко к RigidBody, после чего физический движок регистрирует столкновение с объектом бесконечной массы и пытается разрешить это столкновение сдвигом RigidBody в сторону. Если KinematicBody телепортируется очень часто, RigidBody ничего не остаётся кроме как разгоняться всё больше и больше прочь от этой телепортирующейся стенки (для него это неподвижный объект). Если RigidBody зажат между KinematicBody и StaticBody, он, очевидно, пытается выскочить в сторону.
2. Если safe_margin достаточно большой, KinematicBody телепортируется так, чтобы между ним и другими физическими объектами оставалось свободное пространство. Это позволяет ему избежать регистрации столкновения с RigidBody со стороны физического движка, хотя сам он это столкновение регистрирует. И когда KinematicBody оказывается над RigidBody, он на самом деле висит над ним в воздухе, а не опирается на него, избегая приведения RigidBody в движение (независимо от sleeping).

Всё время забываю, что KinematicBody на самом деле телепортируется (с точки зрения физического движка), а не симулирует полноценное физически точное движение.
Аноним OP 27/11/21 Суб 00:11:21 #457 №778760 
>>778757
> Я даже слышал мнение, что "в игре могут быть только кинематики или только ригиды", но это бред какой-то.
Поставлю галку, чтоб меня не перепутали с каким-нибудь движкосрачером.
Я слышал, что в других движках вообще нет никакого кинематикбоди. Есть только ригидбоди и режим кинематик у них, если тебе нужно. Попробуй копнуть в эту сторону.
Аноним 27/11/21 Суб 00:13:26 #458 №778761 DELETED
>>778757
>когда не спит - буянит из-за воздействия KinematicBody
Что, даже с infinite_inertia по ссылке?
Аноним 27/11/21 Суб 08:54:10 #459 №778781 
>>778761
Ты троллишь или просто нуб?
https://github.com/godotengine/godot/issues/31981
Этому багу уже почти 3 года. Пофиксили в 4.0, вроде бы, благодаря введению односторонних взаимодействий через слои. Хотя логика всё равно... странная, теперь, получается, важен порядок слоёв.

>>778760
>нет никакого кинематикбоди
>ригидбоди и режим кинематик
Ну да, да, кинематик - это ригидбоди с бесконечной массой, то есть его никто с места столкнуть не может, кроме кода. Я как раз на днях читал в иссуях годо обсуждение изменений, которые уже внесли в 4.0: теперь нет никакого отдельного "кинематикбоди", есть только статик, ригид, и... "чарактер", который наследует иконку кинематикбоди:
https://docs.godotengine.org/en/latest/classes/class_characterbody3d.html
Кстати, "чарактер" есть как минимум в юнити. В юнити я пробовал, там суть практически та же, так что переименование логичное. Но лучше всего то, что теперь все параметры move_and_slide уехали в свойства объекта, где им и место.

А у ригидбоди, который теперь ригиддинамикбоди (лол), убрали выбор режима и сделали галку "заморожен" и "режим заморозки" - статик и кинематик. Вроде логично. Также добавили возможность ПРОСТО указать центр масс в виде вектора, не извращаясь с переносом коллиженшейпов или добавлением ещё одного.

Также добавили аниматаблебоди, который наследуется от статикбоди и содержит галочку, которая раньше была у кинематикбоди (синк ту физикс). Типа чисто для платформ, дверей и т.п.
Аноним 27/11/21 Суб 12:16:13 #460 №778804 
>>778562
Вспомнить бы ещё ту школьную программу, когда тебе под сраку лет а в 90х в школах ничему не учили.

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

Сейчас расписал себе месяц на подготовку. За недельку - две пройдусь по оф документации. Ещё пара недель пересмотрю туториалы на ютубе по своей теме и возьмусь за дело.
Тоже думаю себе вики завести, и набросать там ООП шаблон, которому буду следовать, чтоб потом не переделывать.

Аноним 27/11/21 Суб 14:38:58 #461 №778822 
2021-11-2714h3040.png
>>766120 (OP)
Уважаемые знатоки, а вот этот абоминасион кто-нибудь пробовал?
Аноним 27/11/21 Суб 14:45:11 #462 №778823 
>>778822
да, Lua пробовали и теперь используем
Аноним 27/11/21 Суб 15:04:38 #463 №778831 
>>778823
Покежь кусочек рабочего кода на луа. Оче охота сравнить с гдскриптом.
Аноним 27/11/21 Суб 15:26:40 #464 №778836 
>>778831
https://www.youtube.com/watch?v=s2Bb1X-UqEw
Аноним 27/11/21 Суб 19:52:14 #465 №778868 
>>778836
Хотелось бы взглянуть на более длинный код чем две строки. Строк на 100 хотя бы.
Аноним 27/11/21 Суб 21:00:53 #466 №778881 
Unity
Аноним 28/11/21 Вск 04:20:22 #467 №778908 DELETED
>>778881
Забил название.
Аноним 28/11/21 Вск 14:44:32 #468 №778950 
>>766120 (OP)
Мне нужен пример адекватного арканоида для создания, в ассетах не нашёл, нашёл только урок на тытрубе, всё нормально, кроме того, что там управление клавой, а не мышью, я сделал как хочу, но получается просто пиздец как криво.

Где или как искать?
Аноним 28/11/21 Вск 14:57:27 #469 №778955 
кто-то пробовал делать графоний уровня скайрима?
Аноним 28/11/21 Вск 15:03:56 #470 №778956 
>>778955
А разве годо не для 2д? Если уж графин, то лучше унити, он больше по 3д
Аноним 28/11/21 Вск 15:05:34 #471 №778957 
>>778950
а что именно криво?

сделать типа:
global_position.x = get_global_mouse_position().x
Аноним 28/11/21 Вск 15:14:45 #472 №778959 
>>778956
унити точно ничем не лучше
для чисто 2d как-то жирновато
Аноним 28/11/21 Вск 15:17:31 #473 №778960 
>>778957
Криво кинематические объекты, я подобную игру могу сделать и на С++ без проблем, но беда именно с пониманием того как всё устроено в годоте, делать хуету платформер неинтересно.

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

Забил я на кинематики пока и повторяю за испанцем area2d

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

Ну и странно, что пока с камерой не возится, а это как бэ тоже важно - масштабирование в зависимости от разрешения там, соотношения сторон моника и тд.

Для 2д пока топчик, хочу попробовать потом бахнуть сапёр, ато на шарпе и винформс лагат, а в впф чот не хочется совсем пока.

Кароч, уроки есть, ассеты видал, но пока что видал, то слишком тривиальное и именно для создания полноценной игры, а не окошка демкой чот не вижу, что печально.
Аноним 28/11/21 Вск 15:19:08 #474 №778962 
>>778959
На данный момент я так воспринимаю, ибо в унити можно бахнуть вычислительные шейдеры, я на них воксели сделал, но как же я матерился, что нету готового урока по этому, опездолы блядь цпу воксели рисуют с охуевшим видом и это выдают за открытие, и это я молчу про то как красить их попиксельно. Просто пиздец конечно сейчас разрабы попёрли.
Аноним 28/11/21 Вск 15:20:53 #475 №778963 
>>778962
спасибо, но если бы выбор пал на другой движок, то уж с гораздо большим приятием он бы пал на UE, где это все делать гораздо приятнее
Аноним 28/11/21 Вск 15:25:46 #476 №778965 
>>778963
> где это все делать гораздо приятнее

Сверхчеловек, ты?

Я вот попробовал на уече, да, вроде всё нарм, только он тяжёлый и не всегда понятный, унити после него просто супер лёгкий и удобный по ощущениям. А уж делать POM на нодах было и весело и жутко.

Не спеши графон делать, обрати внимание на новые ниппон игры, там авторы не ебут мозги и делают мелкие, но хорошо проработанные локи вместо унылого и пустого огромного мира. Мне нравится такая концепция создания игр и я стараюсь идти этим путём. Пусть мелкая игра, но пездатая.

Например:
ты просто охренеешь делать детализированную деревушку с травой, десятью домами, церквушкой, забрами, плодовыми кустами и деревьями, ручьём и живностью. Про мир с несколькими такими и даже городом тут и говорить нечего. Задача намного сложнее чем кажется.
Аноним 28/11/21 Вск 15:48:15 #477 №778967 
>>778965
> Я вот попробовал на уече, да, вроде всё нарм, только он тяжёлый и не всегда понятный
а что там тяжелого-то? всякие логические связи пишешь нодами как и для дизйнеров пишешь новые ноды под игру, им только ползунки дергать да простейшую логику клепать
нагруженные алгоритмы в плюсах сразу
> Не спеши графон делать
я и не спешу, вопрос был в том, что вытянет ли годот сейчас графоний открытого мира типа ванильного скайрима или пока не рисковать на него спрыгивать, потому что кучу всего для рендера самому еще дописывать придется
> обрати внимание на новые ниппон игры
ну это на стадии разработки проекта геймдизайнерами требуется, а сейчас уже другая, где с технологиями определяемся под уже написанный диздок
>ты просто охренеешь делать детализированную деревушку с травой .. Задача намного сложнее чем кажется.
я и не буду, этим моделлеры и дизайнеры занимаются уже
Аноним 28/11/21 Вск 16:04:07 #478 №778968 
>>778967
> вытянет ли годот сейчас графоний открытого мира типа ванильного скайрима
Годот вытянет.
Ты - не вытянешь.
Аноним 28/11/21 Вск 16:05:01 #479 №778969 
>>778967
Только сейчас я понял, что он вышел в 2011 году. Я не знаю умеет ли годот рисовать большие миры с подгрузкой и без лагов.
Аноним 28/11/21 Вск 16:07:39 #480 №778970 
>>778967
> нагруженные алгоритмы в плюсах сразу
Для годота это тоже верно.
Ебашишь нагруженные алгоритмы в адаптеры, наследующиеся от Node в Godot API, в том числе тянущие API твоих или третьих библиотек, фреймворков, систем. Далее вкомпилировываешь свои модули в движок и юзаешь.

Но!

>>778968
Аноним 28/11/21 Вск 16:10:14 #481 №778971 
>>778969
> умеет ли годот рисовать большие миры с подгрузкой и без лагов
Умеет.
Ты не умеешь. Потому что ты ебанёшь подгрузку чанков в один поток с основным деревом сцены и будешь визжать про тормоза, и трясти скрином настроек, где ты включил поддержку многопоточности. Выкатывайся уже давай в свой загон. Не доводи до репорта.
Аноним 28/11/21 Вск 16:11:20 #482 №778972 
>>778971
Не, я не тот челик, ты попутал
Аноним 28/11/21 Вск 16:12:03 #483 №778973 
>>778972
Хорошо если так.
Аноним 28/11/21 Вск 16:18:46 #484 №778974 
>>778973
Ты лучше мне ответь, а если в годоте автоматическая преобразовалка в многоугольник для столкновений некого 2д изображения на основе его прозрачности.
Аноним 28/11/21 Вск 16:20:36 #485 №778975 
>>778968
> Ты - не вытянешь.
столько много в рендере придется переписывать по сравнению с UE ?
>>778970
> Ебашишь нагруженные алгоритмы в адаптеры, наследующиеся от Node в Godot API, в том числе тянущие API твоих или третьих библиотек, фреймворков, систем.
да, пробовал, делал, но хотелось бы меньше всего с той частью, что отвечает за рендер и его оптимизацию
Аноним 28/11/21 Вск 17:21:11 #486 №778988 DELETED
>>778955
Самое бохатое что я сохранял
Аноним 28/11/21 Вск 17:23:20 #487 №778989 DELETED
>>778988
Еще вот такое, у этого исходники выложены, но там сделано в Qodot (редактор карт квейка), а он мне не нравится.
https://github.com/sunkper/Project-Summer-Island
Аноним 28/11/21 Вск 17:27:58 #488 №778990 DELETED
>>778989
А это Andrea Catania пилит на 4, но у него много своих доработок движка. Год пилит, кажется.
https://www.youtube.com/watch?v=UAxTtXeAaFk
Аноним 28/11/21 Вск 17:28:06 #489 №778991 
>>778988
а на последних двух видосах не знаешь сколько треугольников и дравколов?
Аноним 28/11/21 Вск 17:32:49 #490 №778992 DELETED
>>778988
Ах да, чуть не забыл Sandfire
Автор выкладывал демку год назад
https://kmitt.itch.io/sandfire-014
https://www.youtube.com/watch?v=mmyH07FN_3U
Аноним 28/11/21 Вск 17:37:11 #491 №778993 
>>778988
Гюд
Аноним 28/11/21 Вск 17:57:02 #492 №778995 DELETED
>>778991
Не заметил, а специально искать некогда.
Еще сейчас глянул индус пилит свою Чакравьюгу, не забросил.
https://www.youtube.com/watch?v=uuJmHQhmZ5M
Аноним 28/11/21 Вск 18:24:28 #493 №778997 DELETED
>>778974
Ты про такие?
https://godotengine.org/asset-library/asset?filter=polygon
Аноним 28/11/21 Вск 18:32:43 #494 №778998 DELETED
>>778969
Надо взять и проверить
Ассет для фоновой загрузки есть.
https://godotengine.org/asset-library/asset/709
Либо
https://godotengine.org/asset-library/asset/530
Прекомпилятор шейдеров вроде уже в коре 3.4.1, либо ассетом
https://godotengine.org/asset-library/asset/977
Остается понять, как лучше нарезать на чанки, плюс подготовить модельки и материалы.
Ах да, еще LOD, но там тоже есть варианты (хотя скорее всего делать свой)
Аноним 28/11/21 Вск 19:13:05 #495 №779003 
>>778993
Да, спасибо.
ПЕРЕКАТ Аноним OP 29/11/21 Пнд 00:04:08 #496 №779037 
1638133448133.png
>>779036 (OP)
>>779036 (OP)
>>779036 (OP)
comments powered by Disqus

Отзывы и предложения