Розробка «браузерки» - рік і три роки мук

Фактично пройшов рік з моменту останньої статті — весь рік мовчання було пов'язано більше з відсутністю масштабних цікавих моментів, які, здебільшого, були висвітлені в перших статтях [1, 2, 3, 4]. Однак новий розповідь як мінімум може висвітлити підсумки річної роботи проекту з моменту старту в публічний доступ.

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

Пернатск :: Лабіринт похмурого лісу

Робочий процес і команда
Насправді, в основному вигляді процес роботи над проектом не змінився: ми так само маємо кілька розгорнутих проектів з різних гілок системи контролю версій під тестування, оновлення збираємо раз на два тижні, але при цьому змінилися деякі деталі. По-перше, команда досить сильно розширилася з часу останньої примітки: додалися гейм-майстри, модератори та тестувальники, причому дуже хороші тестувальники, враховуючи перевірку різних изворотов в функціоналі, до яких мій мозок далеко не відразу додумується. По-друге, команду до художникам додався ще один чоловік, який працює під чуйним керівництвом нашого основного художника, а значить, і стилістика, і ідеї будуть такими ж чудовими, якими вони були рік тому.
Пернатск :: папуги
По-третє і по-четверте, відбулися деякі події з різним часом звершення, які призвели до зміни часу роботи над проектом у частині основного складу розробників. На початку осені координатор проекту покинув основне робоче місце і перейшов в проект на постійну основу, так як сил на суміщення вже явно не вистачало — це, безсумнівно, плюс для проекту, але постійний ризик для сімейного бюджету. Слідом за ним, на початку поточного року, я особисто в спробі змінити місце роботи не втримався за нового роботодавця через розбіжності за технологіями, і також перейшов в проект на повний робочий день. У підсумку легкість роботи над власним проектом протягом усього дня, відсутність висить над головою начальства, власна відповідальність за свої терміни, можливість відволіктися від роботи за необхідності переважили всі плюси високої зарплати.

З'явилися деякі ідеї, пов'язані з проектом, але не впливають безпосередньо на проект — поки деталі сказати не можу, але задумка може і принести нову аудиторію, і відкрити новий напрямок роботи. Оскільки всі поточні трудові ресурси вже розписані на рік вперед, було прийнято рішення взяти додаткового розробника в якості джуніора-учня на часткову зайнятість (2-4 години в день), як раз на окремий проект, щоб допомогти якій-небудь людині почати свій шлях і заразом отримати в майбутньому лояльного перевіреного розробника, якому можна довіряти, готового вступити в нашу команду на повноцінний робочий день, коли такий момент настане. Перший «млинець» вийшов, як завжди, вдався, незважаючи на наявність деяких знань у людини. Відсутність питань по розробці, постійна робота «мовчки» звела нанівець нашу співпрацю, бо виходило, що наставництво з нашої сторони не потрібно, і лояльного ставлення не вийде добитися. Новий чоловік, який вийшов невдалого колеги на заміну, мав дещо менші знання, але це компенсувалося бажанням і прагненням, хоча як підсумок — знову періодичні «дірки» у графіку роботи, знову мовчання, знову відсутність інтересу.

Кілька років тому на конференції codefest почув фразу, яку єдину запам'ятав з усієї конференції (швидше, тому що вона цілком складалася з самопіару виступаючих, при цьому коштувала ще достатніх грошей): «Щоб співробітник хоч якось працював — йому потрібна «морквина» спереду і «морквина» ззаду. Але щоб працівник працював дійсно добре — йому потрібна «морквина» всередині», — кожен зрозуміє по-своєму, але «морквина» всередині є тільки в основної команди розробників, і для новоприбульців її наявність організувати досить складно. Швидше за все, коли справ стане трохи менше, спробуємо організувати нову вилазку з метою пошуку учня-помічника, але насильно змушувати і тягнути когось вже точно немає сенсу.

Пернатск :: Канат влади

Суспільство і популярність
Це досить незвичайне відчуття, коли незнайома людина, з яким з якихось причин необхідно скласти діалог, виявляється знайомий з історією створення проекту. Безсумнівно, це приємно і створює деяку додаткову мотивацію до дії.

Наприклад, зовсім нещодавно виникла проблема, яка практично неможливим проведення платежів через Робокассу по банківських картах, і мені довелося кілька разів писати та телефонувати в «саппорт», щоб вирішити це питання. В один з таких дзвінків дівчина-менеджер все-таки передала мій дзвінок з «першої лінії оборони» до фактичного відділу технічної підтримки. Я повідомив номер транзакції, за якою були скарги з боку користувачів, після чого почув приблизно таке: «Одну хвилину, шукаю транзакцію. Так-так, бачу, платіж по банківській карті, сто рублів, магазин Пернатск. Пернатск — це гра? Я про вас на Хабре читав». До слова сказати, вирішення проблеми почалося саме з цього дзвінка, як і було обіцяно, нашу ситуацію вирішили у зазначений термін і в нашу користь — дуже вдячні. Правда, проблема потім виникла знову, і знову, і знову, аж до щоденних дзвінків на лінію і початку розмови з іншими банками на тему еквайрингу.

Крім того, в наявності достатня кількість випадків написання статей про гру для особистих блогів і околоигровых сайтів, що дало додатковий приріст реєстрацій. Не можна не відзначити, що був помітний явний контраст статей про конкуруючі проекти: про нас відгукувалися краще, правда, різниці в коментарях я особливо не відчув (напевно, специфіка сайтів зіграла свою роль). В якості добавки періодично надходять листи з відгуками, порадами та пропозиціями, що додаткове спасибі всім, кого зацікавила доля проекту. І на додачу до загальних емоціям додалися три випуски «підпільної газети», що утворилися під натхненням від подій, що відбуваються в грі (картинки клікабельні).
Пернатск :: Підпільна газета Пернатск :: Підпільна газета Пернатск :: Підпільна газета

Безсумнівно, завжди знайдуться незадоволені кожною дрібницею, неадеквати та інші. Практично з самого початку проекту є загальновідомі особистості, критикують кожне оновлення гри — від висловлювань невдоволення якістю виконання до нарікання на нелогічність умов і безглуздя затії, але при цьому варто зауважити, що подібні гравці вперто продовжують жувати наш «кактус». Єдиний раз за рік гри був випадок появи божевільного спамера, що говорить нецензурну лайку в загальному каналі зв'язку, за що довелося вдатися до надзвичайних заходів у вигляді редіректу оного індивіда на непотребщіну, бо звичайний бан не давав довгострокового ефекту.

Чужі гроші
Один із самих головних питань будь-якого «стартапу», яким ми не вважаємо нашу команду і наш проект, виступає «Зробити — зробимо, але у кого взяти грошей?». Проблема фінансування, здавалося б, у наш час не є проблемою як такою — при наявності стартап-тусовок, величезної кількості інвесторів, кикстартера і інших подібних проектів — вже вибрати завжди є з чого. Однак хтось думає про фінансування, зупиняючи проект для пошуків, хтось замість цього намагається вирішити проект своїми силами — і ми вибрали другий варіант.
Пернатск :: Орли
Не скажу, що ми не шукали інвестиції, навіть навпаки, перебували в якомусь пасивному пошуку на протязі декількох місяців: розміщували пропозиції на інвестиційних майданчиках типу napartner.ru, розмовляли через знайомих з «великими дядьками», які потенційно могли б вкласти грошей (а грошей було потрібно дійсно багато, інакше все фінансування не мало сенсу). І скажу навіть більше — кілька разів починали закручуватися цікаві розмови на тему руху грошових коштів. Після розміщення на napartner з нами зв'язався один з інвесторів, з яким ми досить довго спілкувалися протягом декількох днів, але все закінчилося втратою інтересу з боку інвестора після отримання повного розкладу з нашим поточним на той момент доходів (горезвісні APRU\ARPPU і тому подібні показники, які нас фактично не сильно цікавлять, але дуже цікавлять людей з грошима). Мучити людину подальшими питаннями ми не стали: не цікаво — так не цікаво.

Далі були розмови через мого доброго знайомого, який з якихось причин багато допомагав мені по різних справах, у тому числі в свій час і з пошуком робочого місця, при цьому практично нічого не просячи взамін. Він має деякі зв'язки з «акулами бізнесу», які дійсно займаються інвестуванням, і інтерес з боку «великих дядьків» був, але завжди є якесь «але», що дозволяє інтересу згасати. Ми завжди розуміли, що інвестор бажає вкласти свої гроші куди-небудь і отримати дохід, хоча б у три-десять-тридцять разів перевершує початкові вкладення, і краще, щоб термін повернення не перевищував пару місяців — перебільшено, але правда. І ми ніколи не могли гарантувати ні терміни повернення, досить короткі для виділення гормону щастя у інвестора, ні багаторазове збільшення грошових коштів, що розслабляє м'язи щелепного суглоба. Наші підрахунки орієнтувалися на історії конкурентних проектів і здоровий глузд, обіцяти золото-діаманти і прикрашати їх макаронами не входило в наші плани, саме тому підсумок не змушував себе довго чекати: через деякий час інтерес у інвесторів завжди пропадав, ймовірно, вони знаходили більш вигідні проекти, і в цьому немає їхньої провини — це бізнес.

Кілька разів траплялися ситуації, коли до нас звертався людина з наміром створити власну гру, пропонуючи свої власні кошти (і, головне, ідеї) в якості початкових інвестицій. Розмір передбачуваних інвестицій у всіх випадках був дещо вищий порівняно з нашими витратами до запуску проекту, але і досить малий, щоб утримувати команду розробників. Давайте будемо чесними: якщо ми як команда змогли створити проект, практично не вклавши в нього грошей (а наш витрачений за два роки бюджет — це фактично ніщо), то це не значить, що наша команда кине поточний проект і почне робити новий на тих же умовах. Якщо інвестор бажає створити гру, то це передбачає повний оренду всієї команди, так як два паралельних проекту вести вже неможливо, і оплачувана робота для підтримки сімейних бюджетів розробників обов'язкове. Разом для мінімальної роботи необхідні: гейм-дизайнер, програміст, художник, дизайнер, копірайтер, маркетолог-рекламщик, офіс, расходка, бухгалтер, прибиральниця тьотя Люся, двірник, кіт і пара хом'яків — суму за ринковими зарплат хороших фахівців можна пробувати вважати, але двох-трьох мільйонів рублів не вистачить на запуск проекту з «нуля».

«Але ж можна взяти готовий чужий движок, взяти частину графіки, трохи домалювати — і отримати бета-версію!» — часто відповідали нам у відповідь, навіть не здогадуючись, що копання в чужому движку, написаному 5-10 років тому, підлаштування своїх ілюстрацій під готові чужі, придумування концепту розвитку в рамках функціональності готового проекту тільки ускладнює завдання, і в осяжному майбутньому обов'язково знайдеться «вузьке» місце, що вимагає або перезапуску, або переписування. Ми не бачили в цьому сенсу і позитивних емоцій під час роботи, тому відмовлялися.

Кожен місяць на стартап-майданчиках ми оновлювали свої показники (ті, які APRU\ARPPU), щоб показати позитивну динаміку розвитку проекту за рахунок власних сил, але користі це не принесло. Хтось кланяється в ноги інвесторам, влаштовує численні презентації, відвідує кожну стартап-тусовку в країні, при цьому витрачає темряву часу та коштів на це у нас немає впевненості, що витрачений подібним чином час, і тим більше гроші, принесуть результат конкретно для нашого проекту, так як ми не створюємо щось нове і неймовірне. Тому ставлення до можливим інвесторам завжди було з нашого боку досить простим: якщо немає зацікавленості, рівноцінної нашої мотивації за три роки розробки, не варто сподіватися на подальшу співпрацю, бо гарантувати фінансову вигоду ми не можемо, тому відсутність інвестора дасть нам власний спокій, що рівноцінно володіти багатомільйонного бюджету. І особисто я не впевнений, що тепер взагалі є сенс розглядати інвестування в сучасних реаліях з кризою і загальної істерії, а також рівнем розвитку проекту.

