По стопам Raft

Начну с предисловия. Я программист с уже достаточно большим опытом, и люблю играть в игры. За спиной имею много проектов как личные для интереса, так и заказы на фрилансе. Никогда не занимался блогами, но вот решил попробовать, каково это быть писателем :)

Зарождение

Ну а теперь к самой сути поста, все вы знаете игру Raft. Я никогда особо не интересовался ей, но недавно я решил поиграть в нее(самый последний раз я играл в ее альфу, и то от силы пару минут). И вот я запустил уже релиз версию, и понял, что это совсем не то, что было на начале, в игре поменялось многое, но одно осталось неизменно, это была максимально простая, но гениальная игра. Я всегда любил Survival игры, и всегда хотел создать свою с открытым миром, пару раз даже пытался, но понимал, что разработка того, что я хочу займет года, а если учесть работу и другие аспекты жизни, то идея сразу летела в мусорный бак. До момента понимания сложности проектов я успевал сделать кучу все:

  • Крафт
  • Строительство
  • Системы жизни игрока
  • Наземный транспорт
  • AI животных

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

Жаль демку я так и не доделал :(

Но настало время вернуться к рафту, как я писал выше эта игра для меня стала примером того, что в выживалке не обязательно должно быть что то супер сложное или кардинально инновационное. Поиграв немного я понял, что если бы я не ставил себе цель сделать свою выживалку такой какой я ее хотел сделать, а сбавил обороты и выпустил ее поэтапно с меньшим контентом и вводя его в обновлениях, то сейчас бы она уже давно было закончена. Страх потери времени и суровой критики с обвалом рейтинга в том же Steam, убил проект. Но сейчас я решил: «а почему бы не сделать легкую игру в стиле рафта».

Многие сейчас подумают: «Опять какой то клоун собрался клон пилить».

От части да :) Но кто сказал, что это плохо? Я не собираюсь ворошить тему с плотом и водой. Я решил сделать что то свое (возможно где то уже есть такая игра, но я ее не видел), поскольку мне нравится sci-fi фигня, и все космическое, то почему бы не сделать зону действий в космосе.

Ну понеслась

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

Когда я сел за моего кормильца ака мой пк, я сразу начал думать над самым важным аспектом: «Собстна а на чем пилить та?». Мне не было разницы какой движок выбрать, что Unity, что UE4, я разбираюсь в обоих. Выбор пал на Unity, взвесив все:

  • Unity легче для моего ноутбука, а я самурай у меня вечный путь, и приходится работать везде где можно
  • C# мне больше по душе
  • Горы контента в Asset Store (визуала, ну и плагины типа DOTween)

Ну в общем я создал проект дав ему супер туп… крутое название Remains. Пришел я к нему исходя от «сюжета» который родился у меня в … ну там.

«Сюжет»

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

Как показано, на этом гениально концепт арте.
Как показано, на этом гениально концепт арте.

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

Начало работы

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

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

Так же нашел модель планеты и скайбокс, в фотошопе накинул пару эффектов на текстуру планеты, ну и вышло вот это:

По стопам Raft

Решил для начала реализовать механики из рафта, что бы была начинка.

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

По стопам Raft

Затем добавил систему жизни игрока.

По стопам Raft
  • Здоровье
  • Голод
  • Кислород

Решил не добавлять в игру жажду.

Затем появилась идея сделать орбитальную систему. Когда игроку нужно контролировать позицию своего корабля и не дать ему упасть слишком низко.

По стопам Raft

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

Затем я начал реализацию системы крафта. Всегда любил делать такого рода системы.

По быстрому сделал себе такой редактор предметов
По быстрому сделал себе такой редактор предметов
По стопам Raft

Это в разы ускорило разработку, ибо без такого рода менюшек, мне бы приходилось заходить в папку с конфигами предметов, создавать каждый отдельно. За это Unity огромный плюс.

Вот такое у меня получилось крафт меню. Сыровато, но все же.

Думаю убрать время создание предмета
Думаю убрать время создание предмета

А еще добавил ПОСТ процессинг

Хлебом не корми, дай сделать графен

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

По стопам Raft

Управление

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

Первым делом я реализовал контролер вращающийся полностью вокруг себя, то есть у игрока не было ограничений по Y камеры.

На этой гифке зарождается система строительства

Но вскоре я решил отказаться от такого типа контролера, по нескольким причинам:

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

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

К примеру игрок влетает в корабль имея вращение (180,20,60), а для контролера с гравитацией нужно, (0, 20, 0), и для того что бы задать эти значение нужно некоторое время, что будет забирать у игрока возможность передвигаться. А я делаю расчет на простоту и легкость. В основном из-за этой причины я решил сделать систему как в игре Breathedge

Такой контролер напрочь решает проблему с переходами из открытого космоса в герметичный корабль.

Ресурсы

По скольку я делаю рафтоподобный проект, то, тут должны быть мимолетные ресурсы. Их я реализовал путем создания 2 зон которые спавнят предметы и пускают их в полет.

На момент создание этого возникла проблема «Космос то черный, и объекты черные», и я сразу подумал, что надо их как то подсветить, запилил мелкий шейдер для создания эффекта свечения через Emission и Bloom в пост процессинге.

По стопам Raft

Теперь объекты хотя бы чуть чуть, но видно

Строительство

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

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

В моем случае предметом стал Blueprint(только он у меня оранжевый xD)

По стопам Raft

Одна из самых удобных штук, которую когда либо придумывали это такое меню выбора (меню должно быть круглым, но что то пошло не так)

Включи воображение и представь, что все круглое
Включи воображение и представь, что все круглое

Само строительство работает как обычно, я решил все же взять систему строить сразу, чем использовать проектирование как в The Forest, когда ты ставишь макет и в него вливаешь ресурсы.

Этот индикатор по центру показывает какие ресурсы нужны для постройки. В центре должна быть иконка, ну вы поняли.

По стопам Raft

Ну а так это все выглядит в деле:

Итог

Получился довольно интересный проект, по крайней мере для меня.

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

4242
31 комментарий

Are you remaining son?

8
Ответить

Привет!
Подскажи пожалуйста, а как ты сделал привязку одного объекта к другому в режиме строительства?
У меня просто подобное есть , но вот такую привязку - совсем не соображу как сделать

2
Ответить
Автор

Ты имеешь ввиду конфликты соседних объектов? Или про саму систему?
Для строительства сделал основной пол Build_Main, на нем разместил триггеры, сделал отдельный объект Build_Preview, через рейкаст делал Build_Previw.position = нужный триггер.position, и уже если нажимаешь строить то, создается нужный объект и принимает позицию Preview.
И что бы избежать конфликта соседей:
Изначально делал грязь по типу Взять у триггера его парента и найти у него отраженный триггер, что бы выключить возможность строительства, но затем заменил все на систему куда проще, в момент создания объекта я с помощью Physics.OverlapSphere через центр постройки проверяю триггеры, и если они такого же типа как моя постройка, то выключаю их.

2
Ответить

Комментарий недоступен

2
Ответить

Космический плот? Когда релиз?

1
Ответить
Автор

С учетом того, какие игры сейчас в ранний доступ выходят, то хоть завтра xD

3
Ответить

Красавчик

1
Ответить