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

heroku

Известный
Автор темы
Модератор
1,816
2,770
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 · Просмотры: 4,689
Последнее редактирование:

Rei

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

Dark.

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

heroku

Известный
Автор темы
Модератор
1,816
2,770
Гиблая же тема, не?
Все аналоги сампа или умерли ещё на стадии разработки, либо просто никому не нужны, как минимум из-за изобилия уже нажитых модификаций под самп.
В гта са думаю да
 

Pakulichev

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

BASS_DEVSOFTWARE

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

Dark.

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

heroku

Известный
Автор темы
Модератор
1,816
2,770
Совсем забыл написать, если вы откроете ядро сервера, в самом вверху есть мини настройка сервера:
1598265602631.png

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

Pakulichev

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

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

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