Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2010, 23:32   #1
NikSa
 
Регистрация: 16.06.2010
Сообщений: 4
По умолчанию Структура классов для РПГ

Доброго времени суток, очередной один из 20 таких же вопросов за сегодня. :-)
В очередной раз подхожу к вопросу создания игры и сталкиваюсь с тем же вопросом: "Как правильно и удобно построить структуру классов и методов"
1. Сколько и какие должны быть базовые классы?
- Character
- Item
- Location
- ?
2. Методы взаимодействия между объектами одинаковых и разных классов должны быть реализованы в этих же классах или должен быть отдельный action class?
Character1.Attack(Character2);
или
Action.Fight(Character1,Character2, "Attack");
может
Item1.AplyProperties(Character1);
или
Character.Aply(Item1);
или
Action.AplyProperties(Character1,It em1);

3. Какие из свойств объектов, например Character1 должны быть рассчитаны заранее (модификаторы, только базовые хар-ки, или только должны быть окончательно определены необходимые формулы расчета) перед применением действия. Насколько это безопасно с точки зрения возможности пропустить важный расчет модификатора, насколько целесообразно нагружать процессор расчетом с нуля каждого действия?

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

ЗЫ Как программист я пока себя похвалить не могу, в крупных проектах не участвовал, приходилось писать небольшие утилиты, небольшой модуль вебприложения на разных языках.
NikSa вне форума Ответить с цитированием
Старый 17.06.2010, 10:34   #2
Juffin
Форумчянин
Форумчанин
 
Аватар для Juffin
 
Регистрация: 05.04.2009
Сообщений: 446
По умолчанию

1. Это решать тебе, сделай так, как тебе кажется логично и удобно. Так же все зависит от самой игры - РПГ бывают разные.
2. Смотря какие взаимодействия. Например, подбирание предмета можно сделать как метод персонажа, потому что он "главный", а бой процедурой ( Fight(Char1,Char2) ), потому что персонажи "равны". Опять же, все зависит от игры.
3. Тут тоже как хочешь. Единственное, что могу сказать - процессоры сейчас мощные, поэтому вычислением 5-6 характеристик ты его не сильно нагружишь.
Nobody expects Spanish Inquisition!
Juffin вне форума Ответить с цитированием
Старый 17.06.2010, 10:47   #3
liljon
Форумчанин
 
Регистрация: 03.01.2010
Сообщений: 229
По умолчанию

как у вас вообще устроен АИ?
подпись
liljon вне форума Ответить с цитированием
Старый 17.06.2010, 15:07   #4
NikSa
 
Регистрация: 16.06.2010
Сообщений: 4
По умолчанию

Juffin спасибо за ответ.
В общем за вчера немного организовал в своей голове понимание что я хочу увидеть :-)
РПГ риалтаймовая, т.к. многопользовательская :-) по этому все будет обрабатываться за тики. На сейчас начал организовывать базовые классы со свойствами и обработчик действий. Т.е. Именно обработчик будет производить все действия над группами объектов. Сами базовые классы будут иметь только свойства действий по которым обработчик будет определять необходимые действия. Тем самым я огражу себя от несанкционированного изменения объекта, и смогу управлять ветвлениями в одном месте (классе). Но меня уже начал пугать этот обработчик, слишком он громоздкий представляется. Очень хочется описать интерфейсы, но никак не можется, т.к. до конца не ясно кто за что отвечает. Расчет параметров уходит на 3-й план, это даже не вопрос по сравнению с другими вставшими на повестку. :-)
liljon пока никак. И я не понимаю ваш вопрос :-)

ЗЫ Пишу на C# в свободное от работы время.
NikSa вне форума Ответить с цитированием
Старый 17.06.2010, 17:02   #5
liljon
Форумчанин
 
Регистрация: 03.01.2010
Сообщений: 229
По умолчанию

Объекты, с которыми взаимодействуют игроки, стоит рассматривать как аи (например теже предметы которые следует подбирать, магазины, боты и.т.д.), управлемый менеджером (основным классом).
Вообще как вы научита бота выполнять Action.Fight(Character1,Character2, "Attack") ? Как он узнает когда это надо выполнить?

Почитайте про технологию автоматов и вы меня поймете
подпись
liljon вне форума Ответить с цитированием
Старый 17.06.2010, 18:14   #6
NikSa
 
Регистрация: 16.06.2010
Сообщений: 4
По умолчанию

liljon, спасибо за статью. Исходя из того что я начал, похоже я начал описывать второй тип ИИ, т.е. глобальный. На данный момент я вижу основной менеджер, который будет обрабатывать все объекты-автоматы (работающие по "правилам"). Конечно нейронные сети это круто, но как замечает автор "CHOREOGRAPHED AI" до сих пор достоен внимания. :-)
Жаль, что эта статья не попалась мне вначале сэкономила бы мне время :-) Видимо не то гуглил.

Буду благодарен за советы. :-)
NikSa вне форума Ответить с цитированием
Старый 18.06.2010, 11:42   #7
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Цитата:
Почитайте про технологию автоматов и вы меня поймете
Полезная статья. Хотя до нечто подобного я в свое время сам додумался.
Вадим Буренков вне форума Ответить с цитированием
Старый 18.06.2010, 23:59   #8
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Насколько Я понимаю ситуацию, у Вас очень неправильный подход к делу. Дело в том, что Вы хотите использовать классы - решение, конечно, красивое и в некоторой степени удобное, но обработка классов весьма трудоемкое занятие (для компьютера). Это может привести в итоге к "томозам". На Вашем месте Я бы использовал массивы данных.
Виталий Желтяков вне форума Ответить с цитированием
Старый 19.06.2010, 00:08   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

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

ЗЫ: тут очень многое зависит от реализации.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.06.2010, 01:01   #10
NikSa
 
Регистрация: 16.06.2010
Сообщений: 4
По умолчанию

Спасибо за дискуссию.
Однажды, очень давно, когда я только изучал программирование, я написал какую то программку на паскале использовав рекордсеты и функции. Чуть позже я стал изучать классы и ООП и решил ради интереса переписать свою программу. Я ее полностью переписал, заменил рекордсеты на классы, а функции сделал методами этих классов. Фактически в программе ничего не поменялось, лишь блоки кода перенеслись в другие места. После чего я откомпилировал обе программы и засек время их выполнения, вариант с классами отработал в полтора раза дольше :-( Это было еще на ЕС 1840, в те года, когда о "двойках" только мечтали ;-) и естественно производительность стояла не первом плане. Сейчас я глубоко сожалею о том опыте, потому, как он заставил меня бросить изучать ООП и фактически направил меня в другое русло.

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

Однако, хотя я написал пока очень мало, :-) меня уже смущает моя реализация обработки правил. На данный момент для этого уже существует 3 базовых класса и пара производных. А ведь это основное, что будет выполняться постоянно. :-(
NikSa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра врде РПГ ZBEP Gamedev - cоздание игр: Unity, OpenGL, DirectX 13 13.05.2010 06:47
Реализация РПГ... Shadow_1329 Gamedev - cоздание игр: Unity, OpenGL, DirectX 20 16.08.2009 18:40
Поиск группы разработчиков энтузиастов для создания онлайн РПГ! kaspyy Фриланс 2 20.06.2009 22:17
Создание классов и использование объектов классов при написании программ в среде C++. Frozen inside Помощь студентам 0 16.04.2009 23:18
РПГ игра Принц Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 10.06.2008 15:57