Распределенная игра
От: Evgolas Россия http://DelaDarom.Ru
Дата: 12.12.07 21:29
Оценка:
Приветствую всех.
Хочется странного
А именно, есть идея распределенной сетевой игры.
Игра будет без централизованного сервера. Т.е. каждый клиент будет и сервером в каком-то смысле. Каким образом можно бороться (и можно ли?) со всякого рода хаками?
-----------------------------
Сервис Услуга-за-Услугу
Городской рогейн для роллеров
Заметки шароварщика
-----------------------------
Re: Распределенная игра
От: neFFy Россия  
Дата: 12.12.07 22:03
Оценка:
Здравствуйте, Evgolas, Вы писали:

E>Хочется странного

E>А именно, есть идея распределенной сетевой игры.
E>Игра будет без централизованного сервера. Т.е. каждый клиент будет и сервером в каком-то смысле. Каким образом можно бороться (и можно ли?) со всякого рода хаками?

голосованием серверов или усреднением "температуры по палате"..

а не кажется ли тебе, что ты больше геморроя поймаешь с синхронизацией?.
...coding for chaos...
Re[2]: Распределенная игра
От: Evgolas Россия http://DelaDarom.Ru
Дата: 12.12.07 22:19
Оценка:
Здравствуйте, neFFy, Вы писали:

FF>Здравствуйте, Evgolas, Вы писали:


FF>голосованием серверов или усреднением "температуры по палате"..


FF>а не кажется ли тебе, что ты больше геморроя поймаешь с синхронизацией?.


Насчет геморрая — несомненно, но вот тем не менее есть идея такой игры
А насчет голосования, усреднения — это как?
Берем простейший случай :
1. У игрока А есть некий игровой предмет.
2. Он отдает игроку В этот предмет.

Кто тут должен голосовать и что усреднять?
Т.е. мне кажется, что проблема в том, что если на одном конце что-то прибыло, то на другом конце должно это убыть. Вот как это можно сделать? И можно ли вообще? Что если использовать какую-то разновидность электронной подписи?
-----------------------------
Сервис Услуга-за-Услугу
Городской рогейн для роллеров
Заметки шароварщика
-----------------------------
Re[3]: Распределенная игра
От: neFFy Россия  
Дата: 13.12.07 06:37
Оценка:
Здравствуйте, Evgolas, Вы писали:

FF>>голосованием серверов или усреднением "температуры по палате"..

E>А насчет голосования, усреднения — это как?
E>Берем простейший случай :
E>1. У игрока А есть некий игровой предмет.
E>2. Он отдает игроку В этот предмет.
E>Кто тут должен голосовать и что усреднять?

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

усреднение:
пусть клиент 1 имеет 100 голдов, а клиент 2 думает, что первый имеет 0 голдов.. усредняем, получаем 50 голдов
хотя по-хорошему нужно делать поправки на количество клиентов и, если клиентов не хватает, то считать по самому худшему сценарию

E>Т.е. мне кажется, что проблема в том, что если на одном конце что-то прибыло, то на другом конце должно это убыть. Вот как это можно сделать? И можно ли вообще?


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

E>Что если использовать какую-то разновидность электронной подписи?


и получить дополнительный геморрой
...coding for chaos...
Re[4]: Распределенная игра
От: mihoshi Россия  
Дата: 13.12.07 08:41
Оценка:
Здравствуйте, neFFy, Вы писали:

E>>Т.е. мне кажется, что проблема в том, что если на одном конце что-то прибыло, то на другом конце должно это убыть. Вот как это можно сделать? И можно ли вообще?


Ну, например так.

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

Таким образом, если у двоих оказался один и тот же предмет (с одинаковым началом кода),
то настоящий владелец — тот, у кого код предмета длинее. Соответственно, того, у кого короче, баним

С деньгами и расходами сложнее, но можно просто использовать реальные монеты вместо числа голдов,
колчаны со стрелами, вместо отдельных стрел и т.д.

Плюс нужна возможность каждому клиенту иногда делать аудит других (на те же дупы) и скандалить, если что-то не сходится.

Есть, конечно, и другие проблемы, но мне кажется, при желании все можно разрулить
Re[5]: Распределенная игра
От: neFFy Россия  
Дата: 13.12.07 09:04
Оценка:
Здравствуйте, mihoshi, Вы писали:

