Дубликаты не найдены

раскрыть ветку 2
0

1) @moderator,

2)

Иллюстрация к комментарию
раскрыть ветку 1
0
Похожие посты
6160

Сколько я заработал в Steam за 3 месяца. Подводим итоги

Всем привет. Давно не было новостей, но я не ленился, просто хотелось подвести итоги за определенный промежуток времени. Как многие знают я разработчик-самоучка и я уверен в том, что каждый человек, если захочет, то сможет научиться создавать игры. Учитывая доступность информации в наш век, можно научиться всему имея хоть немного свободного времени и стремление двигаться к своей цели. Моя игра The Story of Henry Bishop вышла на площадке Steam в ноябре 2019. И я подведу итоги за 3 месяца продаж. Все цифры я выложить конечно не смогу, ведь  подписывая соглашение Steam я обязуюсь не разглашать информацию со страниц Steamworks. Поэтому из статистики я смогу показать только количество проданных копий. Но я думаю и так вам станет понятно что к чему.

Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity

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

Я перевел игру на 7 языков, самым дорогим переводом был Китайский язык, но самое большое число покупок как раз таки было из Китая. Спасибо братьям китайцам. Мне они показались весьма хорошими игроками. 90% их отзывов положительные, они весьма тепло приняли мою игру. Так что, всем кто хочет сделать игру подобного жанра или игру где много текста я рекомендую в обязательном порядке сделать качественный перевод на упрощенный китайский.

Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity

Как вы видите почти за 3 месяца игру купили 5321 раз, из этого количества покупок следует отнять 14%  возврата. Это не большой процент учитывая то, что у многих моих знакомых разработчиков он бывает куда больше. Основные продажи были во время распродаж и скидок, так что если считать сумму то в среднем эти продажи были со скидкой 25-50% Ничего не  поделаешь, игроки любят скидки. Я сам играю и сам покупаю много чего на скидках, так что это все обычное дело.


Коллекционные карточки

Хотелось бы упомянуть, что на старте выпуска игры Steam не дает возможности выпускать коллекционные карточки, значки, фоны, смайлы. Эта возможность появляется лишь тогда, когда игра превысила определенное количество продаж и запусков игры(так указано в документации). У меня карточки одобрили когда запусков игры было чуть больше 2к, продано копий около 3к. Это на заметку разработчикам. А то я сам искал информацию о карточках и негде и не нашел сколько хоть примерно должно быть.

Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity

Теперь в игре есть вот такие карты, смайлы и фоны.

Часть дохода.

Небольшой отчет о пожертвованиях как и обещал в своих постах и группе в вк.

За 3 месяца удалось собрать и пожертвовать на лечение детей почти 5000$ что и является 50% от чистой прибыли за игру(после уплаты ндс, процента магазина и налогов).

Почти 4 000$ были переведены в белорусский фонд "Шанс" (очень прозрачный фонд который лично у меня вызывает только доверие)  на лечение 3-х детей. Их имена указаны в чеках. И еще 1000$ отложена на реабилитацию еще одного ребенка и будут переданы родителям в руки лично, чек будет предоставлен немного позже в группе в вк, при оплате лечения. Обращаю внимания, что оплата производилась не RUR, а BYN(белорусские рубли)

Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity

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


Планы на ближайшее время!!!

В следующем месяце я хочу выпустить не большую игру на Steam в виде головоломки, легкая игра для детей и взрослых с музыкальным сопровождением от DJ Andrew Clam. У меня идея этой игры возникла еще когда я только начал изучать программирования и движок. Я раньше выпускал что то подобное на мобильных платформах и игрокам очень понравилось. Я немного подробнее расскажу об этой игре на днях в новом посте, когда мне одобрят оформленную страницу, что бы сразу предоставить ссылку всем кому она будет интересна. В ней так же будет режим  2 игрока на одном пк.

Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity
Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity

Еще мы делаем новый проект, это хоррор-триллер от первого лица. Теперь я не один, нас двое и дело движется гораздо быстрее. В данный момент идет работа над дизайном первых 2-х сцен. В игре запланировано 5 больших игровых локаций. Игра должна получиться достаточно длинной.

Мы стараемся все проработать до мельчайших деталей и хотим в данном проекте использовать IK анимации и уделить максимум времени на создание хорошей атмосферы и интересного сюжета.



Вот несколько скриншотов с набросками из первой локации по ходу разработки.

О данном проекте я расскажу немного позже, когда будет что показать)

Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity
Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity
Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity
Сколько я заработал в Steam за 3 месяца. Подводим итоги Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity

В конце поста хотелось бы сказать всем большое !!!СПАСИБО!!! за поддержку. Тем кто купил игру, поддержал словом или советом большое вам спасибо. Благодаря пикабу я узнал что в странах СНГ очень много хороших отзывчивых людей, некоторые мне написали что бы помочь с переводом, кто то помог исправить ошибки в тексте или баг в игре. Кто-то просто оставил хороший отзыв на странице игры в steam с пометкой что он пришел с пикабу. Спасибо вам дорогие друзья!!!


В ближайшее время будет больше постов. Пишите и спрашивайте о чем вам интересно узнать, возможно я напишу об этом в следующих постах. Если кому то помог я очень рад!!! Хорошего вам дня друзья, больше улыбайтесь, идите за мечтой и у вас непременно все получиться.



Steam The Story Of Henry Bishop

Показать полностью 8
2471

Может ли тракторист стать разработчикам игр? Сегодня релиз моей игры в Steam.

Всем привет.

Сегодня очень важный день для меня, во-первых вчера я выписался из больницы после месяца болезни и осложнений от лечения пневмонии(думал отойду в мир иной), во вторых, сегодня 7 ноября, мне исполнился 31 год, ну а в третьих я наконец таки полностью доделал свою игру и сегодня тот самый день когда она выходит на площадке Steam.

Немного отступления:

Тем кто не знаком с моими постами на пикабу вкратце расскажу. Меня зовут Николай, я из Беларуси, по образованию слесарь по сельскохозяйственной техники и как дополнение тракторист(никогда не работал по профессии, максимум что умею это поменять колесо и свечи и то при условии что все легко открутится). Зачем пошел учиться в такую профессию? Да потому что мало кто в 17 лет сильно думает о будущем, тем более с моим аттестатом могли и туда не взять. Старшие классы школы это постоянные прогулы и зависание в компьютерных клубах играя в warcraft, CS и т.п.

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

Может ли тракторист стать разработчикам игр? Сегодня релиз моей игры в Steam. Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity, Программист, Разработка
Может ли тракторист стать разработчикам игр? Сегодня релиз моей игры в Steam. Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity, Программист, Разработка

История Генри Бишопа — это мистический триллер в котором герой может использовать предметы, решать загадки, не только прятаться, но и убивать врагов. На игру я потратил 3 года разработки, делал её в гордом одиночестве, откладывая деньги с зарплат, покупая недостающие модели, озвучку, переводы. Игра в данный момент озвучена на 2‑х языках — английский и русский, так же переведена на 8 языков(субтитры).

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

Может ли тракторист стать разработчикам игр? Сегодня релиз моей игры в Steam. Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity, Программист, Разработка
Может ли тракторист стать разработчикам игр? Сегодня релиз моей игры в Steam. Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity, Программист, Разработка

Изначально еще 3 года назад я не задумывался создать игру для какой-то наживы, я хотел научиться делать игры, освоить движок, левел дизайн, программирование и это было основной моей целью. Поэтому еще тогда в своей группе в ВК в которой было от силы 200 человек я написал что моя главная цель сделать интересную игру и половину заработанных денег пожертвовать на лечение детей в своей стране. Я не писал никогда об этом на пикабу, есть такая категория людей которая все искренние начинания принимает за пиар для наживы и еще какие-то темные схемы. Но вот сейчас мне почему то все ровно,  пусть думают что, хотят. Я не знаю сколько моя игра сможет заработать в ближайшее время, но знаю что мой следующий пост на пикабу будет именно об этом. И очень надеюсь что я, смогу хоть кому-то помочь и сделать  хоть что то хорошее. Даже если игра нечего не заработает, но кто-то вдохновится моими идеями и сделает что-то хорошее и доброе — это уже будет моя большая победа.

P.S.

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

Группа игры в ВК

Страница игры в STEAM

Может ли тракторист стать разработчикам игр? Сегодня релиз моей игры в Steam. Steam, Gamedev, Длиннопост, Ужасы, Инди, Видео, Трейлер, Unity, Программист, Разработка
Показать полностью 5
53

Рисунок для арт-конкурса SCP: Secret Laboratory

Сравнительно новая онлайн-игра на базе SCP: Containment Breach все больше набирает популярность и интерес. На этот раз разработчики устроили конкурс для художников любого уровня, да и для любителей тоже. Цель - нарисовать любого СЦП по своему выбору, плюсом конечно-же будет выбор в пользу сцп, которые есть в игре. Участников набралось много, чего там только не выставляли)
Я сделала свой выбор в пользу SCP - 096 "Скромник". До сих пор кажется мне стремным и  криповым.  Ссылка на "вики" - http://scpfoundation.ru/scp-096

Рисунок для арт-конкурса SCP: Secret Laboratory SCP, Рисунок, Конкурс, Steam, Хоррор, Ужасы, Длиннопост
Рисунок для арт-конкурса SCP: Secret Laboratory SCP, Рисунок, Конкурс, Steam, Хоррор, Ужасы, Длиннопост
Рисунок для арт-конкурса SCP: Secret Laboratory SCP, Рисунок, Конкурс, Steam, Хоррор, Ужасы, Длиннопост

В оригинальной игре он выглядит так. За секунду до...

Рисунок для арт-конкурса SCP: Secret Laboratory SCP, Рисунок, Конкурс, Steam, Хоррор, Ужасы, Длиннопост

В Secret Laboratory вот так. Здесь он мне что-то совсем не понравился, речи об испугаться нет, скорее даже наоборот.

Рисунок для арт-конкурса SCP: Secret Laboratory SCP, Рисунок, Конкурс, Steam, Хоррор, Ужасы, Длиннопост

Конкурс по голосованиям еще идет, но работы к сожалению уже не принимают. Было еще пару интересных и менее криповых идей, но что-то не успела их реализовать.
Кого заинтересовало  - в комментариях оставлю ссылку на конкурс в стиме, где можно посмотреть и другие работы участников. (Понравился от другого художника сцп - 106, кто найдет - поймет, о чем я).

Показать полностью 4
41

Gone in the Mist. Дневник разработки. Страница 1: Паучок заполз в картину

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

Gone in the Mist. Дневник разработки. Страница 1: Паучок заполз в картину Ужасы, Игры, Gamedev, Дневник, Steam, Видео, Гифка, Длиннопост

"Gone in the Mist" - это вселенная, в которой реальный мир сосуществует с астральными. Главный герой наряду с группой других специалистов по паранормальным явлениям довольно-таки давно использует астрал для изучения необычных криминальных случаев. Например, в астральном мире понятием времени можно манипулировать также как и пространством, в итоге детективы могут остановиться на конкретном моменте времени для изучения деталей. Однако оказалось, что все эти инструменты были лишь верхушкой чего-то более туманного и таинственного, ведь помимо поверхностного астрала существует и глубокий, где дым окутывает все пространство, физика не поддается логике, а жнецы ходят по миру, собирая заточенные в мертвых телах души с помощью священных фонарей.

Gone in the Mist. Дневник разработки. Страница 1: Паучок заполз в картину Ужасы, Игры, Gamedev, Дневник, Steam, Видео, Гифка, Длиннопост

Вкратце введя вас в мир игры, хотелось бы прокомментировать первую анимацию, а именно преобразования паука из трехмерного объекта в двумерный, который заточен в картине. Полную анимацию можно посмотреть в Youtube по следующей ссылке: https://www.youtube.com/watch?v=mvrumqls2ao

Начнем с того, что проект делается на основе игрового движка Unity, в котором среди прочего инструментария доступны render textures. Их особенностью является то, что изображение с камеры можно захватить и проецировать на данную текстуру, которая в свою очередь может быть применена на обычном классическом материале. В итоге, поставив камеру за стеной и настроив field of view и near clip plane параметры, можно достичь такого эффекта, что объект в данной камере будет иметь такой же угол обзора и размер, как и в реальном мире. А уже после этого, можно и показать все это дело на объекте картины. Интересной особенностью является то, что картина примыкает к стене, а значит и саму стену не обязательно убирать, что позволяет достичь эффекта, что за картиной нет никакого туннеля (как и показано в видео). Вот и все, просто и элегантно.

Gone in the Mist. Дневник разработки. Страница 1: Паучок заполз в картину Ужасы, Игры, Gamedev, Дневник, Steam, Видео, Гифка, Длиннопост

