Часто слышу, мол анрил ваш фигня, юнити лучше. В основном из-за простоты входа, да и писать погромистам на шарпе проще, чем на плюсах. Но вот что не сделают никогда на юнити.
Сцена - моё, сделано на четвёртом, картинка - люмен. В чем преимущество? Анрил умеет давать такое с открытыми мирами, юнити - нет. Юнити хорош для мобилок, но в открытые миры он не может. Увы. Если что, это не моё личное мнение, это мнение сообщества разработчиков ААА игр.
Вариант не конечный, название пока не придумал можете накидать варианты. (И да я на оригинальность аномалий не претендую похоже как в сталкере и таких будет не мало, но если вы изучите информацию по проекту то узнаете что HABAR сталкероподобная игра)
Я пересмотрел систему лута и предметов, которые выпадают в мире, это очень важно для “full loot” игры :). Раньше все предметы оставались в «обломках» корпуса поверженного транспорта. Теперь же предметы, находящиеся в трюме, будут разлетаться фонтаном вокруг транспорта.
Количество предметов из трюма, которые сохранятся после уничтожения, варьируется от 10 % до 100 %. Однако гарантированно сохранится хотя бы один предмет из пачки, даже если в ней всего один предмет.
Сами контейнеры теперь легко различимы и помечены на мини-карте.
Большинство предметов выглядят как контейнеры. Чтобы понять, что за предмет перед вами, надо навести на него мышь. Для чертежей используется общий спрайт чертежа, а для базовых ресурсов — различимые спрайты.
Всё снаряжение, установленное в корпусе, включая оружие, может сохраниться внутри обломков. Также в обломках остаются боеприпасы, которые находились в трюме. Всё остальное, что было в трюме (кроме боеприпасов), разлетается вокруг.
Шанс сохранения оружия и снаряжения установленное в корпусе равен 1 к 15.
Сами обломки можно переработать на детали посредством инженерного модуля. Что в итоге принесет еще и деталей. Кол-во деталей которые можно получить с корпуса берется из чертежа этого корпуса и с шансом 1к4 за каждый запуск модуля будет отдавать N% от этого числа, однако обломки теряют хп с каждый применением модуля.
В среднем получается вернуть 2-7% от суммы потраченных на корпус ресурсов.
Таким образом с 1го уничтоженного транспорта можно хорошо поживиться, конечно при удачных стечениях обстоятельств и когда вам не будут мешать)
Если вам понравилась статья или игра, присоединяйтесь к комьюнити, что бы нечего не пропустить.
Привет, пикабу! Сегодня мы рассмотрим один из возможных жизненных циклов игровых сессий на примере моей онлайн игры Make World. А своим опытом или мыслями вы можете поделиться в комментариях. Рассматривать мы всё будем с технической стороны с небольшими вкраплениями того, как это выглядит для пользователя. А в конце есть ссылка, где вы можете попробовать и покликать это всё на практике, а так же подписаться на мои соцсети :)
Итак, всё начинается с создания игровой сессии, это может быть как создание лобби, так и создание сессии через матчмейкинг (автоматический поиск соперников). В нашем случае рассмотрим простой пример с ручным созданием лобби: пользователь жмёт кнопку "Создать" и создается игровая сессия.
Создание сессии на клиенте
На стороне сервера же у нас имеются следующие методы (синтаксис языка c#, методы пронумерованы на скриншоте ниже):
1) Создать игру с заданными параметрами (примеры параметров на скриншоте выше)
2) Начать игру (когда пользователь жмёт кнопку)
3) Начать игровые ходы (когда сервер инициализировал все необходимые параметры и готов транслировать состояние игры)
Методы игровой сессии на стороне сервера
Учитывая, что игра у нас многопользовательская, и к ней могут подключаться другие игроки, то необходимо приправить нашу сессию вспомогательными методами подключения/отключения игроков (см. скриншот ниже):
1) Подключается игрок. Что мы при этом делаем?
- Смотрим, был ли он уже в этой сессии (это могло произойти, если он играл в игру и отключился из-за пропавшего интернета).
- Если был, то ставим его на нужную ячейку игрока (чтобы у него был доступ ко всем его городам и юнитам в игре).
- Если не был - создаем новую ячейку игрока с базовыми ресурсами для основания города.
2) Убрать игрока. Этот метод доступен, например, хосту игры - если ему по какой либо причине не нравится игрок, а так же доступен самому серверу - если например игра не активна и её необходимо закрыть для экономии ресурсов (об этом будет дальше)
3) Игрок выходит из сессии по одной из причин:
- Потерялось подключение. В этом случае мы оставляем ячейку игрока за ним (чтобы в будущем вернуть ему доступ ко всем его городам и юнитам)
- Он сам нажал кнопку выхода. В этом случае всё интереснее: если мы видим, что в игре не осталось ни одной активной ячейки игрока (т.е. теоретически никто не может вернуться в игру с "восстановившимся" интернет соединением) - то мы переходим к пункту (4) и закрываем игру, таким образом освобождаем ресурсы сервера, чтобы другие игроки тоже могли наслаждаться своими играми "без лагов"
4) Закрытие сессии. Если упустить этот пункт при разработке своей игры/приложения, то рано или поздно сервер будет "захламлен" и производительность может сильно упасть. Поэтому мы вызываем этот метод рано или поздно ВСЕГДА для каждой сессии, в случае моей игры причины этому могут быть: - Все игроки вышли из игры вручную. Когда последний игрок жмёт кнопку выхода - сразу инициализируется закрытие игры.
- Не осталось активных соединений и прошел какой-то промежуток времени (который даётся игроку, чтоб восстановить соединение и продолжить игру).
- Игровые ходы закончились и в игре определился победитель.
Методы манипуляции игроками и закрытия сессии
Ну чтож, сегодня мы разобрали базовый цикл игровой сессии (а в более широком смысле почти все "сессии" в компьютерных приложениях работают именно так), и, как и говорил, попробовать всё это бесплатно вы можете тут (и даже на мобильных устройствах): https://plugfox.dev/make-world-ru/