E>>>Т.е. мне кажется, что проблема в том, что если на одном конце что-то прибыло, то на другом конце должно это убыть. Вот как это можно сделать? И можно ли вообще?

M>Ну, например так.
M>У каждого клиента есть уникальный ключ, известный только ему.
M>У каждого экземпляра есть код, который генерится в момент создания предмета.
M>Когда предмет передается, то на основеключа нового владельца и старого кода генерится новый, и приписывается концу старого.

если один какой то артефакт будет переходить по рукам, то ключ скоро начнет весить несколько мегабайт

M>Таким образом, если у двоих оказался один и тот же предмет (с одинаковым началом кода),

M>то настоящий владелец — тот, у кого код предмета длинее. Соответственно, того, у кого короче, баним

непонятно кто будет отвечать за то, что кто то нашел предмет на дороге.. т.е. неясно, кто хранит настройки всего мира..
и что делать, если события произошли одновременно.. например, если 2 человека подняли предмет с земли одновременно
...coding for chaos...
Re[6]: Распределенная игра
От: mihoshi Россия  
Дата: 13.12.07 09:23
Оценка:
Здравствуйте, neFFy, Вы писали:

FF>если один какой то артефакт будет переходить по рукам, то ключ скоро начнет весить несколько мегабайт

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

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

FF>и что делать, если события произошли одновременно.. например, если 2 человека подняли предмет с земли одновременно
Если два игрока находятся рядом (скажем, в одном данже/карте/инстансе), то вся инфа и все события параллельно считаются на всех компах взаимодействующих игроков и сверяются.
Либо, если очень уж много игроков рядом, то выделяются автоматически несколько (для надежности) компов, которые все считают.
Re[7]: Распределенная игра
От: neFFy Россия  
Дата: 13.12.07 11:43
Оценка:
Здравствуйте, mihoshi, Вы писали:

FF>>если один какой то артефакт будет переходить по рукам, то ключ скоро начнет весить несколько мегабайт

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

если нет постоянного сервера, то ожидать постоянных игроков странно

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

FF>>и что делать, если события произошли одновременно.. например, если 2 человека подняли предмет с земли одновременно
M>Если два игрока находятся рядом (скажем, в одном данже/карте/инстансе), то вся инфа и все события параллельно считаются на всех компах взаимодействующих игроков и сверяются.
M>Либо, если очень уж много игроков рядом, то выделяются автоматически несколько (для надежности) компов, которые все считают.

ага, один получил сообщение, что кто то нашел предмет, и сам сгенерил подобное сообщение и попробуй докажи, что ток один человек нашел шмотку..
...coding for chaos...
Re[5]: Распределенная игра
От: Phoenics Россия https://sourceforge.net/projects/phengine
Дата: 13.12.07 13:53
Оценка:
M>У каждого клиента есть уникальный ключ, известный только ему.
M>У каждого экземпляра есть код, который генерится в момент создания предмета.
M>Когда предмет передается, то на основеключа нового владельца и старого кода генерится новый, и приписывается концу старого.

Проверять надо не длинну ключа а его подлинность, т.к. хакер может сразу нагенерить себе ключ такой длинны что мама не горюй. Или при передаче предмета каким-то боразом сэмитировать предачу самому себе например, тогда его код удлиннится. Есть и пути для других хаков, например у зхакера может быть два персонажа, перед продажей предмета кому-то он может:
1. Запомнить ключ на предмет, передать его своему второму персонажу и обратно получив боле едлинный ключ.
2. Передать предмет со старым ключём дургму игроку.

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

Если всё всё время хранить вещи, ключи и прочую фигню в "надёжном месте", которое обычно называют сервер , то мы опять приходим к концепции центрального сервера, который должен быть хранилищем ВСЕГО ценного что может понадобится перепроверить, и быть гарантом чесной игры.

Как вам уже тут указали вы придумываете геморой на собственную голову. Но сомневаюсь что вы от него откажитесь, так как любой из нас понеопытности бывал во власти безумных идей, это нормально...
---=== С наилучшими пожеланиями, Phoenics ===---
_
Re[7]: Распределенная игра
От: Wifer http://gamedev.by
Дата: 13.12.07 15:06
Оценка:
Хароший анегдот, странно почему никто ещё до этого не додумался
... << RSDN@Home 1.2.0 alpha rev. 745>>
Re[6]: Распределенная игра
От: Evgolas Россия http://DelaDarom.Ru
Дата: 13.12.07 16:06
Оценка:
Здравствуйте, Phoenics, Вы писали:
<skipped>
P>Как вам уже тут указали вы придумываете геморой на собственную голову. Но сомневаюсь что вы от него откажитесь, так как любой из нас понеопытности бывал во власти безумных идей, это нормально...

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

Как-то ведь работают например децентрализованные мессенджеры?
-----------------------------
Сервис Услуга-за-Услугу
Городской рогейн для роллеров
Заметки шароварщика
-----------------------------
Re[6]: Распределенная игра
От: mihoshi Россия  
Дата: 13.12.07 16:19
Оценка:
Здравствуйте, Phoenics, Вы писали:

P>Если всё всё время хранить вещи, ключи и прочую фигню в "надёжном месте", которое обычно называют сервер , то мы опять приходим к концепции центрального сервера, который должен быть хранилищем ВСЕГО ценного что может понадобится перепроверить, и быть гарантом чесной игры.


P>Как вам уже тут указали вы придумываете геморой на собственную голову. Но сомневаюсь что вы от него откажитесь, так как любой из нас понеопытности бывал во власти безумных идей, это нормально...


Даже с централизованным сервером возможностей читинга навалом. То же ботоводство.

Мне лично эта идея интересна больше как мысленный эксперимент По-моему, что можно добиться надежности, сравнимой со стандартной моделью. Надо только придумать, как.
Re[7]: Распределенная игра
От: neFFy Россия  
Дата: 13.12.07 18:55
Оценка:
Здравствуйте, Evgolas, Вы писали:

E>Как-то ведь работают например децентрализованные мессенджеры?


в мессенджерах никто не будет пытаться "считерить" ради еще одной строчки текста
а чем не устраивает идея с переходящим сервером?. как в каком нить Warcraft 3..
например, его можно было бы "подстраховывать" несколькими клиентами..
...coding for chaos...
Re[8]: Распределенная игра
От: Evgolas Россия http://DelaDarom.Ru
Дата: 13.12.07 22:41
Оценка:
Здравствуйте, neFFy, Вы писали:

FF>в мессенджерах никто не будет пытаться "считерить" ради еще одной строчки текста

FF>а чем не устраивает идея с переходящим сервером?. как в каком нить Warcraft 3..
FF>например, его можно было бы "подстраховывать" несколькими клиентами..

Изначально мне представлялась другая чем W3 игра, серверов в ней как таковых вообще не должно быть...
Постараюсь объяснить.
Что-то очень простое с точки зрения графики и геймплея, но рассчитанное на очень много игроков. Сотни, или тысячи. Для скучающих офисных работников. Представлялось примерно в таком духе — человек ставит маленькую программку — типа аськи. Она висит в трее. В ней кстати и мессенджер будет. Вот, каждый игрок как бы контролирует, обеспечивает функционирование определенной игровой области. Человек выключает компьютер — эта игровая область становится недоступной. Человик включает компьютер, эта программа запускается — и эта его игровая область снова работает. Соответственно эту свою игровую область каждый человек может кастомизировать, как-то украшать, хвастаться перед друзьями — мол зайдите ко мне, смотрите я там какой замок построил. Эти игровые области соседствуют друг с другом, можно ходить в гости к соседям; чтобы пройти к какому-то человеку, возможно нужно пройти через области других людей. Вот как-то так примерно.
-----------------------------
Сервис Услуга-за-Услугу
Городской рогейн для роллеров
Заметки шароварщика
-----------------------------
Re[9]: Распределенная игра
От: neFFy Россия  
Дата: 14.12.07 06:12
Оценка:
Здравствуйте, Evgolas, Вы писали:

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

