PDA

Просмотр полной версии : [Урок] %count% причин не писать скрипты в SA:MP



Disinterpreter
16.07.2014, 15:46
Предисловие: На одном известном, школьном форуме у модератора жутко сгорело с этой темы и он её удалил. Надеюсь тут народ будет адекватнее.

Название %count% указывает на множество, которое может быть изменено в зависимости от выпущенных багов фиксов в самом клиенте SA-MP.

Фактически, в данной теме мы будем сравнивать несколько мультиплееров:

San Andreas Multi Player: http://sa-mp.com/
Multi Theft Auto: http://mtasa.com/
Just Cause 2 Multi Player: http://jc-mp.com/
Mafia 2 Multi Player: http://m2-multiplayer.com/
IV-Network: https://github.com/IV-Network/IV-Network

Каждый из вышеперечисленных мультиплееров обладает своими уникальными фитчами, но мы займемся мультиплеером SA-MP.

Как извесно у SA-MP много проблем как на уровне самого клиента, так и на уровне скриптинга.

Основные проблемы

Проблема №1: Как по мне, главная проблема это наличие Античита. В SA-MP античит на уровне мультиплеера отсутствует наглухо. Когда в Mult Theft Auto свой самописный античит, а в JC2MP используется VAC. Данная проблема присутствует и у остальных мультиплееров из нашего списка.

Проблема №2: Полное отсутствие клиентской части в SA-MP. Клиентская часть в SA-MP отсутствует, поэтому все графические работы идут через сервер, а не загружается на клиент. Во всех остальных мультиплеерах клиентская часть присутствует. Поэтому в SAMP подгрузить картинку клиенту или облегчить работу серверу практически невозможно.

Проблема №3: Проблема доступа к исходному коду. Возможно, в SA-MP было бы меньше проблем, если бы SAMP Team открыли некоторые модули исходного кода, что бы сообщество помогало в исправлении ошибок. Но открытый код присутствует только у двух мультиплееров MTA SA (кроме net-модуля) и IV-Network (полностью).

Проблема №4: Front-end. В SAMP на весь дизайн, который будет виден игроку отведены всего лишь пара диалоговых окон и функции для рисования TextDraw. Во всех остальных мультиплеерах для диалоговых окон присутствует библиотека CEGUI. Да и еще поддержка некоторых графических функций dx (В МТА, например, присутствует поддержка шейдеров).

Проблема №5: Бан. В SA-MP игрока можно забанить только по ip-адресу или же по самописной системе аккаунтов, бан по айпишнику может привести к плохим последствиям у некоторых провайдеров в РФ. JC2MP же использует VAC, а MTA бан по серийному номеру (возможно, его можно сменить, будучи программистом-айтишником, покопавшись пару дней в дизасме, но будучи обычным игроком это практически невозможно).

Проблемы написания скриптов

Проблема №1: Скриптинговый язык программирования. В SAMP используется подозрительный язык pawn (В Source/Gold Source используется SourcePawn, который немного отличается). Данный язык является зажатым и не гибким плюс ко всему в нем отсутствует поддержка классов и структур. Да и цель языка Pawn была совсем другая.
Остальные мультиплееры используют более специализированные ЯП. Такие как Lua или Squirrel.

Проблема №2: Модульность. У сервера SAMP плохая модульность. Нельзя разбить 1 гейммод на несколько ресурсов, чтоб было удобнее работать в большой команде. Да и видимость переменных в фильтрскриптах хромает.

Проблема №3: Малое количество библиотек. Например, было бы удобнее в координатах, rgba цветах, позициях камер использовать вектора, а не отдельно взятые числа, подход к векторам используется в JC2MP.

Проблема №4: Как я повторялся выше, отсутствие классов и структур. Процедурное программирование не всегда приводит к чему то полезному, тут я воспользуюсь цитатой известного программиста:
«Если не выходить за границу «объектно-ориентированных» методов, чтобы остаться в рамках «хорошего программирования и проектирования», то в итоге обязательно получается нечто, по большей части не имеющее смысла.»
ООП используется в MTA, JC2MP, IV-Network.

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

В заключении хочу сказать, что я перечислил только самые глобальные проблемы, мелкие утечки памяти, странно-консервативное сообщество и прочее я не брал в этот список.

С наилучшими пожеланиями, Disinterpreter.

http://i.creativecommons.org/l/by/3.0/88x31.png (http://creativecommons.org/licenses/by/3.0/deed.ru)

