Ответы пользователя по тегу Разработка игр
  • Как сделать правильно анимацию прыжка персонажа на блок?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Вы считаете новые координаты от начальных, а нужно считать новые координаты от предыдущих.

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

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

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Это нормально.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Поиск пути и обход препятствий - алгоритм A* (AStar) и его модификации. При этом мир предполагается разбить на зоны.

    Что касается карты, то однозначно ответить нельзя.

    Для начала нужно определиться - процедурная генерация или левел-дизайн. И то, и другое имеет свои плюсы и минусы. Генерация делает игру разнообразнее, но сделать геймплей интересным сложнее, а сюжет впилить практически невозможно. Ручные карты, наоборот, могут быть очень продуманными и красивыми, содержать уникальные локации, города, героев, но требуют дополнительных человеко-часов.

    Далее, можно взять какой-то готовый движок и допилить его до своих нужд, заодно тянуть с собой ненужный функционал, но может быть, что в нем не хватает чего-то важного и придется сильно допиливать, а может оказаться проще написать с нуля. Зависит от вашего геймплея и конкретных фич вашей игры.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    1. Сначала придумывается идея. С прицелом на коммерческий успех, конечно же, то есть в идеале она должна сразу содержать USP. Автор идеи, как правило, становится главным идеологом игры и в будущем контролирует её воплощение, хотя может и какую-то посредственную роль занять в будущем.

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

    3. Делается прототип игры. Можно даже не игры, а ключевой фичи. Два варианта, зачем это нужно: а) для себя, чтобы понять, что идея никуда не годится и надо её менять или улучшать б) чтобы показать инвестору, дать пощупать и понять, чего вы хотите (читать текст никто не любит, а кнопки потыкать всегда приятно и более понятно). Это минимум программирования, или вообще его отсутствие (прототип из бумаги дешево и сердито).

    Максимальная команда на стадии прототипа состоит из 4 человек - автор идеи, программист, геймдизайнер, дизайнер (по крайней мере, в ubisoft опытным путем пришли именно к такому составу). Но в целом один человек может справиться.

    4. Формируется, так называемый, feature list, это уже конкретные задачи, каждая из которых (если вы планируете делать по скраму) занимает не больше 5 дней, иначе делится на более мелкие задачи.

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

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Я не в курсе, что за игра, но спасибо за точность вопроса.
    1) Есть два варианта:
    - а) Смотреть сетевой трафик
    - б) Вытаскивать из интерфейса игры (лучше такое делать на пк). В идеале, если чат можно запустить в браузере, тогда можно обойтись веб-технологиями. Иначе можно попытаться вытащить инфу из компонентов окна своим виндовым приложением (если там не кастомные компоненты). Иначе самое сложное - как бы делать скриншоты и распознавать текст.
    2) Выше описал. Если трафик не зашифрован, то читаем трафик, нужно знание сетевых протоколов и способов перехвата. Если чат в браузере, то стек веб технологий. Если анализ компонентов, то win api или что-то аналогичное в других ос. Последний вариант - минимум технологий и максимум работы по созданию своей утилиты, а также жутко неудобный вариант (нужно выделить отдельный экран для игры, и его нельзя будет ничем занимать).
    3) Помогут, скорее всего. Но кто их вам даст?
    4) Посмотреть, какие соединения активны.
    Ответ написан
    1 комментарий
  • Какой движок выбрать для создания интернет-магазина аддонов\модов для игры?

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

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

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

    На примере Террарии: сделали браузер модов внутри самой игры. Именно такое решение.

    Ну а так разработчик может и без магазинов выложить своё детище на каком-нибудь itch.io например. Платно или бесплатно, по желанию. Там и обновлять может, и юзеры могут скачивать апдейты без доплаты и т.д.
    Ответ написан
  • Хорошие платные курсы геймдизайна на русском?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    В целом, этому не учат. Конечно, если задача сделать именно что-то новое, а не тупо клон.

    Есть куча книжек по геймдизайну. И считается, что прочитать 2-3 из них - это мало.

    С другой стороны, есть мнение, что нафиг эти книги, а надо учить программирование (математику) и психологию, и именно это решает в геймдизайне.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Обычно делают "кучу склеенных в один файл кадров" на полотне 1024х1024 или 2048х2048.
    Ещё больше размер - плохо.

    Соответственно, в самом спрайтере лучше экпортировать в виде "кучи отдельных кадров". Но! При этом нужно сделать свою небольшую софтину, которая будет конвертировать удобочитаемый XML (или JSON) от спрайтера и отдельные изображения в свой собственный формат анимаций, удобный вам.

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

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Основных направлений в геймдеве я бы выделил всего четыре:
    1) Программирование
    2) Дизайн
    3) Менеджмент (сюда же включу маркетинг, и всяких КМ, биздевов, секретарш и пр.)
    4) Геймдизайн

    Есть куча смежных областей. Например, UI-программист или левел-дизайнер. А так можно идти хоть на психолога или юриста - всё равно удастся найти возможность применения своих навыков в геймдеве. Главное понять, к чему у вас лежит душа.

    Звук и музыка - обособленная от геймдева тема, и его обычно отдают на аутсорс, либо просто покупают готовое или берут бесплатное. Локализация - тоже отдельная тема.

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

    P.S. А ответ на предыдущий вопрос вас не устроил? Спрашиваю, потому что правильные ответы принято помечать решениями.
    Ответ написан
  • Существует ли (формула ,уравнение)для расчета времени жизни игрока?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Будем исходить из того, что серверный FPS равен 10. И все они начинают стрелять одновременно.

    Тогда за кадр игрок (a) сделает 1.17 выстрелов или 5.83 урона.
    А игрок (c), соответственно, сделает 1.67 выстрелов или 5 урона.

    Очевидно, что игрок (a) наносит урон быстрее.
    Таким образом игрок (a) за 18 кадров нанесёт урон 104.94, чтобы снести 100 здоровья игроку (b). Причем, 17 кадров не достаточно, потому что урон будет всего лишь 99.11, что меньше 100.
    За те же 18 кадров игрок (с) нанесёт лишь 90 урона, и не успеет снести все 100 единиц здоровья игрока (a).

    Не всё так просто, зависит от реализации.
    Например, банально, если урон каждый кадр округляется в меньшую сторону, то у обоих урон за кадр будет равен 5.
    Поэтому может получиться так, что все умрут одновременно (кроме игрока (c)).
    Либо придётся учитывать, кто раньше стрелял, ведь мы предполагаем, что оба начали стрелять одновременно, но так редко случается в реальной игре. Так что в формулу, которую вы хотите получить, придется добавить разницу во времени начала стрельбы.
    На сервере также может быть другой FPS, который обычно от 10 до 30, а иногда выходит за эти рамки, и другие правила округления, что внесёт свои правки.
    Есть пинг, лаги, они тоже вносят свои коррективы, в зависимости от, повторюсь, архитектуры и реализации.

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

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Верхний предел заработка не ограничен. Игра может принести даже миллионы (если не миллиард) долларов. Так что ответ - много.

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

    Ну а если окажется, что ваша игра реально хорошая (классный USP), то дальше всё просто: нужно закупать трафик так, чтобы цена покупки пользователя была меньше, чем этот пользователь принесет денег на рекламе (или если решитесь на донат, то и это плюсуйте). И чем больше купите трафика, тем больше будет прибыль.
    Ответ написан
    1 комментарий
  • Как организовать серверную (tcp) логику с примитивной игре?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    В простой реализации всё просто. Сорри за тавтологию, но это реально так. Клиент посылает свою позицию серверу (абсолютные координаты) сразу послед изменения. Сервер посылает эти координаты остальным.

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

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

    P.S. tcp не советую. Если данных мало (т.е. 4 игрока и 0 других объектов), то без разницы. Но на большом трафике даже 0.5% потерь пакетов приведет к лагам. Так что если планируете расти, лучше сразу выбрать udp (хотя вторым соединением по tcp можно административные задачи решать - поиск игроков, создание сессии и т.д.)

    P.P.S. Здесь неплохо иллюстрируется проблема синхронизации.
    Ответ написан
  • Как начать делать игры после разработки сайтов?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Вступить в команду в качестве программиста или геймдизайнера. Учить тот язык, который потребуется. Мне кажется, что (настоящему) программисту выучить любой язык не проблема при желании и необходимости (разве что С++ может показаться излишне сложным, если выбрать его в качестве первого языка, но в качестве второго уже не так страшно).

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

    Хотя, если ваша цель сделать простенькую игру в одиночку, и прибыль с проекта вам не нужна, то можете взять любой игровой движок, тот же Unity, и просто начать что-то делать. А дальше уже в зависимости от степени вашей мотивации и вовлечённости, вы либо добьетесь высот в этом деле, либо бросите, поняв, что это не ваше.
    Ответ написан
    3 комментария
  • С чего начать разработку онлайн игры с использованием клиента сторонних разработчиков?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    готов потратить годы своей жизни

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

    Сделать такую игру небольшой командой - сложно, заработать на ней ещё сложнее, а делать игру в одиночку - невозможно.

    Я не программист, знаний ноль

    на UE4

    Почему такой выбор? Движок проще выбирать, будучи как раз программистом, а иначе это пальцем в небо. Под ММО больше заточен CryEngine, но здесь уже программисты могут долго перечислять плюсы и минусы.

    Чем мне вскрывать игровые ресурсы с расширением dat?

    Если нет исходников, то проще с нуля всё сделать. Может, конечно, повезет, и удастся легко вытянуть арт и модельки из dat файлов, но это будет графика 10-летней давности. Кому она зайдёт в наше время?
    Ответ написан
    6 комментариев
  • Хочу понять, с чего мне начать путь в геймдев?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    MrM4x1m1807, я лишь спросил про город в комментариях к самому вопросу) Это основное уточнение.

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

    Но судя по стилю письма ваши мечты далеки от реальности. И не уверен, что вам 21 год.
    Ответ написан
    Комментировать
  • С чего начать изучать game dev?

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

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

    Также в Москве есть курсы при ВШБИ. Это единственный вариант в России официального высшего образования в области геймдева. Ещё можешь поехать учиться в другие страны, там тоже есть варианты вышки, хотя этот вариант сложнее.
    Ответ написан
    Комментировать
  • Как правильно разработать возможность разнообразия характеристик у персонажей?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Я бы сделал так. Рандомизировал все характеристики для 100000 колобков, дальше запустил бы каждого в 100 случайных ситуаций с волками и лисами, и посмотрел бы, выживут они или нет. Потом оставил бы только тех, у кого 90% выживаемость. Характеры этих живчиков занёс бы в базу, и во время игры спавнил бы из базы случайного колобка.
    Ответ написан
  • Каковы рзличия во взаимодействии с железом в системном программировании и создании игровых движков?

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

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

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

    Если дело касается низкоуровневого программирования, то это по сути означает выполнение несвойственной программисту задачи, потому что тонкости оптимизации лучше перенести в написание драйверов. А в начале своего опуса я специально исключил эту тему. Но иногда приходится, да. Собственно, первые игры по сути были основаны на базе самописных движков, после чего и началась вся движуха с ускорением графики. Но сегодня есть всякие directx opengl vulkan, а над ними куча более сложных игровых движков, так что нет смысла изобретать велосипед.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    https://en.wikipedia.org/wiki/List_of_game_engines

    В колонке Primary Programming language указан язык, на котором предполагается разрабатывать игру. Вот это вам и нужно. Если вам нужен чистый Си, то смотрите на значения C/C++ и C.

    В колонке Scripting указан дополнительный язык для скриптов, если есть. Например, для Moai SDK основной язык C++, а вспомогательный для скриптов - Lua. Пример игры на Moai - Don't Starve. Точнее, разработчики игры взяли этот движок за основу, сильно переделали и допилили его под себя (его исходные коды открыты), и потом уже использовали для создания игры. Хотя в процессе создания продолжали допиливать.
    Ответ написан
    Комментировать
  • На чём пишут читы для браузера?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Fiddler, например.

    Wireshark вроде не позволяет менять трафик.

    А инжект средствами JS плохо работает в случае использования игрой анонимных функций. Весь движок игры со всеми данными можно обернуть в анонимную функцию - и хрен до них доберешься.
    Ответ написан
    Комментировать