FlexiPedia Wiki on Adobe Flex
Флэш Потрошитель - Жизнь вокруг технологииЖизнь вокруг технологии

Флэш Потрошитель этот | тот | 1.0

С 09.09.2002
  • Коллекция багов Flash
  • Ссылки для начинающего аниматора
  • Flex для PHP-разработчиков
  • Как вы используете Flash?

Поток сознания

Флэшер-аноним ответил на Что такое матрица:

Картинки можно дополнить текстом.

http://www.chemometrics.ru/materials/textbooks/matrix.htm

8 часов назад

makc3d ответил на Еще один способ заработать на играх:

ща потестим

1 день назад

Rost ответил на Еще один способ заработать на играх:

Fixed.

1 день назад

7a ответил на BAFPUG revolution!:

Мы были на прошлой неделе в Белоруссии проездом, было очень холодно: ночью в Гомеле -32 %) Спасибо за приглашение, у меня есть сильное желание приехать и послушать доклады, интересные темы, но всё же в следующий раз, когда будет потеплее ;)

2 дня назад

Флэшер-аноним ответил на Релиз Alternativa3D 8.5.0 - с поддержкой GPU!:

Большое спасибо, очень интересно.

4 дня назад

Флэшер-аноним ответил на Cоздание мобильного Flash-приложения "Hello World" - урок для начинающих:

Наконец нашел что-то путное по теме. Начну разжевывать. Несколько дней уйдет, однако.

5 дней назад

Флэшер-аноним ответил на Избранные баги Flash:

Мне пришлось столкнуться с тем, что элементарно не работает комбинация клавиш Ctrl + C и Ctrl + V. Причем переустанавливали Flash и не раз. Может быть, есть здесь те, кто сталкивался с этой проблемой и как-то смог решить ее?

1 неделя назад

makc3d ответил на Избранные баги Flash:

beer good. spam bad!

1 неделя назад

Флэшер-аноним ответил на Избранные баги Flash:

Хотелось бы узнать, Как вы относитесь к пиву? Если положительно, то какое предпочитаете? Если отрицательно, то почему? Просто интересно...

1 неделя назад

Флэшер-аноним ответил на Еще один способ заработать на играх:

прям таки тебе и скажут здесь посмотри

1 неделя назад

Более старые 
Главная › Блоги › Блог Flop

Идея p2p-мультифлешки

Ну вот, Я созрел для того чтоб опубликовать новую мегаидею. Название я пока не придумал рабочее название - мультифлешка )

Итак если кто-нить копался в p2p фишках нового плеера 10.1 то могли заметить, что там появилась возможность создавать самоорганизующиеся одноранговые пиринговые сети. Пруфлинк - http://labs.adobe.com/technologies/stratus/ , в хелпе искать NetGroup . Это же просто МЕГАБАБАХ в интернет технологиях, разве не заметно? Вот мы и попробуем использовать эту штуку в своих Evil - целях. Итак, тех кто заинтригован -- прошу под кат.

Что же такое мультифлешка - по сути это контейнер под множественные флешприложения + протокол для их общения.

Как это выгдялит с точки зрения юзера

Итак это флешка - контейнер который можно разместить на любом сайте. В этом контейнере будут приложения которые смогут обмениватся между собой инфой БЕЗ СЕРВЕРА в основном это конечно-же мультиплеерные или один-на один онлайн игрушки в которых логику можно запихнуть в клиента. тобиш я зашел на сайт - где этот контенер - увидел какие бывают игрушки, в какие люди играются в какие нет, выбрал себе что нравится, установил либо поигрался без установки на сайте.

С точки зрения флешера

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

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

  • Контейнер - это торрентрэкер.
  • Прилаги - это скачиваемое файло.
  • Анонсы - торрентфайлы.

Такс, а теперь секрет:

  1. Чтобы разработчикам приложения было легко писать эти мультиюзерные штуки, надо написать немного кода, дабы упростить работу со всякими нетгруппами нетстримами и другой мулью, написать вокруг этого обертку и т.д.
  2. Чтобы была возможность выжимать с этой системы деньги, нужно ее как-то засекретить. И засекретить вот как! Все анонсы в главной сети зашифровать с помощью технологии открытого ключа, а в контейнере (в основной флешке) будет ключ для расшифровки. Выходит, чтоб внести анонс в сеть, нужен приватный ключ, который есть только у самого главного )))
  3. И самое первое приложение которое нужно написать в эту сеть это...
    ...
    ...
    ...
    Конечно же, игра МАФИЯ или WhereWolf ( тут звучат фанфары - ТАДА!!!!! )
    Конечно же, с каналами - чтобы вдруг не получилось так что в одну игру играют 100500 разных людей.
    Конечно-же, с чатом и возможностью позвонить голосом или даже видеозвонком
    (и очень важно, что это приложение будет без рулевого, так сказать с разделенной ответственностью)

Единственная стремная штука - то, что судьба стратуса пока еще не известна. Не смотря на это,
НАЧАТЬ ЭТО ДЕЛАТЬ ПРИЗЫВАЮ УЖЕ ПРЯМО СЕЙЧАС - это не очень долго, но очень перспективно.

Вместо копирайта

Тот, кто на этой идее заработает много денег - должен обязательно сказать об этом мне, показать и дать ключик )))

---
Upd / жду, обсираем в комментах.
Upd2 / А еще я бы сам делал эту штуку если бы со мной было еще парочку чел (обычно все мои мегаидеи или забываются на стадии идеи, или перебиваются новыми мегаидеями, а пару раз доходило до начала реализации, но все-же забивалось)
Upd3 / из чата в BAFPUG by Yura Zhloba
то есть, фишка проекта не в том, что это p2p, а в том, что он предлагает платформу для казуального мультиплеера
Upd4 / и я вижу в комментах открылась темная сторона этой мультифлешки ( не хотел я ее выкладывать ))
Upd5 / я тоже не верил что сможет работать группа со 100500 тыс юзерами, однако все становится понятно, глянув сюда http://tv.adobe.com/watch/max-2009-develop/p2p-on-the-flash-platform-wit...

  • flash
  • idea
  • p2p
  • Свалка
- Flop, чт, 15/04/2010 - 18:24
  • Блог пользователя Flop
  • В Жуйк

Комментарии

как-то странно
а нафига это?

Valentin Vladimirovich (не проверено) 23:13 15/04/10

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

И да мне нужна критика - надо найти кучу слабых мест или вообще дыр
а еще, если вдруг, кто захочет помочь мне ее реализовать отписывайтесь ага?
(чатруллет один человек сделал)

Flop - http://bafpug.com 23:58 15/04/10

Я тоже не понял в чем смысл отсутствия сервера. И мир захватить как раз не получится без централизованного управления...

scenarist (не проверено) 00:08 16/04/10

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

Valentin Vladimirovich (не проверено) 00:23 16/04/10

круто-круто...
а ещё можно переписать к чертям дна-прожект и прочие распределённые рса-вскрывалки. а то глупости всякие - стенд-алон клиенты какие-то в 21м-то веке

P.S.: и да, даёшь мафию!!!

COTOHA (не проверено) 00:25 16/04/10

а давайте лучше все дружно на флеше моделировать протеины и искать лекарство от рака

makc3d 01:29 16/04/10

собственно, тут даже р2р не надо, тупо запрашиваем с сервера Х, что посчитать и, пока юзер браузит ваш корпоративный сайт или шпилит в казуальную игруху, тихо так в фоне отъедаем у него 20% цпу. с каким-то интервалом отсылаем результаты и перезапрашиваем задание. можно даже юзеру чесно сказать, "вися у нас на сайте, ты делаешь вклад в дело спасения жизней или другой хуеты"

makc3d 01:37 16/04/10

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

Rost - http://rajaka.net/ 13:20 16/04/10

так что, замутим библиотечку?

makc3d 13:37 16/04/10

Кстати тоже недавно возникала такая идейка, когда посмотрел, сколько людей "идлят" в TF2 - столько мощностей зря пропадает Smile
Да и флеш-игры идлерские появились уже давно.
Так что если давать какие-то виртуальные бонусы за нахождение онлайн, то можно вполне иметь неплохую распределённую сетку.
А если ещё и не виртуальные бонусы - то вообще Smile

Dan 14:12 16/04/10

Проблемы.

1. Логика на клиенте -> кто-то должен быть хостом. Хост может в любой момент отвалиться, значит надо будет как-то определять, отвалился он временно или насовсем. И если насовсем, то выбирать другого хоста. Новый хост тоже может внезапно отвалиться. Или старый вдруг восстановит соединение, и надо будет ему объяснить, что он уже не хост. Довольно сложная логика, которую очень трудно отлаживать. Даже у Близзардов с этим проблемы Smile

2. Логика на клиенте -> Любой желающий (и умеющий) может изменить клиент и, тем самым, логику. Я, кстати, люблю заниматься подобным Smile
Значит, если вдруг я стану хостом, то все эти жалкие человечки будут голосовать за того, за кого я хочу. А я, разумеется, перманентно буду мафией и буду дополнительно их ещё и расстреливать.
И пусть они пишут проклятия в чат, показывают фак в камеру - сделать ничего не смогут. И забанить-то меня не получится, система-то распределённая, глобального чёрного списка нет.