Seregamil
16.07.2014, 16:53
Хорошая тема.

P.S. Готовимся к бредоаругментам об ахуенности сампа от сами знаете кого.

SDraw
16.07.2014, 18:42
Годно

Spectrum
16.07.2014, 19:10
Хорошая тема.

P.S. Готовимся к бредоаругментам об ахуенности сампа от сами знаете кого.

воландеморта? :D
з.ы. годно, годно

Seregamil
16.07.2014, 19:18
воландеморта? :D
з.ы. годно, годно

воландеморт не такой большой.

Kevin_Patterson
16.07.2014, 20:06
Хорошая тема.

P.S. Готовимся к бредоаругментам об ахуенности сампа от сами знаете кого.

Если вынуть руки из одного места и попытаться совместить Unitted, Vice City и SA, то может получится очень годный мод..
А в МТА тоже есть свои минусы..

Seregamil
16.07.2014, 20:25
Если вынуть руки из одного места и попытаться совместить Unitted, Vice City и SA, то может получится очень годный мод..
А в МТА тоже есть свои минусы..

Как только калкор исправит существующие баги и хотя бы запретит клео -_-

Spectrum
16.07.2014, 20:49
Если вынуть руки из одного места и попытаться совместить Unitted, Vice City и SA, то может получится очень годный мод..
А в МТА тоже есть свои минусы..

В мта меньше минусов чем в сцампе

DeimoS
16.07.2014, 21:44
Хорошая тема. Людям, только пришедшим к созданию сервера в SA-MP, будет полезно узнать, что в SA-MP Team всё не очень хорошо. Если есть желание, развей эту тему. Хуже уж точно не станет :)

- - - Добавлено - - -


Если вынуть руки из одного места и попытаться совместить Unitted, Vice City и SA, то может получится очень годный мод..
А в МТА тоже есть свои минусы..

То, что в МТА делается нативно, в SA-MP требует подключения кучи плагинов и прочих костылей. Хотя не факт, что даже они помогут реализовать задуманное. При том баги... В общем, в плане возможностей SA-MP очень плох, не будем лукавить.

Spectrum
16.07.2014, 21:46
Хорошая тема. Людям, только пришедшим к созданию сервера в SA-MP, будет полезно узнать, что в SA-MP Team всё не очень хорошо. Если есть желание, развей эту тему. Хуже уж точно не станет :)


он развивает)

Kevin_Patterson
16.07.2014, 21:54
Хорошая тема. Людям, только пришедшим к созданию сервера в SA-MP, будет полезно узнать, что в SA-MP Team всё не очень хорошо. Если есть желание, развей эту тему. Хуже уж точно не станет :)

- - - Добавлено - - -



То, что в МТА делается нативно, в SA-MP требует подключения кучи плагинов и прочих костылей. Хотя не факт, что даже они помогут реализовать задуманное. При том баги... В общем, в плане возможностей SA-MP очень плох, не будем лукавить.

А чего ж вы тогда в SA-MP'e до сих пор? Шуровали бы изучать Lua и в MTA...

Disinterpreter
16.07.2014, 22:03
А чего ж вы тогда в SA-MP'e до сих пор? Шуровали бы изучать Lua и в MTA...

В сампе основная русская ЦА.

DeimoS
16.07.2014, 22:16
А чего ж вы тогда в SA-MP'e до сих пор? Шуровали бы изучать Lua и в MTA...

Вы так пишете, как-будто это что-то постыдное...
Таки в планах. В SA-MP я сейчас чисто как фрилансер. Держать свой проект не хочу, ибо число всяких уязвимостей в SA-MP растёт в геометрической прогрессии и как-то не хочется 40% всего времени тратить на заклёпывание дыр, которые Кую было лень залатать. Да и жить от обновления до обновления, ожидая исправления багов и добавления новых возможностей, но получая лишь кучу новых проблем, как-то надоело. Я не являюсь пацриотом SA-MP. Для меня он изжил себя ровно тогда, когда я более-менее разобрался в Pawn и попробовал держать свой проект.

- - - Добавлено - - -


В сампе основная русская ЦА.

МТА сейчас тоже активно развивается (посмотрите статистику, если не верите мне). Но так как SA-MP занял нишу мультиплеера для GTA SA, большинство народа идёт именно туда.
P.S. Подтверждение моих слов - введите в гугл "GTA SA по сети" и посмотрите где начнутся ссылки на проекты МТА

