Инди
Zed

По стопам Raft

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

Зарождение

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

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

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

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

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

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

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

Ну понеслась

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

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

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

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

«Сюжет»

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

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

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

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

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

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

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

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

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

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

  • Здоровье
  • Голод
  • Кислород

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

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

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

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

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

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

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

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

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

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

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

Управление

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

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

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

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

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

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

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

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

Ресурсы

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

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

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

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

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

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

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

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

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

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

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

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

Итог

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

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

{ "author_name": "Zed", "author_type": "self", "tags": ["\u043a\u0440\u0430\u0441\u0430\u0432\u0447\u0438\u043a","\u0438\u043d\u0434\u0438"], "comments": 31, "likes": 39, "favorites": 24, "is_advertisement": false, "subsite_label": "indie", "id": 195073, "is_wide": false, "is_ugc": true, "date": "Wed, 26 Aug 2020 18:51:00 +0300", "is_special": false }
0
31 комментарий
Популярные
По порядку
Написать комментарий...
8

Are you remaining son?

Ответить
2

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

Ответить
2

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

Ответить
4

Поставил бы плюс и на пост и на коммент , но увы , меня заминусили)

Ответить
2

Спасибо! Теперь мне есть над чем поразмышлять))

Ответить
2

Zed dead, baby. Zed's dead

Ответить
1

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

Ответить
3

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

Ответить

Адекватный диод

Zed
1

без вишлистов никто не увидит твою игру в раннем доступе :)

Ответить
1

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

И точно так же как и с принятием этого поста вами, я был приятно удивлен. Игру добавляли в вишлисты и покупали, да и сейчас покупают(кончено не миллион копий, но долларов 100-200 приносит)

Если интересно, что за игра, я не очень хочу ее прикреплять xD 
https://store.steampowered.com/app/1086840/Operation_Sniff/

Ответить

Адекватный диод

Zed
1

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

Ответить
1

угарная игруха. Глянул как какой-то стример полумиллионник в неё играет с другом.

Ответить
1

Красавчик

Ответить
1

Очень классно получается и интересно)
И пишешь тоже интересно))
Надеюсь у тебя все получится))

Ответить
1

Я думал, что забью после статьи, ибо ожидал, что будет хейт из-за "Оооооо нам 99999 клонов рафта не достаточно?" :)
Но думаю продолжу ее дорабатывать, и скорее всего буду писать еще посты.

Ответить
1

Шикарный концепт арт! )
А почему объекты-то все темные? Если это обломки станции, то они скорее серебристые должны быть и блестеть сами по себе.

Ответить
1

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

Ответить
1

О, наканец-та девлог от человека, который до этого делал игры, а не в стиле "из патологоанатома / ветеринара / продавца в разработчика игр".

Но вообще мало, пиши исчо.

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

Ответить
0

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

Ответить
0

Я кстати тоже хотел бы такой пост накидать об одном из моих проектов, но он уже не на нулевой стадии, и мне не совсем понятно как начать в таком случае. "Ну, короче, я тут уже часов 30 поработал, вот тут строительство, конвейеры и радиоактивные пауки, фигачим дальше".

Ответить
1

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

Ответить
1

А чем все закончилось-то? 

Ответить
0

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

Ответить
1

В Рафте движущие силы - ветер и течение. А здесь за счёт чего предполагается движение самой платформы и местного мусора?

Ответить
0

Ну если разбираться логически, то весь мусор который летит он движется по орбите. То есть он уже давно летает вокруг планеты, а платформа статична на данном этапе. Мне друг предложил идею с двигателями и возможностью летать по орбите по X и Y. По сути тоже как в в альфе рафта, плот стоит на месте, а все движется.

Ответить
1

"какоГО это быть писателем". Если так написано специально, то прикольно. А то я уж и хз с вашими метапостирониями

Ответить
0

да да, именно специально)0)))

Ответить
1

пиши, когда еще че будет. было интерестно 

Ответить
1

Если не встречал похожих игр, то посмотри Breathedge)

Ответить
0

Ну я в статье писал про нее) Но для меня она больше про сюжет, нежели про выживание и развитие. В моем концепте стоит легкость и простота, где нет прямого сюжета. Если или даже когда проект дойдет до стадии, когда будет добавлен какой либо "сюжет" думаю он будет преподноситься игроку в виде изучения, то есть игрок сам будет находить весь сюжет и сопоставлять всю историю. Не особо люблю реализовывать механику по типу МенеджерЗаданий, где идет линейный список заданий :)

Надеюсь получится сделать что то подобное.

Ответить

Комментарии

null