Jump to content

Архитектура проекта


Recommended Posts

Доброго времени суток, господа. 

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

Так же интересно узнать мнение по поводу того, как лучшего всего хранить большие объемы данных. Взять пример тот же Pawn - создаём массив и кладём в него данные и.. на этом всё. Тут же функционал более широкий (тот же element data), но почитав пару тем на форуме понял, что лучше с ним быть более аккуратным. Как лучшего всего поступить с большими объемами данных? Частота обновления ~ 2-3/сек. при нулевой онлайне.

Взять тот же C# - много информации, статей, уроков и так далее, а тут, по факту, нет. Думаю, что многим начинающим разработчикам в MTA пригодится данная информация.

Буду рад любому адекватному и обширному ответу (желательно с ссылками на те или иные статьи/темы). Заранее спасибо ^_^

Edited by Dimosha
  • Like 1
Link to comment

Привет, лично я изначально для себя построил такую структуру:

resources:

- SERVERNAME_Players

- SERVERNAME_Houses

- SERVERNAME_Bussineses

- SERVERNAME_Vehicles

 

и сделал несколько главных ресурсов по типу:

- SERVERNAME_System

- SERVERNAME_Stuff (обьекты, текстуры, карты и т.д.)

 

Очень удобно, теперь понял что не прогадал.

  • Like 1
Link to comment
1 hour ago, PrototypeX said:

Привет, лично я изначально для себя построил такую структуру:

resources:

- SERVERNAME_Players

- SERVERNAME_Houses

- SERVERNAME_Bussineses

- SERVERNAME_Vehicles

 

и сделал несколько главных ресурсов по типу:

- SERVERNAME_System

- SERVERNAME_Stuff (обьекты, текстуры, карты и т.д.)

 

Очень удобно, теперь понял что не прогадал.

Спасибо за информацию, но хотелось бы уточнить. Как располагаются внутри проекта файлы? Там их только два (server и client) или же более подробное деление на части?

Link to comment
  • Other Languages Moderators
18 hours ago, Dimosha said:

Доброго времени суток, господа. 

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

Так же интересно узнать мнение по поводу того, как лучшего всего хранить большие объемы данных. Взять пример тот же Pawn - создаём массив и кладём в него данные и.. на этом всё. Тут же функционал более широкий (тот же element data), но почитав пару тем на форуме понял, что лучше с ним быть более аккуратным. Как лучшего всего поступить с большими объемами данных? Частота обновления ~ 2-3/сек. при нулевой онлайне.

Взять тот же C# - много информации, статей, уроков и так далее, а тут, по факту, нет. Думаю, что многим начинающим разработчикам в MTA пригодится данная информация.

Буду рад любому адекватному и обширному ответу (желательно с ссылками на те или иные статьи/темы). Заранее спасибо ^_^

 

13 hours ago, Dimosha said:

Спасибо за информацию, но хотелось бы уточнить. Как располагаются внутри проекта файлы? Там их только два (server и client) или же более подробное деление на части?

 

Выкиньте, пожалуйста, свой ПАВН из головы.

> Взять пример тот же Pawn - создаём массив и кладём в него данные и.. на этом всё.

В павне работают только статические типы данных. Читайте о самом языке Lua.

 

> Как располагаются внутри проекта файлы? Там их только два (server и client) или же более подробное деление на части?

Обычно делится как удобнее. Очевидно если в проекте используется ООП, то на каждый класс и менеджер свой файл.

На счет расположения внутри сервера, я бы сделал 2 ресурса (сервер и клиент).

 

> Взять тот же C# - много информации, статей, уроков и так далее, а тут, по факту, нет. Думаю, что многим начинающим разработчикам в MTA пригодится данная информация.

Опять же выкиньте ПАВН и САМП из головы и зайдите на https://wiki.multitheftauto.com вся информация лежит там. Вообще вся.

 

> Как лучшего всего поступить с большими объемами данных? Частота обновления ~ 2-3/сек. при нулевой онлайне.

Грамотно разделите клиентсайд и серверсайд.

Edited by Disinterpreter
Link to comment

По моему мнению лучше всего делать вот так:

[your_gamemode]
1) Главный ресурс, в котором есть мод. По желанию можно разделить на 2 ресурса ( client, server ) как было сказано выше.
2) Ресурс с моделями
3) Ресурс с картинками
4) Ресурс с шрифтами
...


[resources]
1) Тут используются стандартные ресурсы (admin, scoreboard, ... )


 [maps]
1) Все карты на сервере в виде отдельных ресурсов. (map_name1, map_name2, ... )

Примечание:
Все идея с разделением моделей и картинок нужна, чтобы не нужно было перезапускать весь мод в случае изменения.

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

Edited by Kenix
  • Like 2
Link to comment
2 hours ago, Disinterpreter said:

Выкиньте, пожалуйста, свой ПАВН из головы.

> Взять пример тот же Pawn - создаём массив и кладём в него данные и.. на этом всё.

В павне работают только статические типы данных. Читайте о самом языке Lua.

Добрый день. В данном случае я привёл Pawn как скудный язык. Я его выкинул из головы, здесь он указан чисто для примера и не более этого. По поводу того, что в Pawn статика - в курсе.

 

2 hours ago, Disinterpreter said:

> Взять тот же C# - много информации, статей, уроков и так далее, а тут, по факту, нет. Думаю, что многим начинающим разработчикам в MTA пригодится данная информация.

Опять же выкиньте ПАВН и САМП из головы и зайдите на https://wiki.multitheftauto.com вся информация лежит там. Вообще вся.

Опять же, C# не связан с Pawn и SAMP, но суть я понял. Здесь указан опять же пример того, что есть информация для других языков, но для Lua (в плане оформления кода, архитектуры проекта), либо вовсе нет, либо очень скудная. Прочитав большую часть wiki, я не нашёл нужной мне информации. Если же она есть - прошу меня "ткнуть носом".

 

2 hours ago, Disinterpreter said:

> Как располагаются внутри проекта файлы? Там их только два (server и client) или же более подробное деление на части?

Обычно делится как удобнее. Очевидно если в проекте используется ООП, то на каждый класс и менеджер свой файл.

На счет расположения внутри сервера, я бы сделал 2 ресурса (сервер и клиент).

Спасибо, но тут вопрос: что Вы подразумеваете под словом "менеджер"? Обработчик, грубо говоря, контроллер?

 

 

2 hours ago, Disinterpreter said:

> Как лучшего всего поступить с большими объемами данных? Частота обновления ~ 2-3/сек. при нулевой онлайне.

Грамотно разделите клиентсайд и серверсайд.

Данную вещь, как разделение, я понимаю, тут вопрос обстоит несколько в другом: в Lua в связке с MTA есть возможность хранить информацию в различных местах, поэтому хотелось бы уточнить свой вопрос: в каких случаях использовать те или иные средства хранения информации (желательно поподробнее).

 

1 hour ago, Kenix said:

По моему мнению лучше всего делать вот так:

[your_gamemode]
1) Главный ресурс, в котором есть мод. По желанию можно разделить на 2 ресурса ( client, server ) как было сказано выше.
2) Ресурс с моделями
3) Ресурс с картинками
4) Ресурс с шрифтами
...


[resources]
1) Тут используются стандартные ресурсы (admin, scoreboard, ... )


 [maps]
1) Все карты на сервере в виде отдельных ресурсов. (map_name1, map_name2, ... )

Примечание:
Все идея с разделением моделей и картинок нужна, чтобы не нужно было перезапускать весь мод в случае изменения.

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

Добрый день. Спасибо за предоставленную информацию, довольно прозрачно.




Так же до сих пор не получил ответа на свой вопрос - как лучше всего оформлять код? Понимаю, что сколько людей, столько и мнений, столько и стилей написания, но хотелось бы узнать о наиболее популярных и прозрачных.

Edited by Dimosha
Link to comment
  • Other Languages Moderators
47 minutes ago, Dimosha said:

Так же до сих пор не получил ответа на свой вопрос - как лучше всего оформлять код? Понимаю, что сколько людей, столько и мнений, столько и стилей написания, но хотелось бы узнать о наиболее популярных и прозрачных.

http://lua-users.org/wiki/LuaStyleGuide

 

Lua как язык очень часто используется бородатыми сисадминами в своих шелл скриптах. Особых стандартов поэтому нет. Аналогов PSR тоже нет.

 

Какие данные? Куда хранить? В СУБД обычно хранят.

 

> Прочитав большую часть wiki, я не нашёл нужной мне информации.

Какую?

 

Если данные ОЗУ, то либо в таблицах луашных либо в setElementData  (в некотором смысле аналог самповских пваров)

Edited by Disinterpreter
  • Like 1
Link to comment
35 minutes ago, Disinterpreter said:

> Прочитав большую часть wiki, я не нашёл нужной мне информации.

Какую?

 

36 minutes ago, Disinterpreter said:

http://lua-users.org/wiki/LuaStyleGuide

 

Lua как язык очень часто используется бородатыми сисадминами в своих шелл скриптах. Особых стандартов поэтому нет. Аналогов PSR тоже нет.

Вопрос касался как раз этого. Огромное спасибо :)
 

Link to comment

@Dimosha, каждый ресурс отдельная lua-машина и также родитель создаваемых ним элементов, и соответственно то глобальное окружение, которым считается оно в Lua, в рамках мта может рассматриваться как локальное. Вот над этим подумать и/или поэкспериментировать, и станут ясны все плюсы и недостатки.

И т.к. подход самоизменяемого кода, считается в целом некорректным всюду, то и вносить таким образом патчи неправильно и сложно, не говоря уж о том что это дыра в безопасности. Следовательно разделение должно быть настолько значимым, что-бы остановка ресурса никогда не становилась значительной.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...