Spectrum
16.07.2014, 22:50
МТА сейчас тоже активно развивается (посмотрите статистику, если не верите мне). Но так как SA-MP занял нишу мультиплеера для GTA SA, большинство народа идёт именно туда.
P.S. Подтверждение моих слов - введите в гугл "GTA SA по сети" и посмотрите где начнутся ссылки на проекты МТА

Это CoolDark, модератор русской ветки на мта комьюннити

- - - Добавлено - - -


А чего ж вы тогда в SA-MP'e до сих пор? Шуровали бы изучать Lua и в MTA...

если мы сидим на форуме о павн это не значит что мы сидим в сампе

DeimoS
16.07.2014, 22:56
Это CoolDark, модератор русской ветки на мта комьюннити

Кто CoolDark? Где CoolDark? Какой CoolDark?
http://troll-face.ru/static/mememaker/512-pacan-kakoj-pacan-uporotyj-negritenok.jpg

Spectrum
16.07.2014, 22:59
Кто CoolDark? Где CoolDark? Какой CoolDark?

а хотя не, уже не CoolDark
http://i.imgur.com/Argpbaa.png

DeimoS
16.07.2014, 23:04
а хотя не, уже не CoolDark
http://i.imgur.com/Argpbaa.png

Я знаю кто такой CoolDark. Но его отношение к своему сообщению я не уловил

Disinterpreter
16.07.2014, 23:05
Я знаю кто такой CoolDark. Но его отношение к своему сообщению я не уловил

Ну типо я знаю проблемы МТА и то, что там негде играть.

Spectrum
16.07.2014, 23:24
Ну типо я знаю проблемы МТА и то, что там негде играть.

неее, там есть где играть, я только про твою осведомлённость хотел сказать)

DeimoS
16.07.2014, 23:42
Ну типо я знаю проблемы МТА и то, что там негде играть.

Про аудиторию я уже говорил.
SA-MP берёт своей простотой и меньшими требованиями к ресурсам ПК, что является несомненным плюсом для игроков. МТА же даёт множество возможностей для разработчика. Так же SA-MP в своё время шустрее развил разнообразие режимов игры, что так же дало ему фору.
А далее просто срабатывает стадный инстинкт у людей. Они видят, что в SA-MP много народу и они идут туда (взгляните на samp-rp и кучу других rp проектов, в которых режим гораздо интереснее реализован).
И SA-MP сейчас ценен только тем разработчикам, которые хотят поиметь денег и работают только ради денег. В МТА же заработать так же просто и столько же, как в SA-MP, не выйдет, ибо аудитория меньше и она равномерно распределена по серверам. При этом МТА является огромнейшим инструментом для реализации всяких разных идей, какие только взбредут в голову скриптеру. SA-MP же очень урезан в этом плане из-за взглядов и лени Куя.

В общем, я думаю, что будущее всё же за МТА, ибо дыр в SA-MP всё больше, а возможности залатать их со стороны клиента всё меньше. Да, он будет жить ещё достаточное кол-во времени, но он вряд ли когда-то сможет дать разработчикам все те возможности, что может дать МТА. И я думаю опробовать себя в МТА именно из-за возможностей. Возможности не только освоить новый ЯП, но и возможности реализовать всё задуманное мною, при этом не беспокоясь о всяких собейтах и не создавая костыли, дабы все мои задумки выглядели хоть более-менее прилично.

Daniel_Cortez
17.07.2014, 00:01
Если сравнивать языки программирования в SA:MP и MTA, то Lua тоже хорош... Ни тебе указателей, ни типизированных переменных, ни даже контроля за необъявленными переменными: если вместо "var = 0" записать "val = 0" - вместо вывода какого-либо сообщения об ошибке будет просто создана глобальная переменная val со значением 0 - not good =/

Если бы только Terra (http://terralang.org) форкнули от Lua лет на 5-6 раньше... Эх, мечты.

Disinterpreter
17.07.2014, 00:15
ни даже контроля за необъявленными переменными: если вместо "var = 0" записать "val = 0" - вместо вывода какого-либо сообщения об ошибке будет просто создана глобальная переменная var со значением 0 - not good for newbs =/


При необъявленной переменной будет возвращен nil. А не 0 же. Либо я не так понял.

Daniel_Cortez
17.07.2014, 00:21
function doSomething()
local var
var = 0
-- ...
end
Теперь добавим очепятку: "val" вместо "var":

function doSomething()
local var
val = 0
-- ...
end
Итог: +1 глобальная переменная.

Disinterpreter
17.07.2014, 00:25
Но объавлять переменную сверху необязательно. Да и у меня например Sublime Text бы предложил написать переенную var :D

Если чесно, яб сам не прочь кодить под AngelScript, но что есть, то есть.

Забыл спросить, что там в павн по указателям то ;)