Я не говорю, что идея плохая.
Я просто говорю, что не всё так радужно и надо учесть очень многое.

Dan 07:43 16/04/10

По твоим словам выходит, что есть хост - это противоречит самой концепции. Есть проверенные метОды решения и организации подобных сетей. Вспомним Quake (да-да, именно кваку, кпримеру). Там нет "хоста игровой логики", но есть он только как сетевой хост. Каждый клиент получая пакет с данными а-ля "Вася пульнул в Макса, Хэд-Шот, Пыщ-пыщ!.." проверяет его на валидность, учитывая, скажем так, игровые правила. Т.е. каждый клиент является и хостом, касательно игровой логики.
Кроме всего вышеописанного и прочего есть примитивнейшие и практически безупречно работающие практики валидации подленности, а именно: Каунтинг пакетов (как глобальный, так и относительный - между пирами), параллельная маршрутизация пакетов (кажется так называется, но не уверен) - это есть гениальная штука и каждый разработчик, узнав о ней, стремиться на её базе придумать свой велосипед. Работает приблизительно так: действие на [клиенте А] --> посыл пакетов нескольким реципиентам-клиентам --> пакет валидируется и пересылается остальным реципиентам --> (пакет имеет хозяина(отправителя) и срок жизни, акромя прочей нелепой фигни)) --> [клиент R] при очередной валидации свежеполученного пакета, пересланным [клиентом B], находит косяк и откладывает этот пакет до истечения его срока жизни и не пересылает его; получает очередную пачку пакетов; валидирует; медитирует; ВНЕЗАПНО находит два и более апдэйтов по той инфе, что была в косячном пакете и, если он еще не протух (лайв тайм не истёк), со вследующими посылаемыми пакетами отправляет [инфу о косяке, авторе косяка [клиент А], отправителе-предыдущим валидаторе [клиенте B]]. Стоит ли далее продолжать? Разумеется, имея сеть из подобных самостоятельных единиц, проверяющих своих соседей, достаточно несложно вычислить клиенты, отправляющие подложные данные, или их изменяющие и пересылающие дальше.

И, да, изъявляю желание учавствовать, да.

Aleksandr Kozlovskij (не проверено) 12:23 19/04/10

Если каждый клиент сам обрабатывает логику, то две возникает проблемы:
1. Слишком много соединений. Почему в квейк могло максимум играть 8 человек (и это по IPX!), а в современные стрелки и 32, и 64? Потому что на 8 человек требовалось в сумме 28 соединений.

2. Каждый клиент имеет полную игровую информацию. "Официальный" клиент, разумеется скрывает ту информацию, которую пользователь знать не должен (например, стоит ли кто-то за стеной, что находится в неразведанной части карты, кто мафия). Но модифицированный клиент это покажет. В результате: wallhack в 3D шутерах, maphack в стратегиях и хз как назвать хак, когда сразу знаешь роли всех остальных игроков в мафии. Пусть будет rolehack.

Dan 13:37 19/04/10

1. Хорошо, имеем один сервер-ретранслятор (или их сеть), который получив пакет, разбрызгивает его во все стороны - быстро и не сильно думая. (онли веб)

2.
>>2. Каждый клиент имеет полную игровую информацию.
Я об этом и говорю: Не имеет он полной картины. Он не знает, стоит ли за стеной кто или нет. Валидация пакетов, касающаяся игровой логики, преимущественно основывается на сравнении полученных данных <из разных источников> или <прошедших разный путь от источника до ..>.
Вот прикинь:
-- У тебя съели мозг.
-- Есть десять уважаемых тобою людей.
-- 9/10 стоят вокруг тебя и втирают, что мир - плоская тарелка супа.
-- 1/10 единственный трендит о том, что мир больше напоминает круглый сосуд с супом, причём именно сырным.
-- Кому ты поверишь? Вооот:)

Есть адекватные способы отлавливать группы таких лжецов.

FIZZER - http://fizzer.ru 14:06 19/04/10

Возьмём конкретно игру Мафия. Пусть там будут мирные жители (могут только голосовать), мафия (может убивать ночью) и комиссар Каттани (может пропалить роль одного игрока ночью). Остальных специфических персонажей пока не рассматриваем.

