<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Вивчаємо Flash та ActionScript разом</title>
	
	<link>http://nub.com.ua</link>
	<description>...уроки Flash, створення банерів, розробка ігор, ActionScript 3</description>
	<lastBuildDate>Sun, 05 Feb 2012 10:16:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/nubcomua" /><feedburner:info uri="nubcomua" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>nubcomua</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Історія розробки гри When I Was Young, або Як я брав участь в “Кубку Ігрового Спалаху”</title>
		<link>http://feedproxy.google.com/~r/nubcomua/~3/uB300u-xAsM/</link>
		<comments>http://nub.com.ua/2012/02/when-i-was-young-development/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 23:57:56 +0000</pubDate>
		<dc:creator>Ярослав Федорак</dc:creator>
				<category><![CDATA[Загальна]]></category>
		<category><![CDATA[Практика]]></category>
		<category><![CDATA[contest]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[flash game contest]]></category>
		<category><![CDATA[when I was young]]></category>
		<category><![CDATA[конкурс]]></category>
		<category><![CDATA[конкурс ігрового спалаху]]></category>
		<category><![CDATA[розробка]]></category>
		<category><![CDATA[розробка гри]]></category>

		<guid isPermaLink="false">http://nub.com.ua/?p=752</guid>
		<description><![CDATA[Ось і залишилася позаду епопея ігрового конкурсу зі швидкої розробки ігор. Після тривалого затишшя на блозі це буде доволі довга стаття. В ній я розповім про сам конкурс (за умовами якого потрібно було створити повноцінну гру на флеш за 7 днів), поділюся його результатами, а також спробую показати процес створення конкурсної флеш-гри зсередини. Що таке [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float:left"><img src="http://nub.com.ua/wp-content/uploads/2012/02/whenIWasYoungLogo.jpg" alt="whenIWasYoungLogo" title="whenIWasYoungLogo" width="250" height="210" class="alignnone size-full wp-image-753" /></span> Ось і залишилася позаду епопея ігрового конкурсу зі швидкої розробки ігор. Після тривалого затишшя на блозі це буде доволі довга стаття. В ній я розповім про сам конкурс (за умовами якого потрібно було створити повноцінну гру на флеш за 7 днів), поділюся його результатами, а також спробую показати процес створення конкурсної флеш-гри зсередини.</p>
<h3>Що таке &#8220;Кубок ігрового спалаху&#8221;?</h3>
<p>Кубок ігрового спалаху (вочевидь, назва пішла від дослівного перекладу англійського Flash Game Contest) – це конкурс так званої &#8220;швидкої розробки&#8221;, який організовується російською спільнотою флеш-розробників на базі тематичного форyму <a href="http://flashgamedev.ru/" title="Flash Game Development" target="_blank">FlashGameDev.ru</a>. </p>
<p>За правилами конкурсу учасники повинні за 7 днів розробити флеш-гру від ідеї до готового продукту. При цьому учасників ніхто не обмежує ні за сетингом, ні за механікою гри. Єдиним обмеженням по суті є тематика, яка вибирається організаторами і стає відомою в перший день конкурсу. </p>
<p><span id="more-752"></span></p>
<p>Судять конкурс 11 членів журі, імена яких в сфері флеш-розробників відомі кожному. Скажімо, до цьогорічного складу журі входили <strong>Максим Гринів</strong> (львів&#8217;янин, автор Contre Jour, iPad Game of the Year 2011), <strong>Євген Кузьмін</strong> (автор популярної гри для iPhone та iPad Cover Orange, загальний прибуток від продажу якoї вже перевищив $1 000 000), <strong>Валерія Малаєва</strong> (ідейний натхненник та організатор найбільшої на теренах Східної Європи конференції для розробників флеш ігор <a href="http://nub.com.ua/2011/12/flashgamm-kyiv-2011/" title="FlashGAMM">FlashGAMM</a>). Всіх судей перелічувати я не буду, але сподіваюся, ви можете уявити рівень цих людей у сфері розробки ігор. Був серед них і <a href="http://www.ant-karlov.ru/" title="Антон Карлов" target="_blank">Антон Карлов</a> – успішний розробник та автор мого улюбленого блога про флеш, який я раджу читати кожному, хто мріє створювати ігри.</p>
<p>Перший &#8220;Кубок ігрового спалаху&#8221; проводився у серпні минулого року, але тоді через відсутність часу у мене не було можливості взяти в ньому участь. Для того, щоб ситуація не повторилася, я заздалегідь взяв відпустку на основній роботі на час проведення другого конкурсу. Початок був запланований на третє січня. </p>
<p>Тему – &#8220;<strong>Подорожі в часі</strong>&#8221; – учасники дізналися в ніч з 2-го на 3-тє січня, і конкурс був офіційно розпочатий. А це означало, що опівночі з 9 на 10-те січня розробники повинні були завантажити готову гру на ігровий аукціон FlashGameLicense. </p>
<p>До участі в конкурсі в категорію &#8220;Одинаки&#8221; (коли над грою працює одна людина) зареєструвалося більше 40 учасників (я брав участь саме в цій категорії). В категорію &#8220;Пари&#8221; (коли над грою працює міні-команда: програміст та художник) зареєструвалося близько 15 команд. Втім, до фінішу дійшли не всі. Але про це – згодом. </p>
<h3>Підготовка та старт</h3>
<p>Ще задовго до конкурсу я мріяв про можливість розробити гру у жанрі платформер. Втім, оскільки з серпня минулого року практично всі мої сили та вільний час були віддані грі <a href="http://nub.com.ua/2011/09/drawing-crystal-for-new-flash-game/" title="symbiosis">Symbiosis</a>, займатися чимось іншим просто не було змоги. По-суті, &#8220;Кубок ігрового спалаху&#8221; став чудовою нагодою спробувати свої сили в новій механіці та жанрі. </p>
<p>Тож напередодні конкурсу, відійшовши від святкування Нового Року, я почав посилено шукати навчальні матеріали та статті про створення платформерів. Майже весь день 2-го січня я працював над прототипом. Це було досить ризиковано, оскільки теми конкурсу я ще не знав. Але було сподівання, що такий універсальний жанр, як платформер, буде можливо пристосувати практично до будь-якої теми. </p>
<p>Для мене було важливо розібратися хоча б в принципах функціонування платформерів та зробити більш-менш &#8220;безглючне&#8221; керування героєм. В перший день я зробив &#8220;одноекранний&#8221; платформер без будь-якої графіки та анімації. Але мені вдалося досягнути того, що головний герой перестав &#8220;провалюватися&#8221; через платформи і більш-менш реалістично реагував на клавіатуру. </p>
<p>Виглядало це досить &#8220;страшно&#8221;:</p>
<p style="text-align:center"><img src="http://nub.com.ua/wp-content/uploads/2012/02/01-almost-ready.jpg" alt="almost-ready" title="almost-ready" width="500" height="339" class="alignnone size-full wp-image-755" /></p>
<p>Деякі &#8220;глюки&#8221;, щоправда, залишилися. Наприклад, головний герой (щось схоже на синьо-фіолетового їжака) тільки й шукав нагоди, щоб &#8220;зісковзнути&#8221; з платформи, на якій за правилами фізики повинен був впевнено стояти. </p>
<p>О 12-тій ночі я був втомлений але задоволений, оскільки певного прогресу таки вдалося досягнути. Приблизно в цей час стала відома тема, і конкурс почався. Але звісна річ – після цілого дня за комп&#8217;ютером я не міг думати ні про що інше, окрім сну. </p>
<h3>День 1 (вівторок): Концепт, головний герой, карта</h3>
<p>Прокинувшись зранку, я практично зразу приступив до розробки. Першою справою потрібно було вигадати концепцію гри. На щастя, ідея не змусила себе чекати. Найкращою реалізацією теми &#8220;Подорожі в часі&#8221; мені здалася можливість головного героя (ГГ) повертатися в минуле, при цьому стаючи молодшим. Крім того, ця концепція відкривала можливість збільшувати швидкість та спритність ГГ, коли він стає молодшим і таким чином відкривати для нього недоступні раніше локації. </p>
<p>Для образу ГГ я не придумав нічого кращого, ніж старий дід з палицею, який мріє повернути час назад і знову стати молодим. Спершу він рухається повільно і практично не може стрибати, але згодом, знаходячи магічні артефакти, починає бігати швидше і стрибати вище. Карта побудована таким чином, що в деяких місцях спритності ГГ не вистачає, щоб пройти далі. Це значить, що потрібно &#8220;помолодшати&#8221;.</p>
<p>Найбільше часу першого дня я потратив на створення карти, повністю намалювавши її на папері. Виглядала вона так (сканера немає, тому вибачайте за якість):</p>
<p style="text-align:center"><img src="http://nub.com.ua/wp-content/uploads/2012/02/02-map.jpg" alt="map" title="map" width="500" height="289" class="alignnone size-full wp-image-756" /></p>
<p>Не менше працював над програмною реалізацією карти, а особливо – прокрутки. Від ідеї робити плавну прокрутку відмовився зразу, але навіть миттєве переключення екранів, коли ГГ підходить до краю видимої області, викликало в мене достатньо труднощів. Тільки через кілька годин роботи з кодом все запрацювало так, як потрібно.</p>
<p>Останнє, що я зробив першого дня – це намалював ГГ і повністю анімував його (три стани – біг, стрибок та стан спокою). </p>
<p style="text-align:center"><img src="http://nub.com.ua/wp-content/uploads/2012/02/03-first-day.jpg" alt="first-day" title="first-day" width="500" height="366" class="alignnone size-full wp-image-757" /></p>
<p>Окрім того у вівторок моя дружина поїхала в гості до мами, тож наступні кілька днів я був відданий сам собі – кращих умов для повного занурення у розробку не вигадаєш. </p>
<h3>День 2 (середа): Продовження роботи над картою, візуальне представлення героїв</h3>
<p>Намалювати карту на папері виявилося набагато простішим, ніж реалізувати це програмно. В моєму випадку карта складається із великої кількості прямокутних блоків, яким можна задавати довільні розміри, і зіткнення з якими постійно &#8220;перевіряє&#8221; ГГ. Але оскільки редактор карти спеціально для цієї гри я не робив, то розміщувати блоки доводилося вручну. Для кожного такого блока потрібно було визначити правильні розміри, розрахувати координати і прописати в коді. </p>
<p>На роботу з картою пішло 5 чи 6 годин, але все одно зробив лише третину від запланованого. Для того, щоб трішки &#8220;відійти&#8221; від математичних обчислень, вирішив взятися за малювання альтернативних &#8220;амплуа&#8221; головного героя: молодий чоловік та маленький хлопчик. </p>
<p style="text-align:center"><img src="http://nub.com.ua/wp-content/uploads/2012/02/04-three-heros.jpg" alt="three-heroes" title="three-heroes" width="300" height="132" class="alignnone size-full wp-image-758" /></p>
<p>Разом з анімацією на це пішло близько 5 годин. Вочевидь, потрібно розвивати навичку малювання. Поки що це виходить занадто повільно.</p>
<p>Вирішив, що не піду до ліжка, поки не реалізую перший артефакт – один з двох бонусів, який робить ГГ молодшим і дозволяє йому стрибати вище.  </p>
<p style="text-align:center"><img src="http://nub.com.ua/wp-content/uploads/2012/02/05-second-day.jpg" alt="second-day" title="second-day" width="500" height="365" class="alignnone size-full wp-image-759" /></p>
<h3>День 3 (четвер): Нарешті закінчив карту. Робота над точками для збереження та перешкодами</h3>
<p>Зранку в четвер повернувся до карти, поставивши перед собою ціль закінчити її до вечора. Якщо раніше у мене ще виникали думки про те, щоб зробити кілька рівнів, то в цей день я остаточно від них відмовився – було очевидно, що не встигну. Тож взявши волю і калькулятор в кулак, я продовжив вираховувати положення для блоків, будуючи карту екран за екраном.</p>
<p>Цього ж дня я зробив другий артефакт, який на 30% збільшував швидкість ГГ, дозволяючи йому перестрибувати більші &#8220;провалля&#8221;. І зібравши залишки сили волі вирішив сьогодні ж запрограмувати точки для збереження (респавни) та перешкоди (шипи). Щоправда графіку для шипів вдалося намалювати тільки наступного дня, тому на наведеному нижче зображені вони представлені рожевим кольором. </p>
<p style="text-align:center"><img src="http://nub.com.ua/wp-content/uploads/2012/02/06-third-day.jpg" alt="third-day" title="third-day" width="500" height="351" class="alignnone size-full wp-image-760" /></p>
<h3>День 4 (п&#8217;ятниця): Графіка. Перші &#8220;вороги&#8221;</h3>
<p>Логіка роботи респавнів та перешкод була закінчена ще вчора, залишилося тільки розмістити їх на карті. Після цього приступаю до графічного відображення шипів.</p>
<p>Наступний крок – графіка для карти. Часу дуже мало, тому вирішив обмежитися травою. Окрім цього потрібно знайти рішення, яке дозволить більш-менш ефективно &#8220;натягувати&#8221; графіку на карту. Зупинився на окремому контейнері для графіки, який відображається поверх &#8220;фізичного&#8221; світу і змінює картинку відповідно до екрану, на якому в даний момент знаходиться герой. Очевидно, рішення не найбільш вдале – але максимально просте і втілюється досить швидко. </p>
<p>Дивовижно, як сильно видозмінюється гра, коли додаєш кілька елементів графіки. Банальна трава на платформах робить ігровий світ набагато &#8220;живішим&#8221;. Ех, шкода, що немає часу на задні фони – з ними все було б ще красивіше.</p>
<p>Приступаю до ворогів. Оскільки ідея гри крутиться навколо часу, а ГГ прагне повернутися в минуле – то й ворогами будуть різноманітні годинники. На ділі їх вийшло тільки два: агресивний будильник, який рухається вперед і назад на обмеженій території та грізний настінний годинник, який стріляє по ГГ своїми стрілками.</p>
<p style="text-align:center"><img src="http://nub.com.ua/wp-content/uploads/2012/02/07-fourth-day.jpg" alt="fourth-day" title="fourth-day" width="500" height="331" class="alignnone size-full wp-image-761" /></p>
<h3>День 5 (субота): Вороги, виправлення багів, озвучка, закінчення гри</h3>
<p>Зранку повернулася з поїздки дружина, а о 6-тій годині наступного ранку нас чекає потяг – їдемо до бабусі на Різдво. Часу практично не залишилося. </p>
<p>Субота, мабуть, була найпродуктивнішим днем. Якщо протягом попередніх чотирьох днів я працював по 12-14 годин, то в суботу – 18.</p>
<p>Якщо у п&#8217;ятницю я зробив логіку та графічне відображення ворогів, то в суботу розмістив їх на карті. Також додав фінальний артефакт на місці фінішу. Гра майже повністю закінчена. Нарешті її можна &#8220;пройти&#8221; і навіть отримати від цього задоволення.</p>
<p>Приступаю до роботи над звуками. В попередніх іграх на це витрачалося не менше 3-4 днів. Тепер же, на жаль, я не можу дозволити собі такої розкоші. Потрібно повністю закінчити систему звуків до того, як ми поїдемо в село, інакше не встигну – повертаємося в понеділок і в той же день до 12 ночі за московським часом гра повинна бути викладена на FGL. </p>
<p>2-га година ночі, а звуки готові тільки на 70%. О 6-тій потяг. Що ж, схоже сьогодні сну не буде. Дружина вирішує підтримати мене у моєму нелегкому починанні і також не лягає спати. </p>
<p>4-та година ночі – звуки закінчив. Залишилася година на виправлення деяких найбільш очевидних &#8220;глюків&#8221; і пора поспішати на вокзал.</p>
<p style="text-align:center"><img src="http://nub.com.ua/wp-content/uploads/2012/02/08-fifth-day.jpg" alt="fifth-day" title="fifth-day" width="500" height="366" class="alignnone size-full wp-image-762" /></p>
<h3>День 7 (понеділок): Екрани старту та закінчення гри. &#8220;Вказівники руху&#8221;. Фінал!</h4>
<p>Неділя пройшла в приємному спілкуванні з ріднею за святковим столом. Повернулися до Києва під обід в понеділок. До закінчення конкурсу менше 12 годин.</p>
<p>Втім, зробити залишилося не так вже й багато: екрани старту та закінчення. Крім того – розставити &#8220;вказівники руху&#8221; – таблички на &#8220;кордоні&#8221; екранів, коли не зовсім зрозуміло, куди стрибати. Гра готова.</p>
<p style="text-align:center"><img src="http://nub.com.ua/wp-content/uploads/2012/02/09-final-day.jpg" alt="final-day" title="final-day" width="500" height="349" class="alignnone size-full wp-image-763" /></p>
<p>Нарешті роблю &#8220;іконку-логотип&#8221; для гри і завантажую на FGL за 1 годину до закінчення конкурсу. Тепер можна зітхнути спокійно. Далі справа за журі!</p>
<h3>В очікуванні результатів конкурсу</h3>
<p>Як я вже й говорив, далеко не всі учасники зуміли дійти до фіналу. Серед одинаків фінальну версію своєї гри на FGL виклали всього 15 конкурсантів, серед пар – 7. </p>
<p>До обов&#8217;язків журі, окрім, власне оцінки ігор, входили створення скрінкастів – 5-хвилинних відео-роликів, на яких вони грають в конкурсні ігри і коментують їх. Власне, про скрінкасти хочеться сказати окремо, оскільки це була одна з основних причин, чому я вирішив взяти участь в конкурсі. Адже одна справа, коли розробник самостійно оцінює свою гру (що у 99% випадків виходить вкрай необ&#8217;єктивно), і зовсім інша – коли вашу гру оцінюють визнані експерти у цій сфері. </p>
<p>11 відео-роликів, в яких вашу гру критикують справжні професіонали – що може бути більш цінним для розробника? Скрінкасти дозволяють поглянути на власну гру &#8220;збоку&#8221; і одразу побачити всі її сильні та слабкі сторони. Іноді хочеться &#8220;підказати&#8221; людині, яка грає – але це неможливо. І це правильно – тому що так само ви не зможете підказувати реальним гравцям. </p>
<p>Що цікаво, більшість огріхів здаються цілком очевидними. Стає дивно, як можна було не звернути на них увагу під час розробки. </p>
<p>Оскільки учасники журі знімали своє відео неодночасно – кожного дня з&#8217;являлося по 2-3 нових ролики. Процес перегляду був надзвичайно цікавим, а очікування – сповнене нетерпіння. </p>
<p>Щоб зрозуміти, як скрінкасти виглядають на практиці, пропоную два конкурсні огляди моєї гри:</p>
<p style="text-align:center"><iframe width="420" height="315" src="http://www.youtube.com/embed/Z_yQ-Q3c0To" frameborder="0" allowfullscreen></iframe></p>
<p style="text-align:center"><iframe width="420" height="315" src="http://www.youtube.com/embed/bRNURHMZH8M" frameborder="0" allowfullscreen></iframe></p>
<h3>Результати</h3>
<p>Тепер найцікавіше – цифри. Моя конкурсна гра <strong>When I Was Young</strong> набрала <strong>7,03</strong> бали з 10 можливих, що дозволило їй посісти <strong>3-тє призове місце</strong>. Для мене це був надзвичайно приємний і несподіваний сюрприз. Перше місце з результатом <strong>8,45</strong> зайняла гра <strong>YZX</strong> розробника Disco Fish. На другому з результатом <strong>7,48</strong> опинилася гра <strong>A Friend For The Ages</strong> розробника dennatolich. </p>
<p>Ознайомитися з <a href="http://flashgameblogs.ru/blog/contests/882.html" title="flash game contest results" target="_blank">повними результатами конкурсу</a> можна на блозі Flash Game Blogs.</p>
<h3>Висновки</h3>
<p>Як я вже згадував вище – огляди експертів дозволили побачити багато моментів, які можна допрацювати. Наприклад, більшість учасників журі стикалися з труднощами, намагаючись перестрибнути ями з шипами. І хоча в момент розробки я свідомо зробив ями широкими, оскільки на цьому була зав&#8217;язана значна частина геймплею (герой не повинен перестрибувати деякі перешкоди до тих пір, поки не візьме відповідний апгрейд) – та все ж після конкурсу під враженням від скрінкастів я все-таки значно спростив перестрибування ям з шипами.</p>
<p>Також після оглядів я в деяких місцях змінив ландшафт карти, щоб зробити його більш &#8220;дружнім&#8221; і &#8220;логічним&#8221;. </p>
<p>Ну і насамкінець, дехто з представників журі нарікав на відсутність графіки &#8220;заднього фону&#8221;. Над цим я також попрацював, додавши рослинність (дерева та кущі), хмари, а також текстуру грунту. </p>
<p style="text-align:center"><img src="http://nub.com.ua/wp-content/uploads/2012/02/10-final-look.jpg" alt="final-look" title="final-look" width="500" height="326" class="alignnone size-full wp-image-767" /></p>
<h3>Після конкурсу</h3>
<p>Щоб довести гру до фінального вигляду і зробити її цікавішою я додав ігровий таймер. Тепер можна проходити гру на швидкість, від чого залежить фінальна нагорода: дерев&#8217;яний, бронзовий, срібний чи золотий кубок. </p>
<p>Для збільшення часу, який гравці проводять у грі я додав фінальний бонус у вигляді збільшення швидкості ГГ після проходження гри. Іншими словами, тепер, якщо гравець дійшов до фінішу і починає проходити гру вдруге – він отримує невеликий бонус до швидкості, що дозволяє побити власний рекорд. Таке нововведення не вимагає особливих зусиль від розробника, але може суттєво підняти привабливість гри. </p>
<p>Ну і насамкінець – я інтегрував в гру систему досягнень, яка повинна додатково збільшити адиктивність та бажання гравця повернутися. </p>
<p style="text-align:center"><img src="http://nub.com.ua/wp-content/uploads/2012/02/11-achievements.jpg" alt="achievements" title="achievements" width="500" height="346" class="alignnone size-full wp-image-768" /></p>
<p>Крім цього було зроблено багато дрібних вдосконалень. Адаптовано деякі звуки. Покращено систему керування героєм та виправлено всі (сподіваюся) &#8220;глюки&#8221;.</p>
<p>Наразі гра перебуває в процесі торгів на аукціоні FGL і очікує свого спонсора. Зіграти в неї можуть всі, хто має аккаунт розробника на FGL. Посилання на гру: <a href="http://www.flashgamelicense.com/view_game.php?game_id=22103" title="when I was young on FGL" target="_blank">When I Was Young</a></p>
<p>Трейлер гри, знятий спеціально для потенційних спонсорів: </p>
<p style="text-align:center"><iframe width="420" height="315" src="http://www.youtube.com/embed/u8RSSj8kY6g" frameborder="0" allowfullscreen></iframe></p>
<p>Якщо у вас немає розробницького аккаунта, але ви хочете зіграти – реєструйтеся на FGL як гравець (при реєстрації там є відповідний пункт), додавайте мене у друзі (заходьте у <a href="www.flashgamelicense.com/view_account.php?username=jarofed" title="jarofed on FGL" target="_blank">мій профіль</a> і тисніть Follow This User), дайте знати, що ви зареєструвалися, через приватне повідомлення (Send Private Message у моєму профілі на FGL) і я відкрию для Вас доступ до гри. Буду вдячний за відгуки.<br />
<h3>Інші записи на цю тему:</h3>
<ul class="related_post">
<li><a href="http://nub.com.ua/2011/03/how-to-learn-flash/" title="Чому мене навчила розробка флеш-гри, або Практика – найкращий вчитель!">Чому мене навчила розробка флеш-гри, або Практика – найкращий вчитель!</a></li>
<li><a href="http://nub.com.ua/2011/08/sponsorships-of-flash-games/" title="Хто готовий віддати гроші за вашу гру? або Кілька слів про спонсорів та типи ліцензій">Хто готовий віддати гроші за вашу гру? або Кілька слів про спонсорів та типи ліцензій</a></li>
<li><a href="http://nub.com.ua/2011/08/first-game-redesign/" title="Редизайн першої гри: Графіка має значення!">Редизайн першої гри: Графіка має значення!</a></li>
<li><a href="http://nub.com.ua/2011/01/using-flash-ide-and-flashdevelop/" title="Використання Flash IDE + FlashDevelop. Базова структура флеш-проекту. ">Використання Flash IDE + FlashDevelop. Базова структура флеш-проекту. </a></li>
<li><a href="http://nub.com.ua/2010/12/wacom-intuos-4-and-samsung-xl2370/" title="Wacom Intuos 4 та Samsung XL2370 – подарунки на День Народження">Wacom Intuos 4 та Samsung XL2370 – подарунки на День Народження</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/nubcomua/~4/uB300u-xAsM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nub.com.ua/2012/02/when-i-was-young-development/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://nub.com.ua/2012/02/when-i-was-young-development/</feedburner:origLink></item>
		<item>
		<title>FlashGAMM Kyiv 2011: Враження від першого дня</title>
		<link>http://feedproxy.google.com/~r/nubcomua/~3/OuFaHIJI1NI/</link>
		<comments>http://nub.com.ua/2011/12/flashgamm-kyiv-2011/#comments</comments>
		<pubDate>Sat, 10 Dec 2011 19:55:35 +0000</pubDate>
		<dc:creator>Ярослав Федорак</dc:creator>
				<category><![CDATA[Загальна]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[FlashGAMM]]></category>
		<category><![CDATA[FlashGAMM Kyiv 2011]]></category>
		<category><![CDATA[ігри]]></category>
		<category><![CDATA[інді-розробник]]></category>
		<category><![CDATA[конференція]]></category>
		<category><![CDATA[спонсор]]></category>

		<guid isPermaLink="false">http://nub.com.ua/?p=743</guid>
		<description><![CDATA[Сьогодні у Києві стартувала дводенна конференція FlashGAMM Kyiv 2011. Не знаю, чи серед читачів блога про Flash та ActionScript є люди, які також були там присутні (принаймні, мені було б приємно, якби це було так), але для всіх тих, хто конференцію відвідати хотів, але з якихось причин не зміг – я в двох словах поділюся [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float:left"><img src="http://nub.com.ua/wp-content/uploads/2011/12/flashgamm-kyiv-2011.jpg" alt="flashgamm-kyiv-2011" title="flashgamm-kyiv-2011" width="240" height="97" class="alignnone size-full wp-image-745" /></span> Сьогодні у Києві стартувала дводенна конференція <strong>FlashGAMM Kyiv 2011</strong>. Не знаю, чи серед читачів блога про Flash та ActionScript є люди, які також були там присутні (принаймні, мені було б приємно, якби це було так), але для всіх тих, хто конференцію відвідати хотів, але з якихось причин не зміг – я в двох словах поділюся враженнями та цікавими фактами, почутими в доповідях.</p>
<p>Хто не знає, <strong>Flash GAMM</strong> – це конференція для професійних розробників flash-ігор, соціальних та мобільних ігор, аудиторія якої значною мірою складається з інді-розробників (тобто людей, які роблять ігри самостійно або ж у невеликій команді). Валерія Маллаєва (один з організаторів та ідейний натхненник конференції) наголосила, що сьогодні Flash GAMM є найбільшою ігровою конференцією для інді-розробників на просторі колишнього СНД.</p>
<p>Другою важливою частиною аудиторії Flash GAMM є спонсори та видавці – тобто люди, які допомагають інді-розробникам отримати прибуток. І з кожним роком (а сьогоднішня конференція вже сьома за рахунком) в ній бере участь все більше та більше великих компаній, соціальників (команд, які створюють ігри для соцмереж) тощо.</p>
<p><span id="more-743"></span></p>
<h3>Коротко про доповіді</h3>
<p>Оскільки виступи відбувалися у три потоки, мені вдалося побачити лише незначну частину з них. Тому розповідаю лише про те, що здалося найцікавішим:</p>
<p><strong>Максим Гринів (Mokus) про цілісність при розробці інді-ігор</strong></p>
<p>Макс (до речі, представник української спільноти розробників, львів&#8217;янин) здобув популярність після того, як з надзвичайним успіхом випустив гру <strong>Contre Jour</strong> для iOS. На конференції він виступив в ролі капітана очевидності і розповідав про цілісність при розробці інді-ігор. Втім, як це зазвичай буває, очевидні речі часто забуваються першими. Тому нагадування від Максима було надзвичайно доречним. </p>
<p>Власне, доповідь зводилася до того, що все у грі повинно бути цілісним:</p>
<ul>
<li><strong>платформа</strong> (розробник повинен чітко розуміти, для якої платформи він випускає гру. Продукт, створений для iOS не зможе стати популярним на десктопі і навпаки. Не кажучи вже про такі екзотичні платформи, як, наприклад, Kinekt);</li>
<li><strong>аудиторія</strong> (розуміння того, для кого ви робите гру також дуже важливе. Не варто намагатися задовольнити всіх – вам це все одно не вдасться. Тож найкраще – зосередитися на своєму ключовому споживачеві і зробити для нього все можливе);</li>
<li><strong>керування грою/персонажем</strong> (по суті те саме, що й платформа. Наївно сподіватися, що ви зможете зробити успішний 3D-шутер від першої або третьої особи на мобільному iOS пристрої. Керування не те…);</li>
<li><strong>геймплей</strong> (не варто гнатися за великою кількістю ігрових механік. Головне – щоб наявні ідеально взаємодіяли між собою);</li>
<li><strong>графіка</strong> (графіка не обов&#8217;язково повинна бути ідеальною (надзвичайно красивою і реалістичною), але вона повинна бути цілісною. Наприклад гра <a href="http://jarofgames.com/puzzle-andamp-physics/shift" title="shift" target="_blank">Shift</a> стала суперхітом, хоча графіка в ній елементарна).</li>
</ul>
<p>Доповідь Максима створила найбільший ажіотаж. Кількість народу, якому не вистачило місця і який стояв під стінами зашкалювала.</p>
<p><strong>Мерлін Гор з Flash Game License розповідав про те, як забезпечити своїм іграм спонсорство</strong></p>
<p>Відверто кажучи, від представника FGL я очікував куди більш змістовної і цікавої доповіді. Виступ же Мерліна Гора звівся до розповіді про функції системи FGL, про які кожен флеш-розробник знає &#8220;з пелюшок&#8221;. </p>
<p>Серед цікавих цифр, озвучених Мерліном:</p>
<ul>
<li>кількість розробників, зареєстрованих на FGL – 20 000;</li>
<li>кількість спонсорів – 4000;</li>
<li>кількість продаж (deals) за час існування сервісу – 6000 (з них за минулий рік &#8211; 1900);</li>
<li>рекордна вартість ліцензії – $70 000.</li>
</ul>
<p><strong>Алекс Ничипорчик зі Spil Games поділився секретами, як задовольнити 150 мільйонів користувачів</strong></p>
<p>Алекс поділився статистикою порталів мережі <strong>Spil Games</strong> і його доповідь виявилася найцікавішою з тих, на які мені сьогодні пощастило потрапити. </p>
<p>Коротко факти:</p>
<ul>
<li>за останній рік Spil Games ліцензували 1000 ігор (тобто майже 3 гри на день, круто!);</li>
<li>наступного року планують ліцензувати 500 ігор. Скорочення пов&#8217;язане зі зміною стратегії компанії. Тепер Spil Games будуть більше орієнтуватися на мобільні ігри, iOS, Apple Store та мікроплатежі;</li>
<li>70% розробників ігор, які отримали спонсорство Spil Games – представники колишнього СНД (тобто для нас попередня новина подвійно сумна);</li>
<li>&#8220;щоб зробити успішну гру потрібно не стільки зациклюватися на розробці, скільки на створенні впізнаваного бренду&#8221; (наводив у приклад гру <a href="http://jarofgames.com/adventure-andamp-rpg/snail-bob-2" title="Snail Bob" target="_blank">Snail Bob</a>, яка по суті стала таким брендом);</li>
<li>радісна новина – в наступному році Spil Games планують відмовитися від свого API. Тобто ніяких більше перекладів на 50 мов, впроваджувати які доводилося розробникам;</li>
<li>якість флеш ігор вже зараз досить висока, а в майбутньому буде тільки зростати (треш не пройде);</li>
<li>розробникам варто створювати крос-платформенний дизайн геймплею (щоб можна було і на флеш-порталі розмістити, і в Apple Store успішно продавати);</li>
<li>тестувати ігри потрібно на &#8220;не геймерах&#8221;…</li>
</ul>
<p><strong>Представник Alternativa Platform Дмитро Сергієв розповів про нову розробку Alternativa Physics</strong>, яка стане доступною розробникам вже за тиждень. Особливо нічого з цієї доповіді не запам&#8217;яталося. Було багато коду та пояснення, яким чином можна просто створювати 3D-об&#8217;єкти з фізикою на Flash. Ну і звісно – демки – як же без них.</p>
<p>Потім слухав <strong>Сета де Конінга (Jaludo), який говорив про успішні флеш-ігри та Конрада Холубека (Games Passport), який розповідав про монетизацію ігор на автономних сайтах.</strong></p>
<p>Основна ідея полягала в тому, щоб під кожну флеш-гру створювати окремий сайт. У них подібна система вже працює і непогано себе показує. Такий підхід дає можливість додаткової монетизації (більше різновидів реклами та партнерства, простіше просування (крос-просуавння), мікротранзакції, єдина система авторизації для всіх сайтів).</p>
<p>Із цікавого – прогнози розвитку ігрового ринку. Конрад наголосив на тому, що найбільш суттєво будуть зростати моделі Free2Play, соціальні ігри, а також, зрозуміла річ, мобільні ігри. При цьому ринок консольних ігор скоротиться (не дуже сильно, але все ж).</p>
<p>Було цікаво почути і про те, що 65% всіх гравців у світі – це жінки (злам стереотипів). Але ще цікавіше – що саме жінки приносять 75% прибутку з мікротранзакцій (чоловіки всього 25%, що для мене стало справжньою несподіванкою).</p>
<p>Круглий стіл <strong>&#8220;Маркетинг ігор&#8221; (Петро Харитонов, Андрій Фадєєв, Станіслав Роднянський, Антон Волков, Анастасія Бабкіна)</strong>, організатори чомусь вирішили проводити у малому залі. Наслідок – відсутність місць. Я сидів в останньому ряду і не міг навіть розгледіти учасників дискусії. </p>
<p>Втім, конкретно для інді-розробників цей круглий стіл мав хіба що потенційну цінність, оскільки йшлося на ньому переважно про просування соціальних ігор і захмарні бюджети у 300 000 на маркетинг. Я, правда, так і не зрозумів, у доларах, чи все-таки у рублях.</p>
<p>Слоган круглого столу: &#8220;<strong>Ви повинні витратити на маркетинг стільки ж, скільки витрачаєте на розробку</strong>&#8220;. </p>
<p>Наприкінці розгорілася цікава дискусія про те, чи потрібні видавці для того, щоб видавати ігри, чи можна все робити самому. Моя думка залишилася незмінною – великі компанії/команди можуть справитися власними силами. Одинакам же вдасться заробити більше, якщо вони звернуться по допомогу до видавців.</p>
<p>Як бачите, попри мою обіцянку писати коротко, все одно тексту вийшло більше, ніж достатньо. Завтра, на жаль, не зможу відсидіти цілий день – потраплю тільки на ранкові доповіді. Якщо почую щось варте уваги і якщо аудиторії цього блога такі звіти цікаві, можливо також напишу.<br />
<h3>Інші записи на цю тему:</h3>
<ul class="related_post">
<li><a href="http://nub.com.ua/2011/06/release-of-turtle-dreams-to-fly/" title="Turtle Dreams to Fly: Реліз!">Turtle Dreams to Fly: Реліз!</a></li>
<li><a href="http://nub.com.ua/flash/" title="Уроки Flash">Уроки Flash</a></li>
<li><a href="http://nub.com.ua/2011/10/using-swfobject-to-embed-flash-content/" title="Як правильно вбудувати flash-контент у ваш сайт: Вставка swf-файлів з допомогою SWFObject 2">Як правильно вбудувати flash-контент у ваш сайт: Вставка swf-файлів з допомогою SWFObject 2</a></li>
<li><a href="http://nub.com.ua/2011/09/display-object-and-display-list-in-as3/" title="Організація візуальних об&#8217;єктів методами ActionScript 3: Display Object, Display Container та Display List">Організація візуальних об&#8217;єктів методами ActionScript 3: Display Object, Display Container та Display List</a></li>
<li><a href="http://nub.com.ua/2011/08/sponsorships-of-flash-games/" title="Хто готовий віддати гроші за вашу гру? або Кілька слів про спонсорів та типи ліцензій">Хто готовий віддати гроші за вашу гру? або Кілька слів про спонсорів та типи ліцензій</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/nubcomua/~4/OuFaHIJI1NI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nub.com.ua/2011/12/flashgamm-kyiv-2011/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://nub.com.ua/2011/12/flashgamm-kyiv-2011/</feedburner:origLink></item>
		<item>
		<title>Округлення десяткових дробів (чисел з комою): Що робити з некоректними значеннями при роботі з Number?</title>
		<link>http://feedproxy.google.com/~r/nubcomua/~3/LtJueCCaj1s/</link>
		<comments>http://nub.com.ua/2011/11/rounding-decimal-numbers/#comments</comments>
		<pubDate>Sat, 05 Nov 2011 23:02:35 +0000</pubDate>
		<dc:creator>Ярослав Федорак</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Загальна]]></category>
		<category><![CDATA[Практика]]></category>
		<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Math.round]]></category>
		<category><![CDATA[number]]></category>
		<category><![CDATA[десяткові дроби]]></category>
		<category><![CDATA[округлення]]></category>
		<category><![CDATA[програмування]]></category>
		<category><![CDATA[Уроки]]></category>
		<category><![CDATA[флеш]]></category>

		<guid isPermaLink="false">http://nub.com.ua/?p=731</guid>
		<description><![CDATA[Перш, ніж я перейду до опису суті проблеми, дозвольте мені запропонувати вам просте математичне завдання. Скільки буде 3 помножити на 0.1? Дивне запитання! Навіть першокласник відповість, що результатом цього виразу буде 0.3. Втім, як виявилося, алгоритми ActionScript 3 не завжди дружать з традиційною логікою. Якщо ви спробуєте провести подібне обчислення у AS3, то отримаєте результат: [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float:left"><img src="http://nub.com.ua/wp-content/uploads/2011/11/round-decimal-numbers.jpg" alt="round-decimal-numbers" title="round-decimal-numbers" width="250" height="178" class="alignnone size-full wp-image-736" /></span> Перш, ніж я перейду до опису суті проблеми, дозвольте мені запропонувати вам просте математичне завдання. Скільки буде 3 помножити на 0.1? </p>
<p>Дивне запитання! Навіть першокласник відповість, що результатом цього виразу буде 0.3. Втім, як виявилося, алгоритми ActionScript 3 не завжди дружать з традиційною логікою. Якщо ви спробуєте провести подібне обчислення у AS3, то отримаєте результат: <strong>0.30000000000000004</strong>.</p>
<p>Подібна похибка виникає через обмеження розміру пам&#8217;яті, яку AS3 виділяє для збереження змінних типу <strong>Number</strong> (тобто чисел з комою). Наприклад, щоб точно зберегти значення числа &#8220;Пі&#8221;, системі знадобилася б безкінечна кількість ресурсів. Звісна річ, що це неможливо. Тому в AS3 (як і в будь-якій іншій мові програмування) під кожен тип змінної відведена строго обмежена кількість байтів. Отже так чи інакше, доводиться округлювати &#8220;безкінечні&#8221; числа.</p>
<p>На жаль, наслідки такого скорочення іноді проявляються навіть там, де ми їх не очікували побачити. </p>
<p><span id="more-731"></span></p>
<p>Давайте розглянемо наступний код:</p>
<pre class="brush: as3; title: ; notranslate">var i:int;
var divisor:Number = 10;
var multiplier:Number = 0.1;

for (i = 0; i&lt;10; i++) {
	trace (i/divisor);
}

trace(&quot;&quot;);

for (i = 0; i&lt;10; i++) {
	trace (i*multiplier);
}</pre>
<p>Для спрощення коду використовуються цикли, про які ми побіжно говорили в статті <a href="http://nub.com.ua/2010/11/explosion-animation-through-actionscript3/" title="цикли та масиви в ActionScript">про анімацію вибуху</a>.</p>
<p>В першому циклі ми ділимо числа від 0 до 9 на 10, а в другому – множимо той самий ряд чисел на 0.1. Оскільки результат ділення на 10 повинен бути ідентичним до результату множення на 0.1 – ми повинні бачити однаковий ряд чисел. Втім, при виконанні цього коду отримаємо наступний результат:</p>
<pre class="brush: plain; light: true; title: ; notranslate">0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9

0
0.1
0.2
0.30000000000000004
0.4
0.5
0.6000000000000001
0.7000000000000001
0.8
0.9</pre>
<p>Як бачите, при множенні на десятковий дріб (число 0.1) ми отримали кілька &#8220;артефактів&#8221; у вигляді незначних похибок. Спрогнозувати їх появу практично неможливо, але одне можна сказати напевне – при роботі з типом Number у ActionScript час від часу будуть проявлятися подібні неточності. </p>
<p>Втім, не менш важливо звернути увагу і на те, що при діленні ряду цілих чисел на 10 (у першому циклі) жодних похибок ми не отримали. </p>
<p>Пояснюється це просто: в першому випадку обидва числа були цілими. А в другому ми множили ціле число на десятковий дріб, що призвело до некоректної роботи алгоритму і вилилося у похибки. </p>
<h3>Як виправити неточності при роботі з десятковими дробами</h3>
<p>У більшості випадків точність алгоритмів AS3 буде для нас повністю задовільною. Адже погодьтеся, похибка у 0.0000000000000001 не вплине на фінальний результат роботи нашої програми. </p>
<p>Але бувають ситуації, в яких виникнення подібних &#8220;артефактів&#8221; все-таки дуже небажане. І з однією із них я зіткнувся, працюючи над <a href="http://nub.com.ua/2011/09/drawing-crystal-for-new-flash-game/" title="symbiosis">грою Symbiosis</a>.</p>
<p>Уявіть, що вам потрібно показувати гравцеві певні характеристики його юнітів (наприклад, атаку чи захист) із точністю до одного числа після коми. Зрозуміла річ, що відображення цих характеристик буде вбудовано у графічний інтерфейс. І уявіть, що в полі, де повинна показуватися атака, припустимо 3.5, раптом з&#8217;явиться число 3.5000000000000001. Неприємний глюк, чи не так?</p>
<h3>Округлення числа Number до десяткового дробу з визначеною кількістю знаків після коми</h3>
<p>Знаючи, що ділення цілого числа на ціле число кратне десяти ніколи не дає похибок, ми можемо створити функцію, яка завжди повертатиме коректне значення з визначеною кількістю знаків після коми. </p>
<p>До речі, цю саму функцію можна використовувати замість штатного в ActionScript 3 методу <strong>Math.round</strong>, який округлює числа до цілого значення. В нашому випадку функція повертатиме контрольоване дробове значення. Наприклад, таким чином ми зможемо округлити число &#8220;Пі&#8221;, як до 3.14159, так і до 3.14, тоді як <strong>Math.round</strong> завжди повертатиме строго 3. </p>
<p>Ось як виглядає сама функція:</p>
<pre class="brush: as3; light: true; title: ; notranslate">public static function roundToDecimal (base:Number, decimalPlace:int):Number
{
	return Math.round(base * decimalPlace)/decimalPlace;
}</pre>
<p>Давайте розберемося з її роботою. </p>
<p>По-перше я зробив функцію статичною, щоб можна було додати її у власний статичний клас і викликати з будь-якого місця програми. Можете не звертати на це уваги, про статичні змінні та методи ми поки що не говорили в рамках блога, тому я ще повернуся до цієї теми в майбутньому. </p>
<p>Функція приймає два параметри:<br />
<strong>base</strong> – це число, яке ми будемо округлювати;<br />
<strong>decimalPlace</strong> – це число, кратне 10, яке визначатиме, скільки знаків після коми ми хочемо отримати (наприклад, 10 дасть нам 1 знак після коми; 100 – 2 знаки після коми; 1000 – 3 знаки після коми і так далі).</p>
<p>Припустимо, ми хочемо округлити число 5.324569 до двох знаків після коми. В такому випадку ми повинні передати методу відповідні параметри:<br />
roundToDecimal (5.324569, 100);<br />
base = 5.324569<br />
decimalPlace = 100</p>
<p>Розглянемо, що відбувається далі:<br />
1. Перша дія – множення <strong>base</strong> на <strong>decimalPlace</strong>: 5.324569 * 100 = 532.4569<br />
2. Після цього в методі використовується штатний <strong>Math.round</strong> щоб округлити число. Отримуємо 532<br />
3. Наступний крок – ділення на <strong>decimalPlace</strong>: 532/100 = 5.32</p>
<p>Як бачите, ми отримали потрібний результат – десятковий дріб з двома знаками після коми – при цьому не зіткнувшись з жодними &#8220;вибриками&#8221; AS3 у вигляді незрозумілих похибок. </p>
<p>Можна проапгрейдити функцію <strong>roundToDecimal</strong>, щоб замість не зовсім очевидного числа кратного десяти вказувати конкретну кількість знаків після коми (1, 2, 3 … і т. п.). Ось як вона виглядатиме:</p>
<pre class="brush: as3; light: true; title: ; notranslate">public static function roundToDecimal (base:Number, decimalPlace:int):Number
{
	var divisor:int = Math.pow(10, decimalPlace);
	return Math.round(base * divisor)/divisor;
}</pre>
<p>Функція <strong>Math.pow()</strong> повертає значення першого числа – 10 – піднесеного до ступеню decimalPlace. Таким чином, якщо decimalPlace = 1 – отримуємо 10; 2 – 100; 3 – 1000 і так далі.</p>
<p>Сподіваюся, ця стаття була корисною і допомогла розібратися з деякими похибками типу Number, які виникають у AS3. Якщо у вас залишилися запитання щодо роботи функцій – ласкаво прошу у коментарі. </p>
<p>Ну і традиційно, буду радий, якщо ви станете постійними читачами блога про флеш, <a href="http://feeds2.feedburner.com/nubcomua" title="RSS блога про флеш та ActionScript 3">підписавшись на RSS</a>.<br />
<h3>Інші записи на цю тему:</h3>
<ul class="related_post">
<li><a href="http://nub.com.ua/2010/11/movieclips-with-actionscript/" title="Динамічне додавання MovieClip на сцену. Робота з символами MovieClip методами ActionScript 3">Динамічне додавання MovieClip на сцену. Робота з символами MovieClip методами ActionScript 3</a></li>
<li><a href="http://nub.com.ua/2011/04/conditional-statements-in-actionscript/" title="Умовні вирази (conditionals) та оператори в ActionScript 3. Використання конструкцій if … else та switch … case">Умовні вирази (conditionals) та оператори в ActionScript 3. Використання конструкцій if … else та switch … case</a></li>
<li><a href="http://nub.com.ua/2011/03/how-to-use-math-random-method-as/" title="Генерування випадкових чисел у ActionScript. Як використовувати метод Math.random">Генерування випадкових чисел у ActionScript. Як використовувати метод Math.random</a></li>
<li><a href="http://nub.com.ua/2010/10/event-listeners-in-actionscript/" title="Урок 2. Слухачі подій (Event Listeners) та події в ActionScript 3. Координати сцени та рух!">Урок 2. Слухачі подій (Event Listeners) та події в ActionScript 3. Координати сцени та рух!</a></li>
<li><a href="http://nub.com.ua/2010/10/learning-actionscript-3/" title="Вступ до ActionScript 3: Що таке вбудована мова програмування у Flash та чим AS3 відрізняється від AS2">Вступ до ActionScript 3: Що таке вбудована мова програмування у Flash та чим AS3 відрізняється від AS2</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/nubcomua/~4/LtJueCCaj1s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nub.com.ua/2011/11/rounding-decimal-numbers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://nub.com.ua/2011/11/rounding-decimal-numbers/</feedburner:origLink></item>
		<item>
		<title>Як правильно вбудувати flash-контент у ваш сайт: Вставка swf-файлів з допомогою SWFObject 2</title>
		<link>http://feedproxy.google.com/~r/nubcomua/~3/QAlRybR2jBE/</link>
		<comments>http://nub.com.ua/2011/10/using-swfobject-to-embed-flash-content/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 11:37:39 +0000</pubDate>
		<dc:creator>Ярослав Федорак</dc:creator>
				<category><![CDATA[Загальна]]></category>
		<category><![CDATA[Практика]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[swf]]></category>
		<category><![CDATA[swfobject]]></category>
		<category><![CDATA[вбудовування flash]]></category>
		<category><![CDATA[вбудовування флеш]]></category>
		<category><![CDATA[вставка flash]]></category>
		<category><![CDATA[вставка флеш]]></category>
		<category><![CDATA[флеш-контент]]></category>
		<category><![CDATA[флеш-плеєр]]></category>

		<guid isPermaLink="false">http://nub.com.ua/?p=725</guid>
		<description><![CDATA[Якщо ви працюєте над розробкою флеш-ігор чи будь-яких інших флеш-програм, то швидш за все рано чи пізно зіткнетесь з необхідністю вбудовувати свої swf-файли у веб-сторінки. Існує кілька методів вставки флеш-контенту в html-код. Новачки традиційно користуються найпростішим з них – копіюванням коду зі згенерованого під час публікації у Flash IDE html-файлу. На жаль, &#8220;рідний&#8221; код, який [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float:left"><img src="http://nub.com.ua/wp-content/uploads/2011/10/swfobject.jpg" alt="swfobject" title="swfobject" width="250" height="170" class="alignnone size-full wp-image-727" /></span> Якщо ви працюєте над розробкою флеш-ігор чи будь-яких інших флеш-програм, то швидш за все рано чи пізно зіткнетесь з необхідністю вбудовувати свої swf-файли у веб-сторінки. Існує кілька методів вставки флеш-контенту в html-код. Новачки традиційно користуються найпростішим з них – копіюванням коду зі згенерованого під час публікації у Flash IDE html-файлу. </p>
<p>На жаль, &#8220;рідний&#8221; код, який генерується програмою Adobe має одразу кілька недоліків. Передусім – він неуніверсальний. Вам доведеться дублювати частину коду для вставки флеш-контенту, щоб останній правильно відображався у IE. При цьому деяких проблем все-одно не уникнути. </p>
<p>По-друге, код, отриманий внаслідок компіляції флеш-контенту у Flash IDE використовує теги, які не відповідають стандартам W3C. </p>
<p>Ну і нарешті, при використанні стандартних для класичного Adobe коду тегів &lt;object> та &lt;embed> можуть виникати проблеми виявлення версії флеш-плеєра, встановленого у користувача, та коректного завантаження флеш-кліпів. З подібною проблемою я зіткнувся, працюючи над розробкою ігрового порталу <a href="http://jarofgames.com/" title="flash games site" target="_blank">Jar of Games</a>, який на 90% складається з флеш-контенту. Якщо у Firefox flash-кліпи оброблялися коректно, то IE починав показувати флеш тільки після того, як гра повністю завантажилася (а повинен був показувати прелоадер під час завантаження).</p>
<p>На щастя існує спосіб уникнути всіх перелічених вище проблем вбудовування флеш-контенту, отримавши при цьому безліч додаткових переваг та бонусів – SWFObject. Якщо ви пройдетесь по провідних сайтах, які багато працюють з флеш-контентом (таких як топові ігрові портали), то побачите, що всі вони використовують саме SWFObject для вставки флеш-кліпів. Тобто по факту SWFObject вже став стандартом у цій сфері.</p>
<p><span id="more-725"></span></p>
<p>Ось ще кілька аргументів на користь SWFObject:</p>
<ul>
<li>він більш оптимізований та гнучкий, ніж будь-який інший спосіб вбудовування Flash-плеєра;</li>
<li>він є універсальним рішенням для всіх HTML, Flash та JavaScript-розробників;</li>
<li>він припиняє використання &#8220;специфічної&#8221; розмітки для деяких браузерів, при цьому даючи змогу використовувати стандартну розмітку та альтернативний контент;</li>
<li>використовує ненав&#8217;язливий JavaScript та найкращі практики JavaScript;</li>
<li>простий у використанні.</li>
</ul>
<h3>Робота з  SWFObject</h3>
<p>SWFObject це джаваскриптовий файл, який дозволяє вирішувати практично всі проблеми, що виникають при вбудовуванні флеш-контенту. Завантажити його можна на <a href="http://code.google.com/p/swfobject/" title="swfobject page" target="_blank">сторінці проекту SWFObject</a> в Google Code. Там само ви знайдете і детальний посібник для початківців і повну документацію по SWFObject англійською мовою.</p>
<p>Остання версія SWFObject 2 дозволяє вбудовувати Flash двома методами:</p>
<ol>
<li><strong>Статичний метод публікації</strong> Flash та альтернативний контент вбудовуються з допомогою стандартної розмітки, а JavaScript використовується лише для вирішення проблем, які неможливо подолати інакше.</li>
<p>Основна перевага цього методу полягає в тому, що виконання Flash контенту не залежатиме від JavaScript, завдяки чому потенційно флеш буде доступний більшій аудиторії. </p>
<p>Втім, &#8220;користувачі&#8221;, які виключають JavaScript у своїх браузерах – не наша аудиторія. Практика показує, що як правило так поступають зовсім не люди, а різноманітні спам-боти. Тому я не розглядатиму роботу статичного методу публікації в рамках цієї статті. Якщо з якихось причин ви хочете використати саме статичний метод – зверніться до документації, посилання на яку я вже дав вище.</p>
<li><strong>Динамічний метод публікації</strong> базується на заміні альтернативного контенту Flash-контентом у випадку, якщо на комп&#8217;ютері користувача встановлена достатньо нова версія Flash-плеєра та є підтримка JavaScript.</li>
<p>Основні переваги динамічного методу публікації полягають в тому, що він дозволяє обійти механізми активації активного контенту в IE 6, 7 та Opera 9+, а також чудово інтегрується в JavaScript програми.</ol>
<p>Тож давайте детальніше розглянемо, як вбудувати Flash-контент в сайт з допомогою динамічного методу публікації.</p>
<h3>Крок 1. Створення альтернативного контенту.</h3>
<p>Передусім, потрібно знати, що динамічний метод публікації втілює принципи так званого &#8220;прогресивного покращення&#8221; (progressive enchancement). Використовуючи його ви не в буквальному сенсі вставляєте флеш-контент у сайт, як це було при використанні традиційної розмітки, а замінюєте альтернативний HTML-контент флеш-контентом у випадку, якщо є достатня підтримка JavaScript та Flash. </p>
<p>Можливо, концепція прогресивного покращення здасться вам складною для сприйняття (хоча швидше – просто незвичною), але не хвилюйтеся, з часом ви звикнете до неї і зрозумієте всі її переваги. </p>
<p>Отже, при використанні динамічного методу публікації перше, що потрібно зробити – це створити HTML контейнер з альтернативним контентом (ним може бути текст, зображення чи будь-який інший стандартний HTML-контент) і задати для нього id. Наприклад, так:</p>
<pre class="brush: xml; light: true; title: ; notranslate">&lt;div id=&quot;alternativeContent&quot;&gt;
&lt;p&gt;Текст альтернативного контенту&lt;/p&gt;
&lt;/div&gt;</pre>
<p>Цей блок ви повинні розмістити в тому місці на вашому сайті, де в майбутньому повинен з&#8217;явитися flash-ролик. Альтернативний контент користувач побачить тільки у випадку, якщо можливостей його комп&#8217;ютера не вистачає для перегляду флеш-ролика (наприклад, якщо він використовує застарілу версію flash-плеєра або його браузер не підтримує JavaScript). Власне, текст альтернативного контенту зазвичай і є вказівкою користувачеві, що у нього недостатньо інструментів для перегляду флеш-контенту з пропозицією завантажити останню версію flash-плеєра або увімкнути JavaScript.</p>
<h3>Крок 2. Підключення бібліотеки SWFObject</h3>
<p>Бібліотека SWFObject складається всього з одного зовнішнього файла, який ви повинні завантажити на свій хостинг і підключити в коді (я роблю це в блоці head). Ось як виглядає стрічка підключення скрипта:</p>
<pre class="brush: xml; light: true; title: ; notranslate">&lt;script type=&quot;text/javascript&quot; src=&quot;swfobject.js&quot;&gt;&lt;/script&gt;</pre>
<p>Відповідно, якщо файл <strong>swfobject.js</strong> знаходиться не в кореневій папці вашого сайту – до нього потрібно прописати шлях у директиві &#8220;src&#8221;. Наприклад, якщо swfobject.as знаходиться в папці scripts, то директива виглядатиме наступним чином: src=&#8221;scripts/swfobject.js&#8221;.</p>
<h3>Крок 3. Заміна альтернативного контенту флеш-контентом.</h3>
<p>Останній крок – це власне заміна альтернативного контенту флеш-контентом, якщо версія flash-плеєра виявилася достатньою. Ось як виглядає цей метод:</p>
<pre class="brush: xml; light: true; title: ; notranslate">&lt;script type=&quot;text/javascript&quot;&gt;
swfobject.embedSWF(swfUrl, id, width, height, version, expressInstallSwfurl, flashvars, params, attributes)
&lt;/script&gt;</pre>
<p>У цього методу п&#8217;ять обов&#8217;язкових та чотири необов&#8217;язкових параметри.</p>
<p><strong>Обов&#8217;язкові: </strong></p>
<ul>
<li><strong>swfUrl</strong> – URL swf-файла;</li>
<li><strong>id</strong> – id HTML-контейнера з альтернативним контентом, який буде замінений на флеш-контент;</li>
<li><strong>width</strong> – ширина swf-файла;</li>
<li><strong>height</strong> – висота swf-файла;</li>
<li><strong>version</strong> – версія флеш-плеєра, необхідного для даного SWF (формат major.minor.release)</li>
</ul>
<p><strong>Необов&#8217;язкові</strong> (їх ми також не будемо детально розглядати в рамках цієї статті, просто озвучимо):</p>
<ul>
<li><strong>expressInstallSwfurl</strong> – задає URL вашого express install SWF та активує Adobe express install;</li>
<li><strong>flashvars</strong> – змінні, які передаються у ваш flash-додаток у вигляді пар &#8220;ім&#8217;я:значення&#8221;;</li>
<li><strong>params</strong> – елементи params вкладені в object у вигляді пар &#8220;ім&#8217;я:значення&#8221;;</li>
<li><strong>attributes</strong> – атрибути елемента object у вигляді пар &#8220;ім&#8217;я:значення&#8221;.</li>
</ul>
<p>Код заміни альтернативного контенту в нашому прикладі виглядатиме так:</p>
<pre class="brush: xml; light: true; title: ; notranslate">&lt;script type=&quot;text/javascript&quot;&gt;
swfobject.embedSWF(&quot;myContent.swf&quot;, &quot;alternativeContent&quot;, &quot;300&quot;, &quot;120&quot;, &quot;9.0.0&quot;);
&lt;/script&gt;</pre>
<p>	Тож загальний html з повним кодом вставки swf з допомогою SWFObject 2 міг би виглядати, наприклад, наступним чином:</p>
<pre class="brush: xml; title: ; notranslate">&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; lang=&quot;en&quot; xml:lang=&quot;en&quot;&gt;
  &lt;head&gt;

    &lt;script type=&quot;text/javascript&quot; src=&quot;swfobject.js&quot;&gt;&lt;/script&gt;

  &lt;/head&gt;
  &lt;body&gt;

    &lt;script type=&quot;text/javascript&quot;&gt;
      swfobject.embedSWF(&quot;myContent.swf&quot;, &quot;alternativeContent&quot;, &quot;300&quot;, &quot;120&quot;, &quot;9.0.0&quot;);
    &lt;/script&gt;

    &lt;div id=&quot;alternativeContent&quot;&gt;
      &lt;p&gt;Текст альтернативного контенту&lt;/p&gt;
    &lt;/div&gt;

  &lt;/body&gt;
&lt;/html&gt;</pre>
<p>Сподіваюся, ця стаття була для вас корисною та зрозумілою. Якщо після її прочитання залишилися додаткові запитання щодо вставки флеш-контенту з допомогою SWFObject – не соромтесь задавати їх у коментарях.<br />
<h3>Інші записи на цю тему:</h3>
<ul class="related_post">
<li><a href="http://nub.com.ua/2011/01/files-you-need/" title="Основи Flash та ActionScript: Типи файлів, з якими повинен навчитися працювати флеш-розробник">Основи Flash та ActionScript: Типи файлів, з якими повинен навчитися працювати флеш-розробник</a></li>
<li><a href="http://nub.com.ua/2011/12/flashgamm-kyiv-2011/" title="FlashGAMM Kyiv 2011: Враження від першого дня">FlashGAMM Kyiv 2011: Враження від першого дня</a></li>
<li><a href="http://nub.com.ua/2011/09/display-object-and-display-list-in-as3/" title="Організація візуальних об&#8217;єктів методами ActionScript 3: Display Object, Display Container та Display List">Організація візуальних об&#8217;єктів методами ActionScript 3: Display Object, Display Container та Display List</a></li>
<li><a href="http://nub.com.ua/2011/06/turtle-dreams-to-fly-statistics/" title="Turtle Dreams to Fly: Статистика та висновки після релізу">Turtle Dreams to Fly: Статистика та висновки після релізу</a></li>
<li><a href="http://nub.com.ua/2011/06/release-of-turtle-dreams-to-fly/" title="Turtle Dreams to Fly: Реліз!">Turtle Dreams to Fly: Реліз!</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/nubcomua/~4/QAlRybR2jBE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nub.com.ua/2011/10/using-swfobject-to-embed-flash-content/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://nub.com.ua/2011/10/using-swfobject-to-embed-flash-content/</feedburner:origLink></item>
		<item>
		<title>Організація візуальних об’єктів методами ActionScript 3: Display Object, Display Container та Display List</title>
		<link>http://feedproxy.google.com/~r/nubcomua/~3/gHuoGPxFZFw/</link>
		<comments>http://nub.com.ua/2011/09/display-object-and-display-list-in-as3/#comments</comments>
		<pubDate>Thu, 29 Sep 2011 21:38:02 +0000</pubDate>
		<dc:creator>Ярослав Федорак</dc:creator>
				<category><![CDATA[Загальна]]></category>
		<category><![CDATA[Практика]]></category>
		<category><![CDATA[Уроки]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[display list]]></category>
		<category><![CDATA[display object]]></category>
		<category><![CDATA[display object container]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash Develop]]></category>
		<category><![CDATA[Movie Clip]]></category>
		<category><![CDATA[візуальні об'єкти]]></category>
		<category><![CDATA[об'єкт відображення]]></category>
		<category><![CDATA[список відображення]]></category>
		<category><![CDATA[уроки flash]]></category>
		<category><![CDATA[флеш]]></category>

		<guid isPermaLink="false">http://nub.com.ua/?p=706</guid>
		<description><![CDATA[В попередніх статтях нам неодноразово доводилося працювати з об&#8217;єктами відображення (display object), хоча саме поняття display object вживається на &#8220;сторінках&#8221; цього блога вперше. По-суті будь-який візуальний об&#8217;єкт, який можна розмістити на сцені – це і є об&#8217;єкт відображення. Клас DisplayObject є базовим для всіх об&#8217;єктів, які можуть бути візуально представлені у флеш-кліпі. Наприклад, будь-який MovieClip [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float:left"><img src="http://nub.com.ua/wp-content/uploads/2011/09/display-list-in-as3.jpg" alt="display-list-in-as3" title="display-list-in-as3" width="250" height="176" class="alignnone size-full wp-image-707" /></span> В попередніх статтях нам неодноразово доводилося працювати з <strong>об&#8217;єктами відображення (display object)</strong>, хоча саме поняття display object вживається на &#8220;сторінках&#8221; цього блога вперше. По-суті будь-який візуальний об&#8217;єкт, який можна розмістити на сцені – це і є об&#8217;єкт відображення. </p>
<p>Клас <strong>DisplayObject</strong> є базовим для всіх об&#8217;єктів, які можуть бути візуально представлені у флеш-кліпі. Наприклад, будь-який MovieClip чи Sprite, з якими нам доводилося працювати раніше, також належить до об&#8217;єктів відображення, хоча насправді їх перелік куди ширший. Згадайте хоча б статтю про <a href="http://nub.com.ua/2010/11/movieclips-with-actionscript/">динамічне додавання MovieClip на сцену методами ActionScript 3</a>. Зірки, які використовувалися у наведеному там прикладі також належать до об&#8217;єктів відображення.</p>
<p>Розуміння концепції <strong>списку відображення (display list)</strong> та ролі об&#8217;єктів відображення у створенні flash-програм надзвичайно важливе для кожного початківця, який прагне навчитися програмуванню на ActionScript. Адже по суті кожна програма, написана на ActionScript 3.0 має власну ієрархію об&#8217;єктів відображення, яка включає повний набір візуальних елементів. Це базова концепція, зрозумівши яку, ви наблизитесь до розуміння принципів функціонування AS3-програм та навчитесь з легкістю маніпулювати будь-якими візуальними об&#8217;єктами всередині власної програми. </p>
<p><span id="more-706"></span></p>
<p>Візуальні елементи можна умовно поділити на три групи:</p>
<ol>
<li><strong>Сцена (Stage)</strong>. Це основний контейнер для всіх об&#8217;єктів відображення. Сцена завжди знаходиться в основі ієрархії візуальних елементів і тому будь-яка flash-програма може включати лише одну сцену.</li>
<li><strong>Об&#8217;єкт відображення (Display object)</strong>. У ActionScript 3 всі без виключення елементи, які можуть бути візуально представлені на екрані, належать до типу об&#8217;єктів відображення та є успадкованими від класу DisplayObject. Форми (Shapes), фрагменти кліпу (Movie clips), спрайти (Sprites) і навіть текстові поля (Text fields) по суті є об&#8217;єктами відображення. І це лише невелика частина від загальної їх кількості.</li>
<li><strong>Контейнер об&#8217;єктів відображення (Display object container)</strong>. Об&#8217;єкти відображення можуть бути розміщені тільки всередині контейнерів, основним з яких є вже згадана нами сцена. Втім, не тільки сцена може фізично містити візуальні елементи. Деякі об&#8217;єкти відображення (Movie Clip, Sprite) водночас можуть бути контейнерами для інших об&#8217;єктів відображення. Наприклад, ви можете розмістити довільну кількість форм, кліпів чи текстових полів всередині іншого кліпу чи спрайта. Такі об&#8217;єкти відображення, розміщені всередині контейнера, називаються дітьми (children) цього контейнера і записуються до списку дітей (child list).</li>
</ol>
<h3>Список об&#8217;єктів відображення (Display list)</h3>
<p>Список об&#8217;єктів відображення у ActionScript завжди включає в себе всі видимі елементи вашої програми. Найпростіший спосіб зрозуміти принцип формування списку об&#8217;єктів відображення – уявити собі структуру дерева, в якій сцена є стовбуром (основою), гілки – контейнерами об&#8217;єктів відображення, а листя – самими об&#8217;єктами відображення. У дерева є тільки один стовбур, але може бути бути скільки-завгодно гілок. На одній гілці може рости багато листя, а також інші гілки. Але ніколи гілки не ростуть на листі.</p>
<p>Наведена нижче діаграма демонструє приклад гіпотетичної ієрархії об&#8217;єктів відображення у SWF-файлі:</p>
<p style="text-align:center"><img src="http://nub.com.ua/wp-content/uploads/2011/09/01-display-hierarchy.png" alt="display-hierarchy" title="display-hierarchy" width="296" height="382" class="alignnone size-full wp-image-711" /></p>
<p>Діти (тобто будь-які об&#8217;єкти відображення всередині контейнерів) завжди візуально знаходяться вище, ніж їхні &#8220;батьки&#8221; (тобто сам контейнер). Якщо ж контейнер містить багато об&#8217;єктів відображення (дітей) то вище будуть знаходитися ті об&#8217;єкти, які були додані в контейнер пізніше. Кожному такому об&#8217;єктові присвоюється свій порядковий номер (починаючи з нуля). За допомогою коду ActionScript ми можемо впливати на порядок розміщення візуальних елементів у списку відображення. </p>
<h3>Як додавати об&#8217;єкти (display object) в список відображення (display list)</h3>
<p>Що ж, сподіваюся, я не надто втомив вас &#8220;сухою&#8221; теорією. Зараз ми спробуємо створити просту флеш-програму, яка продемонструє всі переваги використання об&#8217;єктів відображення та списку відображення, а також керування ними методами ActionScript 3.</p>
<p>Створіть новий флеш-файл, в якому створіть три символи MovieClip: чотирикутник, коло та трикутник. Для зручності можете розфарбувати їх різними кольорами. А також не забудьте під час створення символів експортувати кожен з них для використання через ActionScript. Про те, як це зробити, написано у вже <a href="http://nub.com.ua/2010/11/movieclips-with-actionscript/">згаданій раніше статті</a>. Я назвав символи <strong>Square_mc, Circle_mc</strong> та <strong>Triangle_mc</strong> відповідно. Приставка _mc дозволяє легко орієнтуватися, що ми маємо справу з  Movie Clip-ами. Це додає читабельності нашому коду, особливо, якщо останнього буде дуже багато. </p>
<p>Після створення символів видаліть їх зі сцени, щоб вони залишилися тільки у бібліотеці. Ми будемо додавати ці символи динамічно, за допомогою ActionScript.</p>
<p>Тепер приступаємо до написання коду. Якщо у попередніх статтях код ми писали безпосередньо у кадрах fla-файлу, то тепер настав час переходити до створення окремих as-файлів. Пора звикати до нормальної роботи зі зручними інструментами розробки і нарешті відмовитися від убогого редактора коду у Flash IDE. </p>
<p>Для роботи з as-файлами вам знадобиться редактор FlashDevelop. Про те, як налаштувати FlashDevelop, структурувати as-файли та підключити файл до проекту я писав у статті &#8220;<a href="http://nub.com.ua/2011/01/using-flash-ide-and-flashdevelop/">Використання Flash IDE + Flash Develop</a>&#8220;. В майбутньому ми будемо завжди користуватися подібною структурою, тому раджу вивчити та звикнути до неї. З часом ви зрозумієте, наскільки це просто та зручно. </p>
<p>Скажу лишень, що для потреб демонстрації роботи display object зовсім не обов&#8217;язково створювати багато вкладених папок і файлів. Я розмістив fla-файл та єдиний as-файл Main.as у одній папці. Нагадаю, що для підключення as-файла до вашого флеш-проекту потрібно прописати його у полі Class. Ось як це виглядає:</p>
<p style="text-align:center"><img src="http://nub.com.ua/wp-content/uploads/2011/09/02-enabling-main-class.jpg" alt="enabling-main-class" title="enabling-main-class" width="300" height="169" class="alignnone size-full wp-image-714" /></p>
<p>У файлі Main.as пишемо наступний код:</p>
<pre class="brush: as3; title: ; notranslate">package //не потрібно вказувати пакет, бо as-файл та fla-файл знаходяться в одній папці
{
	import flash.display.Sprite;
	import flash.display.MovieClip;
	import flash.display.TriangleCulling;

	public class Main extends Sprite
	{

		/*вказуємо три змінні: чотирикутник, коло та трикутник
		 *і зразу присвоюємо їм візуальне відображення із бібліотеки
		 */
		private var square:MovieClip = new Square_mc();
		private var circle:MovieClip = new Circle_mc();
		private var triangle:MovieClip = new Triangle_mc();

		public function Main ():void
		{
			//вказуємо координати об'єктам, щоб красиво розмістити їх на сцені
			square.x = 100;
			square.y = 100;
			circle.x = 150;
			circle.y = 60;
			triangle.x = 140;
			triangle.y = 120;

			//додаємо об'єкти до списку відображення
			addChild(square);
			addChild(circle);
			addChild(triangle);
		}
	}
}</pre>
<p>Якщо все було зроблено правильно, то при тестуванні файлу отримаємо такий результат:</p>
<div style="text-align:center"><object type="application/x-shockwave-flash" data="http://nub.com.ua/wp-content/uploads/2011/09/AddingDisplayObjects.swf" width="425" height="355" class="embedflash" style="width:400px; height:300px"><param name="movie" value="http://nub.com.ua/wp-content/uploads/2011/09/AddingDisplayObjects.swf" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><small>(Будь ласка, перейдіть на сайт для перегляду Flash-кліпу!)</small></object></div>
<p>Зверніть увагу, що порядок об&#8217;єктів відображення у списку відповідає порядку їх додавання. Першим був доданий чотирикутник – тож візуально він знаходиться під колом та трикутником. Останнім був доданий трикутник – він знаходиться над обома іншими об&#8217;єктами.</p>
<p>Власне, метод <strong>addChild()</strong> і є основною директивою, яка додає об&#8217;єкт до списку відображення. Якщо ви хочете &#8220;вставити&#8221; новий об&#8217;єкт в конкретну позицію списку, потрібно використовувати метод <strong>addChildAt()</strong>. </p>
<p>Нумерація об&#8217;єктів у списку починається з нуля. Тому метод <strong>addChildAt(0)</strong> вставить об&#8217;єкт на найнижчу позицію у переліку. </p>
<p>Спробуйте змінити частину коду, в якій об&#8217;єкти додаються у список на:</p>
<pre class="brush: as3; light: true; title: ; notranslate">addChild(square);
addChild(circle);
addChildAt(triangle, 0);</pre>
<p>і ви побачите, що хоча чотирикутник та коло були додані першими, та все ж трикутник опинився найнижче, оскільки ми чітко вказали йому позицію на самому початку списку відображення. Таким чином індекси у списку відображення трикутника, чотирикутника та кола стали відповідно 0, 1 та 2.</p>
<p>Варто також пам&#8217;ятати, що у списку відображення існують тільки ті індекси, які присвоєні вже доданим до нього об&#8217;єктам. Спроба додати об&#8217;єкт на позицію, якої ще не існує, викличе помилку. Таким чином, наприклад, код:</p>
<pre class="brush: as3; light: true; title: ; notranslate">addChildAt(square, 2);
addChild(circle);
addChild(triangle);</pre>
<p>буде неправильним і програма не запуститься, тому що в момент додавання першого об&#8217;єкта (чотирикутника) індекса 2 у списку відображення ще не існує. </p>
<h3>Зміна глибини (depth) об&#8217;єкта у списку відображення (display list)</h3>
<p>Існує кілька способів змінити індекс об&#8217;єкта у списку відображення. З одним із них ми вже познайомилися вище – це метод <strong>addChildAt()</strong>, який дозволяє вказати точний індекс об&#8217;єкта. При цьому якщо об&#8217;єкт з таким індексом існує, то він автоматично переміщується вище.<br />
Розберемо повторно код:</p>
<pre class="brush: as3; light: true; title: ; notranslate">addChild(square);
addChild(circle);
addChildAt(triangle, 0);</pre>
<p>Спершу до списку відображення додається чотирикутник і йому присвоюється індекс 0. Другим додається коло, і йому, відповідно, присвоюється індекс 1. Потім додається трикутник і йому примусово встановлюється індекс 0. Таким чином трикутник опиняється на &#8220;дні&#8221; списку відображення, а чотирикутнику та колу присвоюються індекси 1 і 2 відповідно.</p>
<p>Для об&#8217;єктів, які вже знаходяться у списку відображення, можна використовувати метод <strong>setChildIndex()</strong>, який діє по аналогії з <strong>addChildAt()</strong>. Якщо ж ви просто хочете поміняти місцями два об&#8217;єкти у списку відображення – використовується метод <strong>swapChildren()</strong> (якщо у вас є посилання на обидва об&#8217;єкти) або <strong>swapChildrenAt()</strong> (якщо вам відомі індекси цих об&#8217;єктів).</p>
<p>Якщо ж ви знаєте індекс об&#8217;єкта і хочете звернутися до нього – використовуйте метод <strong>getChildAt()</strong>.</p>
<p>Щоб закріпити матеріал на практиці давайте спробуємо модифікувати попередній приклад з чотирикутником, колом та трикутником таким чином, щоб при кліку по будь-якому із об&#8217;єктів, він переміщувався на вершину списку відображення.  </p>
<p>Значна частина коду залишилася без змін. З&#8217;явилося тільки кілька нових імпортів, слухачі подій мишки та функція, яка змінює розташування об&#8217;єктів у списку відображення. Ось оновлений код:</p>
<pre class="brush: as3; title: ; notranslate">package //не потрібно вказувати пакет, бо as-файл та fla-файл знаходяться в одній папці
{
	import flash.display.DisplayObject;
	import flash.display.Sprite;
	import flash.display.MovieClip;
	import flash.events.MouseEvent;

	public class Main extends Sprite
	{

		/*вказуємо три змінні: чотирикутник, коло та трикутник
		 *і зразу присвоюємо їм візуальне відображення із бібліотеки
		 */
		private var square:MovieClip = new Square_mc();
		private var circle:MovieClip = new Circle_mc();
		private var triangle:MovieClip = new Triangle_mc();

		public function Main ():void
		{
			//вказуємо координати об'єктам, щоб красиво розмістити їх на сцені
			square.x = 100;
			square.y = 100;
			circle.x = 150;
			circle.y = 60;
			triangle.x = 140;
			triangle.y = 120;

			//додаємо об'єкти до списку відображення
			addChild(square);
			addChild(circle);
			addChild(triangle);

			//додаємо слухачі подій до кожного об'єкта
			square.addEventListener(MouseEvent.CLICK, onClickHandler);
			circle.addEventListener(MouseEvent.CLICK, onClickHandler);
			triangle.addEventListener(MouseEvent.CLICK, onClickHandler);
		}

		private function onClickHandler(e:MouseEvent): void
		{
			//присвоюємо змінній clickedObject об'єкт, на який ми клікнули
			var clickedObject:DisplayObject = e.target as DisplayObject;

			/*Змінюємо індекс у списку відображення нашого об'єкта.
			 *Зверніть увагу, на змінну numChildren, яка завжди повертає
			 *загальну кількість об'єктів відображення. Таким чином,
			 *щоб розмістити об'єкт останнім у списку відображення,
			 *потрібно присвоїти йому індекс numChildren - 1
			 */
			setChildIndex(clickedObject, numChildren - 1);
		}
	}
}</pre>
<p>Особливу увагу потрібно звернути на нову змінну <strong>numChildren</strong>, яка повертає загальну кількість дітей у списку відображення. В нашому випадку їх 3. Таким чином, оскільки нумерація в списку починається з нуля, щоб отримати індекс найвищого об&#8217;єкта, потрібно від змінної numChildren відняти одиницю.</p>
<p>А ось і результат виконання нового коду. Клікайте по об&#8217;єктах і вони будуть переміщуватися на вершину списку відображення:</p>
<div style="text-align:center"><object type="application/x-shockwave-flash" data="http://nub.com.ua/wp-content/uploads/2011/09/SortingDisplayObjects.swf" width="425" height="355" class="embedflash" style="width:400px; height:300px"><param name="movie" value="http://nub.com.ua/wp-content/uploads/2011/09/SortingDisplayObjects.swf" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><small>(Будь ласка, перейдіть на сайт для перегляду Flash-кліпу!)</small></object></div>
<h3>Видалення об&#8217;єктів (display object) зі списку відображення (display list)</h3>
<p>Останнє, що потрібно навчитися для повноцінної роботи зі списком відображення – це видалення об&#8217;єктів зі списку. Для цього використовується метод <strong>removeChild()</strong>, який передає посилання на об&#8217;єкт як параметр. Спробуйте модифікувати код першого прикладу, додавши одну стрічку:</p>
<pre class="brush: as3; light: true; title: ; notranslate">addChild(square);
addChild(circle);
addChild(triangle);
removeChild(circle);</pre>
<p>І ви побачите, що при тестуванні флеш-файлу коло на екрані не з&#8217;явиться. Воно буде спершу додане у список відображення, але потім відразу ж видалене з нього.</p>
<p>Для видалення об&#8217;єкта з конкретним індексом у списку використовується метод <strong>removeChildAt()</strong>. </p>
<p>Було б логічно, якби існував метод, який видаляє всі об&#8217;єкти зі списку відображення. Та з незрозумілих причин розробники AS3 не створили такого методу. Тому, щоб видалити всі об&#8217;єкти зі списку відображення, програмісти використовують наступну конструкцію-цикл:</p>
<pre class="brush: as3; light: true; title: ; notranslate">while (numChildren &gt; 0) {
     removeChildAt(0);
}</pre>
<p>Саме цей метод я використовував для того, щоб очистити сцену від зірок у статті про <a href="http://nub.com.ua/2010/11/movieclips-with-actionscript/">динамічне додавання Movie Clip на сцену</a>. </p>
<p>Сподіваюся, тут все зрозуміло. Цикл перевіряє, чи є в контейнері хоча б один об&#8217;єкті відображення (numChildren > 0). Якщо хоча б один об&#8217;єкт присутній – виконується наступна стрічка коду:  removeChildAt(0); &#8211; яка видаляє найнижчий об&#8217;єкт. Цикл повторюється до тих пір, поки в списку відображення не залишиться жодного об&#8217;єкту.</p>
<p>На цьому розповідь про роботу з об&#8217;єктами відображення та списком відображення можна закінчити. Сподіваюся, стаття не виявилася занадто складною. Зате такі базові знання допоможуть вам краще орієнтуватися у керуванні візуальними елементами. Задавайте запитання у коментарях.</p>
<p>Якщо стаття вам сподобалася, підпишіться на <a target="_blank" href="http://feeds2.feedburner.com/nubcomua">RSS блога про Flash та ActionScript</a>, щоб не пропустити нічого важливого.<br />
<h3>Інші записи на цю тему:</h3>
<ul class="related_post">
<li><a href="http://nub.com.ua/2011/04/conditional-statements-in-actionscript/" title="Умовні вирази (conditionals) та оператори в ActionScript 3. Використання конструкцій if … else та switch … case">Умовні вирази (conditionals) та оператори в ActionScript 3. Використання конструкцій if … else та switch … case</a></li>
<li><a href="http://nub.com.ua/2011/03/how-to-learn-flash/" title="Чому мене навчила розробка флеш-гри, або Практика – найкращий вчитель!">Чому мене навчила розробка флеш-гри, або Практика – найкращий вчитель!</a></li>
<li><a href="http://nub.com.ua/2011/01/turtle-dreams-to-fly-concept/" title="Уроки польотів для черепахи та кілька слів про концепцію другої гри">Уроки польотів для черепахи та кілька слів про концепцію другої гри</a></li>
<li><a href="http://nub.com.ua/2010/11/movieclips-with-actionscript/" title="Динамічне додавання MovieClip на сцену. Робота з символами MovieClip методами ActionScript 3">Динамічне додавання MovieClip на сцену. Робота з символами MovieClip методами ActionScript 3</a></li>
<li><a href="http://nub.com.ua/2009/07/animating-the-ball/" title="Урок 8. Навчаємо м’ячик стрибати, використовуючи ефект motion (classic) tween у Flash">Урок 8. Навчаємо м’ячик стрибати, використовуючи ефект motion (classic) tween у Flash</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/nubcomua/~4/gHuoGPxFZFw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nub.com.ua/2011/09/display-object-and-display-list-in-as3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://nub.com.ua/2011/09/display-object-and-display-list-in-as3/</feedburner:origLink></item>
		<item>
		<title>Як я малював кристал для нової гри (відео)</title>
		<link>http://feedproxy.google.com/~r/nubcomua/~3/kP_-GI_GTZE/</link>
		<comments>http://nub.com.ua/2011/09/drawing-crystal-for-new-flash-game/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 20:45:59 +0000</pubDate>
		<dc:creator>Ярослав Федорак</dc:creator>
				<category><![CDATA[Загальна]]></category>
		<category><![CDATA[Малювання]]></category>
		<category><![CDATA[Практика]]></category>
		<category><![CDATA[drawing]]></category>
		<category><![CDATA[flash game]]></category>
		<category><![CDATA[painting]]></category>
		<category><![CDATA[symbiosis]]></category>
		<category><![CDATA[кристал]]></category>
		<category><![CDATA[малювання]]></category>
		<category><![CDATA[нова гра]]></category>
		<category><![CDATA[уроки малювання]]></category>
		<category><![CDATA[флеш-гра]]></category>

		<guid isPermaLink="false">http://nub.com.ua/?p=700</guid>
		<description><![CDATA[Після випуску Turtle Dreams to Fly та моєї нової гри Don&#8217;t Eat Last Berry часу на наповнення блога про флеш практично не залишається. Тому, щоб не виникало надто довгих перерв, я вирішив трішки привідкрити завісу над тим, чим займаюся зараз… А працюю я, як ви могли здогадатися із заголовку, над новою грою з робочою назвою [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float:left"><img src="http://nub.com.ua/wp-content/uploads/2011/09/crystal-symbiosis.jpg" alt="crystal-symbiosis" title="crystal-symbiosis" width="250" height="167" class="alignnone size-full wp-image-701" /></span> Після випуску <a target="_blank" href="http://jarofgames.com/sports-andamp-racing/turtle-dreams-to-fly">Turtle Dreams to Fly</a> та моєї нової гри <a target="_blank" href="http://jarofgames.com/puzzle-andamp-physics/dont-eat-last-berry">Don&#8217;t Eat Last Berry</a> часу на наповнення блога про флеш практично не залишається. Тому, щоб не виникало надто довгих перерв, я вирішив трішки привідкрити завісу над тим, чим займаюся зараз…</p>
<p>А працюю я, як ви могли здогадатися із заголовку, над новою грою з робочою назвою Symbiosis. Поки що готовий тільки прототип, а це не більше 5% від загального об&#8217;єму роботи. </p>
<p>За задумкою це повинна вийти гра на перехресті жанрів <a target="_blank" href="http://jarofgames.com/strategy-and-defence">Tower Defense</a> та стратегії. Як і в Tower Defense гравець буде будувати та керувати вежами. Але на відміну від класичних ігор у цьому жанрі ніяких &#8220;хвиль&#8221; ворогів не буде. Натомість, гравцеві доведеться зіткнутися зі штучним інтелектом, який теж зможе будувати вежі. </p>
<p>Втім, я не буду заглиблюватися у деталі гри, тому що за час розробки все ще може тисячу разів змінитися. Натомість, сьогодні я вирішив викласти коротке відео роботи над малюнком кристалу (ворожий юніт).</p>
<p><span id="more-700"></span></p>
<p>Відео пришвидшене у п&#8217;ять разів. На промальовування контурів я витратив трішки менше 10 хвилин. Плюс приблизно такий самий час пішов на промальовування шаблону кристалу, але цей момент до відео не потрапив. </p>
<div style="text-align:center"><iframe width="500" height="405" src="http://www.youtube.com/embed/S32s1tCZ9cM" frameborder="0" allowfullscreen></iframe></div>
<p>Взагалі, у мене немає жодної художньої освіти і тому малюю я відверто по-дилетанськи. Але дуже хочеться навчитися! Конкретно в цьому відео використовувався тільки один інструмент – line tool. Втім, зазвичай я дуже активно малюю пензлем (brush tool). Планую використовувати у новій грі тільки графіку, намальовану власноручно.<br />
<h3>Інші записи на цю тему:</h3>
<ul class="related_post">
<li><a href="http://nub.com.ua/2011/03/how-to-learn-flash/" title="Чому мене навчила розробка флеш-гри, або Практика – найкращий вчитель!">Чому мене навчила розробка флеш-гри, або Практика – найкращий вчитель!</a></li>
<li><a href="http://nub.com.ua/2011/01/turtle-dreams-to-fly-concept/" title="Уроки польотів для черепахи та кілька слів про концепцію другої гри">Уроки польотів для черепахи та кілька слів про концепцію другої гри</a></li>
<li><a href="http://nub.com.ua/2010/11/match-insanity-my-first-flash-game/" title="Match Insanity – перша flash-гра мого власного виробництва!">Match Insanity – перша flash-гра мого власного виробництва!</a></li>
<li><a href="http://nub.com.ua/2010/09/understanding-object-drawing-in-flash/" title="Drawing objects (об’єкти-малюнки) у флеші. Нововведення у Flash Professional CS5">Drawing objects (об’єкти-малюнки) у флеші. Нововведення у Flash Professional CS5</a></li>
<li><a href="http://nub.com.ua/2011/08/sponsorships-of-flash-games/" title="Хто готовий віддати гроші за вашу гру? або Кілька слів про спонсорів та типи ліцензій">Хто готовий віддати гроші за вашу гру? або Кілька слів про спонсорів та типи ліцензій</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/nubcomua/~4/kP_-GI_GTZE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nub.com.ua/2011/09/drawing-crystal-for-new-flash-game/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://nub.com.ua/2011/09/drawing-crystal-for-new-flash-game/</feedburner:origLink></item>
		<item>
		<title>Хто готовий віддати гроші за вашу гру? або Кілька слів про спонсорів та типи ліцензій</title>
		<link>http://feedproxy.google.com/~r/nubcomua/~3/wpOUgAqzW0Q/</link>
		<comments>http://nub.com.ua/2011/08/sponsorships-of-flash-games/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 13:24:25 +0000</pubDate>
		<dc:creator>Ярослав Федорак</dc:creator>
				<category><![CDATA[Загальна]]></category>
		<category><![CDATA[Теорія]]></category>
		<category><![CDATA[ігровий портал]]></category>
		<category><![CDATA[гроші]]></category>
		<category><![CDATA[ліцензія]]></category>
		<category><![CDATA[прибуток]]></category>
		<category><![CDATA[розробка]]></category>
		<category><![CDATA[спонсор]]></category>
		<category><![CDATA[спонсорування]]></category>
		<category><![CDATA[трафік]]></category>
		<category><![CDATA[флеш]]></category>
		<category><![CDATA[флеш-гра]]></category>

		<guid isPermaLink="false">http://nub.com.ua/?p=691</guid>
		<description><![CDATA[Більшість початківців, які тільки входять у сферу розробки ігор, та флешерів, які лише починають несміливо придивлятися до ігрового ринку, не розуміють, яким же чином може заробити флеш розробник? Хто готовий віддати гроші за гру, зроблену однією людиною на домашньому комп&#8217;ютері за кілька тижнів (а іноді – навіть днів)? Сьогодні я вирішив трішки розповісти про найбільш [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float:left"><img src="http://nub.com.ua/wp-content/uploads/2011/08/dollar-logo.jpg" alt="dollar-logo" title="dollar-logo" width="240" height="174" class="alignnone size-full wp-image-693" /></span> Більшість початківців, які тільки входять у сферу розробки ігор, та флешерів, які лише починають несміливо придивлятися до ігрового ринку, не розуміють, яким же чином може заробити флеш розробник? Хто готовий віддати гроші за гру, зроблену однією людиною на домашньому комп&#8217;ютері за кілька тижнів (а іноді – навіть днів)? </p>
<p>Сьогодні я вирішив трішки розповісти про найбільш розповсюджені способи монетизації flash-ігор та показати, яким чином інді-розробники мають змогу отримати компенсацію (іноді – дуже суттєву) за свій час, зусилля та креативність. </p>
<p>Тема монетизації ігор доволі обширна. Тому я зупинюся лише на ліцензіюванні флеш-ігор порталами, оминувши поки що портування на інші платформи. Тим більше, що я вже маю певний досвід роботи зі спонсорами та представниками ігрових порталів.  </p>
<h3>Хто зацікавлений в купівлі гри?</h3>
<p>В інтернеті існують сотні тисяч, якщо не мільйони ігрових порталів. Звісна річ, багато з них закинуті або мають мінімальний трафік. Втім, трапляються і справжні гіганти з мільйонними показниками щоденних відвідувань та переглядів. Такі портали приносять значні прибутки своїм власникам. Але для їх підтримки потрібно постійно оновлювати ігровий контент, публікувати ексклюзивні новинки і знаходити все нові та нові джерела трафіку. І тут в нагоді стає ліцензіювання ігор!</p>
<p>Спонсором в даному випадку стає флеш-портал. Саме його власники готові заплатити за гру від $100 і до $50 000 доларів (це, відповідно, мінімальна і максимальна суми спонсорства, про які мені доводилося чути). </p>
<p><span id="more-691"></span></p>
<h3>Що отримує спонсор?</h3>
<p>Що ж отримує спонсор (ігровий портал) купуючи флеш-гру? Адже, здавалося б, безкоштовних ігор в інтернеті &#8220;хоч греблю гати&#8221;. При чому безкоштовні вони як для гравців (що само собою зрозуміло), так і для порталів. Тобто володіючи порталом ви можете цілком законно і абсолютно безкоштовно розміщувати на ньому практично будь-які ігри. Наприклад, <a target="_blank" href="http://jarofgames.com/" title="Jar of Games">мій портал</a> існує менше двох місяців, але на ньому вже розміщено близько сотні флеш ігор, які коштували мені $0. </p>
<p>Тоді який же сенс іншим порталам платити за ігри гроші (і іноді – дуже немалі)?</p>
<p>Щоб зрозуміти суть цього явища, потрібно усвідомити, що спонсор купує не право розміщувати гру на своєму порталі (таке право всім дістається безкоштовно), а можливість вбудувати власний брендинг у гру. Відчуваєте, в чому хитрість?</p>
<p>Якщо ви хоча б зрідка граєте у флеш-ігри, то безперечно, стикалися із анімованими заставками (splash screen) перед початком гри. Ви, мабуть, думали, що це заставки розробників, та насправді у більшості випадків це і є найяскравіший приклад брендінгу спонсора. Чи варто говорити, що заставка клікабельна, і клікнувши на ній, ви потрапите на сайт спонсора. </p>
<p>Водночас, брендінг – це не лише заставка. Тільки від спонсора залежить, скільки логотипів та посилань на свій сайт він вирішить вбудувати у гру. Найбільш агресивні різновиди брендінгу можуть включати логотипи безпосередньо в процесі гри, які до того ж, &#8220;маскуються&#8221; під елементи інтерфейсу. Все це робиться, звісно ж, тільки з однією метою, щоб гравець клікнув і потрапив на сайт спонсора.</p>
<p>Якщо додати до цього той факт, що успішна гра &#8220;розходиться&#8221; по тисячах порталів і отримує мільйони переглядів, стає очевидно, в чому полягає вигода спонсора. Якщо говорити зрозумілою мовою: за допомогою флеш-гри він просто рекламує свій сайт. </p>
<p>При CTR брендінгу середньостатистичної гри >10% (а по факту буває і набагато більше) до спонсора з інших порталів приходить 100 тисяч відвідувачів з кожного мільйона людей, які зіграли в гру. Це велетенський трафік, за який спонсори готові платити!</p>
<p>Окрім того не варто забувати, що окрім, власне, трафіку, спонсор отримує флеш-контент, який всією спільнотою гравців сприйматиметься як продукт цього спонсора. Адже більшість гравців, бачачи у грі логотип <a target="_blank" href="http://armorgames.com/">ArmorGames</a> чи <a target="_blank" href="http://www.kongregate.com/">Kongregate</a>, саме їх вважатимуть розробниками. </p>
<h3>Типи ліцензій</h3>
<p>	Продаючи гру спонсору, ви в кожного разу будете підписувати договір, в якому обгворюються конкретні умови ліцензії. Але в загальному їм можна привести до трьох основних типів: ексклюзивні (exclusive), основні (primary) та неексклюзивні (non-exclusive).</p>
<ol>
<li><strong>Ексклюзивна ліцензія (Exclusive license).</strong> Один з найдорожчих видів ліцензій і найбільш вигідних для розробника в короткостроковій перспективі. Продаючи спонсорові таку ліцензію, розробник одноразово отримує значну суму грошей, при цьому втрачаючи право розповсюджувати будь-яку іншу версію гри, окрім версії з брендінгом ексклюзивного спонсора. Інакше кажучи, в інтернеті на всіх порталах повинна бути тільки одна версія – та, в яку ексклюзивний спонсор вбудував свій брендінг.</li>
<p>Іноді люди запитують, чи означає це втрату прав автором на користь спонсора? Відповідь однозначна – ні в якому разі! Якщо мене не зраджує пам&#8217;ять, авторське право у всьому світі вважається невідчужуваним. </p>
<p>Продавши ексклюзивну ліцензію, розробник може зітхнути з полегшенням – більше перейматися продажею йому не потрібно. Можна взагалі забути про гру. Або з інтересом спостерігати за її статистикою (скільки людей в неї зіграли, на скількох порталах вона була розміщена, скільки часу в середньому проводить гравець у грі тощо). </p>
<p>Потрібно пам&#8217;ятати, що продавши ексклюзивну ліцензію, розробник втрачає право продавати неексклюзивні ліцензії або так звані &#8220;сайтлоки&#8221; (про них далі).</p>
<p>Втім, зазвичай ексклюзивна ліцензія не забороняє автору портувати гру на інші платформи (Android або iOS) та випускати продовження. Взагалі, продовження гри вважається окремою грою, а отже може продаватися окремо.</p>
<li><strong>Основна ліцензія (Primary license).</strong> Взагалі цю ліцензію ніхто не називає основною. Всі користуються транслітерацією &#8220;праймарі&#8221;. Тому, щоб не виникало плутатини в термінах, ми також будемо називати її саме так.</li>
<p>Праймарі ліцензія відрізняється від ексклюзивної тільки тим, що за розробником збергіається право продавати неексклюзивні ліцензії (non-exclusive license або сайтлоки). </p>
<p>Простіше кажучи, ви можете продати одному спонсору праймарі ліцензію, в яку він вбудує свій брендінг і буде розповсюджувати по інтернету. Але якщо інший спонсор також захоче придбати цю гру – ви зможете продати йому сайтлок. </p>
<p>Кількість сайтлоків може обмежуватися тільки охочими їх купити! Тому теоретично, хоч праймарі ліцензія зазвичай дешевша за ексклюзивну, та за рахунок продажу сайтлоків розробник може заробити набагато (іноді – в рази) більше.</p>
<li><strong>Неексклюзивна ліцензія (Non-exclusive license або сайтлок)</strong>. Сайтлок (від англ. site – сайт та lock &#8211; замок) – це версія вашої гри, яка працює тільки на конкретному порталі і не буде працювати, якщо ви спробуєте перенести її на інший. Для цього в коді прописується спеціальна функція, яка перевіряє домен, з якого запускається гра.</li>
<p>Продаж сайтлоків зазвичай починається після того, як праймарі ліцензія вже продана (як пам&#8217;ятаєте, при ексклюзивній ліцензії продаж сайтлоків неможливий). Втім, деякі портали не хочуть розміщувати у себе гру з брендінгом конкурента і при цьому дуже хочуть отримати саму гру. Для таких порталів розробник створює окрему версію з їхнім власним брендінгом. А щоб така версія не розповсюджувалася по інтернету – вбудовує сайтлок. </p>
<p>Чи варто говорити, що вартість сайтлоків найнижча серед всіх різновидів ліцензій. Але за рахунок того, що продавати їх можна скільки завгодно, часом прибутки досягають досить-таки значних сум. Неодноразово траплялися випадки, коли загальна виручка від сайтлоків перевершувала вартість праймарі ліцензії.</p>
<p>Один із сайтлоків своєї гри <a target="_blank" href="http://nub.com.ua/2011/06/turtle-dreams-to-fly-statistics/">&#8220;Turtle Dreams to Fly&#8221;</a> я продав за $200, тоді як primary ліцензія була продана всього за $400.</ol>
<p>Наостанок хотілось би відзначити, що спонсорування – це лише один зі способів монетизації ігор. Насправді у розробника є куди більше джерел прибутку і середньостатистичний флеш-девелопер використовує одразу кілька з них. </p>
<p><strong>P.S.:</strong> У коментарях доречно зауважили про перформанс (performance), тому додам кілька слів про нього. <strong>Performance</strong> &#8211; це не тип ліцензії, а швидше додатковий пункт угоди між розробником і спонсором, який може бути включений в договір при ексклюзивних та праймарі ліцензіях. За правилами перформансу спонсор платить вам не за факт купівлі гри, а конкретно за трафік, який гра приведе на його сайт. В залежності від домовленості спонсор може платити як за перегляди самої гри, так і за кліки по брендінгу (тобто людей, які перейшли з гри на його сайт). </p>
<p>Класикою наразі вважається $1000 за мільйон переглядів або $0,03 за одного користувача, який прийшов на сайт спонсора. Це середні ціни. Хороші спонсори пропонують більше, погані &#8211; менше. Іноді доходить до смішного: наприклад, $10 за мільйон переглядів. З такими спонсорами краще не мати справи взагалі!</p>
<p>Зазвичай при ліцензіюванні гри з включенням перформансу спонсор платить завдаток &#8211; гроші, які гарантовано заробив розробник. Але якщо гра покаже себе з кращого боку і сподобається користувачам, у розробника є всі шанси заробити набагато більше. Мені відомо чимало ігор, як набирали більше 10 мільйонів переглядів &#8211; тобто більше $10 000 для розробника.</p>
<p>Чи вигідний перформанс для людей, які роблять ігри? Насправді, це доволі неординарне питання. Якщо ви впевнені, що ваша гра буде популярною, тоді перформанс справді вигідний. Але якщо гра виявиться провальною, тоді звичайна ексклюзивна або праймарі ліцензія виявиться кращою за перформанс. </p>
<p>На сьогодні це все. Сподіваюся, стаття допомогла зрозуміти, як працює флеш-ринок, та навіщо спонсори купують ігри, а також розібратися в типах ліцензій. Якщо така тематика виявиться цікавою, я буду час від часу публікувати на блозі статті про монетизацію ігор. Найближчим часом, мабуть, розповім про альтернативні способи заробити на грі, якщо жоден зі спонсорів не звернув на неї увагу. </p>
<p>Щоб не пропустити нічого цікавого, <a target="_blank" href="http://feeds2.feedburner.com/nubcomua">підпишіться на оновлення блога</a>.<br />
<h3>Інші записи на цю тему:</h3>
<ul class="related_post">
<li><a href="http://nub.com.ua/2011/08/first-game-redesign/" title="Редизайн першої гри: Графіка має значення!">Редизайн першої гри: Графіка має значення!</a></li>
<li><a href="http://nub.com.ua/2011/01/using-flash-ide-and-flashdevelop/" title="Використання Flash IDE + FlashDevelop. Базова структура флеш-проекту. ">Використання Flash IDE + FlashDevelop. Базова структура флеш-проекту. </a></li>
<li><a href="http://nub.com.ua/2011/01/turtle-dreams-to-fly-concept/" title="Уроки польотів для черепахи та кілька слів про концепцію другої гри">Уроки польотів для черепахи та кілька слів про концепцію другої гри</a></li>
<li><a href="http://nub.com.ua/2010/12/wacom-intuos-4-and-samsung-xl2370/" title="Wacom Intuos 4 та Samsung XL2370 – подарунки на День Народження">Wacom Intuos 4 та Samsung XL2370 – подарунки на День Народження</a></li>
<li><a href="http://nub.com.ua/2010/11/match-insanity-my-first-flash-game/" title="Match Insanity – перша flash-гра мого власного виробництва!">Match Insanity – перша flash-гра мого власного виробництва!</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/nubcomua/~4/wpOUgAqzW0Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nub.com.ua/2011/08/sponsorships-of-flash-games/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://nub.com.ua/2011/08/sponsorships-of-flash-games/</feedburner:origLink></item>
		<item>
		<title>Редизайн першої гри завершено: Реліз “Don’t Eat Last Berry”</title>
		<link>http://feedproxy.google.com/~r/nubcomua/~3/0N_V8eXg_o0/</link>
		<comments>http://nub.com.ua/2011/08/dont-eat-last-berry-release/#comments</comments>
		<pubDate>Thu, 11 Aug 2011 19:27:25 +0000</pubDate>
		<dc:creator>Ярослав Федорак</dc:creator>
				<category><![CDATA[Загальна]]></category>
		<category><![CDATA[Практика]]></category>
		<category><![CDATA[best flash games]]></category>
		<category><![CDATA[Don't Eat Last Berry]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[jar of games]]></category>
		<category><![CDATA[match insanity]]></category>
		<category><![CDATA[портал]]></category>
		<category><![CDATA[редизайн]]></category>
		<category><![CDATA[реліз]]></category>
		<category><![CDATA[самоспонсорування]]></category>

		<guid isPermaLink="false">http://nub.com.ua/?p=685</guid>
		<description><![CDATA[Пройшов майже рік з моменту релізу моєї першої флеш-гри &#8220;Match Insanity&#8221;. На той час мої уявлення про світ флеш-ігор були досить розмитими, а точніше – я сприймав їх виключно з позиції гравця і насправді ніколи не усвідомлював, наскільки складною може виявитися &#8220;кухня&#8221; розробника. За рік мені вдалося багато чому навчитися, продати свою другу гру &#8220;Turtle [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float:left"><img src="http://nub.com.ua/wp-content/uploads/2011/08/DELB-thumbnail-200x200.jpg" alt="don&#039;t-eat-last-berry" title="don&#039;t-eat-last-berry" width="200" height="200" class="alignnone size-full wp-image-686" /></span> Пройшов майже рік з моменту <a href="http://nub.com.ua/2010/11/match-insanity-my-first-flash-game/">релізу моєї першої флеш-гри &#8220;Match Insanity&#8221;</a>. На той час мої уявлення про світ флеш-ігор були досить розмитими, а точніше – я сприймав їх виключно з позиції гравця і насправді ніколи не усвідомлював, наскільки складною може виявитися &#8220;кухня&#8221; розробника. </p>
<p>За рік мені вдалося багато чому навчитися, продати свою другу гру <a href="http://nub.com.ua/2011/06/turtle-dreams-to-fly-statistics/">&#8220;Turtle Dreams to Fly&#8221;</a> (пограти в неї можна <a target="_blank" href="http://jarofgames.com/sports-andamp-racing/turtle-dreams-to-fly">тут</a>), створити власний ігровий портал <a target="_blank" href="http://jarofgames.com/">Jar of Games</a> і повністю переосмислити підходи до ігрової розробки. </p>
<p>З цим хоч і невеликим, та все ж доволі важливим вантажем знань я знову повернувся до своєї першої гри, яка досі бездіяльно &#8220;лежала&#8221; на аукціоні FGL. І хоча &#8220;Match Insanity&#8221; створювалася в першу чергу заради розвитку навичок флеш-розробки, було б марнотратством не спробувати заробити на ній хоча б якусь копійчину. Адже за наявності ігрового порталу перед розробником відкривається чудова опція самоспонсорування.</p>
<p><span id="more-685"></span></p>
<p>Втім, у тому вигляді, який мала гра, було марно сподіватися, що хоча б кілька більш-менш серйозних порталів захочуть її розмістити. Тому я вирішив доволі суттєво і при цьому з мінімальними часовими витратами модернізувати гру (про що вже згадував у <a href="http://nub.com.ua/2011/08/first-game-redesign/">попередній статті</a>). </p>
<p>В першу чергу зміни торкнулися графіки. Створюючи Match Insanity я повністю проігнорував цей аспект розробки, тому що був свято переконаний – візуальна складова не має ніякого значення… І, вочевидь, це було однією із найбільших помилок. Як виявилося, будь-який спонсор чи власник порталу приймає рішення про купівлю/розміщення гри в першу чергу сприймаючи її візуально. У більшості випадків він не має часу на те, щоб заглиблюватися у ігровий процес. Звучить безглуздо, але нерідко саме іконка (логотип гри розміром 100 на 100 пікселів) виявляється вирішальним фактором успішності продажу/дистрибуції.</p>
<p>Можливо, ви вже бачили цей скріншот, але я хочу ще раз нагадати, як виглядала Match Insanity до редизайну:</p>
<p style="text-align:center"><img src="http://nub.com.ua/wp-content/uploads/2011/08/01-match-insanity-screen.jpg" alt="match-insanity-screen" title="match-insanity-screen" width="500" height="375" class="alignnone size-full wp-image-687" /></p>
<p>Повна відсутність будь-якої графіки &#8220;дбайливо&#8221; поєднана з абсолютно байдужим ставленням до інтерфейсу.</p>
<p>Для порівняння, нове візуальне оформлення ігрового екрану виглядає так (як і у грі Turtle Dreams to Fly, з графікою мені частково допомагала дружина, за що я їй дуже вдячний): </p>
<p style="text-align:center"><img src="http://nub.com.ua/wp-content/uploads/2011/08/02-delb-screen.jpg" alt="dont-eat-last-berry-screen" title="dont-eat-last-berry-screen" width="500" height="333" class="alignnone size-full wp-image-688" /></p>
<p>Як бачите, окрім, власне, графіки, зміни торкнулися деяких елементів ігрового дизайну та логіки інтерфейсу. Передусім, я додав більш &#8220;реального&#8221; суперника. Якщо у старій Match Insanity це був абстрактний &#8220;комп&#8217;ютерний інтелект&#8221;, то в новій версії гравцеві доведеться зіткнутися з цілою родиною &#8220;демонів&#8221;. </p>
<p>До речі, ідея ввести в гру більш &#8220;предметного&#8221; опонента вилилася у ще одне цікаве рішення, яке стосувалося рівнів складності. У попередній версії гравець міг сам вибирати інтелект суперника із трьох варіантів &#8220;простий&#8221;, &#8220;середній&#8221; та &#8220;складний&#8221;. В оновленій грі рівень складності буде зростати автоматично. Спершу вашим суперником виступатиме мале чортеня Боббі, перемогти яке досить легко. Потім в гру вступить його батько Білл (дружина сказала, що схоже на Біла Гейтса). Подолавши його, гравець зіткнеться з наймогутнішим демоном Бальтазаром (найвищий рівень складності). </p>
<p>Не обійшлося у новій грі і без часточки іронії. Хоча опонентами в ній виступають злі сили, нічого поганого вони не роблять, а просто дуже люблять ягоди. До речі, оскільки тепер замість сірників гравцеві пропонується збирати ягоди, назва гри змінилася відповідно – тепер це <strong>Don&#8217;t Eat Last Berry</strong>. Як ви вже здогадалися, основна мета гравця, зробити так, щоб останню ягоду з&#8217;їв демон.</p>
<h3>Дистрибуція</h3>
<p>Оскільки гру було закінчено лише сьогодні пізно вночі, вона ще не встигла розійтися по порталах. Поки що я додав її у Mochi Distribution і чекаю узгодження. Найближчим часом також завантажу гру на два основних ігрових портали Kongregate та Newgrounds. </p>
<p>Вже зараз <a target="_blank" href="http://jarofgames.com/puzzle-andamp-physics/dont-eat-last-berry">пограти у Don&#8217;t Eat Last Berry</a> можна на моєму порталі. Також буду вдячний за лайки та ретвіти, які посприяють просуванню гри. </p>
<p>А якщо якимось дивом цей блог читають інші власники ігрових порталів: ось <a target="_blank" href="http://nub.com.ua/wp-content/uploads/Dont-Eat-Last-Berry.rar">посилання на архів з грою</a>. В архіві ви знайдете саму гру, логотипи та опис англійською мовою. </p>
<h3>Бонус: Match Insanity як вона є!</h3>
<p>Ну і насамкінець – невеликий бонус. Гра Match Insanity, якою вона була до редизайну. Попри всю її недосконалість, це доволі значна віха історії мого розвитку, як флеш-розробника. Окрім того, оскільки цей варіант гри не буде запускатися у жодну дистрибуцію – її можна назвати своєрідним ексклюзивом. Щоправда, я про всяк випадок таки вбудував туди брендінг порталу – а раптом хтось захоче &#8220;вкрасти&#8221; для себе. </p>
<p>Пограти у Match Insanity можна <a target="_blank" href="http://nub.com.ua/wp-content/uploads/MatchInsanity.swf">за цим посиланням</a>.<br />
<h3>Інші записи на цю тему:</h3>
<ul class="related_post">
<li><a href="http://nub.com.ua/2011/08/first-game-redesign/" title="Редизайн першої гри: Графіка має значення!">Редизайн першої гри: Графіка має значення!</a></li>
<li><a href="http://nub.com.ua/2011/07/jar-of-games-best-flash-games-portal/" title="Настав час показати мій новий проект – портал флеш-ігор Jar of Games!">Настав час показати мій новий проект – портал флеш-ігор Jar of Games!</a></li>
<li><a href="http://nub.com.ua/2011/06/turtle-dreams-to-fly-statistics/" title="Turtle Dreams to Fly: Статистика та висновки після релізу">Turtle Dreams to Fly: Статистика та висновки після релізу</a></li>
<li><a href="http://nub.com.ua/2011/06/release-of-turtle-dreams-to-fly/" title="Turtle Dreams to Fly: Реліз!">Turtle Dreams to Fly: Реліз!</a></li>
<li><a href="http://nub.com.ua/2011/04/turtle-dreams-to-fly-on-fgl/" title="Turtle Dreams to Fly нарешті на FGL">Turtle Dreams to Fly нарешті на FGL</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/nubcomua/~4/0N_V8eXg_o0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nub.com.ua/2011/08/dont-eat-last-berry-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://nub.com.ua/2011/08/dont-eat-last-berry-release/</feedburner:origLink></item>
		<item>
		<title>Редизайн першої гри: Графіка має значення!</title>
		<link>http://feedproxy.google.com/~r/nubcomua/~3/WJTQGjWsG-4/</link>
		<comments>http://nub.com.ua/2011/08/first-game-redesign/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 17:17:26 +0000</pubDate>
		<dc:creator>Ярослав Федорак</dc:creator>
				<category><![CDATA[Загальна]]></category>
		<category><![CDATA[flash гра]]></category>
		<category><![CDATA[jar of games]]></category>
		<category><![CDATA[match insanity]]></category>
		<category><![CDATA[перша гра]]></category>
		<category><![CDATA[портал]]></category>
		<category><![CDATA[редизайн]]></category>
		<category><![CDATA[розробка]]></category>
		<category><![CDATA[флеш-гра]]></category>
		<category><![CDATA[флеш-розробка]]></category>

		<guid isPermaLink="false">http://nub.com.ua/?p=679</guid>
		<description><![CDATA[Займаюся редизайном своєї першої гри, створеної майже рік назад, і щоб перервати мовчанку в блозі, вирішив трішки поділитися тим, як просуваються справи. Можливо, хтось із читачів пам&#8217;ятає статтю про мою першу флеш-гру Match Insanity. Вона була зроблена за кілька тижнів практично без досвіду програмування і мала на меті тільки практику. Звісно, ніхто зі спонсорів навіть [...]]]></description>
			<content:encoded><![CDATA[<p>Займаюся редизайном своєї першої гри, створеної майже рік назад, і щоб перервати мовчанку в блозі, вирішив трішки поділитися тим, як просуваються справи. </p>
<p>Можливо, хтось із читачів пам&#8217;ятає <a href="http://nub.com.ua/2010/11/match-insanity-my-first-flash-game/">статтю про мою першу флеш-гру Match Insanity</a>. Вона була зроблена за кілька тижнів практично без досвіду програмування і мала на меті тільки практику. Звісно, ніхто зі спонсорів навіть не звернув увагу на гру, не дивлячись на те, що я виклав її на FGL. Цілком закономірний і очікуваний результат. </p>
<p>Втім, зважаючи на те, що не так давно я запустив свій ігровий портал <a target="_blank" href="http://jarofgames.com/">Jar of Games</a>, про що більшість, мабуть, також <a href="http://nub.com.ua/2011/07/jar-of-games-best-flash-games-portal/">читала у цьому блозі</a>, я вирішив отримати від першої гри хоча б якусь користь і спробувати самоспонсоруватися. </p>
<p><span id="more-679"></span></p>
<p>Але зрозуміла річ, що в тому вигляді, в якому гра існує на даний момент, марно навіть думати, що вона зможе принести хоча б якусь віддачу. За рік спроб та помилок я отримав деякий досвід як в плані розробки, так і в плані того, що потрібно гравцям. Тому було вирішено малою кров&#8217;ю зробити редизайн гри – змінити графіку, інтерфейс та внутрішню структуру. Я не маю наміру витрачати на це багато часу, тому якихось глобальних змін не буде. Максимум, на що я готовий – виділити кілька днів на &#8220;переродження&#8221; Match Insanity (до речі, назву також буде змінено, але новий варіант поки що не вигадано). </p>
<p>Щоб трішки відволіктися від роботи, я вирішив поділитися поточним результатом роботи. Можливо, комусь буде цікаво. </p>
<p>Старий варіант Match Insanity виглядав так:</p>
<p style="text-align:center"><img src="http://nub.com.ua/wp-content/uploads/2011/08/old-game-layout.jpg" alt="old-game-layout" title="old-game-layout" width="500" height="375" class="alignnone size-full wp-image-680" /></p>
<p>Зараз же гра поступово набуває ось такого вигляду (зміни неостаточні – просто робочий скріншот):</p>
<p style="text-align:center"><img src="http://nub.com.ua/wp-content/uploads/2011/08/new-game-layout.jpg" alt="new-game-layout" title="new-game-layout" width="500" height="294" class="alignnone size-full wp-image-681" /></p>
<p>Якщо все буде гаразд – то за тиждень-два (а може й раніше) в гру вже можна буде погратися!<br />
<h3>Інші записи на цю тему:</h3>
<ul class="related_post">
<li><a href="http://nub.com.ua/2011/08/dont-eat-last-berry-release/" title="Редизайн першої гри завершено: Реліз &#8220;Don&#8217;t Eat Last Berry&#8221;">Редизайн першої гри завершено: Реліз &#8220;Don&#8217;t Eat Last Berry&#8221;</a></li>
<li><a href="http://nub.com.ua/2010/11/match-insanity-my-first-flash-game/" title="Match Insanity – перша flash-гра мого власного виробництва!">Match Insanity – перша flash-гра мого власного виробництва!</a></li>
<li><a href="http://nub.com.ua/2011/08/sponsorships-of-flash-games/" title="Хто готовий віддати гроші за вашу гру? або Кілька слів про спонсорів та типи ліцензій">Хто готовий віддати гроші за вашу гру? або Кілька слів про спонсорів та типи ліцензій</a></li>
<li><a href="http://nub.com.ua/2011/07/jar-of-games-best-flash-games-portal/" title="Настав час показати мій новий проект – портал флеш-ігор Jar of Games!">Настав час показати мій новий проект – портал флеш-ігор Jar of Games!</a></li>
<li><a href="http://nub.com.ua/2011/01/turtle-dreams-to-fly-concept/" title="Уроки польотів для черепахи та кілька слів про концепцію другої гри">Уроки польотів для черепахи та кілька слів про концепцію другої гри</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/nubcomua/~4/WJTQGjWsG-4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nub.com.ua/2011/08/first-game-redesign/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://nub.com.ua/2011/08/first-game-redesign/</feedburner:origLink></item>
		<item>
		<title>Настав час показати мій новий проект – портал флеш-ігор Jar of Games!</title>
		<link>http://feedproxy.google.com/~r/nubcomua/~3/ZrKEq89oEkA/</link>
		<comments>http://nub.com.ua/2011/07/jar-of-games-best-flash-games-portal/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 14:36:44 +0000</pubDate>
		<dc:creator>Ярослав Федорак</dc:creator>
				<category><![CDATA[Загальна]]></category>
		<category><![CDATA[Результати і статистика]]></category>
		<category><![CDATA[best flash games]]></category>
		<category><![CDATA[flash games]]></category>
		<category><![CDATA[free online games]]></category>
		<category><![CDATA[game portal]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[jar of games]]></category>
		<category><![CDATA[jarofgames.com]]></category>
		<category><![CDATA[ігровий портал]]></category>
		<category><![CDATA[портал]]></category>

		<guid isPermaLink="false">http://nub.com.ua/?p=671</guid>
		<description><![CDATA[В кількох статтях тут і на &#8220;Українській блогосфері&#8221; згадувалося, що інтенсивність публікацій в моїх блогах суттєво скоротилася, тому що зараз я дуже багато часу та зусиль віддаю своєму новому проекту, на який покладаю великі сподівання! Що ж, настав час продемонструвати цей проект! Jar of Games – це портал найкращих флеш-ігор, орієнтований в першу чергу на [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float:left"><img src="http://nub.com.ua/wp-content/uploads/2011/07/jarofgames-logo.jpg" alt="jarofgames-logo" title="jarofgames-logo" width="285" height="85" class="alignnone size-full wp-image-672" /></span> В кількох статтях тут і на <a target="_blank" href="http://blogosphere.com.ua/">&#8220;Українській блогосфері&#8221;</a> згадувалося, що інтенсивність публікацій в моїх блогах суттєво скоротилася, тому що зараз я дуже багато часу та зусиль віддаю своєму новому проекту, на який покладаю великі сподівання! Що ж, настав час продемонструвати цей проект!</p>
<p><a target="_blank" href="http://jarofgames.com/">Jar of Games</a> – це портал найкращих флеш-ігор, орієнтований в першу чергу на європейську та американську аудиторію. Поки-що готовий тільки каркас (для його створення було використано спеціалізовану CMS AV Arcade), але вже зараз портал повністю робочий, працює реєстрація і діють основні функції (як то накопичення балів за оцінку та коментування ігор). </p>
<p>На даному етапі наповнення ведеться повністю вручну, але в майбутньому, коли буде помітно першу віддачу – я обов&#8217;язково додам можливість сабмітити ігри учасникам спільноти (з жорсткою премодерацією, звісно). Взагалі, мені дуже хотілося б по-максимуму розвинути соціальну складову порталу і згуртувати навколо нього лояльну спільноту активних гравців. Але все це стане можливим тільки коли я побачу першу віддачу від порталу. </p>
<p>Хотілося б також написати кілька слів про <a target="_blank" href="http://jarofgames.com/page/about-us">концепцію Jar of Games</a>. Якщо ви хоча б трішечки цікавитесь ігровими порталами, то без сумніву знаєте, що їх кількість надзвичайно велика і вимірюється десятками (якщо не сотнями) тисяч. Втім, по-справжньому якісних порталів з унікальним функціоналом та можливостями для гравців набереться заледве кілька десятків. Як же потрапити до їх переліку?</p>
<p><span id="more-671"></span></p>
<p>Основна відмінність між якісним та неякісним порталом флеш-ігор – це підхід до відбору контенту (тобто, власне, ігор). У світі ігрових порталів, як і у світі блогів, є свої &#8220;сплоги&#8221; (чи, правильніше сказати &#8220;спортали&#8221;) – тобто проекти, які наповнюються автоматично і існують виключно заради генерування прибутку. </p>
<p style="text-align:center"><img src="http://nub.com.ua/wp-content/uploads/2011/07/jarofgames-screen-1.jpg" alt="jarofgames-screen" title="jarofgames-screen" width="500" height="398" class="alignnone size-full wp-image-673" /></p>
<p>Я ж вирішив поставити на високу якість (навіть якщо доведеться пожертвувати кількістю) і додавати ігри виключно вручну, ретельно відбираючи найкращі. Так, це вимагає чимало часу. Але супершвидкісне наповнення критичне тільки на перших етапах існування порталу – поки збирається основна бібліотека ігор. Коли колекція буде досить &#8220;багатою&#8221;, можна перейти в режим щотижневого додавання 5-10 найкращих ігор, які були випущені за цей період. </p>
<p>Найвищим же ступенем досконалості вважаю модель, яка застосовується всього на кількох найпотужніших ігрових порталах: додавання ігор учасниками спільноти і фільтрування за рахунок рейтингів. До такої моделі мрію прийти в майбутньому.</p>
<h3>Чому я вирішив створити ігровий портал?</h3>
<p>Я не хочу перевтомлювати читачів блога про флеш деталями концепції та розробки порталу Jar of Games, оскільки не знаю, наскільки ця інформація буде цікавою для них. Втім, скажу кілька слів про причини, які спонукали мене до створення цього ресурсу. </p>
<ol>
<li><strong>Власний ігровий портал – найкращий спосіб приміряти на себе роль спонсора.</strong> Люди, які стежать за цим блогом знають, що останнім часом я захопився розробкою флеш-ігор. Одна з найбільш розповсюджених моделей монетизації такого захоплення – пошук спонсора, який захоче купити вашу гру. Втім, у більшості випадків розробник має дуже &#8220;одностороннє&#8221; бачення своїх стосунків зі спонсором. На свій власний продукт він дивиться тільки як творець, і не може абстрагуватися від нього. Та це й не дивно, адже розробник ніколи не був у &#8220;шкірі&#8221; спонсора.</li>
<p>І навіть якщо створення власного ігрового порталу виявиться неуспішним з фінансової точки зору, воно варте витрачених на нього часу та зусиль вже хоча б тому, що ви починаєте розуміти спонсора краще. По суті ви самі починаєте міркувати, як спонсор. Тепер ваше завдання – не продати гру, а залучити лояльну аудиторію на свій портал. Ви дивитесь на гру, не як на витвір, а як на конкретний продукт, який має свою цінність і який ви, наприклад, ніколи б не розмістили на своєму порталі&#8230; чи навпаки – віддали б багато тисяч доларів за право розмістити його&#8230;</p>
<p>Маючи всі ці знання, ви почуватиметесь набагато впевненіше, беручись за розробку власної гри і зможете оцінювати її об&#8217;єктивно під час торгівлі зі спонсором.</p>
<li><strong>Самоспонсорування.</strong> В житті кожного розробника бувають моменти, коли він відчуває себе недооціненим. Припустимо, ви створили гру за яку розраховували отримумати X доларів, а максимальна ставка від спонсорів склала всього X/2. Не біда! Якщо ви впевнені у власних силах і у вас є ігровий портал – можна ризикнути і спробувати самоспонсорування. </li>
<p>Мені відомі випадки, коли незадоволені ставками розробники відмовлялися від пошуків спонсора і монетизували гру самостійно, при цьому виходячи у значний плюс. </p>
<p>Окрім того, самоспонсорування – це спосіб отримати хоча б щось за гру, яка взагалі не зацікавила спонсорів. У мене є одна така. Пам&#8217;ятаєте – <a href="http://nub.com.ua/2010/11/match-insanity-my-first-flash-game/">Match Insanity</a>. За вісім місяців на FGL гра так і не отримала жодної ставки від спонсорів (чесно кажучи, зважаючи на її якість, я й не сподівався). Втім, тепер з&#8217;явиться можливість отримати з неї хоч щось! Найближчим часом зроблю рескін (тобто зміню графіку у грі) і спробую самоспонсоруватися. </p>
<li><strong>Прибуток.</strong> Я не даремно розмістив цю причину останньою в переліку. Адже досягнути серйозних фінансових результатів, ведучи портал, ох як не просто! Втім, якщо ви візьметеся до справи зі всією серйозністю, присвячуватимете достатньо часу відбору контенту, працюватимете над створенням власної спільноти і не забудете про SEO – то можливо через деякий час портал не тільки поверне вкладені в нього інвестиції, але й стане основним джерелом прибутків. Принаймні, такі приклади мені також відомі.</li>
<p>А головне, як і завжди – по-справжньому любити справу, якою займаєшся і пам&#8217;ятати – сам по собі ігровий портал ніколи не стане прибутковим. Для того, щоб отримати віддачу, потрібно працювати, працювати і ще раз працювати!
</ol>
<p>А тим часом запрошую всіх читачів блога про флеш завітати на ігровий портал <a target="_blank" href="http://jarofgames.com/">Jar of Games</a> і трішечки відволіктися від шаленого робочого ритму, зігравши в класну флеш-гру. Поки-що колекція не дуже велика (36 ігор на даний момент), але вже зараз вибирати є з чого. Повірте, ви знайдете, на чому зупинити свою увагу! А в майбутньому бібліотека ігор буде тільки поповнюватися.</p>
<p style="text-align:center"><img src="http://nub.com.ua/wp-content/uploads/2011/07/jarofgames-screen-2.jpg" alt="jarofgames-screen" title="jarofgames-screen" width="500" height="519" class="alignnone size-full wp-image-674" /></p>
<p>Ви також можете <a target="_blank" href="http://jarofgames.com/index.php?task=register">зареєструватися</a>, щоб отримати можливість накопичувати бали, коментувати ігри, виставляти рейтинг та комунікувати з іншими зареєстрованими користувачами. Але пам&#8217;ятайте, для власне гри реєстрація необов&#8217;язкова. Тому самі вирішуйте, чи варто реєструватися.</p>
<p>Буду вдячний за коментарі щодо порталу та щодо портальної тематики на блозі про флеш? Наскільки це цікаво для вас і чи хотіли б ви дізнатися деталі щодо створення/розвитку/монетизації флеш-ігор та флеш-порталів.<br />
<h3>Інші записи на цю тему:</h3>
<ul class="related_post">
<li><a href="http://nub.com.ua/2011/08/dont-eat-last-berry-release/" title="Редизайн першої гри завершено: Реліз &#8220;Don&#8217;t Eat Last Berry&#8221;">Редизайн першої гри завершено: Реліз &#8220;Don&#8217;t Eat Last Berry&#8221;</a></li>
<li><a href="http://nub.com.ua/2011/08/first-game-redesign/" title="Редизайн першої гри: Графіка має значення!">Редизайн першої гри: Графіка має значення!</a></li>
<li><a href="http://nub.com.ua/2011/08/sponsorships-of-flash-games/" title="Хто готовий віддати гроші за вашу гру? або Кілька слів про спонсорів та типи ліцензій">Хто готовий віддати гроші за вашу гру? або Кілька слів про спонсорів та типи ліцензій</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/nubcomua/~4/ZrKEq89oEkA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nub.com.ua/2011/07/jar-of-games-best-flash-games-portal/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://nub.com.ua/2011/07/jar-of-games-best-flash-games-portal/</feedburner:origLink></item>
	</channel>
</rss>

