Войти
ФлеймФорумПроЭкты

Floating Islands [????] (8 стр)

Страницы: 17 8 9 10114 Следующая »
#105
9:56, 10 авг. 2018

emptiness_rain
какая разница? я же пишу - это фатальный недостаток. Это бесполезный кусок кода уродующий весь код

Вообще у меня складывается впечатление что ты из девелоперов.. Не то чтобы  это было что-то плохое, а скорее то что тебе пофиг на чем делать и насколько это уродливо, все твои аргументы игнорируют этот самый простой факт - эстетическое удовлетворение от работы.
Для меня это хобби. Хобби должно быть приятным, на то оно и хобби. Уродливые инструменты не создают приятного ощущения. Так что - мне важно чтобы было красиво, а не результат.

p.s. студийный профайлер говорит что все эти GetSubsystem занимают около 10+% кадра. Но это в дебаге (а с другой стороны в релизе оно не сильно быстрее - тут же контейнеры сапомисные)


#106
9:59, 10 авг. 2018

war_zes
Если у тебя в кадре одни getsubsistem то наверное.
Кеширование переменной? Не, не слышал

#107
(Правка: 10:03) 10:01, 10 авг. 2018

Mira
> Бред какой то , ты что тыщу раз в сек эти подсистемы будешь доставать?
В юрхо именно так, это все растет из юнитивского GetComponent

B да, в юрхо оно зовется тысячами в секунду

Вот куски кода, выполняющиеся каждый кадр (лишнее убрал)

  void Engine::RunFrame()
  {
    if ( !headless_ && !GetSubsystem<Graphics>()->IsInitialized() )
      exiting_ = true;

    auto* time = GetSubsystem<Time>();
    auto* input = GetSubsystem<Input>();
    auto* audio = GetSubsystem<Audio>();

#ifdef URHO3D_PROFILING
    if ( EventProfiler::IsActive() )
    {
      auto* eventProfiler = GetSubsystem<EventProfiler>();
      if ( eventProfiler )
        eventProfiler->BeginFrame();
    }
#endif
...
  }

void Engine::Render()
  {
    auto* graphics = GetSubsystem<Graphics>();
  ....

    GetSubsystem<Renderer>()->Render();
    GetSubsystem<UI>()->Render();
...
  }
И там еще много такого. Они не кешируют

#108
10:03, 10 авг. 2018

Mira
> Если у тебя
Это не у меня, это в Urho3D:)

Я буду убирать эту хрень. Даже если оно не даст и 1 фпс, оно всеже будет лучше чем то что у них. Хотя бы кода в движке будет меньше

#109
10:08, 10 авг. 2018

war_zes
>оно всеже будет лучше чем то что у них. Хотя бы кода в движке будет меньше
Или не будет )

#110
11:19, 10 авг. 2018

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

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

> p.s. студийный профайлер говорит что все эти GetSubsystem занимают около 10+%
> кадра. Но это в дебаге (а с другой стороны в релизе оно не сильно быстрее - тут
> же контейнеры сапомисные)
Ты серьезно?)
В пустом проэкте профайлер включать этож бред.
Вот когда у тебя будет в кадре апдэйт логики, анимации, физики пары сотен юнитов, система частиц, звуки, пара десятков шейдеров, постэффекты, вот тогда посмотри сколько времени кадра занимает вызов этих функций.

#111
(Правка: 11:29) 11:28, 10 авг. 2018

emptiness_rain
+1 че там профайлить . Там можно дойти до стоимости вызова дравкола, а потом через асм как роннико вызвывать его из околодрайверной функции в обход d3dxx.dll
, здравого смысла и безопасносии :) по миллиону раз, вместо того чтоб использовать батчинг и получить больше профита.

#112
(Правка: 12:02) 11:52, 10 авг. 2018

Mira
производительность - не единственная причина что-то делать или не делать. Иначе мы бы и правда до сих пор писали на асме .


nes
> Или не будет )
код меняю для себя

Что я получу отпилив эту систему:

- на производительность это не повлияет, может оно и не даст прироста, но оно и не ухудшит

- GetSubsystem(), это скрытый глобальный синглтон, двух Profiler нельзя сделать в пределах одного Context в юрхо. Так что это уже ненужная вещь. И любые скрытые механизмы усложняют код.
Более явный синглтон упростит понимание происходящего.

- GetSubsystem<Class>() длиннее GetClass() на 11 символов. И это не шутка, менее короткий код легче воспринимается (именно поэтому мы до сих пор придерживаемся правила 80/90/120 символов в длину, независимо от размеров монитора)

- GetSubsystem() имеет некоторые правила работы с ним. Если я захочу добавить что-то крупное - мне придется придерживаться этих правил. Но они уродливы как и вся система (фанаты RAII бы плакали от всех этих инициализаций и регистраций)

- для поддержания GetSubsystem() там заведен сложный механизм из кучи классов - Context, Object, фабрик, некоего подобия RTTI.
А для поддержания любой реализации синглтона достаточно двух-трех строк кода. Так что это еще один аргумент в пользу - это позволит удалить лишнй код.
То есть на лицо упрощение кода - что всегда в плюс.

- удаление этих классов (Context, Object) уберет связность (вермишель) в коде. Так как сейчас многие классы зависят от многих из-за этой системы. Эта связность произошла как из-за требований этой системы, так и из-за лени разработчиков натыкавших этих GetSubsystem где ни попадя (ну зачем классу строки иметь доступ к логу?)

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

Так что не вижу причин оставлять GetSubsystem() только якобы из-за того что оно не влияет на производительность.

#113
12:52, 10 авг. 2018

war_zes
Какая главная цель переписывания урхи?

#114
(Правка: 14:07) 14:07, 10 авг. 2018

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


Относительно Floating Islands - немножко стормозил на концепте, но это скорее из-за очередного завала на работе - устаю. Скоро продолжу.

#115
15:33, 10 авг. 2018

war_zes
> таже что и ранее в написании движка - свой инструмент.
В таком случае все делаешь правильно)

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

> Относительно Floating Islands - немножко стормозил на концепте, но это скорее
> из-за очередного завала на работе - устаю.
Я тебе еще в 3м посте обращал внимание на моменты которые нужно исправить, чтоб проэкт не заглох.

#116
(Правка: 15:48) 15:47, 10 авг. 2018

emptiness_rain
> аже что и ранее в написании движка - свой инструмент.

1)орудие или техническое приспособление для выполнения специализированных задач по обеспечению взаимного расположения, движения, либо взаимодействия предметов
2)перен. логическая схема, теория или средство влияния для достижения определенный целей
3)эвф. половой член
4)устар. политический акт

в каком из понятий этого слова? цлелей и задач как я понимаю не стоит. даже в описании проЭкта (я буду делать чето такое, еще не знаю че, но вот чето типа этого наверно)
гоу лучше говноигры делать, так хоть скриншотики да видева можно покидать и поорать друг над другом
#117
16:09, 10 авг. 2018

Mira
> гоу лучше говноигры делать, так хоть скриншотики да видева можно покидать и
> поорать друг над другом
У меня уже в голове проскальзывала идея предложить варзесу кооперацию для создания платформера на конкурс про шашлыки)

#118
(Правка: 6:22) 6:22, 14 авг. 2018

По движку, приступил к замене GetSubsystem на синглтон.


По проекту... появилась одна мысль. можно сказать что послушал ваши советы (точнее они подпали под мое решение... а неважно). Буду делать клон одной игры в моем концепте летающих островов.
(скажу что оригинал - двухмерный и песочница, я его переделаю в 3D. В обоих случаях - острова)

#119
(Правка: 5:54) 5:53, 15 авг. 2018

Сегодня узнал интересную вещь

Короче, собрал один пример на своем форке в дебаге, запустил: 30 фпс.
Запустил этот пример собранный в оригинальном юрхо - 70 фпс.
чуток прифигел. с другими также.

Начал разбираться - почему у меня произошло падение фпс на 50%....

Выяснил: настройка в студии в формате отладочной информации как "База данных программы для операции "Изменить и продолжить" (/ZI)" снижает производительность на 50%. Достаточно было поставить База данных программы (/Zi) и усе.

Эх, вот бы все это про эти ключи где-то было внятно и подробно описано (до сих пор гадаю что лучше /MP или /GM)


p.s. 20 коммитов в движке

Страницы: 17 8 9 10114 Следующая »
ФлеймФорумПроЭкты