Daniel_Cortez
17.07.2014, 00:46
Но объавлять переменную сверху необязательно. Да и у меня например Sublime Text бы предложил написать переенную var :D
В курсе, просто было лень искать и вырезать куски кода из своего проекта. Епстественно, в реальных ситуациях примеры сложнее, но суть всё та же. Порой бывает очень сложно отследить причину вытекающих из этого последствий.


Забыл спросить, что там в павн по указателям то ;)
Only #emits, only hardcore.
Впрочем, польза от этих указателей тоже сомнительная: в функцию такой указатель просто так не передашь, разве что и вызовы функций делать через всё те же мозготрахи с #emit'ами. В общем, без хорошего опыта не юзабельно.
Вообще в Pawn и нет особой нужды в указателях, ибо нет вообще никакой динамической аллокации памяти.

Disinterpreter
17.07.2014, 00:51
оффтоп: У вас форум намного умнее чем рядом стоящий набитый школьниками и жополизанием :D

OKStyle
17.07.2014, 09:31
введите в гугл "GTA SA по сети"
В 2005м году я так впервые нашёл МТА, но тогда там можно было только кататься на машинах.


Ну типо я знаю проблемы МТА и то, что там негде играть.
Ну типа ты предлагаешь всем бросить САМП и играть в МТА, но поскольку играть негде, то просто бросить играть в ГТА по сети :crazy:

Собсна, отвечая глупым дрищавым троллям, могу сказать, что в очередной раз я не утверждаю, что САМП лучше МТА. Это 2 разных проекта для 2х разных целей. ГТА по сети - это лишь идея. Я знаю, что в МТА намного больше возможностей реализовать ту или иную задачу, некоторые из которых в САМП реализовывать долго и сложно. Возможно, я бы скриптил давно в Lua, но неадекватная аудитория МТА, считающая себя взрослой, а также политика турниров и лиг, приветствующая баги, меня "отговорили". Я скрипчу в САМП для своего удовольствия и на заказ, поэтому меня вообще не парят ни дыры, ни баги. Я знаю одно - если я что-то задумал, то в САМП это реализую.

P.S. Относительно античита: он был (SAC), но что-то пошло не так и его вырезали. Потом была попытка вырезать и кастомные объекты (к сожалению, отказались) где-то в 0.3e-R1 Fix Version, кажется, но это другая история. В этом, кстати, плане, в МТА проще кастомные ресурсы к серверу цеплять и клиентам отправлять.

Disinterpreter
17.07.2014, 09:51
В 2005м году я так впервые нашёл МТА, но тогда там можно было только кататься на машинах.


Ну типа ты предлагаешь всем бросить САМП и играть в МТА, но поскольку играть негде, то просто бросить играть в ГТА по сети :crazy:



Соль в том, что я приводил примеры не всегда относительно мта. А относительно других мультиплееров.

OKStyle
17.07.2014, 10:17
Другие игры рассматривать не будем :don-t_mention:

Disinterpreter
18.07.2014, 10:36
Добавил еще одну причину.

Daniel_Cortez
18.07.2014, 16:41
Подкину ещё одну причину: в SA:MP дофига костылей.
Могу точно назвать 2 из них:
Баг с отключением игроков при использовании OnPlayerCommandText в ранних версиях. Тогда этот баг обходили, ставя в каждой команде лишнюю проверку IsPlayerConnected (поставить её 1 раз в самом начале OnPlayerCommandText наверное религия не позволяла). Сейчас этот баг давно исправлен, но костыль с IsPlayerConnected до сих пор используют.
Новая багофича в 0.3z: оружие у игрока в машине не синхронизируется, если его выдаёт сервер. Результат - ложные срабатывания античитов на оружие, античиты на всех серверах должны быть переписаны с учётом новой долбанутой логики куя.

Ещё кучу багов можно найти здесь: https://github.com/Y-Less/sa-mp-fixes/blob/master/fixes.inc

