Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Разработка модели "куклы" персонажа и влияющего на его характеристики "шмота" (http://www.flasher.ru/forum/showthread.php?t=177329)

Wolsh 29.03.2012 23:09

PlutDem, тысячи экземпляров или тысячи классов? Разница существенна.

PlutDem 29.03.2012 23:42

Wolsh
Экземпляров, естественно.

Вроде нашел кое какое решение:
Код AS3:

class Bonus {
 
        public var type:String;
        public var ammount:int;
 
        public function Bonus(newType:String,newAmmount:int) {
                type = newType;
                ammount = newAmmount;
        }
}

Код AS3:

class ItemSword {
 
        public var bonuses:Array = new Array();
 
        public function ItemSword() {
                bonuses.push(new Bonus("str", 10));
                bonuses.push(new Bonus("con",5))
        }
}

Код AS3:

class Person {
 
        public var str:int=0;
        public var dex:int=0;
        public var con :int = 0;
 
        public function addItem(item:ItemSword):void {
                for (var i:int = 0; i < item.bonuses.lenght; i++) {
                        // проходим по массиву с бонусами и в зависимости от типа бонуса прибавляем его к нужной характеристике
                        this[item.bonuses[i].type] += item.bonuses[i].ammount;
                }               
        }
}


Wolsh 30.03.2012 00:00

Ну так. То есть все разновидности шапок могут иметь вес 0.5, который хранится в статической константе класса Hat, так? И занимать память для веса трех миллиардов шапок будет только единственное свойство класса Hat.

Добавлено через 8 минут
"Ну так" не относилось к дописанному вами позже коду, ОК?))
Вам надо почитать про геттеры и сеттеры. Нехорошо, что Вы переписываете характеристики персонажа. Надо только отдавать комплексные характеристики, расчитывая их при отдаче в геттере. Хранить надо только реальные (базовые) характеристики персонажа; характеристики оружия и брони прекрасно хранятся в оружии и броне. Незачем занимать память, дублируя эти простые типы.

PlutDem 30.03.2012 00:11

Wolsh
Дело в том, что параметры вещей будут случайно генерироваться и давать различные бонусы(Одна шапка дает +5 к силе, другая может дать -7 к чему нибудь и т.д.) Нужно при надевании вещи прибавлять эти бонусы к персонажу.

Wolsh 30.03.2012 00:12

Массив это уловка, костыль чтобы избежать типизации. Если Вы задумали делать RPG, избегая типизации, она начнет глючить уже при готовности 0.0001%.

Добавлено через 12 минут
Цитата:

параметры вещей будут случайно генерироваться
Ну а что Вас тогда смущает? Количество предметов с бонусами будет таким образом ограничено, например размером инвентаря. О каких тысячах речь? Будет 50, ну пусть сто предметов в инвентаре. Или Вы хотите дать персонажу "склад", где он будет коллекционировать удачные находки? Тогда конечно будут проблемы, они есть и в "обычных" играх, в том же Обливион периодически лут из хранилищ пропадает)))

PlutDem 30.03.2012 00:36

Цитата:

Сообщение от Wolsh (Сообщение 1071899)
Массив это уловка, костыль чтобы избежать типизации.

Избежать типизации чего? Приведенный выше код нужен был что бы узнать какие бонусы есть у вещи, и применить их к персонажу.
Цитата:

Сообщение от Wolsh (Сообщение 1071899)
Нехорошо, что Вы переписываете характеристики персонажа. Надо только отдавать комплексные характеристики, расчитывая их при отдаче в геттере. Хранить надо только реальные (базовые) характеристики персонажа; характеристики оружия и брони прекрасно хранятся в оружии и броне. Незачем занимать память, дублируя эти простые типы.

Вот тут, честно, ничего не понял. Что подразумевается под комплексными характеристиками? Ну хранятся характеристики персонажа и вещей отдельно, а как их объединить то?
Можно, скажем, при расчете урона, наносимого персонажу, пройтись по всем слотам под вещи и проверить есть ли у вещей бонусы на защиту, если есть, то использовать их при расчете урона. Но этот способ очень ресурсоемок.
Цитата:

Сообщение от Wolsh (Сообщение 1071899)
Ну а что Вас тогда смущает? Количество предметов с бонусами будет таким образом ограничено, например размером инвентаря. О каких тысячах речь? Будет 50, ну пусть сто предметов в инвентаре. Или Вы хотите дать персонажу "склад", где он будет коллекционировать удачные находки?

Немного не так, предположим, в живом мире шатается тыща персонажей и на каждого напялено по 5 вещей.

Wolsh 30.03.2012 00:52

И ваш персонаж сразу со всей этой тыщей взаимодействует? Или таки можно сгенерировать детали врага и его лут только когда он попадает в область взаимодействия (принцип LOD)? Или Вы на реальный "живой мир" замахиваетесь?)) В котором тыща персонажей не просто где-то есть, а еще и живет своей жизнью, охотится, сражается друг с другом, обменивается лутом? Тогда другую платформу выбирайте. Ни в одной игре такого нет, даже в Сталкере используется LOD "живого" мира. А если речь о MMORPG, то это заботы сервера, а не флэш.

PlutDem 30.03.2012 01:02

Цитата:

Сообщение от Wolsh (Сообщение 1071907)
В котором тыща персонажей не просто где-то есть, а еще и живет своей жизнью, охотится, сражается друг с другом, обменивается лутом? Тогда другую платформу выбирайте. Ни в одной игре такого нет, даже в Сталкере используется LOD "живого" мира.

Ближайший аналог - Космические Рейнджеры 1/2. Живой мир, в космосе летает около 200 кораблей с 12 слотами, в которых установлено уникальное по своим характеристикам оборудование+ планеты в магазинах которых продается оборудование. Всего одновременно в мире находится около 3500 уникальных вещей.

Wolsh 30.03.2012 01:10

Да не находятся они в мире. Хранятся себе в сейве и считываются оттуда когда на экран попадают.

PlutDem 30.03.2012 01:20

Цитата:

Сообщение от Wolsh (Сообщение 1071909)
Хранятся себе в сейве и считываются оттуда когда на экран попадают.

Вы о чем? Никак не могу увязать вместе сейв и попадание на экран.
Цитата:

Сообщение от Wolsh (Сообщение 1071909)
Да не находятся они в мире.

Поверьте человеку который в это играл:) Летают по системам, торгуют, сражаются.


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

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