Просмотр полной версии : [Урок] %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. Готовимся к бредоаругментам об ахуенности сампа от сами знаете кого.
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, то может получится очень годный мод..
А в МТА тоже есть свои минусы..
В мта меньше минусов чем в сцампе
Хорошая тема. Людям, только пришедшим к созданию сервера в 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...
В сампе основная русская ЦА.
А чего ж вы тогда в 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...
если мы сидим на форуме о павн это не значит что мы сидим в сампе
Это 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
а хотя не, уже не CoolDark
http://i.imgur.com/Argpbaa.png
Я знаю кто такой CoolDark. Но его отношение к своему сообщению я не уловил
Disinterpreter
16.07.2014, 23:05
Я знаю кто такой CoolDark. Но его отношение к своему сообщению я не уловил
Ну типо я знаю проблемы МТА и то, что там негде играть.
Spectrum
16.07.2014, 23:24
Ну типо я знаю проблемы МТА и то, что там негде играть.
неее, там есть где играть, я только про твою осведомлённость хотел сказать)
Ну типо я знаю проблемы МТА и то, что там негде играть.
Про аудиторию я уже говорил.
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
введите в гугл "GTA SA по сети"
В 2005м году я так впервые нашёл МТА, но тогда там можно было только кататься на машинах.
Ну типо я знаю проблемы МТА и то, что там негде играть.
Ну типа ты предлагаешь всем бросить САМП и играть в МТА, но поскольку играть негде, то просто бросить играть в ГТА по сети :crazy:
Собсна, отвечая глупым дрищавым троллям, могу сказать, что в очередной раз я не утверждаю, что САМП лучше МТА. Это 2 разных проекта для 2х разных целей. ГТА по сети - это лишь идея. Я знаю, что в МТА намного больше возможностей реализовать ту или иную задачу, некоторые из которых в САМП реализовывать долго и сложно. Возможно, я бы скриптил давно в Lua, но неадекватная аудитория МТА, считающая себя взрослой, а также политика турниров и лиг, приветствующая баги, меня "отговорили". Я скрипчу в САМП для своего удовольствия и на заказ, поэтому меня вообще не парят ни дыры, ни баги. Я знаю одно - если я что-то задумал, то в САМП это реализую.
P.S. Относительно античита: он был (SAC), но что-то пошло не так и его вырезали. Потом была попытка вырезать и кастомные объекты (к сожалению, отказались) где-то в 0.3e-R1 Fix Version, кажется, но это другая история. В этом, кстати, плане, в МТА проще кастомные ресурсы к серверу цеплять и клиентам отправлять.
Disinterpreter
17.07.2014, 09:51
В 2005м году я так впервые нашёл МТА, но тогда там можно было только кататься на машинах.
Ну типа ты предлагаешь всем бросить САМП и играть в МТА, но поскольку играть негде, то просто бросить играть в ГТА по сети :crazy:
Соль в том, что я приводил примеры не всегда относительно мта. А относительно других мультиплееров.
Другие игры рассматривать не будем :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
Подкину ещё одну причину: в 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 потеряет жирный кусок своей аудитории.
и эти талантливые руки найдут способ как пробираться в хостед бесплатно,а хостед - часть прибыли сцамп тим
и эти талантливые руки найдут способ как пробираться в хостед бесплатно,а хостед - часть прибыли сцамп тим
Думаю что SA:MP при условии что выложит исходники, смогут найти способ заработка. Включая тот же самый Хостед.
Spectrum
19.07.2014, 16:55
Думаю что SA:MP при условии что выложит исходники, смогут найти способ заработка. Включая тот же самый Хостед.
вот им делать нечего, ещё способ заработка искать
вот им делать нечего, ещё способ заработка искать
Ну тогда им стоит двигаться в правильном направлении и обновлять мультиплеер так, как этого желают пользователи.
Seregamil
19.07.2014, 19:08
Ну тогда им стоит двигаться в правильном направлении и обновлять мультиплеер так, как этого желают пользователи.
Какие нафиг обновления, пусть старые баги зафиксят, надоело костыли делать.
Какие нафиг обновления, пусть старые баги зафиксят, надоело костыли делать.
Ну почему в слове обновлять, все находят свои "дополнения"?
Spectrum
19.07.2014, 19:41
Ну почему в слове обновлять, все находят свои "дополнения"?
а зачем вообще обновлять если прошлые баги не зафикшены?
а зачем вообще обновлять если прошлые баги не зафикшены?
Ну вообще-то под словом "обновление" я подразумеваю в том числе и фикс багов.
TrezeLurese
05.09.2014, 03:33
Кто то там говорил про моды на жта? Любое глобальное изменение игры в любом случае запустит МТА. Может быть серверов для вашего мода не будет, но в любом случае работать будет (даже Map Editor)
Jeff_Monson
05.09.2014, 11:38
МТА другое SA:MP другое.
Если бы SA:MP клиент продолжили бы разрабатывать старые основатели, наверное получилось бы хоть что то нормальное.
Kye тут ради денег и всего-то.
Кто то там говорил про моды на жта? Любое глобальное изменение игры в любом случае запустит МТА. Может быть серверов для вашего мода не будет, но в любом случае работать будет (даже Map Editor)
Только вот любой из серверов тебя не пустит даже с изменённой текстурой текстдравов, если захочет. А это большинство DayZ серверов.
Да и если смотреть на вопрос под таким углом - МТА запускается и с собейтом, и с клео. Только вот они просто-напросто не будут работать, либо приведут к закрытию клиента при попытке использования.
МТА другое SA:MP другое.
Если бы SA:MP клиент продолжили бы разрабатывать старые основатели, наверное получилось бы хоть что то нормальное.
Kye тут ради денег и всего-то.
Старые основатели? Кто же они?
Disinterpreter
05.09.2014, 13:19
Да и если смотреть на вопрос под таким углом - МТА запускается и с собейтом, и с клео. Только вот они просто-напросто не будут работать, либо приведут к закрытию клиента при попытке использования.
В мта вырезаные все попытки запустить CLEO (по сути от гта в мта запускается только карта и модели). В случае с собейтом МТАшный античит просто проверяет изменены ли важные адреса памяти другим процессом или самой игрой (таким образом можно написать чит который будет менять, например, размер луны и античит не дожен кикнуть за подобный хак, хотя ничего не обещаю).
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot