Избранное Все заметки GitHub icon Мой Github Обо мне
2 заметки с тегом

мысли

Движки онлайн игр на Node.js

Когда читаешь форумы и паблики по Unity, часто встречаются вопросы/ответы: как сделать онлайн игру, как сделать мультиплеер, что лучше unet, photon, etc. И часто люди советуют друг другу, как раз решение от самой Unity — UNet или другой вариант — Photon.

Что с одной стороны понять можно — есть документация, примеры, готовый мультиплеер и матчмейкинг, не нужен свой сервер и т. д. Только за это надо платить, когда сервер не твой, то нет полного контроля и гибкости + на тарифе Unity Pro — лимит всего 200 игроков онлайн! У Photon тоже есть ограничения и тоже платная подписная модель. Поэтому если есть вероятность, что игра выстрелит (все же на это надеются :), стоит задуматься о собственном сервере.

Много плюсов в сторону своего сервера и движка. Минимум — это дешевле и есть полный контроль. Из минусов — всё надо настраивать и писать самому. Ну почти всё... Для одинокого разработчика, это может стать проблемой, тем более если нет опыта серверной разработки.

Вариант №1

Можно заморочиться, написать клиент и сервер на Unity с использованием UNet и запустить его на своём сервере в режиме Headless Mode. Не пробовал, не знаю.

Вариант №2

Написать свой онлайн движок. Или использовать чей-то.
Тут есть место где развернуться, есть много серверных языков и фреймворков. Есть и готовые движки для онлайн игр и ничто не мешает их использовать вместе с Unity. Я рассматривал только Node.js, потому что имел с ним дело и могу разобраться, но уверен, есть и другие, на других языках.

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

Pomelo

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

Colyseus

Этот движок обновляется, последний апдейт был пару недель назад. Позиционируется как движок для HTML5 игр. Работает через вебсокеты, данные сжимаются msgpack, есть встроенный матчмейкинг и компенсация лагов. Хорошая документация и примеры. Есть официальные клиенты на JS, Unity и CoronaSDK.

Lance

Уже полгода не обновлялся. Также работает на вебсокетах, есть сжатие, компенсация лагов, предсказание и т. д. Пишут, что подходит для любых игр и жанров. Есть документация и пару примеров на JS.

Для начинающих можно ещё посмотреть эти два репозитория:
https://github.com/bonsaiden/maple.js
https://github.com/huytd/node-js-game-server

Если ещё погуглить, можно найти много примеров на Socket.IO, но мне он почему-то не понравился. Хотя сделать на нём простое онлайн взаимодействие вполне легко.

7 декабря   nodejs   игры   мысли   разработка

Участь игр с «честным» рандомом

Все игры с честным, настоящим рандомом, в большинстве случаев будут получать негативные отзывы и оценки игроков.

Это относится к карточным играм, где рандомно карты выдаются, игры с кубиками, игры где случайно выпадают предметы, сундуки и т. п. Игроки всегда будут недовольны настоящим рандомом, будут говорить и писать, что нечестно и подстроено, хотя на самом деле, всё наоборот.

И варианта тут два:

  1. Оставить всё как есть — ведь это честно! и правильно, со стороны разработчика
  2. Сделать «нечестный» рандом и настроить баланс

Хотя нет, один вариант — №2. Потому что в итоге, главная цель любой игры — дать удовольствие от игры играющему; выигрывает он, проигрывает — неважно.

Почитать на эту тему: https://gdcuffs.com/post/unfr-rndm/

10 ноября   игры   мысли   разработка   ссылки