|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
04.06.2009, 22:59 | #91 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Это верно, что каждому свое. Методы по оптимизации и скорости равноценны, но по изменению взаимотношений между классами не фонтан, ...нужно все сразу продумать, или погружаться в движок по первому требованию.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
05.06.2009, 13:21 | #92 |
Форумчанин
Регистрация: 23.02.2009
Сообщений: 237
|
Этож весь код переделывать надо(:Beep:, :beep:, ну ваще :beep! Ладно я это сделаю ну только вы мне про проходимость расскажите чтобы все сразу сделать и не переделывать по
for i:=1 to 100 do begin раз[i]:= optimizate code end; свой код! |
05.06.2009, 15:00 | #93 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Цитата:
Да и перечисления не мешало бы использовать, а то все эти Byte можно чем угодно заполнить и расу в 5 установить - не проблема, хотя по игровой логике такой не предусмотрено. Опять же несколько нарушена логика "объединения" данных. Выделение танка, его использование, параметры текстуры - всё это не относится к танку как таковому. Я бы сделал как-то так: Код:
Причины выноса в отдельные типы: Состояние: набор состояний банально может измениться и нолики все эти и единицы искать по коду не интересно Раса: допустим, захотелось миссию, где 3 расы присутствует и 2 между собой союзники. Как Вы эту проверку реализуете? А так добавили в класс ТРаса список союзников и в методе: ЭтоВраг поправили определение враждебности. А для танка соответственно определение враждебности будет: если (танк1.раса.ЭтоВраг(танк2)) значит враг оружие: ну опять же решите добавить какую-то новую характеристику оружия и добавлять новую запись к танку? а ведь у танка сразу и пушка и пулемет, а может фантастическая стратегия и у танка 3 пушки будет? Так просто объявить у танка: Код:
танк1.пушка.выстрел(танк2); броня: опять же можно решить сделать более разнообразно, что у этого танка броня невосприимчива к огню, а вот у этого её и из автомата прострелишь, соответственно всё это в классе ТБроня будет прописана и изменения в броне не повлекут изменений в танке. расчет повреждений выносится в класс брони: танк1.жизни := танк1.жизни - танк1.броня.повреждения(оружие: ТОружие); ну модель - это просто к танку, как игровому объекту, никакого отношения не имеет и потому не должны параметры текстуры быть размазаны по игровой логике. И возможно вообще её стоит выкинуть из класса ТТанк и хранить где-нибудь отдельно. В общем как-то так примерно я бы сделал |
|
05.06.2009, 17:06 | #94 | |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Сразу повторю, система древовидная, главное - в типе, это всего лишь универсальные указатели на ресурсы. Оружие типа Byte означает, что у вас может быть 256 модификаций оружия с разными параметрами, какими? ...смотрим файл с номером, в нем параметры и ссылка на графику, как выглядит, как стреляет и как попадает, что с противником должно делаться, такая же ссылка на тип повреждения. Андерстенд? )))
Кто кому враг записывается не в коде и его классах, а в файле карты и триггерах сценария. От вас требуется только написать движок поведения, ориентация на данные значения GTType, ...если в сценарии написано, что расы 3, то другим просто взяться неоткуда. Цитата:
Shadow_1329, ...постараюсь помочь с проходимостью.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
05.06.2009, 17:22 | #95 |
Форумчанин
Регистрация: 23.02.2009
Сообщений: 237
|
Спасибо!
З.Ы. На данный момент я делаю 3 игры - это вот эта стратегия, вторая стратегия и РПГ. В общем эти дискуссии мне только на пользу. Я во второй стратегии делаю все то что я знаю и то что мне сказали здесь и получается то ого-го! Код компактный, аккуратный, понятный(во всяком случае для меня). Ну а в РПГ были бы мучения с этими классами в обработке предметов. |
05.06.2009, 19:38 | #96 | ||
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Цитата:
Так же и для текстур - для каждого юнита заново читаются все параметры и для каждого из них создаётся новая копия текстуры в памяти? Цитата:
Если кто-то не понимает ООП, то это не значит, что на записях Ваш вариант универсальнее, нежели можно на ООП замутить. Ага? С ООП, при грамотном его использовании, код будет стройным, красивым и понятным |
||
05.06.2009, 19:42 | #97 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Цитата:
ЗЫ. Я даже боюсь представить что там у Вас за игры такие, что аж сразу 3 штуки делаете |
|
05.06.2009, 22:12 | #98 | |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Цитата:
Данные менять можно везде, а вот что можно изменить взаимотношения между классами, хоп предка вниз, потомка наверх, короче изменить дерево я честно сказать не знал. Ну, если взять игры, где берется тип корпуса, тип башни, и навешиваются оружия, то ни о каких классах "T-90" со стандартами внутри в коде речи быть не может. В любой момент можно считать готовый файл конфигурации, он сам заполнит для юнитов все параметры, или если не нравится, по ходу меняем параметры, как в сборочном цехе, сохраняем в новый файл конфигурации или в памяти по ходу игры. На счет текстур. Тут есть тип и подтип, создаются они по требованию, по "номеру" юнита берутся данные для этого типа юнита, нужные кадры анимации, дублирования для каждого нет и не может быть, только индексы. Поскольку все в памяти хранится, то выдернуть анимацию нет проблем, достаточно опросить динамический массив по номерам ячеек. В сущности, мой метод аналогичен реляционной модели базы данных, доступ есть в любое место данных, можно скрестить поезд с носорогом, не заглядывая в код. По сути выходит универсальный движок. Здесь же я предлагаю наипростейший и понятный упрощенный вариант, он сам по себе логичен.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
05.06.2009, 23:43 | #99 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Ну вот по моим наблюдениям процедуры + записи действительно будет (намного) легче реализовать, пока проект не дорастёт до определённого уровня сложности, потом ситуация резко меняется, и начинается жуткая путанница, костыли, заплатки. Этот неприятный момент можно сколь угодно долго оттягивать, правильно структурируя код, раскидывая его части по разным модулям, и если удасться успеть воплотить всё задуманное до него - браво, вы постигли тайну Хлопка Одной Рукой, но так получается редко (опять же, это у меня ). То есть как для начинающего - вполне подходит, тем более классы, грубо говоря, похожи на записи, склеенные с процедурами.
Если писать классами - нужно с самого начала хорошо продумать структуру, как ни крути, выйдет уже игровой движок, и если добавить недостающий функционал - элементарно, то вырезание лишнего кода из класса-родителя затронет потомков, скорее всего будут проблемы. Опять же, наделав классов-болванок, можно увидеть полусырой движок/игру в действии, и отладить все ошибки до того, как они проявят себя в готовом продукте. Я вот тут состряпал буквально за 10 минут топором на коленке страшный быдлокод, и тем не менее довольно наглядно работает и легко расширяем (компиляемо, извиняюсь за размер, аттач не цепляется) Где-то через час доберусь домой - перезалью, напишу почему он страшный и что не так
пыщь
|
05.06.2009, 23:44 | #100 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Код:
пыщь
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создаю "тестирующую систему" для проверки задач. Программисты, нужна ваша помощь! | alexfmf | Помощь студентам | 12 | 30.04.2009 20:19 |
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" | MAcK | Компоненты Delphi | 11 | 24.10.2007 10:49 |