[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4505: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3706)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4507: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3706)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4508: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3706)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4509: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3706)
GreenCubes • Просмотр темы - Кэширование мира на клиенте
GreenCubes WikiИнформацияПремиум-магазинНачать игратьКарта мира

Кэширование мира на клиенте

Текстур-паки и прочие модификации Minecraft

Кэширование мира на клиенте

Сообщение Nefig-Tut » 14 июн 2011, 17:37

добрый день, например.

preface:
- я тут недавно
- хотел пока ничо не строить, побродить по миру, посмотреть здания, полюбоваться
- например, метромост в эверлуке и днк-мост в авалон - это зач0т!!, очень красиво
- хотел поездить в метро, попыриться на красоты, это прикольно

problem:
- и таки во что же я тут же уткнулся? что забрало моё счастье? правильно!
Изображение
неподгруженные чанки!!
- приходится ждать 3-30 секунд, чтобы с сервера подгрузился очередной десяток чанков и ты прошел 16 блоков дальше, чтобы опять ждать
- я понимаю, что когда ты строишь что-то, то сидишь на одном месте 5х5 чанков размером и это тебя не парит
- но стоит тебе начать идти куда-то дальше чем 10 чанков вперёд (размер области мира хранящейся на клиенте) - то привет - конец мира и ожидание его подгрузки
- это адово бесит, например
- надеюсь, я достаточно внятно обрисовал проблему

solution:
- кэширование чанков на клиенте
- большая часть мира, где не идёт или закончено строительство - статична, поэтому мы не наступим на проблему "устаревания" кэшированного чанка
- очень удивительно, что никто в этих ваших интернетах это до сих пор не реализовал
- вобщем, я решил написать кэширование сам
- и написал, proof-of-concept версия кода уже даже работает
- плюс игроку: один раз пройдя по месту (т.е приняв чанки с сервера) не надо ждать его подгрузки в дальнейшем
- плюс серверу: игрок, пробегая те чанки, которые у него уже кэшированы не стоит и не ждет подгрузки, т.е. уменьшается трафик сервер->клиент.

question:
- собственно, хочется узнать мнение сообщества на эту тему. я мог бы сделать мод после перехода кода в статус "release"
- а так же мнениe модераторов и админов. я ВНИМАТЕЛЬНО ПРОЧЕЛ пункт правил "Использовать любые модификации клиента,
любым образом облегчающие получение внутриигровых ресурсов, дающие дополнительные способности персонажу и так далее"
и, имхо, кэширование чанков не попадает под эти ограничения. если внезапно будет решено, что таки да - то тогда таки нет.
Nefig-Tut
 
Сообщения: 11
Зарегистрирован: 29 май 2011, 19:50

Re: Кэширование мира на клиенте

Сообщение asa193 » 14 июн 2011, 17:57

http://bugs.greencubes.ru/projects/greenserver/
На данный момент идёт разработка нового серва,где чанки будут грузиться быстро.
asa193
 
Сообщения: 620
Зарегистрирован: 20 фев 2011, 18:46

Re: Кэширование мира на клиенте

Сообщение zlobniy_gnomic » 15 июн 2011, 10:13

Да кэширование не плохо, но не забывай золотое правило "Нужно чтобы всегда на компе оставалось свободное место!", а то просто комп начнет лагать по черному, а дальше ты сам понимаешь, что будет
Тысячами незримых нитей обвивает тебя Закон. Pазрубишь одну - преступник. Десять - смертник. Все - Бог
Аватара пользователя
zlobniy_gnomic
 
Сообщения: 45
Зарегистрирован: 25 май 2011, 18:19
Откуда: Москва

Re: Кэширование мира на клиенте

Сообщение Ketor » 15 июн 2011, 13:39

Может намерения и благие, но по принципу действия будет аналогично всяким прогам сканерам, тут у нас с этим строго..
Аватара пользователя
Ketor
 
Сообщения: 217
Зарегистрирован: 26 апр 2011, 16:57
Откуда: Москва

Re: Кэширование мира на клиенте

Сообщение Hodok » 15 июн 2011, 13:56

Nefig-Tut, загляните в ЛС, есть вопрос по реализации.
Аватара пользователя
Hodok
 
Сообщения: 95
Зарегистрирован: 03 май 2011, 22:58

Re: Кэширование мира на клиенте

Сообщение Nefig-Tut » 15 июн 2011, 14:07

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

2zlobniy_gnomic:
> золотое правило "Нужно чтобы всегда на компе оставалось свободное место!"золотое правило "Нужно чтобы всегда на компе оставалось свободное место!"
ну это как бы вопрос к владельцу компа - следить за своим свободным местом. в сингле minecraft так же генерит новые куски мира и кладёт на диск.

2Ketor:
> аналогично всяким прогам сканерам, тут у нас с этим строго..
я ВНИМАТЕЛЬНО ПРОЧЕЛ пункт правил "Использовать любые модификации клиента..." и, имхо, кэширование чанков не попадает под эти ограничения.
я думаю в итоге можно шифровать кэшированные чанки на локальном диске. если кто-то асилит посмотреть в коде как чо шифруется, так он и без этого поймёт как сделать сканнер и ничто его не остановит.
Nefig-Tut
 
Сообщения: 11
Зарегистрирован: 29 май 2011, 19:50

Re: Кэширование мира на клиенте

Сообщение zlobniy_gnomic » 16 июн 2011, 10:12

Тысячами незримых нитей обвивает тебя Закон. Pазрубишь одну - преступник. Десять - смертник. Все - Бог
Аватара пользователя
zlobniy_gnomic
 
Сообщения: 45
Зарегистрирован: 25 май 2011, 18:19
Откуда: Москва

Re: Кэширование мира на клиенте

Сообщение Nefig-Tut » 16 июн 2011, 11:35

ну там прямо в первом посте написано: "и написал, proof-of-concept версия кода уже даже работает".
Nefig-Tut
 
Сообщения: 11
Зарегистрирован: 29 май 2011, 19:50

Re: Кэширование мира на клиенте

Сообщение zlobniy_gnomic » 17 июн 2011, 11:46

А какой ты файл модифицировал и как, можешь сказать?
Тысячами незримых нитей обвивает тебя Закон. Pазрубишь одну - преступник. Десять - смертник. Все - Бог
Аватара пользователя
zlobniy_gnomic
 
Сообщения: 45
Зарегистрирован: 25 май 2011, 18:19
Откуда: Москва

Re: Кэширование мира на клиенте

Сообщение Copoka » 17 июн 2011, 13:34

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

Грубо говоря, для проксирования надо что бы сервер предварительно отдавал заголовок или хеш чанка, по которому можно было бы определить, изменялся он или нет. Такое разве происходит ? Ведь иначе будет полнейшая десинхронизация между тем что на самом деле происходит на сервере и тем что лежит в кеше у клиента.
Copoka
 
Сообщения: 313
Зарегистрирован: 15 мар 2011, 15:40

Re: Кэширование мира на клиенте

Сообщение Nefig-Tut » 17 июн 2011, 15:15

2zlobniy_gnomic:
> А какой ты файл модифицировал и как, можешь сказать?
эээ... могу, но вряд ли это будет сильно полезно. Берёш .java файлы от декомпилированного клиента и пишешь туда Java-код, реализующий кэширование.
Точно так же, как все моды делаются. Сам код никому (пока?) не дам.
Nefig-Tut
 
Сообщения: 11
Зарегистрирован: 29 май 2011, 19:50

Re: Кэширование мира на клиенте

Сообщение Nefig-Tut » 17 июн 2011, 15:36

2Copoka:

> Имхо идея кеширования не верна.
ну, не знаю, у меня все работает, ЧЯДНТ?

> Каким образом определяется дата последнего изменения в чанке ?
никак. в сетевом протоколе minecraft нет такой возможности.

> Ведь иначе будет полнейшая десинхронизация
сервер присылает тот чанк, в котором ты стоишь почти мгновенно. и если ты вырубил алмаз, апдэйт от сервера сразу придёт ко мне и заменит собой чанк из кэша. если ты вырубил алмаз за 10 чанков от меня, то мне на это сейчас пофиг, я этого не вижу. если я подойду туда - сервер пришлёт мне новое содержимое чанка. единственный и довольно редкий вариант рассинхронизации - это если я БЫСТО (на метро) переместился в ту часть мира где локальный кеш не совпадает с сервером. тогда да, но это не решается принципиально, by design. и проблема будет недолго, пока сервер не пришлет апдэйт. РОВНО СТОЛЬКО ЖЕ времени ты бы стоял и ждал подгрузки мира в случае без кэширования.

я повторюсь: "большая часть мира, где не идёт или закончено строительство - статична" и первоначально я хотел решить проблему поездок на метро без падений в "синее ничто". я её решил. сейчас я езжу из криперово в за 2 минуты и любуюсь природами.
Nefig-Tut
 
Сообщения: 11
Зарегистрирован: 29 май 2011, 19:50

