Цитата: evg от Октябрь 02, 2018, 09:21:01Понятно, что идеал недостижим, но к нему нужно стремиться. В отдельных ситуациях можно пожертвовать получением игроком результата хода, но не скоростью просчета хода.Согласен
3. Необходимо обрабатывать коллизии - ситуации, когда игре одновременно отдается две команды затрагивающие один игровой ресурс (клетку, юнит, население, золото и т.д.). В таких случаях, одна из команд должна получить приоритет и обрабатываться первой, а обработка второй команды должна быть отложена до окончания обработки первой.
У каждого игрока своя очередь событий, они идут последовательно. Проблема состоит только в том что третья сторона должна правильно решить чей ход был быстрее и чьему состоянию она верит. Это действительно сложная задача с учетом того что некоторые могут искуственно подделывать данные о времени события и во вторых данные не все доступны в единый момент времени. Но мне задача интересно и пока всё выглядит как решаемая.
Цитата: evg от Октябрь 02, 2018, 09:21:01В p2p-архитектуре на вычисление изменений в игре, синхронизацию состояний игры между игроками и хранение результатов на клиенте неизбежно придется наворачивать достаточно сложную криптографию, что бы обеспечить доверительные отношения между узлами. Это приведет к существенному падению скорости просчета ходов, плюс добавятся задержки в случае арбитража коллизий.
Не согласен. Современные комьютеры спокойно справляются как минимум с тысячами операций в секунду по шифрованию. Все сайты перешли на https. Я при разработке не заметил с этим проблем - спокойно в реальном времени верифицируются данные на основе открытых ключиков RSA
Цитата: evg от Октябрь 02, 2018, 09:21:01Фактически, в игре не останется реалтайма и получится что-то вроде первой Цивилизации, только сильно кастрированное в части экономики и поэтому значительно менее интересное. Вот именно этот момент я и не понимаю: Вы жертвуете реалтаймом или есть некое техническое решение, позволяющее сохранить реалтайм в p2p-архитектуре? Если есть, то какое?
Обычные блоковые цепочки.
Точка А походила послала свои результаты на точку Б и В и та приняла их как валидные
Точка Г в это же время походила и послала свои результаты на точку Д.
Теперь точка Б не верит версии собый точкам Г и Д, а точка Д не верит версии событий А и Б и В.
Точка Д сравнивает события по временным меткам и приходит к выводу что версия событий А и Б и В более реалистична по временным меткам.
Теперь точка А выдавлена и должна либо принять общий ход событий либо другие точки не будут верить её ходу событий. Вуаля.
Остается последняя проблема - подделки временных меток и синхронизация точек по времени
Но вообще я не любитель рассуждать теоретически - я вполне могу не понимать самого очевидного и в результате получится пошагово или вообще не получится.
Вообщем я публикую игру тут https://nwtour.github.io/decline/
В лучшем случае через пару месяцев будет играбельная версия