Хорошо! Хорошо!:  0
Плохо! Плохо!:  0
Показано с 1 по 7 из 7

Тема: Реализация предысторий персонажей

  1. #1

    По умолчанию Реализация предысторий персонажей

    Хочу сделать рандомную генерацию предыстории группы главгероя в стиле где родился и с кем вырос, чтобы в результате получилось что-то типа:
    Герой1(родился: в городе, рос: в большой семье), Герой2(родился: в лесу, рос: воспитан дикими животными), Герой3(родился: в деревне, рос: сирота)
    или
    Герой1(родился: в деревне, рос: в большой семье), Герой2(родился: в лесу, рос: без отца), Герой3(родился: в городе, рос: воспитан дикими животными)
    Вопрос: как это хранить?
    Изначально думал воспользоваться переключателями, но получается что при 4 героях и 4 возможных вариантах мест рождения, количество переключателей выходит огромным.
    Второй мыслью было использовать переменные, но, насколько я понял, нельзя создать переменную типа массив, чтобы запихнуть в неё всю инфу об определённом персонаже. А если создавать переменные на каждого персонажа, то их количество, конечно, меньше, чем переключателей, но всё равно в процессе можно запутаться. Да ещё и переменная существует отдельно от персонажа, а хотелось бы чтобы присутствовали какие-то связи (или это не обязательно?)
    В результате мне нужна в первую очередь помощь идеями где и как хранить подобную инфу более правильно, чтобы в дальнейшем было удобно к ней обращаться в проекте? Или, может, существуют другие способы решения данной проблемы?

  2. #2
    Познающий Аватар для Klon
    Информация о пользователе
    Регистрация
    23.04.2008
    Сообщений
    526
    Записей в дневнике
    11
    Репутация: 20 Добавить или отнять репутацию

    По умолчанию

    Где и сколько раз будет выводится подобная инфа?

    Заходи на чаёк

  3. #3

    По умолчанию

    Конечно логичнее воспользоваться скриптами для этого. Там есть массивы.

    Но для простой генерации можно использовать переменные.
    Допустим переменная ограничена 99 999 999. Возьмем одну переменную для одного героя.
    И того у нас получается: 8 разных параметров на каждый порядок числа и 9 возможных значений для каждого из них.

    К примеру, сотни миллионов — это место рождения.

    9 - в деревне
    8 - в городе
    7 - в лесу
    и т.д.

    Десятки миллионов — семья.

    9 - в приюте
    8 - в большой семье
    7 - без отца
    и т.д.

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

    Если переменная1 > 90 000 000, то герой 1 родился в деревне
    Отнимаем от переменной1 90 000 000
    Если END

    Если переменная1 > 80 000 000, то герой 1 родился в городе
    Отнимаем от переменной1 80 000 000
    Если END

    и т.д.

    Дальше следующий порядок

    Если переменная1 > 9 000 000, то герой 1 родился в приюте
    Отнимаем от переменной1 9 000 000
    Если END

    Если переменная1 > 8 000 000, то герой 1 родился в большой семье
    Отнимаем от переменной1 8 000 000
    Если END

    Чтобы не потерять переменную1 после вычитаний, можно перед всеми операциями записать ее значение в другую, буферную.

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

    Например,
    переменная1 = RAND(9) * 10 000 000 #место рождения
    переменная1 = переменная1 + RAND(9) * 1 000 000 #семья
    переменная1 = переменная1 + RAND(9) * 100 000 #девушка

    и т.д.
    Последний раз редактировалось Arnon; 14.07.2014 в 15:22.


    Dropbox — бесплатное хранилище файлов с прямыми ссылками.

    Humble Bundle — игры, подборки и наборы со скидками.

  4. #4

    По умолчанию

    Цитата Сообщение от Klon Посмотреть сообщение
    Где и сколько раз будет выводится подобная инфа?
    Вводиться она будет 1 раз при старте игры, а выводиться она должна произвольное количество раз в самых разных местах: в диалогах в качестве текстовой инфы "я родился в лесу и всю жизнь прожил один", также её надо использовать как переключатели для разных событий и т д.
    Цитата Сообщение от Arnon Посмотреть сообщение
    Конечно логичнее воспользоваться скриптами для этого. Там есть массивы.
    Тут есть ряд проблем:
    1) я только знакомлюсь с мейкером и пока даже не весь встроенный функционал освоил, а работа со скриптами подразумевает глубокое понимание проги.
    2) насколько я понимаю скрипты это надстройка над мейкером, поэтому использовать их надо только в тех случаях, когда встроенными методами сделать задачу невозможно/слишком трудоёмко
    Цитата Сообщение от Arnon Посмотреть сообщение
    Допустим переменная ограничена 99 999 999. Возьмем одну переменную для одного героя.
    И того у нас получается: 8 разных параметров на каждый порядок числа и 9 возможных значений для каждого из них.
    Отличная идея. Единственный минус - это хак. пока я вплотную работаю с проектом, я помню что вон та семёрка в третьем разряде означает "место жительства - деревня", но стоит мне отвлечься от проекта, или накопить большое количество таких неявных связей (тем более если их не документировать где-то), начинаешь забывать что к чему, и в дальнейшем это вызовет гору мучений.
    Судя по всему придётся разбираться в скриптинге, чтобы допиливать функционал

    upd: оффтоп.
    Цитата Сообщение от Arnon Посмотреть сообщение
    переменная1 = переменная1 + RAND(9) * 100 000 #девушка
    Возможные варианты: одинокий, есть девушка, есть парень (О_о)... другие варианты даже представлять боюсь >_<
    Последний раз редактировалось kiarwine; 14.07.2014 в 15:39.

  5. #5
    Познающий Аватар для Klon
    Информация о пользователе
    Регистрация
    23.04.2008
    Сообщений
    526
    Записей в дневнике
    11
    Репутация: 20 Добавить или отнять репутацию

    По умолчанию

    Arnon
    С переменными самый простой вариант да, но вот чего он хочет:
    выводиться она должна произвольное количество раз в самых разных местах: в диалогах в качестве текстовой инфы "я родился в лесу и всю жизнь прожил один", также её надо использовать как переключатели для разных событий и т д.
    Чтобы такое выводить текстом, нужно ведь перебрать все вариации, не так ли?

    Заходи на чаёк

  6. #6

    По умолчанию

    kiarwine, вы знаете слово "массив", поэтому я предположил, что есть закомство хоть с каким-то языком программирования. Освоить Ruby для такой задачи с оглядкой на какой-нибудь знакомый язык (даже простейший) не составит труда.
    Поэтому я и говорю, что скрипты — самый логичный вариант, они буквально созданы для таких вот моментов. А то, что я привел это действительно хак. Я думаю неделю можно потратить на изучение Ruby для этой задачи при наличии багажа знаний. Без него труднее, но всяко лучше возни с переменными, тут они — простейшая форма.

    Цитата Сообщение от Klon Посмотреть сообщение
    Чтобы такое выводить текстом, нужно ведь перебрать все вариации, не так ли?
    Я бы сказал примитивный вариант. Для вывода текста одним сообщением пока не представляю как это можно сделать, а перебрать все вариации конечно придется. Перебор можно засунуть в общие события и вызывать по мере надобности. Но там понадобятся дополнительные ещё переменные... в общем трата времени.


    Dropbox — бесплатное хранилище файлов с прямыми ссылками.

    Humble Bundle — игры, подборки и наборы со скидками.

  7. #7
    Хранитель Форума Аватар для Валера
    Информация о пользователе
    Регистрация
    15.04.2008
    Адрес
    Москва
    Сообщений
    14,006
    Записей в дневнике
    3
    Репутация: 166 Добавить или отнять репутацию

    По умолчанию

    Дело в том, что, если разобраться, игре весь этот бесконечный рандом не нужен. Подойдем практически: на что влияет место рождения? Если от этого зависит сюжет, то столько линий сюжета никто никогда не реализует. Если это формально, то зачем вообще?
    На что влияет, если у героя есть/живы родители или нет/умерли? Он будет приезжать их навещать? Приходить на могилку? Это повлияет на дальнейшее? Родовой меч можно получить и от дяди/старейшины/учителя.
    Если так хочется разнообразия в предыстории, то лучше хорошо разработать 3-4 и подать как гарнир к классам, традиционно. Воин - из города, маг - из леса, лучник - из деревни... Если мало, добавить к каждому: сирота/не сирота. И т.п.
    Например: как правило, герой отправляется в путь-дорогу холостым. Почему? Вот, возможность разнообразить предысторию. Не нужно подходить к предыстории формально.

    Спойлер И как тебе не стыдно-то, а, Валера?:


    Оборона форта: http://rghost.ru/8kLGxFtD2
    Сделать, чтоб все происходило, как я хочу, - вот, собственно, и весь мейкер!
    Адский Рейд: http://rpgmaker.su/vbdownloads.php?d...downloadid=106

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Реализация предысторий персонажей