Ответы пользователя по тегу Разработка игр
  • Как физический движок использовать для 3D графики С++?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Если вам для разработки игр так не нравится шедевральный Unity с его языком C#, который нынче (2019) практически все используют, и вы хотите именно C++, то обратите внимание на Unreal Engine. Этот движок очень хорошо устроен внутри, имеет красивый и понятный код. Для C++ это лучший движок, примерно на равне с Unity, только с более высоким порогом вхождения (школьники его уже не осилят, нужен бородатый программист).
    Ответ написан
    Комментировать
  • Какие языки нужны для написания игр и приложений на Android?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Для начала немного не по теме вопроса:
    • Чтобы стать разработчиком игр, нужно знать не только языки. Причем, языки составляют где-то 10% от всех знаний.
    • Разрабатывать игры в одиночку почти невозможно. Конечно, если это не пятнашки без особых фич. Средние игры, и даже хорошие игры с оригинальной идеей будут приносить околонулевой доход. Игра должна быть отличной, чтобы шанс на успех был выше нуля. А для этого нужен широкий спектр знаний и навыков, которые одном человеку освоить сложно (долго).

    По теме вопроса:
    • Делать игры лучше на Unity, поэтому язык C#. Но Unity это не только язык, это ещё и движок конкретно для игр, который на сегодня (2019), можно сказать, победил все остальные движки. Он имеет большие возможности, производителен, удобен в использовании, и всё это в купе с простотой освоения (низкий порог вхождения).
    • Для собственного сайта подойдёт почти любой язык, но выбор зависит от игры. Ведь вам нужен не столько сайт, сколько игровой сервер (бэкенд). И реализация будет зависеть от специфики игры. Если у вас игра сама как сайт, т.е. переходы по страницам через кнопки, то можно игровой сайт поместить в приложение. В этом случае и PHP подойдёт. Если игра в реальном времени (типа шутера или гонок), при этом огромное число пользователей, то узким местом станет нагрузка на сервер, да и вообще стабильность. Так что бэкенд придется делать на высокопроизводительном языке, таком как C/C++. Ну или, например, Elixir (Erlang). Если у вас что-то среднее между этим, то подойдёт, опять-таки, любой язык, умеющий работать с сокетами и поддерживать сессию игрока. Как я и говорил в преамбуле, всё это сложно, и даже для выбора и реализации архитектуры сервера желателен отдельный специалист.
    Ответ написан
    Комментировать
  • На чём создавать игры? Kivy или PyGame?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Говоря по существу, игры на Python лучше вообще не делать, тем более под Android. Если вы хотите именно делать игры, то сразу откажитесь от Python в пользу C# (движок Unity) или Java (потому что чисто под Android, так что тоже обоснованный выбор). Если же очень нравится Python, то посмотрите на движок Godot, это интересный зверь, и там встроенный язык очень похож на Python. Ну а Kivy и PyGame не вариант ни разу, разве что змейку сделать, а в чуть сложнее проекте намучаетесь.
    Ответ написан
    4 комментария
  • Прошу помощи с GameMaker Studio 2?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    но этого не происходит

    А что происходит? Нужно указывать такие подробности.
    Теперь придется перебирать варианты на основе догадок...
    • Объект не отображается. Это значит, что вы его не добавили в комнату. Нужно перетянуть объект в комнату, чтобы он там был виден. Естественно, у объекта должен быть хоть какой-то вид, спрайт или даже анимация, иначе его также не будет видно даже после добавления в комнату.
    • Объект не двигается. На самом деле двигается. У вас же событие Create, которое срабатывает единожды при создании. Вот оно и срабатывает, и объект смещается влево на 200 пикселей. Просто вы этого не замечаете, потому что для вас объект сразу как бы спавнится в других координатах в момент запуска игры.


    Попробуйте так:
    1. Add Event ---> Key Down ---> Left
    2. Добавьте код:
      move_contact_all(180,200);
    3. Запустите игру и нажмите стрелку влево. Объект должен перемещаться при нажатой клавише и останавливаться при отжатии.


    И еще вопрос, можно ли пользоваться данной справкой

    К слову, это нарушение п.3.7 правил Тостера. Лучше было бы отдельный вопрос создать, никто за это не осудит и не накажет. Но всё же отвечу:
    Справка та по Game Maker 8.0, что как бы совсем другой продукт. Пользоваться ей не стоит, она устарела. Пользуйтесь встроенной справкой в GameMaker Studio 2, там всё есть. А чего нет, всегда можно спросить на официальном форуме. Здесь, на Тостере, про этот движок почти не знают (кроме меня разве что), а там обязательно подскажут. Но нужно знать английский.

    Добавлю, что лучше не тратить время на освоение данного движка. Но это моё личное мнение.
    Ответ написан
    Комментировать
  • Где найти программиста и сколько заплатить?

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

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

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

    Понадобится не только программист, но и другие специалисты. Минимальная стоимость хорошей игры будет более 100 тыс. долларов. В случае успеха это ничто, потому что прибыль всё окупит многократно, но шансы успеха крайне малы. А в случае провала, что более вероятно, вы просто потеряете эти деньги. Вы готовы к этому?

    Как вы хотите
    Вы платите программисту немного денег, он всё делает. Вы публикуете игру, а дальше толпы фанатов бросают в вас деньгами. Вы не спеша их собираете, изредка поощряя какими-нибудь словами.
    Как будет
    Вы нанимаете программиста. Но оказывается, что еще нужен и художник. Вы нанимаете и его. Но время разработки оказывается 8 месяцев. Всё это время вы практически платите зарплату из своего кармана. В конце получается нечто типа игры, что вы публикуете. 10 человек скачивают игру, и всё, больше никто о вашей игре не знает и не узнает никогда.
    Как надо
    Вы изучаете, что такое геймдев и с чем его едят, читаете статьи, проходите курсы, получаете второе высшее в этой сфере. Затем вы подробно описываете свою идею, находите инвестора, который готов дать вам 300 тыс. долларов, собираете команду из 10-15 человек. Проходите через все этапы разработки, держите KPI на высоте. Готовую игру тестируете на небольшой аудитории (например, на Филиппинах). Это значит, что вы закупаете трафик оттуда, а не просто выкладываете игру в стор. Смотрите, как пойдет, что подрихтовать и т.д. Если игра в целом успешна, т.е. стоимость игрока меньше, чем прибыль с игрока (LTV > CPI), то вливаете огромные деньги для закупки трафика по всему миру, что естественно окупается и вы становитесь миллионером. Если же игра плохо себя показала, то больше не тратитесь на эту игру, а закрываете её, и приступаете к разработке следующей, но с учётом ошибок, либо вообще уходите из геймдева.
    Ответ написан
    Комментировать
  • Игровые движки и 3Д моделирование?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    1) Unity - отличный вариант. Хорошее соотношение возможностей движка и простоты изучения. Несомненный лидер в геймдеве. Шедевр по современным меркам движков.
    2) Unreal Engine - отличный вариант. Но только если вы опытный программист С++, да ещё и точно знаете, что хотите от игры, и вам нужно больше свободы и специфических возможностей, чем предлагает Unity.
    3) CryEngine - довольно плохой вариант из-за низкой гибкости. Как говорится, что ни делай на CryEngine, всё Crysis выходит.

    Какую лучше выбрать программу для 3D моделирования для движков?

    А это нарушение п.3.7 правил данного сервиса, потому что отдельный вопрос. Но всё же отвечу. Программы для 3D моделирования примерно одинаковы. Совместимость с движками везде хорошая. Я бы выделил 3dsmax, также blender выделяется бесплатностью (но не какими-то супер фичами). Но всё же возможности примерно одинаковые, потому лучше использовать ту программу, к которой уже привыкли, или выбрать по другим (любым) соображениям. Основные - это Blender, Maya, 3ds Max.
    Ответ написан
    Комментировать
  • Как организовать учетную запись клиента в игре?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    У нас на обоих клиентах должно по идее одно и то же отображаться?

    Вовсе не обязательно. Всё зависит от того, что вы хотите и как устроен ваш сервер. Можно не позволять так делать, либо можно разрешить двум разным людям (устройствам) входить под одним и тем же логин\паролем, но выступать как два разных человека (хотя никнейм будет одинаковый). Как сделаете, так и будет у вас. А сделать можно, что душе угодно.

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

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

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

    В общем, ответ: 1) сделайте сессии 2) кикайте из старой сессии при создании новой.
    Ответ написан
    5 комментариев
  • Как понять устройство Unity?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Разные тематические видео-курсы:
    https://learn.unity.com/

    За деньги более индивидуальный подход:
    https://unity.com/ru/learn-premium

    Ну а так вообще можно просто API смотреть или читать официальное руководство, вот и всё. Ничего более чёткого не придумано пока что.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    1. Обычный сайт. "Мультиплеер" подразумевается по умолчанию. Это голый html/js плюс что-то на сервере (например, php и mysql).
    2. Обычный хостинг.

    Без программирования, к сожалению, не получится. Даже типа конструкторы предполагают наличие логического мышления. А раз оно есть, то освоить программирование вполне возможно и упирается лишь в наличие времени, желания и терпения.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Точно не С++. Если уже знаете его, то ещё можно на нём, а с нуля учить точно не стоит, сейчас полно нормальных альтернатив, начиная от системных и быстрых, кончая скриптовыми. На чем сам движок написан не особо важно, если вы не будете его допиливать или переписывать.

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

    Кстати, в Unity (где игра на C#) вполне можно добавить Lua, с этим проблем нет. Так что, как вариант, связка - C# + Lua.
    Ответ написан
    Комментировать
  • Что проще разработать онлайн 3D или 2D игру?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    2D проще.
    Ответ написан
    Комментировать
  • Си или С++, что учить в начале?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Ценятся хорошие специалисты, прежде всего. Если вы профи, и у вас за спиной многолетний опыт, то вас достойно оценят.

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

    А в плане языка программирования лучше исходить из задачи. К примеру, если игра простая, то её можно вообще на Lua сделать (или на другом скриптовом, просто Lua это уже классика). А если какие-то сложные вычисления, что-то вроде ИИ, поиска пути или сложных механик, то лучше нативный язык, т.е. Swift/Kotlin (для мобайла) и C++/Rust/и прочие для десктопа.
    Ответ написан
  • Corona SDK для десктопа - легально?

    dollar
    @dollar Куратор тега Lua
    Делай добро и бросай его в воду.
    А не будет полностью 100% кроссплатформенных движков, потому что сами платформы отличаются. На десктопе есть мышь, так что в игре можно сделать "наведение мыши на объект (или кнопку)" с последующей всплывающей подсказкой, либо можно сделать "нажатие правой кнопкой мыши" для вызова контекстного меню. Про клавиатуру вообще молчу. Если вы хотите это всё, то либо путь в мобайл будет закрыт, либо придется делать как бы две версии игры. И это не автоматически движком подхватывается, а вы сами должны решить, как у вас в игре будет. Часть кнопок клавиатуры можно вынести на экран, но не всю клаву, а как можно меньше кнопок. Правую кнопку можно эмулировать долгим нажатием и т.д. Соответственно, если плясать от мобильного приложения, то в игре управление будет сильно ограничено, примитивно, да и сам геймплей может пострадать в итоге.

    Что касается Lua, то это вообще практически самый простой язык в мире. Учится минут за 15-30. Весь. Гораздо больше времени потребуется на освоение самого движка, его документации, возможностей, API и пр.

    P.S. Насчёт слова "легально" так и не понял, какое оно имеет отношение к вопросу.
    Ответ написан
    Комментировать
  • Что лучше для разработки игр под iOS: Unity или swift?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    В общем случае лучше Unity.
    Потому что по современным меркам это шедевр. Сочетание простоты освоения (относительной, конечно) и большого числа возможностей.
    Плюсы
    • Низкий порог входа
    • Бесплатно
    • Комьюнити, учебники
    • Эффекты, графика
    • Куча интеграций (реклама) и готовых игровых систем (поиск пути и пр.)
    • Куча SDK ориентированы именно на Unity
    • Куча ассетов (почти бесплатно)
    • Кроссплатформенность

    А так зависит от игры. К примеру, если у вас игры довольно простые будут, и вы вообще не будете смотреть в сторону андроид, и очень сильный акцент хотите поставить на размере приложения и/или на быстродействии и энергопотреблении, т.е. будете холить и лелеять свою игру, вылизывать до идеала, то можно и Swift.

    P.S. Кстати, ставить вопрос как "Unity или Swift" - не совсем правильно, т.к. эти термины из разных категорий.
    Ответ написан
    4 комментария
  • Разработка игр.Как начать?

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

    Если вы знаете С++, то скорее всего вам зайдет другой движок - Unreal, так что можете начать с него. Он не такой модный, потому что порог вхождения выше, как раз из-за С++, но вы-то его знаете. И он вполне годный. В чем-то даже лучше Unity - меньше готовых решений (которые ограничивают ваши хотелки) и больше свободы, настроек, возможностей. Красиво устроен внутри. Продуманный. Вообще он для серьезных бородатых людей, а Unity нынче может даже школьник освоить.

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

    Короче, нужно помнить два основных момента:
    1. Геймдев - это сложно. Реально сложно. Одному человеку, как правило, не под силу. Конечно, если это не пятнашки или тетрис, а также если ваша конечная цель - прибыль.
    2. Геймдев и любовь к играм - это не одно и то же. Совсем. Разница примерно такая же, как ездить на машине и чинить машину (и тем более, проектировать ее). Поэтому если вы просто игроман и хотите применить навыки программирования к играм, то делайте моды (Lua) и не касайтесь сферы геймдева.

    Готовы спуститься в ад? Тогда добро пожаловать в геймдев. :) И удачи! Она вам понадобится.

    P.S. Родственник явно далёк от геймдева. Но если очень хочется, вот вам исходники игр.
    Ответ написан
    Комментировать
  • Где вести блог о разработке своей игры?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Я бы ещё добавил про фейсбук, если вы, как и многие коммерчески нацеленные игроделы, ориентируетесь на запад и сша.

    Фидбек - дело тонкое. Его лучше получать от тестеров. Вы же не собираетесь прогибаться под любые капризы игроков? Проблема в том, что они, как правило, сами не знают, что хотят. И если реализовывать все их желания, то игра может скатиться в треш. А обычным путём вы и так получите фидбек после альфы.

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

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

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

    А дальше начинаются оптимизационные моменты, которые зависят от нюансов задачи. К примеру, в 2D вам, скорее всего, нужно заполнить экран и немного за экраном. А в 3D прямой коридор придется делать бесконечно, пока он наконец не повернет, ведь пользователь от первого лица должен увидеть конец коридора, а не пустоту, каким бы длинном он ни был.

    Далее не понятно, как вы данные храните. Если у вас нет поля заданного размера, то хоть какое-то поле есть? Или каждая клетка/комната/соединение у вас представлены отдельным объектом в куче? И лабиринт по сути не сетка, а граф? От этого алгоритм тоже зависит.
    Ответ написан
  • В чем/как/где записывать сжетные лини квеста?

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

    P.S. https://www.draw.io/
    Ответ написан
    Комментировать
  • Как организовать движение в 2D под определённым углом?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Вот как раз синусы и косинусы и являются ответом на вопрос.

    А если у вас не получается, то где-то ошибка. В каких единицах вы задаёте угол? Приведите маленький пример того куска кода, который рассчитывает новые координаты. А также результаты - пример того, что получается и что ожидается на разные входные параметры.
    Ответ написан
    1 комментарий