Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.02.2017, 23:36
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 21  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Я то, вообще, имел ввиду что можно попытаться абстрагировать все к одному классу, типа
Код AS3:
var skill:Skill = new Skill(0xFFA099); // ID способности в таблице — для заполнения всех свойств способности
_player.addSkill(skill); // способность добавляется в _skills:Vector.<Skill> персонажа
класс Skill по-сути дата-обжект, просто хранилище всех настроек способности, что позволяет унифицировать дальнейшую обработку, не разбираясь, фаербол это или хилинг, невидимость или цепная молния.

callme, Вам не удастся вытянуть меня на очередной холивар по MVC, их тут было более чем достаточно)) Я даже на описание топикстартером "толстых" контроллеров не стал реагировать, хотя являюсь их ярым противником — настолько логично он описал свое видение MVC применительно к своему случаю.

Добавлено через 4 минуты
Цитата:
В юнитах не стоит проблема добавления/изменения функциональности.
Тогда, конечно, Декоратор не имеет смысла.

Добавлено через 15 минут
Почему я использовал здесь _player.addSkill(skill); а не, допустим, _player.skills.push(skill);
Потому что метод позволяет добавить дополнительные параметры, не связанные с самой способностью — например, время наличия способности у персонажа, если оно не бесконечно и способность должна исчезнуть через 30 секунд (допустим, вызвана употреблением эликсира — тогда это время является свойством эликсира, а не способности).

Добавлено через 20 минут
И да)) наверное совсем не обязательно грузить память целым объектом, экземпляром класса Skill. Наверняка достаточно хранить только ID и тащить данные из таблицы только тогда, когда надо будет просчитать применение и создать анимации эффектов.
__________________
Reality.getBounds(this);

Старый 04.02.2017, 11:31
callme вне форума Посмотреть профиль Отправить личное сообщение для callme Найти все сообщения от callme
  № 22  
Ответить с цитированием
callme
 
Аватар для callme

Регистрация: Dec 2014
Сообщений: 312
Цитата:
Сообщение от Wormhole Посмотреть сообщение
Схема разделения данных приложения, пользовательского интерфейса и управляющей логики на три отдельных компонента: модель, представление и контроллер - таким образом, что модификация каждого компонента может осуществляться независимо
Вы дали недостаточно строгое определение.
Я могу модифицировать метод Animal.eat независимо от класса Orange. Но никто ведь не станет это называть паттерном AO (Animal-Orange). Это просто ООП.

Код AS3:
class Animal
{
    var count:uint;
 
    public function Animal()
    {
        var orange:Orange = new Orange();
        eat(orange);
    }
 
    function eat(orange:Orange):void
    {
        count++;
    }
}

Старый 04.02.2017, 12:19
Wormhole вне форума Посмотреть профиль Отправить личное сообщение для Wormhole Найти все сообщения от Wormhole
  № 23  
Ответить с цитированием
Wormhole
 
Аватар для Wormhole

Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
Wolsh, Tails,

Все же мне не очень нравится ваше решение с таблицей эффектов по следующим причинам:
1. Что делать, когда я захочу добавить новый эффект? Добавлять его во все строки таблицы?
2. Особые эффекты, свойственные только одной способности, например, размытие экрана, должны будут присутствовать во всех строках таблицы, равные null, кроме одной.
3. Что делать с изменениями атрибутов? Всего их около 20, неужели добавлять по полю на каждый?

Тут важно, что эффектов будет много. Как минимум, больше 200

Добавлено через 1 час 3 минуты
callme, дайте свой вариант определения
__________________
В прошлом - AS3 программист, в данный момент пишу на Haxe

Старый 04.02.2017, 18:40
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 24  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
1. Естественно. Как иначе унифицировать расчет? Ветвить его "если(это фаербол) иначе если(это молния) иначе если(это резист магии) иначе если..." ? Ну ладно развести "на себя" и "на врага", так как они затрагивают разные ветви расчета — не надо ничего менять во врагах, если Способность действует на героя.
2. Визуальные эффекты то здесь при чем? Это не цифры в свойствах персонажа. Не кол-во маны/жизни/стамины, и даже не кол-во патронов)) Это не ДАННЫЕ. На визуальное отображение способности в таблице хранятся ссылки, обычно это два или три класса анимации — анимация героя, исполняющего Способность (напр. метающего фаербол) и анимация воздействия Способности на врага (для исполнения этой анимации требуется факт попадания, то есть удачного применения Способности), возможно еще отдельно анимация между первым фактом и вторым (полет фаербола, молнии, стрелы и тп). "Размытие экрана", или "Тряска" и т.п. должны быть привязаны к первому или второму факту ("попытке" или "попаданию"). Другими словами, это не колонка "Размытие экрана" с единицами и нулями во всех Способностях. Это колонка "анимация попадания" со значением "РазмытиеЭкрана" там где нужно размытие и значением "Горение" там, где враг загорается, и т.д.
3. Уточните о каких атрибутах речь. Свойствах персонажа, типа "прыгучесть", "выносливость", "переносимый вес", "скорость" и тп? Опять же, чтобы унифицировать расчет не грузя его ветвящейся логикой, гораздо проще сделать по полю для каждого из 20 и записывать туда соответствующие бонусы от [удачного] применения.
Цитата:
Тут важно, что эффектов будет много. Как минимум, больше 200
Что-то многовато, я столько не видел даже в навороченных RPG. Правда, в навороченных все "цифры" способностей проходят еще через разные модификаторы, связанные с уровнем развития персонажа и его уровнем владения способностью или общей "школой" к которой относится способность/заклинание (например, владение школой Разрушение влияет на уровень урона от фаербола и/или время горения врага и криты). Ну, это вобщем организуется параллельно. Так же, как удар мечом по голове наносит разный урон в зависимости от нескольких параметров героя и врага. Ведь, строго говоря, это тоже "способность"))
__________________
Reality.getBounds(this);

Старый 04.02.2017, 20:02
Wormhole вне форума Посмотреть профиль Отправить личное сообщение для Wormhole Найти все сообщения от Wormhole
  № 25  
Ответить с цитированием
Wormhole
 
Аватар для Wormhole

Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Как иначе унифицировать расчет?
В этом причина моей головной боли. Были наброски с выделенными методами, с перехватом, но все это, как мне кажется, не поможет

Цитата:
Сообщение от Wolsh Посмотреть сообщение
Визуальные эффекты то здесь при чем? Это не ДАННЫЕ.
Размытие - не визуальная составляющая, а сама суть способности. После создания более-менее терпимой версии игры, я собираюсь прикрутить мультиплеер в той или иной форме. Способности, сбивающие врага с толку, нацеливаясь на чисто человеческий фактор очень вписываются в концепт PvP, ИМХО. Данные здесь - флаг, есть ли размытие или нет. Вставлять его в каждую строку ради одной способности - неприятно. А выделиться оригинальностью хочется.

Тем не менее, эффектов способностей, которые я имел в виду, предостаточно. Есть те, которые никак не связаны с визуальной составляющей, но по-прежнему связаны лишь с одной из всех способностей в игре.

Цитата:
Сообщение от Wolsh Посмотреть сообщение
Что-то многовато, я столько не видел даже в навороченных RPG.
С выбором жанра RPG я, наверное, поторопился, моя игра скорее относится к жанру пошаговой стратегии.
Есть 15 классов - одни сразу доступны, другие открываются после в зависимости от предыдущего. У каждого класса есть уникальное дерево способностей 4х7, т. е. всего 432 с учетом двух стартовых способностей для каждого из 6 стартовых классов. Ну и оригинальные скиллы npc, конечно же.

Разнообразие скиллов - одна из ключевых фишек, хотя, конечно, новые классы и их деревья я буду добавлять постепенно.

Цитата:
Сообщение от Wolsh Посмотреть сообщение
Правда, в навороченных все "цифры" способностей проходят еще через разные модификаторы, связанные с уровнем развития персонажа и его уровнем владения способностью или общей "школой" к которой относится способность/заклинание (например, владение школой Разрушение влияет на уровень урона от фаербола и/или время горения врага и криты).
Таки это тоже планируется, только не сразу. Просто пытаюсь оставлять пространство в архитектуре для дальнейшего внесения таких изменений

И да, если будут какие-то расхождения в представлении игры, можете посмотреть ролики с геймплеем Sonny, это мой основной источник вдохновения)

Добавлено через 2 минуты
Цитата:
Сообщение от Wormhole Посмотреть сообщение
всего 432 скиллов
Только не говорите, что я безумец, пожалуйста
__________________
В прошлом - AS3 программист, в данный момент пишу на Haxe

Старый 04.02.2017, 21:59
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 26  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Бесполезная трата времени...
__________________
Дети не должны знать о своих родителях

Старый 04.02.2017, 22:34
Wormhole вне форума Посмотреть профиль Отправить личное сообщение для Wormhole Найти все сообщения от Wormhole
  № 27  
Ответить с цитированием
Wormhole
 
Аватар для Wormhole

Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
Цитата:
Сообщение от Tails Посмотреть сообщение
Бесполезная трата времени...
Не будьте так категоричны. Нет ничего невозможного
__________________
В прошлом - AS3 программист, в данный момент пишу на Haxe


Последний раз редактировалось Wormhole; 04.02.2017 в 22:49.
Создать новую тему Ответ Часовой пояс GMT +4, время: 21:42.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:42.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.