Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование игр, графики и искусственного интеллекта > MMORPG


Автор: Miller_time 10.7.2009, 14:59
Подскажите пожайлуста, есть ли где  нибуть в сети алгоритмы работы ? Хотелось бы почитать материал ? 

Есть ряд вопросов может кто нибуть подскажет :

1. Как должен работать сервер и что от сервера должен получать игрок( Клиент) 

Попытался реализовать так  (Читать по пунктам ) :

Сервер                                                       Клиент
                                                                    
  
                                                                     1.Клиент отправляет свои данные и коррдинаты на карте 
2.Сервер обрабатывает игрока
3. Выслает ему данные относительно других
игроков  
                                                                      4. На клиенте создаються модели и сущьности других игроков
                                                                       5. Клиент начинает постоянно опрашивать сервер относительно позиций других игроков 


Хотелось бы узнать является ли этот примерный алгоритм правильным ? 

Автор: REZiaMIX 10.7.2009, 22:13
Цитата

1.Клиент отправляет свои данные и коррдинаты на карте 

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

Автор: Miller_time 13.7.2009, 14:16
А есть, может быть какиенибть библиотеки или движи со встроенным клиент-сервером ? Графическим ?

Добавлено через 28 секунд
Да и с какой переодичностью передовать данные ? 

Автор: Bitter 13.7.2009, 23:36
Вот какой был у меня опыт: Программа, работающая по сети на трех машинах. Сервер расчитывает движение поезда, клиенты должны получать данные от сервера и точно так же рисовать этот движущийся поезд, но с других ракурсов. В общем сначала я на каждом кадре формировал буфер для отправки, который содержал в себе координаты всех вагонов. Но даже при таком малом объеме данных на клиентах вагоны двигались рывками. Всё из-за потери пакетов при передачи.

Короче проблему решили частично, так как проект уже надо было сдавать. А именно пришлось рассчитывать на клиенте как двигается вагон между пришедшими пакетами.

Я это к тому, что полностью полагаться на сервер нельзя. Много расчетов надо делать на клиенте.

Автор: REZiaMIX 14.7.2009, 03:09
Цитата(Bitter @ 13.7.2009,  23:36)
Вот какой был у меня опыт: Программа, работающая по сети на трех машинах. Сервер расчитывает движение поезда, клиенты должны получать данные от сервера и точно так же рисовать этот движущийся поезд, но с других ракурсов. В общем сначала я на каждом кадре формировал буфер для отправки, который содержал в себе координаты всех вагонов. Но даже при таком малом объеме данных на клиентах вагоны двигались рывками. Всё из-за потери пакетов при передачи.

Короче проблему решили частично, так как проект уже надо было сдавать. А именно пришлось рассчитывать на клиенте как двигается вагон между пришедшими пакетами.

Я это к тому, что полностью полагаться на сервер нельзя. Много расчетов надо делать на клиенте.

При MMORPG - важные расчеты в клиент нельзя переносить. 
Пример:
Игрок1 бьет Игрока2->
Игрок1 передает серверу пакет о том , что удар нанес 111 единиц урона.
Путем сниффа , анализа , потом подмены пакетов , число 111 заменяется на любое другое.


Так же и с движением и т.д.

Тут надо включит голову , например в примере с поездами:
Сервер должен не передавать каждый кадр. Надо передавать данные смещения, т.е. направление , скорость и т.д.
И не стоит путать MMORPG с промышленной программой. В промышленной можно надеяться никто читерить не будет.
Да и 3 клиента - нагрузка небольшая.
А вот если этих клиентов 1000 , попробуйте слать каждый кадр движение??? а вот и не выйдет(никакой сервер не потянет)
Так что тут вывод такой , надо с самого начала полагаться на то, что нельзя делать никакую продвинутую физику и тд , что нельзя расчитать за определенный промежуток времени. Например все текущие физ. движки расчитаны на просчет в каждом кадре.
Тут стоит выбор , или дать клиенту расчитать его движение , или пускай сервер это делает.
В первом случае - клиент может послать что захочешь , во втором случае при большом количестве клиентов(больше 30-40 думаю) производительности не хватит.

Автор: Miller_time 14.7.2009, 07:47
А может быть уже есть платформы под MMORPG ? Студийные ?

Добавлено через 4 минуты и 57 секунд
Можеть быть есть смысал использовать Unity 3D, вроде динамично развивающаяся платформа ? Глючная пока правда. Подскажите кто что может, сейчас использую Truevison3D но это просто графический библиотека.

Автор: ShellRaiser 14.7.2009, 10:33
Цитата(Miller_time @ 14.7.2009,  07:47)
Можеть быть есть смысал использовать Unity 3D, вроде динамично развивающаяся платформа ? Глючная пока правда.

а у тебя есть $100к за юнити?smile

Автор: Bitter 14.7.2009, 12:57
REZiaMIX, убедил smile Я вообще с сетями не очень, просто привел пример, вдруг помог бы.

A Unity под винду по моему еще не сделали. Или уже сделали? Во всяком случае, когда я его скачивал (месяца три назад), пакета разработчика под винду небыло.

Автор: Miller_time 14.7.2009, 13:27
Год как Unity уже сть под винду, вопрос в том что он работает криво :( 



Цитата(ShellRaiser @  14.7.2009,  11:33 Найти цитируемый пост)
Цитата(Miller_time @ 14.7.2009,  07:47)
Можеть быть есть смысал использовать Unity 3D, вроде динамично развивающаяся платформа ? Глючная пока правда.

а у тебя есть $100к за юнити?


Есть ))).


Может быть ктонибуть натыкался на платформы предназначенные для разработки MMORPG.

Автор: ShellRaiser 14.7.2009, 14:58
projectdarkstar.com

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

Добавлено @ 14:59
Bitter, Miller_time, я вас чуть не попутал с вашими аватарами)

Автор: arilou 14.7.2009, 15:34
Miller_time, есть две ММОРПГ платформы сейчас - HeroEngine и BigWorld. Стоят недешево (считай, 500K USD и выше). У обоих свои недостатки. 

- HeroEngine жрет ресурсы серверов оооочень сильно, требует Винду.
- BigWorld имеет мощный сервер, но слабоватый рендер и path finding

Есть третий вариант. В моей компании сейчас разрабатывается серверный движок для ММО, который в качестве клиента использует Gamebryo (Oblivion, Fallout3, Warhammer Online, etc). Если ты действительно серьезно настроен и есть финансирование, стучись в личку, обсудим возможное сотрудничество.

Добавлено через 1 минуту и 20 секунд
Цитата(ShellRaiser @  14.7.2009,  14:58 Найти цитируемый пост)
клиент серверная платформа, для ммо игр и не только =)

это УГ. оно ни в одном серьезном проекте коммерческом не использовалось. там от их даркстара до ММО сервера человеко-годы работы, и еще человеко-годы для клиентской части.

Добавлено через 2 минуты и 22 секунды
Miller_time, да, забыл. У меня еще есть платформа для MMORPG на Flash. Тоже обсуждабельно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)