Ответы пользователя по тегу Разработка игр
  • Какие книги стоит прочитать для правильной балансировки сил в карточной игре dnd-like?

    Griboks
    @Griboks
    Всё зависит от самой игры. Нельзя просто так взять и прочитать книгу "Как сделать кки успешной, доходной, популярной. Пошаговый алгоритм без смс и регистрации."
    Есть разные подходы:
    • на глаз
    • статистика
    • сведение каждой карты к универсальному показателю
    • и другие

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

    p.s.
    Конечно же, нельзя не упомянуть об универсальной формуле от Blizzard и Mail.ru: донат прямо пропорционален силе карты и обратно пропорционален её стоимости.
    Ответ написан
    Комментировать
  • Какие архитектурные подходы выбрать для разработки клиент-серверной игры?

    Griboks
    @Griboks Куратор тега C#
    Вы думаете не в том направлении. Сервер главный, клиенты - рабы его. Захотели куда-то полететь? Спрашивайте разрешения у сервера. Захотели посмотреть данные о планете? Спрашивайте у сервера? Захотели сходить в туалет? Спрашивайте у сервера) Разумеется, всё это для выделенного сервера, который вы хотите написать на C#.

    1) Надо отталкиваться от того, что любой клиент можно подделать. Следовательно, всё, что не отвечает за рендеринг, интерфейс и красивые эффекты, должно храниться и обрабатываться сервером. Клиент должен просто показывать ваши нули и единицы в удобной для пользователя формы.
    2) Любое действие, совершаемое игроком, должно отправляться на сервер и проверяться им. Естественно, по данным, которые хранятся на сервере. Пользователь нажимает кнопку, посылается запрос на сервер, он симулирует действия. Рассматривайте сервер как единственное место, в котором реально происходит "игра" (симуляция мира). Клиент же рассматривайте как клавиатуру, мышку и монитор в оффлайн играх.
    3) Симуляция (которая происходит ТОЛЬКО на сервере) должна быть ни чем иным, как простым кодом. Без всяких переиспользований и прочего. Просто какая-то функция OnClientSendData, которая, грубо говоря, осуществляет покупку от имени приславшего клиента нового корабля, сохраняет id в профиль игрока и возвращает сообщение об успешном выполнении покупки.
    4) Связь между клиентом и сервером должна осуществляться через ваш собственный или выбранный протокол. На низком уровне. Обобщая, без использования стандартных юнитовских rpc, т.к. они не работают с выделенным сервером. Если очень хочется, то работают, но тогда сервер придётся писать на самой юнити, и он уже не будет консольным. В таком случае, опять таки надо забыть про рендеринг и прочее, ведь сервер должен быть быстрым, и на него никто не будет пялиться каждый день. Сборки, разумеется, должны быть разные для сервера и для клиента.
    5) Интерполяция, экстраполяция, сглаживание и прочие умные словечки будут очень полезны в плане разгрузки сервера. Ведь можно каждую секунду передавать координаты планеты всем клиентам, а можно задать его эфемериду на несколько часов вперёд, ограничившись таким образом одной отправкой. Кстати, именно так сделано в GPS.
    6) Некоторые логические действия всё-таки можно производить на клиенте, если их результату сервер сможет доверять. Ну или просто "разрешить" читерство, проводя симуляцию на клиенте, а сервер превратив в "тонкую" базу для синхронизации.
    7) Ну и под конец, необходимо использовать всякие спец. приёмчики. Например, зачем каждый раз загружать с сервера всю карту, если можно загрузить только изменившийся кусок. Некоторые действия можно вообще сделать "локальными". Например, зная результат боя, можно сразу загрузить его и симулировать на клиенте, а не получать каждую секунду новые параметры.
    Ответ написан
    2 комментария
  • Возможно ли создать онлайн-игру с использованием блокчейн?

    Griboks
    @Griboks
    Перефразируя, вы хотите сделать онлайн игру без серверов. Очень интересная идея. Майнинг, конечно, полная фигня, но сам факт существования какого-нибудь варкрафта без серверов очень привлекает.
    Ответ написан
  • Какими формулами можно описать движение предмета?

    Griboks
    @Griboks
    Судя по условию, уже имеется r(t) - функция перемещения, полученная из движения пальца по экрану. Необходимо сделать аналогичное перемещение для покебола.

    1) Движение шара по дуге и другой траектории, определённой пользователем.
    Предлагаю просто напросто масштабировать вашу r(t) до нужных размеров и запустить по ней шарик.
    (Соответствующие преобразования)
    2) Сила тяжести
    Самый просто способ - двигать шар в две итерации: r(t), а затем применить силу тяжести [y(t) = y0 + V0*t + 5*t^2]. Не забываем, что она направлена вниз!
    3) Вращение
    Необходимо определить, как пользователь будет задавать вращение. Ведь свайп по дуге - это движение шара по дуге. Но, например, не составит труда вращать шар с угловой скоростью w=r(tmax)-r(tmin).
    4) Более точные модели
    Безусловно, можно рассчитывать ещё и силы сопротивления, скорости, рывки, массу, энергию и много чего ещё. Только это вовсе не требуется в данной задаче.
    Ответ написан
    Комментировать
  • На каком движке лучше всего разрабатывать 2D Sandbox игры?

    Griboks
    @Griboks Куратор тега C#
    Советую просто разобраться в юнити. У вас кривые руки, а виноват движок.
    Ответ написан
    2 комментария
  • Какие самые простые игры можно написать под android?

    Griboks
    @Griboks
    Кликер, квест, текстовая игра - все, где нет анимации и управление тачами.
    Ответ написан
    Комментировать
  • Как сделать управление персонажем с помощью мыши и клавиатуры?

    Griboks
    @Griboks Куратор тега Unity
    В элиен шутер вроде мышью задаётся только поворот игрока. В общих чертах, вам надо вычислить координаты курсора относительно центра экрана. Дальше вычислить поворот и радиус (см. полярная система координат). Ну и, собственно, скорость=радиус, направление=угол.
    Ответ написан
    1 комментарий
  • Проблема с Всплывающим окном в игре (Некий DebugHUB)?

    Griboks
    @Griboks Куратор тега C#
    Вроде оба сообщения написаны верно. Однако сообщения выводятся одновременно! Поэтому одно сообщение вполне может перекрывать другое.
    Я рекомендую сделать некий менеджер отладки с очередью сообщений. Что бы, когда нажимаешь ок, выводилось следующее.
    DebugHub.AddToQuee(count==maxcount,"ВНИМАНИЕ! КОЛИЧЕСТВО ДЕ");

    Другой вариант - условия написаны неверно.
    Ответ написан
    1 комментарий
  • Как работает ИИ в играх?

    Griboks
    @Griboks
    На хабре была статья про ИИ недавно.
    Ну, а если серьёзно, то ИИ абсолютно полностью зависят от игры. Далее идет движок. Ну а потом уже все остальное. Например, в покере ИИ вообще нет.
    Ответ написан
    Комментировать
  • Выбор игрового движка для текстового квеста?

    Griboks
    @Griboks Куратор тега Unity
    Лично я написал свой движок на юнити.

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

    Griboks
    @Griboks Куратор тега C#
    А почему бы просто не использовать void OnMouseDown() на самой постройке? Вы, по сути, это и делаете, только через костыль. Если, конечно, за экраном нет невидимой стенки.
    Ответ написан
    1 комментарий