Один из моих проектов с командой из 5-6 человек за 3 года оброс 400 с лишним ветками. Размер репа составлял больше 1Гб.
Другой проект длился 6 лет, разрабатывался двумя командами из 8 и 11 человек. Тоже несколько сотен веток запросто накопилось. Два или три раза переезжали в другой репозиторий: останавливали коммиты в текущий, переводили его в read-only и заводили новый из текущего слепка. В этом случае еще большие бинарные файлы (ассеты для UE4) и Git LFS прибавились.
Если моя фича зависит от васиной, то, чтобы проверить свои результаты, я должен буду притянуть в свой форк васину ветку, ребейзнуть свои коммиты на неё или слить мою ветку с васиной.
Если Вася где-то не прав, и я могу это исправить, то получается еще одна ветка.
CI-build для ядра линукса? С matrix-конфигом со всеми вариантами? Ннууу, технически это, вероятно, осуществимо, но на практике вряд ли кому-то по силам
// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "PaperSprite.h"
#include "ComponentAssetBroker.h"
#include "PaperSpriteComponent.h"
#include "PhysicsEngine/BodySetup.h" // <<---
//////////////////////////////////////////////////////////////////////////
// FPaperSpriteAssetBroker
....
Файл BodySetup.h находится в Engine/Source/Runtime/Engine/Classes/PhysicsEngine/ и там нет ссылок ни на что, кроме PhysX и Chaos.
Так что да, всё та же PhysX (или Chaos) с заблокированной одной пространственной осью. Т.е. в 2D-играх объектам просто не позволяют перемещаться в направлениях, выводящих за плоскость, в которой происходит гемплей.
Вот Вам идея для эксперимента: попробовать реализовать одну и ту же игровую механику на PhysX и на Chaos и рассказать о результатах и полученном опыте.
В исходниках UE4 есть отдельные ветки 4.26-chaos и 4.27-chaos. Я не заглядывал туда, но названия подсказывают, что там другая физика.
Chaos тоже не идеален. Я в прошлые пару лет участвовал в проекте по созданию аналога Gazebo на UE, так там несколько раз пытались переехать на UE5, но так пока и остались на 4.26 из-за бага в Chaos, который рушил всю симуляцию.
А время на настройку Visual Studio, знакомство с его возможностями, поиск плагина, знакомство с плагином, где?
Так почти не было его. В школе на Turbo Pascal писал, потом Turbo C. Visual Studio после них как-то само зашло. На плагин пару часов, вроде бы, потратил.
В общем не вижу тут особой разницы. И там и там разовая работа по самообразованию, которая повышает ваш навык и вашу цену как эксперта
Разница в том, в какой области какой функционал проработан. В линуксах/макоси тоже не всё везде блестяще.
Именно "отнюдь". Не понимаю я, что там проработанного. Вы и сами согласны, что дополнительные вложения требуются.
В Visual studio я плагин поставил, окошко его открыл и продолжил заниматься своей основной задачей: отладкой алгоритма, решающего задачи заказчика. Который деньги платит, на минуточку, за решение только своих задач.
А в линуксе/макоси я должен потратить несколько дней на настройку инструментов, понаступать на все их баги, найти патчи, скачать исходники, в том числе и зависимостей, применить патчи, пересобрать инструменты. Ффух, можно дальше к своей основной задаче возвращаться.
Как вариант, можно ещё все изложенное в стоимость работ заложить и выкатить счет заказчику. Но это не отменяет моих сомнений в проработанности инструментов отладки под линукс.
Ну и последнее: отладка в Линуксе - это один из самых проработанных моментов вообще.
Отнюдь. Основываясь на своём многолетнем опыте разработки под виндой и линуксом, а в последнее время еще MacOS прибавилась, скажу, что это очень спорное утверждение.
"как решить задачу ABC". Некоторые решения будут совсем не аналогами, но они будут родными для линукса и прямыми по сути.
Вот Вам задача. Вывести на экран изображение из памяти отлаживаемой программы, выполнять программу по шагам и обновлять картинку, чтобы показать, как код её меняет. Указатель на данные изображения есть, формат, высота, ширина и прочая информация есть. Одновременно нужно показывать значения различных других переменных.
Короче, отладка программы, выполняющей какие-либо задачи из области image processing/computer vision. А картинки, для простоты, пусть лежат в объектах класса `cv::Mat` из известной библиотеки OpenCV.
В Visual Studio под виндой уже много лет есть плугин Image Watch, который с успехом решает и эту, и другие задачи. Во всех остальных IDE и ОС - костыли вокруг GDB, LLDB и Matplotlib, которые постоянно ломаются. Что-то похожее есть для Jetbrains-овских IDE, но в последнее время этот плугин стал платным, и не все IDE поддерживает, в частности в Rider for Unreal он не работал, когда я пытался его использовать.
Если именно эта логика стоит за действиями HP, то она мне кажется какой-то странной, детсадовской. Запретить пользователям из другой страны включать/выключать лампочки на ноутбуках, которые они у тебя купили... Не в аренду взяли, не в подарок получили, а бабки за них заплатили, причем было это больше 2 лет назад, даже гарантийный срок уже вышел. Напоминает мне свару между соседями, которую я как-то давно наблюдал. Основная суть свары выражается в следующей угрозе одного другому: "будешь приставать к моей жене - я на твоей машине колеса проколю". Ну отключили Gaming Hub. Дальше что?
Пишу это сообщение с ноута HP Omen 15, работающего под Kubuntu Linux 22.04, подсветку клавиатуры уже года три регулирую с помощью вот этого модуля https://github.com/pelrun/hp-omen-linux-module В одном из форков репозитория, вроде бы, есть решение для динамического изменения подсветки во времени.
если человек не затыкается, то это значит, что он не понял, что его поняли. Причём, иногда это просто удивительно, что простое "Я вас понял" может сделать с ситуацией
Нет. Для того, чтобы человек заткнулся, нужно решить его проблему и/или устранить причину его беспокойства. В Ваших примерах именно это и происходит. Если просто сказать "Я вас понял" и оставить все как есть, это не поможет.
И как поступит гипотетический босс из Вашего второго примера, если через три недели задача 21 останется в том же состоянии?
Все логично, понятно, обоснованно, с доводами согласен. Один момент: HRов нанимают не сотрудники, а директор, он же и зарплату им платит. Сюда же секретарь-референт, плановая группа, бухгалтерия, завхоз, итдитп. Это все (бюрократический) аппарат директора, который он нанимает себе для своих нужд. Соответственно, ему и рассуждать, кто и зачем нужен, а кто - нет.
... деньги, вложенные в удалённого работника делают больше денег, чем вложенные в офис и офисного работника...
А вот тут очень интересно, как это можно посчитать? Из очевидного: аренда офиса, зарплата уборщиц и кофе-леди и оплата VPN. Дальше остаётся как-то посчитать, насколько отрабатывает свою зарплату сотрудник, работая из дома и работая из офиса и сделать выводы. Вот с последним не всё понятно.
Видимо, речь про Microsoft и запихивание всех исходников Windows в монореп git. Там в последнем предложении ссылка на английскую статью про это.
Один из моих проектов с командой из 5-6 человек за 3 года оброс 400 с лишним ветками. Размер репа составлял больше 1Гб.
Другой проект длился 6 лет, разрабатывался двумя командами из 8 и 11 человек. Тоже несколько сотен веток запросто накопилось. Два или три раза переезжали в другой репозиторий: останавливали коммиты в текущий, переводили его в read-only и заводили новый из текущего слепка. В этом случае еще большие бинарные файлы (ассеты для UE4) и Git LFS прибавились.
Если моя фича зависит от васиной, то, чтобы проверить свои результаты, я должен буду притянуть в свой форк васину ветку, ребейзнуть свои коммиты на неё или слить мою ветку с васиной.
Если Вася где-то не прав, и я могу это исправить, то получается еще одна ветка.
Не обязательно. Если васина фича зависит от моей, а моя - от васиной, то у каждого в репе будут чужие ветки и по два remote, свой и товарища
Приходим к выводу, что двоим-троим всё же удобнее в один реп коммитить, а не в три.
Вот у инженера интеграции и получается описанная изначально ситуация.
Кстати, не подскажете, в форках репозиториев лежат копии файлов или ссылки на оригинал?
А то диски на сервере всё-таки не резиновые, и если проект сильно большой, это может быть критично.
Т.е один проект (репозиторий) - один исполнитель?
Что предлагаете делать в случае, если проект большой, и одного исполнителя мало?
Компилировать код без оптимизаций и с отладочной информацией, а в gdb/lldb/visual studio запускать питон. Примерно так.
CI-build для ядра линукса? С matrix-конфигом со всеми вариантами? Ннууу, технически это, вероятно, осуществимо, но на практике вряд ли кому-то по силам
RTFS (read those f...ine sources). Открываем какой-нибудь исходник из плугина Paper2D и видим там ссылку на PhysicsEngine.
Файл BodySetup.h находится в
Engine/Source/Runtime/Engine/Classes/PhysicsEngine/и там нет ссылок ни на что, кроме PhysX и Chaos.Так что да, всё та же PhysX (или Chaos) с заблокированной одной пространственной осью. Т.е. в 2D-играх объектам просто не позволяют перемещаться в направлениях, выводящих за плоскость, в которой происходит гемплей.
https://docs.unrealengine.com/4.27/en-US/AnimatingObjects/Paper2D/HowTo/Physics/
Судя по официальной доке, это всё тот же PhysX, но с залоченной одной пространственной осью.
Да и PhysicsCore плугин ничего другого не содержит.
Вот Вам идея для эксперимента: попробовать реализовать одну и ту же игровую механику на PhysX и на Chaos и рассказать о результатах и полученном опыте.
В исходниках UE4 есть отдельные ветки 4.26-chaos и 4.27-chaos. Я не заглядывал туда, но названия подсказывают, что там другая физика.
Chaos тоже не идеален. Я в прошлые пару лет участвовал в проекте по созданию аналога Gazebo на UE, так там несколько раз пытались переехать на UE5, но так пока и остались на 4.26 из-за бага в Chaos, который рушил всю симуляцию.
Еще интересная идея: https://www.stevestreeting.com/2020/07/26/using-bullet-for-physics-in-ue4/
В UE4 используется не собственный физический движок, а PhysX от nVidia.
Свой движок Chaos Destruction вместо PhysX они только в пятой версии начали использовать.
Не всё так страшно. Если чуть-чуть не подходит, можно допилить.
Так почти не было его. В школе на Turbo Pascal писал, потом Turbo C. Visual Studio после них как-то само зашло. На плагин пару часов, вроде бы, потратил.
Разница в том, в какой области какой функционал проработан. В линуксах/макоси тоже не всё везде блестяще.
А навыки совершенствовать надо постоянно, да.
Именно "отнюдь". Не понимаю я, что там проработанного. Вы и сами согласны, что дополнительные вложения требуются.
В Visual studio я плагин поставил, окошко его открыл и продолжил заниматься своей основной задачей: отладкой алгоритма, решающего задачи заказчика. Который деньги платит, на минуточку, за решение только своих задач.
А в линуксе/макоси я должен потратить несколько дней на настройку инструментов, понаступать на все их баги, найти патчи, скачать исходники, в том числе и зависимостей, применить патчи, пересобрать инструменты. Ффух, можно дальше к своей основной задаче возвращаться.
Как вариант, можно ещё все изложенное в стоимость работ заложить и выкатить счет заказчику. Но это не отменяет моих сомнений в проработанности инструментов отладки под линукс.
Ссылки перепутал. Вот правильная ссылка на плугин для IDEA.
А вот тот самый костыль для gdb/lldb, который работает через пень-колоду.
https://news.ycombinator.com/item?id=5125078 - не только моё мнение про отладку на Линукс и GDB.
VS Code тоже не панацея, многолетний баг решен костылём.
Отнюдь. Основываясь на своём многолетнем опыте разработки под виндой и линуксом, а в последнее время еще MacOS прибавилась, скажу, что это очень спорное утверждение.
Вот Вам задача. Вывести на экран изображение из памяти отлаживаемой программы, выполнять программу по шагам и обновлять картинку, чтобы показать, как код её меняет. Указатель на данные изображения есть, формат, высота, ширина и прочая информация есть. Одновременно нужно показывать значения различных других переменных.
Короче, отладка программы, выполняющей какие-либо задачи из области image processing/computer vision. А картинки, для простоты, пусть лежат в объектах класса `cv::Mat` из известной библиотеки OpenCV.
В Visual Studio под виндой уже много лет есть плугин Image Watch, который с успехом решает и эту, и другие задачи. Во всех остальных IDE и ОС - костыли вокруг GDB, LLDB и Matplotlib, которые постоянно ломаются. Что-то похожее есть для Jetbrains-овских IDE, но в последнее время этот плугин стал платным, и не все IDE поддерживает, в частности в Rider for Unreal он не работал, когда я пытался его использовать.
Статья является пересказом официальных инструкций от предыдущей версии.
Оригинал последней версии
Если именно эта логика стоит за действиями HP, то она мне кажется какой-то странной, детсадовской. Запретить пользователям из другой страны включать/выключать лампочки на ноутбуках, которые они у тебя купили... Не в аренду взяли, не в подарок получили, а бабки за них заплатили, причем было это больше 2 лет назад, даже гарантийный срок уже вышел. Напоминает мне свару между соседями, которую я как-то давно наблюдал. Основная суть свары выражается в следующей угрозе одного другому: "будешь приставать к моей жене - я на твоей машине колеса проколю". Ну отключили Gaming Hub. Дальше что?
Пишу это сообщение с ноута HP Omen 15, работающего под Kubuntu Linux 22.04, подсветку клавиатуры уже года три регулирую с помощью вот этого модуля https://github.com/pelrun/hp-omen-linux-module В одном из форков репозитория, вроде бы, есть решение для динамического изменения подсветки во времени.
Нет. Для того, чтобы человек заткнулся, нужно решить его проблему и/или устранить причину его беспокойства. В Ваших примерах именно это и происходит. Если просто сказать "Я вас понял" и оставить все как есть, это не поможет.
И как поступит гипотетический босс из Вашего второго примера, если через три недели задача 21 останется в том же состоянии?
Все логично, понятно, обоснованно, с доводами согласен. Один момент: HRов нанимают не сотрудники, а директор, он же и зарплату им платит. Сюда же секретарь-референт, плановая группа, бухгалтерия, завхоз, итдитп. Это все (бюрократический) аппарат директора, который он нанимает себе для своих нужд. Соответственно, ему и рассуждать, кто и зачем нужен, а кто - нет.
А вот тут очень интересно, как это можно посчитать? Из очевидного: аренда офиса, зарплата уборщиц и кофе-леди и оплата VPN. Дальше остаётся как-то посчитать, насколько отрабатывает свою зарплату сотрудник, работая из дома и работая из офиса и сделать выводы. Вот с последним не всё понятно.