Итак, логика игры будет включать такие действия:
1. начать игру - т.е. определить, кто участвует и отключить присоединение других игроков.
2. распределить роли.
3. определить момент начала ночи - когда игроки с ролями могут делать активные действия.
4. определить момент окончания ночи - когда игроки с ролями больше не могут делать активные действия
5. подвести итоги ночи - сообщить всем, кто умер и исключить его из списка активных игроков, сообщить комиссару Каттани роль того, кого он "просвечивал", проверить условия окончания игры (осталась ли мафия, осталась ли мирные жители).
6. начать голосование
7. собрать голоса
8. закончить голосование
9. подвести итоги голосования

Если есть единственный хост, который рулит всей логикой, то сделать это достаточно просто (но, как я уже говорил, остаётся риск того, что хост будет мухлевать).
А если каждый клиент сам себе на уме, то как это будет выглядеть? Ну хотя бы скажите, как вы видите распределение ролей?

Dan 14:35 19/04/10

Легко. Десять клиентов - они же есть десять хостов (далее "пир").
Что знает пир:
-- правила игры + что мафии столько человек, комиссар Каттани - только один и т.п.;
-- жив/мертв про каждого пира в группе;
-- полную инфу по мертвякам;
-- полную инфу о себе;
-- etc..

1. Чтобы начать игру, то бишь создать NetGroup, нежен центр - сервак, который раздаст "адреса" всех участников группы всем участникам группы. Он же может и распределить роли.
Однако, если хочется взорвать себе мозг, можно сделать аналог интерференции волн:
Каждый пир формирует пакет - список ролей всех остальных пиров и рассылает его им всем. Таким макаром у каждого пира имеем по комплекту голосов. Каждый пир берёт результаты ,только его касающиеся, и если большинством голосов он определённо <мафия/житель/etc..>, то записывает себе "своё призвание" и говорит всем "Я ГОТОВ!". Ежели нет большинства, т.е. результаты пополам или еще как-нибудь непонятно для него - говорит всем: "Я НЕ ГОТОВ, голосуйте за меня ещё раз" - об этой ситуации надо подумать или вообще её исключить.
Следующая волна:
Пиры получают "ГОТОВ/НЕ ГОТОВ"-пакеты, собираются списки неготовых. Повторное голосование, аналогичное первой волне, но результаты готовых не изменяются, а неготовых - изменяются.

В итоге количество волн не превысит количество пиров - раз. Два - пиры знают только вероятность принадлежности того или иного пира в группе к тому или иному классу, и то только при хаке, т.е. "снифе" + "изменении клиента". Три - Голосование валидно, т.е. мы получаем нужное нам по правилам количество представителей классов (мафия/жители/etc...). И четыре - пир знает, к какому классу он принадлежит - о чудо!

По остальным пунктам - аналогично. Что касается таймеров День/Ночь и прочей унылости - фигня-базар: синхронизация "по большинству" - см. коммент выше про отсеивание лжецов.

UPD: По пункту "Два": Это только при том, что злостный хакер неплохо знаком с теориями вероятности и умеет применить на деле. Сомневаюсь, что такие на деревьях растут.

FIZZER - http://fizzer.ru 16:32 19/04/10
Цитата:

В итоге количество волн не превысит количество пиров - раз.

Клиент хакера-заподлянщика может отправлять НЕ ГОТОВ бесконечное число раз Smile
Но даже если такого не окажется, всё равно существует ненулевая вероятность, что волна не увеличит количество готовых пиров.
А следовательно, существует ненулевая вероятность, что количество волн превысит количество пир.

Цитата:

Два - пиры знают только вероятность принадлежности того или иного пира в группе к тому или иному классу, и то только при хаке, т.е. "снифе" + "изменении клиента".

И таким образом, если кто-то строит из себя мафию, остальные не могут проверить, стал ли он мафией в результате честного голосоваения или самопровозглашением.

Цитата:

Три - Голосование валидно, т.е. мы получаем нужное нам по правилам количество представителей классов (мафия/жители/etc...).

Докажите, что голосование всегда будет валидно. Хотя бы для случая, когда все клиенты немодифицированные.

Цитата:

И четыре - пир знает, к какому классу он принадлежит - о чудо!

Более того, он не просто знает, он сам и назначает Smile И никто не сможет доказать, что он назначил как-то не так Smile

Dan 17:26 19/04/10

Вообще, игры можно разделить на игры с полной информацией (шахматы, монополия, Mortal Kombat) и игры с неполной информацией (карты, Starcraft, Counter Strike).
Так вот. Если игры с неполной информацией реализовывать с помощью p2p, то всегда будет возможность для жульничества.
Если клиент обладает всей информацией (включая закрытую), то хакер может видеть информацию, которую по правилам игры видеть не должен.
Если клиент обладает не всей информацией, то хакер может обманывать другие клиенты, посылая им пакеты, правильность которых те не смогут проверить.

