RU

Вопросы от Dower

Dower.Hollower #1539 05.11.2015 10:39 3 comments 5342 views

Всем доброго времени суток. Начал создавать игру на платформе QSP. В процессе создания возникает много вопросов, на которые либо не могу найти ответ, либо нет на это времени. Если позволят оставить в живых эту тему - то сюда я буду скидывать вопросы и проблемы, с которыми сталкиваюсь, а когда у вас, многоуважаемые пользователи, будет время и желание помочь - можете или ответить или на худой конец прислать ссылку, где я этот ответ смогу найти. Спасибо большое. Очень в верю в человеческую взаимовыручку! :D

Edited at 05.11.2015 10:56 (10 years ago)

Научился создавать комнаты. Благодаря Aleks Versus’у впилил в игру календарик. Теперь встал вопрос о создании НеПиСей (NPC). Как его создать? Как дать ему статы? Как дать ему возможность двигаться рандомно, но при этом ходить на работу/бар/парк в определённое время? Заранее спасибо.
P.S. Напоминаю, что ссылки на ответ на подобный вопрос тоже принимаются. :D

Белый Шарик #100 06.11.2015 08:19 (10 years ago)

Клон игры “Это” хочешь запилить? :)

Dower.Hollower, доброго денечка) Я тут открыл форум и наткнулся на твой топик)
Сейчас чем-либо конкретным помочь не могу, ибо еще не занимался реализацией NPC на данном движке, но думаю, что здесь нет ничего особо сложного. Начинать лучше всего с самого простого, верно?
К примеру, необходимо понять, что такое NPC персонаж, и как заставить программу взаимодействовать с NPC. Звучит немного сложно и не понятно, хотя на деле, не слишком сложно)
Ну, думаю начать стоит с того, как создать основу для нпс персонажа. Дать ему имя и какие-либо базовые значения для переменных, к которым он будет обращаться при столкновении с определенными условиями. :D
По моему опыту с прошлым игровым движком, могу сказать, что проще (на мой взгляд) сделать все в едином массиве (при условии, что данные нпс персонажа не слишком громоздки).
Пример:

Spoiler
!Торвальд Йоргенсон
 SET npc_ID01AL012528001[0] = 0 & npc_ID01AL012528001[1] = 25 & npc_ID01AL012528001[2] = 1 & npc_ID01AL012528001[3] = 45
 LET $npc_ID01AL012528001[4] = 'Торвальд Йоргенсон' & $npc_ID01AL012528001[5] = 'Человек' & $npc_ID01AL012528001[6] = 'Муж.' & $npc_ID01AL012528001[7] = $fraction_ID0000002[0] 
 SET npc_ID01AL012528001[8] = -1 & npc_ID01AL012528001[8] = 0
 LET $npc_ID01AL012528001[4] = 'Castle01'
!=======================================!
! 0 - определение наименования подтипа NPC (0 - человек); 1 - определение уровня NPC; 2 - определение категории NPC. 0 - Нейтрал, 1 - Союзник, 2 - Агрессия; 3 - определение уровня доверия NPC персонажа к игроку от 0 до 100. (Репутация); 4 - наименование NPC; 5 - раса персонажа; 6 - пол персонажа; 7 - определение NPC к фракциям. $fraction_ID0000001[0] - не относится (вводится наименование фракции); 8 - Персонаж в данный момент занят? Да(0)/Нет(-1); 9 - первый диалог с персонажем? Да(0)/Нет(-1); 10 - Наименование ID локации в которой находится НПС сейчас.

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

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

Рандомное движение можно реализовать с помощью событий <b>rand</b> и массивов данных о посещениях прошлых точек.
Можешь глянуть пример: Выбор случайных вариантов - тянем карты из колоды

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

Log in or Register to post comments.