Ответы пользователя по тегу Разработка игр
  • Что выбрать С++ или С# для разбработки android/PC игр?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Заинтересовался

    C#
    Ответ написан
    Комментировать
  • Можно ли не создавать в Unreal Engine кат. сцену, а импортировать отрендереное видео из Blender?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Конечно, можно.
    Попробуйте погуглить что-то типа такого: "play a video file unreal engine".

    Вообще-то кат-сцена - это по сути и есть видео. Точнее, способ реализации не важен, в обоих случаях это будет называться "кат-сцена" (от слова cut, то есть то, что можно вырезать, и от игры не убудет). Суть её в том, что игрок практически не взаимодействует с игрой.
    Ответ написан
    Комментировать
  • Решил переводить игру amazing cultivator simulator. Проблемы с переносом слов. В чём может быть проблема? И можно ли решить?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Видимо, проблема в том, что код игры считает за слова только [a-zA-Z]+, а русские символы считает промежуточными наравне с пробельными.
    Ответ написан
  • Computer Science и Gamedev?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Главное, помни, что создавать игры и играть в них - не одно и то же. Если в игровом проекте ты программист, значит всё время будешь работать с кодом - это работа, а не развлечение. Если геймдизайнер - будешь постоянно работать с документацией, с эксель таблицами. И так далее. Нет никакого особого фана неделю пилить уровень, который простой игрок должен пройти за час.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    А с чего вы взяли, что ускорение зависит от положения турели?

    Ведь AddForce добавляет ускорения в мировых координатах, независимо от поворота родительских объектов. В этом и ошибка.
    Ответ написан
    3 комментария
  • Как оптимизировать пинг в мультилпеере?

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

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

    А если это шутер, то "блокировать" игру - не вариант, игроку необходимо оставить возможность двигаться своим персонажем и совершать действия, а серверу - задним числом засчитывать какие-то действия или отменять слишком смелые/резкие действия (откатывать к более "честному" состоянию). Ещё можно идти на компромиссы всякие, когда у разных игроков отображается чуточку разное состояние, но плюс-минус по сути одно и то же (по смыслу), а 1 шаг влево-вправо не считается.

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

    В общем, так или иначе это какие-то уступки, допущения, округления, предположения (предсказания траектории движения объекта), ограничения и т.д.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Таков провайдер.

    А по локальному ip подключается?
    А просто пингануть друг друга получается?
    Ответ написан
  • Как задать Lua ввод от пользователя?

    dollar
    @dollar Куратор тега Lua
    Делай добро и бросай его в воду.
    Lua - встраиваемый язык.

    Поэтому нужно смотреть не на сам Lua, а на API, которое ему предоставляет внешняя среда - Coregames, а также на компоненты, которые там присутствуют и которые можно использовать. Эта среда и определяет, как будет выглядеть окно ввода, сколько там будет кнопок, какая функция Lua отвечает за ввод и т.д. Внутренние функции языка Lua могут быть изменены или вообще удалены, в зависимости от способа встраивания, защиты и т.д. Очень часто отключают библиотеки io и os, чтобы ограничить взаимодействия с системой и повысить безопасность.

    Документация по Coregames находится здесь: docs.coregames.com

    Вполне может быть такое, что Coregames вообще никак не предполагает ввод строки пользователем. Тогда придётся делать своё решение. А именно, нарисовать поле ввода, считывать отдельные клавиши, и формировать из них строку. Ещё вариант нарисовать кнопки на экране, чтобы пользователь мог их тыкать мышкой, постепенно формируя строку. Но это лишь предположение, что нет поддержки ввода строк. Точный ответ можно получить после прочтения всей документации.

    Например, в игре Tabletop Simulator тоже есть встроенный язык Lua. Поле ввода, как таковое, там не предусмотрено. Но зато через событие можно "ловить" в чате вводимые игроками сообщения. Также у игроков есть возможность задавать объектам имена и описания - их тоже можно считывать, используя в качестве альтернативы полю ввода. Эти компоненты определяются средой, то есть данной игрой, и язык Lua никак не может их создать из ничего или удалить из игры, но при этом Lua имеет к ним доступ, может получать оттуда значения или записывать новые значения туда. Таким образом, Lua использует те компоненты, которые определяются средой и которые описаны в документации.
    Ответ написан
  • Как сложить два числа в Lua в Coregames?

    dollar
    @dollar Куратор тега Lua
    Делай добро и бросай его в воду.
    Не знаком лично с программой coregames (хотя спасибо, что уточнили).

    Однако навскидку могу предположить, что функция UI.PrintToScreen принимает только одну строку и не принимает никакие числа. Поэтому нужно число привести к строке:
    print=UI.PrintToScreen
    b=1;
    c=1;
    a =  b + c ;
    print (tostring(a))

    Того же эффекта можно достичь операцией конкатенации строк из-за автоматического приведения типов в Lua при использовании этой операции:
    print("The result = " .. a)

    Ну а если серьёзно подходить к вопросу, то вот в этом месте:
    сбой и все...

    Вы упускаете важную информацию. Характер сбоя многое говорит о проблеме. Печально, если приложение просто схлопывается или зависает. Но зачастую при ошибке оно выводит подробности ошибки. Например, это может быть что-то типа сообщения: "line 5 - количество и/или типы аргументов у функции неправильные". После этой инфы очень легко догадаться, в чём дело. Даже если вы сами не поняли смысл сообщения, в вопросе следовало бы указать все подробности сбоя, как он происходит и что выводит. Это вам совет на будущее.
    Ответ написан
    1 комментарий
  • Как попасть в AAA-геймдев?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Попасть очень просто. Нужно согласиться на меньшую зарплату, чем та, которой вы достойны, т.е. на джунскую позицию. Конечно же, при соблюдении условий вакансии, то есть нужно обладать заявленными знаниями и навыками. Если требуется знать язык (русский, английский и т.д.), то значит нужно его знать.

    Точек входа в ААА-геймдев несколько. Программисту С++ проще всего опуститься до тестировщика. Осталось ещё раз коротенько проштудировать теорию - и можно попытаться попасть в крупную компанию на эту должность. Собеседование пройдёте с большой вероятностью.

    Далее вас ждёт что-то типа ада, да ещё и за жалкую з/п, но зато цель будет достигнута - вы попадёте в ААА-геймдев.
    Ответ написан
    Комментировать
  • Как создать лаунчер с встроенным античитом для CSS v91?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Гарантированно - никак.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Что лучше зависит от того, что конкретно для вас важнее.
    Отвечая на вопрос в общем виде, могу лишь предложить подробное сравнение:
    Ответ написан
    Комментировать
  • Как сделать генерацию 2D мира на лету?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Сначала генерировать некий "скелет", то есть каркас, структуру мира, на которую уже будет насаживаться всё остальное (по другим законам). Например, холм можно обозначить точкой в его условном центре, но не генерировать сразу. И по мере продвижения игрока к этой точке, можно уже сформировать его более детально, со всеми неровностями и мелкими незначительными особенностями.

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

    И ещё при генерации на лету сложно делать поэтапную генерацию. Например, сначала рельеф, потом заполнение водой. После второго этапа, как бы вода ни была расположена, третьим этапом её можно слить (приземлить в углубления). Но как это всё делать на лету? Очень сложно. Так что для красивого продуманного мира лучше подойдёт именно предварительная генерация, либо же в случае первого варианта нужно будет продумывать очень много деталей и то, как они будут связаны друг с другом.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Зависит от количества игроков и от самой игры.

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

    Но если есть какая-то хитрая механика, которая связывает сессии, то это может быть не вариант.

    Также отдельной сессии можно добиться в ситуации, когда один из игроков является как бы сервером (хостом). В этом случае и отдельный сервер практически не нужен. Нужен только сервер для подбора игроков (matchmaking), а дальше сессию поддерживаю они сами.

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

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Дела хорошо обстоят. Многие используют Unity. А фреймворки, как таковые, слегка остались в прошлом, когда речь заходит про разработку игр. Хотя никто и не мешает их использовать. Разве что можно в шутку вспомнить, что .NET как бы тоже фреймворк.

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

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

    Программирования в игре 5-20%, а остальные 80% - геймдизайн, маркетинг (особенно для мобильной!), художества и прочее. Так что если вы настроены серьёзно, то готовьтесь к тому, что это лишь начало долгого пути. Не думайте, что стоит вам сделать змейку, как толпы поклонников будут вас просить выпустить следующую игру и ждать с нетерпением.
    Ответ написан
    1 комментарий
  • Какой ноутбук выбрать для гейм дева?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Смотри,
    1) идёшь на market.yandex.ru
    2) вбиваешь там в поиск "ноутбуки"
    3) увидишь список ноутов, и справа фильтры - указываешь цену: до 50000
    4) затем указываешь, что должно быть 16 гигов оперативки.
    5) потом выбираешь из списка любой ноут, кроме Acer (хотя дело твоё).
    Ответ написан
  • Как реализовать скрипты уровней в Love2d?

    dollar
    @dollar Куратор тега Lua
    Делай добро и бросай его в воду.
    Через require:

    require "boss"
    или
    require "boss.lua"
    Ответ написан
  • Какое приложение использовать для создания текстовой игры?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Подойдёт любой текстовый редактор.

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

    Например, для C++ классической IDE считается Microsoft Visual Studio. Есть и более лёгкие. Но, повторюсь, в теории подойдёт и обычный блокнот, то есть любой текстовый редактор, просто это будет не так комфортно. Ну а что подойдёт именно вам, зависит от выбранного вами языка, платформы и т.д.
    Ответ написан
    Комментировать
  • Как отключить сглаживание в love2d?

    dollar
    @dollar Куратор тега Lua
    Делай добро и бросай его в воду.
    Создайте поверхность в 640 пикселей, и выводите всю графику на неё.
    При этом округляйте координаты, чтобы они все были целыми.
    Затем уже растягивайте поверхность на весь экран, используя фильтр nearest.
    Ответ написан
    2 комментария