Re: Кэширование мира на клиенте

Сообщение Copoka » 18 июн 2011, 21:41

>ну, не знаю, у меня все работает, ЧЯДНТ?
извини, я не в курсе некоторого слэнга, не смогу ответить на твой вопрос :)

У меня вопрос один - не будет ли твой мод аналогом флай хаку. Т.е. один раз тебе открыли дорогу, далее закрыли - а ты продолжаешь передвигаться по закешированному открытому пути.
Copoka
 
Сообщения: 313
Зарегистрирован: 15 мар 2011, 15:40

Re: Кэширование мира на клиенте

Сообщение Nefig-Tut » 20 июн 2011, 18:23

2Copoka:
> не будет ли твой мод аналогом флай хаку. Т.е. один раз тебе открыли дорогу, далее закрыли - а ты продолжаешь передвигаться по закешированному открытому пути.
не будет. перемещения игроков обсчитываются на сервере. ты когда-нить открывал запертую дверь? она открывалась, ты проходил сквозь неё, через секунду сервер говорил "Заперто" и тебя отбрасывало на позицию перед дверью. здесь то же самое. если на сервере путь закрыт, ты пройдёшь блок-два в кэшированном чанке и тебя отбросит назад.

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

примерно вот так:
Изображение
Nefig-Tut
 
Сообщения: 11
Зарегистрирован: 29 май 2011, 19:50

Re: Кэширование мира на клиенте

Сообщение Copoka » 20 июн 2011, 19:02

Тогда в общем интересно получается. Так со временем на локальном компьютере копия гринкубуса выйдет :)
Copoka
 
Сообщения: 313
Зарегистрирован: 15 мар 2011, 15:40

Re: Кэширование мира на клиенте

Сообщение Drbadnick » 20 июн 2011, 19:30

Отличное решение наболевшей проблемы. Я считаю что tc молодец, и поддерживаю его во всех начинаниях. Хотя конечно, я надеюсь что необходимости в этом моде ни у кого не возникнет 8)
Изображение
Аватара пользователя
Drbadnick
 
Сообщения: 2120
Зарегистрирован: 20 фев 2011, 10:38
Откуда: Питер

Re: Кэширование мира на клиенте

Сообщение delphist2008 » 21 июн 2011, 08:38

У меня возникнет. Nefig-Tut, не мог бы ты поделиться модом?

Я маленький и пушистый. Правда-правда.
Аватара пользователя
delphist2008
 
Сообщения: 263
Зарегистрирован: 14 мар 2011, 16:17
Откуда: From Siberian Fields

Re: Кэширование мира на клиенте

Сообщение Nefig-Tut » 21 июн 2011, 15:50

ой-вей. возникла проблема при подготовке мода для раздачи на тестирование. я пользуюсь MCP31 (Minecraft Coder Pack v3.1) и не могу собрать мод обратно в пакет без ванильного сервера Minecraft версии 1.5.02 c md5-суммой файла minecraft_server.jar равной edbcec2e58bd5a03954ba7d745dee604. и не могу найти его в этих ваших интернетах - все сервера испорчены буккитом. ну или я плохой поискатель.

поэтому реквестирую хелп у сообщества - если у кого есть ВАНИЛЬНЫЙ (оригинальный, от Нотча) minecraft_server.jar версии 1.5.02 или .01 (с md5-суммой файла minecraft_server.jar равной edbcec2e58bd5a03954ba7d745dee604) - дайте пожалуйста!!11одинодин
Nefig-Tut
 
Сообщения: 11
Зарегистрирован: 29 май 2011, 19:50

Re: Кэширование мира на клиенте

Сообщение Bek1zo » 21 июн 2011, 16:27

Буквально часа 2-3 назад удалил сервер 1.5_02.... :cry:
Звон в ушах пробуждает совесть, а искры в глазах просветляют ум. Только бить надо аккуратнее
Изображение
Аватара пользователя
Bek1zo
 
Сообщения: 16
Зарегистрирован: 20 фев 2011, 10:38

Re: Кэширование мира на клиенте

Сообщение Reeq » 21 июн 2011, 16:43

Nefig-Tut держи
Аватара пользователя
Reeq
 
Сообщения: 75
Зарегистрирован: 05 июн 2011, 02:36

Re: Кэширование мира на клиенте

Сообщение Nefig-Tut » 22 июн 2011, 18:33

