|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.03.2013, 21:38 | #21 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
А как реализована работа по сети? через что?
|
05.03.2013, 22:55 | #22 | |
CAE Engineer
Пользователь
Регистрация: 10.03.2011
Сообщений: 75
|
Цитата:
|
|
06.03.2013, 06:14 | #23 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Работа по сети сделана через почти (есть пара моментов жёсткой привязки, ещё пересмотрю) самостоятельную обёртку, которой неважно какой будет реализация - есть просто базовый интерфейс - методы, пока для версии 1.1 прицеплены самые банальные дельфи-компоненты, когда сяду этим заниматься для версии 2.0 (совместно с остальным портированием), возьму сетевой плагин движка, на котором работаю, и напишу наследника обёртки для него.
Сама сеть, по сути, примитивна. Есть понятие приёма и отправки, когда создаётся команда (из "системы команд" которая), она проходит шаги: формируется полностью/предобрабатывается, при сетевой игре кидается наружу и обрабатывается ("принимается у себя"). При приёме просто есть метод приёма команды - полностью безрализчный к тому, кто её послал (это мб свой комп, удаленный комп, загрузчик сейва, в будущем и АИ будет по такой схеме работать), там просто исполнение команды идёт и запоминание. За счёт запоминания реализованы сейвы и реплеи - игра при этом загружает исходную карту из сейва и исполняет всю очередь команд, для сейва мгновенно, для реплея с паузами и перерисовкой после каждой команды. Для хотсит и лан игры вдвоём довольно действенная схема, хотя по идее, у каждого игрока при сетевой игре свой геймстейт, который синхронизируется по сети, из-за мелких недоработок иногда проявляется рассинхрон. За счёт программ вроде хамачи, можно играть и по инету при такой схеме. На будущее, после выпуска 2.0 хочу пересмотреть это дело, пока план - добавить возможности играть по инету нормально, через сервер, но сервер будет лишь для связи (ну и может какой ерунды, типа регистрации, рейтингов и т.п.), на нём не будет геймстейтов. EridorBlade , замётано. Погляжу на то, как может освоиться с такой игрой любитель пошаговок ) В принципе , при определённой тренировке, 1 партия играется минут 10-15, если не мутить сложных стратегий )) Последний раз редактировалось phomm; 06.03.2013 в 06:27. |
06.03.2013, 13:35 | #24 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Из вашего описания следует, что вы никак не проверяете передаваемые данные. Бойтесь рассинхронизации.
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
06.03.2013, 14:40 | #25 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Так и есть, она бывает, нечасто, но бывает. Но даже серьёзные игры не защищены от рассинхрона, сколько бы там ни было проверок.
Вообще у меня там было задумано делать с подтверждениями полученных команд и перепосылкой их при проблемах, уже, как минимум, в начале коннекта оба процесса обмениваются номерами версии, и исключают возможность игры в таком случае. В оптимальном случае заботы по гарантированной доставке лягут на сетевой плагин движка, моя же забота обеспечить точную работу протокола взаимодействия, что на самом деле похитрее задача, сейчас например, очередь команд на обоих компах немного отличается - иногда по номерам юнитов иногда 2 команды не в том порядке, они хоть и не критичны для процесса игры (в большинстве случаев, ибо вспомогательные), но надо устранять конечно же. Ну а вопросы безопасности меня не беспокоят пока что, команды шлются открыто, но шифрование - работа реализующей части, а не обёртки, которую делаю непосредственно я. |
06.03.2013, 20:09 | #26 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
Что-то я не понял. Так через что работает сеть? Какой протокол?
|
06.03.2013, 20:51 | #27 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Протокол TCP/IP на стандартных дельфи компонентах TClientSocket TServerSocket
Впоследствии будет работать через плагин движка, для вин-сборки там винсокеты, для других ос пока не знаю |
07.03.2013, 11:43 | #28 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Как вариант, можно сделать один из компьютеров ведущим, а второй ведомым. Ведущий периодически отправляет ведомому некую контрольную сумму, рассчитанную из координат юнитов и их меняющихся характеристик (типа здоровья). Если у ведомого получается другая контрольная сумма (т.е. он считает что расположение или здоровье юнитов отличается) - то просто ведомый просто запрашивает полную синхронизацию. (ведущий полностью передает ему все, что нужно).
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
07.03.2013, 14:40 | #29 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
А как обстоит дело с обычной (не спрайтовой) анимацией? Есть ли возможность плавно перемещать изображения, плавно менять их прозрачность и размытость?
|
07.03.2013, 17:10 | #30 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Да, всё нормально с ней. Изображения перемещаются, можно менять альфу, блендить в разных режимах и т.п. Когда будет готов этап работы над "заготовкой" (прямо перед началом работ по портированию игры на эту заготовку) - предоставлю либо видео по основным возможностям, либо даже саму технодемку пощупать.
Насчёт размытия - либо универсальным шейдером, либо постобработчиком встроеным (и то и то в доработке в движке, но неуниверсальным шейдером можно уже сейчас, аналогично почти как в опенгл). Если интересуют больше технические аспекты, то наверное резонней дать ссылку - можно ознакомиться со всеми фичами, существующими и планируемыми http://dgle.dronprogs.org/ лично я для себя решил, что усердствовать с эффектами пока не буду, мне достаточно будет базовой отрисовки графических объектов в движении, немного работы с динамически генерируемыми элементами типа гуи и эффектами типа фейдинга. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
игра | N1b1V | Общие вопросы .NET | 0 | 06.11.2010 15:49 |
Игра на C++ | Chuvak ot dushi | Общие вопросы C/C++ | 1 | 05.11.2010 15:09 |
Игра | zumm | Софт | 0 | 15.10.2009 13:25 |