Надеюсь, данная статья оказалась для вас полезной и вдохновит к созданию чего-то необычного и странного в играх. В следующий раз я расскажу о более сложном в техническом плане эффекте двери посреди комнаты. Кроме того, надеюсь вы нас поддержите в Greenlight, так как совсем скоро эту площадку закроют, а мы так сильно хотим попасть в Steam и показать миру наше видение и идеи.

Ссылочка на наш проект в Greenlight: http://steamcommunity.com/sharedfiles/filedetails/?id=899202...

А вот и печенька прямиком из духовки 🍪

Показать полностью 1
1185

Игра в одиночку. Год моей жизни сейчас проходит Green Light

Всем привет.

Я инди разработчик. Уже год делаю игру, делаю ее один. Примерно два года назад я и понятия не имел как делать игры. Но я всегда любил играть и еще в детстве был обитателем компьютерных клубов. И вот в 26 лет (сейчас мне 28) не шаря ни в математике, ни в программировании, я решил что мое упорство поможет добиться поставленных целей. Мой выбор пал на движок Unity и я взялся за дело. Скажу сразу было трудно, очень трудно. Самое сложное для меня это было понять язык C#. Я потратил много усилий что бы научиться понимать код и писать его заставляя программу делать то, что мне от нее нужно. И моими стараниями, со временем у меня получалась все лучше и лучше, и вскоре я мог уже реализовывать то что было у меня в голове.


Почему один ?

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

Игра в одиночку. Год моей жизни сейчас проходит Green Light Игры, Инди, Ужасы, Greenlight, Newgame, Steam, Steamgame, Длиннопост

История Генри Бишопа:

Это мой первый серьезный проект. Я всегда любил страшные игры, а моим фаворитом в жанре всегда была игра Silent Hill. Я решил создать игру и выдавить из себя максимально все что у меня есть на данный момент. Все свои фантазии и задумки. Но увы я очень самокритичен и поэтому приходиться постоянно что то переделывать и доводить до ума. Практически каждая ночь проходит без сна в работе над проектом. Тяжело ли делать игры одному спросите вы ? Я отвечу - тяжело, даже очень, и чем больше масштаб ваших фантазий, тем больше вероятность что вы не доведете игру до конца. Но если у вас много сил и времени я верю что вы сможете создать все что угодно. Сейчас игра доделана примерно на 60-65% и новость о том что в скором времени закроется Green Light шибанула меня как молотом по голове. Ведь в новой системе Direct пока не определен взнос, а предварительные цифры пророчат его от 100 до 5000$. Лично для меня, человека с зарплатой в 300$ и ребенком на руках, даже такой взнос за игру как 1000$ будет очень ощутимым. Именно по этой причине я решил попытать удачу и успеть пройти Green Light.


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

P.S. трейлер с озвучкой, на русском языке(поверьте я очень старался)


ССЫЛКА НА СТРАНИЦУ ИГРЫ В GREEN LIGHT

http://steamcommunity.com/sharedfiles/filedetails/?id=894543...

Игра в одиночку. Год моей жизни сейчас проходит Green Light Игры, Инди, Ужасы, Greenlight, Newgame, Steam, Steamgame, Длиннопост
Игра в одиночку. Год моей жизни сейчас проходит Green Light Игры, Инди, Ужасы, Greenlight, Newgame, Steam, Steamgame, Длиннопост
Игра в одиночку. Год моей жизни сейчас проходит Green Light Игры, Инди, Ужасы, Greenlight, Newgame, Steam, Steamgame, Длиннопост
Игра в одиночку. Год моей жизни сейчас проходит Green Light Игры, Инди, Ужасы, Greenlight, Newgame, Steam, Steamgame, Длиннопост
Игра в одиночку. Год моей жизни сейчас проходит Green Light Игры, Инди, Ужасы, Greenlight, Newgame, Steam, Steamgame, Длиннопост
Игра в одиночку. Год моей жизни сейчас проходит Green Light Игры, Инди, Ужасы, Greenlight, Newgame, Steam, Steamgame, Длиннопост
Игра в одиночку. Год моей жизни сейчас проходит Green Light Игры, Инди, Ужасы, Greenlight, Newgame, Steam, Steamgame, Длиннопост
Игра в одиночку. Год моей жизни сейчас проходит Green Light Игры, Инди, Ужасы, Greenlight, Newgame, Steam, Steamgame, Длиннопост
Игра в одиночку. Год моей жизни сейчас проходит Green Light Игры, Инди, Ужасы, Greenlight, Newgame, Steam, Steamgame, Длиннопост
Показать полностью 9
25

