Дядя Миша писал: Это я тоже могу сделать. Но для начала надо убедиться, что в отладке такого рода вообще возникнет потребность.
Во всех современных движках оно используется. Я это тоже использую 90% времени отладки.
Цитата:
Дядя Миша писал: r_speeds есть. Там сразу видно сколько переключений шейдера, сколько флушей и сколько треугольников. Память разумеется тоже показывает. Ну может не так красиво как в Unity. Но опять же, на моей памяти народ на всё это стабильно забивает болт.
Окей ты видишь показания за кадр, а если тебе нужно посмотреть за период времени?
Цитата:
Дядя Миша писал: "Машина едет как-то не так" - это ты описал свои субъективные ощущения, например. Это необязательно баг, может настройки такие.
Вот если бы ты ехал на работу, а у тебя одно из колёс проколото ты тоже считал бы это субъективными ощущениями? Ну или каждый раз ставить специальный датчик на колесо чтобы посмотреть что у тебя прокололось?
Это типичное проявление багов, особенно когда ты переносишь какой то другой код к себе в проект, физика такой системы может быть сломана абсолютно. И ты можешь либо сидеть несколько дней и отлаживать код выводя нужные фрагменты в консоль. Либо сразу щелкать их мышкой в интерфейсе.
Цитата:
Дядя Миша писал: В сорсе есть такие инструменты? Я что-то не видел. И не помню, чтобы у кого-то там аттач объектов вызывал проблемы.
Дядя Миша писал: В сорсе есть такие инструменты? Я что-то не видел. И не помню, чтобы у кого-то там аттач объектов вызывал проблемы.
А много в сорсе ты с помощью кода что то аттачил, вращал и перемещал в локальных координатах?
Цитата:
Дядя Миша писал: FiEctro ты, чем приводить в пример разные отладочные инструменты, которые красивые и наглядные, лучше расскажи реальный опыт их применения. Было ли такое, что баги ты находил именно с помощью этих самых инструментов, а не самостоятельно вспоминал где именно ты налажал.
Да регулярно. Я тебе уже вторую страницу пишу применения. Дело не в красоте, дело в том что это:
1. Ты можешь редактировать любые параметры во время выполнения игры чтобы посмотреть как твой объект будет вести себя в тех или иных случаях. Нет нужды каждый раз перезапускать игру.
2. Очень наглядно когда ты можешь напрямую кликнуть мышкой на объект и узнать всё что с ним происходит, какой у него велосити, какой у него угол, какие значения публичных и приватных переменных, какие скрипты его меняют и т.д.
3. Фрейм дебаггер помогает при написании шейдеров и пост эффектов, когда например у тебя внезапно на ровном месте отваливаются тени, или не рисуются под прозрачным объектом.
4. Профайлер помогает найти скрипты которые жрут больше всего оперативки и ЦП, а так же что более важное какие из них дают фризы, это может быть несколько милисекунд.
Цитата:
Дядя Миша писал: C# абсолютно не годится для игр. Он даже для приложений особо не годится. Вспоминаем Paint.NET. Кто-то может сказать, мол, там работа с пикселями. пикселей много, вот и не справляется. Хорошо, но у меня есть софтина для внутрисхемного программирования на шарпе. Там одно небольшое окошко и несколько кнопок. Как жы люто это говно лагает. И всё время норовит зависнуть. А ведь оконному интерфейсу никто и не гарантирует мгновенно отклика. Там окошки неперерисованными могут оставаться долгое время и типа нормально. Прогресс-бары зависают, к примеру. И вот на таком языке вы собрались делать игру. Хуже СиШарпа только годотовский клон Питона под названием GDScript. Он настолько тормозной, что даже Юнити на его фоне кажется чем-то сверхбыстрым.
Эпики, устав бороться со всем этим дерьмом запилили блюпринты, которые в финале просто транслируются в обычный С++ код. Решение спорное, но по производительности наверняка лучшее. Однако у них другая проблема - разобраться в здравом уме с кодобазой анрила практически невозможно.
Уж слишком она гигантская. Многие и не пытаются - выбирают Юнити или тот же Годот. Вот такая вот диалектика. Кстати с КрайЭнджином была аналогичная шляпа - разобраться с его игровой кодобазой могут не только лишь все. И большинство предпочло не связываться.
Сам Юнити и его интерфейс написан на крестах вроде как, у тебя есть исходники. А вот виртуальная машина - шарпы да.
Я охотно верю, я знаю что низкоуровневые языки всегда быстрее будут. Но дело не просто в быстроте, дело в удобстве использования всего этого. Суть движков как раз упрощать рутинные процессы. Иначе какой в них смысл? Писать свой движок поверх твоего?
Цитата:
Дядя Миша писал: А ведь оконному интерфейсу никто и не гарантирует мгновенно отклика. Там окошки неперерисованными могут оставаться долгое время и типа нормально. Прогресс-бары зависают, к примеру. И вот на таком языке вы собрались делать игру.
Зависит от реализации. Вон есть imgui на крестах, и он не лагает, а вот как делфи библиотеки себя поведут, большой вопрос. Поскольку я уже пообмазывался виндовыми окошками в C++ и понял какое это кривущее лагучее дерьмо.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: а если тебе нужно посмотреть за период времени?
И что ты там увидишь? Среднюю температуру по больнице?
Ты увидишь краткую историю верчения камерой. Это не статистика, а хрень какая-то.
Цитата:
FiEctro писал: от если бы ты ехал на работу, а у тебя одно из колёс проколото ты тоже считал бы это субъективными ощущениями?
Ну вышел и визуально посмотрел. Отладчик для этого не нужен. Корочи, давай реальный пример. Потому что вот это твоё "как-то не так" это чистая субъективщина.
Цитата:
FiEctro писал: Это типичное проявление багов, особенно когда ты переносишь какой то другой код к себе в проект, физика такой системы может быть сломана абсолютно
Т.е. отладка позволяет переносить код из одного проекта в другой? А если к примеру сам пишешь, то она не нужна?
Мой поинт в том, чтобы написать систему аттача прямо на Шоте, а не выводить интерфейсы из движка. Разумеется это будет тормозно. Но для меня это - лишний стимул оптимизировать интерпретатор, а не прятаться за убогими интерфейсами. Эпики вон в третьем анриле допрятались до того, что вообще дропнули виртуальную машину.
Цитата:
FiEctro писал: А много в сорсе ты с помощью кода что то аттачил, вращал и перемещал в локальных координатах?
Так если это можно при создании уровня сделать, зачем в коде?
Цитата:
FiEctro писал: Но дело не просто в быстроте, дело в удобстве использования всего этого. Суть движков как раз упрощать рутинные процессы. Иначе какой в них смысл?
Это я к тому, зачем я вообще морочился с собственным скриптовым языком когда есть всякие луа, петоны, шарпы и явы. Вот как раз по этой причине. Все эти языки категорически не годятся для игр.
Цитата:
FiEctro писал: Вон есть imgui на крестах, и он не лагает
Тут я долго смеялся. Более лагучего дерьма чем imgui ещё поискать. Его судя по всему писали представители LGBTQ или как оно там называется.
Цитата:
FiEctro писал: пообмазывался виндовыми окошками в C++ и понял какое это кривущее лагучее дерьмо.
Выглядит жутко, да. Кресты вообще с окошками плохо дружат. Ну оно и понятно. Когда кресты создавались никаких окошек ещё и близко не было.
А вот когда создавался Делфи - окошки уже очень даже были.
Просто Делфям плевать на собственную совместимость, в отличие от крестов.
Дядя Миша писал: Это я тоже могу сделать. Но для начала надо убедиться, что в отладке такого рода вообще возникнет потребность.
Занимаюсь реверс инженирингом LS3D (движком Mafia: The City of Lost Heaven) в свое удовольствие. Буквально сделал себе что-то схожее для дебага через Cheat Engine, а потом и через считывание буквально в Юнити через чтение памяти. Думаю не так уж и трудно сделать.
Цитата:
FiEctro ты, чем приводить в пример разные отладочные инструменты, которые красивые и наглядные, лучше расскажи реальный опыт их применения. Было ли такое, что баги ты находил именно с помощью этих самых инструментов, а не самостоятельно вспоминал где именно ты налажал.
Могу рассказать именно Я за свой опыт. Такие отладочные инструменты прекрасны, когда ты пишешь что-то серьезное и архитектурное, но по своей природе ты не особо технарь и удерживать вообще все в своей голове вообще все, что ты пишешь не получается. Прекрасный инструмент. Кликаешь на объект. Смотришь публичные переменные, что ты себе вывел. Чаще всего, скорее в силу своих когнитивных способностях случается ситуация, что ты где-то накосячил в коде, но не фатально. Игра не крашнулась, но работает через жопу. И тут безумно помогает Инспектор Юнити.
Ставишь на паузу игру (по потребности, можно и в реальном времени влезть). Редактируешь любую переменную так как тебе вздумается. Хочешь залезть глубже? Можешь и приватные до определенной глубины глянуть и отредактировать. Эдакий хороший пинок нерабочему жигулю, в котором ты вручную рукой крутишь обороты, хех, чтоб он таки завёлся.
Это лично для меня буквально та вещь, которая разделяла движки нулевых и конца 90ых, которые ДВИЖКИ и Юнити-подобное направление уже нынешнего времени, которое началось с 2010. Потому что это попросту снижает порог вхождения и сложность разработки. Ты в дебаге можешь отредактировать любую переменную, а так же увидеть косяк в каком-нибудь буле.
Так же помогает безумно как и брейкпоинты в вижуал студии, если у тебя какие-то критические вещи случаются на уровне уже фрейма.
Цитата:
C# абсолютно не годится для игр. Он даже для приложений особо не годится.
Я бы хотел немного разграничить тут. С точки зрения быстродействия - шарпы отвратительны. Просто ужасны и фу. Как... И все интерпретируемые скриптовые языки. Unity3D решает этот вопрос преобразованием в релизной версии в C++ код посредством IL2CPP. Не особо спасает, зато от вирусописателей школьников помогает.
Однако, C# действительно неплох с точки зрения архитектуры. Почему? Да у него блин альтернатив нет. Про GDScript ты уже все сказал, а что остается? Несчастный и ужасный LUA? Или еще более жалкая JS? Господи, на его фоне Шарпы кажутся такими низкоуровневыми аристократами, способными в восхитительную абстракцию, что даже слов нет.
Плюсы всем блин хороши, но они точно не прокатят для *дизайна* игры. Писать архитектурные крутые и тяжелые компоненты - да, пожалуйста. UE буквально бьет палкой разработчиков и требуют "ВПИСЫВАЙ ВСЕ НУЖНЫЕ ПЕРЕМЕННЫЕ УЖЕ ТОЛЬКО В НАШЫ РЕАЛИЗАЦИИ". И в текущих рамках Шапры тупо находятся в проклятом лимбо. Они достаточно скриптовые и щадят пользователя от совсем уж идиотских ошибок, но при этом достаточно абстрактные, чтоб на них МОЖНО было бы писать уже какие-никакие, но архитектурные решения игры.
(Я на днях ознакомился с некоторыми реализациями GDScript. Господи, я как будто в 2006 с Game Maker и GML попал. Просто ужасно.)
Цитата:
Однако у них другая проблема - разобраться в здравом уме с кодобазой анрила практически невозможно.
Уж слишком она гигантская. Многие и не пытаются - выбирают Юнити или тот же Годот. Вот такая вот диалектика. Кстати с КрайЭнджином была аналогичная шляпа - разобраться с его игровой кодобазой могут не только лишь все. И большинство предпочло не связываться.
Современные идиомы разработки скорее четко дают понять - "разработчик НЕ ДОЛЖЕН влезать в движок". Пусть барахтается в скриптовом болоте (и ХОРОШО если тут будут шарпы. От спагеттикода блупринтов мне зябко становится). Пусть не лезет куда-то на низкоуровневые вопросы. Вопросами архитектуры и движка тип должны разбираться разработчики как раз движков, которые должны выдать удобное API, решающее многие вопросы.
Дядя Миша писал:
И что ты там увидишь? Среднюю температуру по больнице?
Ты увидишь краткую историю верчения камерой. Это не статистика, а хрень какая-то.
Например минимальные и максимальные значения, ну и средние да. Этого мало?
Цитата:
Дядя Миша писал: Ну вышел и визуально посмотрел. Отладчик для этого не нужен. Корочи, давай реальный пример. Потому что вот это твоё "как-то не так" это чистая субъективщина.
Создание и удаление объектов, изменение их свойств, динамическое перемещение их по иерархии и т.д.
Цитата:
Дядя Миша писал: Т.е. отладка позволяет переносить код из одного проекта в другой? А если к примеру сам пишешь, то она не нужна?
Ну ты хотел пример?
Цитата:
Дядя Миша писал: Мой поинт в том, чтобы написать систему аттача прямо на Шоте, а не выводить интерфейсы из движка. Разумеется это будет тормозно. Но для меня это - лишний стимул оптимизировать интерпретатор, а не прятаться за убогими интерфейсами. Эпики вон в третьем анриле допрятались до того, что вообще дропнули виртуальную машину.
Неудобно всё матрицами писать. А отлаживать их гемор. Это как раз пример того где у тебя вместо нужных углов может выйти какая то херня.
Цитата:
Дядя Миша писал: Так если это можно при создании уровня сделать, зачем в коде?
А в динамике? Объекты постоянно создаются и удаляются.
Цитата:
Дядя Миша писал: Тут я долго смеялся. Более лагучего дерьма чем imgui ещё поискать. Его судя по всему писали представители LGBTQ или как оно там называется.
Ну Валва и Рокстар его юзают. Да и вполне он на ГПУ целиком. Хотя я не вникал особо, если есть какой либо опыт, расскажи.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Kardini писал: Такие отладочные инструменты прекрасны, когда ты пишешь что-то серьезное и архитектурное, но по своей природе ты не особо технарь и удерживать вообще все в своей голове вообще все, что ты пишешь не получается
Ну может быть.
Цитата:
Kardini писал: Редактируешь любую переменную так как тебе вздумается. Хочешь залезть глубже? Можешь и приватные до определенной глубины глянуть и отредактировать.
Но ведь косяк может быть именно в коде, а не в переменных. А код в реалтайме уже не отредактируешь.
Цитата:
Kardini писал: C# действительно неплох с точки зрения архитектуры. Почему? Да у него блин альтернатив нет
Теперь есть. Зря я что ли целый год возился? Скоро покажу.
Цитата:
Kardini писал: "разработчик НЕ ДОЛЖЕН влезать в движок"
С этим согласен.
Цитата:
FiEctro писал: Например минимальные и максимальные значения, ну и средние да. Этого мало?
Для минимально-максимальных значений вовсе необязательно строить график.
Цитата:
FiEctro писал: Объекты постоянно создаются и удаляются.
Со сложной иерархией? Приведи пример. В играх на Юнити, по крайней мере в тех, что я видел, иерархия практически не использовалась.
Цитата:
FiEctro писал: Ну Валва и Рокстар его юзают. Да и вполне он на ГПУ целиком
В чём сложность оконного интерфейса? В том, что интерфейс физически состоит из двух независимых компонентов - ввод с HID и отрисовка на экран. Технически в игровом движке это тоже есть, вот только там ввод умещается в маленькую такую структурку, которая всегда сидит в движке, вызывается из строго определённого места и не может быть изменена.
Ну просто потому что от игрока в играх требуется не так уж и много действий - бег, прыжок, присед, атака. В окошках не так. Там каждая кнопка означает новый эвент. А более сложные элементы - целую кучу эвентов. Так вот отрисовка - отдельно, а эвенты отдельно. Идея в том, чтобы не перерисоывать элемент, который не изменился. Из-за этого код окошек при классическом построении выглядит страшно и непонятно.
Там какие-то таблицы, холдеры каллбэков и прочая чертовщинка.
imGUI действует иначе. Там всё как бы упрятано в один вызов. И этот вызов запихнут в отрисовку. Т.е. мы одновременно рисуем и тут же проверяем, не нажата ли кнопка, или может курсор мыши попал в рамку и надо к примеру вывести подсказку. Для программиста подобная огранизация очень удобна, а вот с точки зрения производительности, это удар по ней примерно в 1000х и до бесконечности. Потому что каждый новый элемент окна будет индивидуально опрашивать устройства ввода.
И перерисовываться каждый кадр. Пока у тебя 10-15 кнопок или ползунков, это вроде как незаметно. Т.е. для отладочных интерфейсов это ещё годится. Но ничего серьезного ты на этом не сделаешь. И это огромная проблема современного софта - всё такое на первый взгляд красивое, опенсорсное и даже мультиплатформенное. Вот только не масштабируется абсолютно. Но ты об этом узнаёшь, когда оно уже прикручено к твому коду намертво. Это ещё один способ как добавить тормозов в своё приложение.
Это просто штука для включения и выключения кваров, для тех, кто забыл их имена.
Добавлено 02-10-2023 в 09:36:
Так, ну какая картина у нас вырисовывается с игровыми движками:
1. Край после того как его выкупила Амазон практически сошёл со сцены.
А ЛумберЯрд был испохаблен людьми, которые, судя по всему не сделали ни одного движка в своей жизни, но зато начитались умных книжек, как их надо делать. Я допускаю, что его кто-то использует, но он давно не на слуху, в отличие от знаменитого предка.
2. В Юнити вероятно случилось некоторое головокружение от успехов и они решили что теперь они могут дектавадь всё что хотят и от них уже никто никуда не денется. Реакция от сообщества последовала моментально и фраера даже чуточку сдали назад. Это лишний раз доказывает, что они не ожидали подобного негатива. Не знаю, было ли это персональной инициативой Ричителло или коллективным решением, но идея была мягко говоря неудачной и нанесла удар по репутации. Это как если бы вы общались с человеком и он у вас украл какую-то мелочь, попался, извинился, вроде бы ерунда. но есть повод задуматься.
3. Эпики, видимо тоже на волне головокружения от успехов, затеяли судебную тяжбу с Эппл. Про который нам рассказывали, что у него капитализация, как у всей России, а может быть ещё больше. К тому же Эппл широко известен в широких кругах, а вот Эпики широко известны только в узких кругах. Силы были явно неравны, что в итоге привело к увольнению сотрудников, поскольку судебные издержки сожрали большую часть доходов. Я не удивлюсь, что ещё через год-два подобного противостояния Эпики окончательно обессилиют и их выкупит какой-нибудь Микрософт и заставит делать игры для икс-бокса. Ну или что-то вроде этого.
4. Годот. Ну тут всё как было грустно, так и осталось. Хоть где-то стабильность. Помню меня до глубины души поразил их пример океана с волнами, где вертексы трансформировались на GD Script. Я тогда спрашивал себя - эти парни, ну они же просто так шутят, да? Они же не всерьез? Походу они не шутили.
Так вот, к чему я всё это написал. На рынке очередные брожения, значит сейчас достаточно удобное время для входа с новым продуктом. Потому что народ в принципе готов рассматривать какую-то альтернативу.
Дядя Миша писал: 1. Край после того как его выкупила Амазон практически сошёл со сцены.
А ЛумберЯрд был испохаблен людьми, которые, судя по всему не сделали ни одного движка в своей жизни, но зато начитались умных книжек, как их надо делать. Я допускаю, что его кто-то использует, но он давно не на слуху, в отличие от знаменитого предка.
Kardini писал: От спагеттикода блупринтов мне зябко становится
Да нет там никаких спагетти, можно делать макросы, функции, глобальные функции или просто коллапсить код
А нагавнокодить можно на любом языке в любом движке...
__________________
Kiss my ass if you don't like my Ford!
------------------------------------------ Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.
Дядя Миша писал: Наколядовать 1 млрд долларов донатов
За эти донаты потом нужно будет отчитываться, хз, как они это будут делать
__________________
Kiss my ass if you don't like my Ford!
------------------------------------------ Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.
Дядя Миша писал: И перерисовываться каждый кадр. Пока у тебя 10-15 кнопок или ползунков, это вроде как незаметно. Т.е. для отладочных интерфейсов это ещё годится. Но ничего серьезного ты на этом не сделаешь. И это огромная проблема современного софта - всё такое на первый взгляд красивое, опенсорсное и даже мультиплатформенное. Вот только не масштабируется абсолютно. Но ты об этом узнаёшь, когда оно уже прикручено к твому коду намертво. Это ещё один способ как добавить тормозов в своё приложение.
Ну вон квака в настройках все эти шрифты и позунки в настройках рисует и ничего. А уж сколько всего в консоль строчит - сомневаюсь что виндовые интерфейсы такую частоту обновления потянут. Да и что мешает перестать перерисовывать кнопки на опенгле? Да и если у тебя куча значений обновляется в реалтайме, эти обновления особо и не помогут.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
(_-=ZhekA=-_) писал: За эти донаты потом нужно будет отчитываться, хз, как они это будут делать
Да поди придумают что-нибудь. Например скажут, что у них сгорел весь жесткий диск со всеми наработками. Или весь офис затопило. Или провайдер облака, где хранились все наработки подвергся удару гиперзвуковой российской ракеты. Выкрутятся.
Добавлено 02-10-2023 в 14:19:
Цитата:
FiEctro писал: Да и что мешает перестать перерисовывать кнопки на опенгле?
Я же говорю - отрисовка одновременно и проверка на нажатие кнопки.
Дядя Миша писал: Да поди придумают что-нибудь. Например скажут, что у них сгорел весь жесткий диск со всеми наработками. Или весь офис затопило. Или провайдер облака, где хранились все наработки подвергся удару гиперзвуковой российской ракеты. Выкрутятся.
Это как история со сталкер 2 что ли, когда у них недавно сгорел офис, а в офисе был сервак со-всеми данными игры? И как следствие игру опять перенесли
__________________
Kiss my ass if you don't like my Ford!
------------------------------------------ Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.