![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#101 | |||
Старожил
Регистрация: 22.05.2007
Сообщений: 9,091
|
![]() Цитата:
![]() Ну да я собственно этого и не предлагал Цитата:
В классы я бы выделил практически все свойства юнитов. Например, у Вас где идёт расчет защиты, которая броня даёт? Думаю, что где наносится повреждение юниту, там и вбита формула (если так, то будет дублирование кода), ну или может в каком-то модуле где-то функция есть соответствующая. В общем найти этот расчет брони будет не так просто. Если же создать класс ТБроня, то в нём будут сосредоточены и параметры брони и расчет защиты. Если вдруг решили, что-то у брони изменить, то вот она вся в одном месте и нигде лазить не надо. Цитата:
Код:
2. изменение способа хранения текстур повлечет за собой изменения по всему коду будет такое: Код:
И сильно универсальный? прям вот можно n оружия на танк поставить, сделать разные параметры для лобовой, боковой и задней брони юнита и чтобы он еще вдобавок летал, пел и матерился? Наличие такой структуры как GUnit уже ограничивает универсальность до предусмотренной Вами. Причем тут уже: шаг влево, шаг вправо - расстрел. Допустим, у нас на карте могут быть следующие объекты: ящик, человек, автомобиль, танк. Для ящика у Вас много лишней информации: скорость передвижения, броня,... Для автомобиля не хватает: радиус поворота Упираемся в универсальность? Либо добавлять радиус поворота в GUnit, но тогда для ящика еще больше лишнего станет и все файлики конфигурации править придется, т.к. новое свойство появилось. Я же предлагаю: Код:
Так вот... впоследствии смотрим файл конфигурации наш и видим, что дальше идёт бочка. Соответственно создаём её как объект ТОбъект. Человек соответственно будет ТЮнит, а автомобиль и танк - ТТехника. Ничего лишнего нигде не хранится. Всё только нужное ![]() А самое замечательное - никакого дублирования кода и в случае чего расширяются возможности на ура: нового наследника создали и лепи себе новых юнитов на здоровье (при этом старых не нужно менять и соответственно заново тестировать) ЗЫ. Лучше потратить больше времени на проектирование, чем на последующие тестирование и поиск багов |
|||
![]() |
![]() |
![]() |
#102 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Год работает, можно сделать ресурсы танка, прицепить на самолет, и обратно, танк будет летать, самолет ползать по земле, никакого дублирования, у меня с этим жестко ))) ...а вот автор топа копировал на права и налево. Время нас рассудит.
На счет формул, то там все изменяется. Я в код не лезу практически, только меняю характеристики сейчас, ...ну и улучшаю по мере надобности, когда все предусмотрю в компакте, то будет 2D движок с внешним управлением. Вот еще сеть - долгая песня, так что все силы брошены туда.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#103 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,091
|
![]() Цитата:
![]() Еще одним преимуществом активного использования ООП - можно жестко задать, какие данные можно изменять, а какие только на чтение. Ваш же подход требует от программиста внимательности. Чтобы не: Код:
Код:
А если где-то всёже по ошибке изменит эти координаты, то внешне для игрока танк будет в одном месте (ведь не нарисовался танк в новой позиции, т.к. соответствующая функция не была вызвана), а игра будет "думать", что в новом месте уже танк. |
|
![]() |
![]() |
![]() |
#104 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Ну мы люди грамотные, и понимаем, что комп не может думать, он просто перебирает данные ))), да и "инакомыслить" ему процедуры не дадут. А если сбой? ...так он и в Африке сбой, и классовая система полетит.
Еще в чем дело, ...данная систем полностью соответствует логике нормально-образованного человека, даже того, который не программировал ранее, но понимает логику процессов, мыслит "блоксхемно". Я как-то отставлял проект, вернувшись ничего не забыл, все логично до безобразия, и переменные названы по правилам. В любой момент я посылаю пакет: Код:
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#105 | ||||
Старожил
Регистрация: 22.05.2007
Сообщений: 9,091
|
![]() Цитата:
Код:
Цитата:
Цитата:
![]() Цитата:
На классах я напишу: танк.езжай_сюда(х, у); и больше не надо ничего никуда слать, всё, что надо, где-то в недрах класса "само" произойдет. В ММО скорее всего пересылаемая информация на сервер будет отличаться от той, которую использует клиент. Мне нет разницы, какой кадр анимации у вражеского танка и информацию о текстурах я буду брать из своих клиентских библиотек, а не с сервера тянуть. Опять же, возможно, по логике игры я решу сделать невидимым количество жизней противника, а если их всёже слать на сервер и оттуда на другие клиенты, то возможно создание читов, т.к. пакет можно перехватить и оттуда выцепить количество жизней. таким образом для обмена с сервером эта запись в любом случае не катит. Что на классах делать, что по Вашей методе, а придется создавать специальные структуры для общения с сервером. |
||||
![]() |
![]() |
![]() |
#106 |
Участник клуба
Регистрация: 06.03.2009
Сообщений: 1,346
|
![]()
Спор бесполезен, ведь каждый считает что его метод вернее. И вообще какая разница?Главное чтоб программисту было удобно работать и получившийся продукт был играбелен.
Главное не переходить от спора к флуду. |
![]() |
![]() |
![]() |
#107 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
Вот-вот, не начинайте холивар, оба подхода имеют право на жизнь, вон вся OpenGL на процедурах, и тем не менее. Я ушёл писать статью об ООП в играх на примере ремейка BattleCity, может к понедельнику успею
![]()
пыщь
|
![]() |
![]() |
![]() |
#108 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Да не разводим мы тут ничего, просто пробуем определить новичка в каком направлении работать, наше дело рассказать где как, а ему выбрать.
pu4koff, не будем трогать сеть пока, извиняюсь за "заброс удочки" в ту сторону, ...тип Byte сам по себе не принимает никаких значений кроме 0-255, это у меня часто возникало в процессе построения алгоритмов в режиме теста, сверхъестественного ничего не происходит, просто не нужно в ресурсах указывать тип состояния 666, даже если вы это напишете, то редактор ресурсов вам не даст записать такое значение, а так если мыслить, то все мы встречались с глючными картами "Heroes of Might and Migic", "WarCraft", "StarCraft" и пр. пр. пр. "Забыть послать пакет, а значения изменить" в принципе не возможно, значения меняются только по пришествию пакета, ...стоп стоп, ...извиняюсь опять сеть ))) ...в крайнем случае, все данные меняются не в ручную а по процедурам, с родни классам и записи Tank.поехал(X,Y) у меня Перемещается(объект,X1,Y1,X2,Y2), а вот как перемещается, зависит от ресурсов, ...я же не буду писать классы: едет, летит, ползет.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#109 |
Форумчанин
Регистрация: 23.02.2009
Сообщений: 237
|
![]()
А что насчет перемещения?
![]() |
![]() |
![]() |
![]() |
#110 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Почти сделал пример, сегодня еще есть время, постараюсь выложить.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создаю "тестирующую систему" для проверки задач. Программисты, нужна ваша помощь! | alexfmf | Помощь студентам | 12 | 30.04.2009 20:19 |
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" | MAcK | Компоненты Delphi | 11 | 24.10.2007 10:49 |