Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 15 из 15
  1. #11
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    4,620
    Репутация:
    1713 ±
    Насчёт мода не в gamemode - хз (Ziggi, вроде, отвечал на это, и, кажется, даже в такой же теме с вопросом об архитектуре, но уже не помню чем он это обосновывал).

    Насчёт разбивки скрипта на файлы: имхо, но разбивать на файлы и использовать, при этом, перехваты - не очень хорошая. В написании это, конечно, проще, но вот редактировать такой код довольно сложно, так как будет трудно изменить порядок вызова какой-то одной из перехваченных функций (особенно если ты не автор кода). Уж лучше просто обрамлять код в функции, а функции уже вызывать в pwn, тем самым позволяя легко увидеть то, какие инклуды вызываются в том или ином коллбэке и легко поменять порядок вызова.

    Я в своём моде придерживаюсь простых правил:
    1) Одна система = один инклуд (и инклуды раскиданы по папкам, по типу "admin", "player", "core" и т.п.)
    2) Одна функция выполняет только одну конкретную задачу
    3) Все "перехваты" коллбэков реализуются через вызов функций внутри pwn

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

    Для паблик-мода, имхо, не лучшая структура. Античиты и фиксы стоит вынести как отдельные корневые папки, а не распихивать по другим папкам. У паблик-мода должно быть минимум вложенных папок, как мне кажется, ибо это усложнит запоминание структуры проекта при работе с ним.

    И вспомнил один из спорных моментов в Open-GTO. Команды админов там реализованы как "1 команда = 1 файл", а команды игроков все в одном файле находятся. Это сбивает с толку при первом знакомстве с модом.
    Так же там есть некоторые довольно спорные разделения на файлы. Например, такая простая система, как личные сообщения, разбита на 2 файла (отдельно команда и отдельно не очень большая функция где-то строк на 30). Это лишь усложняет поиск нужного файла, как по мне (ну чем больше файлов, тем длиннее список и дольше нужно по нему глазами пробегать, чтоб найти нужный файл). Не очень оправдано с учётом того, что там в файле всего 1 функция.

    Ну и разбивать команды на отдельные файлы - в целом, сомнительная идея, ибо вместо того, чтоб открыть один файл и просто воспользоваться поиском, тебе приходится либо вручную выискивать нужный файл, либо пользоваться поиском по файлам, что не так быстро, как просто поиск по файлу (в том плане, что поиск по файлу - нажатие "Ctrl+F", в отличии от поиска по папке, где нужно папку выбирать и т.п.)
    Последний раз редактировалось DeimoS; 13.02.2019 в 13:02.
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  2. Пользователь сказал cпасибо:
    Seviel (14.02.2019)
  3. #12
    Аватар для x86
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.01.2019
    Сообщений
    23
    Репутация:
    5 ±
    Не хватает плагина, который мог бы взять на себя работу над модулями.

  4. #13
    Аватар для m1n1vv
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    438
    Репутация:
    59 ±
    На скрине архитектура мода не для паблика. В паблик-моде будет: players, vehicles, admins. Сейчас ломаю голову, как удобней поставить мускул. Или делать в файле мода, или сделать папку database и там разложить файлам регистрацию, загрузку и сохранение.
    Последний раз редактировалось m1n1vv; 13.02.2019 в 23:53.

  5. #14
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,171
    Репутация:
    772 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Open-GTO не так идеален, как хотелось бы, на самом деле.
    Правда, уже и не вспомню что именно было, но когда работать с ним приходилось, была парочка не очень логично разбитых на файлы систем. И идея разбивать одну и ту же систему на pwn и inc - тоже такое себе, как по мне. Приходится много лишних телодвижений делать, чтоб проследить те или иные зависимости.
    История Open-GTO идёт с 2006 года, с мода GTO, это один из самых старейших модов. Большую часть кода в Open-GTO я переписал, но много чего осталось из того времени.

    .pwn и .inc - это аналог .c и .h из C, такое разделение необходимо, когда два файла зависят друг от друга. Заголовочные файлы мы подключаем выше, файлы с реализацией ниже.

    Цитата Сообщение от m1n1vv Посмотреть сообщение
    Так почему файл мода не в папке gamemode?
    В проектах, как правило, все исходники хранятся в папке src/ (или sources/ и т.п.). И, с логической точки зрения, будет довольно странно отделять исходники друг от друга.

    Цитата Сообщение от DeimoS Посмотреть сообщение
    Насчёт разбивки скрипта на файлы: имхо, но разбивать на файлы и использовать, при этом, перехваты - не очень хорошая. В написании это, конечно, проще, но вот редактировать такой код довольно сложно, так как будет трудно изменить порядок вызова какой-то одной из перехваченных функций (особенно если ты не автор кода). Уж лучше просто обрамлять код в функции, а функции уже вызывать в pwn, тем самым позволяя легко увидеть то, какие инклуды вызываются в том или ином коллбэке и легко поменять порядок вызова.
    Согласен, перехваты нужно использовать только в библиотеках.

    Цитата Сообщение от DeimoS Посмотреть сообщение
    И вспомнил один из спорных моментов в Open-GTO. Команды админов там реализованы как "1 команда = 1 файл", а команды игроков все в одном файле находятся. Это сбивает с толку при первом знакомстве с модом.
    Проблема в том, что команд админов сильно больше. Вызов wc -l *.pwn показывает, что всего строк в админских командах - 3306, тогда как в командах игроков всего 181.

    Цитата Сообщение от DeimoS Посмотреть сообщение
    Так же там есть некоторые довольно спорные разделения на файлы. Например, такая простая система, как личные сообщения, разбита на 2 файла (отдельно команда и отдельно не очень большая функция где-то строк на 30). Это лишь усложняет поиск нужного файла, как по мне (ну чем больше файлов, тем длиннее список и дольше нужно по нему глазами пробегать, чтоб найти нужный файл). Не очень оправдано с учётом того, что там в файле всего 1 функция.
    Согласен, я подозреваю, что принял такое решение о разделении во времена моего вдохновения схемой MVC. Это когда логика отделяется от представления. Сейчас бы я много чего реализовал иначе, более гибко.
    Последние системы, архитектурой которых я доволен сейчас:
    - Система соревнований (дм, гонки и т.п.), сама система реализована, но соревнования - нет: https://github.com/Open-GTO/Open-GTO...es/competition
    - Античит, архитекрута и базовые защиты есть, но для реального использования не годится: https://github.com/Open-GTO/protection

    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ну и разбивать команды на отдельные файлы - в целом, сомнительная идея, ибо вместо того, чтоб открыть один файл и просто воспользоваться поиском, тебе приходится либо вручную выискивать нужный файл, либо пользоваться поиском по файлам, что не так быстро, как просто поиск по файлу (в том плане, что поиск по файлу - нажатие "Ctrl+F", в отличии от поиска по папке, где нужно папку выбирать и т.п.)
    В большинстве популярных редакторов есть поиск по всем файлам проекта, как правило - это Ctrl+Shift+F, работает очень быстро.

    ---
    Сидеть и думать как реализовать то или то, спрашивать об этом - смысла не имеет. Бери и делай, делай и переделывай, со временем ты сам поймёшь как следует всё распределять, и на своей шкуре ощутишь минусы и плюсы той или иной реализации.
    Последний раз редактировалось ziggi; Вчера в 02:44.

  6. #15
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    4,620
    Репутация:
    1713 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    .pwn и .inc - это аналог .c и .h из C, такое разделение необходимо, когда два файла зависят друг от друга. Заголовочные файлы мы подключаем выше, файлы с реализацией ниже.
    Я догадывался, что корни всего этого идут из С, но это всё равно считаю не самым удобным решением для паблик-проекта. Лично мне не очень удобно постоянно переключаться между двумя файлами, чтоб найти нужную информацию или что-то изменить. Сильно внимание расфокусируется при переключении. Но это чисто субъективщина.

    Цитата Сообщение от ziggi Посмотреть сообщение
    Проблема в том, что команд админов сильно больше. Вызов wc -l *.pwn показывает, что всего строк в админских командах - 3306, тогда как в командах игроков всего 181.
    Команды игроков в любом случае, обычно, проще искать через поиск по файлу, а не вручную. Поэтому не думаю, что большой объём админских команд был бы проблемой.
    При этом, если ты, например, захочешь изменить уровень доступа к ряду админких команд или просто удостовериться, что команды распределены по уровням правильно, тебе придётся либо с поиском по файлам возиться, либо вообще открывать каждый файл отдельно и переключаться между ними.

    Несомненно, если мод пишется для себя и подобную систему структурирования ты реализовал самостоятельно, то она может быть удобной. Но вот для паблик-мода она всё же имеет больше минусов, чем плюсов, как мне кажется.

    Цитата Сообщение от ziggi Посмотреть сообщение
    В большинстве популярных редакторов есть поиск по всем файлам проекта, как правило - это Ctrl+Shift+F, работает очень быстро.
    Речь о том, что всё равно придётся тратить время на то, чтоб указать путь до нужной папки. Ну или выискивать нужный файл среди результатов, когда поиск выдаст несколько совпадений. Поиск по файлу в этом плане лучше, как мне кажется.

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

    Цитата Сообщение от m1n1vv Посмотреть сообщение
    На скрине архитектура мода не для паблика. В паблик-моде будет: players, vehicles, admins. Сейчас ломаю голову, как удобней поставить мускул. Или делать в файле мода, или сделать папку database и там разложить файлам регистрацию, загрузку и сохранение.
    Регистрация, загрузка и сохранение должны лежать в папке игроков же. Сам инклуд поместить в папку "lib", в которой будут лежать все сторонние инклуды.

    Некоторые вещи можешь почерпнуть для себя из статьи Ziggi. Ну и на хабре можно много полезных статей найти с правильными мыслями.
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

 

 
Страница 2 из 2 ПерваяПервая 12

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •