@ProLua

Страница 152 из 307
Snusmumriken
06.09.2017
14:42:58
Хе, проверить на стороне клиента - можно. На стороне сервера - тем более. В какую сторону повёрнута пушка - в такую и стреляем. Я про векторы направления. Векторы движения и координат - нельзя, да.

Saphire
06.09.2017
14:43:11
а если я на стрелочках играю? Не. Состояния - ровно то, что нужно
...вы понятие "абстракция" и "пример" понимаете? Я не пишу идеально рабочий код и протокол, только минимум необходимый для понимания.

Хе, проверить на стороне клиента - можно. На стороне сервера - тем более. В какую сторону повёрнута пушка - в такую и стреляем. Я про векторы направления. Векторы движения и координат - нельзя, да.
...вектор направления выстрела? Ну ладно, допустим такое можно (все аимботтеры уже радостно потирают руки при обнаружении этого!)

Хе, проверить на стороне клиента - можно. На стороне сервера - тем более. В какую сторону повёрнута пушка - в такую и стреляем. Я про векторы направления. Векторы движения и координат - нельзя, да.
Слушай, я выше по сути пересказываю ту же самую статью, которую я тебе скинул. https://gafferongames.com/post/deterministic_lockstep/ вот самая главная часть

Google
Saphire
06.09.2017
14:46:26
Там и показано на чем оно основано, и в чем проблемы, и как их решить.

Snusmumriken
06.09.2017
14:46:32
Смотри как можно объяснить авторитарный сервер из той статьи: 1. Сервер держит у себя набор состояний игры за последние несколько секунд. 2. Когда от клиента приходит сообщенька о совершённом действии (со временем на стороне клиента, оно синхронизировано с учётом пинга) - сервер отматывает состояние назад, применяет к клиенту действие и обновляет его (и все новые объекты, которые могут быть связаны с этим действием) в будущее. 3. Сервер отправляет клиентам изменения вызванные последним состоянием в виде команд, типа создания новой лабуды или переключения состояния объектов, сдвига и прочего. 4. Клиенты принимают это счастье, самостоятельно откатывая время "назад", и аналогично применяя действия сервера. Вот это - синхронизация, где у каждого своё состояние и авторитарный сервер.

Saphire
06.09.2017
14:47:37
Смотри как можно объяснить авторитарный сервер из той статьи: 1. Сервер держит у себя набор состояний игры за последние несколько секунд. 2. Когда от клиента приходит сообщенька о совершённом действии (со временем на стороне клиента, оно синхронизировано с учётом пинга) - сервер отматывает состояние назад, применяет к клиенту действие и обновляет его (и все новые объекты, которые могут быть связаны с этим действием) в будущее. 3. Сервер отправляет клиентам изменения вызванные последним состоянием в виде команд, типа создания новой лабуды или переключения состояния объектов, сдвига и прочего. 4. Клиенты принимают это счастье, самостоятельно откатывая время "назад", и аналогично применяя действия сервера. Вот это - синхронизация, где у каждого своё состояние и авторитарный сервер.
А это называется тонкий клиент и толстый сервер, ну или так как ты сказал. Здесь я ни с чем не против

Просто я объясняю СОВЕРШЕННО другую схему устройства сетевого протокола

Snusmumriken
06.09.2017
14:48:59
В которой невозможно читерство? : )

И да, я тебе показываю как надо объяснять

Saphire
06.09.2017
14:49:16
Смотри как можно объяснить авторитарный сервер из той статьи: 1. Сервер держит у себя набор состояний игры за последние несколько секунд. 2. Когда от клиента приходит сообщенька о совершённом действии (со временем на стороне клиента, оно синхронизировано с учётом пинга) - сервер отматывает состояние назад, применяет к клиенту действие и обновляет его (и все новые объекты, которые могут быть связаны с этим действием) в будущее. 3. Сервер отправляет клиентам изменения вызванные последним состоянием в виде команд, типа создания новой лабуды или переключения состояния объектов, сдвига и прочего. 4. Клиенты принимают это счастье, самостоятельно откатывая время "назад", и аналогично применяя действия сервера. Вот это - синхронизация, где у каждого своё состояние и авторитарный сервер.
https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking - а это, описание аторитарного сервера от тех, кто его ввёл, или по крайне мере крупно использует для игр.

В которой невозможно читерство? : )
Оно невозможно, если только ты не сделаешь какую-нибудь глупость вроде "вектор стрельбы" или "вектор шага" в самом протоколе.

Snusmumriken
06.09.2017
14:54:14
Карочи, если схему долго объяснять - она сложная и нуждается в упрощении Давай как-нибудь проще.

Saphire
06.09.2017
14:57:32
Под клиентами и игроками подразумевается именно сама программа игры, если не сказано иного. 1. У всех клиентов имеется код для симуляции мира. Полностью, никак не обрезанный, и они знают абсолютно всё о игровом мире. 2. Сервер может быть встроен в одного из клиентов, а может стоять отдельно от всех. 3. Сервер не имеет никакого кода симуляции мира, он только заведует авторизацией и... 4. Сервер пересылает сообщения от одного игрока всем остальным, и так для всех игроков. 5. Один из клиентов назначен "главным" и является эталоном состояния игры. Все клиенты, у кого состояние отличается - выкидываются сервером из игры (либо оно корректируется по мере возможностей). 6. Клиенты посылают как можно более общие данные, которые можно легко проверить в симуляции, и в случае чего - несовпадения. В идеале нажатия только нажатия клавиш и, например, текстовые сообщения игроков (людей). 7. Симуляция мира должна быть реализована таким образом, что оно идеально совпадает с такой же симуляций в другом месте (при учёте того, что начальные условия одинаковы)

Snusmumriken
06.09.2017
14:59:28
Под клиентами и игроками подразумевается именно сама программа игры, если не сказано иного. 1. У всех клиентов имеется код для симуляции мира. Полностью, никак не обрезанный, и они знают абсолютно всё о игровом мире. 2. Сервер может быть встроен в одного из клиентов, а может стоять отдельно от всех. 3. Сервер не имеет никакого кода симуляции мира, он только заведует авторизацией и... 4. Сервер пересылает сообщения от одного игрока всем остальным, и так для всех игроков. 5. Один из клиентов назначен "главным" и является эталоном состояния игры. Все клиенты, у кого состояние отличается - выкидываются сервером из игры (либо оно корректируется по мере возможностей). 6. Клиенты посылают как можно более общие данные, которые можно легко проверить в симуляции, и в случае чего - несовпадения. В идеале нажатия только нажатия клавиш и, например, текстовые сообщения игроков (людей). 7. Симуляция мира должна быть реализована таким образом, что оно идеально совпадает с такой же симуляций в другом месте (при учёте того, что начальные условия одинаковы)
Тут будут крупные расхождения при пинге выше 10мс, и они будут накапливаться.

Saphire
06.09.2017
15:01:55
Тут будут крупные расхождения при пинге выше 10мс, и они будут накапливаться.
И поэтому просто прочитай ту статью, которую я скинул. Да, я не отрицаю, что это так. Но вышеуказанная схема работает только в идельных услвия и идельном мире без потери данных и совпадении состояний. Для нормальной сети это надо кучу проверок и куда больше данных отсылать.

Snusmumriken
06.09.2017
15:02:04
Конкретные данные должны приходить от сервера, для полноценной синхронизации. Иначе жёппка (((

Google
Snusmumriken
06.09.2017
15:02:57
А ещё, открою тебе очень страшную тайну. Идеальные миры существуют только в головах людей. Тебя интересует тот факт, что идеальный квадрат идеально вписывается в идеально квадратную голову того же размера?

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

Saphire
06.09.2017
15:05:51
Гм... Надо было всё же сказать, что чистый локстеп никто не использует в играх... Его всегда сверху покрывают проверками состояния клиента и эталона, и интерполяцией. Благо, последнее у нас легко доступно, ведь у нас уже есть весь код симуляции мира.

Меня - нет. Не практично. Нужно какой-то магией определять то что на эталоне, синкать по времени. С тру-физикой тут вообще проблемы, ибо бешеное количество данных.
А магия определения состояния - отсылка некоего хэша состояния игры в тик #N на сервер, и его сравнение с эталонным клиентов на тик #N

Snusmumriken
06.09.2017
15:07:49
Ох. Оно ведь всегда будет отличаться. Хеш не нужен потому что нет нигде ни одного одинакового состояния. К одному клиенту, пакет придёт через пол секунды, а к другому - через две милисекунды. А с третьим - вообще нет задержки, ибо на том же компе. Как делать лагокомпенсацию в таком случае и пересылать меньше данных?

Saphire
06.09.2017
15:07:55
...пилять, по сути локстеп в играх - это НЕХ полученная скрещиванием настоящего локстепа, авторитативного сервера, и интерполяции.

Snusmumriken
06.09.2017
15:09:10
Во, ещё один страшный вопрос. Сколько лет уйдёт на реализацию такой сетевой системы у одного человека ))

Saphire
06.09.2017
15:09:37
Во, ещё один страшный вопрос. Сколько лет уйдёт на реализацию такой сетевой системы у одного человека ))
Эм... ты смотрел статью? Ту, которую я тебе скинул? Четвертый раз говорю

Snusmumriken
06.09.2017
15:09:53
Какую из? Ты их много прислал. С кубиками - да.

Saphire
06.09.2017
15:10:22
Это серия статей. И там снизу есть ссылка на следующую. Это первая и вторая статья.

В общем - рассматривается: 1 - просто физический движок 2 - добавляем сеть на основе локстепа - т.е. симуляция стоит пока мы не получим пакет с состоянием ввода вывода другого игрока. НЕ ДОПИСАЛ

Snusmumriken
06.09.2017
15:16:58
Ох. Мобилы умрут на "остановке симуляции пока ждём". Хех, просто вариация авторитарного сервера может быть гораздо экономичнее. Ясное дело, что у всех тонких клиентов есть возможность симуляции/интерполяции. Просто приходящее раз в несколько секунд состояние авторитарного сервера перезатирает текущее состояние клиента и синхронизирует всё. После получения этих сравнительно больших данных, ясное дело, происходит интерполяция до текущего времени на клиенте. Кстати, для резкого уменьшения траффика, можно отправлять клиентам только актуальную для них информацию, которая находится, условно, близко к их камере. Очень сильно режет траффик.



annelin
07.09.2017
10:41:17
что за шрифт и цветовая схема?

Snusmumriken
07.09.2017
10:42:39
Цветовая схема - стандартная, obsidian на notepad++. Шрифт - PTMono (опенсорц, производство РФ, хех) https://www.paratype.ru/public/, читаемость норм, мне нравится.

annelin
07.09.2017
10:48:53
значит в шиндошс рендеринг какой-то совсем другой

у меня ptmono выглядит как... впрочем, это не важно

Snusmumriken
07.09.2017
10:52:42
Размер шрифта ещё выставь. И ты, возможно, не указал его глобально, вышли скриншот.

annelin
07.09.2017
10:58:54
да скорее всего дело в том, что у тебя начертание жирное

а у меня в редакторе оно не ставится

Google
annelin
07.09.2017
10:59:19
мне мой норм :3

http://i.imgur.com/SG2FnyW.png

Snusmumriken
07.09.2017
10:59:48
Это не PTMono.

annelin
07.09.2017
10:59:55
я знаю

я и говорю, мне мой норм

Snusmumriken
07.09.2017
11:00:07
Окей : )

annelin
07.09.2017
11:00:24
птмоно у меня выглядит так



Snusmumriken
07.09.2017
11:00:53
Выставь bold же!

annelin
07.09.2017
11:01:06
эмм!

да скорее всего дело в том, что у тебя начертание жирное

а у меня в редакторе оно не ставится

Snusmumriken
07.09.2017
11:01:26
Окей, тогда скачай версию bold и поставь : ) Ну, если хочешь, конечно.



annelin
07.09.2017
11:05:38
да. няшно смотрится

но непривычно жесть

Snusmumriken
07.09.2017
11:07:13
Хе, ничего, привыкаешь, а после суток непрерывного кодинга - отсутствует песок в глазах : ) Цветовая схема стандартная потому, что меня задолбало на 100500 девайсах настраивать-перенастраивать, но с другой стороны, тоже привыкаешь и норм. Контраст достаточен и не избыточен. Разве что комментарии полусливаются с фоном, но это и плюс имхо. При чтении, на фоне остального текста, такая бледность выделяется, а при кодинге - не мешает.

annelin
07.09.2017
11:14:58
мне вот интересно

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

Snusmumriken
07.09.2017
11:15:26
Типа автопреобразования в пробелы?

Google
annelin
07.09.2017
11:16:21
типа в каждом редакторе табы отображаются по-разному

если я выравниваю в одном редакторе - отваливается выравнивание в другом

Рома
07.09.2017
11:17:49
похоже на главный аргумент в войне табы vs пробелы в пользу пробелов

Snusmumriken
07.09.2017
11:17:57
В целом, стандарт - один таб = 4 пробела. Хех. А что ты выравниваешь? Вот такую фигню return { Vers = dc(data, 0), OP = dc(data, 1), Result = dc(data, 3, 2), SSSE = dc(data, 4, 4), Даже я выравниваю пробелами, потому что между слов может быть хрен знает что, длина слов - хрен знает какая. А вот до какого либо текста - табы.

annelin
07.09.2017
11:18:17


Snusmumriken
07.09.2017
11:19:27
Карочи, табы должны стоять только слева от текста. Если ты лепишь табы между слов - ты поступаешь плохо. Вот слева от текста - им самое место, ибо можно подогнать ширину пробелов под ширину экрана, и получить визуальную глубину вложенности в соответствии с пожеланиями.

Admin
ERROR: S client not available

annelin
07.09.2017
11:20:19
типа остальное выравнивать пробелами?

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



в первой строке 4 таба, во второй три

Snusmumriken
07.09.2017
11:22:15
Ага. Вот тот код который я скопипастил в телеграмм такой красивый и в том же виде - потому что пробелы. Изначально, табуляция сделана для форматирования колонок таблиц. И ширина таба должна быть в соответствии с ПОЛНОЙ шириной колонки. В колонке десять символов? Лепи таб на десять символов. Но только для этого документа, и для последующей печати.

annelin
07.09.2017
11:22:43
что самое интересное

я заставлял какой-то опцией geany вести себя как nano

и выравнивание было корректное везде

но потом что-то пошло не так

Snusmumriken
07.09.2017
11:23:28
Карочи, если тебе очень нужно красивое табличное выравнивание - ставь табы только до текста.



Табопользователь, при открытии скрипта, оставит как есть, пробелопользователь - заменит табы на желаемое количество пробелов. Все счастливы, ничего не поехало после процедуры. Дзен - это способ усидеть на обоих стульях ))) (осторожно, гифка на 40мб: https://vk.com/doc75175715_449282586?hash=19ad9890fb2a2eaf05&dl=2dd8c1470c37d89fd9)

annelin
07.09.2017
11:51:33
ура, я нашёл, как сделать так, чтобы geany вёл себя как остальные редакторы

Google
annelin
07.09.2017
11:51:48


Чай
07.09.2017
14:28:00
Как Vim или Emacs?

annelin
07.09.2017
14:33:33
lf

da

Snusmumriken
07.09.2017
18:39:58


Group Butler [beta]
08.09.2017
11:51:05
Добро пожаловать в чат pro.lua, Aydar! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.

Aydar
08.09.2017
11:55:58
Написал библиотеку для работы с интерфейсом VK в Lua https://github.com/iZarif/flvk Может кому интересно.

Рома
08.09.2017
13:00:04
Написал библиотеку для работы с интерфейсом VK в Lua https://github.com/iZarif/flvk Может кому интересно.
Странно, но для луа уже видел обертку, скорее всего, их не одна существует. Зачем, спрашивается, в стандалон луа проще читать доки вк и писать самому запросы. В опенрести или ещё где, где свои сокеты, оно вообще работать не будет. Тем временем, многие жалуются на нехватку либ и заброшенное состояние существующих.

annelin
08.09.2017
13:01:10
с амазоном кто-нибудь работал?

The Dude
08.09.2017
13:01:22
annelin
08.09.2017
13:01:45
не, с сервисами их злоебучими

annelin
08.09.2017
13:02:09
они под одно API вроде сделаны

конкретно - Amazon Polly

Snusmumriken
08.09.2017
13:03:18

Страница 152 из 307