бойцовский клуб Главная > Статьи > Игра «Бойцовский клуб» глазами разработчика

Игра «Бойцовский клуб» глазами разработчика

В этом мире я увидел людей с кошмарным прошлым, отталкивающим настоящим и трагическим будущим.
«Зона. Записки надзирателя», Сергей Довлатов.


Это копии постов из блога одного из разработчиков игры «Бойцовский клуб». Сам блог, к сожалению, больше не доступен. А вот эти посты о разработке игры я сохранил здесь.

 

 


Начало

23 ноября, 2003 г.

    Собеседование на должность программиста на СИ.

    Меня встретил Мелон (не помню ник в «Бойцовском клубе», аватара с косой и «факом»). Дал какое-то простенькое тестовое задание на Си и после всех формальностей меня приняли на работу. Помню, как всё гадал: неужели все вещи хранятся прямо на персонаже, «но ведь этот нонсенс, бля!». Так и оказалось :-)

    Первой задачей был «поиск читерских вещей». Неожиданностью оказался Пёрл. Я знал его синтаксис, но не более того. Впрочем, все языки одинаковы.

    Решение было простым:

  • сбор «всех вещей», выделение «нормы»;
  • сохранение «нормы»;
  • поиск всего, отличающегося от «нормы» более чем на 40%.

    Тогда в ходу было море мф. вещей, так что пришлось ставить такие широкие «границы».

    Список получился значительным. Мелон хотел сразу с ним бежать к начальству, но мне показалось, что текст типа «MPrKrUdar=80 (25) (!)» — не самый показательный результат. Так и оказалось :-(

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

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

    Клонирование. Представьте, что два скрипта работают с одной записью о персонаже, «залочивая» её только в момент записи.

    Например, скрипт «А» забирает вещь у персонажа и кладет её в своё «хранилище». Скрипт «Б» просто одевает какую-то вещь на персонажа. «А» забрал вещь у персонажа, НО ЕЩЁ НЕ СОХРАНИЛ ЭТО, «Б» начал одевать вещь на персонажа. «А» сохранил персонажа с отсутствующей вещью, а потом «Б» сохранил персонажа со старым инвентарём, ведь «Б» не знает, что «А» уже перезаписал данные. Если такое произошло, то получаем вещь и в инвентаре, и в «хранилище».

    Вероятность небольшая, но если есть скрипт, делающий сотни запросов в секунду, то клонирование — вопрос времени.

    Чтобы максимально «замедлить» сохранение персонажа, использовались огромные (по полмегабайта текста) выписки, которые получались из перекидывания 0.01 кр. друг другу. Кстати, в этом же был и секрет «невидимых выписок». Я не знаю, с какого бодуна, но в функции, работающей с выписками, стояло ограничение на размер текста в пару мегабайт. Если оно превышалось, то возвращался текст «Слишком много текста», но из-за особенностей паладинских выписок все подобные строки просто игнорировались и получалось, что переводов нет :-)

    Итак, декабрь. Битая база персонажей (никакого безопасного сохранения не было), постоянно падающие от моря мелких ошибок скрипты, половина скриптов не FCGI, благодаря экспериментам Мелона, на каждом сервере своя ОС и файловая система.

    Общий доход «Бойцовского клубу» ничтожен. Стагнация. Никакой документации. Никакой чёткой постановки задач. Начальство хихикает, как о«Бойцовский клуб»уренное, гамает в варкрафт3 и не в курсе происходящего. Тонны рассыпающегося кода с редкими и идиотскими комментариями.

    Хаос, ужас и аврал.

    Моя любимая стихия, одним словом.

Первая профилактика. Чат

Ноябрь 2003.

    Скрипты продолжали падать из-за множества битых storable-файлов в базе: на попытке чтения улетали в out of memory. Не все скрипты переписаны под FCGI, что позволяло клонировать вещи.

    Отдельные записи юзеров превышают 5 мегабайт (для сравнения, средняя запись 8-го уровня в 2007 г. была 70к).

    Плюс нужно было разобраться с чит-вещами и кончающимся местом на дисках.

    Выписки ограничили объёмом. В принципе, я бы их вообще удалил. Ни в одной игре, кроме «Бойцовского клуба», невозможно было даже посмотреть выписку. А кому надо сохранить, тот может и копипаст сделать. Но делать шаг назад всегда труднее. «Раньше ведь сохраняли и ничего».

    Клонирование возникало из-за одновременного доступа. А как его избежать?

    Ответ прост: лочить записи на время работы. Любая СУБД это умеет. Но и файл залочить тоже несложно. Скрипт, открывая запись, «залочивает» её и лишь завершив работу — «разлочивает». Остальные скрипты вяло ждут своей очереди. Если ждут больше 0.1 сек., то выдают юзеру что-то типа «бла-бла-бла, одновременный доступ» и просто повторяют запрос.

    В теории, нормальный юзер это окно не должен был увидеть никогда.

    На малом числе юзеров всё работало прекрасно. Однако, стоило какому-то скрипту упасть и «залочивание» сохранялось. Что приводило к отказу работы с данным юзером вообще. А после пары десятков таких юзеров — Service Unavaiable принимал сервер в свои объятия. Печально, но от той системы пришлось отказаться. Вместо неё просто перевели остатки скриптов на FCGI.

    Попутно вычистили все «читвещи». Их были тысячи. Десяток чаров с инвентарём, забитым сотнями клонированных вещей и мешков.

    Нарисовалась и новая проблема — завершённые поединки. Их было по 10к в день. Год — 3 миллиона файлов, ага...

    На диске тупо кончалось место и inode.

    Решение: просто склеить все поединки за завершённый день в один файл + создать индексный файл вида «id поединка => позиция в файле, размер записи». Работало даже быстрее, чем дергать по одному файлу. В припадке трудоголизма сделал компрессию через замену стандартных фраз на их номера в массиве (кстати, ранее полагал, что логи генерятся «на лету», а не хратятся в виде текста), что уполовинило объём. Проблем с инодами не стало. Компрессию делала внешняя утилитка, запускающаяся вместе с ночным бэкапом, а просмотрщик логов поддерживал как вариант с кучей файлов, так и с мегафайлом.

    Кстати, после всех рокировок эта утилитка почему-то перестала работать в некоторых городах. Так что я переодически её запускал вручную: будучи запущенной без параметров, она сжимала всё, что находила, кроме «сегодня». Интересно, хоть кто-то о ней вообще знает? Хех...

    Мелон работал над своей СУБД, которая, по его задумке, была бы способна работать не с таблицами, а с деревьями произвольной конфигурации. В т. ч. осуществлять в них поиск/выборку/замену.

    Взяли на работу нового программиста на СИ. Они с Мелоном нашли друг друга, скинув на меня всё по «Бойцовскому клубу».

    Немного о Мелоне. Я вспомнил название его чара — Аинмарх. Или типа того.

    Мелон был фанатом экспериментов с Линуксом: на всех городах-серверах стояли разные версии разных линуксов и различные файловые системы, вплоть до jfs. Любимое развлечение — пилить и пересобирать ядро.

    В «Бойцовском клубе» он являлся автором чата, переписанного на Си. Чат был «с изъёбом»: чтобы не подвисать на IO, он форкался и скидывал все данные чайлду. Это приводило к систематическому отваливанию чайлда при смерти чата и забиванию этими чайлдами всей памяти ;-)

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

    Я довольно много модифицировал в нём. В частности, отключил «дитя», сделал двойное логирование для определения невидимок/перевоплотов (да-да, до середины 2003 г. «невидимки» были таковыми даже для админов), добавил возможность «общаться» с чатами других городов (Мысленная связь), фильтр мата. И всякого по мелочи, в основном технические правки. Отдельное «спасибо» Мелону за то, что умудрился на 50 кб кода сделать 40 разных файлов. Догадаться, где и что лежит — было воистину творческим занятием :-)

    Позже, в 2006 (2007?), чат был полностью переписан на пёрле Васей.

Разное и сумбурно

    Вот опять, «воспоминания хотят на бумагу» :-)

    Начало работы...

    Для меня «Бойцовский клуб» был средой общения: большая часть друзей и знакомых, клан. Я скучал по ним. Но был прямой запрет на общение и встречи. Все на этот запрет забивали. Хоть и с осторожностью, таки удаляя 2/3 контакт листа.

    Чтобы перестать мыслить, как БКшник и начать мыслить, как «админ», нужно, чтобы прошло время.

    А почему нужно мыслить «как админ»? Потому что за 5 лет работы в комбатс я ни разу не видел чёткого ТЗ ни на что вообще. Многое предлагалось додумывать самостоятельно. В такой атмосфере, БКшник неизбежно попытается исправить то, что исправлять не надо. Возьмём Артема, например. Он за год работы так и не понял, что он больше не паладин.

    Ощущение «несправедливости» происходящего — общая болезнь всех БКшников, которые работали в комбатс.

    Желание «изменить мир», опираясь на личные предпочтения.

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

    «Я прав / Это правильно» — важнее, чем дружба или выгода. По крайней мере, я ни о чём не жалею :-)

    Эта правота позволила мне вносить изменения в «Бойцовский клуб» безотносительно кланов, друзей или врагов.

    Я недолюбливал Michgunz (или как его там?) за вполне определённые вещи. Но в блок он попал за зафлуживание личного дела микропереводами. И то — на пару дней, как и все остальные. Я отдалился от клана: они видели во мне лишь некое средство получения игровых бонусов, а я не мог им этого предоставить просто потому, что считал это неправильным (привет Таленору, кстати ;-) ).

    Выход был один — стать трудоголиком. Первый год я частенько ночевал в офисе. Выходных не существовало. Было столько всего, что нужно исправить, доделать, переписать. «Тушим, где горит». Какой-то козёл зафлудил форум? Вуаля: таймаут на добавление топиков и ответов в топиках. Мерлину неймётся и через оставленную дырку он расформировал все кланы? Ищем / закрываем дырку, восстанавливаем кланы. «Кровавыми» загоняли в минуса? Неправильно. Будет просто обновляться время. Многочасовые маринады, приводящие к ничье — это смерть клановых войн? Не вопрос, будут элементали Шторма/Бури, которые будут драться с командой. И пусть лучше все выиграют, чем бой сотрётся по таймауту. А чтобы не тянули, убрал возможность маринада записками комментатора.

    Сделал себе «меч истинного хаоса». Немедленно был выебан осуждён за «введение каких-то предметов с идиотскими названиями».

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

    Помню, разбирался с очередным «подарком» Мерлина — «вещами из воздуха»...

    Вкратце про эти вещи. Почтовый демон мог возвращать вещи, если они, по какой-то причине, не достигли адресата. При этом он связывался с демоном другого города и тот уже скидывал в рюкзак персонажу переданную вещь. Демоны работали только с локальной сеткой и, типа, этого было достаточно. Но даркклан тогда хостился на девилсе, по-моему, и его IP подходил для такой передачи. Иными словами, можно было создать абсолютно любой предмет с любыми параметрами как «возвратный». При этом демон ещё и лог не писал. Потому что лог возврата должен был писать отправляющий демон. Я настроил логирование, подождал недельку и «опа» — удивительное рядом: те, кто пользовался этим читом, покупая мф. вещи за реал, ещё и возмутились, бля.

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

    Последовал закономерный вывод: «юзеры — каааазлы». Что позволило обращать внимание на мир «Бойцовского клубу», а не на конкретных персонажей в нём :-)

    Немного о Мерлине. Я его не видел в РЛ. И мне, в целом, всё равно, по какой реальной причине он ушёл из «Бойцовского клубу», как получилось так, что он оставил кучу дырок/багов и ноль документации. Его проблема, имхо, вовсе не в нечестности на руку. Я полагаю, что это была самозащита, хоть и не очень красивая. Его проблема, что он не умел подбирать себе партнёров.

    Нет, ну в самом деле, no offence, но Лёша не программист: весь код «Бойцовского клубу» был Мерлиновский, половина идей — Мерлиновская. Лёша говорил, что он прописывал первые предметы, но он не смог объяснить, почему статы именно такие (полагаю, это было «мы пахали...»). Маша обеспечивала коммерческую деятельность, а именно — создание и поддержание фирмы.

    На деле это должно было быть партнёрство вида 50 на 50. А в реале получалость 33/66.

    Даже у меня в разговоре с Лёшей мысль послать его на хер возникала каждые 5 минут: он откровенно не слушает и не уважает собеседника, не пытается объяснять свои идеи и не дружит с логикой.

    Проблема споров с М&М заключалась в их абсолютном непризнании собственной неправоты и наличии двойных стандартов к точкам зрения: их точки зрения априорны и не нуждаются в доказательствах, точки зрения всех остальных — заведомо ложны. Лёша, например, до сих пор считает, что он круто разрулил и поимел БоСовцев, портанув их в эмеральд. При этом часами мог рассуждать о недопустимости админского произвола и уважении к пользователям. Тьфу. Ну, и отношение к проблемам разное...

    Идея Мерлина с астралами стихий на оружии. Доработать её — минутное дело. Например, сделать элементалей, приходящими всего в 1 бой и накладывающимися только на себя, не дающими опыта, и вуаля — великолепное оружие.

    Лёша предпочёл уничтожить это оружие вообще, изъяв его из игры, подняв срач на года. Это его характерная черта — уничтожать то, что «не его», даже не пытаясь исправить. Чёрт, там была красивая графика, на этих мечах и топорах :-(

    Но вернёмся к Мерлину. По итогам, он оказался «злодеем» и «крысой». Хотя сделал минимум 50% работы, а то и 75+%.

    В итоге — выкинут на обочину. Насколько я слышал, в TZ произошла похожая ситуация.

    «Жестокий мир — жестокие сердца».

Превосходство Борна...

2003-2004 гг. Уход...

    Меня спросили, не знаю ли я программистов? Типа, для найма в «Бойцовский клуб». Я сказал, что знаю и порекомендовал Рому (Blitaz). Мы с ним долгое время работали вместе в адалт вебмастиринге фрилансерами-программистами всего подряд. Так что тему веба он знал туго и грамотно.

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

    Для начала из меня сделали манекен для примера футболок с логотипом «Бойцовского клуба». Мои вялые отговорки, что я ненавижу (искренне) любую одежду с логотипом и вообще — я программистом вроде работаю, а не моделью, были отметены. Эдакая демонстрация «кто тут хозяин». Ладно, проглотил.

    Ромку приняли на работу. Месяц испытательного срока. Оклад — 300$. Это не опечатка. 300$.

    За два месяца работы он сделал в «Бойцовском клубе» довольно много мелких технических правок. В том числе — половину локализации на eng (геймдизайн его не интересовал). И переписал энциклопедию преметов.

    Старая энциклопедия создавалась вручную. Т. е. был некий шаблон, где заполнялись поля и по ним генерилась страничка. Он сделал автоматическую генерацию энциклопедии по текущим магазинам с возможностью добавлять предметы в «бан», просмотром «новых» предметов и т. д. Сложности были в путанице подкатегорий для предметов. Например, категория 3 — оружие, но 3-11 — большой букет, находящийся в разделе «Подарки». Или что-то типа.

    В общем, когда и на второй месяц он получил $300 вместо обещанной 1000, он решил, что уходит. Я тоже. Меня не устраивает, когда не держат обещания.

    Тогда же, уже будучи изрядно задолбанным бесконечными спорами, наездами и ощущением, что я делаю какой-то ненужный отстой (локализация), я разговорился с Красной Рысью. Так, трёп о разном. Заодно на жизнь пожаловался. Мол, это пиздец невыносимый, меня достали все поимённо и вот конкретно чем.

    Гг.

    Она меня «сдала» через минуту после окончания разговора. Весь текст разговора Кокосу, а он передал его дальше.

    Я никому и никогда не прощаю игры против меня. Враг однажды — враг навсегда. Это предопределило наши рабочие отношения с Кокосом: он сам себе перечеркнул любую возможность воспользоваться моей помощью и/или защитой.

    Тогда же на работе появился Влад, как наш типа-начальник. Забегая вперёд, скажу, что против Влада ничего не имею. Он ни разу не сделал мне гадость. Своё сисадминское дело знал неплохо. И быстро прекратил строить из себя начальника, когда понял, что к чему. Да, говорят он крысятничал, выбивая сервера по более дешёвым ценам, нежели задекларированы, но лично меня это не касается. Низкую cтоимость хостинга и серверов он обеспечивал, железки за 20к мы покупали за 15, грубо говоря. Т. е. в любом раскладе его действия были выгодны фирме в целом.

    Итак, день зарплаты. Ромка получает 300$, мы синхронно говорим, что хотим уйти. М&М нет ни в офисе, ни даже в России. Начинается паника. Нас уговаривают «поступить, как взрослые», «не пороть горячку» и т. д.

    Мы стоим на своём — просто хотим уволиться, без лишних проблем.

    Через полчаса приносят бумагу, где «в течение 5 лет обязуюсь не заниматься бла-бла-бла». Естественно, посылаю. Кто они такие, чтобы я ради них отказывался хоть от чего-то? В начальном контракте этого не было.

    Через 5 минут звонок: низкий, сиплый голос советует «подписать по хорошему». Игнорирую. Соглашаюсь продать домашнюю машину за 500$ (старьё, ей красная цена была 300, ничего важного на ней не было). Ко мне домой едет делегация из Влада и Кокоса. Тщательно всё исследуют и забирают комп.

    Угрозы продолжаются. В том числе и «посадить в тюрьму» от человека, представившегося каким-то ФСБшником. На моё контрпредложение встретиться лично и поговорить — отказ. Трусливые нынче офицеры, шопиздец.

    На всякий случай позвонил Каринке. Они с Ваней приехали на следующее же утро. Во всеоружии. До сих пор приятно вспомнить. Никогда особо с Ваней не дружил, но, бля, ехать на потенциальные разборки в другой город просто за знакомого... это сильно.

    В целом, это была превентивная мера безопасности. Никто так и не пришёл. Ни рота ОМОНа, ни 5 джипов братвы, ни десяток нинзя-киллеров с пушками. Я был даже как-то разочарован.

    Решил позвонить Маше, узнать, что вообще за херню они творят. Позвонил. Мне дали пообщаться с Лёшей. Через 5 минут его истеричного монолога я сделал вывод, что эти милые люди несколько огорчены моим уходом, равно как и обсуждением рабочих проблем с посторонними людьми. Типа, публичный бизнесс, полная конфиденциальность и все дела. После третьей просьбы к Лёше успокоиться и говорить нормально — повесил трубку. Интересно, почему истерики считают, что их просто обязаны выслушивать? Через некоторое время перезвонила Маша.

    Сказал, что с Лёшей общаться не буду. Спокойно поговорили, что, как...

    Ей удалось найти моё слабое место: намечался переезд с М-10 на ГолденТелеком, а какой переезд, когда меня там нет?

    Чувство вины и всё такое. Не люблю подводить таких женщин. Не любил, точнее.

    Так я остался «на неделю-две, закончить переезд и передать дела». Кстати, я изначально был не против остаться на 2 недели, как положено, но какая-то херня началась...

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

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

    Ничто не помешало тому же Лёше четыре года спустя впаривать разным людям, что я кровожадный маньяк, по которому тюрьма плачет. А когда у него появилась такая возможность — уволить меня без зарплаты за последний месяц, без уведомления, нарушив все договорённости, запретив всем сотрудникам со мной общаться... Чёрт, у него даже смелости не нашлось сказать мне это в аську. Что на фоне его истеричных выкриков о порядочности и «правильном уходе» смотрелось забавно :-)

    ЗЫ:

    Э-эх... а такая войнушка пропала. Только представьте: у меня на руках диктофонные записи звонков с угрозами. Звонили с сотовых. Номера определены.

    Мой комп увезли... Какие 500$? Не видел никаких денег. Приехали и насильно забрали. И он лежал на складе фирмы. Работал я там нелегально, без трудовой книжки и не я один... Мне-то за это ничего, а вот перед следствием была бы прекрасная картина фирмы, которая эксплуатирует сотрудников, а после занимается угрозами, шантажем и вымогательством. С помощью коррумпированых чиновников :-)

    До кучи — абсолютное ощущение собственной правоты и «нечего терять». Плюс верные друзья, которые не оставят это дело так.

    Может именно поэтому всё и решилось мирно. Парадокс силы. Когда есть возможность и желание её применить, применять не приходится...

    А когда нет — каждая сука этим пользуется :-)

Наш первый геймдизайнер и подземки

    Денис. Странный человек. Удивительно интеллигентного вида.

    У меня тогда дозрела идея позаимствовать из Eye of Beholder псевдо-3D лабиринты и сделать их на вебе. Денис прописал первые ингредиенты. Первые ловушки. Первых мобов. Первые стоимости «лута на этаж» и границы опыта.

    Всё было в новинку... эх... это в 2008г. 1000 копий подземки по 400 мобов в каждой «летает», а тогда мы и не рассчитывали больше чем на 100 мобов/50 подземок. Потом ему понадобились обменники, которые меняют группы реагентов на что-то. Потом — группы с вариациями. Потом — чтобы оно работало при условиях (есть ключ, убиты монстры и т. д.). Потом — чтобы оно могло выдавать изменённый предмет, а не просто предмет из магазина. Потом — чтобы эти обменники могли быть невидимыми и активироваться при заходе на клетку. Потом — чтобы можно было выдавать разный текст, в зависимости от итога обмена. Потом — чтобы результатом мог быть рандомный лут из лут-групп.

    Ох...

    Потом такой же кошмар для ловушек.

    Чёрт, я надеялся, что мы сможем клепать по подземке в месяц/два. На деле всё двигалось куда медленнее. Четыре проблемы:

  1. Лут. Типа, коммерческий проект и нельзя, чтобы вот.
  2. Громоздкая боевая система, превращающая создание мобов в ад на Земле.
  3. Каждому дизайнеру обязательно хотелось выпендриться и выесть мне моск на предмет добавления очередной десятки фич, которых всё равно никто не оценит :-)
  4. Всё время нужно было делать какую-то «смертельно важную» херню, типа флага в жопе у мерков, с которым они в бой заходили.

    Денис сделал: ПТП, «Бздну», Эмеральдовскую подземку. Карту Катакомб. Все ингредиенты, падающие в подземках, прикольные тексты при смене статуса боя и для разных комнат...

    Потом я уехал в Питер, в короткий отпуск. Когда я вернулся — его уже не было. Говорят, что он сам внезапно ушёл. Потом он появился, сказал, что болел, прибрался, закрыл быстренько все текущие темы и ушёл. Больше я его не видел. Подозреваю, что с ним кто-то из М&М пообщался, но они не сознались :-(

    Катакомбы доделывал Азар, которого я забрал, вместе с Яшей и Костей, у 3Дшников. Их там мучали, заставляя описывать мир WoW на бумаге. Бугага. :-)

Об отношении к клиентам

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

    Итак, начну со своего отношения. Для меня продавец — не личность. Он делает свою работу и делает её как безликий сотрудник, а не как личность.

    Как следствие, в общении с продавцами я корректен и вежлив. Я не требую от них ничего, кроме их функций. Положил продукты на конвеер. Заплатил. При хорошем настроении — пожелал доброго дня/вечера/ночи/утра. Ушёл. Всё чисто утилитарно. Ничего личного.

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

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

    Я не ругаюсь с менеджерами, подходящими с вопросом «Вам помочь?», просто отвечаю «Нет, спасибо». Вежливый вопрос. Вежливый ответ. Вообще, кредо «не создавай другим проблемы» — вполне себе рулит.

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

    Меня обвиняют в эгоцентризме, чванливости и т. д.

    Что характерно, никто из обвинителей не знает даже имени своего управдома. Не то, что имён продавцов. А ведь имя — первое, с чего начинается Личность.

    Я прихожу в магазин за покупками, не требуя ничего, кроме базового обслуживания, и ни разу не нарывался на хамство или неадекват. Равно, как и у чиновников при оформлении документов. Ни разу. В жизни.

    Аналогично и я старался не создавать им проблем. Не вижу в такой позиции ничего плохого. Очень социальная и неконфликтная. Меня бесят уроды, устраивающие конфликты, мешающие другим покупателям. Их любимый метод: обозвать продавца, а когда тот ответит (как угодно, хотя бы фразой «пожалуйста, будьте вежливы») — обвинить в хамстве.

    Относясь беспроблемно к соблюдению круга обязанностей, я жутко не люблю когда от меня или от кого-то требуют то, что не входит в круг обязанностей. «Поцелуй в жопу в прайсе не значится».

    Рассмотрим на примере того же «Бойцовского клуба».

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

    Артников, обращавшихся ко мне с вопросом «почему мои арты не рулят», я не был обязан обрабатывать.

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

    Артники для меня НЕ КЛИЕНТЫ. Я как инженер-технолог на заводе, а не менеджер в салоне.

    Фразу «артники несут деньги» мог привести в качестве аргумента только тот, кто не понимал, что я делаю.

    Мои разработки — вот, что приносило деньги.

    А вежливое общение с «клиентами» — это к Алхимикам. Они за это получали побольше меня, кстати. Разделение труда.

    До кучи забавный парадокс. Артники — это менее 20% общей прибыли «Бойцовского клуба». А 80% — безымянные игроки. Но почему-то игроков кидать через хуй считалось нормальным, а Артники — клиенты, бля.

    Помню скандальную ситуацию на форуме. Говорят, я «отвечал резковато».

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

    А если это вне круга моих обязанностей, то какого хера я должен быть вежлив с охуевшими от собственной невъебенной злоебучести мудаками?

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

    Патовая ситуация. Навесить мне обязанность «быть вежливым» — невозможно, это не моя работа.

    Сделать артников «вежливыми» — аналогично: артники в реале — адекватные солидные люди, но в «Бойцовский клуб» они приходили расслабляться и вели себя как тупые отморозки в большинстве своём.

    Ошибки росли и усугублялись. «ВИП»-клуб. 10к евро. Единоразово. Никакой абонентки.

    «Виповцы» получали на каждом праздновании «Бойцовского клуба» отдельное помещение и сервис, им меняли все арты и делали индивидуальный дизайн. Чем закончилось? Им вернули эти 10k, пусть и в игровой валюте.

    Вот вы считаете, это нормально? Они, заплатив менее 10% среднемесячной прибыли «Бойцовского клуба», выедали мозг двум админам, двум программистам и начальнику отдела в течение нескольких лет, получили деньги обратно И ЕЩЁ ОСТАЛИСЬ НЕДОВОЛЬНЫ.

    Всё это привело к глубокому, растущему конфликту между руководством и разработчиками.

    Нас обязали писать «извините» каждый раз, когда сервер падает.

    За что извиняться? Мы обещали бесперебойную работу? Нет. Кто-то из нас виноват в том, что железка сгорела? Нет. И фирма АМД перед нами не извиняется, так почему же мы должны извиняться? Это делает нас виноватыми. И действительно: через некоторое время даже оперативно устранённые неполадки вызывали море негатива со стороны юзеров, осознавших, что МЫ ВИНОВАТЫ.

    Я помню, когда я играл, Sand City висел 70% времени, а каждую полночь там был откат половины юзеров. И никто не извинялся. Хотя, Мерлин-распиздяй просто, по ходу, забыл создать часть директорий. Мы сделали игру лучше и стабильнее и остались виноватыми.

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

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

    Причина запрета блоков: было 500 блоков в сутки, из которых 450 это 0-1 уровни.

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

    Посмотрите на Близзард. Они на хую вертели все требования пользователей. Их программисты не общаются с пользователями, а общаются лишь «постеры» и ГМы, получающие за это деньги. Именно ЗА ЭТО. Они кидают баланс постоянно то в одну, то в другую сторону. Чего стоило изменение эффективности хейста вдвое (а потом обратно). И, тем не менее, плевать им на крики о балансе.

    Балансом 1 на 1 они даже и не пытались заниматься. Есть классы, специально созданные друг против друга. Варриору ничего не светит против мага. Но в 2 на 2 — другие правила. И никто не ноет «ыыы... я не могу ПВПшиться в протекшин ветке». Блядь, конечно, не можешь — все это знают. В «Бойцовском клубе» же, с вечными извинениями за всё, что ни тронь — тут же нытьё.

    ЫЫы... убрали воздушным магам возможность спамить Цепь Молний. Ужас какой. Они были вдвое круче остальных, а теперь только в 1.5 раза. И те отсосы, которые играли, как говно, вдруг поняли, что даже такой мощный подкласс, как воздушный маг, не гарантирует победу. Кто виноват? Конечно же, Администрация.

    Почему? Опять же — отсутствие честной декларации прав и обязанностей. Легко в соглашении написать, что пользователь имеет право только на прекращение использования сервиса. А на форуме за слова ответить? Ессно, нельзя... они ж «клиенты».

    Как правильно сказал один человек, не надо работать с пидорасами, даже если они клиенты — для естества вредно.

    Фух, что-то я отвлёкся. В общем, простое правило: живи и не мешай другим. Требуй то, что имеешь право требовать, но лишь проси там, где этого права нет. Как-то так.

