24.04.2014, 21:41
Доброй ночи.
Попробую ответить:
Хорошие вопросы, кстати.
Не сочтите меня человеком знающим, а то люди посмотрят на мое количество сообщений и опять начнут негодовать.
Попробую ответить:
Код:
1. GM - игровой мод, в то время как FS - дополнительные скрипты.
С точки зрения работы, отличия между ними:
- При инициализации и выгрузке используются разные Callback'и
(OnFilterScriptInit -> OnGameModeInit, OnGameModeExitOnFilterScriptExit
- SA-MP позволяет поочередно и по кругу запускать до 16 GM
- FS может быть запущено несколько, одновременно, в то время как GM может быть запущен
только один
- Некоторые нюансы, связанные с OnRcon... в GM
По сути, все, что необходимо знать - FS может использоваться вместе с любыми GM, в то время
как GM - сам по себе.
GM отвечает за основное назначение сервера, в то время как FS - за какие-то доп. возможности.
Было задумано так, чтобы администратор мог подключить / отключить FS в любой момент, во
время выполнения GM.
2. Оптимизация бывает разной. Это и экономия памяти (расчет размеров массивов, удаление
ненужных переменных внутри функций), и экономия процессорного времени (количество
итераций циклов / разработка алгоритмов для уменьшения количества действий)
Еще мало кто берет во внимание оптимизацию в плане расширяемости мода. Это лично только
мое мнение, но чем проще программисту работать с исходным кодом и чем понятнее структура
мода, тем больше оптимизирована как раз работа самого программиста.
3. На счет orm - тут только мое мнение.
Я не использовал никакие сценарии, потому как PAWN совсем к этому не располагает. Подробнее,
может, кто-то другой расскажет.
4. Командный процессор обычно нужен для бОльшей чистоты кода, нежели для оптимизации программы.
Лично я использовал ZCMP и SSCANF2 - удобно, и никак не связывает руки.
Пользователь не так часто вводит команды, чтобы серьезно задумываться микро-оптимизацией
их обработки. Мой совет - выберите то, что вам удобнее.
5. Имхо:
- Стример, как неотъемлемая часть серьезного мода (у меня стоит плагин от Incognito)
- Тот же SSCANF (я использовал его при обработке команд, отличный парсер)
- Для отладки я просто скачал и подключил два плагина - nativechecker и crashdetect - полезны
в том случае, когда возникают какие-то ошибки, или когда сервер по непонятным причинам падает.
6. Так как в PAWN нет ничего, кроме CELL, даже используя самую маленькую переменную под bool,
вы займете 4 байта памяти.
Я перенес такие boolean-значения в массив игроков, воспользовавшись конструкцией enum.
Не могу сказать точно, что быстрее и лучше - здесь уж каждый при своем мнении, но я не
рискнул использовать PVar, потому как подозреваю, что при каждом обращении к переменной
через такие функции, идет поиск по массиву текстовых значений - названий переменных (другое
дело фиксированный массив, где просто рассчитывается смещение и считывается число, без
каких-либо строк).
Не сочтите меня человеком знающим, а то люди посмотрят на мое количество сообщений и опять начнут негодовать.
