• Какая лучше ОС для игрового сервера?

    Tiendil
    @Tiendil
    Разработчик ПО.
    >нет опыта защиты от инъекций и брутфорса.
    От этого должна быть защита на уровне приложения, а не в ОС.

    >На какой лучше ОС Linux лучше поднимать игровой сервер (производительность и т.д.)?
    На той, которую лучше знает команда, у которой есть подходящий LTS релиз, подходящие родные сборки софта, поддержка у хостера и так далее.

    Производительность от железа в первую очередь зависит (правильно настроить можно любую из популярных ОС).

    То есть без учёта вашего специфичного контекста ОС отличаются только названиями.
    Ответ написан
    Комментировать
  • Имеет ли смысл писать игры вроде terraria,crypt of the necrodancer и т.д. на python(pygame)?

    Tiendil
    @Tiendil
    Разработчик ПО.
    terraria,crypt of the necrodancer

    Это очень разные технически игры. Crypt of the necrodancer вполне можно полностью на питоне делать.

    С Террарией могут быть проблемы с производительностью из-за механик (сложная модель мира, много обсчитывать). Может потребоваться переписать логику на чём-то более производительном (на плюсах, например). Но рабочий прототип на чистом питоне можно будет сделать.

    Тут правильно советуют готовые движки, у Python с ними не очень хорошо. Можно попробовать Godot, он позволяет использовать Python для описания логики. Или Kivy - движок не игровой, но для некоторых игр сгодится.

    Обычно Python используют как язык высокоуровневой логики. А для графония, сети и прочего используют готовые движки на чём-нибудь более быстром.
    Ответ написан
    Комментировать
  • Разработка игр, как выбрать язык и движок?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Движок — это инструмент. А значит он обладает всем общими для инструментов свойствами. Например, все отвёртки во много одинаковы, все молотки похожи (хотя киянка и отличается от кувалды). Не так важно какой первый движок будет, потому что надо знать парочку.

    ЯП — тоже инструмент. Для него справедливы те же рассуждения. Но, поскольку ЯП — более базовая штука, его изучение больше зависит от контекста и планов на будущее, особенно ближайшее.

    Если хочется начать быстро делать что-то законченное и зарабатывать какие-нибудь деньги этим, то C# + Unity выглядит лучше — они проще.

    Если хочется стать реальным профи и есть время на учёбу, то C++ будет более правильным выбором. Плюсы, при нормальном изучении, дают на много больше знаний о программировании в целом и о том, как программы работают. Человек, осиливший C++, на мой взгляд, осилит любой другой ЯП довольно быстро (за исключением Haskel, пожалуй :-) ). Обратное же неверно. Но времени на них надо куда больше.

    С другой стороны, учить всё равно можно в разном порядке. Смотрите по своим жизненным приоритетам и наличию работы в той области, где вы живёте.
    Ответ написан
    1 комментарий
  • Помогитре разработать алгоритм или какую взять библиотеку для визуализации графа?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Стандартное решение для статических графов: https://www.graphviz.org/ возможно, из этой библиотеки можно взять код или логику для динамики.

    Если самому писать, по поиск логики можно начать отсюда: alenacpp.blogspot.com/2006/03/blog-post_23.html

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

    Также рекомендую погуглить про топологическую сортировку.
    Ответ написан
  • Что лучше - сессии или кэш?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Без более точной инфы по данным в сессии и профилю нагрузки сказать сложно.

    Нужно смотреть что дороже вам выйдет:

    - если серверные ресурсы дорого обходятся, то храним данные в сессии
    - если большой объём данных в сессии негативно скажется на трафике пользователей, то делаем кэш.

    >сессию можно своровать
    Своровать саму сессию можно и кэш тут не поможет (своруют айдишних). Два соображения по этому данных:

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

    Tiendil
    @Tiendil
    Разработчик ПО.
    Возможно, но есть некоторые сложности.

    1. ААА разрабатывают командами от 50-100 человек, так что в одиночку в любом случае будет очень долго. Скорее всего даже не сможете успевать за технологиями, чтобы соответствовать ААА :-D
    2. Новые движки и либы почти (или уже совсем?) не пишутся на чистом С (может, разве что, в консолях каких он остался). Поэтому придётся линковаться с либами на С++, это может вызвать некоторые затруднения.
    3. Для ААА придётся писать и набор всяких утилит (редакторов и прочего), на С. А GUI на нём уже давно не пишут.

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

    к С++ и С# не расположен

    Смиритесь с тем, что сейчас недостаточно знать 1 язык. Чтобы сделать что-то серьёзное и большое, по-любому придётся писать на нескольких ЯП.
    Ответ написан
    Комментировать
  • Как обезопасить проект с полностью раздельным фронтендом и бекендом?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Тут две задачи стоит:

    - обезопасить общение между клиентом и фронтендом
    - обезопасить общение между фронтендом и бэкендом

    Первое делается известными методами, я думаю их перечислять не надо.

    Второе можно делать по-разному:

    - можно организовать закрытую сеть между всеми серверами (варианты разные: от vpn, до физически отдельной сетки).
    - можно делать https соединения, проверяя сертификаты друг друга
    - можно подписывать сообщения, например с помощью https://en.wikipedia.org/wiki/HMAC

    Можно даже всё вместе сделать - зависит от уровня паранойи.

    Передавать креды пользователя в открытом виде, само собой, нельзя. Нужно обезопасить само соединение (например, https использовать) или сами креды (шифровать ключом, известным только фронтенду и бекенду).
    Ответ написан
    6 комментариев
  • Что делают программисты на Unity целый день на работе?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Tiendil
    @Tiendil
    Разработчик ПО.
    В принципе браузеры уже должны тянуть уровень графики, как на скриншоте. Так что для клиентской части можно оставить HTML+CSS+JS. Тем более графических движков для JS уже хватает.

    Для сервера не уверен, что подойдёт PHP, он может оказаться неудобным (не знаю как у него с поддержкой websockets, а они нужны, поскольку полностью stateless архитектурой тут можно не обойтись, опять таки, судя по скринам).

    Как альтернативу серверной чати рекомендую Python. Или Go, но для хобби и экспериментов больше подойдёт Python, так как более гибкий.

    P.S. Если не хочется учить новые ЯП, а писать игры, то для сервера берите Node.js. Но лично мне он не нравится по идеалогическим причинам :-)
    Ответ написан
    Комментировать
  • Как лучше реализовать обновление координат игроков в игре?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Если это игра в реальном времени, то делается отдельный "рабочий" демон, который обсчитывает логику матча и хранит всё прямо у себя в памяти. Игроки взаимодействуют с ним напрямую (обычно устанавливается постоянное соединение, но можно и по http опрашивать для начала). После завершения матчка изменённые данные скидываются в базу.

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

    Tiendil
    @Tiendil
    Разработчик ПО.
    Это вопрос тут раз в месяц появляется.

    Сервера WoT на Python с большего, видимо можно.
    Ответ написан
    Комментировать
  • Что учить параллельно с++?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Изучи локальный рынок, если он маленький, то надо в первую очередь из него исходить.

    А так можешь C# пробовать, он и в геймдеве пригодиться, и вне геймдева используется.
    Ответ написан
    1 комментарий
  • Как выбрать актуальный путь в Game Dev'e?

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

    Нигде. Геймдев никогда не был прибыльным для большинства участников. Прежде чем лезть в него это надо осознать. Большинство прогорает, везунчики выходят в ноль. Те кто смог выйти в ноль 2-3 раза, начинают зарабатывать деньги с помощью полученного опыта.

    PC+Steam и браузер + HTML5 - очень разные платформы по монетизации и циклам разработки. Крайне разные. Если упрощённо, то браузерные HTML5 - это конвеер, берущий массовостью выпускаемых игр, Steam - это штучное производство оригинального продукта.

    >где реальнее получить первые деньги и заработать?
    С первого продукта нигде. Со второго скорее всего тоже. В этом плане HTML выглядит лучше, потому что путь в пару продуктов можно пройти за полгода-год, а в стиме за 2-3 года.

    Но доход с HTML игр будет маленьким, нужно будет набирать пул проектов, который со временем начнём приносить какую-то существенную сумму. Поищите рассказы флешеров, их довольно много можно нагуглить.
    Ответ написан
    Комментировать
  • А где есть данные по заработку инди-проектов?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Вот статистика моей браузерки: the-tale.org/statistics

    Доходы указаны в игровой валюте, но она легко переводится в реальную.

    Небольшой рассказ про доходы: https://dev.by/lenta/main/nemnogo-o-reklame-i-mone...
    Ответ написан
    Комментировать
  • Разгрузка сервера?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Используйте https://en.wikipedia.org/wiki/Content_delivery_network и не парьтесь чёрной магией.

    Например можно амазоновскую взять: docs.aws.amazon.com/AmazonCloudFront/latest/Develo...
    Ответ написан
  • Какие книги по разработке игр стоит прочитать?

    Tiendil
    @Tiendil
    Разработчик ПО.
    «Компьютерные игры — как это делается» — интервью с «отцами» о разных аспектах разработки игр. Книга старая, но всё ещё актуальна, содержит огромное количество отсылок к реальному опыту.

    https://www.ozon.ru/context/detail/id/111274/
    Ответ написан
  • Какую платёжную систему выбрать для игры, охватывающую весь мир?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Потому что не надо вести дела как физическое лицо. Систематическое получение прибыли — это предпринимательство, неоформление как юр. лицо наказуемо.

    С ИП у XSolla хорошие условия и вообще компания — няшка. Нормальное API, хорошая поддержка, всегда идут на встречу.

    Учитывая формулировку вопроса, задумываться о размере комиссии вам рано. Денег не будет, если же они вдруг появятся, то наймёте человека и он сделает всё как должно.
    Ответ написан
  • Лучшие gamedev блоги?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Просмотрел свои rss и вижу что большинство блогов, на которые был подписан, мертвы. Я даже не знаю что рекомендовать, чтобы треша много не было.

    Вот список живых и полуживых бложиков (правда они больше не про новости):

    - вот тут круто: https://engineering.riotgames.com/
    - https://www.reddit.com/r/gameai/
    - https://www.deconstructoroffun.com/blog
    - www.fantasticmaps.com
    - blog.ihobo.com
    - www.lostgarden.com
    - projectperko.blogspot.com.by
    Ответ написан
    Комментировать
  • Стоит ли заранее заботится о возможности поддержки предыдущих версий многопользовательской мобильной онлайн игры? И как?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Вопрос можно разделить на два:

    - как обновлять протокол взаимодействия?
    - как обновлять логику игры?

    С протоколом всё просто. Есть много вариантов, я предпочитаю такой подход:

    - Для каждого метода API вводится версия, которую явно указывает клиент.
    - Может поддерживается несколько версий одного метода.
    - Есть деструктивные изменения API (увеличивают версию) и недеструктивные (не увеличивают версию).
    - Недеструктивные - это добавление новых параметров в ответ или опциональных в запрос, без изменения логики реакции сервера на получение старых параметров.
    - Деструктивные: удаление, переименование, изменение семантики или формата данных в ответе, изменение логики реакции сервера.
    - Когда надо сделать деструктивное изменение, старый метод оставляется в поддержке, пока все клиенты (или нужный их процент) не обновится.

    С логикой сложнее. Но тоже есть варианты:

    - Самый простой - принудительное обновление. Выкатили новый сервер, все должны обновить клиент. Наиболее просто в поддержке, если не делается топовый продукт, то лучше так и поступать - сэкономит огромное количество ресурсов. Но сесть нюансы, например, сложно добиться одновременного выхода мобильных клиентов на разных платформах (Google Play, App Store) из-за особенностей ревью, договорённостей по фичерингам, etc.
    - Запускать несколько версий сервера: старую и новую. Если игрок обновил клиент и поиграл на новой версии, старым клиентом он уже не подключится. Тут надо грамотно распределять клиентов по серверам и озаботиться непересечением разных версий игры. Например, нельзя чтобы клиенты с разными версиями играли совместно (PvP, турниры, etc).
    Ответ написан
    Комментировать