Об оставшихся

    Когда «ушли» Влада, была тема, что с ним общаться нежелательно. Я, как обычно, положил на это болт. Говорить особо было не о чём, но игнорить его? С хера ли?

    К тому же, он подкинул пару-тройку полезных советов (всё же Влад — админ, а Роман — тупая деревенщина без навыков и мозгов, умудрившаяся на пару с товарищем хостером поставить раком NFS на два месяца (август-сентябрь 2007) и сделать Апач регулярно отваливающимся).

    Ремарка. Жутко не люблю, когда со мной спорят идиоты. В августе 2007 кто-то ддосил IMG-сервер. Да так, что он лагал на уровне ядра. Эти задроты неделю пытались это исправить, потом ещё неделю впаривали, что всё нормально, пока я, озверев от этого мудизма, не потребовал поставить фрю и не ебать мозг. Фре на ддос было параллельно. Как и ожидалось. После был дивный момент, когда великий админ Роман, блядь, поменял доступ на сервера и не счёл нужным меня проинформировать, а ночью опять грохнулся NFS и была великая ебля с плясками для оживления железяки при полном отсутствии рутового доступа.

    С тех пор, мы друг друга... слегка недолюбливаем. Я считаю, что зря пожалел это убожище и взял его в свой отдел, а не отправил вслед за Сашей (мудоид «писавший» mail.combats.ru). Он, сука, явно догадывался об этом моём сожалении. Но, поскольку он оставался единственным админом в «Бойцовском клубе», то, ощутив свою охуенную незаменимость, начал выёбываться.

    Ремарка 2: я не против выебонов. Если человек реально отвечает за слова и профи в своём деле — я заткнусь и не буду мешать.

    С тем же Владом никаких проблем не было. С Блэкманом были. И именно Блэк в своё время ухитрился проебать конфиг апача так, что база юзеров оказалась доступна из веба. .htaccess забыл скопировать, видите ли. Но я отвлёкся.

    Итак, конкретные люди.

    Ирина (полугендир). Мы проработали вместе столько лет. Я прикрывал тебя, когда меня спрашивали, хорошо ли ты справляешься с происходящим в офисе. Я игнорировал неоднократно пересказанные мне разными людьми твои слова обо мне же. Считая, что завидовать зарплате — глупо. Ты не смогла мне даже ответить на простой вопрос: уволен ли я или что происходит?...

    Костя (геймдиз). Я попросил перевести тебя от художников, где вы втроём были кандидатами на увольнение. Мы работали вместе. Ты отпрашивался в другой отдел — я не возражал. Понимая, что зарплата... семья... дочка...

    Там ты обломался и попросился опять в мой отдел. И я тебя снова взял. Хоть тем уходом ты создал мне серьёзную проблему.

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

    Вася (программист). Понимаю, занят скроллами. И вообще, скроллы почти переросли в новый отдел, где ты — начальник.

    Никому из вас я не сделал зла. В аське остался только Яша. Он же рассказал мне, что происходило.

    Его же и уволили с формулировкой «слишком близко работал с ...». Забавно, не правда ли?

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

    Сегодня я видел разницу. Видел другое отношение как к сотрудникам, так и к работе.

    Другую атмосферу, где люди не похожи на побитых собак.

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

По просьбам телезрителей, немного технических решений

  1. «Бойцовский клуб» никогда не использовал никакую СУБД. Только файловые решения.

  2. «Бойцовский клуб», к моему огромному сожалению, изначально создавался не как один монолитный скрипт, а как набор скриптов. Для обмена данными о юзере они использовали виртуальный диск (tmpfs). Это породило море проблем с одновременным доступом к данным.

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

  4. Где-то в 2004 мы созрели для пробы сетевого диска. По началу на nfs писались только общие логи. После — некоторые общие для всех серверов данные. Через несколько месяцев мы рискнули и перенесли на nfs всех юзеров (до этого юзеры были только на серверах). Скорость доступа упала в 10-15 раз. Пришлось увеличить период сохранения юзеров с tmpfs в основную базу с 5 минут до 30. Отсюда и откаты до 30 минут, если был повреждён tmpfsный файл. Но был и явный плюс. При зависании железки терялось только tmpfs, а не файлы на харде (они оказывались забитыми нулями при внезапном ребуте и приходилось откатывать на полночь).

  5. Каждый бой писался в отдельный файл. Имя файла — номер секунды.dat. Если такое имя уже занято, то номер увеличивался на 1 и т. д. Когда появились подземки, число боёв выросло с 15к в сутки до 80к. Секунд стало мало. Добавили дробную часть (rand).

  6. Логи писались в текстовый файлик, бэкапер, запускаемый в полночь, сохранял этот файлик с текущей датой в имени и гзиповал его. Zgrep оказался на порядок быстрее и чем SQL, и чем Oracle.

  7. Однако, паладины, как известно, лица нетрадиционной ориентации. Запросить данные за 90 дней для них — было раз плюнуть. Сервер не справлялся, пришлось сделать ограничения, как временное решение, а потом отдельный сервер для обработки запросов по логам.

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

  9. Распараллеливание. Как распараллелить подземки на кучу камней и при этом не лишиться кеша? Очень просто. Пусть запущены 5 копий dungeon.pl, копия 1 обрабатывает только сбор групп. Копии 2-4 обрабатывают подземки, каждая свою. Правило простое: остаток от деления номера подземки на 4 (0 — 1-я копия, 1 — вторая, 2 — третья, 3 — четвёртая).

  10. Распараллеленный чат. Всякая заумь с тредами не прокатила. Мемкеш и шаредмемори оказались безумно медленными и я сделал всё по старинке, как в C когда-то.
    Есть файл на tmpfs. На 100000 записей (буфер чата), по 4к каждая (фиксированное значение). Чат делится на chat.pl, который показывает и пишет в чат (сохраняя изменения буфера в файле), и на chat_r.pl, который только показывает. Т. к. показ встречается примерно в 100 раз чаще, чем запись, то основная нагрузка ложится на копии chat_r.pl, которые подчитывают нужные им элементы массива из файлика. Им не надо читать весь файл. Нужен элемент N20? Читать с позиции 20*4k, первые 4 символа — длина записи. Затем читается сама запись и thaw. Вуаля. Чат без лагов даже на 4 тысячах юзеров. Чуть сложнее механизм отображения списка людей в комнатах и передачи актуального состояния юзера от chat.pl к chat_r.pl, но схема оказалась простой и надёжной.
    Классика, хуле...

  11. Подземки и боты.
    Тут простое решение. Пока юзер не видит бота, он (бот) существует в виде короткой записи о факте наличия. Как только юзер его увидел — бот создаётся, получает хиты и кучу справочной информации о нём. Все боты по дефолту неактивны (даже не обрабатываются). Когда игрок входит на этаж, то движущиеся боты активируются. Когда игрок вступает с ботом в бой, создаётся боевая копия бота уже с характеристиками полноценного персонажа, а данжовая копия получает флаг ожидания результата конца боя (иногда этот механизм даёт сбой при рестарте сервера и выдаётся ошибка при попытке напасть). Если бот убит — он, опять же, помечается неактивным. Самое громоздкое в этом всем — механизм реинициализации данжа (после рестарта скрипта, например).