2ВСЕМ, кому интересно:
Вобщем, готово. . Ставить как обычно - пихать .class-файлы с заменой в minecraft.jar. МОД ДЛЯ КЛИЕНТА 1.5.01. Для гринкубовского клиента - тоже ок. Для других версий делать не буду, пока не будет понятно какой клиент нужен будет после смены сервера 26го. Рекомендуется проверить размер заменяемых файлов - og.class 13166 байт, mg.class 4883 байт. Это значит что файлы не были изменены каким-то другим модом.

Прикол с "перекрашиванием" блоков в кэшированных чанках был оставлен. Все-таки это для тестирования пока. Помните, если вы будете рубать золотой блок, который на самом деле земля - из него НЕ ВЫПАДУТ сотни золота.

При первом старте, после входа на сервер, пожалуйста постойте спокойно минуту-другую. Дайте закэшироваться квадрату чанков вокруг вас.
Nefig-Tut
 
Сообщения: 11
Зарегистрирован: 29 май 2011, 19:50

Re: Кэширование мира на клиенте

Сообщение starcheater » 23 июн 2011, 15:50

Спасибо за мод, сяду пробовать. Жаль, что так поздно такая хорошая идея была реализована.
Мы рождены в укор судьбе и в качестве позора жизни.
Аватара пользователя
starcheater
 
Сообщения: 73
Зарегистрирован: 25 мар 2011, 04:44
Откуда: Москва

Re: Кэширование мира на клиенте

Сообщение delphist2008 » 24 июн 2011, 19:23

А есть какой-нибудь способ сконвертить кеш в нормальную карту?
Хочется в сингле начинить спавн тнт под завязку :D

Я маленький и пушистый. Правда-правда.
Аватара пользователя
delphist2008
 
Сообщения: 263
Зарегистрирован: 14 мар 2011, 16:17
Откуда: From Siberian Fields

Re: Кэширование мира на клиенте

Сообщение Nefig-Tut » 25 июн 2011, 03:48

есть - береш и пишешь код сохранения в нормальную карту Ж)
не думай, что я об этом не думал. с сингл-плэер картой не все так просто и мне лениво было это реализовывать.
Nefig-Tut
 
Сообщения: 11
Зарегистрирован: 29 май 2011, 19:50

Re: Кэширование мира на клиенте

Сообщение delphist2008 » 25 июн 2011, 17:00

А нельзя тогда переименовать папку с кешем в локалхост и писать в чанки на локальном серве?

Я маленький и пушистый. Правда-правда.
Аватара пользователя
delphist2008
 
Сообщения: 263
Зарегистрирован: 14 мар 2011, 16:17
Откуда: From Siberian Fields

Re: Кэширование мира на клиенте

Сообщение Nefig-Tut » 25 июн 2011, 18:33

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

насчёт переименовать - возьми и попробуй, отпишись о результатах.
Nefig-Tut
 
Сообщения: 11
Зарегистрирован: 29 май 2011, 19:50

Re: Кэширование мира на клиенте

Сообщение delphist2008 » 26 июн 2011, 10:32

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

Я маленький и пушистый. Правда-правда.
Аватара пользователя
delphist2008
 
Сообщения: 263
Зарегистрирован: 14 мар 2011, 16:17
Откуда: From Siberian Fields

Re: Кэширование мира на клиенте

Сообщение delphist2008 » 26 июн 2011, 15:38


Я маленький и пушистый. Правда-правда.
Аватара пользователя
delphist2008
 
Сообщения: 263
Зарегистрирован: 14 мар 2011, 16:17
Откуда: From Siberian Fields

Re: Кэширование мира на клиенте

Сообщение starcheater » 27 июн 2011, 17:00

сервак ...переделали... . можешь портировать свой мод для 1.6.6? а то мало ли...
и спасибо за мод - очень сильно помогает.
Мы рождены в укор судьбе и в качестве позора жизни.
Аватара пользователя
starcheater
 
Сообщения: 73
Зарегистрирован: 25 мар 2011, 04:44
Откуда: Москва

Re: Кэширование мира на клиенте

Сообщение Nefig-Tut » 02 июл 2011, 09:51

1) портировать на 1.6.6 не вижу смысла, т.к. сервер (насколько я понял) вот-вот перейдёт на 1.7.
2) скорость отдачи чанков у нового сервера отличнейшая, даже с многими игроками. так что, мод, вобщем-то, теряет смысл. тему, наверное, можно закрывать. зато я получил +132,6 к java mad skillz (смайлик).
Nefig-Tut
 
Сообщения: 11
Зарегистрирован: 29 май 2011, 19:50


Вернуться в Модификации Minecraft



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron