07:25
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 1
  • 1
Модератор форума: Dima-kun  
Форум SAMP о мультиплеерах для GTA. »   » Wiki-Samp-Rus » Пишем свой мультиплеер для игр серии GTA. Часть первая.
Пишем свой мультиплеер для игр серии GTA. Часть первая.
adamixДата: Пятница, 27.05.2011, 08:32 | Сообщение # 1
Постоялец
Группа: Продвинутые
Сообщений: 376
Награды: 14
Город: Ульяновск
Репутация: 884
Замечания: 0%
Статус:
Я долго думал прежде чем начать писать подобное руководство. Начать я решил с азов мультиплееро-строения. В первой статье я расскажу о том как пишут мультиплееры и что для этого нужно.

Что нам понадобится:

  • Знания С++ на уровне выше новичка.
  • Знание ассемблера.
  • Умение работать с декомпилятором.
  • Умение разбирать чужой код.
  • Начальные навыки работы со структурой игр серии GTA.
  • Microsoft Visual Studio 9.0.
  • DXSDK.


Как работают мультиплееры
Мы инжектим в память игры свой процесс. Обычно - это просто DLL с нужным нам кодом.
Для отображения чата мы используем DirectX Hook. Это необходимо для управления рендером.
Так как в GTA 3/VC/SA возможно создать всего одного игрока, для переключения между остальными мы используем Context Switching(его придумал kyeman, кстати).
Для GTA 3/VC/SA мы используем Script Executor. Это несколько небольших функций, которые позволяют использовать опкоды SCM из С++ кода. Это нужно для быстрого создания простеньких функций. В идеале все должно быть написано с мемхаком.
Получать информацию из процесса мы будем мемхаком(а можно как то по другому?).

Как работает синхронизация
Допустим, у нас есть игроки А и Б. Игрок А передвинулся на 2 метра вперед. В то время как он начал движение(зажал кнопку) - мы получаем информацию о нажатых кнопках, текущей позиции и ускорения. Мы передаем их на сервер. Сервер же, рассылает эти данные остальным игрокам. В итоге мы видим что игрок А начал движение у игрока Б. Транспорт: здесь все немного по другому. У транспорта есть так называемый Синхронизатор. Это водитель транспорта. Впрочем, все остальное точно так же как и с обычным игроком. Водитель передает данные на сервер, а сервер рассылает их клиентам.
Синхронизация транспорта без водителей работает так же, только разница лишь в том, что синхронизатором выступает обычно случайный игрок который находится рядом с транспортом.
Когда мы синхронизируем оружие, мы должны получить векторы камеры и передать их остальным игрокам.

Как работает встроенный стример
У RenderWare довольно таки жесткие лимиты. Но в данном случае стример работает точно так же, как и заскриптованные стримеры в павне. Правда не на уровне сервера, а на уровне клиента.

Как у нас будет работать сеть
Я не буду оригинальничать и буду использовать RakNet в данных статьях, так как он дает хороший функционал при этом оставаясь простым.
Для всех функций мы будем использовать RPC4.
Для всех данных(игроки, транспорт, акторы, чекпоинты, прочее) мы будем использовать менеджеры. В коде это может выглядеть так:
Code
g_pVehicleManager->Add(174, CVector3(10.0f, 10.0f, 10.0f));

В итоге в этот менеджер мы добавим новый транспорт с идом модели 174 и нужными координатами спавна.

А будет ли скриптинг?
Пока для меня это сложный вопрос. Изначально я не собирался в данных статьях рассказывать о скриптинге. Но может быть я еще передумаю.

Пока всё. Задавайте свои вопросы, я постараюсь на них ответить.



Тысячи игроков SA-MP, как миллионы мух, конечно же не могут ошибаться.

Законы математики, имеющие какое-либо отношение к реальному миру, ненадежны; а надежные математические законы не имеют отношения к реальному миру. © Альберт Эйнштейн.
InterpolДата: Пятница, 27.05.2011, 08:56 | Сообщение # 2
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 5358
Награды: 77
Город: НеБаку
Репутация: 3795
Замечания: 20%
Статус:
adamix, отлично, может теперь будут мп для модификаций са)


adamixДата: Пятница, 27.05.2011, 09:02 | Сообщение # 3
Постоялец
Группа: Продвинутые
Сообщений: 376
Награды: 14
Город: Ульяновск
Репутация: 884
Замечания: 0%
Статус:
Quote (Interpol)
отлично, может теперь будут мп для модификаций са)

Я уверен, что 95% форума даже не поймут о чем я написал.



Тысячи игроков SA-MP, как миллионы мух, конечно же не могут ошибаться.

Законы математики, имеющие какое-либо отношение к реальному миру, ненадежны; а надежные математические законы не имеют отношения к реальному миру. © Альберт Эйнштейн.
PaNyAДата: Пятница, 27.05.2011, 09:35 | Сообщение # 4
Группа: I'm V.I.P.
Сообщений: 273
Награды: 11
Город: SPB,Волхов
Репутация: 230
Замечания: 100%
Статус:
Отличная статья,спасибо





Valkyrie Roleplay v.3.2 63% readiness.In it of 62.500 lines.Working out is suspended for uncertain time.
P.S. Если помог,не скупись дай + ;)

Мои работы:
[FS] Простой спидометр

uDenXДата: Пятница, 27.05.2011, 10:32 | Сообщение # 5
Группа: Media-ProGroup
Сообщений: 1193
Награды: 23
Город: Салават
Репутация: 1301
Замечания: 0%
Статус:
Очень интересно жду новых статей new_russian


s3apДата: Пятница, 27.05.2011, 11:40 | Сообщение # 6
Местный
Группа: Продвинутые
Сообщений: 570
Награды: 7
Город: Саратов
Репутация: 382
Замечания: 80%
Статус:
Quote (Ghost-X)
У RenderWare довольно таки жесткие лимиты. Но в данном случае стример работает точно так же, как и заскриптованные стримеры в павне. Правда не на уровне сервера, а на уровне клиента.

Они были переделаны с исходников са-мпа же

VantageДата: Суббота, 28.05.2011, 20:02 | Сообщение # 7
Уважаемый человек
Группа: Пользователи
Сообщений: 974
Награды: 8
Город: -=Los Santos The Best=-
Репутация: 467
Замечания: 80%
Статус:
Конечно не все возьмутся писать свои мп да этого и не нужно наверное) но почитать как все это работает интересно, спасибо


..



Мои работы:
[GM]Ls:Rus TDM v1.0 | [GM]Ls:Rus TDM v1.2 | [GM]Ls:Rus TDM v1.3(1%)[blink]|[/blink]
[FS]Rampa

Winner_Дата: Воскресенье, 12.08.2012, 16:23 | Сообщение # 8
Новенький
Группа: Пользователи
Сообщений: 2
Награды: 0
Город: Сергиев Посад
Репутация: 0
Замечания: 0%
Статус:
Вместо RakNet можно спокойно использовать WinSock / WinSock2


Developer
Форум SAMP о мультиплеерах для GTA. »   » Wiki-Samp-Rus » Пишем свой мультиплеер для игр серии GTA. Часть первая.
  • Страница 1 из 1
  • 1
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua