Как создать игру гта сан андреас на компьютер

Обновлено: 06.07.2024

Есть другой выход - попытаться убить дурные мысли ударом головой об стену. А когда мысли встанут на место, попробовать осмыслить всё, сформулировать свои вопросы и предложения, чтобы получить нужный ответ. Умный найдёт ответ со своего вопроса. А ты этот ответ найти не можешь только потому, что твой вопрос ни в какие рамки не вкладывается.

Адекватно этот вопрос выглядел бы, например, так:

Подскажите, пожалуйста, 3D-движок для создания игры типа популярной GTA SA.

Я знаю: C++, поэтому лучше движок на этом языке, либо на Си-подобном скрипте. Но пойдёт и другой, если движок хороший – выучу.

Движок нужен бесплатный, либо дешевый (в рамках 200$), чтобы лицензия предоставлялась с возможностью изменять открытый код. Чтобы визуализация была на уровне 2007 года, чтобы физика была хорошая.

Сама игра, как я понимаю, подходит под жанр 3D Action RPG с множеством индивидуальных особенностей типа вождения всевозможной техники.

Есть другой выход - попытаться убить дурные мысли ударом головой об стену.
самый лучший способ избавится от навящевой идеи изобрести велосипед

чтоб создать крутую игру просто необходимо программировать
Подскажите, пожалуйста, 3D-движок для создания игры типа популярной GTA SA.

Я знаю: C++, поэтому лучше движок на этом языке, либо на Си-подобном скрипте. Но пойдёт и другой, если движок хороший – выучу.

Движок нужен бесплатный, либо дешевый (в рамках 200$), чтобы лицензия предоставлялась с возможностью изменять открытый код. Чтобы визуализация была на уровне 2007 года, чтобы физика была хорошая.

Сама игра, как я понимаю, подходит под жанр 3D Action RPG с множеством индивидуальных особенностей типа вождения всевозможной техники.

Значит, мне нужен какой-то движок, который не заточен под жанр, на котором можно писать сложные игры?

Довольно простой вопрос, в принципе по медиа контенту это нужно кого-то привлечь либо вытащить модели,звуки и вероятно также уровни из других игр. По программингу либо брать чужой двиг, либо писать свой, если же двиг чужой то тут уже все зависит от того есть ли в данном двиге все необходимое, обычно все равно нужно уметь программить чтобы иметь возможность сделать специфичные вещи, например определенные виды оружия, поскольку если двиг чисто графический то там может быть не имплементировано (хз как это слово по-русски будет) многое что нужно. То есть например в Огре нет collision detection ето придется делать самому, либо в других двигах такая система может иметься, но могут не все примитивы поддерживаться. В основном надо знать API винды это в принципе чтобы читать/писать файлы, создать окно, отследить системные события, забиндить клавиатуру, мышь и joystick, настроить железо и т.д. плюс API либо openGL либо DirectX. Также нужен математический блок, хотя обычно в двигах уже есть, но опять же вопрос в том все ли там что надо имеется.

So it completely depends on many things around. You never know how it will be.

Любому игростроевцу, который захочет сделать мод для San Andreas, придется продираться через густые скриптовые заросли. Ведь с помощью скриптов можно изменить практически любую игровую составляющую. Хотите добавить в SA безбашенную мини-игру? Не вопрос. Желаете сделать собственный ролик на игровом движке или новую миссию? Тоже не проблема. Главное, научиться разбираться в принципах скриптописания.

Теорию и общие вопросы мы регулярно разбираем в “Самопале” (смотрите цикл статей “ Игровое программирование ”), на страницах же “Мастерской” займемся целенаправленным изучением скриптового языка конкретно GTA: SA.

Сегодня мы разберемся с основами языка программирования игры и научимся создавать несложные модификации. Самая популярная и распространенная программа для скриптинга под San Andreas — SAMB . Возможности этого редактора безграничны. Впрочем, нет, есть одно серьезное ограничение — ваша фантазия. Но тут мы вам, увы, не помощники. Зато разобраться в редакторе поможем легко. Забирайте SAMB с нашего диска и внемлите.

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

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

Большую часть редактора занимает текстовое окно (пока оно серое), где мы и будем создавать что-то новое или редактировать уже существующее. Над этим окном располагается очень удобная панель инструментов . Откройте файл main.scm , располагающийся в подпапке игры: Data/Script — для этого в панели инструментов щелкните на значок папки со стрелочкой или зайдите в пункт меню File/Open . Перед вами появится подобие проводника Windows.

