[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Server<->client TCP
falc0nДата: Четверг, 18 Декабря 2008, 00:20 | Сообщение # 1
Продвинутый
Группа: Участники
Сообщений: 149
Награды: 0
Замечания: 0%
Статус:

Профессия: Студент
Команда: MINFOS studio(в команде я один xD )
Проектов: один(зубодробительная ММОРПГ)
Всем привет
в общем пишу скромную мультипелереную космическую стрелялку с использованием TCP
работать то все работает...

но возникают вопросы
например почему считаеться что нельзя реализовать нормальный сервер на блице?
я впервые взялся за сеть и сравнивать несчем
но примерно представить могу ... ну например работа с данными... сохранения параметров игроков... вроде MySQL базы для этого существуют, но как с ними работать я хз... так на вскидку в тхт можно работать но перебирать данные из файлов ... кажеться глупым (скорость перебора, поиска... жесть)

еще бы знать как в играх организоввывать передачу пакетов... передавать 1 раз всю инфу 1им толстым пакетом? (сейчас я банки по 25-30 байт передаю... )

как часто надо обновлять клиент и сервер (передавать пакеты)
(вроде это называеться синхронихация)
сейчас я передаю каждые 10 мс

насколько тяжело писать аналогичный блицевскому СЕрвер На С++ , С, С#,Pascal,Delphi, qBasic ( roll )

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

я наверно предпочел бы C++ или аналогичные Сяподобные языки... как то они полезнее кажуца
что следует почитать про тцп на с++?
есть ли семплы рабочие написанные на цпп (аналогичные блицевским семплам про тцп... сервер, клиент, их общение)

как бы грамотно организовать вопрос.....

ну вот:
какой лучше выбрать инструмент для написания более менее нормального сервера для ОнлайнКосмическогоСимулятора
с расчетом от 50 человек онлайн (хотя играть будет не больше двуХ rah )

возможности в игре - летать стрелять....(есть инвентарь... писал для своей рпгшки... но думаю нету резона фтыкать его в спейс симулятор.. темболее онлайновский)

в клиенте использую PhysX ... (баги блин... хз как исправить... боди позиционирую на пришедшую координату... и НЕТУ СТОЛКНОВЕНИЙ smile тупо сквозь корабль личу и я и сноряды... но если летят снаряды то ИНОГДА возвращается test=pxContactGetBody(p\body,1) ... хз как с этим бороться... наверно от физикса откажусь)

наверняка сервер для такой игры на блице написать не сложно (учитывая что мне осталось ток передавать покеты о факте выстрела... а так все уже готово)
но хочется что бы все было более грамотно... и хотелось бы знать как делаються северы НА САМОМ ДЕЛЕ

 
ПрохожийДата: Пятница, 19 Декабря 2008, 14:21 | Сообщение # 2
Группа: Гости





отпишитесь пож
я непонятно выразился?
незнаете как ответить?
или я так туплю и все есть в поиске? bash
 
FroZДата: Пятница, 19 Декабря 2008, 15:42 | Сообщение # 3
Бывалый
Группа: Участники
Сообщений: 57
Награды: 0
Замечания: 0%
Статус:
Вопросы ты расписал довольно понятно и подробно, вчера не стал отвечать, т.к. было лень писать (мда, самому противно, да - совсем обленился)
Почему нормальный сервер нельзя реализовать на блице? Ну вообще, простой сервер вполне можно сделать и будет он работать нормально и стабильно, но тут имеется ввиду, что на
блице не сделать нормальный, серьёзный сервер, способный стабильно работать при большой нагрузке и хорошо управляться с базами данных и тп
Передавать все данный одним пакетом очень не рекомендую - увеличивается шанс потери большого пакета, а так как он один, то и вся синхронизация обломиться, лучше передавать пакеты отдельно для каждого синхронизируемого объекта - так намного стабильней получиться
Как часто синхронизировать я точно в твоём случае сказать не могу, но думаю, что 10mc=0.01сек=очень маленький промежуток времени=> много трафика и нагрузки(если объем данных существенный) тут сам подумай и поэкспереминтируй, как будет оптимально
По опыту программирования на делфи могу сказать, что писать TCP сервер на этом языке одно удовольствие - есть специальный набор компонентов для работы с TCP/UDP находяться они на вкладке Indy Servers на палитре компонентов(если нет, значит надо вручную скомпилировать и поставить, обычно сорцы в поставке всегда есть). В делфи есть и другие компоненты для работы с сетью, но эти, imho, наиболее просты и удобны. В интернете тонны уроков по TCP в делфи.
какой лучше выбрать инструмент для написания более менее нормального сервера для ОнлайнКосмическогоСимулятора? Если учесть что играть будут немного(<15 человек) то смело пиши на блице, иначе лучше использовать что-то более шустрое и надёжное. А вообще блиц подкупает своей простотой создания 3D окружения, а такие вещи как серверы можно и нужно и на обычном ЯПе писать (:


[VeXeD Signature] All come to Mobius soon >:]
 
ПрохожийДата: Пятница, 19 Декабря 2008, 19:44 | Сообщение # 4
Группа: Гости





тут возникает вопрос.
у меня появилась проблема... как монета с двумя сторонами...
с одной - работать должно
с другой - нет

проблема в колизиях...
я наивно пологал считать их все в клиенте

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

но почему то игроки "пролетают"сквозь друг друга
хз чем конкретно это вызвано... толи апдейт физики глючит (хотя я пытался юзать и блицевские елипсоиды к полигону) толи изза сети...

раз глючит, то бридется сервер делать иначе...
колизии должны считаться на сервере, соответственно и сервер должен быть "игровым"...
а тут как раз и проблемы... как бы заставить считаться колизии ВНЕ блица... тоесть в идеале считать хотелось бы "элипсоид-к-элипсоиду"
(в самом идеале-полигон к полигону.. с использованием "псевдомоделей")

ручками можно высчитывать колизии по сфере.... на большее моих знаний математики не хватает...

Delphi
давно хотел посмотреть на него smile
все чтото повода небыло... если б можно считать математику игры на делфи то получается вообще идеал

 
falconДата: Пятница, 19 Декабря 2008, 19:47 | Сообщение # 5
Группа: Гости





а да... благодарю за ответ smile
 
ShiraseДата: Пятница, 19 Декабря 2008, 21:07 | Сообщение # 6
Начинающий
Группа: Пользователи
Сообщений: 1
Награды: 0
Замечания: 0%
Статус:

Команда: Subject
Лучшее сочетание:
Blitz3D + PHP (кто то подумает что это бред)
Суть такая: На сервере работает веб-сервер Apache, к нему приделана база данных MySQL
с которой общается PHP скрипт, который посредствум TCP/IP протокола получает данные от программы и заносит в базу.
Другой же скрипт выдаёт данные из той же базы.
Более детально:

например:
есть: online_query.php и online_result.php
online_result.php выдаёт какие игроки где чем занимаются и прочую инфу
допустим игрок решил пойти вверх(или вперёд) то программа посылает online_query.php запрос мол юзер хочет пойти
тогда online_result.php отвечает может он пойти или там стена.
Весь механизм на POST запросах.
через TCP. Прошу знающих не ругать, но этот вариант рабочий сам тестил.
В итоге отказался из за медленной скорости и перешол на UDP(опять же Blitz+PHP).


Технологии - это смешно!
 
falconДата: Пятница, 19 Декабря 2008, 21:18 | Сообщение # 7
Группа: Гости





ну и архитектурка... неосилил ):
 
  • Страница 1 из 1
  • 1
Поиск: