![]() |
Цитата:
Потом, я не знаю как Вы представляете себе бой. Это может быть состояние, управляемое неким классом Fight. Ничто не мешает отдать ему один раз все бортовые параметры участников, и пусть он считает бафы, демэджи и резисты на протяжении боя, не дергая каждый раз непосредственно экземпляры участников. |
Цитата:
И это при том, что инвентарь чужой можно и не хранить. LOD здесь прекрасно действует. При попадании рейнджера в область видимости на основании его рассы/класса/уровня ему можно примерно сгенерировать инвентарь. И вы никак не отличите сегнерированный инвентать от "наторгованного". А уж магазины на планетах точно генерируют инвентарь при посещении (возможно - при посещении звездной системы). |
"Вы ему про Фому,а он вам про Ерёму! Топикстартер видимо хочет реальный живой мир где характеристики сущностей случайно не генерируются когда попадают в зону влияния, а вы ему LOD предлагаете. В тех же КР2 корабли случайно генерируются на планетах вместе с оборудованием и дальше уже летают по вселенной и наличие поблизости игрока на них никак не влияет. Кстати оборудование в магазинах генерируется случайно, но не во время посещения игроком планеты, а каждый игровой цикл и реально присутствует на планете.
Кстати, господин Wolsh дал очень точное определение: Цитата:
PlutDem В КР2 была очень простая механика и никакой физики, да к тому же пошаговая. Если Ваш проект с физикой и в реальном времени, то придется удаленный бой просчитывать приблизительно т.е.: Цитата:
Но в любом случае тысячи кораблей AS3 не потянет, можно конечно сделать несколько сотен и в случае если проект выстрелит портировать уже на другую платформу. |
Цитата:
Я ни одной игры кроме пятнашек и паззла в жизни не написал, так что все что я говорю можно смело делить на 16. Я обычной логикой оперирую. Если нет суслика, пофиг сколько у него зубов и какого оттенка шкурка. Как я вижу процесс: При запуске игры с жесткого диска считывается последнее сохранение и создается временный (возможно, "распакованный", сейв, с которым игра общается пока юзер не выберет в меню "сохранить" (старыйй сейв естественно не подлежит модификации в процессе игры, он для истории): в случае этих ваших КР берем из сейва координаты и векторы кораблей, включаем жизнь, полетели. Никакие ништяки в слотах кораблей нас не интересуют в это время, и считывать их из сейва нет никакой необходимости. Событие – два корабля встретились. Берем из сейва их характеристики. Если корабли дружественные, запускаем процесс торговли, если враждебные – процесс битвы. Торговля это передача от одного корабля другому случайной части ништяков на сумму не больше 75% от количества денег второй стороны. Можно усложнять интеллект как угодно в разумных пределах, делать списки приоритетов из необходимостей (скажем если у одного мало топлива то он обязательно покупает топливо, и немного зубного порошка прицепом) – я не думаю что такие события будут происходить по 10 штук на кадр, иначе самым расхожим товаром будет краска для обшивки кораблей. Поторговали, записали новые состояния слотов в сейв, очистили от них память и полетели дальше. Аналогично с битвой. Никто же не требует от интеллекта игры реального сражения (если конечно ГГ не является его свидетелем). Сравнили боевую мощь, разбавили случайностью, сгенерировали списки повреждений и затрат боеприпасов, записали в сейв и разлетелись; либо поверженный корабль захвачен, часть груза в соответствии с приоритетами и грузоподъемностью судна победителей отобрана у побежденных, записали слоты в сейв и разлетелись. И как уже несколько раз сказали, все эти слоты, о которых был изначальный вопрос – ничто по ресурсам в сравнении с графикой и логикой. Но вам всеравно придется делать LOD для графики, таскать картинки кораблей, которые никто не видит – это же жесть вообще. А они ведь такие же свойства. Вам придется разграничивать свойства, необходимые для простого интеллекта "оно где-то там летает", от свойств "о боже, оно летит прямо на меня!" |
Цитата:
|
Shared Object конечно, ФП другого не умеет.
"Распакованный" значит, что сохранение на жестком диске может храниться в сжатом виде, а для общения в процессе игры можно создать развернутую структурированную копию, более удобную для доступа к частям сейва. Можно создать полсотни отдельных SO "по темам". По окончании игры их можно просто удалить. При нормальном новом сохранении игры (от юзера) на их основе создается новый сейв, сжимается и сохраняется в один SO, имя и дата которого регистрируются в "самом главном SO" – списке всех сейвов. Когда игра запускается и игрок выбирает "загрузить", игра обращается к этому главному списку и предоставляет игроку список сейвов с именами, датами, может еще какими данными, хоть картинками)) Игрок выбирает, какое сохранение он хочет загрузить, игра обращается к этому сейву по имени из списка, распаковывает его во временные SO и формирует мир. Добавлено через 9 минут вот как-то выдумывал |
Кажется, я все таки нашел способ снизить потребляемую предметами память! В базовом классе Item прописываем геттеры на все возможные характеристики, а через декоратор добавляем нужные бонусы и храним их значения в свойствах. Таким образом предмет хранит в себе только те свойства характеристик к которым есть бонус, а на все остальное возвращает ноль. К сожалению, не знаю как измерить занимаемую всей этой конструкцией память, но наверняка это лучше чем 25 элементный массив.
Код AS3:
Код AS3:
Код AS3:
Код AS3:
Код AS3:
Код AS3:
Код AS3:
|
|
alatar
getSize измерит сам объект но, проигнорирует свойства имеющие ссылки на другие объекты, т.е. скажем, getSize измерит размер массива, но не учтет содержимое его ячеек. Хотелось бы что то более надежное и комплексное. Вроде можно измерить с помощью Sampler, но в справке как то все мутно расписано. |
Мне вот до сих пор непонятна одна тема в Декораторе. Стыдно, да, но почему-то все описания паттерна молчат об этом.
Вот декорировал ты себя шапкой +50 к мане. А как теперь эту шапку снять? Особенно если потом еще сапоги нацепил. А еще круче – хлебнул ты Зелье Силы и стамина подскочила на 75 децелов. Но действует только 1 минуту. И что делать с этим декоратором через минуту? Как от него избавиться? Поясните кто-нибудь пожалуйста. |
| Часовой пояс GMT +4, время: 03:24. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.