Немного о балансе

    Не раз я встречал забавные рассуждения про рассчёт баланса.

    Вырисовывалась эпическая картина IT-отдела, где десятки программистов и математиков высчитывают по Очень Сложным Формулам что-то типа Идеального Баланса.

    Почему же тогда Близзард — компания с мировым именем, пятнадцать лет создающая мировые хиты, заработавшая миллиарды и могущая позволить себе нанять хоть сотню математиков — дёргает баланс из стороны в сторону во всех своих играх с каждым патчем? Они же лучшие в мире! WTF?!

    Age of Connan — вложены десятки миллионов в разработку. В результате через месяц после выхода цена заклинаний некромансера меняется в ТРИ раза.

    Осознайте масштаб лажи: это не пара-тройка процентов тюнинга, это ТРИ ДОЛБАНЫХ РАЗА. Там вообще зверски всё менялось прямо на ходу.

    Думаете, они тоже зажмотились на математиков?

    Принцип Бритвы Оккама гласит, что наиболее простое объяснение — верное.

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

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

    А настоящая правка баланса идёт методом последовательных приближений.

    Причём, никто не пытается достичь Идеального Абсолютного Баланса. Как правило, работают с отдельными критериями. Типа «все dps-классы должны в геймэнде иметь примерно равный урон, +/- 15%».

    Интереса ради, попробуйте дать чёткое и понятное определение баланса в «Бойцовском клубе», например. Абсолютно прозрачное и конкретное.

    ЗЫ.: Кстати, зачастую баланс приносится в жертву «красивым цифрам».

    Вы не задумывались, почему в талантах WoW так много кратного цифрам 3, 5 и 10? И нет ни одного таланта, увеличивающего абилку, скажем, на 28.37%?

Автор: hist_kai.

 

 

Комментарии:

kassandra_dev wrote:
Oct. 12th, 2008 10:40 pm (UTC)
По поводу паладинов.. А что было поделать, если серийные взломы и массовые кидалова в моде с 2003 года?:)

hist_kai wrote:
Oct. 12th, 2008 11:14 pm (UTC)
В идеале - сделать шедулер, который бы собирал информацию ночью, в периоды неактивности. Хоть это и затормозило бы проверки, зато спасло бы сервера от S.U. в пиковую нагрузку.

gnidik wrote:
Oct. 13th, 2008 09:30 am (UTC)
Кай, расскажи природу глюка с раздвоением персонажа при помощи вокзала, плиз ))
Помнится, до Скипио у меня был чар Гнид, 7-го левела. Как то я умудрился приехать из демонса в кэп и получить двух персов в двух города, к каждому из которых осуществлялся доступ по прямой ссылке с именем города. Причем вещи, снятые с Гнида-2, благополучно пришли на Гнида-1, добавились в рюкзак и были замечателно проданы )))
Когда я в очередной раз забивал на бк, заблочил ПСЖ одного из них. Второй еще некоторое время жил, потом кто-то стукнул палам видимо, и его тож блоканули. Так и существовали оба заблоченых до автоматического стирания из базы )

hist_kai wrote:
Oct. 13th, 2008 02:26 pm (UTC)
Каждый сервер имеет независимый набор персонажей.
Демон переноса "акцептил" перенос, сохраняя персонажа на другом сервере, а вокзал удалял его на текущем и ставил поле .nosave, что-бы никто перса не сохранил на tmpfs.
Однако, иногда эта хрень не срабатывала. Например, когда tmp_cleaner, который подчитывал данные и сохранял их на основу, УЖЕ прочитал персонажа, но ЕЩЕ не сохранил его на основу. Шанс невелик, но при тысячах событий и тормозном nfs - порой случалось.
При этом, удалялась связка login-id с сервера, так что оказывалась доступна лишь цифровая ссылка.
login-id реализовано на беркли, и иногда, по непонятной причине, сдыхало. Тогда запускался скрипт, создающий эту базу заново, читающий всех юзеров на сервере.
Таким образом, цифровые ссылки получали вторую жизнь, уже как полноценные персонажи, и можно было даже авторизоваться, если проводить авторизацию прямо с сервера, где оно лежит.
Позже, этот скрипт был доработан, он умел вычислять дубликаты и удалять их. За месяц в 2008г набегало около 2-5 дублей.

flipped_coin wrote:
Oct. 13th, 2008 11:31 am (UTC)
ну и про клонирование артов тогда уж, чего уж там ;))

hist_kai wrote:
Oct. 13th, 2008 02:29 pm (UTC)
Пфф... каждый арт имел уникальный номер и запись в специальном логе о продаже. Каждые сутки создавалась полная сводная таблица всех артов, и скрипт оповещал, если в ней что-то не сходилось, типа двойной ID или неизвестный ID (нет в записи о продаже). Может быть, в 2002/2003г клоны артов и были, но я об этом ничего не знаю. Да и нельзя их было через ломбард склонировать - они туда не складывалсь.
А еще позже, арты были привязаны к персонажам "для пущей надежности".
В целом, клонировали чит-вещи в 2003. Они были круче артов.

ashegeda wrote:
Oct. 15th, 2008 12:32 pm (UTC)
Спасибо за инфу, перевариваю

ashegeda wrote:
Oct. 15th, 2008 01:54 pm (UTC)
Куда делся чат, версия которого отрабатывалась в китеже? Там была навороченная системауправляющих символов и фильтр мата. Насколько я понимаю, в это время ты ещё работал в проекте

hist_kai wrote:
Oct. 15th, 2008 02:52 pm (UTC)
Сисема управляющих символов - это про виртуальные комнаты?
Фильтр мата, по-моему, работает.

ashegeda wrote:
Oct. 15th, 2008 05:21 pm (UTC)
Чат без лагов даже на 4 тысячах юзеров. Чуть сложнее механизм отображения списка людей в комнатах и передачи актуального состояния юзера от chat.pl к chat_r.pl, но схема оказалась простой и надежной.С какой радости тогда слетает статус /dnd, который по-идее, должен сниматься только при переходе в другую локации и при явном сбросе пользователем? Те же откаты? Но при этом инфа, связанная с персонажем, и состояние инвентаря не меняется.
Ещё хочется узнать, с чем связано отсутствие реации разработчиков на явно документированные игроками баги?.. Например, тривиальное копирование счётчика передач при переходе через сутки (транзакция, начатая в одни сутки, переносит счётчик передач в другие сутки). Хотя, с торгователем там вообще куча весёлостей ;)

hist_kai wrote:
Oct. 15th, 2008 05:55 pm (UTC)
Потому что, статус DND не сохраняется на диске. И при рестарте чата, он, ессно, слетает.
Откаты к чату вообще отношения не имеют и существуют абсолютно везде, где часть данных хранится в кеше любого вида (проекты с 100 юзеров онлайн, живущие без кеша я не рассматриваю) - даже в WoW.
Передачи писал Сергей, которого позже перевели на флэшевый проект. А копаться в его коде из-за столь мелкого бага, при наличии моря задач типа "надо было сделать вчера" - не интересно.
Он и так подарил нам увлекательнейшую работу фиксу таких багов как клонирование умений через БС и пропадание рюкзаков.
Вообще, забавляет такая точка зрения. Я так и представляю себе офис, где сотня проггеров сидит и нихрена не делает, лениво плюя в потолок... а СТРАШНЫЙ БАГ ПЕРЕДАЧИ ПОЖИРАЕТ ЮЗЕРОВ. Бугага.
Работающих над БК в 2007г проггеров было 3, включая меня.

ashegeda wrote:
Oct. 15th, 2008 06:53 pm (UTC)
Понятно, что операции с файловой системой по определению быстрее, чем работа с БД, однако, нужели от БД при разработке оказались СОВСЕМ? Это же надо реализовывать по-новой индексы, поиск и прочее... Пусть объекты поднимаются из файлов, пусть там же хранятся логи, выписки, чат... Хоть частично имело бы смысл использовать тот же Postgres. Или я не прав?

hist_kai wrote:
Oct. 15th, 2008 07:00 pm (UTC)
Мм... лучшие конкретные примеры, где БД оказалось бы удобнее в случае БК?

orlock_eternal wrote:
Oct. 15th, 2008 07:27 pm (UTC)
Интересно... не знаю, как сейчас - пару месяцев назад был одним знакомым найден забавный баг в подземке (код бага не давал, зажлобился.. а после и вовсе из БК пропал), которым можно было один предмет поднимать кучу раз. Щит безумца раз 20 подняли - все 20 щитов были в инвентаре. Правда после оной операции, персонажа выкидывало из подземки и надо было релогиниться... на факт оставлся фактом - ударный бизнесс для 4х-5ти людей из всей игры. Интересно (как и многим игрокам БК) - почему множество проэктов было заброшенно и нереализованно? То же Хранилище эликов [2] в муне и еще нескольких городах осталось в стадии строительства... Торговый Зал столицы остался ток в столице. Не знаю, что из себя представляет Китежград, но не раз видел персов, зареганныхв ИстСити и который почему-то пропал и исчез... а недавние скрины Волынщика с тестов новой системы статусок под флагом Иста идут... напоминает чем-то Сталкера - куча идей и половина или убрано, но не вырезано (висит балластом), или тупо не доделано...

ashegeda wrote:
Oct. 15th, 2008 07:37 pm (UTC)
Я уже писал где-то: китеж - просто город с изменёнными локациями, который использовался как полигон. например, с ЦП там были входы в каты, в грибницу, на хоккейную площадку и новую БС. многие функции были отключены. китеж использует тот же сервер картинок (img.combats.ru), что и остальные города, поэтому возможен доступ простым смертным к образам и дизайну ещё на этапе тестирования. Однако, просачивающаяся информация об образах до их официального появления в большом БК - это инсайд чистой воды (ингридиенты и комплекты не в счёт, там механизм формирования имени картинки тривиальный)

ashegeda wrote:
Oct. 15th, 2008 08:14 pm (UTC)
можно ещё узнайть о рейтинге? о том самом, который топ20? Каким образом сейчас осуществляется борьба с накруткой. Есть предположение, что там всё просто: если заходил порсонаж с живой сессией и его IP и ID не был зарегистрирован ранее, то счётчик увеличивается на 1, IP и ID перса регистрируются. Участвет ли в процессе фильтрации время посещения ресурса?.. В общем, интересны тонкости ;)

hist_kai wrote:
Oct. 15th, 2008 08:34 pm (UTC)
Довольно просто. Когда игрок заходит в БК, ему ставится шифрованая кука, которая содержит в себе его уровень/склонность/id и контрольная сумма зашифрованная неким паролем.
Соответственно, скрипт рейтинга декодирует ее, проверяя на трушность с помощью контрольной суммы. Если игрок 2+ уровня, то он считается за unique hit. Придумано и сделано за час, когда достали накрутками :-)

finess wrote:
Oct. 15th, 2008 11:19 pm (UTC)
combatsworld
http://***/
проэкт запустят или это была шутка :)

hist_kai wrote:
Oct. 15th, 2008 11:55 pm (UTC)
Re: combatsworld
На него полгода как забили, по-моему, уволив всю команду разработчиков и почти всех художников.

upsy wrote:
Oct. 16th, 2008 03:14 am (UTC)
Тут речь проскочила про артников и их артефакты.
Кай, тогда заодно и вопрос об имевшем место популярном ресурсе Артники.ру, а в частности: почему после приобретения этого ресурса новые хозяева его не развили, как было обещано, или что случилось? Какая история вообще всего этого закулисья? Недавно обнаружилось, что вроде там что то ожило, но никому ничего не известно, уж сильно всё это покрыто мраком, всё что связано с этим проектом... Неужели этот ресурс был приобретен только с целью прикрыть информацию про то, сколько денюжки артники принесли в проект?
Расскажи людям, многим это интересно было бы.

hist_kai wrote:
Oct. 16th, 2008 04:14 am (UTC)
Да не, его взяли, потому что "он понравился, вы его перепишите на перле, интегрируете с базой БК и будет круто".
Переписывание поручили Васе (человек, который занимается скроллами), а он то ли забил, то ли ему еще какие задачи докинули - хз. А может, сделал и не поставили на продакшин - я не знаю, не спрашивал. Сторонние ресурсы меня не интересовали никогда.

karas_from_hell wrote:
Oct. 16th, 2008 04:15 am (UTC)
В принципе ничего нового не узнал. Всё как всегда, каждый гребёт под себя и копает под другого.

ashegeda wrote:
Oct. 16th, 2008 06:56 am (UTC)
С чем был связан переход на JS framework? Он писался самостоятельно? Или был позаимствован?

hist_kai wrote:
Oct. 16th, 2008 07:24 am (UTC)
С тем, что он удобнее юзеру - меньше данных грузить, не дергается страница при обновлении. И серверу он тоже удобнее. Писался самостоятельно.

zavulon88 wrote:
Oct. 16th, 2008 07:51 am (UTC)
А можно вопрос от обычного быдло-юзера?
Прожорливость БК в отношении трафика - неизбежная необходимость? Или малоибущий фактор?
Да да я понимаю =) в век высоких технологий и развитых телекомуникаций заботиться о трафике признак совсем уж бомжатного социального уровня, но анлим не у всех и не везде. К примеру большую часть времени я играю на работе =)) ( а как вы думали я же быдло-юзер так и должно быть) где у меня 3 рублем 1 мб ( да да фирма за потреблённый трафик с нас сдирает деньги вот такие скаты =) ) А дома не смотря на анлим мне не играется ибо жена дети любимый телеканал спорт и прочие прелести жизни. Так как же про трафик ... под бк невозможно было сделать клиент? Каторый ну экономил бы трафик чтоли.
(если кажется текст сообщения оскорбительным протрите монитор)

ashegeda wrote:
Oct. 16th, 2008 08:02 am (UTC)
на самом деле, траффик от БК в большей части сжат gzip'ом. А передавать данные надо по-любому. Разрабатывать свой протокол обмена данными с клиентом - ещё одна доля геморроя. IMHO

hyppopotam wrote:
Oct. 16th, 2008 09:11 am (UTC)
В подземках бывает что нападая на бота ты попадаешь в бой другой группы. Проблема существует уже год, не меньше. С чем это может быть связано? (никак не могу "вкурить", учитывая объяснения устройства файлов выше)
С неподдельным Уважением, Matros Lom [9].

hist_kai wrote:
Oct. 16th, 2008 03:01 pm (UTC)
Это создание разных мобов с одинаковым ID.
Иногда, одновременно создавался, скажем, пет и бот подземелья, под одинаковым номером, но пет чуть позже. И нападая на бота, персонаж, на самом деле, нападал на пета в каком-то другом бою. Шанс совпадения крайне мал, но на сотне тысяч боев в сутки...

noonesshadow wrote:
Oct. 16th, 2008 11:31 am (UTC)
У меня три вопроса..
1) CombatsAPI.. почему загнулось, как загнулось?.. это ведь позволило бы серьезно разгрузить сервера (многие клан-сайты сканируют все завершенные бои для определения изменений персонажей)
2) Несколько лет назад была такая штука, если лог боя больше определенного размера, то при попытке просмотреть статистику боя выдавалась ошибка MySQL.. Точно никаких СУБД не было?..
3) Интересует реакция на наше первое появлнение в Китеже :)

hist_kai wrote:
Oct. 16th, 2008 03:46 pm (UTC) 1. На финансовом вопросе. Я был готов написать простенький интерфейс для выгрузки боев (и сделал его паладинам много позже, по-моему). Но кое-кто захотел брать за это деньги, я огорчился и отложил subj навсегда.
2. Это просто прикол был. Жутко хотелось почитать комменты по поводу SQL тогда :-)
3. Еще бы я знал, когда оно было "первое" и кого "нас" :-)

