Дневник разработки
Привет DTF! Решил начать вести дневник разработки, дабы узнать мнение людей о моей игре, рассказать с какими трудностями столкнулся, ибо я в программировании знаю лишь азы, но игру мечты-то каждый разработать хочет), расскажу как и что я сделал, может кто и со мной своими мыслями поделится, а кому-то мои наработки окажутся полезными. Игра будет на Unity. И так, начнём.
Замысел
Планирую запилить некую смесь Survival игры с рейдами, вылазками, да и добавить ивенты не помешало бы. Т.е. есть база, на ней можно вооружить игрока, возможно добавлю строительство, а после выбрать то место, куда игрок хочет направиться(Вылазка). При вылазке, игрока забрасывает на сервер с взятым им экьюпом. Игрок начинает лутаться, как я планирую не на маленькой территории, встречать игроков, общаться с ними или же воевать. Когда вы решите что вам достаточно лута, то можете выходить с локации(Идти на точку выхода). Ну вообщем то и всё. Это всё будет в 2D и под мобилки.
Начало
Сперва нашёл свой старый TDS шутер, который сделал на основе какого-то ассета, но практически всё в нём перелопатил, оставил лишь передвижение персонажа. Тогда я решил сделать простеньких ботов, сделал им простенькую рандомную генерацию лута. Для этого я создал несколько массивов, в которых хранились предметы для ботов, которые я уже заранее создал, но отключил.
Затем, в скрипте сделал пару bool'ов, которые проверяли, делать для этого NPC рандомный лут или нет. Несколько глупо это сделал, да и кот убог, но повторю, в программировании я не силён и одна из причин почему выставляю всё это на обозрение - я надеюсь на ваш совет.
Таким образом, у каждого бота появляется свой лут. Тогда же я решил сделать и инвентарь для игрока.
Инвентарь
Инвентарь я реализовал довольно просто. Для начала создал скрипт для компонента инвентаря, туда поместил значок предмета, название и небольшое описание.
bool InTheList пригодится мне чуть позже, когда я буду проверять - есть предмет в списке "Предметы поблизости" или нет. После я создал скрипт PlayerInventory, думаю понятно за что он отвечает. В нём я создал массивы, которые хранят: все предметы игрока; предметы, которые игрок может подобрать; и два массива для слотов в UI, которые будут созданы (Массив слотов для объектов в инвентаре и массив для слотов объектов, которые можно подобрать).
Сами эти слоты я создал заранее, так выглядит пустой слот.
После того как я его создал на сцене, необходимо закинуть его в файлы проекта как префаб. Для начала нужно создать меню, в котором будут отображаться предметы вокруг игрока. Там будут появляться эти "Слоты". При пересекании триггера игрока и предмета, предмет добавляется в массив предметов, которые может подобрать игрок. Сразу после создаётся слот, который так же помещается в массив, но уже для слотов объектов, которые можно подобрать.
Получается что кейс и объект, который игрок может подобрать оказываются на одинаковых местах в своих массивах. Тогда объект узнаёт на каком месте он стоит и обращается к кейсу, который находится на том же месте. Ему он передаёт свои данные - Название предмета, небольшое описание и иконку. Теперь о булле InList. При попадании игрока в триггер объекта, объект приравнивает InList = true. А при выходе - False, сделал я это, уже сам не знаю зачем, но пусть будет)).
На сегодня всё. Я удивлюсь если это кто-то прочитает. Извиняюсь за безграмотность, я же школьник, мне простительно, так ведь?). Пожалуйста, пишите пожелания, ибо это моя первая статья вообще. Очень жду комментариев, если кто-то всё же прочтёт статью)
Если кому-то будет интересно, напишу следующую статью, о том как реализовал подъем/выбрасывание лута.
Вот такой первый опыт в ведении дневника)
P.S если кого-то заинтересует игра: