All streams
Search
Write a publication
Pull to refresh
510
340.5
Sergei Kushnirenko @dalerank

Люблю (ш)кодить, алгоритмы и старые авто.

Send message

там есть боевка (Pharaoh) - форты, отряды, враги. Но я только начал её восстанавливать в Akhenaten, в оригинальной игре была возможность выбирать "мирную" или "опасную" миссию, мирные даже интереснее в чем-то были. В Зевсе боевка очень простая и случайная, можно было засейвскамить часто, ну и баги - частый баг, когда враги умирали после загрузки уровня и только одном построенном храме Зевсу, похоже какая-то ветка условий включалась

если objPtrs не уходит дальше локального стека, зачем вы делаете его через вектор?

Так а нет общих рецептов - в какой-то момент (условно раз в неделю) открываем профайлер Pix, Tracy или Razor и смотрим сколько у нас аллокаций на кадре. Видим что их меньше условно 500, прикидываем худшее время на нашем железе, понимаем что все это занимает милисекунду или меньше, пробегаемся по явным местам которые можно убрать за час, если таких нет - то идем пилить таски. Практика показывает, что если старый код нельзя починить за час и он не очень сильно мешает, то чинить его будет дорого. На кодревью просим коллег не писать новые потенциально проблемные места или предоставить серьезную причину, что аллокация здесь нужна. Советовать пуЛ, аллокатор, статический массив и другие способы починить проблемное место надо понимания что вы хотите там получить. Примеры и сцена - подключитесь к проекту 0AD, какое-то время назад я наблюдал там очень печальную картину с выделением памяти, вот вам и примеры и поле для фиксов и реальный опыт. И, извините, я не очень понял этот вопрос, если это был вопрос.

А тут аишка не помогает? Как раз её область деятельности на 99%, разобрать запрос и сделать его понятным.

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

почему поток, если текстуры 4к(свет/тени/нормали) то мапы на них и внутрянка плюс выбор граф.

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

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

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

вы слишком категоричны в своих высказываниях, но доля правды есть :)

Есть специальный вид аллокаторов которые возвращают дескрипторы, а не указатели

Выводить в ноль аллокации слишком дорого, да и нет смысла в zero allocation rule. Всему есть своя цена, и в определенный момент время разработчика становится дороже того профита что мы получаем.

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

Ага, и я боюсь с приходом НС разумных станет еще меньше.

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

template<typename Missile>
struct ProjectileBase  {
    void move() {
        auto missile = static_cast<Missile*>(this);
        // рассчитываем перемещение по траектории
    }
};

struct SimpleArrow : ProjectileBase<SimpleArrow>;
struct FireStone : ProjectileBase<FireStone>;

Например так, "исторически" стрелы и ядра были сделаны разными объектами и общего класса у них не было, оба класса использовали копипасту логики перемещения, немного различались при столкновениях. Лежат они в разных массивах

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

неа, размер варинта всегла равен максимальному размеру из вариантов + мета (индекс, выравнивание, хеш), память всегда внутри самого варианта, реализация стандартизирована комитетом.
any - внутри хранится: указатель на объект + type_info. память в куче, кроме случаев с мелкой оптимизацией (SBO), реализация не стандартизирована комитетом и зависит от вендора. Или я не так вопрос понял?

КДПВ как бы намекает про что речь, извините, что не пишу название прямо - наши лигалы зарезали упоминания в статье
ссылка тут
https://steamdb.info/app/813780/charts/

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

Information

Rating
5-th
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Software Developer, Game Developer
Senior
From 300,000 ₽
Git
C++
Multiple thread
Applied math
OOP