Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2012, 16:15   #1141
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
Если не вполне понятно, к чему это я - в MMO 2D RPG отсутствует такая вещь, как консоль и админка, которую я полагал одним из ключевых инструментов на этапе тестирования (хотя бы у одного админа должны быть подобные средства, ограниченные - желательно у специальных тестеров). Потому высказываю тут мнение, почему консоль такому крупному проекту действительно нужна.
Если нажать клавишу "I", то клиентское приложение покажет системную информацию, она помогала мне в отладке. Остальные возможности есть на сервере, я могу показать эту формочку во весь экран, которая показывает все параметры.

Кстати, жалоба на слишком сильных ботов. Я не снял с них повышенный даменж (это было нужно для проверки своей гибели). Все параметры предметов их количества закладываются модулями к серверу, их 4 штуки. Я просто "отстегнул" физически это от сети. Т.е. если не нужно добавить предмет, я запускаю модуль, модуль записывает информацию в файл пользователя, а сервер при повторном считывании добавляет предмет. Таким образом - управлять сервером с удаленной консоли клиента невозможно. Если учесть, что сервер у меня, я имею полный доступ к управлению, а клиенты - нет.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 21.05.2012, 18:00   #1142
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Beermonza, насчет Path-finding, для перемещений, если он будет на клиенте ничего страшного, ведь клиент будет давать все те же запросы к перемещению, не более.
и это очень удобная фишка, поверьте.

насчет имитации движения(до ответа сервера), тоже полезно, так как позволяет сгладить пинг.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.05.2012, 21:27   #1143
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Цитата:
Есть одно золотое право, при всем уважении "Клиенту доверять нельзя". Если учесть, что поиска пути и нет вовсе - это сложная система, и я работаю над более простой, чтобы не грузила сервер, то система управления полностью передана серверу. Клиент не может никаким образом перемещаться без одобрения сервера. Таймауты введены искусственно, ...если вы почувствовали тормозность - это таймаут между действиями, он введен для нивелирования разброса возможных пингов пользователей. Если между атаками вам кажется, что большая пауза (а она 6 сек), то нужно бросать очки на Ловкость, и к моменту прокачивании ее до 200 паузы между ударами практически не будет, ...бой будет динамичен до безобразия. Это момент внесения в игру реалистичности.
Beermonza, Вы видно не так меня поняли, как надо.

У Вас в игре игроки ползают, как черепахи и только по прямой. Для них дерево непреодолимое препятствие.
Управление не просто неудобное, оно ужасное.

Я говорил исключительно о перемещении. У Вас не оптимальная логика изначально! В текущей реализации Вы используете вычисление пути по уравнению. Это всё хорошо работает, если нет препятствий. А как только в игре появляются препятствия, то всё начинает "накрываться медным тазом". Если вы не замените логику перемещения, то в итоге получите алгоритм построенный на вероятностях, менее точный и требующий больше ресурсов.
Вам нужно переписать логику перемещения (и атаки) на использование алгоритма поиска пути (какой-нибудь подходящий Вам волновой алгоритм). Алгоритм поиска пути должен быть реализован и на сервере и на клиенте. Потому что это самый оптимальный путь решения данной проблемы без затраты лишних вычислительных мощностей.

Можете в принципе оставить подход "Клиент не может никаким образом перемещаться без одобрения сервера". Но в случае перемещения это глупо.

Последний раз редактировалось Виталий Желтяков; 21.05.2012 в 22:00.
Виталий Желтяков вне форума Ответить с цитированием
Старый 21.05.2012, 23:29   #1144
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,378
По умолчанию

Цитата:
Если между атаками вам кажется, что большая пауза (а она 6 сек), то нужно бросать очки на Ловкость
В виде пожелания: было бы неплохо, чтоб эти 6 секунд заполнялся какой-то прогресс-бар, а то неудобно все время следить за аватаркой перса, когда ж она наконец-то засветится зеленым.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 22.05.2012, 00:02   #1145
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
Можете в принципе оставить подход "Клиент не может никаким образом перемещаться без одобрения сервера". Но в случае перемещения это глупо.
А в чем, вообще проблема? Клиент говорит серверу: "я иду туда!" И идет и показывает это. Сервер слышит это, проверяет, говорит: "молодец, пришел".

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

