Веду блог о разработке ПО, науке и книгах: https://tiendil.org

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

Достижения

Все достижения (16)

Наибольший вклад в теги

Все теги (72)

Лучшие ответы пользователя

Все ответы (151)
  • Как найти удалённую практику для начинающего python программиста?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Присоединяйся к разработке the-tale.org

    Все исходники открыты: https://github.com/Tiendil/the-tale

    Берёшь задачу делаешь, делаешь пул-реквест, получаешь критику, пока всё правильно не будет сделано, и код попадает в рабочий проект.

    В вики на гитхабе рассказано подробнее.
    Ответ написан
    3 комментария
  • Каков C++ в геймдеве?

    Tiendil
    @Tiendil
    Разработчик ПО.
    >За последние три месяца мне удалось освоить Python
    не удалось

    >Разобрался с гит
    не разобрались

    >линуксом на уровне пользователя
    не разобрались

    >Lua
    не разобрались

    Для начала приземлитесь. За 3 месяца вы ни в чём из этого разобраться на хорошем уровне не могли.

    >Где писать игры для портфолио
    Это делать не обязательно. Это, конечно, плюс, но не такой существенный чтобы прямо быть обязательным.

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

    Определитесь чем конкретно хотите заниматься: физика, графика, логика, сеть, утилиты, etc и делайте что-то именно в этой области (демки, например).

    А так, чтобы попась в геймдев достаточно просто навыков программирования и хорошей теоретической базы (графы, математика), демки не обязательны.
    Ответ написан
    3 комментария
  • В чем преимущество динамически типизированных языков?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Преимущество у динамически типизированных языков, конечно, не в синтаксисе, а в семантике.

    Благодаря определению типов во время исполнения программы сильно облегчается метапрограммирование. Очень сильно облегчается. Оно, в свою очередь, упрощает всю остальную работу.

    Благодаря гибкости кода в рантайме (см. тот же duck typing) и интроспекции (анализ свойств объектов и кода) получается на порядок проще и быстрее писать универсальные алгоритмы и конструкции вроде декораторов, всяческих ORM и подобных вещей. Это сильно упрощает интерфейсы библиотек, что в совокупности ведёт к более простому коду и к плавной кривой обучения новичков.

    Из моей практики (5 лет писал на C++, потом столько же на Python, эти сроки немного пересекались) могу сказать, что с точки зрения ошибок типизации (а собственно их и ставят в недостаток динамически типизированным языкам) разница минимальна — они очень редки и все отлавливаются автоматическими тестами. Конечно, если у вас руки откуда надо растут, а если не откуда надо, то эти ошибки будут далеко не самой большой проблемой. Поэтому в области разработки софта, не требовательного к производительности, такие языки рулят.

    Преимущество же статически типизированных языков в том, что, налагая дополнительные ограничения на программиста и на гибкость кода, они позволяют компилятору получить дополнительную информацию о программе и сделать более специфичные операции. Однако нынче почти везде используют JIT и это частично нивелирует разницу в производительности.

    В итоге мы получаем классическую дилемму: повышение уровня абстракции против повышения уровня специализации. У каждого пути есть свои плюсы и минусы.

    По производительности питона ссылок уже накидали, но в любом случае тут надо исходить из требований конкретной задачи — проще взять и протестировать самому.
    Ответ написан
    Комментировать
  • Что делают программисты на Unity целый день на работе?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Обычно игровая логика (это к примеру):
    - управляемый персонаж
    - способность персонажем взаимодействовать с миром (предметами)
    - какие-то подвижные элементы в игре
    - АИ врагов и НПС
    - кнопки интерфейса, инвентарь.
    И всё... Так если ты умеешь уже это делать и ты "типо программист на Юнити", то ты напишешь всё это гораздо раньше, чем начнется твоя первая зарплата. А чё потом делать?

    Большинство программистов один элемент из этого списка качественно за месяц сделать не в состоянии.

    Собственно, это и ответ. Они делают всё перечисленное в списке (и ещё кучу всего), только значительно дольше, чем кажется неопытному человеку.

    P.S. для примера. Моей первой работой была вот эта игра: https://en.wikipedia.org/wiki/Order_of_War

    Первые задачи на ней были примерно такие:

    - реалистичный поворот башни танка, синхронизированный с логикой ~ 3 недели, дошло до того, что рисовал графики в excel, чтобы обосновать, почему именно такая визуализация правильная и почему нельзя сделать лучше.
    - интерфейс управления отрядами (чтобы формацию сохраняли, не перестраивались лишний раз, etc) ~ месяц.
    - оптимизация цикла обновления графики с двухпроходного на однопроходный ~ два дня :-D
    Ответ написан
    2 комментария
  • Как реализовать НЕ рентгеновское зрение "врагов" в игре?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Не нужно ничего вырезать.

    Берёте все ключевые точки в области видимости (врагов, друзей, лут, ещё что-то) и проверяете есть ли препятствия на линии между ними и ботом. Т.е. проверяете, пересекает ли линия какое-либо препятствие. Если пересекает, то бот точку не видит.
    Ответ написан
    2 комментария

Лучшие вопросы пользователя

Все вопросы (4)