Форумы мира Хаддан

Форумы мира Хаддан (http://forum.haddan.ru/index.php)
-   Предложения (http://forum.haddan.ru/forumdisplay.php?f=14)
-   -   предложение по оптимизации игры. (http://forum.haddan.ru/showthread.php?t=114777)

Neznajkaa 24.12.2015 16:58

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

1. оптимизация расделов инвентарь и информация.
суть простая заходя в инвентарь мы отпровляем на сервер дай мне все вещи первого расдела. круто удобно не надо не чего нажимать, но очень часто заходя в инвентарь первый раздел нафиг не нужен, и это лишнее действия как минимум в 50% случаев.

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

2. оптимизация востоновления после боя.
в инвентаре есть такой предмет как камень жизни, он востонавливает 150 здаровя чаше всего его пют стопками высокие уровни, так сделайте же возможность пить сразу определённое количество единиц интересуюшего продукта. это посути тоже выпивание только с операцией умножения вам не придёться 10 раз делать определённые операции с базой вам будет достаточно делать их в 10 раз реже.

3. оптимизация необходимостей.
снизу под персонажем есть куча кирпичей. круто красиво бесполезно, что можно сделать. добавить на эту кучу кирпечей бутылочку востоновления бодры. человек нажимает на бутылочку она выпиваеться при наличии, что мы получим. людям не придёться заходить в инвентарь через каждые 10-15 боёв, тоже самое можно делать и с остольными часто применяемыми вне боя предметами, так же можно обеденить с пунктом номер 2 и будет вообше сказка, урежиться куча лишних запросов.

более требоватильные на мой взгял возможные оптимизации :
4. разеденить обновление информации персонажа с сервером.
у вас есть информация персонажа постоянно запрашиваеться на сервер обновляеться, что там может поменяться без действий игрока ?
создайте логику которая просчитывает востоновление по той же логике что и сервер только на Javascript обновляйте по необходимости или чуток реже.

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

NeutroN 24.12.2015 17:09

а грабить корованы?

Neznajkaa 24.12.2015 17:30

да ещё чуток подумал есть ещё одно возможно легко реализуемое дополнительное действие.

5. перемешение по локациям.
создайте кнопочку которая будет делать абсолютно всё что делает переход на новую точку но без перехода на новую точку, вам не придёться постоянно дёргать персонажей из точки а в точку б, а через 7 секунд обратно.

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

т.е. чисто теоретически это переход из локации а в локацию а.

Straight 24.12.2015 17:55

Бред.
Самая большая проблема - отдельная запись в БД на каждую единицу ресурса. Но как уже признавался Маел, слишком многое на это завязано, чтобы возможно было это поменять.

Neznajkaa 24.12.2015 18:06

Цитата:

Сообщение от Straight
Бред.
Самая большая проблема - отдельная запись в БД на каждую единицу ресурса. Но как уже признавался Маел, слишком многое на это завязано, чтобы возможно было это поменять.


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

и если тут используеться база данных типо Mysql то там одна запись в базу данных приводет к такой рутине действий которые реализует база что сделать из 10 запросов 1 может придать очень много мошностей в целом, наврятли тут использоваться NoDb схемы которые работают неструктуризировано и без закрывания записей для чтения, для изменения данных.

Mr. Bugy men 24.12.2015 19:10

Цитата:

Сообщение от Neznajkaa
NoDb схемы которые работают неструктуризировано и без закрывания записей для чтения, для изменения данных.

Угу, мало в Хадде отсутствия транзакций на бои, давайте еще меньше консистентности в данных:)

Тема - какой-то поток странных мыслей.
1. Инвентарь - это чтение по PK, там все быстро и просто.
2. Рунники пьют через слоты. Хотя есть аналогичная вещь, которая сделана определенно странно - кормежка таракашек. 1000 объедков скармливаются за 2000 запросов (редирект никак в браузере не срежешь) и 2.5мб трафика. Добавить кнопку "скормить все объедки" было бы здорово.
3. Быстрые слоты / авторам расширений
4. Это вообще какой-то бред, посмотри запросы, в обновлении приходит не только статы, но и другие важные вещи. Единственное что можно сделать - переделать на сокеты и пушить с сервера, без доп запросов.


Как я понимаю, основная проблема лагов - старый движок mysql, myisam, где запись вызывает лок на всю таблицу.

Neznajkaa 24.12.2015 19:23

Цитата:

Сообщение от Mr. Bugy men
Угу, мало в Хадде отсутствия транзакций на бои, давайте еще меньше консистентности в данных:)

Тема - какой-то поток странных мыслей.
1. Инвентарь - это чтение по PK, там все быстро и просто.
2. Рунники пьют через слоты. Хотя есть аналогичная вещь, которая сделана определенно странно - кормежка таракашек. 1000 объедков скармливаются за 2000 запросов (редирект никак в браузере не срежешь) и 2.5мб трафика. Добавить кнопку "скормить все объедки" было бы здорово.
3. Быстрые слоты / авторам расширений
4. Это вообще какой-то бред, посмотри запросы, в обновлении приходит не только статы, но и другие важные вещи. Единственное что можно сделать - переделать на сокеты и пушить с сервера, без доп запросов.


Как я понимаю, основная проблема лагов - старый движок mysql, myisam, где запись вызывает лок на всю таблицу.


чтение по пк быстро да, нужно ? нет! эта мелочь не даст многово но что-то даст.
просто я более чем уверен если поуберать в определённых местах лишние действия, это привидёт к тому что сервер сможет актуально поддерживать 100 человек, на слабой серверной машинке.

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

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

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

Braice 24.12.2015 20:23

Марис, машина в 2006-2007 держала онлайн в 2к одновременно. Тогда все качались и активности гораздо больше было и ничего особо не лагало. Как сказал Буги, проблема в том, что старый движок и куча "костылей", потому, что при внедрении новинок нужно их как-то привязать к общей БД, что порой бывает не так просто.

Mr. Bugy men 24.12.2015 21:02

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

Так что все упирается в запись, это банально видно по ночам и утрам, когда в хадде все также кучка народу есть, но висят в храме для магазинов.

Neznajkaa 25.12.2015 02:09

Цитата:

Сообщение от Braice
Марис, машина в 2006-2007 держала онлайн в 2к одновременно. Тогда все качались и активности гораздо больше было и ничего особо не лагало. Как сказал Буги, проблема в том, что старый движок и куча "костылей", потому, что при внедрении новинок нужно их как-то привязать к общей БД, что порой бывает не так просто.


в 2006-2007 было меньше функционала, было меньше предметов, меньше действий, меньше таблиц и 2к одновременно это вполне возможно было как шас 20. да и видел я в в 2006-2007 игру это невозможно сравнивать с тем что есть сейчас. 1 играюший 60 уровень в 2006 накидал бы нагрузки минимум на 30 пользователей которые были тогда, даже если его кинуть назад в прошлое с текушим персонажем. т.к. по началу человек думает минут 20 делает минут 5 играет в игру совершая минимум действий, сейчас же всё достроено до автоматов, куча всяких костылей в виде Екстеншенов, которые просто е.. сервер. и люди не станут их удолять потому что тогда им будет не удобно играть.
я не говорю о разростании базы это тоже как-то нужно обробатывать. да и я более чем уверен что шас есть какой-то бектрейс пользовательских действий тогда его небыло (или был гораздо упрошёнее). тобиш взять то что есть сейчас повесить на тех 2к людей они там просто загнуться. даже с пустой базой. да и тогда даже интернет был такой что 50% онлайна были просто неактивные т.к. у них интернет не позволял быстро играть. да и тоже были проблемы даже тогда.


Часовой пояс GMT +4, время: 02:37.

Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Адаптация Архивариус & dukei