Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 19.12.2006, 13:46   #1
stone_evil
ПроЭктировщик
 
Регистрация: 17.10.2006
Сообщений: 170
Написано 18 полезных сообщений
(для 42 пользователей)
Вопрос Проблема с "оконными" играми

Всем привет.
Хотелось бы написать стратегию не так как обычно, в полноэкранном режиме, а в "оконном". В принципе особых проблем не виделось, меняй графический режим и все.
Ради минимизации трафика осуществлялась следующая схема управления юнитами: предположим, юниту на клиенте 1 надо пойти из точки А в точку Б. Клиенту 2 передаются координаты юнита, точки А и точки Б, и потом на клиенте 1 и клиенте 2 юниты независимо друг от друга двигаются куда необходимо. Так как алгоритм движения на клиентах идентичен, то и двигаться они будут синхронно. То же самое можно сказать и про все остальные действия - они завязаны на времени, и по идее должны происходить хоть и независимо, но синхронно.
Появилась следующая проблема - при перетаскивании виндового окна мышой игра зависает - и не прорисовывается, и не просчитывается. И длится это, пока мышой держишь окно. Что приводит к асинхронизации клиентов, и как следствие разного рода глюкам. Кто-нибудь сталкивался с подобной ерундой, может посоветовать, как это побороть???
(Offline)
 
Ответить с цитированием
Старый 20.12.2006, 09:49   #2
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: Проблема с "оконными" играми

Вариант 1) Блокировать перемещение окна путем установки на окно каллбека и перехвата им сообщений WM_NCHITTEST (Может можно и без перехвата - читай MSDN)
Вариант 2) Тот же что и первый, только после перехвата сообщения выполнять функцию обновления гамесы и передачи данных по указателю, прям из каллбека.
Вариант 3) Вынести функции обновления и синхронизации в длл и запустить ее отдельным потоком
В любом случае для всего этого нужно писать длл. В принципе, если у меня будет свободное время, могу помочь.
ЗЫ
Хотя может существует и более простой выход.
(Offline)
 
Ответить с цитированием
Старый 20.12.2006, 10:04   #3
stone_evil
ПроЭктировщик
 
Регистрация: 17.10.2006
Сообщений: 170
Написано 18 полезных сообщений
(для 42 пользователей)
Re: Проблема с "оконными" играми

Спасибо за помощь, Cyan, но если при любом раскладе надо будет делать dll, то проще тогда запускать игру в полноэкранном режиме и не мучить себя и других
(Offline)
 
Ответить с цитированием
Старый 20.12.2006, 10:16   #4
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: Проблема с "оконными" играми

stone_evil
В принципе, как самый простой вариант, ты можешь блокировать мышь MoveMouse(), а в игре использовать свой курсор и обновлять его перед вызовом этой функции.
ЗЫ
Еще возможно есть способ запрета на перемещение отправлением какой-то мессаги окну - надо искать в справочниках по WINAPI.
(Offline)
 
Ответить с цитированием
Старый 21.12.2006, 03:00   #5
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Проблема с "оконными" играми

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

function ClipCursor; external user32 name 'ClipCursor';
function ClipCursor(lpRect: PRect): BOOL; stdcall;
(Offline)
 
Ответить с цитированием
Старый 21.12.2006, 05:47   #6
stone_evil
ПроЭктировщик
 
Регистрация: 17.10.2006
Сообщений: 170
Написано 18 полезных сообщений
(для 42 пользователей)
Re: Проблема с "оконными" играми

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


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли сделать так чтобы при нажатии "вверх" и "вниз" двигалась одна картинка, а при нажатии "вправо" и "влево" - другая Total_Nube_&_Lamo Основной форум 2 13.12.2009 22:00
"Кодирование/декодирование изображений", или "Давайте попробуем скрыть ресурсы мидлетов" Richik Библиотеки 17 03.06.2009 14:18
Проблема с мобилой "Samsung" ABTOMAT Болтовня 1 11.02.2008 18:57
Игра "Три слова". Рассказ "Время планет" Ilyich Юмор 77 02.04.2007 17:49
"Пополнение рядов" или "Слава роботам!" impersonalis Юмор 1 15.08.2006 23:54


Часовой пояс GMT +4, время: 12:00.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com