В правом окне вы должны указать путь к файлу main.scm. Например: C:\Games\GtaSan\data\script . После этого напротив поля File type выберите SCM-файлы . В результате в левом окне появится файл main.scm.

Щелкните по нему один раз и нажмите OK . Перед вами появится еще одно меню, в котором необходимо указать путь хранения файла (можно выбрать любой путь). Когда вы определитесь с местом хранения scm-файла, смело нажмите кнопку OK еще раз. Подождите несколько минут, пока программа переведет машинный код в читабельный язык программирования игры.

Ознакомимся с синтаксисом редактора. Если не соблюдать элементарные правила написания скриптов, то программа будет выдавать массу ошибок. Она просто не поймет, что вы хотите ей сказать.

Все миссии в GTA: SA представляют собой массу связанных между собой команд. Любая строка с необходимой командой, в свою очередь, состоит из трех частей, например 0417: start_mission $test .

Не горим и в воде не тонем!

Разберем эту строчку более подробно:

0417: — это код команды;

start_mission — сама команда, игнорируется редактором;

$test — переменная или число (числа).

Еще один пример: 03D8: show save screen . ( 03D8: — код команды; show save screen — команда).

Совсем не обязательно запоминать коды всех команд. В редактор встроена подсказка. Например, если вы напишите ключевое слово boat (лодка) и нажмете клавишу F1 , программа автоматически подберет нужную команду:

02D3: boat $A88 drive to 171.0578 942.3843 6.0

Нажав клавишу F1 еще несколько раз, редактор будет подбирать коды команд с интересующим вас словом до тех пор, пока не закончатся все варианты. На слово boat будет выведено следующее:

02D3: boat $A88 drive to 171.0578 942.3843 6.0

02DB: set boat $A88 speed to 10.0

02D3: boat $A88 drive to 171.0578 942.3843 6.0

043a: start boat foam animation ;; never used in VC

043b: update boat $cutsceneanim foam animation ;; never used in SA

02D3: boat $A88 drive to 171.0578 942.3843 6.0

Чтобы посмотреть ключевые слова, как, например, в случае с лодкой, откройте документ Keywords , поставляющийся вместе с редактором.

Мы плавно подошли к самому ответственному моменту: созданию собственных модификаций. Для начала разберемся, из чего состоит файл любой миссий в San Andreas.

Файл main.scm состоит из четырех частей.

1 часть. Ставит размер памяти для скриптов — нужно только для редактора.

2 часть. Список используемых объектов в игре и скриптах.

3 часть. Указатели на миссии и внутриигровые блоки.

4 часть. Собственно код миссий, мини-игр, путей самолетов/вертолетов.

Пока нас не будут интересовать первые два блока — они не нужны, если вы не собираетесь создавать мегасложную миссию или совершенно новую игру.

Чтобы создать новую модификацию, нужно знать, как и с чего начать и чем закончить проект. Щелкните по “биноклю” в панели инструментов, в меню поиска введите 004F: create_thread ЈЈ и нажмите кнопку Find . Вы увидите список неизвестных пока вам команд. Давайте разберем на примере, как пишется мод.

004F: create_thread ЈЈIgromod1

004F: — это, как мы говорили чуть выше, код команды.

create_thread ЈЈ — это сама команда, отвечающая за создание потока, программы, ответственной за выполнение какого-либо действия, изменять команду нельзя!

Igromod1 — название нашего мода в файле main.scm.

Cj - настоящий медик. Хирург или патологоанатом.

Найдите то место, где заканчивается последняя команда, начинающаяся c 004F, и ниже вставьте свою строчку: 004F: create_thread ЈЈIgromod1; .

Обратите внимание, что символ ЈЈ необходимо копировать только из других команд: то, что вы напишете сами, программа не примет и выдаст ошибку при компиляции!

Далее в меню поиска (для быстрого вызова нажмите клавишу CTRL+F ) введите слово orig и снова нажмите кнопку Find . Над строчкой:

вы будете размещать все свои модификации, мини-игры, но не миссии — насчет этого будет отдельный разговор.

Любой блок, подпрограмма или мод начинается со строки Igromod1 . Она играет роль идентификатора названия, которое вы писали выше. Название Igromod1 должно соответствовать названию Igromod1 в строке 004F: create_thread ЈЈIgromod1; .

Если названия не совпадут, то при компиляции — переводе языка программирования в машинный код игры — редактор снова выдаст ошибку, что блок не найден.

Ниже нужно написать строку с задержкой на определенное время, чтобы игра не зависла: 0001: wait 0 ms .

В моем случае задержка составила 0 мс, но если, например, вам нужно, чтобы какое-то действие выполнялось не сразу, то задержку можно увеличить.

Дальше начинается чистой воды эксперимент: Например, вы можете установить у игрока бесконечный бег:

0330: set player $PLAYER_CHAR infinite run to 1 (true)

Или сделать его (игрока, конечно) пожароустойчивым:

055D: make player $PLAYER_CHAR fireproof 1

А ведь можно и перекрашиваться совершенно бесплатно:

0335: set free paynspray to 1 (true)

Дадим игроку побольше денег — с ними в SA всегда были проблемы:

0109: player $PLAYER_CHAR money += 9000000

Вам мало брони и жизней — увеличим их стартовый набор на 100 единиц, мало не покажется:

035F: set_actor $PLAYER_ACTOR armour_to 100

055E: set_player $PLAYER_CHAR max_health += 100

Зачем ждать, пока нам в игре любезно предоставят реактивный ранец, создадим его около нашего дома ( gRoove Famile Streets ) сами!

032B: $jet = create_weapon_pickup 370 15 ammo 1 at 2488.562 -1666.864 12.8757

То, что вы должны увидеть при успешной декомпиляции скрипта.

Загадочные цифры 2488.562 -1666.864 12.8757 представляют собой координаты, по которым будет создан jetpack. О координатах и других непонятных цифрах в этой команде речь пойдет во второй статье цикла.

Думаю, быстрая перезарядка ствола придется всем по вкусу:

0331: unknown_player $PLAYER_CHAR set_fast_reload 1

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

087B: set_player $PLAYER_CHAR clothes "VEST" "VEST" 17

070D: $PLAYER_CHAR

Первая задает игроку определенную одежду, а вторая “обновляет” модельку персонажа.

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

0629: change_stat 181 (islands unlocked) to 4

И напоследок повысим скиллы персонажа до максимума:

062A: change_stat 165 (energy) to 999.0 ; float

062A: change_stat 23 (muscle) to 999.0 ; float

062A: change_stat 21 (fat) to 0.0 ; float

062A: change_stat 163 (health upgrade) to 999.0 ; float

062A: change_stat 160 (driving skill) to 999.0 ; float

062A: change_stat 229 (bike skill) to 999.0 ; float

062A: change_stat 223 (pilot skill) to 999.0 ; float

062A: change_stat 230 (cycling skill) to 999.0 ; float

Знаний для создания первого несложного мода вам уже хватит. Но чтобы модификация заработала, нужно еще написать команду, которая завершит работу после создания всех бонусных вещей. Выглядит она так: 004E: end thread .

Вид на наше творение из игры.

Если вы решили создать мод, содержащий все модификации, описанные в статье, то в итоге у вас должно получиться следующее:

0330: set player $PLAYER_CHAR infinite run to 1 (true)

055D: make player $PLAYER_CHAR fireproof 1

0335: set free paynspray to 1 (true)

032B: $jet = create_weapon_pickup 370 15 ammo 1 at 2488.562 -1666.864 12.8757

0109: player $PLAYER_CHAR money += 9000000

035F: set_actor $PLAYER_ACTOR armour_to 100

055E: set_player $PLAYER_CHAR max_health += 100

0629: change_stat 181 (islands unlocked) to 4

062A: change_stat 165 (energy) to 999.0 ; float

062A: change_stat 23 (muscle) to 999.0 ; float

062A: change_stat 21 (fat) to 0.0 ; float

062A: change_stat 163 (health upgrade) to 999.0 ; float

062A: change_stat 160 (driving skill) to 999.0 ; float

062A: change_stat 229 (bike skill) to 999.0 ; float

062A: change_stat 223 (pilot skill) to 999.0 ; float

062A: change_stat 230 (cycling skill) to 999.0 ; float

087B: set_player $PLAYER_CHAR clothes "countrytr" "countrytr" 17

004E: end thread

Последние штрихи — нажмите клавишу F7 , редактор скомпилирует файл в формат, привычный для игры. Скопируйте его из папки, в которой хранится main.scm (путь для хранения файла main.txt и будущего main.scm вы указывали во второй менюшке, появляющейся при открытии файла main.scm из директории Data/Script установленной игры) в папку Data/Script игры. После чего запускайте San Andreas — и можете играть в модификацию.

Мы изучили основы скриптового языка GTA: SA. Научились работать с редактором SAMB. Даже с этим базовым уровнем знаний вы уже можете экспериментировать, используя данные текстового файла Keywords.

Мы прощаемся с вами до следующей статьи (будет опубликована в одном из ближайших выпусков “Мастерской”), в которой наши модостроительные интересы значительно расширятся — мы научимся манипулировать персонажами и транспортными средствами, создавать свои видеоролики, познакомимся с понятием цикличности и освоим еще множество интереснейших возможностей.

Возможно ли в здравом уме замахнуться на подобный проект в одного, и надо ли оно вообще? Спойлер: да (длинный пост с картинками и видео).




Предыстория

Разработкой программных продуктов я занимаюсь уже 6 лет, начинал с разработки приложений для iOS. После выпуска нескольких приложений, которые в общей сумме принесли около $500, решил попробовать себя в разработке сайтов и настройке рекламы. В этой сфере я проработал 3 года, и понял, что создавать сайты — не то, чем мне хотелось бы заниматься в жизни.

Так как с детства я очень любил игры, решил рассмотреть геймдев как будущую нишу, где хотел бы себя попробовать. Сделал бесплатную игру на SpriteKit (фреймворк Apple для создания 2D игр), начал знакомиться с инструментами для разработки игр. Решил подробно изучать Unity, так как он мне показался оптимальным вариантом для разработки именно мобильных игр. Выпустил в AppStore и в Google Play простенькую игру на Unity, и естественно поиграли в нее условно 3 с половиной человека. Это меня не особо остановило, так как цель разработки этой игры была в основном в том, чтобы познакомиться с процессом разработки в Unity и запуском игры именно в Google Play. Эти цели были выполнены, можно было двигаться дальше. Я начал уже более тщательно изучать Unity: 3-4 часа в день стабильно проходил Advanced курсы по разработке. Думаю, что мне повезло — попался действительно подробный и толковый курс по созданию RPG в Unity, и многое, особенно различные best-practices, я узнал именно из него.

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

В общем, после ухода с работы, пришло понимание, что хочу попробовать создать действительно интересную и уникальную игру (наверное термин “уникальная игра” не совсем вяжется с концепцией игры-аналога GTA Online, но об этом дальше). С детства я обожал серию GTA — играл десятками часов напролет в GTA Vice City и GTA San Andreas, ставил моды, крутил параметры машин. Потом после выхода GTA IV все то же самое делал с ней. Потом GTA IV: Episodes from Liberty City, GTA V. И естественно GTA Liberty City Stories, GTA Vice City Stories, GTA Chinatown Wars для PSP. Также было потрачено куча часов в других подобных играх — Saints Row, Godfather 2 и т. д. Эх, хорошие были времена…

Так вот, потом я познакомился уже с различными Role Play проектами, основанными на GTA. Но знакомство с ними, к сожалению, уже происходило через YouTube, так как работа стала занимать практически все время, а найти 30 минут в день на ролик — не проблема. Считаю, что RP проекты создали очень интересную нишу, и вообще переосмыслили GTA.

RP проекты создали очень интересную нишу, и вообще переосмыслили GTA

Как я уже сказал выше, свободного времени становилось все меньше, и я захотел поиграть во что-то по типу GTA Online / GTA RP на телефоне — благо сегодня телефоны действительно мощные, и по идее что-то подобное можно реализовать (например тот же PUBG, который отлично работает на практических любых устройствах). Каково было мое удивление, когда в AppStore я нашел буквально 3 игры, которые хоть как-то можно было отнести к “аналогам GTA Online”, да и те — ужасные. Вот так и появилась идея создать первый аналог GTA Online для устройств на базе iOS и Android.

ALT: City Online


Геймплей в ALT: City Online — это смесь классической GTA Online и ее Role Play модификаций. В самом начале игры ты появляешься в стартовой точке (предполагается, что это будет либо вокзал, либо аэропорт). Твоя задача — найти работу и начать зарабатывать деньги и опыт. По мере получения опыта, тебе будут открываться новые профессии. Список профессий будет широкий, и я сейчас работаю над тем, чтобы сделать геймплей каждой профессии максимально интересным насколько это возможно. Далее ты сможешь купить себе квартиру, мотоцикл, потом дом, машину, машину получше — в общем все, кто играли в GTA RP, знакомы с этим. Фишка игры заключается в том, что в сессии, в отличии от классической GTA Online, будут сотни человек, ты сможешь взаимодействовать со всеми — разговаривать, наносить урон, кооперировать, обмениваться вещами, продавать вещи.


В игре будет возможность покупать оружие, менять его скины. Также в игре будет доступен тюнинг транспортных средств.

Но главное отличие от RP проектов — в ALT: City Online нет классической для таких проектов консоли, нет администраторов, не нужно “отыгрывать РП”. Ты можешь, но не обязан.

Площадь карты в игре около 225 квадратных километров, но примерно треть площади покрыто водой, так что “эффективная” площадь равна примерно 150-160 квадратным километрам. Естественно, наполнить такой большой мир контентом в одиночку достаточно сложно, поэтому игра будет наполняться контентом в последующих обновлениях.



Важно то, что игра будет работать не только на последних топовых девайсах. Например, если говорить об iOS, то минимально поддерживаемое устройство — iPhone 7. Вообще, основным “боттлнеком” оптимизации игры стала непрозрачность потребления памяти на iOS платформе (это известный недостаток Unity, с которым на данный момент мало что можно сделать), из-за чего было достаточно сложно оптимизировать огромный открытый мир для работы на маленьком устройстве с 2 гб оперативной памяти.

Какие вопросы предстояло решить

В первую очередь надо было вообще понять, возможно ли реализовать мобильную онлайн игру в большом открытом мире на Unity? Соответственно, был куплен простенький генератор города для Unity, контроллер персонажа, скачаны бесплатные модели оружия и автомобиля и кое-как настроен клиент сервер (вопрос реализации мультиплеера решался достаточно долго, так как официального решения от Unity нет, а фреймворков много, и они очень отличаются, расскажу о сетевой архитектуре подробнее в одной из будущих технических статей). Спустя две недели был готов достаточно играбельный прототип. То есть был запущен тестовый сервер игры на виртуальном сервере, установлены клиенты на телефоны друзей. Мы подключились, поиграли — все отлично работает для прототипа, все довольны. Провел стресс тест, получилось, что минимум 100 игроков сервер точно держит. Для игры это достаточный минимум, но вообще, цель — 600-1000 игроков на сервере (то есть столько игроков будет одновременно в сессии). В общем, пришло понимание, что Unity очень даже подходит под этот проект.

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

Далее нужно было понять, как быть с 3D моделями? А их нужно было действительно много — здания, автомобили, различные пропсы, одежда, оружие. И самое главное — как смоделировать сам мир: ландшафт (террейн), дорожную сеть, город? Написал подробный список всех нужных объектов. Потратил неделю на поиск нужных моделей по списку, и понял, что в принципе все что нужно есть в магазинах 3D моделей.

Сделаю отступление — надо понимать, что я занимаюсь проектом с декабря на фул-тайме (по 10-12 часов в день, без выходных), а практически все средства, отложенные за прошлые годы, я тратил на покупку различных инструментов и 3D моделей. Думаю, это снимет многие вопросы по поводу того, почему на некоторые этапы потрачено “мало” времени.

Все, что я написал выше, произошло в период с декабря прошлого года до февраля текущего. Начал работу над проектом в декабре, то есть за три месяца был протестирован прототип, написан диздок, найдены ресурсы для реализации идеи. Вопрос оставался за малым — все это сделать и собрать в кучу.

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

Текущее состояние проекта

На данный момент я работаю над игрой уже девятый месяц. Проект готов к альфа релизу на 85%. Уже сейчас полностью смоделирована карта, настроена работа открытого мира на телефонах, проведена работа над рендерингом (LODы, различные настройки графики, оптимизация текстур, динамический батчинг и т.д.), настроена архитектура клиент-сервера, оптимизировано потребление памяти.

Для альфа релиза осталось доработать базовые механики, добавить работы, добавить контент (автомобили, одежду), добавить UI и все это хорошенько протестировать.

Скриншоты





Заключение

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

Огромная просьба ко всем, кого заинтересовал проект: скоро мы начинаем открытые альфа тесты в онлайне на Android и iOS, поэтому вступайте в группу ВКонтакте, чтобы узнать, когда начнется альфа тестирование. Тем самым вы очень поможете развитию проекта. Всем тестировщикам естественно полагаются жирные игровые призы сразу после релиза проекта.

На сайте ALT: City Online вы также можете оставить свой email. На него придет оповещение, когда игра будет доступна для загрузки. Всем, кто оставил свой email на сайте, так же положен жирный бонус при запуске игры!

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

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

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

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

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

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

Читайте также: