![]() |
редактор квестов
Доброе время суток, уважаемые форумчане. решил я тут собрать редактор квестов. при попытке связать область выполнения с менеджером кнопок, возникло пару вопросов(моя память говорит, что где-то я уже видел реализацию всего этого, но из-за разных мыслей не могу придумать толковое описание каждого из вопросов):
1) можно ли повесить внешнего(относительно класса) слушателя событий на изменение переменной без использования EnterFrame?{есть у меня менеджер кнопок, в зависимости от нажатой кнопки на цене выполняется действие. номер нажатой кнопки хранится во внутренней переменной(доступной внешне только для чтения) можно ли отслеживать изменение переменной с главной сцены, не добавляя обработчик EnterFrame?} 2) что менее нагрузит систему: HitTest или слушатель клика мыши?{на сцене, локации отображаются точками. что будет выигрышнее: 1-повесить на всю сцену слушателя клика мыши, и искать локацию, на которую кликнули hitTest ом или же повесить на каждую локацию свой собственный слушатель клика мыши?} |
Мне кажется, что для отслеживания изменения какой либо переменной есть только два способа - сделать сеттер и при его изменении посылать событие. И ещё есть биндинг http://blog.diestro.ru/binding-v-actionscript-1/
И наверное лучше повесить слушателя на мышь и там проверять target. |
Цитата:
Цитата:
появился еще 1 вопрос: возможно ли использовать строку, как строку ввода логических условий?{есть 3 переменные: p1, p2, p3, и 2 строки: в первой строке пользователь задает условие((p1!=p2) and (p1>5)) во второй - действие (p3=p1*p2)} |
Цитата:
|
Для ввода условий можно использовать булевы переменные и даже затолкать их в словарь
|
Цитата:
|
На счёт событий
Добавлено через 1 минуту скорей всего нужно самому посылать событие ребёнку, либо сделать метод для этого действия, либо подписывать родителя у ребёнка. Добавлено через 5 минут если это ДО Код AS3:
|
Цитата:
|
Вот нечего было делать, наваял вам небольшой парсер, работает только с условием AND нет проверок на пробелы, вообще м как, примерно показал.
Код AS3:
|
Код AS3:
|
Цитата:
|
Код AS3:
|
Красненький плохо видно
|
Цитата:
|
Лицо покраснело ?
|
Кстати очень интересно посмотреть другие (ваши) реализации, интерпретаторов по данной задаче, весь полезная штука в принципе.
|
|
Смог..)
|
Цитата:
Вот, кстати, делал тут довольно быстрый парсер математических выражений: https://github.com/MikroAcse/MikroAc...ath/MParser.as Поддержки переменных нету, но есть поддержка функций из класса Math. Работает с выражениями любой сложности: Код AS3:
UPD: Ах, да. Тут не просто математические выражения нужны, тут еще и логические операторы. Тогда MParser не совсем подходит. |
Что-то я туплю, наверное, но зачем все эти пляски с бубнами?
Я еще понимаю, в туториале отслеживать, куда пользователь нажал, но в квестах-то зачем? |
Цитата:
|
Из топика автора не совсем ясно, что там за приложение, но в нормальном клиент-серверном приложении квесты никто вроде и не компилирует. О прогрессе выполнения квеста и задач квеста клиента информирует сервер, а тот уже визуализирует информацию от сервера с применением данных модели и статической информации по квесту, которая грузится в ресурсном файле при загрузке приложения.
Интересно, кто-то делает иначе? :) |
Цитата:
p.s. смотря конечно какие квесты |
На самом деле, строго говоря, есть вариант клиент-серверного приложения с постобработкой на сервере (сейчас как раз в таком проекте участвую), в этом случае обработку квестов надо делать дважды - и на клиенте и на сервере.
ЗЫ. Под постобработкой я в данном случае понимаю, что клиент производит изменения на своей модели пользователя, а потом с некоторым интервалом (например, раз в минуту или по достижению определенного количества изменений) пакетом сбрасывает их на сервер, тот прогоняет изменения по своей модели и, если все сошлось, то акцептует их, если не сошлось - отправляет клиента на релоад. Но я, кстати, до сих пор не уверен, что эта архитектура дает какие-то дополнительные бонусы. Кроме снижения нагрузки на БД, естественно. |
Тема очень интересная. Может знатоки приведут несколько ссылок для чтения? :)
Вот например, каким образом реализовать текстовое описание квеста? Сам квест, разумно хранить и передавать как id из таблицы всех квестов в игре. Эта таблица только на сервере. Цели и задачи тоже можно использовать как id'ы выполняемых действий, их можно описать на клиенте. Но вот как хранить и передавать текстовое описание, ведь его не передать в виде id, иначе придётся для каждого внесения/редактирования квеста обновлять весь клиент? |
Бриф? А что мешает хранить бриф в базе данных и получать текст в соответствии с Ид?
|
Tails,
Возможно, большая нагрузка на сервер? Хотя, если предусмотреть возможность разделения сервера на логический и контент хранилище.. Вообщем потому и говорю, что интересно было-бы почитать чего хорошего на эту тему, в ознакомительных целях. |
Дык нам нужна динамичность и гибкость. То-есть текст брифа может изменятся. Соответственно можно реализовать версии. То-есть хранить уже полученные данные ( бриф - хотя сколько там того текста ) локально и сверяться только с версией брифа конкретного квеста. Если версия изменилась, произвести апдейт локальной версии.
|
А вот это уже хорошая идея :)
|
Мне все-таки нравится отдавать условно статическую информацию файлом и не дергать базу по такому поводу. Ведем, конечно, в админке, и храним в базе, потом нажимает кнопку "Генерация applicationData" и генерим xml-файл. При загрузке клиента скармливаем ему ссылку на текущую версию applicationData.xml, клиент его прикрасно закачивает, а поскольку меняется applicationData.xml не каждый день, то в итоге он садится в кеш браузера и мы еще и на трафике экономим.
Что касается описания непосредственно квеста, то мы использовали примерно такой формат и было достаточно удобно (на идеальный вариант не претендую): Код:
<quest ID="123" sequenceID="567" numInSequence="2"> |
Цитата:
Сделал на сервере, чтобы при изменении нужных файлов создавался новый xml с датой изменения.. Тут нужно немного обьяснить - я прочел статью, где говорилось о том же о чем говорите Вы. Файл с временем последнего изменения и что при загрузке флеш проверяет его и если что, то дакачивает, если время не поменялось, то берет из хеша.. И там говорилось, что этот файл в браузере оседает. А что нужно сделать, чтобы он там осел? Не чего? Просто загрузить во флешь? Или как?) |
Цитата:
Код AS3:
Код AS3:
|
Ну да. Это собственно не заслуга флеша. Это браузер кэширует. И браузер же проверяет, нужно закачивать файл или отдавать из кэша.
|
Цитата:
|
Цитата:
|
AlexCooper а MongoDB это БД которую как и обычную, можно ставить на любой сервер?
|
Цитата:
Цитата:
|
mikhailk а что тогда лучше использовать?
|
Насколько я понимаю, надо идти все-таки от функционала приложения. MongoDB - штука модная и эффективная, но документо-ориентированная. Очень удобно вместо 30-50 таблиц иметь 3-5 коллекций, в которых все это лежит достаточно естественным образом, но некоторые операции становятся сложнее, чем в обычной SQL-базе (например, передача айтема от одного перса другому - тут это корректировка двух профилей персов, а в SQL-базе - изменение значения одного поля в одной строке таблицы, где лежат все айтемы всех персов). И она жрет память, а память - это деньги за хостинг.
Если проект оффлайновый и малобюджетный, то пока еще ничего лучше связки PHP+MySQL+Memcache+Ngnx, на мой взгляд, не придумали. Поднимаем все справочники и классификаторы в мемкеш и работаем с базой только по данным пользователей. Если добавить постобработку, то можем тащить на одном сервере БД совершенно неприличное количество пользователей. Если проект онлайновый, то мне лично нравится связка Node.js+Mongoose+MongoBD (ну и Ngnx, естественно, если отдаем много контента). Но нужно следить за размером бд и его соответствием ресурсу сервера по оперативной памяти. |
dimarik,
спс |
| Часовой пояс GMT +4, время: 18:20. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.