Эксклюзив Simple Lua Multiplayer - разработка

_razor

t.me/sssecretway | ТГК: t.me/razor_code
Автор темы
Всефорумный модератор
1,948
3,211
logo (3).png


Developers: @Pakulichev & @S E V E N
Thanks to guys: @imring, @FYP, @Akionka


История создания модификации
24 августа 2020 года нам в голову пришла идея создания своего мультиплеера на базе MoonLoader. Предпосылкой к этому было обсуждение принципа работы сокетов и в целом библиотеки LuaSocket для Lua. Изначально мультиплеер планировался как небольшой эксперимент и работать он должен был исключительно на основе SA:MP. С ходом разработки мы полностью отказались от этой зависимости и мультиплеер стал независимым и спокойно работал на чистой сборке GTA: San Andreas с одним лишь MoonLoader. Также был разработан сервер, который в свою очередь работал при помощи собранного под Windows, либо Linux luajit'a. Обмен данными производился при помощи протокола UDP (User Datagram Protocol): сначала передавалась сжатая JSON-таблица, после начали передавать Lua-таблицу, значения которой делились при помощи делителя, ну а в последствии перешли на SL:NET - систему, работающую на своеобразном BitStream'e, кодировщик для которого был написан с помощью @Akionka. Все эти улучшения сыграли свою роль в развитии.

Функционал мультиплеера
На данный момент мультиплеер обладает большим количеством возможностей, а его исходный код наполнен множеством примеров того, как можно патчить определенные функции GTA: San Andreas при помощи встроенной библиотеки memory и Lua FFI. Некоторые тестеры мультиплеера уже успели написать свои гейммоды, которые могли бы претендовать на стандарт того, как рекомендуется писать моды.

  • Реализована OnFoot синхронизация игроков: игроки видят друг друга на карте, находясь в определенной области - так называемой зоне стрима, эта область ограничена конфигурацией сервера. Все данные обновляются динамично, в ходе тестирования одной из старых версий мы установили, что сервер спокойно выдерживает до 10 человек онлайна, находящихся очень рядом друг с другом.
  • Реализована InCar синхронизация игроков: игроки могут садится в транспорт, как на водительское место, так и на пассажирское, а остальные игроки видят как те перемещаются в автомобиле. На автомобили, кстати, также работает область прорисовки (стрима).
  • Диалоговые окна разных видов: информационные, для ввода информации и с возможным листингом; возможность размещения пикапов на территории карты, в том числе внутри интерьеров; смена виртуальных миров для игроков, интерьеры и многое другое.
Функционал мультиплеера постоянно расширяется и совершенствуется, это можно наблюдать в нашем репозитории GitHub.

Инструкция по установке клиента мультиплеера
Чтобы установить клиент нашего мультиплеера, следуйте следующим инструкциям:

  1. Зайдите в репозиторий GitHub, ссылка на который расположена выше, зайдите в раздел релизов, скачайте последнюю версию.
  2. Установите чистую GTA: San Andreas версии 1.0 US, поверх игры установите последнюю версию MoonLoader.
  3. Перенесите все файлы из загруженного из релизов GitHub архива в директорию с вашей игрой.
  4. Запустите игру при помощи стандартного файла для запуска игры, ожидайте загрузки игры, готово.
Инструкция по установке сервера мультиплеера
Чтобы установить сервер нашего мультиплеера, следуйте следующим инструкциям:

  1. Зайдите в репозиторий GitHub, ссылка на который расположена выше, зайдите в раздел релизов, скачайте последнюю версию.
  2. Создайте директорию на вашем жестком диске в любом удобном месте, распакуйте файлы из архива в эту директорию.
  3. Откройте файл server.cfg, внесите необходимые изменения в настройки сервера, сохраните его.
  4. Убедитесь, что у вас открыт и фильтруется необходимый UDP порт, указанный в конфигурации сервера.
  5. Запустите сервер при помощи файла start.bat, либо start.sh в зависимости от используемой системы.
Если вы хотите поддержать нашу разработку, вы можете оставить реакцию на этой теме, дабы продвигать её на BlastHack, а также поставить звезду в нашем репозитории GitHub, тем самым максимально поддержав наш проект. Также вы можете стать тестером проекта, а возможно и пополнить список тех людей, которые активно помогают в разработке этой модификации. Мы ищем энтузиастов, которые имеют опыт в разработке модульных систем с возможностью дальнейшей интеграции в готовый продукт.