Ancient Guardian дневник разработки. Настройка управления.

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


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

Ancient Guardian дневник разработки. Настройка управления. Инди, Gamedev, Ужасы, Бродилка, Steam, Настройки, Управление, Unity, Длиннопост

"Привет, мне нравится ваша игра, но есть единственная проблема, у меня клавиатура с AZERTY раскладкой, а ваша игра рассчитана на QWERTY, я надеюсь вы увидите эту запись и сделайте с этим что-нибудь, заранее спасибо. Кстати, продолжайте работу, я надеюсь что мультиплеер скоро появится."

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

Кстати именно от него я узнал, что существуют клавиатуры с AZERTY раскладкой О_о

Для начала я точно удостоверился, что в Unity нельзя менять управление через игру, только внутри движка или через стандартное окошко-лаунчер, который мы давно выключили. Что же делать? Правильно, писать собственный Input Manager!

Ancient Guardian дневник разработки. Настройка управления. Инди, Gamedev, Ужасы, Бродилка, Steam, Настройки, Управление, Unity, Длиннопост

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

Требования следующие: воспринимать нажатия с клавиатуры и мыши, возможность получать нажатие той или иной кнопки с любого объекта, при этом вне зависимости от сцены, ну и конечно, симуляция осей. К сожалению, пока невозможно получать нажатия с геимпада, а также невозможно назначить на кнопку какую-нибудь ось, эти фишки будут в будущем, сейчас нам надо хотя бы обеспечить биндинг с клавиатуры и мыши.

Ancient Guardian дневник разработки. Настройка управления. Инди, Gamedev, Ужасы, Бродилка, Steam, Настройки, Управление, Unity, Длиннопост

Теперь перейдем не посредственно к коду. За работу всей системы отвечает один скрипт, он так и называется InputManager. Забегая вперед скажу, большая часть скрипта занимают функции, которые вызываются из вне. Что нужно для начала? Определить кнопки и оси, которые будут использоваться в игре, для этого я создал два класса, Button и Axis.

[System.Serializable]
public class Button
{
public string id;
public KeyCode key;
[HideInInspector]
public bool value;
[HideInInspector]
public bool down;
[HideInInspector]
public bool up;
public bool useAdditional;
public string additional;

public Button(string _id, KeyCode _key, bool _useAdd, string _add)
{
id = _id;
key = _key;
useAdditional = _useAdd;
additional = _add;
}
}

В нем мы определяем id кнопки, клавиша, которая установлена для этой кнопки, значения этой кнопки, также есть такая вещь как additional, про которую я расскажу позже. В самом внизу я также сделал конструктор. Класс Axis выглядит почти также, в нем лишь чуть больше настроек.

Дальше я определил 4 массива с этими классами:

public Button[] defaultButtons;
public Axis[] defaultAxises;
public static Button[] buttons;
public static Axis[] axises;

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

Со статичными же массивами происходит всё взаимодействие.

Ancient Guardian дневник разработки. Настройка управления. Инди, Gamedev, Ужасы, Бродилка, Steam, Настройки, Управление, Unity, Длиннопост

Так выглядит скрипт в инспекторе

Также в скрипте прописан синглтон и DontDestroyOnLoad, так как нам нужен только единственный экземпляр этого объекта, который будет бегать от сцены к сцене, посему же в начале идет проверка, чтобы контроллер был один. Выглядит это следующим образом:

private static InputManager instance;

public static InputManager Instance()
{
return instance;
}

void Awake()
{
if (Instance() == null)
{
instance = this;
GameObject.DontDestroyOnLoad(gameObject);
}
else DestroyImmediate(gameObject);
}

В самом начале вызова скрипта, статичные массивы принимают значения не статичных, дефолтных, по-началу это было сделано так:

arr2[i] = arr1[i];

Что конечно работало не так как надо, ибо так идет присвоение ссылки, а не значения, то есть меняя статичную, меняется и дефолтная, чего не надо. Испробовал всякие System.Array.Copy, arr2 = arr1.Clone(), но ничего не работало, поэтому пришлось пройтись циклом и заюзать конструктор, который я прописал в классе Button и Axis, и чудо! Заработало.

Вот тут начинается основная работа этого скрипта. После того как все кнопки и оси определенны в Update мы проверяем все кнопки и оси, которые определили. Выглядит это примерно так:

for (int i = 0; i < buttons.Length; i++)
{
buttons[i].value = false;
buttons[i].up = false;
buttons[i].down = false;
if (Input.GetKey(buttons[i].key))
buttons[i].value = true;
if (Input.GetKeyUp(buttons[i].key))
buttons[i].up = true;
if (Input.GetKeyDown(buttons[i].key))
buttons[i].down = true;
}

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

С осями немного сложнее. В осях определенно две кнопки, положительная и отрицательная, а также определен диапазон по-которой эта ось ходит. Например, нам нужна ось "Вперед-Назад", для этого вводим две кнопки, FORWARD и BACKWARD, вводим их id в ось, вписываем диапазон, у нас это [-1,1], а дальше с помощью Mathf.Lerp узнаем значение этой оси.

Ancient Guardian дневник разработки. Настройка управления. Инди, Gamedev, Ужасы, Бродилка, Steam, Настройки, Управление, Unity, Длиннопост
Данный пример на практике

Код оси:

for (int i = 0; i < axises.Length; i++)
{
float result = 0;
if (buttons[axises[i].posInd].value)
result = axises[i].max;
else if (buttons[axises[i].negInd].value)
result = axises[i].min;
axises[i].value = Mathf.Lerp(axises[i].value,result,Time.deltaTime*axises[i].damp);
}

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

Теперь про параметр Additional, который я обещал упомянуть. Так как наш менеджер не поддерживает геимпад и оси с мыши(Движение мыши по X и Y; Колесико мыши), но при этом мы не хотим лишаться их поддержки, то нужен этот параметр. Мы вписываем какой-то input в стандартном Input'е вводим его название в наш менеджер и он складывает значения из Input с нашими кастомными кнопками и осями.

Ancient Guardian дневник разработки. Настройка управления. Инди, Gamedev, Ужасы, Бродилка, Steam, Настройки, Управление, Unity, Длиннопост
Слева наш менеджер, справа стандартный

И последнее, чем занимается скрипт, куча статичных функций. Вот их список:

public static void SetDefaults()
public static void LoadControls()
public static void SaveControls()
public static int GetButtonIndex()
public static KeyCode GetKeyCode()
public static bool GetKey()
public static bool GetKeyUp()
public static bool GetKeyDown()
public static void ChangeKey()
public static void ClearKey()
public static float GetAxis()

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

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

Input.GetButtonUp("Name") -> InputManager.GetKeyUp("Name")

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

Напоследок о том как происходит замена клавиши в игре.

Ancient Guardian дневник разработки. Настройка управления. Инди, Gamedev, Ужасы, Бродилка, Steam, Настройки, Управление, Unity, Длиннопост

Здесь используется еще один скрипт, который получает значение клавиши из менеджера и выводит его в виде "[KEY]", также в нем реализована очистка клавиш и назначение. Остановлюсь на последнем.

Когда игрок нажимает на строчку с кнопкой, выходит сообщение, который вы видите сверху на скриншоте, в этот момент Unity ждет нажатие кнопки от игрока, пока он не нажмет что-нибудь, сообщение не исчезнет. После нажатия, считывается клавиша и с помощью функции ChangeKey() мы меняем в менеджере клавишу, и если игрок нажмет "Применить", то это изменение будет записано в PlayerPrefs. Скриптовая сторона вопроса:

if (Event.current.type == EventType.KeyDown)
{
newKey = Event.current.keyCode;
InputManager.ChangeKey(key, newKey);
}

if (Event.current.type == EventType.MouseDown)
{
newKey = (KeyCode)System.Enum.Parse(typeof(KeyCode), "Mouse"+Event.current.button);
InputManager.ChangeKey(key, newKey);
}

if (Event.current.shift)
{
if (Input.GetKey(KeyCode.LeftShift))
InputManager.ChangeKey(key, KeyCode.LeftShift);
if (Input.GetKey(KeyCode.RightShift))
InputManager.ChangeKey(key, KeyCode.LeftShift);
}

Для кнопок мыши и шифтов пришлось делать отдельные условия.

Собственно это всё, вышло довольно объемно и сухо, но получилось осветить всё самое интересное.


Спасибо за внимание!


Страница игры в Steam: http://store.steampowered.com/app/557580

Страницы нашей группы в ВК: https://vk.com/hellsquirrelgames

Показать полностью 5
Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: