Задать вопрос
  • Хочу работать программистом в gamedev?

    dabiankolins1 , ты можешь заглянуть ко мне в профиль и сам все посмотреть.
    Программист - понятие в руках обывателя не имеющее границ. У тебя в вопросе конкретики нет, это уже сильно режет твои шансы на успех.

    Конкретика - это:
    • твой возраст;
    • твое текущее образование;
    • город твоего текущего проживания;
    • твоя готовность к релокации без гарантии устройства на работу;
    • область геймдева, в которой тебе хотелось бы работать (социальные игры, казуальные, мобильные, дектопные, под PS/XBOX, ММО индустрия, AAA-проекты и.т.д.);
    • уровень твоих текущих навыков в области разработки;
    • наличие/отсутствие участия в коммерческой разработке;
    • какие технологии ты изучил;
    • какие технологии ты изучил за последние полгода, почему (с техническим обоснованием) именно эти;
    • какие у тебя планы по личному росту на следующие полгода;
    • в какой области разработки ты хотел бы работать (бизнес логика, системный уровень, сетевые технологии, физика, ИИ, рендеринг, хранение днных, ...);
    • твои личные проекты за последние полгода;
    • твое участие в Open Source проектах, где можно посмотреть твой вклад и проследить историю твоей активности;
    • любая дополнительная и ценная информация о тебе как о специалисте.


    И, конечно же, еще есть многократно размещенная на тостере ссылка на роадмапу игрового разработчика:
    https://github.com/miloyip/game-programmer
  • Есть ли возможность реализовать алгоритм поиска кратчайшего пути для большого числа вершин графа с минимальным временем работы?

    WTFAYD , при 60FPS на один кадр отводится всего 16мсек. Ты точно уверен что ~20мсек на поиск пути будет приемлемо?
    Для чего на каждом кадре искать путь?
  • Есть ли возможность реализовать алгоритм поиска кратчайшего пути для большого числа вершин графа с минимальным временем работы?

    WTFAYD , так у тебя все таки граф или равномерная сетка?

    Дай численные характеристики. Дай ширину и высоту поля (хотя-бы "от" и "до"). Дай время работы алгоритма Ли и A* на конкретном поле конкретных размеров.
    Объясни свою реализацию A*.
    Узлы в твоей сетке/графе одноранговые?
  • Как понимать фабричный класс в классе фабричный метод??

    artshelom , да, книжки могу посоветовать.
    Мартин Фаулер, "Рефакторинг" (сайт книги) - наверное это самый частый источник эффекта Даннинга-Крюгра у джуниоров.
    Роберт Мартин, "Чистый код. Создание, анализ и рефакторинг". Просто берем и читаем.
    Марк Гранд, "Шаблоны проектирования в Java". Это очень полезный источник информации о довольно распространенных инструментах в среде Java, которая до сих пор занимает важное место в интерпрайз разработке.
    The Gang Of Four! Или просто GoF, "Приемы объектно-ориентированного проектирования. П...". Это очень серьезный академический труд, который каждому инженеру важно изучить во всех деталях.

    И, без сомнения, книга, которую я посоветую читать в первую очередь.
    Дастин Боссуэлл, "Читаемый код, или Программирование как искусство". Книга изобилует примерами на C++, но не относится к области плюсов. Книгу важно изучить буквально всем людям, чье понимание написания кода еще не сформировалось. И тем более ее важно прочитать тем, чье понимание уже сформировано, для коррекции понимания.

    Попробуй еще поизучать такой сайтец.

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

    artshelom , сайт ты себе выбрал прям таки как эталон обучающей системы. 30 слов в предложении и ничего не понятно. Потрясающее умение!
    Описание в "назначении" шаблона фабрики на этом сайте не описывает ничего. Особенно фабрику.
    Более того, примеры бестолковые. Они поясняют только то, как не надо использовать порождающие шаблоны. Вот как там в примерах показано, так и не надо делать.

    Можно всю программу зафигачить в одной функции и при этом единственная функция будет выполнять все требующееся от программы. Зачем нам вообще эти шаблоны дались?
    В тот момент, когда тебе потребуется расширить функциональность уже долгое время стабильно работающего кода (~2MB текста), с каким кодом тебе будет удобнее работать? С кодом, в котором все свалено в одну большую кучу и который надо переписывать целиком при каждой доработке? Или с кодом, в котором есть элементы абстракции, работающие как точки возможного расширения функционала, и где для расширения функциональности достаточно просто внедрить новые элементы конкретики для абстракции?

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

    Момент первый. Фабричный метод производит объекты только одного конкретного типа в безусловном режиме. Фабричный метод нужен как абстракция над процессом создания объекта.
    Все фабричные методы для одного семейства классов всегда имеют единую сигнатуру и всегда могут использоваться без знания конкретных классов семейства.
    Часто, почти всегда, конкретный фабричный метод семейства выполняется как статическая функция конкретного класса этого семейства.
    Ключевым моментом фабричного метода является то, что для любого семейства классов, для которых созданы фабричные методы, имея на руках набор аргументов и абстрактный фабричный метод, вызвав метод с передачей аргументов ты получишь объект с общим интерфейсом этого семейства.

    Момент второй. Абстрактная фабрика - это просто агрегатор фабричных методов. Абстрактная фабрика связывает конкретный фабричный метод с неким состоянием конструкции, которое часто выражается в виде еще одного параметра.
    Абстрактная фабрика - это буквально ассоциативный массив из состояние => фабричный метод. Само собой понятно что это объект некоторого класса, а не сам класс. Это важно понимать.
    Т.к. сигнатуры всех фабричных методов в рамках одного семейства одинаковы, абстрактная фабрика легко складывает их в ассоциацию. Саму же ассоциацию устанавливает только сам программист, регистрируя фабричные методы в фабрике и ассоциируя их с неким состоянием.

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

    artshelom
    если можно избавившись от класса просто тоже самое написать в методе?

    Что именно "тоже самое" можно написать и в каком "методе"?
  • Как победить ошибку CL.exe exited with code -1073741515?

    @MarkusD Куратор тега C++
    John Doe
    #include "stdafx.h"
    Для чего в твоем коде присутствует этот заголовок?
  • Почему идентификатор не найден?

    @MarkusD Куратор тега C++
    Станислав Макаров , в D3D нет ничего поразительного :)
    К тому же у него тут D3D9, а им крайне просто овладеть. Это не 12я версия, которой надо уметь управлять.
    D3D - это просто еще один набор API. :)
  • Разрешено ли использовать C функции в C++?

    @MarkusD Куратор тега C++
    NikitkOS , задавая подобный вопрос, хорошим тоном будет привести примеры.
    Без подробного примера вряд ли получится получить подробный ответ.

    Ты сейчас написал про _s-вариант функции, а что это за функция? На какой оси ты работаешь и под какие оси ведешь разработку? Какие у тебя компилятор и среда разработки?
    И самое главное - что ты понимаешь под "функциями из C"?
  • Какой рейтинг (codeforces) у вебмастеров и разработчиков ААА игр?

    @MarkusD Куратор тега C++
    Более того, термин "AAA" по своей сути ничего общего с непосредственной разработкой не имеет.
    Термин отражает только размеры бюджетов и масштабы рекламных компаний.
  • Какой рейтинг (codeforces) у вебмастеров и разработчиков ААА игр?

    @MarkusD Куратор тега C++
    Артем Артеага , я разработчик ААА игр и не только. Рейтингов никаких не имею.

    У тебя теплое с мягким спутано. Обозначенный codeforces своим рейтингом не показывает ничего, кроме относительного значения на интегральной шкале, отдаленно отражающего скорость затыкания конкретных типовых дыр конкретным человеком.
    С реальным миром разработки это не имеет ничего общего. С реальным миром разработки игр, любых, это имеет еще меньше общего.
  • Какой ноутбук выбрать для UE4 (не требовательные проекты)?

    GavriKos , да, требования у меня высокие, на качестве инструмента я не экономлю и никому не советую. :)
    У ноута слишком много векторов увеличения цены. Туда включаются не только память, камень и экран, но и вес, объем заряда, удобство замены АКБ, скорость зарядки от сети, шумность в простое, номинальной/крейсерской нагрузке и в режиме пиковой нагрузки, внешний вид и еще куча тонких моментов. Покупая мобильный ПК, ты прежде всего покупаешь мобильность и эргономику. И внешний вид.

    Зачем мы покупаем мобильный ПК с временем работы от батареи не больше 2-4 часов? Или с экраном 15" при весе 3-4кг без оснащения (и 5кг в оснастке)? Зачем покупать ноут, когда он 100% своего времени будет стоять на одном единственном месте - в комнате школьника, на его столе.
    Поэтому я и попросил обоснование выбора именно мобильного ПК, а не стационарного.
  • Какой ноутбук выбрать для UE4 (не требовательные проекты)?

    Никита Вотинов , если хочешь - воспринимай это как троллинг. Но я скажу открыто и прямо.
    До 100к в сегменте ноутбуков нормальных нет. Все что ниже - это разного рода пафосности приложения к широкой тёте бухгалтерше.
    Подведи рациональный фундамент под необходимость приобретения именно мобильного ПК. За 35к можно собрать очень годный стационарный ПК.
  • Требуется ли Object(std::wstring&&) с точки зрения оптимизации?

    @MarkusD Куратор тега C++
    Mercury13 , а давай подумаем над тем, чем временный объект отличается от "невременного"?
    Кстати, а как обосновывает свое предложение сам кланг?
  • Зачем в коде ниже * и скобки? | C++?

    @MarkusD Куратор тега C++
    Zadavatel_Voprosov
    А, что даёт *(float*)?

    Это приведение типа с разыменованием. Любой сырой адрес рассматривается как void*, а чтобы начать с ним работать, его нужно привести, минимум, к адресу на переменную конкретного типа.
    И это не объявление переменной, это просто приведение типа.

    Конструкция (float*) из void* сделает float*, а звезда слева - это разыменование указателя, в результате которого получается float&. После этой легкой операции с памятью по адресу можно работать как с переменной типа float.

    Теперь стало понятнее?
  • Удаление двухмерного std::vector?

    @MarkusD Куратор тега C++
    Neonoviiwolf , тыб для начала код показал бы, чтобы понять, что именно ты с бедным вектором делаешь и зачем его удалять надо.
    Ну и, до кучи, еще было бы очень интересно узнать, какой именно инфы в гугле полно и чем она разнится.
  • Как сделать кросс платформенную библиотеку, не зависимую от Qt, но что бы там была графическая составляющая?

    @MarkusD Куратор тега C++
    Артем Филимонов
    И как в данном случае должна выглядеть разметка?

    Какая разметка?

    И да, плагины обычно используют в своей работе интерфейсы основной программы.
  • Что такое бизнес логика android приложения?

    Иван Теодорович , вот тебе встречный вопрос для размышлений.
    А какие еще "логики" бывают кроме этой "бизнес" логики?
    Над этим вопросом надо хорошо подумать про себя и совсем не обязательно отвечать на него вслух. Ответ, возможно, даст тебе границы понимания, где кончается ответственность одного компонента и начинается ответственность другого.
  • Зачем std::forward иметь две сигнатуры и явно указывать тип?

    @MarkusD Куратор тега C++
    И вот r-value на этот самый type и используется для инстанцирования вызовов с переданным к-value значением, а версия с l-value ссылкой на этот type используется для инстанцирования с l-value значением.

    Это не так. std::remove_reference применяется только к параметру std::forward и нужен для реализации одного конкретного случая. Тип результата у std::forward все так же выводится с помощью reference collapse rule.

    https://github.com/llvm-mirror/libcxx/blob/master/...
  • Зачем std::forward иметь две сигнатуры и явно указывать тип?

    @MarkusD Куратор тега C++
    Max Goncharenko , а ты вот эту статью читал?
    Пересказывать содержимое статьи в ответ на твой вопрос не будет хорошим решением.