![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сетевая игра. BCB6 [D6]
megabyte-ceercop © (2005-12-12 07:21:00)Привет всем.
Недавно увидел сетевого бомбермена, вот теперь уже окончательно понял что без сетевого варианта - игра не будет по-настоящему цепляющей : )
Ищу инфу по сетевому обмену. Игровой механизм уже продумал и реализовал. Теперь хочу сделать правильно Сетевой обмен.
Игра на два компа в локалке.
Обмен состоянием клавиш идет в каждом пакете. Плюс небольшими порциями передаются куски для синхронизации миров.
Интересуют такие вопросы:
Какой механизм (компоненту) использовать для соединения, с передачей данных в обоих направлениях, (желательно самую низкоуровневую)?
Кокого размера буфер лучше передавать и как часто?
(из пределов 1-25кб / 20-50pps)
С какой частотой можно передавать буфер в 25кб не перегружая сетку (100Mb/s)? (25 кб - это полное описание всего мира без ландшавта (всех спрайтов), было бы не плохо просто клиенту копировать мир с сервака.)
Порт с номером из какого диапазона лучше пользовать?
Как получить список компов в локальной сети на которых открыты сервера игры, или хотя бы просто список всех компов в локалке?
Я по сетке вобщем ламак. Пытался делать поиск все запросы нулевые.
Как только реализую, выложу обновленную Альфу Киркопа III с сетевой игрой :)
Помогите кто знает.
Sapersky (2006-03-16 12:33:00) [1]Хотя вывод текста - не тот случай, у спрайтов (букв) края получаются прозрачные, как правило. Может быть, действительно текстурные координаты надо смещать.
Sapersky (2006-03-16 12:20:00) [2]Ну да, только Мелкософт (и я тоже :)) смещает не текстурные координаты, а сами вершины на -0.5. Из переведённого Clootie СD3DFont:
pVertices^ := InitFont2DVertex(D3DXVector4( x+0-0.5,y+h-0.5,0.9,1.0), dwColor, tx1, ty2); Inc(pVertices);
a22 (2006-03-13 19:49:00) [3]ceercop, простой клэмп и не избавит от рамки, я же писал в [32] - координаты текстурные смести к центру на полпикселя. не (0,0);(1,1) а (dx,dy);(1-dx,1-dy), где dx & dy - половина пикселя по оси Х & Y в текстурных координатах, моему гую такой финт помог
JUS (2006-03-10 01:13:00) [4]Хотел скачать, но slil.ru как всегда тормоз! 4:35 приказал качать 5мин стоит на 0%
WebFile.ru нормальный хостинг!
patriot[ru] (2006-03-09 17:49:00) [5]2Megabyte-ceercop
Немного оффтопа-Где-то давно скачивал первого киркопа,ну очень понравилось!Прям и красивая и модельки хорошие и вообще просто класс!
И мне вот интересно стало-её ещё нигде не издавали??Я так думаю,если уровней поболе сделать то её вообще с руками оторвут:)
Megabyte-ceercop (2006-02-22 07:50:00) [6]Сделал я все как написано в SDK, рамка не исчезла безследно, а только стала тоньше и прозрачнее раза в три. Полного и абсолютного очищения почему-то не получилось. Похоже что фильтрация неправильно CLAMP оьрабатывает, всеравно берет соседние пиксель с противоположной стороны текстуры. Может особенности видеокатры. : |
Megabyte-ceercop (2006-02-16 06:43:00) [7]Рамки не будет если снять фильтрацию текстур, но тогда будет негладко.
Если сдвинуть текстурные координаты, то будет потеря в поверхности.
Флажок - не все дрова имеют, и темболее не все пользователи полезут его искать.
Stmt->SetTextureStageState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
Stmt->SetTextureStageState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP);
Stmt->SetTextureStageState( 0, D3DSAMP_ADDRESSW, D3DTADDRESS_CLAMP);
Вот эти команды переключают текстуры в акой режим, при котором все координаты больше 1.0 и меньше 0.0 будут переадресовываться на 1.0 и 0.0 соответственно (те как бы упираться в край текстуры, а не обходить ее циклически).
Этот способ пра виль ный.
Sapersky cпасиба тебе : )
A22 (2006-02-16 01:23:00) [8]если речь о D3D, то указывая текстурные координаты важно знать, как они воспринимаются драйвером: как угол соотв. пикселя или как центр. Делая на D3D gui я избавлялся от рамки на спрайтах путем смещения текстурных координат на половину пикселя (0.5/sprite_width, 0.5/sprite_height)
подобный же финт можно проделать, если поставить флажок в настройках дров (в каталисте я такое видел и делал - помогало), но все же. имхо, лучше реализовать эту фичу руками
Megabyte-ceercop (2006-02-15 12:49:00) [9]Stmt->SetTextureStageState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
Stmt->SetTextureStageState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP);
Stmt->SetTextureStageState( 0, D3DSAMP_ADDRESSW, D3DTADDRESS_CLAMP);
: ) Вот так вечером попробую : )
Точно сработает.
Sapersky спасиба еще раз. Я ведь сидел думал края всех текстур очистить, или текстурные координаты сместить на один пиксель совсех сторон. Хорошо что не сделал этой глупости, так бы до истины и не докопался бы никогда.
А теперь без потерь обойдемся :)
Спа си ба.
Megabyte-ceercop (2006-02-15 11:51:00) [10]:)))) Sapersky Спасибо :) Пойду листать SDK. Чувствую сейчас моя головная боль пройдет наконецто :)
Sapersky (2006-02-13 12:57:00) [11]Пардон, это для DirectX7. Для 8-9 стейты могут немного по-другому называться (D3DRS_WRAP0 например).
Sapersky (2006-02-13 12:47:00) [12]Убрать зацикливание текстур:
SetTextureStageState( 0, D3DTSS_ADDRESS, D3DTADDRESS_CLAMP);
или D3DTADDRESS_BORDER.
Может быть стоит установить
SetRenderState(D3DRENDERSTATE_WRAP0, 0);
если перед этим устанавливается не 0.
А вообще см. SDK по теме Texture Adressing Modes / Texture Wrapping
Megabyte-ceercop (2006-02-13 06:12:00) [13]^_^
Настройки и пароль еще не делал совсем. Нажатия на этих кнопках равносильны нажатию по кнопке "выход".
С громкостью незамечал. Посмотрю обязательно что там.
Значек над пуском :) Он и в первом киркопе вылазит всевремя. Незнаю откуда он. Думал стандартная фишка ДирекИкса.
А с управлением там ничего сложного и нет. Пока только стрелки : )
Дрожь бывает когда экран смещается к краю мира. Замечал такое. Тоже разберусь вечером.
Раамки :| Да. Самая большая беда. :| Когда на текстуре с одного бока изображение касается самого края - на противоположном, за счет фильтрации появляется тонкая полоска. Текстуры то циклически закольцованы в Д3Д. :| Может кто знает способ избавиться от этой цикличности текстур. Нехочется терять полоу в один пиксель вокруг на каждой текстуре.
Кнопка "1" Это я просто проверял когда-то работу скрипта на создание новых объектов. Так еще и не удалил : )
Darthman (2006-02-11 23:29:00) [14]Иногда экран дрожит (почему так и не понял) двигаясь то на пиксель вверх, то на пиксель вниз.
Вокруг персонажа иногда возникают куски рамки (плохо вычещены спрайты?)
При нажатии на нампеде кнопки "1" разлетается в разные стороны какая-то розовая дрянь.
Darthman (2006-02-11 23:25:00) [15]После нажатия на НАЧАТЬ ИГРУ музыка начала играться раза в два громче.
При свернутой игре почему-то над кнопкой ПУСК у меня появился фиолетовый человечек и висит там во всех приложениях :)
ЗЫ: про управление в игре вообще ничего непонятно.
Darthman (2006-02-11 23:21:00) [16]Из замеченного сразу.
На первой анимации с рукой почему-то тень от цепи болтается (так задумано)?
При нажатии НАСТРОЙКИ просто вываливается молча
Megabyte-ceercop (2006-02-09 12:18:00) [17]Чуть не забыл, для запуска необходима звуковуха и DX9.
Без этого не запустится.
Megabyte-CeerCop (2006-02-09 11:05:00) [18]Привет всем : )
Тут возился с одной продлемой. Разобрасля вот позавчера.
Дело в том, что если я открывал в приложении UDPClient с портом N, чтобы проверить нет ли в сетке запущеных серваков игры, а потом менял порт на N2 чтобы стать серваком самому - UDPсlient продолжал с N работать а на N2 никак не переключался.
Вылечил такой строкой перед присваиванием нового номера порта:
UDPClient->Bindings->clear();
Вот : )
А вот и альфа 18 Метров. Теперь кнопка КЛИЕНТ доступна только если в локальной сети есть сервер.
Можно запустить сервер и клиент на одной машине, но запускайте второй экземпляр игры только после того, как на первом Сервер уже запущен, а то они вместе начнут искать серваки и воспользуются одним и темже портом, а на одной машине это вызовет ошибку (потом обработаю).
http://slil.ru/22551582
Ну, буду рад если кто посмотрит.
VAMPiRE (2006-01-21 00:41:00) [19]megabyte-ceercop, почему-же, выкладывай альфу на slil.ru или на rapidshare.de будет рады потестить ;)
megabyte-ceercop (2006-01-18 13:52:00) [20]Привет всем :)
Вот наконец-то с сеткой разобрался, с нуля начал писать скрипт главного героя. Скидал Альфу.
1 сетевой уровень (без геймплея :) Просто бегаешь вдвоем с кем-нибудь соберешь все ключи и в дверь. Киркопы цепляются за края скал руками, немножко прыгают. Толкаются. Громко стукаются головами о пол и стены. Могут мертвую петлю с разбега навернуть в пещере со скруглеными углами и потолком.
Сетевая игра только по локалке. Сперва запускаете игру и жмете кнопку "Сетевая сервер", потом на другом компе запускаете второй экземпляр и жмете "Сетевая клиент". Играете:)
Если нет второго компа, можно суграть с одного, используя одну клаву на двоих. Такой режим на серваке доступен, до тех пор пока клиент не подключится.
Управление:
1Player - Стрелки
2Player - ASDW (как в контре :) )
Альфа на 17 мегов получилась :) Многовато. Незнаю куда кинуть и есть ли смысл ваще. :)
В одиночном режиме два уровня абсолютно лишенные геимплея. Просто демонстрация разных погодных условий :)
Но вот вроде все : )
Вот тут еще скрины. Пока саму дему не выкладываю, незнаю будет ли кто качать?
http://i4.photobucket.com/albums/y122/Megabyte_CeerCop/CeerCopII-7.jpg
http://i4.photobucket.com/albums/y122/Megabyte_CeerCop/CeerCopII-6.jpg
http://i4.photobucket.com/albums/y122/Megabyte_CeerCop/CeerCopII-5.jpg
http://i4.photobucket.com/albums/y122/Megabyte_CeerCop/CeerCopII-4.jpg
http://i4.photobucket.com/albums/y122/Megabyte_CeerCop/CeerCopII-3.jpg
http://i4.photobucket.com/albums/y122/Megabyte_CeerCop/CeerCopII-2.jpg
http://i4.photobucket.com/albums/y122/Megabyte_CeerCop/CeerCopII-1.jpg
Вот.