plakhov: (Default)
Год назад я ушел из геймдева. Пока не забыл, допишу все нетривиальное, что я еще помню об играх.

Третья часть дзэна с опозданием на год (предыдущие серии см. тут). Игровой скрипт )
plakhov: (Default)
Чуть расширенная первая часть моего доклада "Дзэн", который я прочитал на КРИ-2008. Некоторые формулировки являются провокационными, поскольку так веселее.

Управление памятью )
plakhov: (Default)
На случай, если в исходную задачу каким-то образом просочилось влияние суровой и огромной реальности, и наложить на контент "произвольные ограничения" не получается.

У ММО есть возможность не тормозить, даже если N большое персонажей одновременно соберутся в одном месте. Нужно перестать передавать часть "неинтересных" апдейтов. Не исключено, что игроку неважно, видит он на городской площади толпу из 50 человек, или из 500 - и можно получить десятикратную экономию и трафика и производительности сервера; фактически, убрать все "эн-квадраты". Но невозможно применить эту технику, если делать это не с самого начала проекта, а в момент, когда код уже написан, идет бета-тестирование, и пришел баг "в окрестностях рынка в базарный день игра тормозит".

Чтобы находить такие решения, нужно до того, как пишется основной код, посчитать, чего именно следует бояться. Взять все цифры, которые можно узнать у дизайнеров уже сейчас (те, что нельзя - взять из WoW или из БК, кому что больше нравится), и поперемножать (крайне желательно при этом следить за размерностью результата). Каковы линейные размеры мира? Как далеко видит персонаж? С какой скоростью он бегает? Сколько человек в онлайне надо держать на одном сервере? Сколько раз в час игрок переходит в другую зону? Заходит в магазин? И зачем?

Это же относится к вопросам "а выдержит ли БД такую нагрузку" (какую "такую"? сколько чтений и апдейтов в секунду надо выдерживать? что у вас будет нагружать БД? я пару лет назад посчитал это для четырежды закрытого проекта™, тогда в списке сильнее всего была заметна процедура получения ХР; мне не известен способ до выхода проекта узнать примерную нагрузку, не запустив хотя бы Excel).

У Баткина pathfinding "не ходил на север", но это шутка; у нас он всерьез может ответить спрашивающему путь "ты подожди пока, я на этом фрейме уже достаточно поработал, не надо нам лагов". Текст выше должен пояснить, зачем такое понадобилось, в какой момент и как мы это придумали.

Ну а вообще можно, конечно, и std::vector не использовать - а то, как учат патриархи, компилятор не поймет. Только все это потом. Если приходится торговаться, покупая яхту с вертолетной площадкой, то яхта не нужна. А может быть, не нужна вертолетная площадка.
plakhov: (Default)
На форуме "Оптимизация, профилирование и производительность", я хотел рассказать вот о чем.

Как сделать так, чтобы игра не тормозила )

Да, я забыл похвастаться - Robocalypse стал лучшей игрой КРИ-2008 для портативных платформ. Для меня, [livejournal.com profile] orvind'а и Шера это уже вторая "лучшая портативная" (предыдущая была для телефонов, ММО и на Java, вот ведь кидает-то нас).
plakhov: (Default)
Слово "дзэн" пишется именно так, писать его через букву "е" не стоит.

С интересом почитал несколько отзывов о КРИ, напишу тоже что-нибудь. Поздно, конечно, но у меня есть два оправдания – 1) я был в отпуске и 2) я ленивый.

 

Profile

plakhov: (Default)
plakhov

August 2017

S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 22nd, 2017 02:39 am
Powered by Dreamwidth Studios