Другой вариант. Клиент говорит: "Я иду сюда. А теперь сюда. И еще сюда и сюда. А теперь я буду тут канкан танцевать." А тут сервер ему и говорит стринговским голосом: "Так, что-то я от тебя часть пакетов потерял. Ты говорил, что шел вот туда. Ладно, дошел. А все остальное я не слышал, так что возвращайся-ка ты назад. И канкан тут танцевать тоже нельзя. Там, где ты хотел его танцевать - можно, но по моим сведениями ты туда еще не дошел, так что изволь-ка повторить."

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

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

Каждый занимается своим делом. Сервер говорит, ЧТО можно и нужно сделать, а клиент обдумывает, КАК он это будет делать. Путь ищет клиент, сервер только контролирует элементарные шаги. Траекторию полета самонаводящейся магической стрелы считает клиент, сервер только указывает откуда и куда она летит. Сервер говорит, где находится персонаж, что вокруг него происходит, и только клиент решает, какие звуки окружения и событий (сражения, магия, шаги) проигрывать. И так далее.

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

С другой стороны, та задача, которая и ставилась перед проектом - создать настоящую ММОРПГ на дельфи - если еще не выполнена, то вполне успешно выполняется. Задача проектирования и программирования продукта, представляющего собой игру, выполнена отлично, имеющиеся проблемы относятся именно к адаптации программного продукта к типу "игры, которую можно легко подготовить к выпуску, запустить, привести к хорошо играбельному состоянию и поддерживать". Этим уже должны заниматься специальные люди, хорошо разбирающиеся именно в данном аспекте создания и поддержки игр.

Человек, разбирающийся в создании архитектуры и кода игры, уже есть, осталось максимально довести игру до ума, а потом с этими наработками можно смело искать тех, кто разбирается в других аспектах создания игр, и тогда уже можно будет создавать вполне себе коммерческий игровой проект.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 22.05.2012, 00:07   #1146
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от Виталий Желтяков Посмотреть сообщение
Beermonza, Вы видно не так меня поняли, как надо.

У Вас в игре игроки ползают, как черепахи и только по прямой. Для них дерево непреодолимое препятствие.
Управление не просто неудобное, оно ужасное.

Я говорил исключительно о перемещении. У Вас не оптимальная логика изначально! В текущей реализации Вы используете вычисление пути по уравнению. Это всё хорошо работает, если нет препятствий. А как только в игре появляются препятствия, то всё начинает "накрываться медным тазом". Если вы не замените логику перемещения, то в итоге получите алгоритм построенный на вероятностях, менее точный и требующий больше ресурсов.
Вам нужно переписать логику перемещения (и атаки) на использование алгоритма поиска пути (какой-нибудь подходящий Вам волновой алгоритм). Алгоритм поиска пути должен быть реализован и на сервере и на клиенте. Потому что это самый оптимальный путь решения данной проблемы без затраты лишних вычислительных мощностей.

Можете в принципе оставить подход "Клиент не может никаким образом перемещаться без одобрения сервера". Но в случае перемещения это глупо.
Управления как такового и нет, оно формальное, именно из-за отсутствия поиска пути. Поиск пути для персонажа должен проводить только сервер, он определит массив движения до точки, а если точка указана за пределами видимости - обрежет путь. Таким образом идет рассылка одного определенного массива пути всем пользователям, включая идущего. Здесь устраняется работа пинга и возможная рассинхронизация, поскольку изначально игра планировалась как "Смесь походовой и реалтайма". В реалтайме выигрывает тот у кого лучше пинг, в "шахматы" не все любят играть, поэтому это тщательно обдуманное решение.

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

Дублировать поиск пути на клиента - это нерационально, он там не нужен в моем конкретном случае.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 22.05.2012, 00:08   #1147
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
В виде пожелания: было бы неплохо, чтоб эти 6 секунд заполнялся какой-то прогресс-бар, а то неудобно все время следить за аватаркой перса, когда ж она наконец-то засветится зеленым.
Все будет, ...у меня только легкая помощь была, т.к. все писать нужно вручную, я упростил себе задачу.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 22.05.2012, 00:41   #1148
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Цитата:
Управления как такового и нет, оно формальное, именно из-за отсутствия поиска пути. Поиск пути для персонажа должен проводить только сервер, он определит массив движения до точки, а если точка указана за пределами видимости - обрежет путь. Таким образом идет рассылка одного определенного массива пути всем пользователям, включая идущего. Здесь устраняется работа пинга и возможная рассинхронизация, поскольку изначально игра планировалась как "Смесь походовой и реалтайма". В реалтайме выигрывает тот у кого лучше пинг, в "шахматы" не все любят играть, поэтому это тщательно обдуманное решение.
Beermonza, Вы опять думаете не о том. Какая к чёрту рассинхронизация? Речь не об этом, а об логике вычисления пути. У Вас логика на уравнениях с построением пошагового пути на сервере. Это изначально ресурсоёмкий и бесполезный подход.
Цитата:
Персонаж не может моментально изменить свое движение по клику, это и у меня с пингом 0 существует. Причина в следующем. Персонаж двигается по клеткам, которых вы не видите, и он не может начать двигаться в другую сторону пока не дойдет до центра клетки. Сервер тоже параллельно шагает у себя, ...иначе вновь подключившиеся не будут знать откуда и куда идет персонаж, что они видят у себя.
Обработка прерывания пути организуется путём добавления триггера выполнения действия на клиенте. Что может быть проще.
Цитата:
Дублировать поиск пути на клиента - это нерационально, он там не нужен в моем конкретном случае.
Нерационально передавать каждый шаг с сервера.
Цитата:
Найдя путь, он разбивает его на элементарные шаги, и уже эти шаги посылает на одобрение серверу.
Отсылать на сервер шаги тоже не надо - лишняя трата трафика и есть проблемы с безопасностью при вычислении дальних атак.
Клиент производит расчёт пути, строит матрицу шагов и, если перемещение возможно, передаёт только координату конечной точки.
Сервер проверяет возможность достижения и отсылает на клиент команду о подтверждении перемещения без расчёта шагов.

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

Beermonza, ещё раз повторяю, не поменяете логику в итоге упрётесь в уравнения с вероятностью, которые тяжелы в расчётах и неточны.
Виталий Желтяков вне форума Ответить с цитированием
Старый 22.05.2012, 01:21   #1149
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
Здесь логика проста: если можно достичь конечной точки разными, но одинаковыми по длине путями, игрок может двигаться по любому.
Только на одном пути нас поджидает по дороге монстр, а на другом аномалии никого поблизости нет. Результат будет сильно различаться, ведь перемещение происходит не мгновенно, и за время пути может подрасти собачка, выбежать навстречу монстр, или еще что произойти. Даже если в начальный момент времени оба пути идентичны, в середине на одном из них может среспауниться моб, и тогда уже будет важно, в какую именно щель попал электрон.

Да, с шагами я, возможно, неточно выразился. Посылается только пакет типа: "Сейчас я перейду на эту клетку. Получилось? Ладно, тогда теперь вот на эту. Опять получилось? Клево, тогда теперь сюда." Проверка каждого такого шага сервером осуществляется элементарно, а весь расчет пути от начала до конца ему знать вообще не обязательно, тем более что пользователь может в середине передумать и пойти в другую сторону. И на кой тогда посылались все шаги?
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 22.05.2012, 05:45   #1150
Simply-Art
Программист и
Участник клуба
 
Аватар для Simply-Art
 
Регистрация: 29.10.2006
Сообщений: 1,266
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
Посылается только пакет типа: "Сейчас я перейду на эту клетку. Получилось? Ладно, тогда теперь вот на эту. Опять получилось? Клево, тогда теперь сюда." Проверка каждого такого шага сервером осуществляется элементарно, а весь расчет пути от начала до конца ему знать вообще не обязательно, тем более что пользователь может в середине передумать и пойти в другую сторону. И на кой тогда посылались все шаги?
Думаю так действительно оптимальней, ведь ладно сервер рассчитает путь для 10-20 человек, но если их будет 100-200, сервер сам уже будет тормозить. А вот обработать 100-200 запросов на проверку одной клетки думаю сможет, без сложных расчетов путей.
Simply-Art вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Уроки по созданию игр для новичков... -=DeS=- Gamedev - cоздание игр: Unity, OpenGL, DirectX 750 14.11.2017 20:26
Музыка программистов - как вы относитесь к АРИИ? Весёлый Жека Свободное общение 46 10.10.2008 22:32
Конкурсы по созданию игр на Delphi mutabor Свободное общение 0 15.06.2007 12:40
Работа по созданию ПО remix Фриланс 3 22.04.2007 11:00