В играх с полной информацией, но с рандомом (например монополия), так же возможно жульничество - при определении этого самого рандома.

Dan 17:38 19/04/10

>>Если есть единственный хост, который рулит всей логикой, то сделать это достаточно просто (но, как я уже говорил, остаётся риск того, что хост будет мухлевать).

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

k0zer 12:59 20/04/10
Цитата:

Еще можно сделать не одного ведущего, а например трех, синхронизирующихся между собой.

У первого выпало рандомом 0.76876213123, у второго - 0.2123534545, у третьего - 0.56709882342
Что, разумеется, привело к разным, не совпадающим, решениям.
Ведущие начали дружно кикать друг друга Smile

Dan 14:34 20/04/10

Это к чему вообще? Я конкретно про игру мафия говорил, можно пример поближе к реалиям?

k0zer 14:59 20/04/10

В мафии надо назначить роли.
Это лучше делать рандомом. Причём, желательно, не псевдослучайным, иначе, зная зерно, можно будет смоделировать рандом. Либо просто не сообщать зерно.
В результате у каждого ведущего будет свой рандом => каждый ведущий составит свой список ролей.

Dan 15:19 20/04/10

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

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

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

k0zer 16:17 20/04/10

Короче, Дан, нет ничего невозможного и всё или многое уже до нас придумали. Фигня это всё в плане сложности. Вот самообучающуюся нейронку с потенциально постоянно отваливающимися звеньями придумать - вот это дело, - и деньги, и потенциал, и сложность, и интерес - всё, что надо суровым флэшерам-старикам первого-второго поколения Smile).

FIZZER - http://fizzer.ru 13:14 21/04/10

Ну дык а я что говорил?

Цитата:

Я не говорю, что идея плохая.
Я просто говорю, что не всё так радужно и надо учесть очень многое.

Хотя и система, предложенная k0zer'ом тоже не абсолютно защищена, просто там уже хакерам придётся помучится, да и мне надоело выискивать дыры. Самого главного я добился - задача была рассмотрена более глубоко, были обнаружены проблемы и возможные способы их решения.

Dan 13:34 21/04/10

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

k0zer 18:11 21/04/10

вы все спорите ай ай яй!

вот вам например простой механизм распределения ролей. (записывайте)))

допустим игроков 5 чел - это 5 ролей, роль обозначим числом N от 0 до 5 по правилу которое все знают
все игроки придумывают себе секрет: число от 0 до количества ролей-1 (4) и такие условные привила
добавить серктет X к роли N это (N+X)%5 , отнять секрет это (N-X)%5

Игрок1 (секрет=3)
- берет массив ролей [0,1,2,3,4]
- добавляет к ним совй секрет [3,4,0,1,2]
- потом он этот массив тусует [1,2,4,0,3] и это отдает игроку2

Игрок2 (секрет=1)
-выбирает любую цифирю [1,(2),4,0,3] и отдает ее игроку1 получает массив [1,4,0,3]
-так-же добавляет свой секрет [2,0,1,4]
-и тусует массив [0,1,2,4] отдает игроку3

в это время игрок1
- отнимает от цифры которую дал игрок2 свой секрет (2-3) % 5 = 4 получает свою роль4
- передает свой секрет игроку3

Игрок3 (секрет=1)
отнимает от массива [0,1,2,4] серет игрока1 (3) получает массив [2,3,4,1]
выбирает любое число [2,(3),4,1] и отдает его игроку2, получает [2,4,1]
добавляет свой секрет=(1) [3,0,2]
тусует массив [0,2,3] и отдает игроку4

в это время игрок2
-отнимает от цифры игрока3 свой секрет (3-1)%5 = 2 получает свою роль2
-передает свой секрет игроку4

Игрок4 (секрет=2)
-отнимает от массива [0,2,3] секрет игрока2 (1) получает [4,1,2]
-выбирает любое число [(4),1,2] отдает его игроку3, получает [1,2]
-добавляет свой секрет(2) [3,4]
-тусует массив [4,3] и отдает игроку5

в это время игрок3
-отнимает совй секрет (4-1)%5 = 3 получает свою роль3
-говорит свое секрет(1) игроку5

- Игрок5 (секрет=4)
-отнимает секрет игрока3 (1) получает [3,2]
-выбирает цифирю [(3),2] отдает ее игроку 4
-добавляет свой секрет (4) к оставшейся 2 получает (2+4)%5=1 и отдает игроку1

в это время игрок4
-отнимает свой секрет(2) (3-2)%5 = 1 получает свою роль1
-говорит свой секрет (2) игроку1

Игрок1
отнимает от цифры игрока5 секрет игрока4 (2) (1-2)%5 = 4 и возвращает игроку 5

Игрок5
отнимает свой секрет (5-4)%5 = 0 получает свою роль0

-------------
Получилось так, что никто не в курсе у кого какая роль и все получили свою роль
никакой читер сдесь не сможет ничего сделать
два читера смогут раскусить лишь одного игрока и то при определенных обстоятельтсвах

Flop - http://bafpug.com 21:16 21/04/10

Действительно, подсмотреть тут не получается (по крайней мере я пока не нашёл такого способа, ну кроме двух читеров, разумеется).

Но таки пару недостатков вижу.
1. Процедура последовательная, многошаговая, и вовлекает в себя несколько пиров. Поэтому:
а) если у одного из пиров высокий пинг, то процедура может затянуться.
б) если кто-то из пиров отлетит, то вообще всё ломается и надо начинать заново.
И самое главное - довольно трудно определить, отлетел кто-то или нет.
Например, игрок4 ждёт сообщений от игрока2 (его секрет) и игрока3 (массив ролей). Затем ещё от игрока5, но это уже когда должётся от первых двух. А игрок3 ждёт сообщений от игрока2 и игрока1.

Допустим, игрок4 уже 30 секунд не получает никаких сообщений от игрока3. Вопрос: это игрок3 сам отлетел или игрок3 не получал никаких сообщений от игрока1? В принципе, это решаемо с помощью дополнительных броадкастов, когда каждый пир при каждом действии оповещает всех остальных, мол, ребята я своё дело сделал. Правда, там тоже могут быть потери и оповещение до кого-то может и не дойти или дойти слишком поздно.

2. Как я уже говорил, так как каждый знает лишь свою роль, следовательно валидировать никто не может.
Допустим, игрок1 у нас читер. По правилам ему досталась роль4. Но он ведёт себя, как будто у него роль3.
Разумеется, в процессе игры может возникнуть конфликт (так как есть и другой игрок с ролью3). Но как разрешить конфликт?
Оба будут утверждать, что именно они имеют роль3, а второй - самозванец.
И никто не сможет это проверить.

Dan 09:20 22/04/10

ты что хочешь чтоб я тебе все алгоритмы рассказал )))

на счет многоходовости это так и надо. все уверены что все правильно + удп он таки быстрый протокол
квака работает на UDP потеря покетов есть - но ничего все довольны и пинги маленькие

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

а в самом конце все всегда раскрывают свои карты
и все проверяют все ли играли по правилам
если находится читер - его в игнор и всего делов ))

Flop - http://bafpug.com 10:08 22/04/10
Flop пишет:

квака работает на UDP потеря покетов есть - но ничего все довольны и пинги маленькие

Одно дело, когда из-за потери пакетов ракета прошла сквозь противника и не повредила его. Никто, кроме пульнувшего ракету, это и не заметит.
Другое дело, когда в лобби сидят 10 игроков, все нажали Ready, и ждут, пока игра начнётся. А она всё не начинается и не начинает, потому что у кого-то одного теряется пакеты. А если не одного, то вобще жесть.
В Warcraft3 тоже UDP. Но один лаггер может вывести из себя всех остальных игроков своими подвисаниями на 5-20 секунд.

Ну ладно, с распределением ролей разобрались. Теперь сама игра.
Мафия должна как-то сообщить, кого она убивает ночью.
Вариант 1. Броадкаст.
Мафия рассылает вообще всем пирам в комнате сообщение, что она убивает вот того-то.
Правильный клиент говорит пользователю: "Неизвестная мафия замочила игрока2"
Неправильный клиент говорит пользователю: "Игрок1 замочил игрока2".

Вариант 2. Убийца -> жертве
Мафия посылает сообщение только убиваемому: BANG_BANG_U_R_DEAD. Соответственно остальные игроки никак это подсмотреть не могут.
А убиваемый уже всех оповещает, что его убили.
Правильный клиент рассылает сообщение I_WAS_KILLED
Неправильный клиент рассылает сообщение I_AM_STILL_ALIVE (или вообще ничего не сообщает, если так надо по протоколу) - остальные верят и только мафия вахуе.
Другая версия неправильного клиента рассылает сообщение I_WAS_KILLED и автоматически отправляет в чат: "Меня убил игрок1"

Вариант 3. Через ведущего.
Как и в реальной жизни, мафия сообщает, кого убивает, только ведущему. Ведущий сам в игре не участвует.
Затем ведущий оповещает остальных игроков, кто умер, кто живой.
С точки зрения защиты от читерства - самый лучший вариант из трёх, но всё равно не идеальный.
Читер не сможет получить никакого игрового преимущества (т.к. ведущий вне игры). Но всё равно может спадлить - просто чтобы тупо поржать.
В реальной жизни тоже такое бывает, называется произвол ведущего.
Или убить не того, на кого мафия показала (может быть даже саму мафию Smile), или не сообщить, что мафии в городе больше нет, и заставить оставшихся мирных жителей долго сидеть и гадать, кто же из них всё-таки мафия Smile

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

А вот в онлайновой распределённой системе...

Цитата:

и все проверяют все ли играли по правилам
если находится читер - его в игнор и всего делов ))

Опять же не всё так просто Smile
Если бы был один общий сервер, то можно было бы блеклист хранить на нём. А тут распределённая система.
Соответственно блеклист у каждого свой. Присоединился ты к игре, а там - читер (согласно твоему блеклисту).
Что делать дальше? Выходить и искать другую? Или сообщить всем, что он читер, чтобы обновили свои блеклисты?
А если читер сообщит всем, что это ты читер и они занесут тебя в блеклисты? Smile

Dan 13:49 22/04/10

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

Flop - http://bafpug.com 17:17 22/04/10

Да не. Не обязательно выкладывать.
Просто ХОРОШО ХОРОШО ХОРОШО продумай.

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

Но этих самых камней и граблей ещё много. И некоторые ты просто пока не заметил.
Я лишь предлагаю попытаться найти их сейчас, потому что когда проект уйдёт в продакшн, вносить изменения будет уже поздно.
А в любой популярной многопользовательской игре всегда находятся люди, желающие почитерить. И чем популярнее игра, тем больше таких желающих.
Поэтому если ты думаешь: "да кому будет нужно что-то там взламывать" - то аналогично мысли "да кому захочется вообще в неё играть".
То есть ты или недооцениваешь взломщиков, или заранее настроен на провал.

Ну а если игра станет популярной, разлетиться по порталам, появится куча читеров, то простые игроки начнут взывать к создателю: сделай что-нибудь! А делать что-то уже будет поздно, так как надо полностью менять алгоритмы, а значит и протокол, а значит надо одновременно по всем порталам разослать апдейт - а это, понятное дело, очень непросто.

Вот и я сразу и сказал: надо всё продумать заранее. Очень тщательно. Не обязательно рассказывать мне или кому-то ещё, хотя сторонний взгляд часто помогает увидеть то, что сам не заметил. Ну попробуй сам встать на место читера, посмотреть на алгоритм и найти в нём уязвимости.
Если уязвимостей не останется - подумай, как поведёт себя в случае с нестабильной сетью. А лучше сделать прототипчик и протестировать. В том числе используя такой тест, как выдирание кабеля.

Итого. Цитирую сам себя:

Цитата:

Я не говорю, что идея плохая.
Я просто говорю, что не всё так радужно и надо учесть очень многое.

Dan 19:42 22/04/10

Сердешно прошу меня простить, но мне кажется, что подобные критические выпады Вам, Dan, не к лицу.

FIZZER - http://fizzer.ru 20:17 22/04/10

Не переживайте на этот счёт, подлецу всё к лицу Smile

Да и что плохого в критике? Я ж не матерю никого. Я просто предупреждаю о возможных неприятностях в будущем. Не угрожаю, ни в коем случае. Именно предупреждаю.
Вот знаете надписи бывают: "Осторожно, скользкие ступени"? Так вот мои сообщения несут точно такую же функцию.

Dan 20:48 22/04/10

Вот, кстати, цитатка. Второй комментарий в топике:

Flop пишет:

И да мне нужна критика - надо найти кучу слабых мест или вообще дыр

Чем я, собственно, и занимался Smile

Dan 08:42 23/04/10

О чем спор???
на счет много соединений и тд - не беспокойся ОНО РАБОТАЕТ!
все уже придумали до нас - стоит только чуть чуть разобратся (посмори посденюю видяшку)

разделить отвественность и при этом убрать возможность читинга тоже возможно

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

В итоге получается: чтобы открыть карту - нужно спросить секрет у всех игроков.
А они тебе его не скажут если не видели что ты по всем правилам не взял эту карту из колоды

( для мафии у меня тоже есть наметки )

Flop - http://bafpug.com 15:05 19/04/10

Конкретно по шагам расскажи, как определяется, какие карты на руках, и как карты попадают на стол на стрите, префлопе и флопе?

Dan 15:21 19/04/10

Не думаю, что так будет эффективно!

parnishka2009 - http://proekt-05.com.ua/ 13:08 26/04/10

По твоим словам выходит, что есть хост - это противоречит самой концепции. Есть проверенные метОды решения и организации подобных сетей. Вспомним Quake (да-да, именно кваку, кпримеру). Там нет "хоста игровой логики", но есть он только как сетевой хост. Каждый клиент получая пакет с данными а-ля "Вася пульнул в Макса, Хэд-Шот, Пыщ-пыщ!.." проверяет его на валидность, учитывая, скажем так, игровые правила. Т.е. каждый клиент является и хостом, касательно игровой логики.
Кроме всего вышеописанного и прочего есть примитивнейшие и практически безупречно работающие практики валидации подленности, а именно: Каунтинг пакетов (как глобальный, так и относительный - между пирами), параллельная маршрутизация пакетов (кажется так называется, но не уверен) - это есть гениальная штука и каждый разработчик, узнав о ней, стремиться на её базе придумать свой велосипед. Работает приблизительно так: действие на [клиенте А] --> посыл пакетов нескольким реципиентам-клиентам --> пакет валидируется и пересылается остальным реципиентам --> (пакет имеет хозяина(отправителя) и срок жизни, акромя прочей нелепой фигни)) --> [клиент R] при очередной валидации свежеполученного пакета, пересланным [клиентом B], находит косяк и откладывает этот пакет до истечения его срока жизни и не пересылает его; получает очередную пачку пакетов; валидирует; медитирует; ВНЕЗАПНО находит два и более апдэйтов по той инфе, что была в косячном пакете и, если он еще не протух (лайв тайм не истёк), со вследующими посылаемыми пакетами отправляет [инфу о косяке, авторе косяка [клиент А], отправителе-предыдущим валидаторе [клиенте B]]. Стоит ли далее продолжать? Разумеется, имея сеть из подобных самостоятельных единиц, проверяющих своих соседей, достаточно несложно вычислить клиенты, отправляющие подложные данные, или их изменяющие и пересылающие дальше.

И, да, изъявляю желание учавствовать, да.

FIZZER - http://fizzer.ru 12:27 19/04/10

Субъективная оценка и статистика показывает, что P2P возможна только в 70%-75% случаев.
Оноситься к такомй виду связи гарантированно - вы не можете. UDP - это такая штука, что ваш вызов соседу не всегда пройдет и вы врядли узнаете об этом не написав свой оповещатель.

андефайнд (не проверено) 08:41 16/04/10

Бред²

Artem Brigert - http://www.brigert.com 09:42 16/04/10

Растёшь Smile

Dan 10:12 16/04/10

ну дык ...

Artem Brigert - http://www.brigert.com 10:26 16/04/10

Субъективная оценка и статистика показывает, что P2P возможна только в 70%-75% случаев.
Плохо вы изучали суть RTMFP Group, они для того и нужны, чтобы p2p стал возможен в 100% случаев, когда есть UDP соединение доступное. По сути, можно сделать сеть уровня Skype, используя эту новую фишку, просто рулить ей нужно будет централизованно с помощью корневых серверов, которые и будут заниматься подключением в группы разных людей.

flaphone (не проверено) 10:40 16/04/10

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

Artem Brigert - http://www.brigert.com 10:46 16/04/10

Кому как Wink

flaphone (не проверено) 11:25 16/04/10

интересно Smile тогда может тебе и про UDP закрытый что-то слышно?

Artem Brigert - http://www.brigert.com 11:29 16/04/10

Более чем)

flaphone (не проверено) 11:50 16/04/10

может ты даже слышал как его можно обойти? Smile

Artem Brigert - http://www.brigert.com 13:10 16/04/10

Что имеется ввиду под обойти?)

flaphone (не проверено) 13:18 16/04/10
  • 1
  • 2
  • следующая ›
  • последняя »
Примечания: Статус документа => в процессе ·
Статьи · Идеальный клип · Персоналии · Глоссарий (уст.) · Что делать? · К началу ↑
© 2002-2012 Ростиславр · О проекте · Подписка на RSS · α-тестировани невероятного
]]>
]]>
Что такое OpenID?
  • Войти по OpenID
  • Скрыть вход по OpenID
  • Регистрация
  • Запросить новый пароль