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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.03.2012, 19:28
PlutDem вне форума Посмотреть профиль Отправить личное сообщение для PlutDem Найти все сообщения от PlutDem
  № 1  
Ответить с цитированием
PlutDem
 
Аватар для PlutDem

Регистрация: Feb 2012
Сообщений: 212
По умолчанию Разработка модели "куклы" персонажа и влияющего на его характеристики "шмота"

Здравствуйте, есть персонаж с различными характеристиками и у него есть слоты под предметы, при добавлении которых(предметов) меняются характеристики персонажа (По сути то, что есть почти в каждой RPG).
Как это грамотно реализовать? Мне пришло на ум, только добавить в объект предмета все характеристики какие могут быть и прибавлять их значение к параметрам персонажа
Код AS3:
class Person {
 
	public var str = 10;
	public var dex = 7;
	public var con  = 0;
	...
 
	function addItem(item):void {
	str += item.str;
	dex += item.dex;
	con += item.con;
	...
	}
}
Но такой способ очень накладный по памяти, особенно если использовать его в огромном живом мире где таких объектов будет не одна тысяча.


Последний раз редактировалось PlutDem; 30.03.2012 в 01:45.
Старый 29.03.2012, 19:48
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 2  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Свойства не публичные, а геттеры.
При добавлении/снятии объекта (не забываем про типизацию) пересчитываем только актуальные свойства и только при добавлении/снятии. За результирующие свойства отвечают отдельные переменные.

Эта 1000 будет находится на сцене одновременно?
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

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

Регистрация: Feb 2012
Сообщений: 212
Цитата:
Сообщение от TanaTiX Посмотреть сообщение
пересчитываем только актуальные свойства
Вроде этого?
Код AS3:
function addItem(item):void {
 
	if(item.str)
		str += item.str;
	if(item.dex)
		dex += item.dex;
	if(item.con)
		con += item.con;
	...
	}
Цитата:
Сообщение от TanaTiX Посмотреть сообщение
Эта 1000 будет находится на сцене одновременно?
Угу, причем возможно не одна, а раз эдак в 8 больше. Потому то и хранить в предмете данные о всех характеристиках не хочется.


Последний раз редактировалось PlutDem; 29.03.2012 в 20:11.
Старый 29.03.2012, 20:21
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Вроде этого?
Вроде этого.
__________________
משיח לא בא
משיח גם לא מטלפן

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

Регистрация: May 2011
Сообщений: 72
я когда то так делал, но это был не АС

Код AS3:
class Person {
  // базовые статы
  var basa_str:int = 10;
  var basa_dex:int = 15;
 
  // текущие параметры
  var str:int;
  var dex:int;
 
  // функция, вызваетца каждый раз, как что-то сняли/одели/т.п.
  function recheckStats():void {
      str = basa_str;
      if (одета шапка) { str+=шапка.str; }
      if (одеты труселя) { str+=труселя.str; }
      ...
  }
 
 
}

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Цитата:
Угу, причем возможно не одна, а раз эдак в 8 больше.
Мне уже страшно.
Цитата:
Вроде этого?
Нет, вроде того, что предложил alatar.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

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

Регистрация: Feb 2012
Сообщений: 212
Декоратор, штука, конечно, хорошая, но проблему с хранением лишних свойств(бонусов) в предмете не решает.
Код AS3:
str = 10;
dex = 0;
con  = 0;
...
Зачем хранить dex,con и т.п. если бонус только к str ? На каждый предмет отдельный декоратор не создать, не говоря уже о том. что постоянное использование декоратора на объекте в конечном итоге приведет к снижению производительности.


Последний раз редактировалось PlutDem; 29.03.2012 в 22:00.
Старый 29.03.2012, 22:23
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 8  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Это не проблема лишних свойств. Они (свойства) сидят себе в объектах и кушать не просят. Это проблема архитектуры.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

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

Регистрация: Feb 2012
Сообщений: 212
Цитата:
Сообщение от TanaTiX Посмотреть сообщение
Это не проблема лишних свойств. Они (свойства) сидят себе в объектах и кушать не просят. Это проблема архитектуры.
Как же? Тысячи объектов(предметов), в них еще штук 20 объектов-свойств(характеристик). Все это отхватит приличный кусок памяти.

Старый 29.03.2012, 23:01
anmelegov вне форума Посмотреть профиль Отправить личное сообщение для anmelegov Найти все сообщения от anmelegov
  № 10  
Ответить с цитированием
anmelegov
[+4 07.04.12]
[+1 20.01.12]

Регистрация: Nov 2009
Адрес: Украина, Славутич
Сообщений: 263
я думаю не играбельно будет даже если принебречь производительностью (фпс скорее всего будет меньше единицы)


Последний раз редактировалось anmelegov; 29.03.2012 в 23:04.
Создать новую тему Ответ Часовой пояс GMT +4, время: 23:30.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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