wAx
19.07.2014, 13:01
Подкину ещё одну причину: в SA:MP дофига костылей.
Могу точно назвать 2 из них:
Баг с отключением игроков при использовании OnPlayerCommandText в ранних версиях. Тогда этот баг обходили, ставя в каждой команде лишнюю проверку IsPlayerConnected (поставить её 1 раз в самом начале OnPlayerCommandText наверное религия не позволяла). Сейчас этот баг давно исправлен, но костыль с IsPlayerConnected до сих пор используют.
Новая багофича в 0.3z: оружие у игрока в машине не синхронизируется, если его выдаёт сервер. Результат - ложные срабатывания античитов на оружие, античиты на всех серверах должны быть переписаны с учётом новой долбанутой логики куя.

Ещё кучу багов можно найти здесь: https://github.com/Y-Less/sa-mp-fixes/blob/master/fixes.inc

Да.. С этим не поспоришь.

Как и писалось выше, SA:MP Team не плохо было бы опубликовать исходники, ведь за все время существования данного мультиплеера, появилось множество талантливых рук, которые могли бы внести весомый вклад в SA:MP. Я не понимаю логики SA:MP Team, быть может они и выложат исходники, но это будет только тогда, когда SA:MP потеряет жирный кусок своей аудитории.

Spectrum
19.07.2014, 14:55
Да.. С этим не поспоришь.

Как и писалось выше, SA:MP Team не плохо было бы опубликовать исходники, ведь за все время существования данного мультиплеера, появилось множество талантливых рук, которые могли бы внести весомый вклад в SA:MP. Я не понимаю логики SA:MP Team, быть может они и выложат исходники, но это будет только тогда, когда SA:MP потеряет жирный кусок своей аудитории.

и эти талантливые руки найдут способ как пробираться в хостед бесплатно,а хостед - часть прибыли сцамп тим

wAx
19.07.2014, 15:52
и эти талантливые руки найдут способ как пробираться в хостед бесплатно,а хостед - часть прибыли сцамп тим

Думаю что SA:MP при условии что выложит исходники, смогут найти способ заработка. Включая тот же самый Хостед.

Spectrum
19.07.2014, 16:55
Думаю что SA:MP при условии что выложит исходники, смогут найти способ заработка. Включая тот же самый Хостед.

вот им делать нечего, ещё способ заработка искать

wAx
19.07.2014, 17:24
вот им делать нечего, ещё способ заработка искать

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

Seregamil
19.07.2014, 19:08
Ну тогда им стоит двигаться в правильном направлении и обновлять мультиплеер так, как этого желают пользователи.
Какие нафиг обновления, пусть старые баги зафиксят, надоело костыли делать.

wAx
19.07.2014, 19:14
Какие нафиг обновления, пусть старые баги зафиксят, надоело костыли делать.

Ну почему в слове обновлять, все находят свои "дополнения"?

Spectrum
19.07.2014, 19:41
Ну почему в слове обновлять, все находят свои "дополнения"?

а зачем вообще обновлять если прошлые баги не зафикшены?

wAx
19.07.2014, 19:51
а зачем вообще обновлять если прошлые баги не зафикшены?

Ну вообще-то под словом "обновление" я подразумеваю в том числе и фикс багов.

TrezeLurese
05.09.2014, 03:33
Кто то там говорил про моды на жта? Любое глобальное изменение игры в любом случае запустит МТА. Может быть серверов для вашего мода не будет, но в любом случае работать будет (даже Map Editor)

Jeff_Monson
05.09.2014, 11:38
МТА другое SA:MP другое.
Если бы SA:MP клиент продолжили бы разрабатывать старые основатели, наверное получилось бы хоть что то нормальное.
Kye тут ради денег и всего-то.

DeimoS
05.09.2014, 12:00
Кто то там говорил про моды на жта? Любое глобальное изменение игры в любом случае запустит МТА. Может быть серверов для вашего мода не будет, но в любом случае работать будет (даже Map Editor)

Только вот любой из серверов тебя не пустит даже с изменённой текстурой текстдравов, если захочет. А это большинство DayZ серверов.
Да и если смотреть на вопрос под таким углом - МТА запускается и с собейтом, и с клео. Только вот они просто-напросто не будут работать, либо приведут к закрытию клиента при попытке использования.


МТА другое SA:MP другое.
Если бы SA:MP клиент продолжили бы разрабатывать старые основатели, наверное получилось бы хоть что то нормальное.
Kye тут ради денег и всего-то.

Старые основатели? Кто же они?

Disinterpreter
05.09.2014, 13:19
Да и если смотреть на вопрос под таким углом - МТА запускается и с собейтом, и с клео. Только вот они просто-напросто не будут работать, либо приведут к закрытию клиента при попытке использования.


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