Пернатск :: Тотем

Свою справу, свої ресурси і своя прибуток
Одержання будь-якого прибутку незалежно від її розмірів тягне за собою сплату податків державі, обов'язок чесного поділу доходів між командою, прийняття рішень, пов'язаних з проектом. І якщо питання податків обумовлений конкретними правилами «зверху», то для решти доводиться мізкувати і домовлятися.
Пернатск :: Папуги

Разом з отриманням перших коштів на рахунок було здійснено перше велике придбання від імені компанії: оформлення торгового знака для володіння правами на найменування та накреслення логотипу. Як з'ясувалося, наша держава зовсім не орієнтовані на роботу з компаніями, що володіють «віртуальними» активами — для оформлення прав на торговий знак необхідно вказати область дії прав (наприклад, літакобудування не входить в план наших робіт, тому відповідний пункт під подібні роботи можна виключити з переліку), але при цьому відповідних пунктів, які поширюються на діяльність «в мережі», не передбачено. Протягом тривалого часу ми сиділи в офісі у компанії, що займається реєстрацією подібного роду, вчитуючись у перелік товарів-послуг, що підлягають реєстрації за товарному знаку, вибираючи хоч якісь віддалено відповідні класи. Процес реєстрації ще не завершився (а триває він близько року на боці державної машини без нашої участі з моменту подачі документів), очікуємо отримання сертифіката вже на початку травня цього року.

Розподіл прибутку завжди є трохи незручною темою для обговорення на публіці, і ніяких конкретних цифр озвучено не буде. Скажімо так, є вузьке коло осіб, що займаються не просто основними завданнями проекту, але беруть в обов'язки в тому числі і ведення загальної справи компанії, це коло осіб та розподіляє прибуток між учасниками команди, враховуючи витрати на оренду, рекламу, податки і так далі. Поділ йде за принципом: «спочатку команді за базовою ставкою, потім команді як збільшення ставки, потім команді по заслугах, а те, що залишилося — вже ділиться між засновниками». Даний підхід дозволяє першочергово поступово збільшувати фінансову мотивацію команди, щоб збільшувати їх залученість у процес, залишаючи при цьому достатньо коштів для зацікавленості засновників, від яких виходить максимальна кількість сил з усієї команди. Бухгалтерія при цьому підтримується на основі аутсорсной організації, хоч основний пласт звітності для себе ми ведемо самі.

Реклама
Так сталося, що кілька років тому мені довелося працювати в компанії, що займається інтернет-рекламою (і я вдячний керівникам компанії за можливість роботи, я дійсно багато виніс з тих проектів для себе). За час роботи в компанії довелося брати участь у розробці тизерної мережі, CPA-мережі, партнерських програм, і це додатково дало деяку інформацію про ринок реклами в онлайн-сфері.

Першим ділом, звичайно ж, нам довелося самостійно пробувати точкові рекламні майданчики з дійсно крихітними бюджетами: ми пробували розміщувати рекламні пости на розважальних сайтах, пробували банерну рекламу, соціальні мережі, але віддача абсолютно не відповідала навіть тим малим засобам, що ми витрачали. Наступним кроком було розміщення реклами в тематичних групах в соціальних мережах, пов'язаних з птахами і тваринами — ефект був, але не занадто великий. Витрачання «під нуль» всієї виручки не могло принести бажане кількість реєстрацій — із-за специфіки проекту, з-за нашого небажання перетворювати проект в викачування грошей з населення. Тому, здебільшого, точкову рекламу ми вважаємо пробій ринку, і не більше того.

Другий етап рекламної кампанії почався з того моменту, як відповідальні люди з команди почали розміщувати рекламні статті на сайтах-каталогах ігрової тематики. Деякі каталоги просили грошей, деякі просили дуже багато грошей, але багато погоджувалися розмістити посилання з описом» безкоштовно. Найбільший відгук від користувачів в той час припав на буквально один-два ресурсу, які просили досить малу і адекватну для нас суму коштів (наприклад, gametarget.ru).

Пернатск :: Бобер ЗомбычІ нарешті, зі збільшенням рекламного бюджету став доступний варіант реклами через CPA-мережі. Пощастило натрапити на одну з мереж, яка надала більш-менш адекватний сервіс, де менеджери розуміли, що вони роблять — провели тестування трафіком, визначили цільові досягнення, сконвертировали вартість реєстрації в рівневі мети. По мірі того як висихав рекламний бюджет, ми дивилися на прибуток від подібної реклами, яка приблизно дорівнювала вкладеним коштам, що було цілком достатньо для поступового розвитку проекту. Я розумію, що люди, які працюють через ЦПЗ як вебмайстрів, які розміщують у себе рекламу, аналогічно інвесторам, які хочуть отримати свій шматок прибутку, і вільні вибирати тих рекламодавців, які платять більше і швидше, але ми не могли в той час дозволити собі віддавати великі кошти на мету «реєстрацію» або мету, досяжну за 2-5 хвилин ігрового часу. Дві мети, які працюють у нашій кампанії, досягалися за кілька годин і два-три дні відповідно, і по кінцевому ефекту дорівнювали початкової тестовій еталонної суму в 15 рублів за реєстрацію.

Згодом вебмастера переставали направляти трафік на наш проект, переходячи на більш вигідні майданчики, і з нашої сторони не може бути претензій, проте для нас збільшення ціни цілей або перехід на хвилинні досягнення рівносильно порожній витраті коштів, що не дасть ніякого зворотного ефекту — ми, звичайно, скорегували свої цілі на користь вебмайстрів, але, знову ж таки, в рамках розумного. Крім тієї CPA-мережі, з якою нам довелося працювати (і працюється донині), були й інші пропозиції — від конкуруючих CPA-мереж, але чим більше менеджерів з нами спілкувалися, тим більше неадекватних цін ми бачили — доходило до 60-100 рублів за реєстрацію без будь-яких гарантій якості трафіку і настійні рекомендації не використовувати відстрочені цілі, до яких йти більше 5 хвилин. Такі ціни, може бути, здадуться нормальними для компаній-монстрів або ж для «інфо-бізнесменів», втюхивающих на «лендингах» відеокурси по збільшенню грудей за 3999, але явно не для нас.

Ми не малюємо спеціалізовані «лендінгем», пропонуючи знижки, бонуси і золоті гори за реєстрацію, не намагаємося заманити і обдурити будь-якого відвідувача, вичавити все до останньої краплі, готові працювати тільки з добровільно цільовою аудиторією. Ймовірно, з-за цього ми не зможемо досягти успіхів конкурентів в повній мірі, але на даний момент цей підхід лежить в основі нашої роботи.

На поточний момент ми продовжуємо співпрацю з CPA-мережею, з якої надходить досить стабільний трафік, підтримує обсяг реєстрацій, співпрацюємо з однією відомою теле-медіа компанією, яка розміщує наші банери на своїх проектах (спасибі тому самому знайомому, який в черговий раз звела нас з «великими дядьками»), починаємо співпрацю з ще одним платіжним агрегатором не тільки по фронту проведення платежів, але і в площині проведення акцій і поширення інформації на їх стороні. Іншими словами, розвиток на рекламному фронті йде у своєму темпі, що обумовлено необхідністю обдумано витрачати рекламний бюджет.

Пернатск :: Перша Пташина Піраміда

Боротьба з шкідниками
Варто сказати пару слів про конкурентних проектах, все-таки. Так, ми не одні на ринку, і проект не унікальний, однак за минулий рік відбулося кілька подій, які змушують користувачів шукати інші ресурси для проведення часу. Одне з подій полягало в повному закритті двох проектів головною конкуруючої компанії. Друга подія полягає в «вайпе» (повне очищення бази даних) через кілька років постійної роботи іншого нашого конкурента.

Пернатск :: АэрозолькаРаз на кілька днів у так званому «пвиттере» всередині нашого проекту обов'язково з'являється новачок, який з усім одкровенням починає розповідати, з якої гри він прийшов і чому, обов'язково знайдеться кілька людей, які підтвердять правильність його рішення і допоможуть зрозуміти основні моменти нового місця проживання гравця. До речі, саме такі гравці — ідеальна цільова аудиторія для проекту, що утворюють основний кістяк активних гравців для нас, тому, як і рік тому, найкращим методом поширення інформації про проект залишається «сарафанне радіо», так само як і для будь-якого іншого проекту, тільки в нашому випадку фактор посилюється за рахунок деструктивних дій конкурентів, за що їм окрема подяка.

І раз вже пішла розмова про шкідників, то як же не згадати наявність «багів» в коді — як би ретельно не тестувати кожен пакет оновлень (в адекватних, звичайно, межах), все одно буде присутній фактор наявності прихованої помилки, яка обов'язково спливе в самий невідповідний час. Однак, як не дивно, не кожна помилка є деструктивною до оточення і негативної за відгуками користувачів.

Наприклад, до однієї з акцій, приуроченої до чемпіонату з футболу, була зроблена спеціальна локація у вигляді футбольного поля, де відбувався матч гравцям пропонувалося вплинути на результат матчу шляхом встановлення перешкод, затримуючи футболістів на полі, а сам матч проходив в автоматичному режимі. Локацією був передбачений ряд правил поведінки футболістів, що включають рух до воріт, спробу відбору м'яча і рух воротарів, однак, з-за деякої неточності при взаємодії з перешкодою, в одному з матчів стався збій — нападник з м'ячем пробіг крізь ворота і втік з поля бою». Адміністрація не відразу зреагувала на те, що відбувається, так як це був не перший матч в серії ігор, і ніхто не стежив за перебігом подій настільки пильно, внаслідок чого користувачі встигли обговорити всі можливі припущення такого результату матчу (аж до «мама покликала додому») — з достатньою часткою гумору.

На тлі помилки вдалося додатково організувати невелике інтерактивна подія з пошуку м'яча з видачею символічних призів, і, звичайно ж, виправити помилки в коді. До речі, матч закінчився нічиєю — 1:1.

Пернатск :: Чемпіонат з футболу

Плани і обіцянки
Найскладнішим у процесі розробки, як і передбачалося, виявилося стримувати свої обіцянки. З одного боку, ми намагалися нічого не обіцяти, але в той же час для гравців необхідно було підтвердження факту розробки того функціоналу, який вже давно передбачався і очікувалося.

Пернатск :: Стайня війниСпочатку плани трималися строго всередині команди, і гравцям озвучувалася лише приблизна послідовність зі списку глобальних доопрацювань, але послідовність постійно змінювалася, розбавляючи акціями, терміновими геніальними ідеями та іншими доробками. Таким чином, початковий план впровадження стайних воєн з вересня минулого року спочатку було перенесено на грудень, потім на кінець грудня. При цьому факт написання коду і відтворення ілюстрацій був присутній в повній мірі. У грудні гравцям «по секрету» почала надходити інформація, що «вже ось-ось», але часу катастрофічно не вистачало на увазі постійно виникають додаткових завдань та святкових акцій.

До середини грудня був написаний шматок нового функціоналу, підтримує головну особливість боїв у вигляді спрощеного генератора карт, ландшафту і впливу ландшафту на гравця, однак до фактичного завершення, враховуючи необхідність ретельного тестування, було ще далеко. Термін зрушився на точку «після нового року», а до списку робіт додалася додаткова новорічна акція, навалилися проблеми зовнішнього характеру (курс валют, особисті передноворічні справи, що дало додатковий фактор відстрочок).

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

Байки міста і мисливці за привидами
Якщо не вважати можливі помилки в коді і незадокументированные особливості взаємодії локацій, я можу відверто і офіційно заявити — в коді відсутні будь-які хитрощі, лазівки і упереджене ставлення до різних типів гравців. Однак це не означає, що гравці в це повірять — у них існує свій рівень підозри та істерії.Пернатск :: Купа-мала

Причому скучкованность гравців по зграях дає додатковий фактор поширення та ізоляції недовіри до системи. Будь-які запевнення адміністрації про відсутність проблем в коді часто сприймаються «в багнети» аж до завуальованій нецензурній лайці в бік адміністрації.

Проблеми я бачу дві, і перша проблема полягає в нерозумінні гравцями умов розрахункових формул і небажанні приймати аргументацію. Наприклад, для якогось дії вказана умова: шанс отримання предмета 10% — це означає, що при виконанні дії виходить випадкове число від 1 до 100, що порівнюється з числом 10 для отримання результату (а для більш правильних результатів обчислення йде з точністю до сотих). Але погодьтеся, в цьому випадку шанс 10% не означає, що з 10 спроб однозначно предмет буде отримано один раз; це не означає, що з 100 спроб предмет буде отримано 10 раз; і навіть не означає, що з 100 спроб предмет буде отриманий хоча б один раз; але й не означає, що з 100 спроб не будуть всі 100 з позитивним результатом. Шанс означає шанс, і немає ніяких умов на історію підходів для коригування шансу в більшу або меншу сторону, що забезпечують перетворення умови «шанс» умова «обов'язкове отримання». Таким чином, в очах деяких гравців умова «шанс 10%» перетворюється на «працює в 0.1% випадків, і адміни брешуть», і для них немає ніякої різниці у таких обчисленнях, зате з'являється купа претензій до «рандомизатору» та коду проекту в цілому.

Проблема номер два полягає у спробі створити власні способи перемоги над системою при відсутності важелів впливу. Даний фактор схоже на гру в лотерею — якщо пострибати на лівій нозі, одночасно зазначаючи лише парні номери у квитку, і граючи тільки в останній тиждень місяця, то перемога буде забезпечена. Подібні байки потихеньку поширюються серед гравців, фактично збільшуючи правдивість байки, так як «заражений» гравець намагається повторити «рецепт перемоги», в результаті отримуючи від цього випадково-позитивний результат. Але з боку адміністрації подібні історії виглядають мило і з часткою гумору, чого не скажеш про сліпої впевненості в розрахунках процентних співвідношень.

І так, чутки можуть бути настільки дивними, що природа їх походження зовсім може бути не зрозуміла. У тому числі є байка, ніби складу розробників — вихідці з проекту конкурентів, які пішли на вільні хліба, взявши напрацювання для власного старту. Такі припущення і здогадки з ряду фантастики, не підкріплені навіть базовими аргументами, але будь-яке обговорення — все-таки прояв інтересу.

Пернатск :: Хеллоуїн

Залізні потреби
До грудня минулого року вже помітно відчувалися деякі огріхи в швидкості роботи системи — не те, щоб вся робота зупинялася, але в деяких випадках завантаження сторінок тривала аж до кількох секунд, і в рідкісних випадках — до 10-15 секунд (наприклад, при використанні списку пошти або журнали). З точки зору нутрощів, сервер піддавався бомбардуванню як зовнішніми запитами, так і страждав від навантаження завдань зі списку планувальника, що включає і «бойовий» проект, і два тестових.

Пернатск :: Електромагнітна сіткаСтала очевидною необхідність проведення реструктуризації системи з залізної адмінської боку, для чого було орендовано два нових «железячных» сервера в Hetzner: PX120-SSD (топовий не-брендовий поточної лінійки) і SB41 (аукціонних). Якщо раніше на «бойовому» сервері крутилося абсолютно все — від дійсно «бойового» проекту, тестового і «dev» проектів до «дрібних» сайтів — то реструктуризація сталася справді масштабна.

Для початку новий сервер PX120-SSD став домівкою тільки для «бойового» проекту, більше туди рішуче нікого не пустили — це скоротить непотрібні витрати потужностей серверу. Подальше розширення сервера вгору по тарифах вже не вийде, і планується поступове зростання «вшир» за рахунок розділення бази на читання по репликациям і поділу фронтенда з php-fpm по мірі необхідності. Потім другий сервер SB41 (він явно повільніше, але теж з достатнім запасом ресурсу) піддався поділу на три віртуальні машини відповідно: для «test» і «dev» версій проекту, для репозиторію і моніторингу (Pinba і Zabbix), для «дрібних» проектів і всього іншого. Пізніше додалася четверта «виртуалка», куди складається реплікація з бойового сервера з відставанням в 30 хвилин для підтримки «гарячого» бекапа даних.

І якщо в рамках одного сервера система деплоя була досить проста, то для нової системи довелося посмикати адміна на предмет встановлення зв'язків між серверами, розділення прав доступу, організації бекапів. Крім того, переїзд повинен був бути безболісним для користувачів, тому новий «бойовий» сервер до дня переїзду містив у собі реплікації баз даних зі старого сервера і слухняно синхронізував файли, при цьому старий сервер готовий був проксировать всі запити на новий сервер для забезпечення прозорості переїзду під час оновлення dns-записів.

Хто казав, що реплікацію потрібно перевіряти? У день переїзду, після фактичного перемикання з'ясувалося, що реплікація не стартувала, і база даних на новому сервері відстає на день-два — природно, довелося переходити назад, відкладаючи переїзд на кілька днів для пошуку причин проблеми, благо, для користувачів це не принесло ніяких незручностей. З другої спроби перемикання вдалося, і через два тижні старий сервер пішов у небуття, відкриваючи дорогу «молодим».

Подвійний форсаж
З кожним днем зростає деяка потреба в додаткових ігрових ресурсах — акційних заходах, локаціях, новому функціоналі, зрештою, багато з обіцяного очікується гравцями. При всьому бажанні працювати над чимось глобальним, доводиться відволікатися на додаткові «дрібниці» на кшталт святкових днів (23 лютого, 8 березня, новий рік та інші), полупраздничных (1 квітня, хеллоуїн), подієвих (чемпіонат по футболу, день народження проекту) — фактично виходить, що якась подія виникає раз в 1-2 тижні, і за цим графіком потрібно стежити.

Незважаючи на очевидну необхідність підтримувати стабільний розвиток проекту, випускаючи «обновки» з періодичністю 1-2 тижні, додаткова прихильність до подій дещо заважає організації постійних локацій в грі. При всьому цьому, здавалося б, можна обмежитися стандартною механікою «збери п'ять кришок і отримай стакан», але цей варіант залишається на самий крайній випадок, оскільки не містить унікального підходу. Кожен раз необхідно балансувати між «довгобудом» (як, наприклад, тими ж стайним війнами) і сьогохвилинними викликів.

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

Як висновок з усієї ситуації — якщо починати розробку проекту і вести його протягом довгого часу цілком реально, беручи участь у процесі на основі часткової зайнятості, то з часом набирається критична маса планів, примушує по самі вуха вливатися в потік і намагатися в ньому не потонути.

Пернатск :: Стайня війни

Стежка розвитку
Пройшов рік після старту проекту в публічний доступ, пройшло цілих три з гаком роки з моменту зародження проекту. Так, загалом-то і все. Минуло — так пройшло, в кожному проекті є свої перемоги і невдачі, кожен проект проходить етапи становлення і розвитку, кожна команда від розрізнених індивідуалістів перетворюється в робочий механізм, і ми не виняток.

У нашому проекті немає інновацій як в плані архітектурно-механічних аспектів, так і в плані менеджменту або шляху становлення. Ми — не «стартап», а група ентузіастів, яка довела справу до половини (те, що є зараз, — явно не кінець), починаючи з простого експерименту та джерела досвіду, закінчуючи спробою перетворити проект у бажану роботу. І, сподіваюся, через деякий час нам буде про що ще розповісти.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.