|
|
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
mayton, да погоди, в чатах там много не учитывается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 12:41 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
AddxвадяAddx, почти полностью соглашусь, тут пока идет разговор общий, без конкретики, ознакомительный, поэтому воспринимать как основу не стоит, тем более ругать. просто предложения, их обоснования, плюсы/минусы. идеи (допускаются и глупые, глупыми могут оказаться только на первый взгляд) Да я не ругаю, просто есть базовые вещи, которые нужно делать сразу. ИМХО. Я предложил простейший вариант, а mayton не согласен. Я считаю неправильным обрабатывать клавиши на сервере, а mayton против. Может кому-то показалось, что я как-то грубо высказался, или это наезд - прошу прощения, ничего такого не собирался делать. Из опыта общения с мемберами и разработчиками TO. Сервер не может обрабатывать все-все события от клиента. Более того в процессе игры возможны временные отключения лаги и т.п. При этом танк остаётся функциональным. Он сохраняет физику столкновений даже в offline статусе. Другие танки для него - временно останавливаются. И не двигаются. Это не потому-что - мой каприз. А проверено опытом других разработчиков. Ключевый события такие как выстрелы и смерти - фиксируются. Фикисруются клавиатурные нажатия т.к. они являются экстремальными точками на графиках интерполяции координат движения. И практически все-все игровые сервера не транслируют точные координаты игроков а интерполируют их положения между ключевыми точками. Так работают Quake/CounterStrike. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 12:44 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
вадяmayton, да погоди, в чатах там много не учитывается Хорошо. Погодю. Только ты там сильно не усердствуй. Тоесть не стоит сейчас высыпать на мою бедную голову OVER 9000 строк кода. Потону. Лучше меньше да лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 12:45 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
mayton Из опыта общения с мемберами и разработчиками TO. Сервер не может обрабатывать все-все события от клиента. Более того в процессе игры возможны временные отключения лаги и т.п. При этом танк остаётся функциональным. Он сохраняет физику столкновений даже в offline статусе. Другие танки для него - временно останавливаются. И не двигаются. Это не потому-что - мой каприз. А проверено опытом других разработчиков. Ключевый события такие как выстрелы и смерти - фиксируются. Фикисруются клавиатурные нажатия т.к. они являются экстремальными точками на графиках интерполяции координат движения. И практически все-все игровые сервера не транслируют точные координаты игроков а интерполируют их положения между ключевыми точками. Так работают Quake/CounterStrike. Прости, но я уже даже боюсь отвечать, вдруг опять как наезд воспримется ) Во-первых, какие-такие все-все события от клиента ты увидел? У меня событий значительно меньше, чем нажатий на клавиши. Насчет физики столкновений есть отдельные вопросы. Даже не буду сейчас обсуждать. А последнее предложение я просто не понял. В плане кто кому что транслирует и кто интерполирует. P.S. Мне сложно понять, в чем именно я не прав, если идут просто отсылки к разработчикам. Это открытая инфа, или получена в частных беседах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 13:00 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
AddxПрости, но я уже даже боюсь отвечать, вдруг опять как наезд воспримется ) Во-первых, какие-такие все-все события от клиента ты увидел? У меня событий значительно меньше, чем нажатий на клавиши. Насчет физики столкновений есть отдельные вопросы. Даже не буду сейчас обсуждать. А последнее предложение я просто не понял. В плане кто кому что транслирует и кто интерполирует. P.S. Мне сложно понять, в чем именно я не прав, если идут просто отсылки к разработчикам. Это открытая инфа, или получена в частных беседах? Отложим на потом. Щас это еще неактуально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 13:02 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
mayton, как начало ws предлагает только транспорт, нам же надо передать многое. поэтому (как я объяснял выше) передаваемое разделяем на две части команда и данные , это как основа при получении разделяем команду от данных. чтоб выполнить команду надо с помощью if, case, или рефлексии найти/задать метод для этой команды. т.к. таких команд может быть 1000+, то case, if не подходят. остаётся рефлексия. иметь 1000+ методов в одном файле тоже не айс. методы группируем в логические группы в отдельных java файлах . для удобства обработки кладём в одну «папку» . в синглтоне производим загрузку в лист имена методов из этих файлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 13:12 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 13:51 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
window[r[1]](r[2]); - "рефлексия" для javascript ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 13:53 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
https://playcanvas.com Вот отличное место для разработки WebGL прототипа поиграться. Там кстати есть и танчики. Пример клиента. https://playcanvas.com/project/332521/overview/tankys ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 14:19 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
вадяmayton, как начало ws предлагает только транспорт, нам же надо передать многое. поэтому (как я объяснял выше) передаваемое разделяем на две части команда и данные , это как основа при получении разделяем команду от данных. чтоб выполнить команду надо с помощью if, case, или рефлексии найти/задать метод для этой команды. т.к. таких команд может быть 1000+, то case, if не подходят. остаётся рефлексия. иметь 1000+ методов в одном файле тоже не айс. методы группируем в логические группы в отдельных java файлах . для удобства обработки кладём в одну «папку» . в синглтоне производим загрузку в лист имена методов из этих файлов. Какой дикий ужас... на реалтайм сервере, где каждая милисекунда на счету, лазить рефлексией в поисках метода... И кстати, почему If не подходит-то? у него ограничения чтоли есть? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 14:23 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
Ищущий Знания Какой дикий ужас... на реалтайм сервере, где каждая милисекунда на счету, лазить рефлексией в поисках метода... И кстати, почему If не подходит-то? у него ограничения чтоли есть? )) ужас в том , что с таким ником ты отстал лет на 10... посмотри лекции первоисточников. рефлексия давно уже не такая медленная, как была в те времена из которых ты не можешь выйти. по if: ограничений нет, но пройти по цепочки из 1000+ if в рантайме .... для добавления/удалени метода нада залесть в if, найти ... для добавления/удалени метода нада сделать два исправления/добавления - в блоке if, и в самом классе, где добавляется метод при рефлексии - только добавить /изменить сам метод и для командной разработки иметь один файл , который правят несколько прогеров - не есть хорошо, при рефлексии (повторюсЬ) файлы содержащие методы раздаются прогерам и каждый из них не зависит от остальных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 14:43 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
вадяпри рефлексии (повторюсЬ) файлы содержащие методы раздаются прогерам и каждый из них не зависит от остальных. Серьезно?? Рефлексия раздает файлы прогерам? Ты сделал мой день... Давно так не смеялся)) Жги еще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 14:47 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
не претендую на что-то сверхновое. но при таком подходе стоимость обращения к серверу очень и очень маленькая, поэтому можно возлагать на сервер новые функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 14:51 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
Ищущий Знаниявадяпри рефлексии (повторюсЬ) файлы содержащие методы раздаются прогерам и каждый из них не зависит от остальных. Серьезно?? Рефлексия раздает файлы прогерам? Ты сделал мой день... Давно так не смеялся)) Жги еще дак ты ещё и мыслить не умеешь... не рефлексия раздаёт файлы , а система разработки , подход к разделению работы выделяет прогеру некоторый фай, в котором есть все методы за которые он отвечает, и ему не надо править всё остальное. рефлексия просто позволяет выделить группу методов в один файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 14:57 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
Коллеги. Я прошу вас не зафлуживать этот топик спором о скорости рефлексии. Честно. Я этому моменту уделю максимум 1-2 минуты. Тоже самое касается протоколов ws, wss. На данный момент задача - собрать работающий макет. И нет смысла спорить о мелких оптимизациях. В ближайшее время я выкачу спеку. Там будет условно. Описание стурктуры клиента и сервера. И формальное (табличкой) описание команд взаимодействия. В обе стороны. Я сознательно сейчас ухожу от споров на тему csv/json, ws/wss, рефлекция-нерефлексия. Это щас не имеет никакого значения. Это вторично. Прошу вас также не DDOS-ить меня ссылками на огромные статьи и публикации. У меня не хватает времени прочитать своё. Но если вы с осознанием сделаете краткий реферат - типа пункт 1 - надо сделать тото и тото потомучто - я буду благодарен. Прошу вас - цените моё время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 15:32 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
Вадя. Правильно-ли я понимаю что в данном исходнике ты предлагаешь несколько идей. 1) Использовать шифро-соединение. 2) Усилить (зачем-то) сервер от "сторонних подключений". 3) Использовать возможноть с сервера вызывать произвольный Java-код (по аналогии с eval(...)) вадя Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 15:55 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
mayton3) Использовать возможноть с сервера вызывать произвольный Java-код (по аналогии с eval(...)) конечно, у некоторых особо шустрые машинки, можно их попутно расчётом биткоинов притормозить - должен же проект на что-то жить в будущем :-) ps: JavaScript -код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 16:32 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
авторВадя. Правильно-ли я понимаю что в данном исходнике ты предлагаешь несколько идей. 1) Использовать шифро-соединение. 2) Усилить (зачем-то) сервер от "сторонних подключений". 3) Использовать возможноть с сервера вызывать произвольный Java-код (по аналогии с eval(...)) 1) да по 3 причинам - проходит везде через прокси, - тенденция к переходу на шфрование трафика, - использует сжатие 2) подключение ws на сервере обеспечивает слушатель порта, фактически ничем не связанный с сервлетам. поэтому порту можно просто подсоединиться не заходя в браузер, и произвести взлом. это не усиление, а простая защита. 3) да, но не совсем так, вызвать функцию и передать ей данные. функция будет работать быстрее, чем код в eval по ws можно передать любой текст , в том числе и dom элемент, <script>, в котром может быть всё, что угодно. фактически можно строит страницу с сервера, передавая ей dom элементы. к примеру - подключился новый игрок, встроили в страницу необходимое для его работы. прямо в работающий процесс. данный исходник встраивается на каждую страницу. он по сути является загрузчиком контента страницы. аналогичное можно реализовать и ajax, но только по запроса с клиента.... можно так же вызавать такое (sss) ("сложный вызов" :) ) из var v={ ddd:9, sss:function(f,g){} } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 16:51 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)mayton3) Использовать возможноть с сервера вызывать произвольный Java-код (по аналогии с eval(...)) конечно, у некоторых особо шустрые машинки, можно их попутно расчётом биткоинов притормозить - должен же проект на что-то жить в будущем :-) ps: JavaScript -код +1000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 16:52 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
есть Код: javascript 1. 2. 3. 4. 5. передаём строку"sss1|{ddd:9,sss:function(f){}}" она присваевет перменной v 'это {ddd:9,sss:function(f,g){}} передаём "ddd.sss|556" должна вызваться функция sss c параметром 556 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 17:03 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
вадяесть Код: javascript 1. 2. 3. 4. 5. передаём строку"sss1|{ddd:9,sss:function(f){}}" она присваевет перменной v 'это {ddd:9,sss:function(f,g){}} передаём "ddd.sss|556" должна вызваться функция sss c параметром 556 Это пздц товарищи. Предлагаю даже не рассматривать такой говнокод. Передавать сфункцию которая будет выполнятся это полный финиш. Который если только для говносайтов подходит. В реалтайм играх каждый байт на счету. Передавать надо только код команды и необходимые данные для нее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 17:43 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
Ищущий Знания, ты дурак или только прикидываешься? я показываю возможности. данный код не обязателен для использования в данном проекте, но може в сумме оказаться выгоднее чего-то другого. я говорю о минимуме служебной информации в ws - ты ругаешь, и тут же говоришь о экономиии байт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 18:40 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
вадя1) да по 3 причинам - проходит везде через прокси, - тенденция к переходу на шфрование трафика, - использует сжатие Вадя. У меня сейчас тестовое окружение - это ноутбук или два ноута или ноут с виртуалкой. Я не вижу никакой обоснованной потребности в сжатии или шифровании. Лучше исходить из принципа - "дорогА ложка к обеду". А возможность переключения на wss мы заложим в конфиг. Тоесть изначально будет ws, потом wss если владелец ресурса посчитает это полезным. А игроки сидящие за прокси... ну.. честно говоря они как целевая аудитория мне неинтересны. 2) подключение ws на сервере обеспечивает слушатель порта, фактически ничем не связанный с сервлетам. поэтому порту можно просто подсоединиться не заходя в браузер, и произвести взлом. это не усиление, а простая защита. Я возьму это на карандашик. Не обещаю что сразу но со временем заимплементим. 3) да, но не совсем так, вызвать функцию и передать ей данные. функция будет работать быстрее, чем код в eval по ws можно передать любой текст , в том числе и dom элемент, <script>, в котром может быть всё, что угодно. фактически можно строит страницу с сервера, передавая ей dom элементы. к примеру - подключился новый игрок, встроили в страницу необходимое для его работы. прямо в работающий процесс. данный исходник встраивается на каждую страницу. он по сути является загрузчиком контента страницы. аналогичное можно реализовать и ajax, но только по запроса с клиента.... Если честно... мне это кажется неоправданным усложнением игрового интерфейса клиента. И я не вижу чем этот универсализм будет полезен. Учитывая что постака (delivery) новых релизов будет совершенно прозрачна с точки зрения пользователя (еще раз забить адрес в строке браузера) совершенно нет необходимости делать его настолько универсальным. Мне-же как не сильно скиллованному JavaScript-кодеру хотелось-бы чтобы код имел просто пускай даже "деревянный" вид. Тоесть без усложнений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 18:54 |
|
||
|
Тяпничный танко-хакотон
|
|||
|---|---|---|---|
|
#18+
1 согласен 2 делается просто, сложно потом переделать. настаиваю, хотя б из-за возможности привязать имя юзера подключению, предлагаю поверить практике. 3 описаны возможности, может и пригодится, а может и нет основное - запуск функции по имени, а уж без этого - использовать if? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2016, 19:08 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39156650&tid=1340804]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
152ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 217ms |
| total: | 491ms |

| 0 / 0 |