dab_78 wrote:
Oct. 16th, 2008 01:27 pm (UTC)
У меня один-единственный вопрос, но зато мучает он меня очень давно :)
Если есть информация, то скажи, пожалуйста, с какой целью было принято решение об отмене клановых абилок за рейтинг? Понимаю, что вопрос не технический... хотя, может и технический? :)

hist_kai wrote:
Oct. 16th, 2008 03:44 pm (UTC)
Чтобы убить топкланы. Они получили слишком много влияния и стали зарываться. Устраивать вторых дарксоулов/босов никто не хотел.

dab_78 wrote:
Oct. 16th, 2008 04:05 pm (UTC)
с этим же связаны разные запреты на клановых ботов (в комнатах, в магазинах), чтобы не развивались клан-сервисы? Или реально большая нагрузка на сервер шла?

hist_kai wrote:
Oct. 16th, 2008 04:13 pm (UTC)
Мм... не, там появилась возможность напрямую брать списки. Но для ограниченного числа кланов. А остальным запретили даже ботов.

valior wrote:
Oct. 16th, 2008 05:31 pm (UTC)
Причина...
А почему тя уволили? Должно быть сильно насолили, что ты решил открыть правдау о БК

manateehunter wrote:
Oct. 16th, 2008 08:36 pm (UTC)
Знаешь, случайно нарвался на етот сайт через сталкеров, и прочитал все сразу, так втянуло. Все что могу сказать ето всех в жизни ебут, но ты себе медаль как минимум заслужил за всю ету хуйню.
И помимо того, просто большое человеческое спасибо, несмотря на все ассоциации, БК помог мне многое пережить.

stragnik007 wrote:
Oct. 16th, 2008 11:37 pm (UTC)
+500

stragnik007 wrote:
Oct. 16th, 2008 11:43 pm (UTC)
про БлэкДжэк...
привет Кай :)
может помнишь меня?) Ночной Стражник есть такой... играли на бильярде в далеком 2005 году... ты выиграл - повесил мне хаос и подарил читерный топорик...)) ну это не суть...
у меня вопрос по БлэкДжэку бкшному... там ведь скрипты-наебки есть? просто я там провёл не мало времени... вёл статистику и т.д. даж статью написал... просто убивают меня расклады типа на моё 21о приходит блекджек дилеру... или при моих 20 дилер набирает 21... особенно часты были такие вещи при крупных ставках... сути это конечно не меняет... на элики я в бд нормально поднимал в свое время :)))
вообщем если в теме - ответь пожалуйста, как устроен бкшный Блэк Джек?

hist_kai wrote:
Oct. 16th, 2008 11:52 pm (UTC)
Re: про БлэкДжэк...
Абсолютно честно он устроен. Нет необходимости читерить, когда сама система БЖ гарантирует больший процент побед дилеру.
Карты четырех (или двух, не помню) колод перемешиваются перед началом партии и дальше извлекаются по одной. Если колода опустела (что фантастика, но все же), то создается еще одна.

phantom_tm wrote:
Oct. 17th, 2008 08:58 am (UTC)
Кланы и склонности
День добрый, а можно узнать из каких соображений была убрана регистрация кланов со склонностью и какие идеи были по этому поводу?

hist_kai wrote:
Oct. 17th, 2008 03:58 pm (UTC)
Re: Кланы и склонности
Была идея, получения склонности клану за игровые действия.

redon5 wrote:
Oct. 17th, 2008 12:37 pm (UTC)
Кстать, а анализом рынка кто то занимался?
Вас там не заставляли играть в арены/всякие там земли/техномагии/двары/территории и.т.д с целю понять, что сделали нового конкуренты..
И ваше в принципе как по ощущениям БК остается лидером рынка по доходу и посещаемости (майлу стремно верить, аля арена, хз кто там как крутит)?
Ещё по игре ходил слух, что админы сами играют простыми чарами дабы понять возможно ли играть без екр. и кому как живется, но я думаю это из серии фантастики так убивать рабочие время.

hist_kai wrote:
Oct. 17th, 2008 04:01 pm (UTC)
Зависит от критериев оценки.
По прибыльности - далеко не первый.
По посещаемости - на начало 2008г был первый.
Арена, суть 7й волк. А это значит пиратские диски, которые прописывают при инсталяции игры с них арену - как домашнюю страницу. Mail.ru ее снимал несколько раз с рейтинга, но потом возвращаел.
Играли без екр, хоть с ускоренным восстановлением.

alex_nomad wrote:
Oct. 17th, 2008 01:12 pm (UTC)
Несколько технических вопросов
При программировании переодевалки все время сталкиваюсь с тем что некоторые формулы не бьются с реальными. Соответственно прошу подтвердить или опровергнуть:
1. У мечей написано (как пример):
• Мастерство владения мечами: +2
• Мф. мощности рубящего урона: +12
• Рубящие атаки: Регулярны
• Режущие атаки: Ничтожно редки
Вопрос: Мастерство владения мечами применяется при обоих видах атаки или только при одной?
Еще вопрос: Мф. мощности рубящего урона при режущем уроне применен не будет, а будет использоваться Мф. мощности режущего урона? (понимаю что тупой вопрос, но все же...)
2. Правильно ли я понимаю, что у нейтралов в кулачном бою только увеличенный максимальный урон (3*уровень), а не "кулачный урон увеличен на уровень игрока"?
3. Мастерство добавляется к урону оружием с коэфициентом? А для двуручки? А для максимального значения?

hist_kai wrote:
Oct. 17th, 2008 04:06 pm (UTC)
Re: Несколько технических вопросов
1. Мастерство владения оружием применяется на все удары этим оружием. Мощность удара применяется только на удар этого типа.
2. Да.
3. Мастерство увеличивало мин. / макс. базовый урон оружия, примерно на 8% за единицу. У разных типов оружия по-разному.
На бонусный урон за силу/уровень оно не влияло

deylsun wrote:
Oct. 17th, 2008 01:54 pm (UTC)
комплекты новые
а что это за комплекты?
может ты знаешь? для каких уровней, екровые или нет, какие это классы ну и когда планируется их ввести?
и ещё вопрос очеень мучает) когда меняли действие инты на мф и сделали что теперь даёт 5 крита и анти, вообще очём думали?)) в честь чеготакое изменение, которое с ног на голову баланс поставило?

hist_kai wrote:
Oct. 17th, 2008 04:10 pm (UTC)
Re: комплекты новые
Я не помню, что за сеты были. Сделаны вроде давно, но не вводились. К тому же, может быть уже переделаны.
Все статы должны быть примерно равны по силе, отсюда и новые значения. К тому же, зачем две характеристики (ловкость/интуиция) взаимоисключающие друг друга?


⇓ 

Поделись ссылкой на Seoded.ru с друзьями, знакомыми и собеседниками в соцсетях и на форумах! А сам сайт добавь в закладки! Так победим.

Поделиться ссылкой на эту страницу в:

Полезные ссылки:

Как зарабатывают на онлайн-играх Можно не играть, а путешествовать и зарабатывать

Ещё материалы по этой теме:

Персональный надзиратель Интервью с Денисом Болтиковым Почему фрилансеры уходят с рынка Профессия веб-райтера Как сэкономить запуская стартап-проект

основан в 2008 г. © Все права на материалы сайта Seoded.ru принадлежат Алексею Вострову.
Копирование (полное или частичное) любых материалов сайта возможно только с разрешения автора и при указании ссылки на источник.
Ослушавшихся находит и забирает Бабайка!