• С чего начинается написание игрового сервера?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Вообще, написание любой штуки начинается с ТЗ, а потом уже становится куда яснее что и как делать дальше.

    Сервера для Mu и Lineage пишут командой из довольно большого количества человек.

    >везде только ссылки на готовые.
    Скачайте и почитайте. Как поймёте устройство какого-нибудь готового сервера, станет ясно куда копать дальше.
    Ответ написан
    2 комментария
  • Есть ли алгоритм тестирования лабиринта на отсутствие замкнутых пространств?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Можно искать количество компонент связанности, начать разбираться можно отсюда: https://ru.wikipedia.org/wiki/Связный_граф
    Ответ написан
    Комментировать
  • С чего начать программисту-разработчику игр?

    Tiendil
    @Tiendil
    Разработчик ПО.
    >узкую специальность "Разработчика игр"
    Это ни разу не узкая специальность. Уже давно один человек не может быть прошарен во всех её аспектах. Лучше уточните чего конкретно хотите в качестве итога обучения.

    >с чего же начать?
    С написания игры, любой: хоть теттриса хоть next-get MMO. Ничего не получится, но появится отправная точнка и базовое понимание чего вообще происходит.
    Ответ написан
    Комментировать
  • Несколько вкладок в браузерной игре?

    Tiendil
    @Tiendil
    Разработчик ПО.
    >Что делать, если пользователь зашел в браузерную игру с двух разных вкладок?
    Это небольшая мелкая проблема. Можно и с двух браузеров зайти, а можно и бота написать, который 1000 сессий создаст.

    Всё зависит от доступных ресурсов и геймдизайна.

    В идеале игрок не должен получать выгоды от твинков, но это не всегда возможно.
    В противном случае можно следить за параметрами соединения и свойствами машинки (ip, тип браузера, ось и так далее), при совпадении банить. Против ботов - собирать статистику поведения игроков и банить сильно отклоняющихся от среднего.
    В общем же случае проблема нерешаема.
    Ответ написан
    4 комментария
  • Как описать просчёт столкновений на сервере?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Колизии на сервере считаются так же, как и на клиенте. Только на сервере.
    Ответ написан
    Комментировать
  • Мультиплеерная браузерная игра- исходники?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Если вы хотите запустить игру с таким подходом - не запускайте. Только потратите время и деньги.
    Ответ написан
    Комментировать
  • Как организована многопоточность в играх жанра RTS?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Два потока: графика и логика.

    Логика пошаговая с шагом 0.1-0.2 секунды, в зависимости от потребностей. Пошаговость означает, что реальное время в ней не учитывается, игра идёт по ходам: 1, 2, 3, 4...

    Логика шлёт в графику команды, которые управляют отображением. Например, если юнит сдвинулся на X метров, то логика шлёт команду в графику: "сдвинуть юнит на X метров за время 0.1 секунды". Команда выполняется на каждой перерисовке и постепенно сдвигает спрайт/модельку юнита в нужную позицию (при 60 FPS он будет сдвинут за 6 перерисовок, каждый раз на x/6 метров). Одновременно отображение юнита может изменяться несколькими командами, например, одна перемещает танк, а другая вращает его башню.

    Поток может быть и один, но принци тот же остаётся. Так в большинстве AAA игр делается, в частности, в Order of War.
    Ответ написан
    Комментировать
  • Как сделать деплой проекта на python с github на vps?

    Tiendil
    @Tiendil
    Разработчик ПО.
    1. Не надо так делать, не каждый пуш в мастер может требовать релиза, в конце концов он и по ошибке может быть сделан.
    2. Можно оформить проект в стандартный питоновский пакет и ставить pip-ом прямо из гитхаба. Примерно так:
    pip install --upgrade -e git+https://github.com/Tiendil/dext.git@v0.2.0#egg=Dext

    3. Что бы не лазать каждй раз на прод, можно написать деплой скрипт, который будет все нужные вещи останавливать/запускать, ставить пакеты и так далее. Например, с помощью www.fabfile.org
    Ответ написан
    Комментировать
  • Какую python3-библиотеку для работы с github api Вы посоветуете?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Подозреваю, все эти библиотеки хостятся на гитхабе. Посмотрите размер сообщества (по звёздочкам, форкам). У какой больше, ту и берите.
    Ответ написан
    Комментировать
  • Функциональное приведение типов?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Вот пары эквивалентных примеров
    // Что то вроде 0.3333333
    std::cout<< (double) 1 / 3 ; 
    std::cout<< double(1) / 3 ;


    std::cout<< double (1 / 3) ; 
    std::cout<< (double) (1 / 3) ;
    Ответ написан
    Комментировать
  • Какие записи актуальны для дев блога?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Хорошие темы для блога:

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

    Tiendil
    @Tiendil
    Разработчик ПО.
    Проще всего устроиться джуниору с мозгом, всё остальное вторично.
    Ответ написан
    Комментировать
  • Два вопроса. Как правильно заказать игру?

    Tiendil
    @Tiendil
    Разработчик ПО.
    1) Нужно найти толкового геймдизайнера или бизнес-аналитика с опытом в геймдеве, дать ему денег, сесть с ним и сформировать документ на пару страниц под названием "концепт-документ". Это краткое (очень краткое) описание игры (подробнее можно погуглить, но Ваш партнёр должен будет знать что это). В процессе работы над документом, у Вас решится множество вопросов и появится множество новых. После этого уже можно думать что делать дальше.

    2) Идеям грош цена, у каждого толкового разработчика своих валом, поэтому никто ничего красть не будет. Таких прецедентов до сих пор не было.
    Ответ написан
    Комментировать
  • Так у чего производительность выше и вероятность успешного завершения проекта у node.js или Python?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Главный фактор, влияющий на все Ваши вопросы — опыт команды «вообще» и с конкретной технологией в частности.

    Если у команды есть несколько лет опыта с технологией Х и нет опыта с У, то первые год-два при работе с У будет значительно больше сложностей. Поэтому выбирать следует исходя сугубо из особенностей команды.

    С точки зрения Python vs Node могу только сказать, что, на мой взгляд, средний программист на Python грамотнее среднего программиста на Node, поскольку среди последних много фронтэндщиков, которые с серверами работали мало.

    Ничего более конкретного на свормулированный таким образом вопрос ответить скорее всего нельзя.
    Ответ написан
    2 комментария
  • Где найти Open Sourse проекты?

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

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

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

    В вики на гитхабе рассказано подробнее.
    Ответ написан
    Комментировать
  • Несколько баз данных в Django. Реально ли?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Ни одна база так не умеет, это нарушает саму концепцию БД.

    Идеологически верная архитектура:

    - N отдельных магазинов, хранящих свои внутренние данные в своих базах.
    - 1 общий сервис (с отдельной базой), который управляет общими данными и в который другие обращаются по необходимости.
    Ответ написан
    Комментировать
  • Как реализовать НЕ рентгеновское зрение "врагов" в игре?

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

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

    Tiendil
    @Tiendil
    Разработчик ПО.
    БольшАя часть цивилизации 4 написана на питоне.
    БОльшая часть WoT написана на питоне.

    Так что вполне возможно. Наверняка есть биндинги для популярных графических библиотек/движков.
    Ответ написан
    Комментировать
  • Как сделать глобальный Enum в Python 2.7?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Посмотрите эту библиотеку: https://pypi.python.org/pypi?name=Rels&version=0.2...
    Ответ написан
    Комментировать
  • В чем преимущество динамически типизированных языков?

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

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

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

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

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

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

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