Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 19
  1. #1
    Аватар для Black Fox
    robot

    Статус
    Оффлайн
    Регистрация
    20.07.2017
    Сообщений
    11
    Репутация:
    1 ±

    EmissionRP - уникальный (?) мод с нуля

    EmissionRP // dev_log

    // Live commits log: http://emission-samp.ru/ (не допилен)



    // INTRO

    Приветствую игроков данного форума!
    Данной темой я бы хотел анонсировать разработку уникального (?) игрового РП режима написанного с нуля - EmissionRP.

    Я программист, который еще совсем недавно был достаточно далеким от мира SAMP'a. Я играл, но абсолютно ничего не знал о том как устроены сервера внутри, на чем они пишутся. Не знал pawno, не знаю паттернов и подходов к разработке...
    И вот в один момент я понял, что мне стало абсолютно невыносимо от качества и однообразности большинства модов. Разработчики нагло врут игрокам о том, что тратят неимоверные время и усилия, но при этом выпуская раз в месяц сомнительные обновления, реализующие пару фич, разработка которых в действительности займет не больше дня.

    Я захотел сделать свой мод, с блекджеком и... ну вы поняли. Я захотел доказать себе, что все эти люди ленятся и не хотят делать нормально, доказать, что делать нормально возможно!
    Я уверен, что даже без знания pawno и без опыта разработки под SAMP у меня получится хороший проект. Я осознанно ни разу не смотрел исходные коды каких либо проектов, чтобы не засорять себе мозг и быть более независимым в вопросах проектирования архитектуры.

    Что, опять?... Резонно! Но нет
    Это не очередной мод, который будет заброшен через пять минут.
    Это не очередной мод от человека, который не знает как программировать.
    Это не очередной мод, который планирует быть безыдейный копиркой.
    Это не очередной мод, основанный на копипастах других - я не видел код других модов.

    Я уверен что мне хватит мотивации и сил, чтобы доделать этот мод. Надеюсь их хватит и моему напарнику, и мы пройдем этот пусть вместе!

    Дальнейшая судьба мода неизвестна. Может быть он останется нашим личным детищем, может быть мы выложим его в паблик, может быть мы переедем в "проекты" и откроем собственный сервер. Для меня сейчас это загадка.

    Мы делаем мод с желанием создавать собственные механики, но посчитали что будет слишком фатально трогать важные и привычные всем вещи. Все основные механики из других модов ИЗНАЧАЛЬНО будут присутствовать в нашем. Далее, если мы все же решим поднять проект и получим аудиторию, то мы продолжим гнуть свою "линию", и постепенно заменять привычный всем, но кривой функционал на более продуманный и соответствующий миру РП.

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


    // TEAM

    В настоящий момент я уже нашел себе единомышленника, который так же только встает на путь изучения pawno. Разработку всего мы ведем вдвоем. Если он захочет, то назовет себя в этой теме, или попросит меня.
    Андрей, напиши мне, или сам в эту тему



    // TECH

    Технический мод реализуется не так, как большинство существующих модов. Вместо использования mysql, файлов и прочего мною было решено использовать отдельный сервер для работы с данными, так называемый бэкэнд.
    Все операции по сохранению, обработке, просчитыванию и прочему выполняются им (бэкэндом), тем самым экономя ресурсы игрового сервера.
    Второй очевидный плюс - все данные вынесены за пределы сервера, что позволяет легко использовать их где угодно еще. Например - панель администрирования, из которой можно делать практически все действия, которые можно делать с сервера.
    Третий плюсом является более удобный язык (C#), позволяющий разрабатывать проще, быстрее и приятнее, чем это происходит с устаревшим pawno. Это особенно актуально при работе с данными, ведь в C# мы имеет великолепные EntityFramework и LINQ.

    В настоящий момент для получения данных используется модуль HTTP, и по скорости он вроде бы как устраивает, работает более чем быстро. В прочем, я задумываюсь о том, чтобы в будущем написать C++ плагин, который будет являться мостом между сервером и бэкэндом, пересылая сообщения на более низком сокетовом уровне, нежели это делает HTTP.

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

    Мод разбит на файлы. Я тут читал, что многие так не делают... Я в шоке=)))
    Мод разбит на модули, которые могут быть включены или выключены.
    Мод старается следовать правилам наименования и единой архитектуре модулей. Пока написано достаточно мало код, то сложно однозначно трактовать удобность архитектуры, это будет понятно только с увеличением сложности мода и количеством кода. Думаю, что архитектура со временем будет сильно меняться, и придет к чему-то совершенному.
    Мод будет использовать переводы и настройки, подцеляемые из веб панели. Разумеется, они будут применяться без перезагрузки. Если не делать так - лучше не делать вообще. Единственная сложность это непрогнозируемый размер строк (решения пока нет).
    Мод будет активно использовать продвинутые инклюды от Y_Less'a (YSI), тем самым еще больше улучшая свою архитектуру и функциональность, благодаря возможностям динамический хукать функции и т.д..
    Мод написан с осознанием того, что делается. Например, каждая функция не является public или stock, как в 50% туториалов, разбросанных по русскому сегменту.


    // Summary

    Зачем эта тема? Мы видим в ней несколько причин:
    1) Мы хотим делится проделанной работой, чтобы повышать мотивацию и получать отклик (советы) от других людей.
    2) Мы хотим проводить опросы, иметь некую аудиторию, с которой можем советоваться.
    3) Мы хотим приносить вдохновение другим разработчикам, показывать что можно делать нормально и круто, и вовсе не обязательно следовать шаблонным гайдам (помним: я не видел ни одного исходного кода существующих модов)
    4) Мы хотим общаться и обсуждать идеи, проблемы и решения с другими разработчиками. Наш опыт павна - одна неделя. Да, зная другие языки этого хватило чтобы начать уверенно писать на нем, но всегда могут возникать спорные вопросы или ситуация, в которых требуется знание "внутренностей" языка.

    Старт разработки - 13.07.2017
    Мы следуем системе еженедельных спринтов, поэтому крупные посты об обновлениях будем стараться писать раз в неделю.
    Так же мы подняли простой сайт, который агрегирует коммит-логи с наших репозиториев. Там вы можете следить за работой в лайв-режиме - http://emission-samp.ru/ (не допилен)

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Black Fox Посмотреть сообщение
    Технический мод реализуется не так, как большинство существующих модов. Вместо использования mysql, файлов и прочего мною было решено использовать отдельный сервер для работы с данными, так называемый бэкэнд.
    Так а MySQL не является отдельным сервером? Даже если и игровой сервер, и MySQL сервер стоят на одной машине, они всё равно никак не влияют на работу друг друга (если, конечно, всё настроено правильно и никто никого не уронит, в итоге, из-за какой-нибудь ошибки благодаря криворукости настройщика). Хотя если брать более-менее адекватные хостинги (да и самому никто не запрещает такое реализовать на VDS), можно поместить MySQL сервер на отдельную машину и даже, при желании, пробросить ей свой интернет-канал, дабы нельзя было положить один сервер за счёт ддоса другого. Только стоит учитывать, что появится дополнительный пинг из-за обмена информацией между двумя машинами.

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

    Цитата Сообщение от Black Fox Посмотреть сообщение
    Второй очевидный плюс - все данные вынесены за пределы сервера, что позволяет легко использовать их где угодно еще. Например - панель администрирования, из которой можно делать практически все действия, которые можно делать с сервера.
    Так, собственно, а MySQL что позволяет делать, лол? Не то же ли самое? Только с учётом того, что MySQL как раз и создан был для того, чтоб работать с большими объёмами информации, и в нём всё сделано так, чтоб эта работа происходила максимально быстро (как думаешь, за 22 года разработки люди смогли бы оптимизировать своё детище так, чтоб оно работало достаточно быстро?).

    В общем, поздравляю, ты изобрёл велосипед. При том, колёса его состоят из костылей, из-за чего он едет гораздо медленнее существующих велосипедов.


    Может я, конечно, что-то недопонимаю, но пока всё очень похоже на то, что ты не особо давался в теорию перед тем, как делать тот или иной выбор. У тебя просто есть какое-то своё представление того, как, по твоему мнению, можно сделать лучше, а проверять это самое мнение ты решил сразу на практике, а не при помощи теории.
    Например, что ты хотел сказать вот этим?
    Например, каждая функция не является public или stock, как в 50% туториалов, разбросанных по русскому сегменту.
    Судя по всему, ты просто не знаешь предназначения как маркера public, так и маркера stock, но решил, что использовать их повсеместно - говнокод...

    Советую изучить элементарные основы языка (ссылки на официальную документацию можно найти в этой теме) и почитать о разных способах хранения данных (о том, почему большинство людей сейчас использует MySQL, как минимум)
    Последний раз редактировалось DeimoS; 20.07.2017 в 13:10.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  3. 3 пользователя(ей) сказали cпасибо:
    Black Fox (20.07.2017) Daniel_Cortez (20.07.2017) ziggi (20.07.2017)
  4. #3
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    551
    Репутация:
    274 ±
    Третий плюсом является более удобный язык (C#), позволяющий разрабатывать проще, быстрее и приятнее, чем это происходит с устаревшим pawno.
    В настоящий момент для получения данных используется модуль HTTP, и по скорости он вроде бы как устраивает, работает более чем быстро. В прочем, я задумываюсь о том, чтобы в будущем написать C++ плагин, который будет являться мостом между сервером и бэкэндом, пересылая сообщения на более низком сокетовом уровне, нежели это делает HTTP.
    Вы юзаете дотнет, и при этом собираетесь делать плагин на крестах. Чем не угодили сокеты дотнета?
    Например, каждая функция не является public или stock
    Дайте угадаю. Если вы заюзали для мода дотнет, то все функции выглядят в виде "private static void function()"?
    В настоящий момент я уже нашел себе единомышленника, который так же только встает на путь изучения pawno.
    Сначало разберитесь с названием ЯП, а потом вставайте на путь изучения -_-

    Чет бред какой-то в тексте

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

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    То есть, вместо MySQL используется LINQ через HTTP? Это ТАК странно. И если просадок по скорости ты сейчас не видишь, то при нескольких игроках они уже будут ощутимы, лучше отступиться от этого, пока не поздно. А если у тебя аллергия на MySQL, то можешь использовать Redis, благо, нужный плагин уже доступен.

    P.S. socket плагин уже давно написали, нужно лишь немного полистать раздел с плагинами на официальном форуме.

  6. Пользователь сказал cпасибо:
    Black Fox (20.07.2017)
  7. #5
    Аватар для Black Fox
    robot

    Статус
    Оффлайн
    Регистрация
    20.07.2017
    Сообщений
    11
    Репутация:
    1 ±
    @DeimoS

    Так а MySQL не является отдельным сервером? Даже если и игровой сервер, и MySQL сервер стоят на одной машине, они всё равно никак не влияют на работу друг друга (если, конечно, всё настроено правильно и никто никого не уронит, в итоге, из-за какой-нибудь ошибки благодаря криворукости настройщика). Хотя если брать более-менее адекватные хостинги (да и самому никто не запрещает такое реализовать на VDS), можно поместить MySQL сервер на отдельную машину и даже, при желании, пробросить ей свой интернет-канал, дабы нельзя было положить один сервер за счёт ддоса другого. Только стоит учитывать, что появится дополнительный пинг из-за обмена информацией между двумя машинами.
    А как же формируются данные для отправки на твой второй сервер? Не при помощи ли средств сервера? Точно так же, как и формируются запросы к MySQL: сервер лишь формирует запрос из тех данных, что ты собрал ранее (которые не только для синхронизации данных с MySQL/бэкендом или чем-либо ещё нужны, но и просто для адекватной работы с информацией игрока во время игры) и больше он никак свои ресурсы не тратит.
    MySQL несомненно является отдельным сервером, с этим я не спорил. Разница в том, что MySQL не может сам производить расчеты (есть хранимки, но это дургое).
    Бэкэнд сервер в свою очередь может брать львиную часть работы на себя, тем самым снимая нагрузку с игрового сервера. Списать деньги со счетов всех домов (онлайн/оффлайн) игроков, например. Таких примеров может быть очень много. Да и вообще, для работы с данными намного приятнее и круче использовать то, что сделано для работы с ними (Entity Framework, LINQ).


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


    Так, собственно, а MySQL что позволяет делать, лол? Не то же ли самое? Только с учётом того, что MySQL как раз и создан был для того, чтоб работать с большими объёмами информации, и в нём всё сделано так, чтоб эта работа происходила максимально быстро (как думаешь, за 22 года разработки люди смогли бы оптимизировать своё детище так, чтоб оно работало достаточно быстро?).
    Здесь не спорю - MySQL может делать тоже самое, и разумеется мой бэкэнд сервер так же использует БД для хранения данных.
    Привел этот пунк, потому что видел что на многих проектах панели обновляются после рестарта, или типа того. По-сути- да, данный пунк можно удалять из плюсов :)


    Судя по всему, ты просто не знаешь предназначения как маркера public, так и маркера stock, но решил, что использовать их повсеместно - говнокод...
    Допускаю, тогда проясни пожалуйста, в чем причина? (это не сарказм)
    Единственная причина которую я вижу - люди хотят потом отлаживать скрипты более комфортно (профайлером или чем-то еще). Т.е. они пишут public чтобы пробросить имя функции в amx. Но тогда у меня другой вопрос - почему авторы туториалов молчат об этом, о причинах использования пабликов? Это, разумеется, вопрос риторический - они меня не слышат.

    По поводу stock - мод не библиотека. Ему не нужен stock. Возможно за исключением редких архитектурных решений, но уверяю - их нету у людей, ищущих код в 1 файл.

    @Seregamil

    Сначало разберитесь с названием ЯП, а потом вставайте на путь изучения -_-
    Pawn* - моя вина, повелся на всеобщее заблуждение :)

    Вы юзаете дотнет, и при этом собираетесь делать плагин на крестах. Чем не угодили сокеты дотнета?
    Мы о разном, я не буду отвечать. Ты (вы?) не понял архитектуру, разговор не имеет смысла.

    @ziggi

    То есть, вместо MySQL используется LINQ через HTTP? Это ТАК странно. И если просадок по скорости ты сейчас не видишь, то при нескольких игроках они уже будут ощутимы, лучше отступиться от этого, пока не поздно. А если у тебя аллергия на MySQL, то можешь использовать Redis, благо, нужный плагин уже доступен.
    Да, я ОЧЕНЬ ДАЖЕ допускаю, что начнутся серьезные просадки. У меня нету аллергии на MySQL, просто я хочу разделить игровую часть, и часть работы с данными, об этом писал выше. В случае просадок я просто заменю протокол HTTP на что-то более быстрое, это сильно не повлияет на саму идею.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Black Fox Посмотреть сообщение
    MySQL несомненно является отдельным сервером, с этим я не спорил. Разница в том, что MySQL не может сам производить расчеты (есть хранимки, но это дургое).
    Бэкэнд сервер в свою очередь может брать львиную часть работы на себя, тем самым снимая нагрузку с игрового сервера. Списать деньги со счетов всех домов (онлайн/оффлайн) игроков, например. Таких примеров может быть очень много. Да и вообще, для работы с данными намного приятнее и круче использовать то, что сделано для работы с ними (Entity Framework, LINQ).
    Списать деньги со счетов всех домов? Легко.
    Например, 1000 долларов (или в чём там исчисляются финансы):
    PHP код:
    UPDATE house SET balance balance-1000 
    Всё. Сервер лишь отправит этот запрос в базу и она всё сама обработает.
    А если ты подразумеваешь то, что результат вычислений должен прийти обратно на сервер, то что тебе мешает сразу запустить цикл и провести эти вычисления? Отнять от текущего баланса тысячу будет так же быстро, как и обработка результата работы твоего бэкэнд сервера (или ты придумал как передавать данные через ноосферу сразу в переменные?). А более сложные расчёты обычно требуются незамедлительно (обычно нечто подобное бывает в античитах. Например, расчёт положение стреляющего игрока относительно других с учётом того, куда попадает этот самый игрок. Если ты переложишь расчёты на бэкэнд, у тебя мало того, что из-за пинга игрока будут погрешности, так ещё и пинг бэкэнд сервера прибавится).

    Цитата Сообщение от Black Fox Посмотреть сообщение
    В моей голове все выстроено очень четко - есть игровой мод, который управляет игрой, есть данные, которые используются модом, но не обязаны обрабатываться им (модом). Ничто не мешает моду получать данные извне - это нормальное архитектурное решение, используемое повсеместно.
    Какой в этом смысл? Мало того, что тебе в любом случае придётся обработать ответ от твоего бэкэнд сервера, так ещё и придётся ждать этот самый ответ (сначала отправить, а потом ждать пока всё обработается и придёт ответ). То бишь, тебе в любом случае придётся как-то застопорить обработку кода на сервере, если результаты вычислений как-то влияют на обработку того или иного кода после. А если не ждать, то можешь быть уверенным в том, что ответ будет приходить с задержкой, ибо от того, что ты часть вычислений вынесешь на отдельный сервер, игровой сервер не перестанет работать в одном потоке и не перестанет этот поток забивать другими вычислениями.

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

    Цитата Сообщение от Black Fox Посмотреть сообщение
    Допускаю, тогда проясни пожалуйста, в чем причина? (это не сарказм)
    Единственная причина которую я вижу - люди хотят потом отлаживать скрипты более комфортно (профайлером или чем-то еще). Т.е. они пишут public чтобы пробросить имя функции в amx. Но тогда у меня другой вопрос - почему авторы туториалов молчат об этом, о причинах использования пабликов? Это, разумеется, вопрос риторический - они меня не слышат.

    По поводу stock - мод не библиотека. Ему не нужен stock. Возможно за исключением редких архитектурных решений, но уверяю - их нету у людей, ищущих код в 1 файл.
    Потому что это крайне несущественная информация, которая никак особо не влияет на работу мода в целом. Ты хоть все функции определяй через атрибут public - принципов обработки кода это не изменит и сервер не сломает. А stock в SA-MP используют чаще всего лишь из синтаксических соображений (дабы визуально отделить функции, что вызываются сервером/таймером/CallLocalFunction и т.п., от тех, что просто вызываются в коде). И от того, что ты начнёшь использовать public/stock/static и т.п. только по их предназначению, ты не сделаешь ровным счётом ничего, что могли бы ощутить твои игроки. Это больше на понтокод походит, хоть отчасти это и правильно.


    Пока всё, что ты говоришь, является пессимизацией: ты пытаешься ускорить работу того, что и так работает достаточно быстро. Если хочешь избавиться от лагов и проблем, то следует не мазохизмом подобным заниматься, а писать свой клиент или хотя бы клиентский патч в виде лаунчера. А бэкэнд сервер - это бессмысленная трата времени и бессмысленное усложнение алгоритмов. Для того, чтоб твой сервер не лагал из-за мода, достаточно просто написать нормальный код и продумать алгоритмы. Всё.

    И да, ты писал, мол использование бэкэнд серверов - нормальная практика во многих приложениях. Так может она потому в них и нормальная, что и архитектура проекта позволяет, и действительно есть проблемы, которые иначе не решить? Машина вон тоже без колёс ездить не может. Но это ведь не значит, что колёса нужно к табурету приделывать из-за этого.
    Последний раз редактировалось DeimoS; 20.07.2017 в 18:30.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  9. Пользователь сказал cпасибо:
    Black Fox (20.07.2017)
  10. #7
    Аватар для Black Fox
    robot

    Статус
    Оффлайн
    Регистрация
    20.07.2017
    Сообщений
    11
    Репутация:
    1 ±
    @DeimoS,
    Во-первых: спасибо за развернутый комментарий.

    Изначально я подумал, что ты невнятный комментатор уровня @Seregamil, но сейчас я вижу что ты объективен и конструктивен, за это уже спасибо :)

    Давай проясним немного суть нашей дискуссии...

    1) Я знаю, что MySQL это хорошо, и что все получится.
    2) Я не пытаюсь доказать что MySQL это плохо, а мой способ лучше. Мой способ - это просто способ. Мне кажется, что он лучше для меня. Не больше.
    3) Я знаю, что мой способ несет много проблем, и что в определенный момент они могут стать неразрешимыми.
    4) Я не видел и не слышал ни об одной реализации с использованием такой архитектуры как у меня, что делает задачу интереснее.
    5) Ничего страшного не случится, если я в определенный момент пойму что уперся в тупик, и заменю серверный код на MySQL - это не займет много времени.
    6) Я не пытаюсь ничего УСКОРИТЬ, я пытаюсь сделать так, как мне интересно и хочется, но при этом чтобы работало хорошо, а не было костылями и быдлокодом.
    7) Тот факт что я использую другие технологии не делает решение костыльным.
    8) Ты говорил о трате времени, но ведь разработка под самп изначально является тратой времени. Все затраченные почти любым самп-кодером человекочасы могли бы принести ему намного больше денег и пользы, примени он их на более важные и полезные задачи.
    Что касается меня - у меня есть хорошая работа, на которой я пишу хороший и полезный код, поэтому проблем с самореализацией и проф. реализацией у меня нету, я могу позволить себе "понаркоманить", и попробовать сделать что-то необычное для развлечения и нового опыта.

    Теперь немного ближе к твоему сообщению...
    Да, MySQL может вычесть сумму аренды, ок, мой пример был не совсем корректен. Давай усложним его немного... Я хочу:

    1) Вычесть сумму аренды с дома, учитывая класс дома, подключенные модули (интернет, домашний телефон, телевидение, гаражи - подставь нужно), учесть процентную ставку, заданную мэром.
    2) Записать эти изменения в лог средств пользователя.
    3) Сформировать квитанцию для пользователя, отправив ему ее на email.
    4) Сформировать и отправить уведомление о критический малом кол-ве средств ему на email/моб. телефон (это я не про игру)
    5) Рассчитать старение дома, уменьшить состояние

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

    И в завершение: Да, ты прав. Как и все другие, кто будут говорить что нужно делать на MySQL. И я с радостью повторю это еще раз, если (когда?) упрусь в непреодолимые проблемы с моим способом. Но это не мешает мне попробовать, не мешает разработке мода (максимум добавит лишнюю неделю для перевода мода на MySQL). Поэтому давай на данном остановимся, и перестанем обсуждать мой бэкэнд? :)

    Тем не менее, я с радостью готов выслушать другие вещи, советы.

  11. Пользователь сказал cпасибо:
    DeimoS (21.07.2017)
  12. #8
    Аватар для Fallen A.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Адрес
    Минск, БССР
    Сообщений
    236
    Репутация:
    19 ±
    Из самого простого, для выполнения всех операций, могу подсказать cron-задачи. Не катит?

  13. #9
    Аватар для Black Fox
    robot

    Статус
    Оффлайн
    Регистрация
    20.07.2017
    Сообщений
    11
    Репутация:
    1 ±
    Цитата Сообщение от Fallen A. Посмотреть сообщение
    Из самого простого, для выполнения всех операций, могу подсказать cron-задачи. Не катит?
    Искренний надеюсь, что я не так тебя понял, и этот комментарий не про задачи с домом...

  14. #10
    Аватар для Fallen A.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Адрес
    Минск, БССР
    Сообщений
    236
    Репутация:
    19 ±
    Цитата Сообщение от Black Fox Посмотреть сообщение
    Искренний надеюсь, что я не так тебя понял, и этот комментарий не про задачи с домом...
    Если ты выполняешь списание средств со счета игрока, к примеру, раз в день/каждый час/6 часов, то можно использовать крон задачи.
    При этом можно применять фильтры относительно установленных в БД значение и высылать email на почту. С этим отлично справится как php, так и c#. Про остальные языки не знаю.

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

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

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

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

Ваши права

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