Последние версии модификации на GitHub Releases:
посмотреть релизы
Топик на английском языке на GTAForums: посмотреть
Группа ВКонтакте с новостями и прочим материалом:
посмотреть
 

Вложения

  • SLMP github.png
    SLMP github.png
    20.4 KB · Просмотры: 5,298
Последнее редактирование:

Rei

Известный
Друг
1,611
1,668
прикольно, но как так получилось, что даже по прямой персонаж лагает как черт?
 
  • Нравится
Реакции: Vintik

Dark.

Известный
1,745
778
разрабатывать собственный мультиплеер на С++
Гиблая же тема, не?
Все аналоги сампа или умерли ещё на стадии разработки, либо просто никому не нужны, как минимум из-за изобилия уже нажитых модификаций под самп.
Хотя за старания зачёт, не каждый бы на такое решился. Я бы даже такого не написал)
 

_razor

t.me/sssecretway | ТГК: t.me/razor_code
Автор темы
Всефорумный модератор
1,948
3,211
Гиблая же тема, не?
Все аналоги сампа или умерли ещё на стадии разработки, либо просто никому не нужны, как минимум из-за изобилия уже нажитых модификаций под самп.
В гта са думаю да
 

ImPasha

Software Developer & System Administrator
Друг
1,788
2,141
Если есть люди, которые заинтересованы в развитии этого продукта и готовы им заниматься, то мы ни в коей мере не ограничиваем вас в использовании наших материалов, они распространяются в свободной форме. Также лично мне было бы интересно посмотреть на доработанную версию синхронизации игроков, поэтому если кто-нибудь вдруг решится взяться за это, то было бы неплохо, если бы вы поделились своими достижениями в этой теме.
 

BASS_DEVSOFTWARE

Известный 🇺🇦
Друг
263
569
я хочу мультиплеер в котором можно будет пройти сюжет по сети!
Пусть даже с такой синхрой, прошел бы! Кто захочет вместе пройти одиночку вдвоём(а там вдруг втроём, четвером), пишите в личку, как только выйдет такой мультиплеер!
 

Dark.

Известный
1,745
778
Пусть даже с такой синхрой, прошел бы! Кто захочет вместе пройти одиночку вдвоём(а там вдруг втроём, четвером), пишите в личку, как только выйдет такой мультиплеер!
Такая модификация вроде есть, называется Double Trouble
 

_razor

t.me/sssecretway | ТГК: t.me/razor_code
Автор темы
Всефорумный модератор
1,948
3,211
Совсем забыл написать, если вы откроете ядро сервера, в самом вверху есть мини настройка сервера:
1598265602631.png

serverName - название сервера
version - версия сервера, если у клиента будет версия не равная версии в сервере, соединение будет разорвано.
gamemode - названия файла гейммода (gamemodes/NAME.lua)
maxSlots - максимальные слоты на сервере (советуем пока больше 10 не ставить, возможны проблемы)
stream - дистанция стрима
address - адрес сервера (оставить '*' для автоматического выбора)
port - порт который может быть изменен, по стандарту 7777
 
  • Нравится
Реакции: rnsda

ImPasha

Software Developer & System Administrator
Друг
1,788
2,141
Мы очень ценим внимание к данному продукту со стороны пользователей и видим, что многие заинтересовались им. В связи с этим вместе с SEVEN мы решили продолжить развивать скрипт в направлении продукта с открытым исходным кодом. В скором времени представим вам улучшенную версию модификации, работа которой будет осуществляться с расчетом под одиночную версию игры, т.е. привязок к какому-либо функционалу SA:MP там не будет.

В первом посте был добавлен репозиторий GitHub с мультиплеером, пока что он пустой и заполнен старыми материалами, но в скором времени там начнут появляться обновления, но, я надеюсь, что о крупных изменениях, связанных с модификацией, мы будем объявлять в этой теме, дабы держать всех заинтересованных в курсе происходящего. Также стоит сказать, что совместное прохождение игры с этим мультиплеером, к сожалению, будет невозможно.

И да, эта задумка всё ещё самоубийственная, а мы - самоубийцы. Спасибо за ваше внимание.