E>Постараюсь объяснить.
E>Что-то очень простое с точки зрения графики и геймплея, но рассчитанное на очень много игроков. Сотни, или тысячи. Для скучающих офисных работников. Представлялось примерно в таком духе — человек ставит маленькую программку — типа аськи. Она висит в трее. В ней кстати и мессенджер будет. Вот, каждый игрок как бы контролирует, обеспечивает функционирование определенной игровой области. Человек выключает компьютер — эта игровая область становится недоступной. Человик включает компьютер, эта программа запускается — и эта его игровая область снова работает. Соответственно эту свою игровую область каждый человек может кастомизировать, как-то украшать, хвастаться перед друзьями — мол зайдите ко мне, смотрите я там какой замок построил. Эти игровые области соседствуют друг с другом, можно ходить в гости к соседям; чтобы пройти к какому-то человеку, возможно нужно пройти через области других людей. Вот как-то так примерно.

вспомнился диптаун с его домами-серверами
вообще изначально вопрос был про борьбу с хаками.. если отдать мир в руки игроков, то хаки будет имхо не побороть..
а мож так и оставить?. мож вообще не бороться с хаками?. пусть будет как фича
...coding for chaos...
Re[9]: Распределенная игра
От: Phoenics Россия https://sourceforge.net/projects/phengine
Дата: 14.12.07 13:45
Оценка:
Здравствуйте, Evgolas, Вы писали:

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

E>Постараюсь объяснить.
E>Что-то очень простое с точки зрения графики и геймплея, но рассчитанное на очень много игроков. Сотни, или

Ну если в виде разминки для ума, то можно попробовать предложить пару методов (здесь и далее под клинетом А подразумевается хозяин, а под клиентов Б — гость, когда один идёт в гости к другому ):
1. Этот враинт если объекты игры нужны игрокам что бы хвастатся друг перед дургом и наличие объекта так или иначе не является секретом. Всё равно нужны центральные сервера или группа серверов, может быть с распределённой БД. Эти сервера должны точно знать номенклатуру предметов которые есть у каждого игрока. Только перечень с типами. Если игрок Б идёт в гости к игроку А, то игровой клиент игрока Б сначала запрашивает у сервера список объектов которые есть у игрока А. Затем он запрашивает у клиента игрока А как эти предметы расположены. Таким образом игрок Б увидит только те предметы про окторые "знает" сервер. Есьтественно при этом весь "товарооборот" должен идти через сервера.
2. Этот варинт если игроки могут не захотеть открывать полный перечень своих предметов. Он сложнее.
2.1. Модификация варианта 1. Можно дать игроку возможность указывать серверу какие из его предметов будут публичными а какие приватными. Тогда при заходе игрока Б в гости к игроку А, когда клиент Б спрашивает у сервера список предметов игрока А, сервер возвращает только список публичных предметов.
2.2. Ещё более сложный (и может даже извратный ) вариант. Список предметов клиент Б, запрашивает не у сервера, а всё таки у клиента А, при этом клиент Б автоматом отсылает этот список на сервер что бы тот мог "сверить" эти сведения со своими. Важно понимать, что если списки не совпали, это не значит что игрока А надо автоматом банить!!! Хакером может быть как раз игрок Б, который таким способом попытается избавится от игрока А. В случае обнаружения такого несовпадения можно воспользоватся арбитражём. Арбитраж может работать например как поисковая машина, которая генерирует случайным образом поддельных игроков, и от их имени заходит в гости к другим игрокам, сверяя списки Эта поисковая машина может переодически обходить всех игроков в сети, учащая проверки тех из них по окторым поступили "звоночки". Но такую хрень тяжело сделать
---=== С наилучшими пожеланиями, Phoenics ===---
_
Re[10]: Распределенная игра
От: Evgolas Россия http://DelaDarom.Ru
Дата: 15.12.07 21:26
Оценка:
Здравствуйте, neFFy, Вы писали:

FF>вспомнился диптаун с его домами-серверами

FF>вообще изначально вопрос был про борьбу с хаками.. если отдать мир в руки игроков, то хаки будет имхо не побороть..
FF>а мож так и оставить?. мож вообще не бороться с хаками?. пусть будет как фича

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

========================
Мой блог: Заметки аутсорсера
========================
-----------------------------
Сервис Услуга-за-Услугу
Городской рогейн для роллеров
Заметки шароварщика
-----------------------------
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.