Исходный код
#21
Отправлено 06 March 2005 - 10:59
#22
Отправлено 09 April 2005 - 04:21
#23
Отправлено 09 April 2005 - 10:50
Он, во первых, бесплатный (для очистки совести), во-вторых, не имеет косяков с путями, содержащими русские буквы, в третьих, сам по себе полее приятный. В-четвертых, имеет большее количество настроек... Правда, патчи получаются чуть больше (на 50KB), но я с этим смирился. Скорость создания патча регулируется. От почти мгновенной, до ну очень низкой...
#24
Отправлено 09 April 2005 - 11:53
А теперь на счет игры : трафик 2-3 кб в сек это очень много (7-10 мб/ч).
По сему хочу спросить , а какой формат передачи данных???
Собираетесь ли вы его оптимизировать???
Сильно ли ваш формат отличается от моего представления??
Теперь , как я себе представляю передачу данных в сети для подобной игры:
Перемещение персонажа:
клиент -- отправляет координаты смещения для точки назначения и передвижение происходит на клиенте , когда достигается точка , то отправляется сообщение о ее достижении. В том случае если рядом персонажи в радиусе видимости экрана , то отправлять координаты смещения при каждом смещении на еденицу (для визуальзации остальным персонажам).
Сервер -- получая координаты он проверяет наличие рядом каких-либо подвижных объектов (персонажи , мостры , вещи) , если есть , то клиету идет информация о них (координаты и код объекта) по отношению к точке назначения (относительно персонажа производится расчет на клиенте). Всем персам , находящимся неподалеку с сервера идет инфа о перемещении перса.
Формат данных для перемещения отпровляемых с сервера:
координаты смещения = 1 байт (код вида смещения:вверх,вниз и т.д.)
визуальная информация об 1-ом объекте :
идентефикатор = 2 байта
идентефикатор имени = 3 байта (алгоритм хранения имен , если интересует , напишу потом).
Дополнительные байты для др действий и свойств (удар , магия , торговля и т.д.) = не более 6 байт (код действия и параметры)
итого при 20 объектах максимальный размер 1 пакета =240 байт
Для нормальной работы достаточно отправки 7 пакетов в сек т.е. 1680 байт (1,64 кб/сек)
Чем меньше объектов , тем меньше трафик.
Это я написал навскидку подумав можно сделать еще меньше расход трафика. (Допустим , если объект статический (вещи , шахта и т.д.) , то размер инфы о нем можно урезать в два/три раза)
#25
Отправлено 09 April 2005 - 13:03
Цитата |
А теперь на счет игры : трафик 2-3 кб в сек это очень много (7-10 мб/ч). |
Это ПРЕДЕЛЬНАЯ нагрузка, которую мы расчитываем иметь. Средний ожидаемый трафик будет крутиться в районе 1KB.
Цитата |
По сему хочу спросить , а какой формат передачи данных??? |
Если Вы имеете в виду протокол, то TCP . Более того, трафик мы расчитываем с учетом 10 TCP/IP пакетов в секунду. Чаще сервер отправлять их не будет. Речь идет именно о сетевых, а не игровых пакетах. Наконец, при расчете размера заголовков, их размер принимался за 100, что тоже сделано с весьма большим запасом.
Цитата |
Сильно ли ваш формат отличается от моего представления?? |
Сейчас проверим
Цитата |
клиент -- отправляет координаты смещения для точки назначения и передвижение происходит на клиенте , когда достигается точка , то отправляется сообщение о ее достижении. В том случае если рядом персонажи в радиусе видимости экрана , то отправлять координаты смещения при каждом смещении на еденицу (для визуальзации остальным персонажам). |
Нельзя. Просчет передвижения на клиенте хоть и сильно экономит трафик, но создает обширные возможности для читинга. Все расчеты ведутся на стороне сервера.
Цитата |
Сервер -- получая координаты он проверяет наличие рядом каких-либо подвижных объектов (персонажи , мостры , вещи) , если есть , то клиету идет информация о них (координаты и код объекта) по отношению к точке назначения (относительно персонажа производится расчет на клиенте). Всем персам , находящимся неподалеку с сервера идет инфа о перемещении перса. |
Сервер при расчете пути учитывает все объекты в округе. Пересчет пути делается на каждой клетке, что заметно уменьшает возможности глюков при ходьбе в толпе. Разумеется, все это в ущерб производительности, но пока что тесты показывают, что сервер не будет сильно напрягаться.
Цитата |
Формат данных для перемещения отпровляемых с сервера: координаты смещения = 1 байт (код вида смещения:вверх,вниз и т.д.) визуальная информация об 1-ом объекте : идентефикатор = 2 байта идентефикатор имени = 3 байта (алгоритм хранения имен , если интересует , напишу потом). Дополнительные байты для др действий и свойств (удар , магия , торговля и т.д.) = не более 6 байт (код действия и параметры) |
Координаты смещение - 2 байта. Есть ряд частных случаев, когда персонаж у клиента стоит не на том месте, где и у сервера. Чтобы полностью исключить вероятность сбоев в этом случае, передаются абсолютные координаты точки назначения.
Идентификатор - 1 байт. На карте не более 255 персонажей и монстров. Учитывая то, что сервер планируется под одновременную нагрузку не более 200 человек, этого должно быть более чем достаточно. Все на одной карте тусоваться не будут
В общем, если подитожить, то размер пакетов, отсылаемых клиенту, таков (включая идетификаторы типов и, реже, подтипов игровых пакетов):
1. Персонаж двигается на соседнюю клетку: 4 байта
2. Персонаж бъет вблизи: 6 байт
3. Удаление персонажа с карты: 2 байта
4. Добавление персонажа на карту: 8 байт + имя
Кроме этого, есть еще множество пакетов... Это и синхронизация внешнего вида персонажей (одежда, оружие), и синхронизация статичных объектов (которым это надо), и синхронизация мешков в округе (для быстрого доступа к содержимому)... В общем, чуть более 40 типов и подтипов. Ест пакеты и более 6 байт, но отсылаються они редко.
На самом деле, я провел немалую работу по оптимизации всех этих вещей, так что ужимать уже некуда . Расчет примерного трафика очень мложен и делается навскидку, так что цифры, вероятнее всего, у меня сильно завышены.
Ну и напоследок, пакеты более 50 байт сжимаются ZLib'ом, что, как показали эксперементы, снижает трафик (только игровой трафик, без заголовков пакетов) на 20-30%
#26
Отправлено 09 April 2005 - 14:00
А могу я поинтересоваться , какое количество времени вы уже работаете над проектом???
#27
Отправлено 09 April 2005 - 14:32
#28
Отправлено 14 April 2005 - 23:21
#29
Отправлено 15 April 2005 - 04:37
#30
Отправлено 15 April 2005 - 05:14
#31
Отправлено 15 April 2005 - 11:31
Если мне покажут русского прова, который даст 1-2TB без ограничений на соотношение трафика, и со стабильным (пусть и не самым низким) пингом со всей территории России - я подумаю
P.S.: Вопрос не о co-location, а о dedicated, разумеется
#32
Отправлено 15 April 2005 - 11:57
#33
Отправлено 15 April 2005 - 12:39
#34
Отправлено 15 April 2005 - 12:55
ну не хотите - как хотите.. моё дело предложить
#35
Отправлено 15 April 2005 - 14:43
#36
Отправлено 16 April 2005 - 19:15