|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.12.2010, 17:28 | #1 |
Участник клубаДжуниор
Регистрация: 23.08.2008
Сообщений: 1,616
|
MMOFPS: разработка и возможные грабли
Здравствуйте.
Решил заняться разработкой MMOFPS(или MMOTPS). Опыт в разработке игр имею, но вот полноценные MMO-проекты никогда не писал. Возникает вопрос в реализации. Все статьи, которые я нашел в интернете, затрагивают лишь поверхностно многие вопросы. Проект будет кроссплатформенный, так что планирую использовать Ogre+Boost::ASIO+OpenAL. Затеваться с OpenGL+SDL нету желания, равно как и с кроссплатформенной собственноручной реализацией сокетов. Пока что меня интересуют такой вопрос: Как правильно реализовать структуру для MMOFPS? Пока думаю насчет такого: Пользователь жмет кнопку, ID действия, которая она осуществляет, отсылается на сервер, а пользователю возвращается результат. То есть обработка физики, действий и прочего происходит на сервере, а пользователю отсылаются лишь данные, нужные для рендринга. Но думаю, что такой способ будет крайне медленным. Что вы можете посоветовать?
pushl $0x18E3DF6B
call ICQ |
20.12.2010, 19:06 | #2 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Ничего в этом тормозного не вижу. Сервер и должен контролировать любые действия пользователей, и на себе держать игровой мир, в грубой форме конечно, ...по индексам, кто где стоит/перемещается и что делает, секунда за секундой, поправляя клиентов, если их внутренняя система создания игрового визуального пространства отклонилась от серверной модели. Никакого управления сервером, только запрос с клиента и после проверки на подлинность пакета - команда на изменение параметров у клиента.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
20.12.2010, 19:21 | #3 |
Участник клубаДжуниор
Регистрация: 23.08.2008
Сообщений: 1,616
|
Само собой, никакого управления сервером через клиент. Но а что-же насчет нагрузки на сервер? Если будет большой мир, то серверу придется много обрабатывать на себе... Конечно, многое можно оптимизировать, например, `усыплять` неиспользуемые части мира, но все равно медленно.
Взять систему рагдолл, ведь ее обработка на стороне сервера является недопустим действием. Но писать в клиенте модуль физики, только из-за рагдолла, как-то глупо. Ведь придется хранить физическую модель мира, использовать физический движок... Как поступить в этой ситуации?
pushl $0x18E3DF6B
call ICQ |
20.12.2010, 19:23 | #4 |
c++, dx/ogl
Форумчанин
Регистрация: 10.11.2008
Сообщений: 131
|
Ogre как и SDL это вродебы врапперы над gapi (на основе ogl’a.)
А Boost aka C++ STL? В прочем может я и ошибаюсь. Ресурсы накладно передавать. Передать лучше «состояния всевозможные», и минимум данных о них) Клиент уведомляет о намеренье, а сервер смотрит и разрешает или не.... И уж графику и физику сервер точно не должен считать, как мне кажется) У вас уже вся иерархия запросов – ответов разработана, или есть наметки? Как мне кажется надо начать с классификации запросов-ответов (пакетов действий) На вскидку… pass1. - запрос - ответ pass2. - запрос клиента - ответ сервера - запрос сервера - ответ клиента pass3. ( по частоте запросов) - запрос клиента - периодические -по требованию - ответ сервера - периодические -по требованию - запрос сервера - периодические -по требованию - ответ клиента - периодические -по требованию pass4. (по приоритету) уровень приоритета - запрос клиента - периодические -по требованию уровень приоритета - ответ сервера - периодические -по требованию уровень приоритета - запрос сервера - периодические -по требованию уровень приоритета - ответ клиента - периодические -по требованию Что-то в этом духе с дальнейшей детализаций запросов и ответов, пронумеровкой их ID…
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but rather how many batches/frame! |
20.12.2010, 19:41 | #5 | ||||
Участник клубаДжуниор
Регистрация: 23.08.2008
Сообщений: 1,616
|
Цитата:
Да и SDL+OpenGL, по большому счету, приведение OpenGL к кроссплатформенному уровню. Цитата:
Цитата:
Физику не стоит? Почему? Тогда юзер должен отправлять данные о своей позиции, а сервер должен ему верить, думая, что эти координаты - результат работы физического движка. Тут сразу появляется две уязвимости. Цитата:
pushl $0x18E3DF6B
call ICQ |
||||
20.12.2010, 21:12 | #6 | |||||
c++, dx/ogl
Форумчанин
Регистрация: 10.11.2008
Сообщений: 131
|
Цитата:
я лишь указал на природу Огра в света вашего поста Цитата:
интересно а у огра есть имплиментации под dx?) Цитата:
Цитата:
собрались отправлять клиенту? данные для рендеринга)) Хоть облачные вычисления и набирают силу, и кто вас знает чего вы там задумали)) но графика просчитанная на сервере ровно как и физика для меня - нонсенс) Цитата:
Он проверить не может? Позицию (или смешение) на «правильность»? Не полный просчет физики действия, а некоторую мат. физ. выборку во времени. Известно же кто прыгает, стреляет, передвигает объекты, известны его возможности и т.д. Т.е. есть некоторое физ. мат. ожидание его только надо проверить. Если оно нарушается это однозначно хак механики игры. Поскольку клиент сам пользуясь вашей разработанной физической моделью просто бы не допустил бы этого. Мне так кажется. Пусть игрок прыгает куда угодно и как угодно, если это не правильно сервер его возвращает на грешную землю (правильную позицию).
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but rather how many batches/frame! |
|||||
20.12.2010, 22:05 | #7 | |||
Участник клубаДжуниор
Регистрация: 23.08.2008
Сообщений: 1,616
|
Цитата:
Цитата:
Цитата:
pushl $0x18E3DF6B
call ICQ |
|||
20.12.2010, 22:37 | #8 | |||
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
russian-stalker, походу тема троллингом попахивает . Ты же все знаешь, тебе говорят одно, ты опровергаешь такими же мыслями, сказали:
Цитата:
Цитата:
Цитата:
Нужно начинать делать, подводные камни в сомнениях, тут их полно, даже воды не видно.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|||
20.12.2010, 22:43 | #9 | ||
c++, dx/ogl
Форумчанин
Регистрация: 10.11.2008
Сообщений: 131
|
Цитата:
Цитата:
И если вы считаете что вместо проверки на стороне сервера стоит просчитывать всю физику сцены одного игрока - флаг вам в руки…)) много флагов и стягов разных…)) поскольку их – игроков должно быть много по идее… и для каждого придется считать и флаг его держать… а если еще нагрузить близким к натуральному просчетами частиц и усугубить все это дело для натуральности каким-нибудь пфизиксХ и ему подобными... думаю красиво будет, но сервер только и будет этим заниматься основное свое время) Думаю тогда надо хотя бы разделить/группировать какие физ. явления можно считать тут на стороне пользователя, а какие только на стороне сервера. Спец эффекты можно отвязать от сервера, наверное? К примеру, кому какое дело как у юзверя разлетаются искры и другие партиклы и еще что-нибудь отвязать мало важное)
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but rather how many batches/frame! |
||
20.12.2010, 23:18 | #10 | ||||||
Участник клубаДжуниор
Регистрация: 23.08.2008
Сообщений: 1,616
|
To Beermonza:
Цитата:
Цитата:
Да и я не отрицал, а лишь подтвердил, что так считаю. Цитата:
Цитата:
.pixel: Цитата:
Цитата:
В целом вы правы. Сейчас вспоминаю игру Point Blank, там расчеты гравитации, базовых столкновений проходили на стороне сервера, а остальные на стороне клиент. Вот к такому варианту и склоняюсь.
pushl $0x18E3DF6B
call ICQ |
||||||
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Возможные комбинации из чисел | Serg1k | Microsoft Office Excel | 17 | 17.12.2021 13:27 |
Показательные грабли | guz | Общие вопросы C/C++ | 1 | 25.11.2010 11:11 |
Все возможные варианты строки | Vikenty | Общие вопросы Delphi | 3 | 29.08.2010 03:30 |
графы - Все возможные пути | manuk | Помощь студентам | 9 | 23.05.2010 23:58 |
Все возможные слагаемые | anGeee | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 04.12.2008 20:22 |