За основу модифікації було використано аналогічну модифікацію попередньої гри серії, Grand Theft Auto: Vice City під назвою Vice City Multiplayer, випущену у квітні 2005 року. Команда творців складалася з кількох осіб, відомих у спільноті модифікаторів Grand Theft Auto, на чолі з kyeman (Kye) (наразі відомий як Kalcor) — значущою особою у спільноті модобудівничих GTA. Надаючи знімки екрана та відео, які демонстрували плин розробки (що відбувалася достатньо швидко), модифікація набула загального визнання серед GTA-спільноти та з невеликим форумом залучила близько 120 користувачів перед переїздом на новий хостинг.
Після ряду публічних бета-тестів, які набули величезної популярності (багатьом навіть доводилося чекати звільнення місць на бета-серверах), Vice City Multiplayer було нарешті випущено і майже відразу оновлено до версії 0.1d, до кінця вже маючи відкритий початковий код. Цей код було використано іншою командою розробників для продовження розвитку VC-MP (цей проект досі розвивається і наразі має версію 0.4), а команда kyeman'а (Kalcor'a) розпочала розробку SA-MP. Крім того, теперішні розробники VC-MP роблять багатокористувацьку гру як для оригінальної гри Grand Theft Auto: Vice City, так і для модифікації, що переносить місто Ліберті-Сіті на рушій гри.
San Andreas Multiplayer
Розробка SA-MP привернула великий інтерес шанувальників ігор серії GTA. У квітні 2006 року розділу на форумі GTAForums.com стало недостатньо, і розробники вирішили відкрити власний форум. У кінці березня розробка вже була повноцінним мультиплеєром і, після деяких закритих бета-тестів, у квітні-травні було проведено три публічних бета-тести. За кілька годин після третього бета-тесту, 10 травня 2006 року kyeman (Kalcor) заявив, що проект повністю готовий до випуску. Однак у релізі виявилося досить багато багів, і за кілька днів було випущено оновлення до версії 0.1b. Після цього користувачі продовжили вивчати мову програмування Pawn і створювати різноманітні ігрові режими, а самі розробники зникли на деякий час. Лише наприкінці червня в повідомленні на своєму блозі вони заявили, що розробка все ще триває, хоча в них дуже мало часу. Розробники продемонстрували кілька скриншотів можливості додавання об'єктів на карту. Ходили чутки, що незабаром вийде версія 0.1c, але до вересня нової інформації від розробників не надходило. Лише наприкінці вересня невелике оновлення блогу свідчило, що розробка триває, і було представлено невеликий список нововведень.
2 жовтня 2006 року з'явилася інформація про те, що готується нова версія 0.2. Інформацію було підкріплено великим списком нововведень і відеороликом, що показує безліч нових можливостей. Це викликало хвилю інтересу серед шанувальників SA-MP, яких тоді налічувалося вже кілька тисяч по всьому світу. Однак після цього нової інформації не було кілька місяців. Розробка дуже затягнулася і, після декількох невеликих оновлень, 9 березня 2007 року розробники представили на своєму блозі прев'ю версії 0.2 з великим списком змін і двома відеороликами, знятими на закритих бета-тестах. Також було оголошено, що незабаром буде проведено кілька публічних бета-тестів. До початку першого публічного бета-тесту пройшов іще місяць. До того часу ажіотаж з приводу нової версії досяг неймовірно великого рівня, і розробники вирішили не оголошувати про бета-тестування на своєму блозі. Натомість напередодні Великодня, 8 квітня, на сайті розробників з'явилася пасхалка у вигляді посилання, яке через кілька перенаправлень виводило користувача на IRC-канал бета-тестування, що розпочалося ввечері того ж дня. Спочатку було відкрито один сервер на 100 місць, але незабаром було запущено ще декілька серверів. Це бета-тестування тривало до 11 квітня. Наступний бета-тест пройшов лише за місяць і тривав кілька годин. Метою його було протестувати можливість сервера витримувати навантаження до 200 гравців. Після цього на блозі kyeman (Kalcor) оголосив, що буде проведено ще щонайменше два бета-тести. Наприкінці травня пройшов перший з них, після чого у блозі було оголошено деякі нововведення. 3 червня 2007 року розробники випустили RC-версію клієнта і сервери 0.2 на чотири місця, тим самим дозволивши користувачам розпочати розробку й оновлення режимів для нової версії. Протягом наступних двох тижнів було випущено ще два реліз-кандидати, і після четвертого бета-тестування, що перейшло у п'яте, 20 червня 2007 року SA-MP 0.2 була офіційно випущена. Але розробка не завершилася, і за кілька днів уже було випущено версію 0.2.1 з деякими оновленнями та виправленнями.
24 червня 2007 несподівано для користувачів команда SA-MP оголосила на своєму сайті, що припиняє роботу над модом і будь-яку його підтримку, бо не мають більше сил і можливостей боротися з людьми, які, не боячись нічого, розробляють чити та експлойти для SA-MP. Миттєво в Інтернеті була організована петиція з вимогою до розробників повернутися до роботи над модом. За кілька годин під петицією підписалося кілька тисяч чоловік. Це спрацювало, і менше ніж за добу роботу всіх серверів SA-MP було відновлено. Наступного дня було випущено оновлення для сервера, що закриває експлойт, попереджує падіння серверу і містить вбудований античит SAC (англ.SA-MP Anti-Cheat), що не дозволяє гравцям заходити у гру з читерськими трейнерами або плаґінами для SA-MP. За місяць, 29 серпня 2007 року, після двох відкритих бета-тестів було випущено версію 0.2.2 і було оголошено про початок роботи над версією 0.3. А наступного дня, 30 серпня, було випущено клієнт SA-MP версії 0.2.2 R2, що усуває кілька помилок, знайдених у версії 0.2.2 відразу ж після релізу.
13 травня 2008 року, несподівано для всіх, команда SA-MP закрила сайт і оголосила про кінець розробки SA-MP. За кілька днів сайт був відновлено, і на ньому з'явилася новина про закінчення розробки SA-MP. Вночі 23 травня було відновлено форум. 21 червня 2008 року для вирішення проблем з безпекою було випущено версію 0.2.2 R3. Також в оновленні були виправлені деякі баги і збільшено обмеження кількості моделей машин. Оновлення стосувалося лише клієнта.
20 листопада 2008 року було випущено версію SA-MP 0.2x. Більшість змін не були значними для звичайного гравця, за винятком поліпшення синхронізації та усунення проблем з вильотом клієнта. У вкладці «Internet» сервери версії 0.2.2 більше не з'являються. Більшість серверів переведено на версію SA-MP 0.2x. Також було оголошено про розробку версії SA-MP 0.3. Раніше обіцяну версію SA-MP 0.2.5 випущено не буде.
14 серпня 2009 року розпочалися публічні бета-тестування SA-MP 0.3. 15 серпня відбулося друге бета-тестування, в якому взяло участь понад 400 гравців. 19 жовтня було випущено фінальну версію 0.3a. Згодом було випущено кілька незначних оновлень в лінійці даної версії. 11 серпня 2010 року розпочалося тестування версії 0.3b, а її випуск відбувся 21 серпня 2010 року. 28 листопада 2010 року до мережі потрапили клієнт і сервер (Windows і Linux) RC2-версії 0.3c.
На початку 2012 року вийшла версія SA: MP 0.3d. У травні 2012 року вийшов SA: MP 0.3e. На початку 2013 року вийшов клієнт SA: MP 0.3x. 13 лютого 2014 року офіційно вийшли клієнт і сервер 0.3z. 18 січня 2015 року вийшла перша бета-версія SA: MP 0.3.7 RC-1. Розробники урізноманітнили гілку 0.3. До даної версії було внесено значні зміни.
1 травня 2015 року вийшов SA: MP 0.3.7. 13 липня 2015 року вийшло оновлення для сервера SA: MP 0.3.7 R2.
4 листопада 2017 року розробник Kalcor заявив про випуск бета-версії SA: MP 0.3.8 R1, але до фінальна версія не була опублікована, натомість 13 січня 2018 року анонсували нову версію SA: MP 0.3.DL, яка дає можливість розробникам ігрових серверів завантажувати модифікації на сервер (нові моделі персонажів, об'єктів).
Виправлено вразливість до DoS-атак, під час яких нападник міг спричинити лаги та, врешті-решт, падіння
Реалізовано захист від атак типу «переповнення сервера» (англ.server full)
Повідомлення «Вхідне з'єднання» (англ.Incoming connection) тепер показується і при початкових з'єднаннях. Це дозволить відстежувати всі з'єднання
На прохання власників деяких серверів реалізовано можливість додавання повних дати та часу до журналу серверу. Для налаштування формату, заснованого на форматі функції strftime[5] мов C та C++, було введено параметр logtimeformat файлу server.cfg
Виправлено проблему зі списком змінних команди /rcon
Скасовано зміни у заставці, зроблені у версії 0.3c, які могли спричиняти зависання на деяких системах, змушуючи гравця натискати клавішу Escape для завантаження гри
Виправлено вразливість до DoS-атаки, коли нападник, надіславши сформований особливим чином пакет, міг спричинити відмову налагоджувальногоприпущення (англ.Debug assertion failed) на мережевому рівні SA-MP, що призводило до завершення роботи останнього
Додано кілька функцій та колбеків, що спрацьовують у випадку оновлення гравцем координат транспорту, не перебуваючи за його кермом
Нова система попереднього перегляду моделей дозволяє серверу демонструвати гравцеві ескізи скінів, транспорту й об'єктів, включно зі зброєю, на екрані
Поліпшено синхронізацію анімацій гравців, які переносять об'єкти
Система дружнього вогню по транспорту для серверів, що підтримують команди гравців
Нові об'єкти капелюхів і зачісок
Багато важливих змін у мережевій підсистемі SA-MP, які зменшують навантаження на мережу та підвищують безпеку
Значокпіскового годинника віднині з'являтиметься поряд з ніками гравців, які стали на паузу (може бути увімкнений або вимкнений за допомогою команди /nametagstatus)
Перевизначено автомобільні кольори з кодами 128—255 екзотичнішими варіантами. Попри те, що деякі з цих кольорів використовувалися, більшість їх не синхронізувалися.
Оновлено вбудований ігровий режим Rivershell до версії 2
Додано традиційний (англ.legacy) режим наведення (налаштування shotcompmode=2 у файлі server.cfg), що дозволяє наведення лише за допомогою камери і вмикає наведення у випадку використання джойстика
Ідентифікатор поточної зброї гравця некоректно повідомлявся скриптам мови Pawn, коли гравець їхав у транспорті на пасажирському місці (тільки для сервера)
Додано захист від хакерів, що розсилають спам у вигляді повідомлень OnPlayerConnect
Перевірка нефільтрованих у OnPlayerWeaponShot ідентифікаторів зброї
Статисти тепер за замовчуванням є невразливими. Це може знадобитися для подальшого виправлення ротацій груп допомоги
Додано консольні змінни: conncookies вимикає систему куків з'єднань 0.3.7, а cookielogging вимикає журналювання куків з'єднань, які запитують гравці при підключенні
Додано хеш-функцію для користувацьких паролів на основі алгоритму SHA-256
Виправлено масштабування ігрового радару на широкоекранних моніторах, вимикачем цього виправлення слугують параметр nohudscale=1 у файлі sa-mp.cfg та консольна команда /hudscalefix
Виправлено помилку версії 0.3.7 R2 з функцією PlayerPlaySound
Виправлено експлойт у системі меню, коли оператор шкідницького сервера міг змайструвати спеціальний пакет, який спричинював переповнення буфера на клієнті
Додано виправлення, що зупиняє плавучі контрольні точки на об'єктах, унаслідок чого не працював вихід із транспортного засобу, який перекинувся догори дриґом
Змінено обробку винятківопкодів для компонентів транспортних засобів таким чином, що відображається ідентифікатор компоненту, що спричинив виняток
Оскільки виправлений експлойт був наявний, починаючи з версії 0.2, то було вимкнуто списки серверів всіх без винятку попередніх версій клієнту[7]
2008 року розробники San Andreas Multiplayer видали спеціальну версію клієнту мультиплеєру, розраховану на гру з модифікацією GTA United, яка замінює оригінальну карту штату Сан-Андреас містами Ліберті-Сіті та Вайс-Сіті[8]. За основу було взято версію мультиплеєру 0.2x. Для модифікації було виділено спеціальний розділ офіційного форуму та сайт gtau-mp.co.uk, обидва з яких наразі закрито.
Оскільки зміни торкнулися тільки процесу побудови графіки, то решта можливостей SAMP залишилися тими самими — скрипти пишуться мовою Pawn. Для GTAU-MP було написано декілька стандартних ігрових режимів, які й ідуть разом із сервером. Наприклад, великий режим Deathmatch, який дозволяє вільно пересуватися Ліберті-Сіті та Вайс-Сіті, наповнює їх транспортом і дозволяє вибирати острів появи.
Наразі проект офіційно не підтримується. Після виходу в жовтні 2009 року версії SA-MP 0.3 модифікацію нової версії для GTAU так і не було випущено. Останню доступну версію t3 випущено 19 липня 2009 року.
Влітку 2020 року, було закрито офіційний форум sa-mp.
Всі ігрові сервери SA-MP відносяться до одного чи кількох жанрів. Найпоширенішими жанрами є:
Дрифт (англ.Drift) — режим, схожий на політ, в якому гравці заробляють очки, контролюючи заноси на спеціально розроблених картах
Перегони (англ.Race), беручи участь у яких, необхідно виграти якомога більше коштів
Рольова гра (англ.Roleplay) — найпопулярніший режим, мета якого полягає в імітуванні реального життя
Стантрайдинг (англ.Stunt) — додано предмети для виконання акробатичних трюків на транспортних засобах
Deathmatch — кожен грає сам за себе, мета — вбити якомога більше супротивників
Freeroam — вільна гра, суміш декількох режимів
Team Deathmatch — гра ведеться в командах, мета — вбити якомога більше гравців команди-суперниці
Truck — на сервері присутні лише вантажівки та причепи, мета — розвозити товари вантажівкою та заробити собі на життя
Деякі елементи ігрового процесу містять контрольні та початкові точки, бонуси, зброю та різноманітні об'єкти — від рамп до вибухових діжок. Багато онлайн-серверів містять нетипові ігрові режими, що використовують скриптовий рушій, включений до SA-MP. Прикладами можуть бути такі ігрові режими, як Freeroam, де гравці можуть вільно пересуватися картою Сан-Андреаса, чи змагальні режими на кшталт Race, Destruction / Demolition Derby, Team DeathMatch і Fallout, де персонажі гравців опиняються в повітрі на скляній платформі, що раптово падає після показу, гравці мають стрибати шматками платформи, а останній вцілілий виграє. Принцип Fallout подібний до Hay, де гравці мусять вилазити на копиці сіна та бути на першій з них. Останній режим також демонструє, як багато ігрових режимів і скриптів можна створити на скриптовому рушії SAMP із нескінченними можливостями та різновидами.
Існує багато специфічних жанрів ігор і спільнот, як-от гра ролі з реального життя, класична рольова гра й ігрові спільноти, що пропонують широке розмаїття різних ігрових режимів, іноді разом на одному сервері. Сьогодні середня кількість ігрових серверів Сан-Андреаса в San Andreas Multiplayer сягає понад 4000 з загальною кількістю гравців онлайн 19—23 тис. одночасно.
Рольова гра
Рольова гра (англ.Role-Playing Game, RPG) — гра, в якій гравці створюють єдину історію з особистостями своїх персонажів. В інших іграх (як-от Metin2) поняття ролі загалом не розуміється. Хоча більшість Інтернет-ігор називається рольовими, вони навіть віддалено не мають з ними нічого спільного. В SA-MP цей термін називається RolePlay. Тому рольові сервери не є окремими «рольовими іграми». GTA San Andreas — багатокористувацька гра за грою.
Починаючи гру на багатьох серверах, гравець безробітний, але має деякі кошти. Йому потрібно знайти професію та заробити гроші. У грі він зіткнеться з такими поняттями, як «за роллю» (IC), «поза роллю» (OOC) та «суперечить ролі» (NON-RP). Їх значення зазначено нижче:
In-Character
Життя не гравця, а його персонажа. Це не гра, в яку він грає, це життя, яким живе його персонаж.
Out-of-Character
Речі поза життям персонажа. Наприклад, речення «Якою клавішею сісти на пасажирське сидіння?» не є рольовим.
NON-RP
Персонаж не зображає реальну людину. Прикладом цього є відкриття вогню, озираючись при цьому.
В реальному житті ніхто не знає нічиїх імен до особистого знайомства. У грі персонаж також не повинен знати імен інших. Якщо хтось, не знаючи когось, звертається до нього на ім'я чи іншим чином поводиться так, ніби знає його, це метагра.
Порушення балансу та ролі шляхом виконання дій, які неможливо здійснити в реальному житті. Наприклад, взяти будь-який з усіх типів транспортних засобів у грі.
Часто використовувані команди на рольових серверах:
/b [текст]
Нерольова команда. Тексти можуть читатися на відстані.
/s [текст]
Команда крику. Сказане можна почути на відстані. Рольова команда.
/do [текст]
Використовується для того, щоб показати, доповісти чи нагадати іншим гравцям про те, що відбувається. Рольова команда. Зазвичай використовується, коли ігрової графіки недостатньо.
/me [текст]
Рольова команда, що використовується для позначення власних дій. Відображається, наприклад, як [Ім'я] [текст]. Використовується, коли ігрова графіка не є адекватною. Наприклад, /me дивиться крізь вікно автомобіля, /me загоряється, /me посміхається.
/help
Команда, за допомогою якої можна дізнатися про рольові та нерольові команди, а також правила серверу. Зазвичай містить усі команди на сервері.
Можливості
Скриптинг
Завдяки скриптовому рушієві мовою Pawn, вбудованому в SA-MP, будь-який користувач із певними знаннями у програмуванні може розробляти власні ігрові режими та фільтрувальні скрипти. Також сьогодні існує велика кількість ігрових режимів у вільному використанні, зокрема багато великих рольових і MMORPG режимів, як-от PEN1:LS, The Godfather і GTO. Pawn дозволяє будь-кому створювати цілі місії в межах ігрового світу GTA San Andreas. Кожний ігровий режим або фільтрувальний скрипт використовується сервером у вигляді окремого файлу. В будь-який момент може бути запущено лише один ігровий режим і не більше 16 фільтрувальних скриптів. Режим, як правило, виконує основні функції ведення ігрового процесу, тоді як фільтрувальні скрипти відповідають за сторонні функції серверу, які можна вмикати та вимикати в будь-який момент без шкоди для ігрового процесу. Втім, таке розділення вельми умовне й нічого не заважає перенести всю функціональність до режиму чи навпаки, до фільтрувальних скрипів. Скриптовий API серверу містить як активні функції, що виконується в певний момент, так і перехоплювачі події, що виконуються автоматично під час певних подій, як-от підключення гравця до серверу, запуск або зупинка режиму тощо.
Можна розділяти ігровий режим і фільтрувальні скрипти. Попри відсутність систематичних відмінностей між режимом і кодуванням скрипту є важливі подробиці. Під час входу до гри спочатку відкривається перший режим у server.cfg, а лише потім побічні режими. Щойно режим завантажується до папки gamemodes, він записується як gamemode0 (без розширення) з server.cfg. Скрипти відокремлюються від фільтрувальних скриптів на основі рядка gl_actions. Якщо замість gamemode0 написано gamemode1, скрипти не працюватимуть.
Файли скриптів є файлами коду, які можна можна додати поза режимом замість додавання до самого режиму. За необхідності їх можна активувати та дезактивувати без вимикання режиму. Це спрямовано на полегшення режиму. Якщо всі файли скриптів вставити до режиму, то їх завантаження та редагування займатиме час.
Конфігураційні файли
Налаштування модифікації для мережевої гри у Grand Theft Auto: San Andreas під назвою San Andreas Multiplayer (скорочено SA-MP) можливе як на боці сервера, так і на боці клієнта. Перший спосіб налаштувань впливає на всіх гравців певного сервера, тоді як другий — лише на того гравця, який зробив свої налаштування. Відповідно, серверні параметри зберігаються у файлі server.cfg[9], а клієнтські — у файлі sa-mp.cfg[10]. Формат обох файлів подібний до INI файлів, але дещо спрощений, наприклад, не використовується розподіл параметрів за секціями.
Режими
Стандартний набір серверу містить декілька простих режимів і фільтрувальних скриптів, які демонструють застосування основних функцій мультиплеєру. Багато поширених сьогодні режимів є тією чи іншою мірою модифікаціями стандартних режимів. До основних ігрових режимів відносяться:
Barron або RC Barnstorm
Ігровий режим з метою знищення транспортних засобів з дистанційним керуванням інших гравців
Grand Larceny (Grandlarc)
Офіційний режим жанру Freeroam, створений SA-MP Team
Rivershell
Режим жанру Team DeathMatch на річці, розташованій у Сан-Фієрро
Команди серверу
Скриптом режиму задаються ігрові команди, які починаються з символу / та використовуються для полегшення гри, наприклад, /help — допомога, /kill — самогубство, /stats — статистика. В кожному режимі свої команди, серед яких телепортація, довідка, початок перегонів, створення маркеру, адміністративні команди й інші.
Плагіни
Починаючи з версії 0.2, мультиплеєр підтримує можливість створення плагінів, які розширюють можливості серверу. Найпопулярнішими є плагіни для роботи з СКБД MySQL, чатами IRC-мережі та розсиланням електронних листів протоколом SMTP.