<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Chaotic Game Design</title><generator>teletype.in</generator><description><![CDATA[несколько шире, чем просто про гейм-дизайн

локально, нерегулярно, несалатно]]></description><image><url>https://img2.teletype.in/files/5f/5c/5f5ccbf4-c308-48b5-b944-b12742d8cb31.png</url><title>Chaotic Game Design</title><link>https://teletype.in/@chaoticgamedesign</link></image><link>https://teletype.in/@chaoticgamedesign?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/chaoticgamedesign?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/chaoticgamedesign?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Sat, 04 Apr 2026 09:42:00 GMT</pubDate><lastBuildDate>Sat, 04 Apr 2026 09:42:00 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@chaoticgamedesign/gdblogs</guid><link>https://teletype.in/@chaoticgamedesign/gdblogs?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign</link><comments>https://teletype.in/@chaoticgamedesign/gdblogs?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign#comments</comments><dc:creator>chaoticgamedesign</dc:creator><title>Game Design Blogs</title><pubDate>Mon, 22 Aug 2022 05:54:34 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/d9/0c/d90c89c8-e59e-4d17-b7fe-98d775c597fd.png"></media:content><description><![CDATA[<img src="https://img2.teletype.in/files/98/b5/98b552b9-e078-4c91-944c-de5ac906852c.jpeg"></img>Некоторое время назад по геймдев каналам разошёлся список с интересными интервью представителей индустрии. Его основная идея: «хватит смотреть Ромеро и Кармака, есть другие замечательные дизайнеры и разработчики». Однако… список состоит в основном из мастодонтов индустрии: Сигэру Миямото, Тодд Говород, Хидео Кодзима и так далее. Кто о них не слышал? По сути мы не далеко ушли от «Ромеро и Кармака». Предлагаю список блогов, которые пишутся глобально менее известными людьми, но не менее эрудированными в своих областях.]]></description><content:encoded><![CDATA[
  <figure id="hAti" class="m_column">
    <img src="https://img2.teletype.in/files/98/b5/98b552b9-e078-4c91-944c-de5ac906852c.jpeg" width="1280" />
  </figure>
  <p id="eZjI">Некоторое время назад по геймдев каналам разошёлся <a href="https://t.me/aushestov/359" target="_blank">список</a> с интересными интервью представителей индустрии. Его основная идея: «хватит смотреть Ромеро и Кармака, есть другие замечательные дизайнеры и разработчики». Однако… список состоит в основном из мастодонтов индустрии: Сигэру Миямото, Тодд Говород, Хидео Кодзима и так далее. Кто о них не слышал? По сути мы не далеко ушли от «Ромеро и Кармака». Предлагаю список блогов, которые пишутся глобально менее известными людьми, но не менее эрудированными в своих областях.</p>
  <nav>
    <ul>
      <li class="m_level_1"><a href="#PCre">На русском</a></li>
      <li class="m_level_1"><a href="#L2XT">На английском</a></li>
      <li class="m_level_2"><a href="#1Yrr">Game Design</a></li>
      <li class="m_level_2"><a href="#mTcz">Level Design</a></li>
      <li class="m_level_2"><a href="#CW52">UX Design</a></li>
    </ul>
  </nav>
  <h2 id="PCre">На русском</h2>
  <p id="WG84">• <a href="http://aushestov.ru/" target="_blank">Анатолий Шестов</a> (Executive Producer, Owlcat Games)</p>
  <p id="QlES">• <a href="https://torick.ru/" target="_blank">Святослав Торик</a> (Head of Game Design, Dragon Machines)</p>
  <p id="9yk0">• <a href="http://nomoteshi.com/" target="_blank">Александр Номотеши</a> (ex-Game Designer, Zeptolab)</p>
  <p id="Ye3R">• <a href="http://skobelev.su/" target="_blank">Василий Скобелев</a> (Level Designer, Pixonic)</p>
  <p id="bL4b">• <a href="https://level-design.ru/" target="_blank">Михаил Кадиков</a> (Level Designer, Crytek)</p>
  <h2 id="L2XT">На английском</h2>
  <h3 id="1Yrr">Game Design</h3>
  <p id="Jhtk">• <a href="https://jb-dev.net/" target="_blank">Javier Barn</a> (Product Manager, King)</p>
  <p id="Ick6">• <a href="http://gangles.ca/" target="_blank">Matthew Gallant</a> (Game Director, Naughty Dog)</p>
  <p id="caZP">• <a href="https://harshalkarvande.medium.com/" target="_blank">Harshal Karvande</a> (Game Designer, Rovio)</p>
  <p id="B5Gh">• <a href="http://pushing-buttons.blogspot.com/" target="_blank">Eric Williams</a> (Game Director, Santa Monica Studio)</p>
  <p id="xXRZ">• <a href="https://emshort.blog/2020/01/" target="_blank">Emily Short</a> (Narrative Designer, Sunless Sea)</p>
  <p id="XgIO">• <a href="https://lostgarden.home.blog/" target="_blank">Daniel Cook</a> (Chief Creative Officer, Spry Fox)</p>
  <p id="JigQ">• <a href="http://subtractivedesign.blogspot.com/2013/02/making-platforming-games.html" target="_blank">Kynan Pearson</a> (Creative Director, Discord)</p>
  <p id="X9q7">• <a href="http://www.raphkoster.com/" target="_blank">Raph Koster</a> (ex-Chief Creative Officer, Sony)</p>
  <p id="EOxu">• <a href="http://keithburgun.net/" target="_blank">Keith Burgun</a> (Game Designer, Indie)</p>
  <p id="pZVG">• <a href="http://www.designer-notes.com/" target="_blank">Soren Johnson</a> (ex-Game Designer, Firaxis Games)</p>
  <p id="gvxJ">• <a href="https://m.youtube.com/c/MortdogTFT/featured" target="_blank">Stephen Mortimer</a> (Design Director, Riot)</p>
  <p id="GsHb">• <a href="https://www.youtube.com/c/Farlands" target="_blank">Stanislav Costiuc</a> (ex-Game Designer, Ubisoft)</p>
  <h3 id="mTcz">Level Design</h3>
  <p id="8YRt">• <a href="https://www.johnsto.co.uk/design/" target="_blank">Dave Johnston</a> (ex-Level Designer, Valve)</p>
  <p id="0Ivi">• <a href="http://www.davidshaver.net/" target="_blank">David Shaver</a> (Level Designer, Blizzard)</p>
  <p id="4Pat">• <a href="http://www.mikebarclay.co.uk/" target="_blank">Michael Barclay</a> (Level Designer, Naughty Dog)</p>
  <p id="fXC2">• <a href="https://jaredemitchell.com/about/" target="_blank">Jared Mitchell</a> (Level Designer, Life is Strange: True Colors)</p>
  <p id="3Qkx">• <a href="https://andrewyoderdesign.com/" target="_blank">Andrew Yoder</a> (ex-Level Designer, Warframe)</p>
  <h3 id="CW52">UX Design</h3>
  <p id="5YHq">• <a href="http://www.cand.land/home" target="_blank">David Candland</a> (UX Design Director, WB Games)</p>
  <p id="twW9">• <a href="https://www.mattbutlerux.com/" target="_blank">Matt Butler</a> (UX Design Director, Activision)</p>
  <p id="Eqkw">• <a href="https://celiahodent.com/category/blog/" target="_blank">Celia Hodent</a>(ex-UX Design Director, Epic Games)</p>
  <p id="ED2j">Приятного чтения / просмотра!</p>
  <p id="CMkf">У некоторых значится «ex-» должность. Я не стал писать их текущую позицию, ведь кто-то ушел из индустрии, стал независимым или просто не говорит где работает… поэтому выбрал одну из самых «высоких» должностей, которую авторы занимали.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@chaoticgamedesign/gamebalanceresources</guid><link>https://teletype.in/@chaoticgamedesign/gamebalanceresources?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign</link><comments>https://teletype.in/@chaoticgamedesign/gamebalanceresources?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign#comments</comments><dc:creator>chaoticgamedesign</dc:creator><title>Ресурсы по математике для гейм-дизайнера</title><pubDate>Mon, 15 Aug 2022 14:32:04 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/bd/52/bd52677a-17d0-4801-a9da-9faf8c53e523.png"></media:content><category>математика</category><description><![CDATA[<img src="https://img2.teletype.in/files/1c/6c/1c6c893f-4934-456c-9210-8299ad200bb1.png"></img>Математика играет важную роль в гейм-дизайне, особенно если вы занимаетесь балансом. В этой заметке будет обзорный тур по ресурсам, которые могут помочь как в работе, так и на собеседовании. Большинство задач, связанных с игровым балансом, опираются на теорию вероятностей и математическую статистику, поэтому основной упор в материалах сделан именно на эти области.]]></description><content:encoded><![CDATA[
  <p id="TVSI">Математика играет важную роль в гейм-дизайне, особенно если вы занимаетесь балансом. В этой заметке будет обзорный тур по ресурсам, которые могут помочь как в работе, так и на собеседовании. Большинство задач, связанных с игровым балансом, опираются на теорию вероятностей и математическую статистику, поэтому основной упор в материалах сделан именно на эти области.</p>
  <nav>
    <ul>
      <li class="m_level_1"><a href="#Xsbz">Game Development</a></li>
      <li class="m_level_1"><a href="#SszB">Научно-популярная литература</a></li>
      <li class="m_level_1"><a href="#4MUO">Портал в Data Science</a></li>
      <li class="m_level_1"><a href="#rX5K">Учебники</a></li>
      <li class="m_level_1"><a href="#c1sQ">Онлайн</a></li>
      <li class="m_level_1"><a href="#OS9l">Задачники</a></li>
      <li class="m_level_1"><a href="#tAWA">Заключение</a></li>
      <li class="m_level_1"><a href="#8zkm">Вы прочитали всё?</a></li>
    </ul>
  </nav>
  <h2 id="Xsbz">Game Development</h2>
  <p id="QqkD"><em>difficulty: medium</em></p>
  <p id="7Wrb">Начнём с книг, которые имеют прямо отношение к разработке игр. В них не так много математики, написаны они просто, и имеют самое прямое отношение к гейм-дизайну.</p>
  <ul id="OuSU">
    <li id="Wsh2"><em>Игровой Баланс (Ian Schreiber) — </em>единственная книга [известная мне], полностью посвященная балансу: транзитивность, кривые стоимости, системы рейтинга и многие другие умные слова отлично раскрываются на её страницах. Для закрепления знаний используются упражнения. Более того, последняя часть книги полностью посвящена таблицам — крайне важному инструменту гейм-дизайнеров.<br /><a href="https://habr.com/ru/companies/piter/articles/758126/" target="_blank"><em>Более подробно про книгу.</em></a></li>
  </ul>
  <ul id="wLKH">
    <li id="9ld5"><em>Virtual Economies: Design and Analysis (Vili Lehdonvirta &amp; Edward Castronova) </em>— книга с углублением в тему экономики с примерами из EVE Online. Автор лично работал над EVE, а также является профессор экономической социологии и цифровых социальных исследований в Оксфордском институте. К сожалению, в книге больше воды, чем в первой, но, тем не менее, интересные идеи и концепции можно найти.</li>
    <li id="MNot"><em>Игра в цифры (Василий Сабиров) </em>— книга не про гейм-дизайн, а аналитику, но аналитика и баланс всегда идут рука об руку, ведь без неё практически невозможно узнать, а работает ли ваш теоретический баланс в реальной среде и как правильно скорректировать его на основе данных. Data-driven [<em>-oriented</em>] подход — наше всё.<br /><a href="https://habr.com/ru/companies/ruvds/articles/546306/" target="_blank"><em>Неплохая выжимка.</em></a><br /></li>
  </ul>
  <figure id="ddkA" class="m_custom" data-caption-align="center">
    <img src="https://img2.teletype.in/files/1c/6c/1c6c893f-4934-456c-9210-8299ad200bb1.png" width="469" />
    <figcaption><em>Ian Schreiber, Game Balance</em></figcaption>
  </figure>
  <h2 id="SszB">Научно-популярная литература</h2>
  <p id="kYrs"><em>difficulty: easy</em></p>
  <p id="uD7i">К сожалению (или счастью), баланс строится на математических моделях, а они, как следует из термина, на математике. Многие не любят читать учебники по ней и разбираться в её тонкостях. На помощь здесь приходит научпоп. Он не уходит в глубины доказательств, но при этом даёт необходимые базовые знания.</p>
  <ul id="zxyG">
    <li id="y39x"><em>Серия «Образовательная Манга»</em> — коллекция про статистику, тервер, машинное обучение и всё-всё. В каждой из них есть уникальный сюжет, который проводит нас через весь материал. Вдобавок есть упражнения и выкладки с доказательствами для особо интересующихся читателей. В моих заметках частенько можно встретить вырезки из данной серии. </li>
    <li id="9y8v"><em>Математика с дурацкими рисунками и Математический анализ в безумном мире (Орлин Бен) </em>— две книги, которые описывают концепции из школьной алгебры и начала матанализа с «дурацкими рисунками» [<em>хотя я считаю их прекрасными</em>]. Знание матанализа совершенно не обязательно для хорошего дизайнера, но иногда понимание производной помогает для анализа функции, а интеграла для сложных расчетов (которые, впрочем, вероятно можно выполнить и другими способами). </li>
    <li id="0Mh8"><em>Игра случая</em> (<em>Джозеф Мазур) </em>— когда-нибудь слышали задачу о печатающей обезьяне? В ней спрашивается: сможет ли обезьяна (если дать ей сколько угодно времени), нажимающая случайным образом на кнопки клавиатуры компьютера, написать первую строку из сонета Шекспира? Книга расскажет о нескольких подобных увлекательных задачах в виде историй. Они, в свою очередь, затрагивают закон больших чисел, теорию скрытых переменных и закон действительно больших чисел — эти знания вам точно пригодятся в работе.</li>
    <li id="LGFZ"><em>Статистика и котики</em> (<em>Владимир Савельев) </em>— справочник по статистике с простыми примерами. Как мне кажется, данный материал не стоит читать как учебник, потому что всё очень поверхностно и бегло. Никаких упражнений и доказательств, голые факты.</li>
    <li id="1Mch"><em>Как лгать при помощи статистики (Дарелл Хафа)</em> — классическая книга, которая учит критически подходить к статистическим данным и их интерпретации. Несмотря на провокационное название, она показывает, как данные могут быть представлены так, чтобы вводить в заблуждение или формировать определённый нарратив. Для гейм-дизайнеров это особенно полезно: вы сможете корректно показывать игрокам информацию [<em>причём определение корректности каждый может определить для себя сам</em>], а также правильно интерпретировать аналитические данные, избегая ошибок в работе с игровыми метриками.<br /><a href="https://habr.com/ru/articles/698180/" target="_blank"><em>Обзор всей книги.</em></a><br /></li>
  </ul>
  <figure id="zDZC" class="m_column" data-caption-align="center">
    <img src="https://img1.teletype.in/files/ce/46/ce46d478-d000-4f87-8f99-1befd6d038d2.png" width="1532" />
    <figcaption><em>Син Такахаси, Занимательная статистика</em> </figcaption>
  </figure>
  <h2 id="4MUO">Портал в Data Science</h2>
  <p id="3k6I"><em>difficulty: medium</em></p>
  <p id="X44M">Коллегам, занимающимся Data Science, тоже часто приходится опираться на статистику, так почему бы не почитать то, что читают они?</p>
  <ul id="DHVG">
    <li id="ISdd"><em>Доверительное АB тестирование (Кохави Р., Тан Д., Сюй Я.)</em> — гейм-дизайнерам часто приходится работать с A/B тестами: проводить эксперименты, следить за их корректностью и делать выводы. Культура A/B тестирования достаточно сложна, и, чтобы избежать базовых ошибок, стоит ознакомиться с этой книгой. Она поможет лучше понять, как правильно сетапить эксперименты, интерпретировать результаты и учитывать все нюансы.</li>
    <li id="GkP5"><em>Практическая статистика для специалистов Data Science (Питер Брюс, Эндрю Брюс, Питер Гедек)</em> — эта книга станет отличным пособием для тех, кто хочет глубже разобраться в основах статистики, необходимых для работы с данными, но не уходить в дебри. Авторы наглядно объясняют ключевые концепции на базовом уровне: от анализа данных и визуализации до проверки гипотез и машинного обучения.</li>
    <li id="NBAn"><em>Заставьте данные говорить (Алексей Колокольников)</em> — гейм-дизайнерам нередко приходится визуализировать данные, будь то для внутреннего анализа, общения с коллегами или демонстрации игрокам. Эта книга поможет научиться строить понятные, информативные и эффектные графики, избегая визуального &quot;шума&quot;.</li>
  </ul>
  <figure id="wV34" class="m_custom" data-caption-align="center">
    <img src="https://img1.teletype.in/files/cc/d2/ccd2ee02-cd5d-44a8-a3cb-d3c36d03fd46.png" width="258.75" />
    <figcaption>Классный график?</figcaption>
  </figure>
  <h2 id="rX5K">Учебники</h2>
  <p id="yf7l"><em>difficulty: hard</em></p>
  <p id="bMH9">Если вы хотите хардкора, то можно обратиться к настоящим учебникам. Если первые главы будут понятны большинству, то для оставшихся необходимы начальные знания математического анализа. Личные рекомендации:</p>
  <ul id="d0db">
    <li id="I2oL"><em>Письменный Д.Т., Конспект лекций по теории вероятностей и математической статике.</em></li>
    <li id="gY7D"><em>Гмурман В.Е, Теория вероятностей и математическая статистика.</em></li>
    <li id="p58J"><em>В. Феллер, Введение в теорию вероятностей и ее приложение в двух томах.</em></li>
  </ul>
  <p id="ieVV">Все учебники похожи по базовому содержанию и структуре, но &quot;сок&quot; отличается, так, например, Гмурман значимую часть книге посвящает проверке статистических гипотез.</p>
  <p id="ZFui">Многие также рекомендуют Вентцель E.С., но по моему мнению, данный учебник написан более сложным языком, чем другие. </p>
  <h2 id="c1sQ">Онлайн</h2>
  <p id="ctwl"><em>difficulty: custom</em></p>
  <p id="Wcwl">В эпоху интернета было бы глупо не воспользоваться его дарами. </p>
  <ul id="rbc5">
    <li id="k12q"><a href="https://www.devtodev.com/education/online-course/mathematics-in-game-design" target="_blank">Математика в геймдизайне</a> от dev2dev — онлайн курс, который покрывает необходимый минимум.</li>
    <li id="78Tz"><a href="https://www.youtube.com/channel/UC0JB7TSe49lg56u6qH8y_MQ" target="_blank">GDC</a> — самая большая конференция разработчиков видеоигр в мире. Море полезного контента, в частности по балансу и экономике. Мои любимые доклады:</li>
    <ul id="cu55">
      <li id="DLnW"><a href="https://youtu.be/7rqfbvnO_H0" target="_blank">Slay the Spire: Metric Driven Design and Balance</a></li>
      <li id="N86k"><a href="https://youtu.be/8YJ53skc-k4" target="_blank">Changing the Time Between Shots for the Sniper Rifle from 0.5 to 0.7 Seconds for Halo 3</a></li>
      <li id="qYM4"><a href="https://youtu.be/aX8f1lE09uY" target="_blank">Balancing the Economy for Albion Online</a></li>
    </ul>
    <li id="cSug"><a href="https://www.youtube.com/c/Machinationsio" target="_blank">Machinations</a> — веб-инструмент для симуляции игровых систем, но у разработчиков есть <a href="https://www.youtube.com/c/Machinationsio" target="_blank">ютуб канал</a>. На нём периодически проводятся вебинары с приглашенными гостями, например, с Шрайбером про <a href="https://youtu.be/PW-XwqhPTjc" target="_blank">4X and Abstraction in Game Design</a>. На семинарах не стоит надеяться увидеть или услышать идеальную формулу баланса, но на них определенно можно найти новые подходы к дизайну или концепции. </li>
  </ul>
  <h2 id="OS9l">Задачники</h2>
  <p id="tRez">Пришло время готовиться к собеседованию. Где же это делать? </p>
  <ul id="IHTt">
    <li id="ASb0">Открытые тестовые. Таких можно найти очень много, например, <a href="http://aushestov.ru/гейм-дизайн/" target="_blank">вот тут</a>. </li>
    <li id="Uhqc"><a href="https://gdcuffs.com/dop-game/" target="_blank">Dungeons of Probability</a> — небольшая игра, в которой надо решать простые задачки на теорвер.</li>
    <li id="SUfE"><a href="https://www.mathedu.ru/text/mosteller_50_zanimatelnyh_veroyatnostnyh_zadach_1975/p4/" target="_blank">Мостеллер Ф., 50 занимательных вероятностных задач с решениями</a> — сборник задач на тервер. Говорят, что если прорешать все задачи из сборника, то любое тестовое покажется пустышкой. На самом деле почти так и есть, потому что идей решения задач на теорию вероятностей с дискретными случайными величинами не так уж и много, а другие дают редко.</li>
  </ul>
  <p id="dorq">Заодно можно открыть любой из учебников и прорешать задачки оттуда. Обычно они интереснее тех, что дают на тестовых (по очевидным причинам). </p>
  <figure id="8013" class="m_column" data-caption-align="center">
    <img src="https://gdcuffs.com/wp-content/uploads/2021/05/image-1024x644.png" width="1024" />
    <figcaption><em>Dungeons of Probability</em></figcaption>
  </figure>
  <h2 id="tAWA">Заключение</h2>
  <p id="jPBQ">Надеюсь, вы нашли в этой заметке что-то полезное для себя и вдохновились укрепить свои знания в математике. Однако важно помнить, что математика не ограничивается только теорией вероятностей и математической статистикой. Стоит обратить внимание и на другие её разделы, такие как:</p>
  <ul id="wt4a">
    <li id="IwsE"><strong>Математический анализ</strong> — чтобы разобраться в дифференциальном и интегральном исчислении, что может быть полезным при анализе сложных игровых экономик.</li>
    <li id="5Hp2"><strong>Линейная алгебра</strong> — для работы с системами линейных уравнений и понимания таких фундаментальных понятий, как векторы, матрицы и операторы.</li>
    <li id="olxo"><strong>Дискретная математика</strong> — для более глубокого погружения в комбинаторику, например, изучение чисел Каталана, Стирлинга, Белла и других концепций может значительно упростить решение некоторых задач.</li>
  </ul>
  <p id="89xk">Разумеется, изучать всё это стоит только в том объёме, который соответствует вашим потребностям. Более того, без многих из этих знаний можно прекрасно обойтись в работе, <em>но с ними — и интереснее, и местами легче</em>.</p>
  <figure id="6FAa" class="m_original">
    <img src="https://img1.teletype.in/files/47/6e/476e6cb6-95da-4abd-aba3-9cb101ab2319.jpeg" width="672" />
  </figure>
  <h2 id="8zkm">Вы прочитали всё?</h2>
  <ul id="lsqr">
    <li id="wsEi"><a href="https://education.yandex.ru/journal/matematika-v-data-science" target="_blank">https://education.yandex.ru/journal/matematika-v-data-science</a></li>
    <li id="EZYK"><a href="https://habr.com/ru/articles/541064/" target="_blank">https://habr.com/ru/articles/541064/</a></li>
    <li id="N3SJ"><a href="https://blog.skillfactory.ru/knigi-analitiku-dannyh/" target="_blank">https://blog.skillfactory.ru/knigi-analitiku-dannyh/</a></li>
  </ul>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@chaoticgamedesign/doomscarydarkfast</guid><link>https://teletype.in/@chaoticgamedesign/doomscarydarkfast?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign</link><comments>https://teletype.in/@chaoticgamedesign/doomscarydarkfast?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign#comments</comments><dc:creator>chaoticgamedesign</dc:creator><title>DOOM: SCARYDARKFAST</title><pubDate>Mon, 08 Aug 2022 13:22:35 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/bb/9c/bb9cdce9-24b2-40b8-88e3-bb138701202f.png"></media:content><category>книги</category><description><![CDATA[<img src="https://img2.teletype.in/files/13/47/134751ad-b2cb-4935-a651-b5196c6e5653.jpeg"></img>Наконец-то добрался до непрочитанных книг про разработку игр: «История Серии Zelda», «Hey, Listen!», «Mass Effect: восхождение к звездам». В основном они состоят из многочисленных интервью и забавных историй, и почти не затрагивают процессы разработки. Лишь малая часть содержания посвящена анализу: почему было сделано так, а зачем было сделано это, чего хотелось добиться этим... Ответов на эти вопросы почти нет, поэтому я практически потерял желание читать такие книги. Вот добрался до последней, надежды на что-то хорошее почти не осталось. И о чудо, я ошибся! Это была «DOOM. Как в битвах с демонами закалялся новый жанр».]]></description><content:encoded><![CDATA[
  <h2 id="g6cu">Книги</h2>
  <p id="yJgL">Наконец-то добрался до непрочитанных книг про разработку игр: «История Серии Zelda», «Hey, Listen!», «Mass Effect: восхождение к звездам». В основном они состоят из многочисленных интервью и забавных историй, и почти не затрагивают процессы разработки. Лишь малая часть содержания посвящена анализу: почему было сделано так, а зачем было сделано это, чего хотелось добиться этим... Ответов на эти вопросы почти нет, поэтому я практически потерял желание читать такие книги. Вот добрался до последней, надежды на что-то хорошее почти не осталось. И о чудо, я ошибся! Это была «DOOM. Как в битвах с демонами закалялся новый жанр».</p>
  <figure id="Mvky" class="m_column">
    <img src="https://img2.teletype.in/files/13/47/134751ad-b2cb-4935-a651-b5196c6e5653.jpeg" width="1280" />
    <figcaption>Разворот книги. Есть картинки!</figcaption>
  </figure>
  <p id="Mmjn">В SCARYDARKFAST в разы больше рассуждений на тему гейм-дизайна и около. Многие вещи подкинули мне почву для размышлений. Начнём с цитаты Кевина Клауда, которая идеально описывает, каким должен быть шутер:</p>
  <blockquote id="b83Z">Если в шутере неинтересно бегать и стрелять, то вы в полной заднице. Если это не весело, то у вас не получится популярного шутера, что бы вы туда ни добавляли. У каждого жанра свои сильные вторы, и в шутере... Если бегать и стрелять не весело, если это ощущается неестественным, не задействует спинной мозг и не наделяет игрока силой, то я полагаю, вы пролетели.</blockquote>
  <h2 id="GUxa">Документация</h2>
  <p id="3BoH">В начале разработки Том Холл создал «<a href="https://5years.doomworld.com/doombible/doombible.pdf" target="_blank">Библию DOOM</a>». Своего рода концепт док игры. Он содержит много полезной информации и описаний, задающих тон игры. Как мне кажется, устанавливать такие «правила» на раннем этапе разработки крайне полезно, потому что в дальнейшем помогает быстро отсекать бредовые идеи.</p>
  <p id="djpo">Также в документе стоит выделить две полезные секции, о которых порой забывают:</p>
  <ol id="1qu0">
    <li id="ALbW">Глоссарий. Команда должна общаться на одном языке, и он должен быть зафиксирован;</li>
    <li id="s09S">Random Extremely Important Info Too Small To Rate Having Its Own Section. Немного дополнительных сведений, которые могут лишь косвенно влиять на производство, например, время работы и номер ближайшее пиццерии, но при этом улучшать его.</li>
  </ol>
  <figure id="IO6z" class="m_column">
    <img src="https://img3.teletype.in/files/eb/9f/eb9fd50f-2e31-4fad-954a-f97f411feb20.png" width="1782" />
    <figcaption>Глоссарий.</figcaption>
  </figure>
  <h2 id="6x7J">Враги</h2>
  <blockquote id="lbKq">Детали могут быть незаметными, но их влияние на геймдизайн и геймплей абсолютно. В играх всё решают цифры.</blockquote>
  <p id="T4ef">Абсолютно согласен с этой мыслью. Единственное, не стоит забывать, что математический баланс — это поиск оптимального решения, а геймдизайнерский — наивысшей точки фана. Фан в шутерах во многом зависит от врагов и какие же первые враги были в последнем предрелизном пресс-демо DOOM?</p>
  <ul id="KuVo">
    <li id="204W">Зомби — рядовой враг / массовка;</li>
    <li id="HGnt">Барон ада — танк / босс;</li>
    <li id="ESas">Потерянная душа — раздражитель / камикадзе;</li>
    <li id="Cq8f">Какодемон — летающий.</li>
  </ul>
  <p id="bFkg">Задача каждого врага не просто убить игрока, а вызвать у него определенные эмоции. Таким образом, 4 врагов было достаточно, чтобы сделать фан, который пришелся по нраву прессе. Более того, какодемон оказался крайне виральным. Вопрос, а можно ли на таком количестве врагов прототипировать шутеры? Кажется, что да, потому что они покрывают необходимые дистанции атаки и уровни геометрии.</p>
  <figure id="pvGm" class="m_original">
    <img src="https://wompampsupport.azureedge.net/fetchimage?siteId=7575&v=2&jpgQuality=100&width=700&url=https%3A%2F%2Fi.kym-cdn.com%2Fentries%2Ficons%2Fmobile%2F000%2F033%2F302%2Fcover1.jpg" width="700" />
    <figcaption>Милашка.</figcaption>
  </figure>
  <p id="Kx2R">Для усиления всеобщей взаимосвязи, которое идеально вписывается в неистовый хаос, было решено сделать friendly-fire между монстрами. Если зомби окажется на линии огня и получит урон от своего, казалось бы, союзника, то он возьмет его как цель своей следующей атаки вместо игрока. Вот, что говорит Ромеро:</p>
  <blockquote id="lvnK">Монстры настолько одержимы, что выжили из умри убивают друг друга. Им плевать, что уничтожать, они просто хотят поубивать всех, даже друг друга.</blockquote>
  <p id="4HLW"><a href="https://www.gamers.org/pub/idgames/lmps/tyson/weapons" target="_blank">Подробный разбор</a> оружия и врагов от Джоржа Белла.</p>
  <h2 id="DVwy">Дизайн Пространства</h2>
  <p id="4NLG">Игрок и монстры должны где-то сражаться, а именно на аренах. Основные правила дизайна уровне освящены в <a href="https://youtu.be/ptHurafdCoQ" target="_blank">John Romero&#x27;s Level Design Rules</a>. Не буду повторяться, поэтому рассмотрим другие не менее интересные моменты.</p>
  <p id="dsEn">E3M6 «Mt. Erebus» — первая карта, которая идеально подходит для режима <em>deathmatch</em>. Её создатель, Тим Уиллитс, говорит следующее:</p>
  <blockquote id="gBWb">Если вы делаете карту для «смертельного боя» и вам хочется сделать её лучшей на свете, следуйте формуле создания других величайших карт для такого режима, и вам ждёт успех. Всё очень просто. В центре — большая комната с этажами разной высоты, ещё надо добавить снаружи пару проходов и переходов — и всё, дело в шляпе.</blockquote>
  <figure id="eDyN" class="m_original">
    <img src="https://www.quakeworld.nu/w/images/c/c6/Dm6.jpg" width="400" />
    <figcaption>DM6 «Dark Zone» из Quake следуте шаблону.</figcaption>
  </figure>
  <p id="aLPE">Как не самый опытный дизайнер уровней, взял себе этот подход на заметку.</p>
  <p id="z3yh">А вот так выглядит E3M2 «Slough of Despair»:</p>
  <figure id="9cN7" class="m_column">
    <img src="https://3dwarehouse.sketchup.com/warehouse/v1.0/publiccontent/ce1f3cfc-80d9-4872-9f08-395fea32167b" width="910" />
    <figcaption>E3M2 «Slough of Despair».</figcaption>
  </figure>
  <p id="rSgA">Начинаешь невольно задумываться, а что если дизайнеры матч-3 стали делать уровни в виде силуэтов после игры в DOOM? </p>
  <p id="BL3s">Какие же отношения выстраиваются между игроком и пространством? В DOOM игрок находится в реактивных отношениях с ним, а не в проактивных, как, например, в Far Cry (<a href="http://www.mikebarclay.co.uk/proactive-vs-reactive-combat/" target="_blank">Proactive vs Reactive Combat</a>). Таким образом, в проактивных играх игровой процесс несколько замедляется из-за тактических элементов: какое оружие взять, что выкинуть из инвентаря, как напасть на врага. В DOOM хотелось всё это минимизировать, поэтому, например, в игре нет перезарядки. </p>
  <blockquote id="cOd0">Все прятки нужно было убрать. Если я могу пригнуться или укрыться за чем-нибудь и впитывать урон как губка, то зачем вообще учиться играть? Где здесь вызов? Я начинал с аркадных автоматом, а там скорость — это всё.</blockquote>
  <p id="pSev">Вот что говорит Ромеро по поводу динамики игры.</p>
  <p id="g4qo">Серия прогрессировала, а вместе с ней и правила. Так в DOOM 2016 можно столкнуться с «математически выверенными» аренами, их математика заключается в том, что если игрока прижмут к стене, у него должны оставаться один-два варианта для отступления и маневра. Появляется двойной прыжок и механика добиваний, так игра провоцирует вас бежать и убивать врагов всё больше и больше. Враги же в свою очередь стараются сократить дистанцию до игрока, чтобы нанести сокрушительный удар. Всё движется!  </p>
  <h2 id="TrNG">Заключение</h2>
  <p id="Z3C5">Конечно же, я покрыл не весь материал книги, а лишь выдернул самые яркие для себя моменты. Возможно книга получилась такой интересной, потому что автор – учёный-искусствовед, который в своей научной диссертации анализировали FPS, а ещё он креативный директор The Chinese Room (<em>Dear Esther, Everybody&#x27;s Gone to the Rapture</em>). Так, если кто-то думал брать или не брать книгу, то смело берите. Хотя со своими советами я опоздал на пару лет... но лучше поздно, чем никогда.</p>
  <figure id="iImS" class="m_column">
    <img src="https://img2.teletype.in/files/1b/52/1b527527-0f72-40dd-8ba4-668886d9a1ed.gif" width="267" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@chaoticgamedesign/ltf-diagram</guid><link>https://teletype.in/@chaoticgamedesign/ltf-diagram?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign</link><comments>https://teletype.in/@chaoticgamedesign/ltf-diagram?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign#comments</comments><dc:creator>chaoticgamedesign</dc:creator><title>LtF Диаграмма</title><pubDate>Tue, 26 Jul 2022 06:28:02 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/e4/d8/e4d87854-ce6a-4397-b553-7d74a59f794c.png"></media:content><category>документация</category><description><![CDATA[<img src="https://img2.teletype.in/files/58/73/587319d0-d947-4f1c-b5f8-e7bfb2207dc6.jpeg"></img>Любая игра состоит из набора механик, которые объединяются в системы, которые в свою очередь и образуют игру. У многих начинающих разработчиков есть желание добавить всё что-угодно в игру, потому что «это ж блин классная штука!». У бизнес акул желание убрать как можно больше, чтобы попасть в намеченные сроки. Вопрос! Можно ли как-то понять значимость фичи? Да, можно, и именно диаграмма Джеффа Чена в этом и может помочь. ]]></description><content:encoded><![CDATA[
  <p id="AhYm">Любая игра состоит из набора механик, которые объединяются в системы, которые в свою очередь и образуют игру. У многих начинающих разработчиков есть желание добавить всё что-угодно в игру, потому что «это ж блин классная штука!». У бизнес акул желание убрать как можно больше, чтобы попасть в намеченные сроки. Вопрос! Можно ли как-то понять значимость фичи? Да, можно, и именно диаграмма Джеффа Чена в этом и может помочь. </p>
  <figure id="45GU" class="m_column">
    <img src="https://img2.teletype.in/files/58/73/587319d0-d947-4f1c-b5f8-e7bfb2207dc6.jpeg" width="750" />
    <figcaption>Оставить волнения. Рассматриваемая диаграма будет полезенее.</figcaption>
  </figure>
  <p id="JYZh">Кто такой Чен? Дизайнер, который когда-то работал в Activision, где и придумал данный подход. Во время анализа чужих игр (чем он и занимался в рабочее время) он понял, что значимость фичи надо измерять совместно с другими фичами, то есть измерять влияние одной фичи на другие.</p>
  <p id="i5Xq">Так сформировался принцип: <em>«Любая фича в игре ценна только в той мере, в какой она влияет (или находится под влиянием) на другие фичи игры»</em>. Ключевой идеей здесь является концепция «влияния». Одна фича находится под влиянием другой только в том случае, если она каким-то образом задействуется её.</p>
  <p id="wRSp">Введем следующие обозначения:</p>
  <ul id="UWhy">
    <li id="M1Su">=&gt; влияние одной фичи на другую;</li>
    <li id="sgiu">&lt;=&gt; совместное влияние.</li>
  </ul>
  <p id="qpLt">Например, если в игре можно убивать монстров, чтобы получать экспу, чтобы становиться сильнее, чтобы убивать более классных монстров, получаем: <em>Комбат =&gt; XP =&gt; Прокачка =&gt; Комбат</em>. Более простой пример: если мир вокруг изменяем, то он подвержен влиянию, например, в Minecraft: <em>Инструменты =&gt; Мир</em>, иначе система мира не находится под влиянием (но может влиять!)</p>
  <figure id="98N4" class="m_column">
    <img src="https://img4.teletype.in/files/35/23/3523f0dc-17b3-44c3-8db7-694715887bcd.png" width="1288" />
    <figcaption>Диаграмма ресурсов в виде цикла. </figcaption>
  </figure>
  <p id="oDDs">Попробуем изобразить всё это в виде диаграммы, а не кор-лупа (или любого другого лупа). Каждая фича — прямоугольник, связи — стрелки. </p>
  <p id="SU0l">Полная диаграмма выдуманной Action / Adventure игры (почти как <em>Ratchet and Clank</em>):</p>
  <figure id="ucZK" class="m_column">
    <img src="https://img4.teletype.in/files/f1/98/f19808e2-ecb2-454f-9b04-76fd1e7510db.png" width="2248" />
    <figcaption>Пример LtF диаграммы для выдуманной игры.</figcaption>
  </figure>
  <p id="bYSL">Получается, что чем больше стрелок указывает на какой-либо блок, тем важнее этот блок для общего дизайна. Интересная особенность этой диаграммы заключается в том, что, взяв общее среднее число ссылок на фичи (количество линков, разделенные на количество фич), получим отношением ссылок к фичам или просто <strong>Links-to-Features / score</strong>. Это число является показателем того, насколько связаны между собой ваши функции. Перефразировав принцип, озвученный выше: чем больше LtF, тем лучше. Точно так же для «категорий» фич можно посчитать LtF, чтобы определить, какие части вашей игры вносят наибольший вклад. Например, LtF категории «world» — единица (не фичи!).</p>
  <p id="vp6n">Если бы при разработке выдуманной игры потребовалось что-то фичекать, то можно было, например, пожертвовать хабом или испытаниями и наградами за них, так как их вклад в LtF минимален.</p>
  <p id="Usl1">Так суть всего этого процесса просто понять, а насколько связаны ваши системы и нет ли чего-то «просто так». Ведь на любое «просто так» сжигаются ресурсы (материальные, человеческие, креативные, etc).</p>
  <p id="bs9i"><a href="http://www.chaoticstupid.com/measuring-feature-cohesion-with-chen-diagrams/" target="_blank">Оригинал этой статьи</a> я нашел в блоге Майкла Стаута. Я примерно её перевёл, где-то что-то сократив, где-то изменив, в процессе сделал следующие выводы:</p>
  <ol id="aT9Z">
    <li id="Y6NE">Бессмысленно выделять прокси ресурсы или производные, потому что это просто +1 фича и +1 линк. Например, в оригинале был Level от XP, но ведь Level — это просто более удобный вид представления XP;</li>
    <li id="g9p8">Стрелок получается очень много, поэтому имеет смысл рассматривать системы на разных уровнях. Например, бой можно рассмотреть более детально и понять, какие механики внутри него более значимые, а какие менее;</li>
    <li id="YJoa">У экономических систем заведомо больше LtF, так как связей банально больше, чем у мировых, поэтому сравнивать их между собой не совсем корректно;</li>
    <li id="w5Pr">Имеет смысл разделять действия и ресурсы на 2 группы поменьше: core и meta, чтобы отслеживать всё по отдельности (см. пункт 2);</li>
    <li id="V5WM">Наличие большого LtF — не залог успеха, это простой большой LtF.</li>
  </ol>
  <p id="vdLx">Кстати, в оригинале диаграмма называется «Chen Diagram», но это название уже забито за особой диаграммой для баз данных, поэтому пусть будет диаграмма LtF. </p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@chaoticgamedesign/approximation</guid><link>https://teletype.in/@chaoticgamedesign/approximation?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign</link><comments>https://teletype.in/@chaoticgamedesign/approximation?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign#comments</comments><dc:creator>chaoticgamedesign</dc:creator><title>Интерполяция, экстраполяция и аппроксимация</title><pubDate>Sat, 16 Jul 2022 17:44:35 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/48/57/4857dbb3-77c4-4a02-8562-35383d641ae0.png"></media:content><category>математика</category><description><![CDATA[<img src="https://img4.teletype.in/files/35/44/35446f32-48bc-4cc9-ab0a-60f1c84d4caf.png"></img>Интерполяция, экстраполяция, аппроксимация — замечательные слова, которые звучат как магия и делают её. Однако иногда юные разработчики путают названия заклинаний, что иногда мешает в коммуникации или даже разработке. Так что же это такое и как используется в разработке игр? Сейчас разберемся на примерах.]]></description><content:encoded><![CDATA[
  <figure id="0fls" class="m_column">
    <img src="https://img4.teletype.in/files/35/44/35446f32-48bc-4cc9-ab0a-60f1c84d4caf.png" width="1280" />
    <figcaption>Магия вне Хогвартса.</figcaption>
  </figure>
  <p id="deIq">Интерполяция, экстраполяция, аппроксимация — замечательные слова, которые звучат как магия и делают её. Однако иногда юные разработчики путают названия заклинаний, что иногда мешает в коммуникации или даже разработке. Так что же это такое и как используется в разработке игр? Сейчас разберемся на примерах.</p>
  <p id="ET3P">Небольшая математическая вводная, которая необходима для плодотворного диалога:</p>
  <ul id="5zhZ">
    <li id="9wuN">Функция — правило зависимости одной величины от другой.</li>
    <li id="OKLk">Полином (многочлен) — выражение, состоящее из переменных и коэффициентов, которое включает только операции сложения, вычитания, умножения, деления и возведения переменных в степень. </li>
  </ul>
  <p id="rbhs">Например, y = x^2 - 5x + 25 — функция и полином второй степени.</p>
  <p id="uqrd">Теперь можно переходить к сути.</p>
  <h2 id="oGRF">Интерполяция</h2>
  <p id="jHK8">Предположим, что мы делаем простенький point-and-click. Игрок сейчас находится в точке <em>A</em>, и щелкает в <em>B</em>. Как плавно его переместить из <em>A</em> в <em>B</em>? Необходимо построить какую-то функцию, которая обязательно проходит через точки начало и конца и находит значения между ними. Вот и есть простой пример интерполяции.</p>
  <p id="TiLU"><strong>Интерполяция</strong> — приближенное нахождение <em>промежуточных</em> значений между известными.</p>
  <p id="jSfY">Интерполяция бывает очень разной и зависит от вводных. Предположим, что у нас есть большой открытый мир и точки интереса. При первом заходе в мир камера должна красиво пролететь между всеми точками и подсветить их. Пусть координаты точек:</p>
  <ol id="qjiN">
    <li id="U4Wj">(0, 1);</li>
    <li id="6wgx">(1, 1);</li>
    <li id="oecT">(2, 0.5);</li>
    <li id="dexG">(3, 0.3).</li>
  </ol>
  <p id="woe2">Если применить метод <a href="https://ru.wikipedia.org/wiki/Линейная_интерполяция" target="_blank">линейной интерполяции</a>, то получится ломанная:</p>
  <figure id="CSvo" class="m_column">
    <img src="https://img2.teletype.in/files/dd/1c/dd1c21aa-c963-44b7-b1e7-8fe00547bdd2.png" width="1840" />
    <figcaption>Пример ломанной, где точки «соединены»соединены методом линейной интерполяции.</figcaption>
  </figure>
  <p id="2Xr5">Однако ломанная убивает «плавность» и, например, в случае с камерой могут потеряться красивые виражи и залеты к точкам. Если хочется получить «плавность», то нужно построить полином, а значит применить соответствующую интерполяцию, например, <a href="https://ru.algorithmica.org/cs/algebra/interpolation/" target="_blank">метод Лагранжа</a>. </p>
  <p id="NTRm"></p>
  <figure id="XxRd" class="m_column">
    <img src="https://img1.teletype.in/files/c3/b1/c3b1083e-acb2-420a-b12d-707a1d6b364f.png" width="1840" />
    <figcaption>Пример интерполяции методом Лагранжа.</figcaption>
  </figure>
  <p id="HMoJ">Вот и готова функция (траектория), по которой полетит игровая камера. Мы нашли значения между точками интереса, то есть проинтерполировали.</p>
  <p id="2Jmk">Полезные видео по интерполяции и чуть более углубленно, почему оно работает так:</p>
  <ol id="AA3a">
    <li id="24A8"><a href="https://youtu.be/4S6G-zenbFM" target="_blank">Lagrange Interpolation</a></li>
    <li id="GouB"><a href="https://youtu.be/j155J5x6Pq0" target="_blank">Cosine Interpolation</a></li>
    <li id="i1jx"><a href="https://youtu.be/aVwxzDHniEw" target="_blank">The Beauty of Bézier Curves</a></li>
  </ol>
  <p id="co4n">Вот, вы когда-нибудь задумывались что такое Lerp и Slerp в Unity? Это же просто Linear Interpolation и Spherical Linear Interpolation.</p>
  <h2 id="q1Hr">Экстраполяция</h2>
  <figure id="eh0a" class="m_original">
    <img src="https://ru.algorithmica.org/cs/algebra/img/extrapolation.png" width="461" />
    <figcaption>Не моё хобби.</figcaption>
  </figure>
  <p id="kuHf">Методы экстраполяции во многих случаях сходны с методами интерполяции, но их основная задача кардинально отличается. </p>
  <p id="lKtP"><strong>Экстраполяция</strong> — приближенное нахождение <em>последующих</em> значений по известным предыдущим.</p>
  <p id="m48m">Например, мы делаем мультиплеерный FPS шутер. Игрок находится в позиции <em>X </em>и нажимает кнопку &quot;<em>W</em>&quot; в течение последней секунды. Можно предположить, что он будет продолжать это делать в следующую секунду, потому что это наиболее частое поведение в нашей игре, поэтому можно экстраполировать положение, в котором он будет в следующем кадре. </p>
  <p id="myIs">Ещё несколько полезных ссылок:</p>
  <ol id="HIFH">
    <li id="UrJ6"><a href="https://youtu.be/rD90rTjy5Yo" target="_blank">Интерполяция и экстраполяция на примере Planteside 2</a></li>
    <li id="WitJ"><a href="https://blog.devgenius.io/day-84-of-game-dev-using-pre-and-post-extrapolation-in-timeline-cf3a72dc7485" target="_blank">Using Pre and Post Extrapolation in Timeline (Unity)</a></li>
    <li id="RjaD"><a href="https://habr.com/ru/post/302394/" target="_blank">Серия из 4 статей про мультиплеер в быстрых играх (перевод)</a></li>
  </ol>
  <figure id="yGm7" class="m_column">
    <img src="https://img2.teletype.in/files/92/0f/920fe40b-74a9-4ed5-9c2d-d35e26855a02.png" width="1762" />
    <figcaption>Пример экстраполяции методом Лагранжа. Пунктиранная часть — экстраполяция.</figcaption>
  </figure>
  <h2 id="TinK">Аппроксимация</h2>
  <p id="ydqC">Аппроксимация — приближенное представление сложной функции более простой, имеющей минимальное отклонение от исходной.</p>
  <p id="Ittu">Такую операцию можно легко сделать в Google Sheets / Excel:</p>
  <ol id="4ixD">
    <li id="Ekix">Выбираем необходимый диапазон данных;</li>
    <li id="wTX6">Строим по этим данным диаграмму;</li>
    <li id="5Tn6">Включаем линию тренда в настройках диаграммы.</li>
  </ol>
  <p id="Roei">Линия тренда — это функция, предназначенная для отображения модели или тренда на графике. В отличии от интерполяции она необязательно проходит через имеющиеся данные, а может быть лишь около.</p>
  <figure id="uA23" class="m_custom">
    <img src="https://img1.teletype.in/files/45/bc/45bc2293-7dee-43a5-b1c4-27e223d5df11.png" width="220.49038461538458" />
    <figcaption>Пример настройки линии тренда</figcaption>
  </figure>
  <p id="wZC5">Выбора типа линии остаётся за исследователем, также как и особые настройки конкретного типа (например, порядок полиномиального приближения).</p>
  <p id="EmFJ">Два важных свойства линии тренда:</p>
  <ol id="spUX">
    <li id="w2Cc"><em>Ярлык &gt; уравнение</em> покажет уравнение функции, что в последствии можно (и нужно) использовать;</li>
    <li id="BwxK"><em>R2 (Коэффициент детерминации)</em> — значение, которое измеряется от 0 до 1 и показывает, как хорошо линия тренда описывает имеющиеся значения.</li>
  </ol>
  <figure id="JYPJ" class="m_column">
    <img src="https://img4.teletype.in/files/75/68/7568e6fe-b299-4dc2-a91c-555cadbec450.png" width="2576" />
    <figcaption>Манга «Регрессивный Анализ»</figcaption>
  </figure>
  <p id="6lAQ">Уходить в регрессивный анализ не хотелось бы, потому что это требует отдельной заметки (ха-ха, серии лекций в курсе математической статистики). Однако вот <a href="https://habr.com/ru/post/350668/" target="_blank">базовая статья</a>.</p>
  <p id="6NMl">По итогу получается вот такой график:</p>
  <figure id="yF4E" class="m_column">
    <img src="https://img3.teletype.in/files/ee/e9/eee9f763-8531-48fe-b570-1388a05678ed.png" width="1518" />
    <figcaption>Диаграмма из Google Sheets с построенной линией тренда.</figcaption>
  </figure>
  <p id="TdlO">Коэффициент детерминации — единичка, значит функция проходит через все имеющие точки и может заодно выступать интерполяцией. Если задуматься, то на самом деле получился просто «приведенный» полином Лагранжа. </p>
  <p id="wXKP">Рассмотрим другой пример, пусть наши точки имеющие следующие координаты:</p>
  <ol id="fSAn">
    <li id="5YMw">(0, 1);</li>
    <li id="WVOU">(1, 2.05);</li>
    <li id="X42x">(2, 2.9);</li>
    <li id="FcvU">(3, 4.1).</li>
  </ol>
  <p id="WXPn">Если приглядеться и подумать, то они практически образуют линейную зависимость. Метод Лагранжа естественно выдаст полином 3 степени, а вот аппроксимировать можно линейно, тогда R-квадрат будет 0.93. В точности почти не теряем, но выиграем за счет значительного упрощения функции. </p>
  <figure id="QwgX" class="m_column">
    <img src="https://img3.teletype.in/files/e2/00/e200374a-f59b-48c8-9f0e-61dfe23ed03e.png" width="1710" />
    <figcaption>Зеленная линия — график линейно функции. Фиолетовая — метод Лагранжа.</figcaption>
  </figure>
  <p id="RyEY">Что использовать остаётся на откуп исследователю. Здесь было бы логичнее пренебречь простотой, так как в абстрактном примере мы строим функцию пролета камеры, а ей нужны красивые «виражи», а не просто прямой пролёт.</p>
  <p id="uldz">Конечно же, метод аппроксимации заодно может выступать и экстраполяцией. Этим можно пытаться пользоваться при деконстракте других игр, но с осторожностью, а то может получиться как на одном из мемов выше.</p>
  <p id="7XHA">PS Как можно было догадаться, интерполяция и экстраполяция — особые виды аппроксимации.</p>
  <h2 id="bcyE">Заключение</h2>
  <p id="SBSF">Надеюсь, что каждый разобрался, что означает каждый из трёх терминов и когда его применять, а также что они могут быть разные внутри себя. </p>
  <p id="7lqZ">Сами вычисления вышли очень поверхностные и без дополнительных комментариев, потому что в небольшую заметку они никак бы не влезли. Для полноценного понимания каждого из названных методов необходимо прослушать ни одну лекцию по математическому анализу и вычислительной математике. </p>
  <p id="ILbu">Напоследок:</p>
  <ol id="w2zG">
    <li id="pXve">Интерполяция — внутри;</li>
    <li id="1Osa">Экстраполяция — вовне;</li>
    <li id="4KAj">Аппроксимация — примерно везде.</li>
  </ol>
  <figure id="0I4p" class="m_column">
    <img src="https://img3.teletype.in/files/6d/5c/6d5cdd85-5f4b-42e8-89b9-6c8d68714ffc.gif" width="848" />
    <figcaption>Линейная интерполяция. Метод Лагранжа. Метод Наименьших Квадратов (Линейная Аппроксимация).</figcaption>
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@chaoticgamedesign/figma</guid><link>https://teletype.in/@chaoticgamedesign/figma?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign</link><comments>https://teletype.in/@chaoticgamedesign/figma?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign#comments</comments><dc:creator>chaoticgamedesign</dc:creator><title>Figma как инструмент гейм-дизайнера</title><pubDate>Tue, 12 Jul 2022 12:20:27 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/14/8b/148b98f5-a381-4091-acd5-134064cb4a05.png"></media:content><category>инструменты</category><description><![CDATA[<img src="https://img3.teletype.in/files/6c/a1/6ca10495-2cd0-4d4a-aed5-34a9b562c164.png"></img>User Interface — неотъемлемая часть любой игры, и вам как геймдизайнерам так или иначе придется его проектировать для художников по интерфейсам и инженерам. Во время этого процесса придётся создать несколько вещей:]]></description><content:encoded><![CDATA[
  <p id="dxuS">User Interface — неотъемлемая часть любой игры, и вам как геймдизайнерам так или иначе придется его проектировать для художников по интерфейсам и инженерам. Во время этого процесса придётся создать несколько вещей:</p>
  <ul id="hd98">
    <li id="Gu7m">UX Flow — абстрактная карта экранов и связей между ними с возможными действиями юзера / системы;</li>
    <li id="bDB7">Wireframe — черновой экран;</li>
    <li id="3Pcu">Карта экранов — связанные wireframes.</li>
  </ul>
  <p id="uWAA">Всё это помогает отследить логику переходов и показать что ожидается от интерфейса. Не будем останавливаться на том, зачем это надо, потому что уже достаточно материалов на этом тему написано:</p>
  <ol id="YCrZ">
    <li id="kk6e"><a href="https://progamedev.net/kak-sostavlyat-user-experience-flow/" target="_blank">Как составлять User Experience Flow</a></li>
    <li id="olGE"><a href="https://dtf.ru/gamedev/18185-karta-ekranov-v-razrabotke-igrovogo-interfeysa" target="_blank">Карта экранов в разработке игрового интерфейса</a></li>
    <li id="UJ61"><a href="https://www.devtodev.com/education/online-course/gdd-basic-course/lecture-5" target="_blank">Инструментарий для ГДД</a></li>
  </ol>
  <p id="uTEy">К сожалению, очень часто предлагается использовать разные инструменты под каждый из пунктов, мол накидывать экран в <a href="https://balsamiq.com" target="_blank">Balsamiq</a>, а карту экранов или флоу в <a href="https://miro.com/login/" target="_blank">Miro</a>. Однако, как показывает практика, чем больше инструментов и всяких проектов в них, тем сложнее что-то найти и связь вместе. Именно поэтому в своей рабочей практике я использую <a href="https://www.figma.com/" target="_blank">Figma</a> и всё делаю там. Сейчас расскажу, как это происходит и какие есть хитрости.</p>
  <h2 id="KeD0">Подготовительные работы</h2>
  <p id="0YKq">Регистрируемся, создаём пустой проект, а в нём 3 страницы:</p>
  <ol id="Qw8F">
    <li id="qc61">Flow — тут будет наш UX Flow;</li>
    <li id="i8ir">Wireframes — мокапы экранов и карта экранов;</li>
    <li id="cpqI">References — рефы UI.</li>
  </ol>
  <p id="WCmK">К сожалению, в бесплатной версии Figma это лимит. Можно отказаться от References и заменить их на User Interface, где будут финальные версии экранов, отрисованные художником. Другой вариант — купить премиум подписку. </p>
  <figure id="fdMA" class="m_column">
    <img src="https://img3.teletype.in/files/6c/a1/6ca10495-2cd0-4d4a-aed5-34a9b562c164.png" width="1686" />
    <figcaption>Страницы располагаются в меню «Pages»</figcaption>
  </figure>
  <p id="vSVn">Всё, что ещё нужно уметь делать в Figma:</p>
  <ol id="08SL">
    <li id="Bd9D">Создавать фигуры (квадрат, круг) — иконка квадратика в верхнем баре;</li>
    <li id="tXI9">Создавать текст — буква «T» в верхнем баре.</li>
  </ol>
  <h2 id="qDur">Flow</h2>
  <p id="QNbb">В каждой студии под флоу понимается что-то своё и частенько состоит из разных логических блоков, я выделяю следующие:</p>
  <ol id="psLC">
    <li id="9zyw">Процесс — начало игры, геймплей, любая другая игровая активность;</li>
    <li id="qG5Q">Экран — что-то, что видит игрок и как-то может переходить на соседние экраны;</li>
    <li id="EmOy">Проверка — <strong>системная</strong> проверка, например, первая ли это игровая сессия за день.</li>
  </ol>
  <figure id="5PR5" class="m_column">
    <img src="https://img3.teletype.in/files/e3/8b/e38b20b2-b7fe-4bce-94c6-eb4db21a642c.png" width="1646" />
    <figcaption>Блоки стоит обозначать в легенде, чтобы все знали, что есть что. Вдобавок у фигмы есть полезный функционал в виде <a href="https://vc.ru/design/396584-chto-takoe-komponenty-v-figma-i-kak-oni-pomogut-sdelat-rabotu-bystree" target="_blank">компонентов</a>. </figcaption>
  </figure>
  <p id="MqUK">Предположим, что мы делаем Archero 2.0:</p>
  <figure id="G7ji" class="m_column">
    <img src="https://img3.teletype.in/files/62/7d/627dbe0b-4d5b-4bbf-833f-a0a71d9bdff1.png" width="1874" />
    <figcaption>Пример очень простого UX Flow.</figcaption>
  </figure>
  <ol id="QpZv">
    <li id="EPAw">Расширилась легенда: появились обозначения стрелок от условия;</li>
    <li id="4hnF">Обрисовался начальный флоу:</li>
    <ol id="B0Uw">
      <li id="Ijyh">Если новый игрок, то запустить тутор. Иначе главный экран;</li>
      <li id="Wfkj">С главного экрана можно перейти в геймплей при наличии достаточного количества энергии. Если нет, то предложить докупить энергию;</li>
      <li id="w3nN">После геймплея всегда открывать результаты.</li>
    </ol>
  </ol>
  <section style="background-color:hsl(hsl(0, 0%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="zvDZ">Стрелки в Figma — боль, но привыкнуть и приспособиться можно.</p>
  </section>
  <h2 id="MxAm">Wireframes</h2>
  <p id="5SOk">После флоу можно переходить на уровень ниже, то есть прикидывать экраны. </p>
  <p id="vyPZ">Перед этим процессом хорошо бы изучить рефы и заполнить соответствующую страницу, чтобы не изобретать велосипед:</p>
  <figure id="vPDo" class="m_column">
    <img src="https://img4.teletype.in/files/f0/d2/f0d2acf5-27ce-40f2-9805-99aa03ae48ef.png" width="2342" />
    <figcaption>Рефы хранятся как кому удобно, но желатльно, чтобы каждое изображение было внутри <a href="https://ux.pub/editorial/kak-rabotaiut-ghruppy-i-frieimy-v-figma-3f9n" target="_blank">Frame</a>, так как его название отоброжается.</figcaption>
  </figure>
  <p id="CBCr">Wireframes также создаём с помощью Frame, но теперь имеет смысл выбрать конкретный размер из предложенного списка:</p>
  <figure id="hOfN" class="m_custom">
    <img src="https://img3.teletype.in/files/23/e5/23e57804-8460-4adb-96dc-2b90c13e9b86.png" width="259" />
    <figcaption>Для примера будем использовать iPhone 13 mini.</figcaption>
  </figure>
  <p id="7ueW">Frame называем так, как называется экран на Flow.</p>
  <figure id="PFWj" class="m_column">
    <img src="https://img3.teletype.in/files/62/b5/62b5ba41-2493-48b9-987f-7ce2c419ef76.png" width="2048" />
    <figcaption>Для иконок удобно использовать различные плагины, например, Material Design от Google.</figcaption>
  </figure>
  <p id="hh7s">На фрейм набрасываем кнопки, бары, иконки, всё что нам надо. Главное не переборщить. </p>
  <p id="ootB">Как только экран готов, желательно объединить элементы внутри него в группы, чтобы в случае чего их было проще выключать / включать, перемещать, увеличивать, etc.</p>
  <figure id="aSWv" class="m_column">
    <img src="https://img4.teletype.in/files/7a/40/7a40372b-16d6-4d70-94ff-5293b3f31686.png" width="1606" />
    <figcaption>Два экрана с группами.</figcaption>
  </figure>
  <h2 id="uacJ">Screens Map</h2>
  <p id="EfP5">Карту экранов будем делать непосредственно на странице с wireframes, причём она сразу же будет и <strong>интерактивным прототипом</strong>.</p>
  <ol id="jpW5">
    <li id="WkME">Выбираем Prototype в настройках вместо Design;</li>
    <li id="tvNH">Выделяем нужную кнопку на экране;</li>
    <li id="TUV2">Создаем связь между кнопкой и нужным экраном;</li>
    <li id="Vabt">Определяем настройки перехода, например, полный переход на экран или оверлей. </li>
  </ol>
  <figure id="tS8l" class="m_column">
    <img src="https://img4.teletype.in/files/7f/a0/7fa0027a-de31-4471-ba81-4b765753bb2b.png" width="2376" />
    <figcaption>Пример открытия оверлэя.</figcaption>
  </figure>
  <p id="fxHM">Пока будет включен режим прототипа, то будут отображаться все связи, которые и отражают карту экранов:</p>
  <figure id="Twxm" class="m_column">
    <img src="https://img2.teletype.in/files/93/63/9363965f-dd29-4045-a8be-3d830c62fb8c.png" width="1438" />
    <figcaption>Простенькая карта экранов.</figcaption>
  </figure>
  <p id="yYbT">У одного экрана может быть несколько состояний, например, у главного: достаточно энергии для старта геймплея или нет. В таком случае имеет смысл прокинуть между ними «чит» и обозначить, что он не доступен игрокам.</p>
  <figure id="ptrm" class="m_column">
    <img src="https://img4.teletype.in/files/ba/1a/ba1ae401-a9a6-4a4f-b6cc-bc7ccc9b13f6.png" width="1186" />
    <figcaption>Пример простого чита, который перекидывает на главный экран, но с 0 энергией.</figcaption>
  </figure>
  <p id="oyJw">Способов сделать «читы» — много, главное их как-то помечать, например, через желтый цвет и начало текста со знака процента. При желании их можно сделать хитрее, чтобы при большом количестве состояний экранов карта экрана не разрасталась. Однако в этот раз на этом останавливаться не будем.</p>
  <p id="LWmD">Более того, теперь можно запустить кликабельный прототип через кнопку «Present»:</p>
  <figure id="9gki" class="m_column">
    <img src="https://img4.teletype.in/files/3e/c0/3ec07e49-c85d-403b-8d8d-06dc341da396.gif" width="2880" />
    <figcaption>Пример простенького прототипа и «читов». Удобно, что показывается сразу на выбранном девайсе.</figcaption>
  </figure>
  <h2 id="OW9m">Заключение</h2>
  <p id="a5pk">Figma — крайне удобный инструмент, потому что:</p>
  <ol id="MAPl">
    <li id="DvSq">Можно создавать несколько страниц в одном прототипе;</li>
    <li id="t1vx">Есть возможность строить как флоу, так и накидывать сами экраны;</li>
    <li id="4TWG">Доступен функционал объединения экранов в карту и кликабельный прототип.</li>
  </ol>
  <p id="4T5e">К тому же, иногда Figma упрощает диалог с UI/UX дизайнером. Как и у любого инструмента, у неё есть свои минусы, например, не очень удобные стрелки на этапе UX Flow. Однако небольшие минусы часто чинятся плагинами от сообщества, которых очень много.</p>
  <p id="UPmX">Полезные ссылки для дальнейшего изучения:</p>
  <ol id="oClU">
    <li id="pw2I"><a href="https://vc.ru/design/387113-kak-uluchshit-organizaciyu-proektov-v-figma" target="_blank">Как улучшить организацию проектов в Figma</a></li>
    <li id="kwyF"><a href="https://youtu.be/jk1T0CdLxwU" target="_blank">Intro to Figma - Beginners guide to Figma Basics</a></li>
    <li id="ML86"><a href="https://youtu.be/XrF7-Ds-0YQ" target="_blank">How to Create Game Prototypes in Figma</a></li>
  </ol>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@chaoticgamedesign/darkmonetization</guid><link>https://teletype.in/@chaoticgamedesign/darkmonetization?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign</link><comments>https://teletype.in/@chaoticgamedesign/darkmonetization?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign#comments</comments><dc:creator>chaoticgamedesign</dc:creator><title>Dark Monetization</title><pubDate>Thu, 30 Jun 2022 07:44:24 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/4c/da/4cda2b44-df0f-4c57-b74f-a4b9a37be784.png"></media:content><category>монетизация</category><description><![CDATA[<img src="https://img2.teletype.in/files/9b/1e/9b1e60e7-557b-4521-80b4-8890f54a8bef.gif"></img>Пока мобильная Diablo зарабатывает $24 млн за пару недель, игроки пытаются посчитать цену для максимальной прокачки персонажа, а энтузиасты создают симуляторы прокачки, другой небольшой проект зарабатывает мало и его продюсер отправляет дизайнера разобраться, что же с этим делать.]]></description><content:encoded><![CDATA[
  <p id="fg0h">Пока мобильная Diablo <a href="https://appmagic.rocks/google-play/diablo-immortal/com.blizzard.diablo.immortal" target="_blank">зарабатывает $24 млн за пару недель</a>, игроки пытаются посчитать цену для максимальной прокачки персонажа, а энтузиасты создают <a href="https://dimi777.github.io/diablo-rift-simulator/" target="_blank">симуляторы прокачки</a>, другой небольшой проект зарабатывает мало и его продюсер отправляет дизайнера разобраться, что же с этим делать.</p>
  <p id="dPgy">Дизайнер посмотрел на аналитику, потом на карту метрик, почесал голову и решил, что как-то тяжко разбираться во всех этих странных аббревиатурах и проще применить «темные» техники монетизации. Вот что он придумал... </p>
  <nav>
    <ul>
      <li class="m_level_1"><a href="#GUut">I. Неожиданные кнопки</a></li>
      <li class="m_level_1"><a href="#LbMY">II. Отрицательная скидка</a></li>
      <li class="m_level_1"><a href="#TLea">III. Умный ежедневный бонус</a></li>
      <li class="m_level_1"><a href="#Kk8P">IV. Платная реклама</a></li>
      <li class="m_level_1"><a href="#AHAZ">V. Умная реклама</a></li>
      <li class="m_level_1"><a href="#EJwQ">Заключение</a></li>
    </ul>
  </nav>
  <figure id="LKOi" class="m_original" data-caption-align="center">
    <img src="https://img2.teletype.in/files/9b/1e/9b1e60e7-557b-4521-80b4-8890f54a8bef.gif" width="500" />
    <figcaption>Кто же заманил молодого специалиста на темную сторону? </figcaption>
  </figure>
  <p id="Y2vP"><em>Продюсер, дизайнер и проект выдуманные.</em></p>
  <h2 id="GUut">I. Неожиданные кнопки</h2>
  <p id="jdJr">При входе в проект игрокам поочередно показывается несколько офферов. Специальных предложений, которые игрок может купить, а может и закрыть. </p>
  <figure id="MgwU" class="m_column" data-caption-align="center">
    <img src="https://img4.teletype.in/files/fa/58/fa5896b4-ec21-4d50-973d-d78ac229058f.png" width="2880" />
    <figcaption>Пример оффера</figcaption>
  </figure>
  <p id="vmnW">Дизайне подметил, что большинство игроков:</p>
  <ol id="BUGF">
    <li id="jX82">Не покупают ничего;</li>
    <li id="mdqu">Не смотрят офферы, а просто закрывают их.</li>
  </ol>
  <p id="OLUd">Было решено поменять кнопку местами «купить» и «ок» на последнем оффере, чтобы игроки случайно нажимали на первую.</p>
  <figure id="9jaA" class="m_column" data-caption-align="center">
    <img src="https://img2.teletype.in/files/54/e9/54e9c0c0-80b5-456a-b35d-05ddcd400372.gif" width="2880" />
    <figcaption>Игрок попадается. Гифка замедлена, чтобы понять идею.  Так называемый roflfer.</figcaption>
  </figure>
  <p id="Gwgr">Опа! Вот и первые успехи. Парочка игроков попалась.</p>
  <h2 id="LbMY">II. Отрицательная скидка</h2>
  <p id="Mcih">Раз игрок «случайно» покупает оффер, то почему бы не сделать его необычным? например, отрицательным?</p>
  <figure id="IDKZ" class="m_column" data-caption-align="center">
    <img src="https://img3.teletype.in/files/e9/0e/e90ee50a-3053-4291-a5ab-0baa1eaf5400.png" width="2880" />
    <figcaption>Отрицательный оффер.</figcaption>
  </figure>
  <h2 id="TLea">III. Умный ежедневный бонус</h2>
  <p id="ANyQ">Игрок успешно купил оффер. Самое время собирать ежедневные бонусы, которые так любит наш игрок. Тут дизайнер придумал следующее: не просто выдавать награду за вход, а спрашивать у игрока за какой день, по его мнению, он должен получить награду?</p>
  <figure id="fp9L" class="m_column" data-caption-align="center">
    <img src="https://img3.teletype.in/files/e4/55/e4551a0d-7e96-4d1a-beaa-b04afc59b5c0.png" width="2880" />
    <figcaption>Экран мини-игры «Daily reward»</figcaption>
  </figure>
  <p id="6Hqz">Элементы экрана:</p>
  <ul id="0B7v">
    <li id="d2MH">Ввод дня осуществляется посредством слайдера;</li>
    <li id="44gW">Если была нажата кнопка «idk», выдать награду дня.</li>
  </ul>
  <p id="8q9r">Проверка введенго дня:</p>
  <ul id="PyZ8">
    <li id="qpFb">Если был введен корректный день, выдать удвоенную награду дня;</li>
    <li id="k2R9">Иначе сбросить прогресс по дням и предложить просмотр рекламы, чтобы восстановить прогресс.</li>
  </ul>
  <figure id="YAiQ" class="m_column" data-caption-align="center">
    <img src="https://img4.teletype.in/files/b0/50/b050f261-5be9-4ee0-9e1a-cb8003c79496.png" width="2880" />
    <figcaption>Экран поражения в мини-игре «Daily reward»</figcaption>
  </figure>
  <p id="TqqR">Элементы экрана «поражения»:</p>
  <ul id="H3Bg">
    <li id="3jwJ">Если была нажата кнопка «Watch AD», показать рекламу, восстановить прогресс и выдать награду дня;</li>
    <li id="D9gD">Если была нажата кнопка «Ignore», выдать прогресс первого дня.</li>
  </ul>
  <figure id="WFc3" class="m_custom" data-caption-align="center">
    <img src="https://img2.teletype.in/files/10/f0/10f075bc-72da-4f3c-bdee-bc85305a3f61.gif" width="394" />
    <figcaption>Удивительно, что метод ввода дня — обычный слайдер, а не что-то вроде <a href="https://qz.com/679782/programmers-imagine-the-most-ridiculous-ways-to-input-a-phone-number/" target="_blank">этого</a></figcaption>
  </figure>
  <h2 id="Kk8P">IV. Платная реклама</h2>
  <p id="UO5S">Дизайнер задумался. Если в большинстве игр есть функция отключения рекламы, то почему бы не пойти от обратного? Пусть игрок платит за возможность посмотреть рекламу, ведь просмотр рекламы:</p>
  <ol id="VNG2">
    <li id="UDHj">Увлекательное занятие;</li>
    <li id="Arbd">Даёт различные бонусы. </li>
  </ol>
  <figure id="G4r5" class="m_column" data-caption-align="center">
    <img src="https://img2.teletype.in/files/9b/70/9b70899a-9740-48c5-8e42-0b97829563a4.png" width="2880" />
    <figcaption>Экран покупки рекламы</figcaption>
  </figure>
  <p id="57HO">Теперь, если игрок ввел неправильно значение в мини-игре ежедневного бонусы и решил восстановить свой прогресс через просмотр рекламы, то ему придётся перед этим ещё и купить возможность её посмотреть.</p>
  <h2 id="AHAZ">V. Умная реклама</h2>
  <p id="YYRW">Как заботливый разработчик, дизайнер решил убедиться, что пользователь внимательно посмотрел рекламу. В связи с чем, после каждого просмотра появляется окошко, в котором игрок должен выбрать тему только что просмотренный рекламы.</p>
  <figure id="IWgF" class="m_column" data-caption-align="center">
    <img src="https://img3.teletype.in/files/ed/0d/ed0d6a48-a50e-4e07-8a89-f07ac7d5174d.png" width="2880" />
    <figcaption>Экран выбора темы рекламы</figcaption>
  </figure>
  <ul id="7oW1">
    <li id="jq1J">Если игрок ответил правильно, то просмотр рекламы засчитывается;</li>
    <li id="eStu">Иначе предлагается посмотреть рекламу ещё раз на тех же условиях, в случае отказа просмотр не засчитывается.</li>
  </ul>
  <figure id="sCAb" class="m_original" data-caption-align="center">
    <img src="https://www.meme-arsenal.com/memes/be330beccc561d20b83f248ebcaadfca.jpg" width="300" />
    <figcaption>Разработчиик после внедрения всех этих фич</figcaption>
  </figure>
  <h2 id="EJwQ">Заключение</h2>
  <p id="uDf1">Вот и всё! Пять «гениальных» фич, которые повысили доход проекта в раз и он даже превзошел Diablo.</p>
  <p id="DesD"><strong>Конечное же, всё это шутки и сатира. Это совершенно ужасные примеры, которые ни к чему хорошему не приведут. Пожалуйста, не делайте так.</strong></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@chaoticgamedesign/radarchart</guid><link>https://teletype.in/@chaoticgamedesign/radarchart?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign</link><comments>https://teletype.in/@chaoticgamedesign/radarchart?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign#comments</comments><dc:creator>chaoticgamedesign</dc:creator><title>Radar Chart and Its Power</title><pubDate>Thu, 23 Jun 2022 08:19:52 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/22/f4/22f41b96-e596-46c4-a769-37377c3f91e5.png"></media:content><category>таблицы</category><description><![CDATA[<img src="https://img4.teletype.in/files/3a/13/3a13c768-1b4d-4dae-9f2c-2e8f61d1f925.jpeg"></img>Вы когда-нибудь слышали про лепестковые диаграммы (aka web chart, spider chart, star plot, cobweb chart, irregular polygon, polar chart, и Kiviat diagram). Если да, то круто! Нет? Тогда присаживайтесь, сейчас разберемся, что это такое и когда пригождается.]]></description><content:encoded><![CDATA[
  <p id="xGe2">Вы когда-нибудь слышали про лепестковые диаграммы (<em>aka web chart, spider chart, star plot, cobweb chart, irregular polygon, polar chart, и Kiviat diagram</em>). Если да, то круто! Нет? Тогда присаживайтесь, сейчас разберемся, что это такое и когда пригождается.</p>
  <p id="2EPq">Предположим, что у нас в игре есть некая сущность с каким-то набором характеристик, и игроку надо показать какая сущность в чём лучше, в чём хуже, а ещё желательно посчитать «крутости» сущностей.</p>
  <p id="5k5o">Тут нам на помощь и приходит такой вид графика, потому что с его помощью легко визуализировать набор характеристик сущности и в последствии использовать для сравнения.</p>
  <nav>
    <ul>
      <li class="m_level_1"><a href="#dlol">Подготовительные работы</a></li>
      <li class="m_level_1"><a href="#67tp">Построение диаграммы</a></li>
      <li class="m_level_1"><a href="#57rO">Power</a></li>
      <li class="m_level_1"><a href="#MNbi">Заключение</a></li>
    </ul>
  </nav>
  <figure id="6mEG" class="m_column" data-caption-align="center">
    <img src="https://img4.teletype.in/files/3a/13/3a13c768-1b4d-4dae-9f2c-2e8f61d1f925.jpeg" width="1280" />
    <figcaption>Например, в каждой из игр серии Pokemon можно встретить такую диаграмму.</figcaption>
  </figure>
  <h2 id="dlol">Подготовительные работы</h2>
  <p id="DgLu">Пусть в выдуманном проекте буду роботы (<em>кхе-кхе, это уже классика примеров, надо придумать что-то ещё</em>), у каждого из которых есть статы:</p>
  <ol id="p5EG">
    <li id="8j0e"><em>HPs</em> — здоровье;</li>
    <li id="5NIL"><em>DEF</em> — защита;</li>
    <li id="iQrz"><em>SPD</em> — скорость;</li>
    <li id="PlnR"><em>DMG</em> — урон;</li>
    <li id="kMEO"><em>DEX</em> — ловкость.</li>
  </ol>
  <figure id="bGXN" class="m_column" data-caption-align="center">
    <img src="https://img1.teletype.in/files/c1/76/c176b716-0b26-44b8-92f8-cdb2b1e66a09.png" width="1372" />
    <figcaption>Несколько выдуманных роботов</figcaption>
  </figure>
  <p id="obNL">Выделяем нужные значения и строим <strong>лепестковую диаграмму</strong>:</p>
  <figure id="a1iJ" class="m_custom" data-caption-align="center">
    <img src="https://img1.teletype.in/files/03/e2/03e20775-5499-477c-8b0d-4a9fbc27a4b0.png" width="580" />
    <figcaption>Диаграмма</figcaption>
  </figure>
  <p id="bT5t">Однако есть огромная проблема. У величин разные максимальные и минимальные значения, то есть <em>DMG</em> может быть в один пределах, а <em>SPD</em> в совершенно других. В случае примера:</p>
  <ol id="uIo8">
    <li id="RUtT"><em>HPs</em>: [50; 100];</li>
    <li id="eDE9"><em>DEF</em>: [10; 200];</li>
    <li id="bBTp"><em>SPD</em>: [1; 10];</li>
    <li id="ZTCH"><em>DMG</em>: [100; 1000];</li>
    <li id="Vbtz"><em>DEX</em>: [1; 10];</li>
  </ol>
  <p id="P7j4">Соответственно, если оставить всё как есть, то график будет выглядеть криво, так как <em>DMG</em> будет всегда выделяться, а <em>SPD</em> и <em>DEX</em> будут совершенно незаметны. Следовательно, надо перейти к относительными величинам. Будем считать, какой % составляет каждая из величин от её отрезка допустимых значений:</p>
  <p id="hxOy" data-align="center"><em>value - minValue / maxValue - minValue</em></p>
  <ul id="mLD2">
    <li id="3Imn"><em>value</em> — конкретное значение величины;</li>
    <li id="6q2J"><em>minValue</em> — минимальное значение, например, у <em>DEX</em> оно 1;</li>
    <li id="rMsj"><em>maxValue</em> — максимальное, например, у <em>SPD</em> оно 10.</li>
  </ul>
  <p id="EscD">Например, если <em>HPs</em> = 75, то его относительно значение - 50%.</p>
  <p id="QWhh">Как определять минимальное и максимальное значения остается на откуп дизайнера. В примере они заданы ручками, а можно, например, искать минимум и максимум каждой из величин среди всех сущностей.</p>
  <p id="BG9e">Теперь в таблице есть 2 листа:</p>
  <ol id="dZtP">
    <li id="rSyN"><em>Robots</em>. Содержит роботов, у каждого есть брат, который отражает относительные значения величин.</li>
    <li id="zMYP"><em>Stats</em>. Содержит статы.</li>
  </ol>
  <figure id="ncft" class="m_column" data-caption-align="center">
    <img src="https://img1.teletype.in/files/82/c7/82c7dc46-9485-467c-ab7f-8f0cfc07053f.png" width="1374" />
    <figcaption>Лист с роботами</figcaption>
  </figure>
  <figure id="TJ3J" class="m_custom" data-caption-align="center">
    <img src="https://img3.teletype.in/files/25/43/25435739-5e5c-46e4-aacb-771b43f39ccc.png" width="409.00000000000006" />
    <figcaption>Лист с характеристиками</figcaption>
  </figure>
  <p id="fqUM">Если инженеры должны делать гибкий код, то дизайнеры — гибкие таблицы, поэтому было сделано следующее:</p>
  <ol id="SR1W">
    <li id="B7qX">Именованный диапазон характеристик <em>StatsData;</em></li>
    <li id="PIWo">Дублирующие данные диапазона <em>StatsData</em> на листе роботов через <em>=ТРАНСП(StatsData), </em>так как данные используются для расчета относительных значений, а огромное число <em>=VLOOKUP</em> не очень хорошо; </li>
    <li id="sH1Y">Общая формула для расчета всех относительных значений, <em>=ARRAYFORMULA(ЕСЛИ(D6:6 &gt; 0; ОКРУГЛ((D6:6 - D$2:$2) / (D$3:$3 - D$2:$2); 2); &quot;&quot;))</em>, то есть мы считаем не каждую характеристику по отдельности, а берем всю строку и делаем с ней одинаковые действия, а именно:</li>
    <ol id="Loca">
      <li id="y5zS">Проверяем, что абсолютные значения больше 0;</li>
      <li id="seo3">Если всё ок, то считаем какой процент составляет каждая из характеристик из соответствующего ей диапазона;</li>
      <li id="ivFS">Иначе пустая строчка.</li>
    </ol>
    <li id="MXyT">Специальное выделение для столбца <em>ID</em>, так как оно считается само;</li>
    <li id="gF8L">Особое обозначение имён дополнительных роботов, начинающиеся с «#».</li>
  </ol>
  <p id="39K0">Важные моменты:</p>
  <ol id="Dou8">
    <li id="InFJ">Специальные выделения стоит фиксировать, например, в условном <em>Sheets Style Guide</em>; </li>
    <li id="SjH1">Особое символы дублирующих или расчетных данных также стоит фиксировать;</li>
    <li id="tYyT">Всё это было сделано лишь для того, чтобы при добавлении/удалении характеристики ничего не могло сломаться;</li>
    <li id="qv27">Дополнительные данные по-умолчанию скрыты;</li>
    <li id="1Yca">На абсолютные значения были накинуты кастомные проверки вида <em>=ЕСЛИ(И(C4 &gt;= C$2; C4 &lt;= C$3); 1; 0)</em>, то есть значение должно попадать в отрезок допустимых<em>.</em></li>
  </ol>
  <p id="C0Zx">Кстати, для удобства добавления роботов стоит сделать отдельный макрос, который будет создавать пустышку-робота и его относительные данные, а сразу после их прятать. Пример его использования будет ниже.</p>
  <h2 id="67tp">Построение диаграммы</h2>
  <p id="l6ne">Подготовительные работы завершены. Теперь построим сводную таблицу, где будут только необходимые значения, то есть отфильтруем все данные с диапазона роботов: будем использовать только те, что начинаются с &quot;#&quot;. Далее выделяем данные и строим <strong>лепестковую диаграмму</strong>.</p>
  <figure id="pKrh" class="m_column" data-caption-align="center">
    <img src="https://img1.teletype.in/files/c4/58/c4581567-da3e-4a52-9e21-065801d7d20c.png" width="2526" />
    <figcaption>Пример диаграммы</figcaption>
  </figure>
  <p id="y2zm">По настройкам диаграммы:</p>
  <ol id="OAin">
    <li id="54dw">Строки/столбцы включены (в нашем случае);</li>
    <li id="VxcG">Сглаживание отключено в стиле диаграммы.</li>
  </ol>
  <p id="sW8I">Готово! У нас есть диаграмма, через которую мы можем сравнивать роботов или смотреть на их характеристики в более удобном виде.</p>
  <h2 id="57rO">Power</h2>
  <p id="0k8e">Бывают ситуацию, когда игроку надо сравнить две сущности, и часто для такого используется некий сводный параметр, частно называемый <em>Power</em>. В случае, когда визуализация характеристик происходит посредством лепестковой диаграммы, логично посчитать площадь каждого получившегося многоугольника.</p>
  <p id="ByT1">Для расчета эффективности имеет смысл разбить весь получившийся многоугольник на треугольники, рассчитать площадь каждого, а потом просуммировать их.</p>
  <figure id="MVph" class="m_column" data-caption-align="center">
    <img src="https://img1.teletype.in/files/43/b1/43b1c927-03dd-43a1-8bbf-8feb5f301664.png" width="2042" />
    <figcaption>Один из треугольник на диаграмме </figcaption>
  </figure>
  <p id="quYF">Каждый треугольник образуется двумя соседними характеристиками, например, <em>HPs</em> и <em>DEF</em>. Его площадь посчитаем по формуле двух сторон и угла между ними:</p>
  <ol id="GO6v">
    <li id="12E5">Синус угла находим через количество характеристик <em>N</em>. =<em>SIN(РАДИАНЫ(360/N))</em>, так как весь круг, то есть 360° разбивается на <em>N</em> равных частей;</li>
    <li id="Bd5k">Стороны — значения характеристик;</li>
    <li id="hk1y">Перемножаем величины из предыдущих пунктов, делим на два, получаем площадь одного треугольника. Осталось так сделать с каждыми соседними характеристиками, то есть треугольниками.</li>
  </ol>
  <figure id="6lHk" class="m_column" data-caption-align="center">
    <img src="https://img3.teletype.in/files/29/e2/29e2a65d-26f3-462b-9980-85648fd0ab7e.png" width="1548" />
    <figcaption>Формула для мощности</figcaption>
  </figure>
  <p id="Otz4">Важно понимать, что полученный <em>power</em> стоит показывать игроку, но использовать его в реальных расчетах может быть не так эффективно, так как не все характеристики могут быть равноценны и независимы.</p>
  <p id="RL4J">В процессе проценты стали просто числами, но сути это не меняет. Теперь точно всё!</p>
  <p id="kdJ0"><a href="https://docs.google.com/spreadsheets/d/1LqtmbtJItBDIRkNT1JQJ0iFx0G6nzPDUoRlvAqHjG1M/edit?usp=sharing" target="_blank">Таблица доступна по ссылке.</a></p>
  <p id="TrpJ">Определенно в таблице есть минусы, например, отсутствие истории обновлений, фильтра по роботам и так далее... но идея раскрыта.</p>
  <figure id="co0k" class="m_column" data-caption-align="center">
    <img src="https://img1.teletype.in/files/02/43/0243efa2-a8f1-43d2-9ec4-1d92adaede31.gif" width="1916" />
    <figcaption>Пример работы макроса</figcaption>
  </figure>
  <h2 id="MNbi">Заключение</h2>
  <p id="q3ia">Знание о существовании такого вида диаграммы может пригодиться, потому что она сильно упрощает визуализацию характеристик и мощи сущности. Игрок может бегло посмотреть на диаграмму и понять, какие есть слабые / сильные стороны у объекта или в чём он уступает другому объекту.</p>
  <p id="AT9d">Однако, у неё есть определенные минусы:</p>
  <ol id="GVvb">
    <li id="pKml">Наличие большого количества переменных создает много осей, что делает диаграмму сложной для восприятия;</li>
    <li id="BsQo">Нахождение нескольких сущностей на одной диаграмме делает ее трудночитаемой, поэтому обычно используют не более 3;</li>
    <li id="lQtO">Трудности могут возникнуть при сравнении значений на разных осях, поскольку они могут иметь различную шкалу абсолютного измерения и вносить разный вклад в настоящую эффективность сущности, даже несмотря на то, что в примере мы их нормализовали.</li>
  </ol>
  <p id="zMwh">Примеры в реальных проектах:</p>
  <figure id="srbE" class="m_column" data-caption-align="center">
    <img src="https://img1.teletype.in/files/0b/cd/0bcd35f5-6724-4e35-b0ba-6c86b16f0069.jpeg" width="1280" />
    <figcaption>Final Fanasy VII The First Soldier</figcaption>
  </figure>
  <figure id="B0kK" class="m_column" data-caption-align="center">
    <img src="https://img3.teletype.in/files/67/33/67338af1-901b-46fd-9afe-2ca7ff0d3470.jpeg" width="960" />
    <figcaption>Tales of Zestiria</figcaption>
  </figure>
  <figure id="yz3c" class="m_column" data-caption-align="center">
    <img src="https://img1.teletype.in/files/80/d9/80d960f4-4fb5-46ac-bb05-9001940ffa1e.jpeg" width="1280" />
    <figcaption>Forza Horion 5</figcaption>
  </figure>
  <p id="ddfY">Примеров ещё много: <em>PUBD, FIFA, Stellaris, Tennis Manager, Captain Tsubasa, etc</em>. В некоторых из них, например, в <em>Wild Rift</em>, используется как отображение стиля игры игрока.</p>
  <figure id="JBLC" class="m_column" data-caption-align="center">
    <img src="https://img3.teletype.in/files/e7/ec/e7ecb175-aa10-4576-9c44-0dabf655b8a9.jpeg" width="1024" />
    <figcaption>Wild Rift</figcaption>
  </figure>
  <p id="WbFR">Теперь точно всё! Графиков сегодня было много, самое время поиграть в какой-нибудь тайкун, где их будет не меньше, например, в <em><a href="https://store.steampowered.com/app/1220140/Cartel_Tycoon/" target="_blank">Cartel Tycoon</a></em>.</p>
  <blockquote id="uh0y">Сюжетный бизнес-симулятор Cartel Tycoon вдохновлен историей наркоторговли в 80-х годах. Расширяйте свою сеть и поглощайте другие, не привлекая внимания конкурентов и властей.</blockquote>
  <figure id="coX0" class="m_column" data-caption-align="center">
    <img src="https://gamazavr.ru/media/products/product/14818702/screenshot_1920_1080_5MkLJ54.jpg" width="1920" />
    <figcaption>Г Р А Ф И К И</figcaption>
  </figure>
  <p id="hef6"><a href="https://t.me/chaoticgamedesign" target="_blank">by Chaotic Game Design</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@chaoticgamedesign/configsmap</guid><link>https://teletype.in/@chaoticgamedesign/configsmap?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign</link><comments>https://teletype.in/@chaoticgamedesign/configsmap?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign#comments</comments><dc:creator>chaoticgamedesign</dc:creator><title>Configs Map</title><pubDate>Tue, 21 Jun 2022 08:55:44 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/f6/81/f681f1a5-be85-424b-89ac-bce9cfe24688.png"></media:content><category>документация</category><description><![CDATA[<img src="https://telegra.ph/file/c349c8c7b91957ab0c11a.png"></img>Дизайнеры испокон веков были покорным слугами разработчиков: тз, диздок, карта экранов, мокап экрана и так далее. Всё это очень нужно и важно иметь на проекте. Однако меня всегда удивляло, что дизайнеры часто забывают про своё удобство. Документация отличная, в Unity всё удобно разложено по папкам, а вот конфиги… С конфигами чаще всего беда. Представьте, что вы пришли на проект, в котором более десятка различных таблиц с огромным числом зависимостей и ваша задача разобраться во всём этом. Тут на помощь и приходит карта конфигов.]]></description><content:encoded><![CDATA[
  <p id="JOoG">Дизайнеры испокон веков были покорным слугами разработчиков: тз, диздок, карта экранов, мокап экрана и так далее. Всё это очень нужно и важно иметь на проекте. Однако меня всегда удивляло, что дизайнеры часто забывают про своё удобство. Документация отличная, в Unity всё удобно разложено по папкам, а вот конфиги… С конфигами чаще всего беда. Представьте, что вы пришли на проект, в котором более десятка различных таблиц с огромным числом зависимостей и ваша задача разобраться во всём этом. Тут на помощь и приходит карта конфигов.</p>
  <figure id="eZwd" class="m_column" data-caption-align="center">
    <img src="https://telegra.ph/file/c349c8c7b91957ab0c11a.png" width="1808" />
    <figcaption>Если вы ожидали такую карту, то можете смело закрывать статью</figcaption>
  </figure>
  <p id="nIdh">Перед тем как ответить на вопрос, а что же за зверь такой - карта конфигов, сделаем пару шагов назад, а потом шаг в сторону и окажемся на пути разработчиков. Они часто имеют дело с <strong>базами данных </strong>- набором связанных таблиц через установленные отношения-правила (это не всегда так, но опустим детали). Таблица - это сущность, отношения - связи, так получается система, которую можно визуализировать в виде блок схемы:</p>
  <figure id="AXEV" class="m_column" data-caption-align="center">
    <img src="https://telegra.ph/file/365532a103714642a8a88.png" width="2021" />
    <figcaption>ERD БД Олимпийских Игр</figcaption>
  </figure>
  <p id="vEb6">Выше показан пример диаграммы, которая отражает систему олимпийских игр. Есть сущности (таблицы): человек, событие, игры и так далее, а между ними связи. Связи нас интересует меньше, потому что используется более сложная нотация, чем нам нужна.</p>
  <p id="D8O8">Теперь делаем шаги в обратном направлении и порядке, чтобы снова попасть на путь дизайнеров. Главное по дороге не потерять только что полученные знания, о том, как можно визуализировать БД.</p>
  <p id="CaXW">Представим, что мы делаем простенький Tower Defense, в котором игрок должен проходить уровни, состоящие из волн врагов. Наши конфиги:</p>
  <ol id="KR6h">
    <li id="YHpr">Missions - таблица миссий</li>
    <li id="e1S7">Locations - таблица локаций</li>
    <li id="vbSH">Enemies - таблица врагов</li>
    <li id="t3Mq">Behaviours - таблица поведений</li>
  </ol>
  <p id="JPah">Миссия состоят из волн, которые в свою очередь состоят из спавнов врагов. Каждый враг обладает каким-то поведением и характеристиками, а также миссия разворачивается на какой-то локации. Визуализируем:</p>
  <ol id="hiZt">
    <li id="qtMU">Таблицы - mind maps (в случае <a href="https://miro.com/app/dashboard/" target="_blank">Miro</a>)</li>
    <li id="gVU4">Столбцы (или строки?) таблицы - ветви mind map</li>
    <li id="siZE">Зависимости - стрелки с указанием от чего к чему и что вписывать</li>
    <li id="tJBe">Около карт ещё удобно оставлять заметки, чтобы подсветить наиболее важные и неочевидные моменты</li>
  </ol>
  <figure id="jR4v" class="m_retina" data-caption-align="center">
    <img src="https://telegra.ph/file/a9c19f61ccdbd9ca9af62.png" width="1041" />
    <figcaption>Configs Map для выдуманного проекта</figcaption>
  </figure>
  <p id="khZ1">Вуаля, теперь онбординг нового дизайнера будет происходить быстрее, а ему будет проще разобраться в конфигах, потому что зависимости между ними раскрыты и визуализированы. Конечно же, это не отменяет того, что в ГДД должны быть описаны конфиги, которые используются.</p>
  <p id="xlPC">Кстати, минутка интересных фактов из мира математики. Самая первая карта в заметке покрашена в 4 цвета не просто так - именно этого количества цветов достаточно, чтобы никакие соседние области не имели одинаковой раскраски. Подробнее про теорему (да-да, это теорема) можно почитать в <a href="https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%BE_%D1%87%D0%B5%D1%82%D1%8B%D1%80%D1%91%D1%85_%D0%BA%D1%80%D0%B0%D1%81%D0%BA%D0%B0%D1%85" target="_blank">википедии</a>, а прикладную часть <a href="https://habr.com/ru/post/346710/" target="_blank">вот тут</a>. Если кто-то вдруг очень заинтересовался, то рекомендую к прочтению книгу профессора Стюарта «<em>Невероятные Числа</em>» (<em>Professor Stewart&#x27;s Incredible Numbers</em>). Каждая глава книги посвящена какому-то числу, так в главе 4 (про число 4 соотвественно) поднимается и эта теорема.</p>
  <figure id="rnDp" class="m_column" data-caption-align="center">
    <img src="https://telegra.ph/file/0cb6c5c356a1c7850f15b.png" width="2658" />
    <figcaption>Пара страниц из книги</figcaption>
  </figure>
  <p id="709M">Кто куда, а я пойду играть в <em>Mini Metro</em>. Буду считать, что станции - это конфиги, перегрузку которых нельзя допустить, а пассажиры - новые дизайнеры на проекте, которые и пытаются разобраться во всех тонкостях местных таблиц.</p>
  <figure id="ST8t" class="m_column" data-caption-align="center">
    <img src="https://telegra.ph/file/3ebbd00164182afb96739.png" width="1920" />
    <figcaption>Система конфигов в какой-нибудь ММО</figcaption>
  </figure>
  <p id="9t5Z"><a href="https://www.databasestar.com/sample-database-olympic-games/" target="_blank">Источник примера ERD</a></p>
  <p id="LX3u">by <a href="https://t.me/chaoticgamedesign" target="_blank">Chaotic Game Design</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@chaoticgamedesign/googlesheetsnightmare</guid><link>https://teletype.in/@chaoticgamedesign/googlesheetsnightmare?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign</link><comments>https://teletype.in/@chaoticgamedesign/googlesheetsnightmare?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=chaoticgamedesign#comments</comments><dc:creator>chaoticgamedesign</dc:creator><title>Google Sheets Nightmare</title><pubDate>Mon, 20 Jun 2022 18:12:52 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/64/1e/641e396c-177d-4cbc-a7d9-6364a32bbc01.png"></media:content><category>таблицы</category><description><![CDATA[<img src="https://img2.teletype.in/files/52/11/521101f2-fc96-4c92-be19-c88888cce689.jpeg"></img>Многие из гейм-дизайнеров целыми днями сидят в таблицах. После рабочего дня они идут заниматься своими делами, а потом наступает время сна. Естественно дизайнеры видят сны про таблицы: идеальный баланс, корректно построенные графики, удобные макросы… но иногда снятся кошмары. Жуткие сны с ужасными таблицами.]]></description><content:encoded><![CDATA[
  <p id="jONd">Многие из гейм-дизайнеров целыми днями сидят в таблицах. После рабочего дня они идут заниматься своими делами, а потом наступает время сна. Естественно дизайнеры видят сны про таблицы: идеальный баланс, корректно построенные графики, удобные макросы… но иногда снятся кошмары. Жуткие сны с ужасными таблицами.</p>
  <figure id="iB8z" class="m_custom" data-caption-align="center">
    <img src="https://img2.teletype.in/files/52/11/521101f2-fc96-4c92-be19-c88888cce689.jpeg" width="302.00000000000006" />
    <figcaption>Типичный кошмар про таблицы.</figcaption>
  </figure>
  <p id="7h7k">Например, как-то раз я видел сон, в котором начинающий дизайнер начал строить таблицу с середины листа. Таблицу естественно он переименовывать не стал, ведь всем очевидно, что «<em>Новая Таблица 0456</em>» — это та самая таблица.</p>
  <figure id="5OLa" class="m_column" data-caption-align="center">
    <img src="https://telegra.ph/file/c064e102851e690cf3f83.png" width="2786" />
    <figcaption>Начальная таблица.</figcaption>
  </figure>
  <p id="MH1E">Сразу за этим последовало прекрасное форматирование:</p>
  <ol id="G4gk">
    <li id="EhJX">Яркая заливка ячеек;</li>
    <li id="45hE">Модные шрифты;</li>
    <li id="PXT2">Разный кегель.</li>
  </ol>
  <figure id="rseT" class="m_column" data-caption-align="center">
    <img src="https://telegra.ph/file/6d2195744868d15feb140.png" width="2786" />
    <figcaption>Таблица начинает преобразоываться.</figcaption>
  </figure>
  <p id="HdtX">Задача на день была простая: сравнить эффективность роботов (не будем уходить от классики). Урон и здоровье каждого известны. Формула знакома каждому джуну — просто перемножаем величины, чтобы получить мощь.</p>
  <p id="jST9">Однако у нашего коллеги возникла гениальная идея. Он добавил в формулу магические преобразования, а потом написал очень полезное примечание, которое всё расставило на свои места. Округлять значения не надо, ведь, чем больше знаков после запятой, тем лучше. Кстати, тоже самое можно сказать и про формулы — чем больше магических преобразований, тем точнее баланс.</p>
  <figure id="G0Ou" class="m_column" data-caption-align="center">
    <img src="https://telegra.ph/file/f4fa979a6937ac35ef135.png" width="2786" />
    <figcaption>Таби с посчитанной мощью. Внимание на формлу и примечание.</figcaption>
  </figure>
  <p id="4gdp">Ох, точность и класс робота были забыты! Ничего, сейчас всё будет исправлено. Точность (<em>Accuracy</em>) измеряется в проекте от 0 до 1, и есть 3 класса: <em>Light</em>, <em>Medium</em> и <em>Heavy</em>. В зависимости от класса конечная мощь умножается на определенный коэффициент, а урон умножается на точность.</p>
  <figure id="YZf4" class="m_column" data-caption-align="center">
    <img src="https://telegra.ph/file/fe3bbd9ae6df03bf38b90.png" width="2788" />
    <figcaption>Таблица с классами и точностью. Некоторые значения специально выделены.</figcaption>
  </figure>
  <p id="AXus">В спешке автор сокращает <em>Accuracy</em> до <em>ACR</em>, ведь какая разница, а на поля не вешает валидацию, ведь зачем оно надо? ошибок то не будет! Хотя, если приглядеться, то можно заметить, что в <em>ACR</em> проскочила двойка (<em>G9</em>), а в <em>Class</em> какой-то новый класс (<em>I14</em>). Формула расчета стала больше, может быть стоило разделить её на несколько строк? Ну, нет, еще терпит. Роботов, кстати, тоже стало больше, но закреплять строку автор не решился. Да и тем более, она по середине листа.</p>
  <p id="M8BF">Переход к заключительному этапу — сравнению мощностей. Это было решено сделать через относительное сравнение каждого робота с самым мощным. Сказано — сделано.</p>
  <figure id="Sx2H" class="m_column" data-caption-align="center">
    <img src="https://telegra.ph/file/bea9b7cecff5f0a5b0828.png" width="2788" />
    <figcaption>В таблице полявляются дополнительные поля и диаграмма. </figcaption>
  </figure>
  <p id="Q9dC">Наш персонаж находит максимум (на всякий еще и минимум) через стандартные функции, применяя их к диапазону. Можно было бы использовать именованные диапазоны (<em>named ranges</em>), но это как-то сложно непонятно да и зачем? Диаграмма строится по щелку пальца, кажется, что видоизменять её смысла нет, всё легко читается.</p>
  <p id="wdSl">Потребовалось сравнить легких роботов. Было решено создать дополнительный лист, который называется «<em>Лист2</em>», а на нем своего рода сводную таблицу.</p>
  <ol id="FlvF">
    <li id="hTFR">С «<em>Лист1</em>»перетащить нужные данные с помощью <em>=ARRAYFORMULA</em>;</li>
    <li id="kQhz">Создать столбец <em>Flag</em>, который проверят, что класс равен легкому;</li>
    <li id="Qo3o">Пересчитать <em>Result</em>;</li>
    <li id="1vB8">Покрасить всё в модные цвета.</li>
  </ol>
  <figure id="JJ9B" class="m_column" data-caption-align="center">
    <img src="https://telegra.ph/file/2f6e286e1187484da0f75.png" width="2788" />
    <figcaption>Своего рода сводная таблица.</figcaption>
  </figure>
  <p id="72yN">Дизайнер допускает небольшую ошибку, забывая, что сравнивает легких не между собой, а с самым крутым роботом в игре, который, кстати, не легкий, но ничего страшного! Может быть это была такая задача... На этом он заканчивает свой рабочий день и счастливый идет заниматься своими делами.</p>
  <p id="BBjN">Я же проснулся весь в поту, потому что такой кошмар давно не снился. Сразу же зашел в таблицы и сделал свою версию, где:</p>
  <ol id="DgV9">
    <li id="0bBL">Адекватные названия листов;</li>
    <li id="ItTn">Простое форматирование;</li>
    <li id="hGUG">Отдельные листы для важных сущностей/абстракций, например, классов;</li>
    <li id="65IS">Понятные формулы и примечания к ним.</li>
  </ol>
  <p id="xnow">Кстати, сами формулы баланса могут быть сложные, но не стоит с ними мудрить, а уж тем более использовать магические коэффициенты. Если они выходят на несколько строк, то не поленитесь их разбить на логические блоки, чтобы их было проще читать. Всё объясняйте!</p>
  <figure id="8JCY" class="m_column" data-caption-align="center">
    <img src="https://telegra.ph/file/e22ebce1658daa6fb55f1.png" width="2788" />
    <figcaption>Мой вариант таблицы.</figcaption>
  </figure>
  <p id="giWs">Таким образом, я использовал:</p>
  <ol id="xcMG">
    <li id="TqAf">Закреплние строки;</li>
    <li id="4ewS">Проверку данных в нужных столбцах;</li>
    <li id="oZOW">Именованные диапазоны в формулах;</li>
    <li id="g35z">Филтр.</li>
  </ol>
  <p id="d1Be">Кстати, проверка данных подсветила ошибки. Фильтр же просто частенько может пригодиться, для него я ещё специально сделал столбец <em>ID</em>.</p>
  <p id="4uDc">Далее создал сводную таблицу через заложенный функционал, поэтому, например, её форматирование не было изменено. Многие привыкли к такому, поэтому пусть так и будет.</p>
  <figure id="6BOD" class="m_column" data-caption-align="center">
    <img src="https://telegra.ph/file/3d887caa8333ac4a77e35.png" width="2788" />
    <figcaption>Сводная таблица. Шутка про неё: «A pivot table walks into a bar and orders a beer. It says, “Put me in the same tab, will ya?”».</figcaption>
  </figure>
  <p id="5Zue">Заодно я разделил листы по цвету и листу со сводной таблицей приписал <em>PT</em> (<em><strong>P</strong>ivot <strong>T</strong>able</em>), но что же такое <em>Update Log</em>? Это просто лист, в котором удобно обозначать изменения, которые были внесены в таблицу. Если в офлайн конфиге всё можно отследить через VSC (при условии, что команда пишет вменяемы коммиты), то тут чуть сложнее.</p>
  <figure id="h6Ep" class="m_column" data-caption-align="center">
    <img src="https://img2.teletype.in/files/9c/b4/9cb4b7aa-4e58-4eb0-be36-af526ef009db.gif" width="2788" />
    <figcaption>Использование макроса.</figcaption>
  </figure>
  <p id="kWNR">На этом у меня всё! Кстати, я сам мог допустить где-то ошибки и/или что-то сделать лучше, но это всё было сразу после сна :D</p>
  <p id="i3K9"><a href="https://docs.google.com/spreadsheets/d/13_k7kKtCV0VUGb6-o9FiieIJN50sHlCu1j_-P3TeSmw/edit?usp=sharing" target="_blank">Таблицы можно посмотреть тут.</a></p>
  <p id="Xq71">Любите таблицы и уважайте своих коллег.</p>
  <p id="hHt3">Во что же можно поиграть? Я мог бы посоветовать <em>EVE Online</em>, но это слишком банально. Кажется, что <a href="https://store.steampowered.com/app/413150/Stardew_Valley/" target="_blank"><em>Stardew Valley</em></a> — идеальный кандидат на роль игры, в которую можно играть и параллельно заполнять таблички, чтобы научиться лучше с ними работать. Вот у какого растения лучший ROI в игре?</p>
  <figure id="mGLi" class="m_column" data-caption-align="center">
    <img src="https://telegra.ph/file/77db4981801c81a251170.png" width="1920" />
    <figcaption>Ферма.</figcaption>
  </figure>
  <p id="Rkqr">Полезные материалы:</p>
  <ul id="VYYv">
    <li id="Z9NN"><a href="https://dtf.ru/pixonic/655174-kak-udobno-vesti-igrovoy-balans-i-ne-slomatsya-ot-kolichestva-yacheek-v-tablicah" target="_blank">Как удобно вести игровой баланс и не сломаться от количества ячеек в таблицах</a></li>
    <li id="vcQ9"><a href="https://dtf.ru/gamedev/84776-google-sheets-dlya-geymdizaynera-chast-1-sortirovka-dannyh" target="_blank">Google Sheets для геймдизайнера</a></li>
    <li id="qFUz"><a href="https://www.gamedeveloper.com/design/practical-tips-on-technical-game-design-documentation-part-3---spreadsheets" target="_blank">Practical tips on technical Game Design Documentation (Part 3)</a></li>
  </ul>
  <p id="6Epx"><em>PS Сон и проект естественно выдуманные.</em></p>
  <p id="1pCD"><a href="https://t.me/chaoticgamedesign" target="_blank">by Chaotic Game Design</a></p>

]]></content:encoded></item></channel></rss>