Данная статья ориентирована на школьников, студентов, и тех, кто постарше, кто никогда не пробовал, но очень хочет начать писать компьютерные игры. Кто в детстве не играл в компьютерные игры, и не хотел написать свою игру, которая будет лучше, чем GTA или Crysis? И я хотел, и, как ни странно, всё ещё хочу. И за несколько лет практики обучения таких же программированию, набралось несколько заметок, куда двигаться и что делать.

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

1. С чего начать?


С практики. Можно начать с чистой C и OpenGL/DirectX, это путь самурая, потому что обучаться этому с нуля, без каких-либо абстракций довольно сложно.

Можно воспользоваться фреймворками вроде SDL, или более высокоуровневыми LibGDX/PyGame/LOVE2D, если C/C++ кажутся слишком замороченными. Тут уровень абстракции чуть-чуть повыше, так что работать чуть проще, но всю организацию внутренней структуры игры придётся делать самостоятельно, осознавая, что такое игровой цикл и как в нём организовать систему событий. Данный подход обеспечивает неплохой уровень знаний и навыков, но, поначалу, не даёт стимула забиратсья в глубину железных дебрей.

И, наконец, можно взять игровой движок вроде Unity/Unreal/CryEngine/Godot, и сделать на нём игрушку.

Итак, как же нам выбрать из всего этого разнообразия? А ведь это только малая часть. Типовая ловушка, в которую попадает начинающий ещё-не-разработчик — это выбор инструмента. Фреймворк/движок и язык. Читается множество статей, смотрятся видеоуроки, где-то про что-то говорят отличные штуки, где-то про то же самое рассказывают гадости… Идеальной системы нет и не существует, в противном случае уже давно был бы изобретён Идеальный Игровой Движок (вместе с Идеальным Языком Программирования), и все корпорации искали бы просто «программистов», а не программистов в какой-то конкретной экосистеме. Мы просто берём тот инструмент, который лучше подходит под нашу задачу, или просто больше нравится, а человек который не может выбрать, может оставаться на том же месте на каком и был годами, без какого либо прогресса.
Так как выбрать? Мы можем просто взять первое попавшееся, и начать разбираться. Не понравилось, при использовании дольше недели-другой? Берём что-то следующее, и сразу сходу пишем что-то простое вроде змейки, попутно читая документацию к выбранному инструменту и ища в гугле всё остальное, и выписывая дизайнерский документ своей Супер Игры, которая убьёт Дьябло и Doom одновременно. Зачем же начинать с чего-то простого, когда у нас уже есть идея Супер Игры? Всё очень просто, уровень навыка начинающего разработчика всегда настолько низок, что переписывать свою Супер Игру он будет двадцать раз, результаты не будут оправдывать ожиданий, и за этой фрустрацией — полное остывание к идее написания своей игры и программирования в целом. На старте обучения, мы делаем простые вещи, которые можно сразу пощупать и тут же в них поиграть с друзьями, соревнуясь в рекордах. Это наш стимул, это наша радость от самообучения и продуктивной мозговой деятельности, это то что не даёт нам перегореть. После змейки, можно сначала посмотреть на эту змейку и попробовать её переписать «по нормальному», потому что первая змейка, даже совершенно рабочая, будет иметь монстроподобную внутреннюю структуру, изменить внешний вид змейки будет очень сложно, а добавить в неё новый бонус — ещё сложнее. А потом ещё раз переписать, или перейти уже к чему-то следующему, а то эта змейка уже в печёнках сидит. Теперь будем делать, например, шарик, отпрыгивающий от стен, которым надо попасть в кольцо, не важно, что на самом деле, была бы идея.

Есть только пара советов по выбору: на мой взгляд, не стоит брать что-то слишком низкоуровневое, потому что мы тут как бы игры пишем, а не битовые флаги перебиваем и не с указателями балуемся. С чем-то сильно низкоуровневым, очень легко уйти в далёкие дебри, и потратить несколько месяцев практически впустую. И не стоит брать что-то слишком высокоуровневое (вроде движков), потому что они дают слишком высокий уровень абстракции. Пока мы не знаем как устроены движки, нам нет особого смысла пользоваться чужими наработками, нам бы самим понять как оно устроено, потому что у всех в мире движков есть множество внутренних ограничений, с которыми в будущем придётся бороться, а у нас руки и ноги связаны недостатком информации и понимания процесса, плюс как только какая-то дыра движка протечёт, мы ничего не сможем сделать пока полностью не разберёмся в его внутренней структуре. Баланс сложности изучения и свободы действий.

2. Как учиться?


Тут нам пригодится один крайне полезный навык, под названием «гуглинг». Интернет — это огромный источник информации, который почему-то, на моей памяти, принято недооценивать, а уж вторая страница поисковика — уже что-то недосягаемое. Поэтому учимся задавать такие вопросы поисковику, чтобы он давал нужную нам выборку. В целом, на старте, сойдут видеоуроки. А ещё можно учебников почитать. У видеоуроков есть преимущество в том, что они сразу дают осязаемый результат в сжатые сроки, что очень полезно для мотивации, но в них есть большие проблемы с полнотой информации, поэтому учебники и документацию никто не отменял. Примеры кода можно искать и смотреть на гитхабе, это крайне полезное занятие, из которого можно подчерпнуть не меньше, чем из учебников. Смотрим всё непонятное в чужом коде, и ищем в сети, что же это тут только что было. Потом используем (или нет, хе-хе). Воровство идей и концепций только поощряется (если код был под свободной лицензией). Если что-то прям совсем сложное, но очень нужное — не возбраняется обращаться к другим людям на форумах и в чатах, но этим способом очень легко начать злоупотреблять, поэтому не желательно и только если совсем припечёт, и несколько часов грамотного поиска остались безуспешными. Из областей математики очень советую прочитать и осознать векторную алгебру, аналитическую геометрию, теорию вероятности и ещё очень много умных слов, благо это довольно универсальные области, полезные не только в играх. Из языков — очевидный английский, большая часть документации написана на английском языке. Пользоваться переводчиками не возбраняется. Опять-таки, нам тут нужнее всего научиться учиться и искать информацию, это пригодится везде и всегда, не только в данной области. Тем не менее, обучение не должно затмевать практику и наоборот. Желательно держать соотношение времени между написанием и изучением на уровне 20/80, и то, практику можно только добавлять, вечные студенты — это хорошо, но непрактично. Балансируем время.

3. Захотелось чего-то посерьёзнее?


После прошлого этапа и нескольких (десятков) прототипов игр, мы уже научились сносно писать, может даже с не очень большим количеством вложенных if-elseif-elseif. Мы нашли и прочитали несколько десятков чужих проектов, и пусть половины не поняли — это всё равно не очень страшно, ведь мы уже кажется готовы делать что-то серьёзное, вроде Супер Игры? Придержим коней. У нас есть несколько прототипов, и они даже отлично играются, но мы пока даже не попробовали закончить свою работу. Как только что-то становилось более-менее работающим, мы просто переходили к чему-то более интересному, но нас ещё ждёт крайне суровый этап, на котором ломаются очень многие (и я в том числе, хе-хе): создание Законченного Проекта. Чем он отличается от наших прототипов? А вот чем: Законченный Проект — это тот же самый прототип, но над которым просидели в три раза дольше чем делали прототипную часть, сделали все менюшки, настройки, проверили что оно нормально работает на разных разрешениях экрана и с разными клавиатурами, там есть хотя бы десяток уровней или выбор уровня сложности, чтобы в это было интересно играть не только автору и его друзьям, но и случайным людям в школе или университете. Самая рутинная часть, что сказать, но самая полезная, и очень хорошо тренирует волю к победе. Если не пройти этот этап, можно на всю жизнь остаться писателем прототипов. Балансируем себя в рутине и интересностях.

4. Где искать библиотеки?


Если внимательно прочитать второй пункт, ответ становится вроде бы очевидным: в сети, в репозиториях и от других людей. И как бы всё хорошо, мы экономим время и сразу делаем что-то крутое. Но пока мы учимся и у нас есть время, и мы имеем возможность строить велосипеды — грех не воспользоваться случаем. Если чтение учебников и статей, и просмотр уроков это расширение наших знаний, то написание собственных библиотек — углубление, причём сразу по нескольким фронтам: реализация удобных API (отсечение лишнего и баланс производительности и удобства использования), углубление и исследование внутренностей нашей языко-железной экосистемы, и создание небольших законченных модулей, даже если они частично дублируют функционал уже существующих. Но тут главное — не зацикливаться. Мы же всё-таки игры пишем, и инструментарий к ним, тут точно так же можно стать библиотекописателем, и так и не сделать ни одного Законченного Проекта. Но тут тоже огромный пласт общего опыта.

5. Заключение.


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

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

Где искать художников/музыкантов/дизайнеров? Для начала, можно сделать Почти Законченный Проект, без графики и звуков, с накарябанными в msPaint спрайтами и такими же корявыми анимациями и трах-бахами из свободных ресурсов, найденных в сети. Очень не рекомендую нагружать других людей чем-то, что ещё не закончено и имеет высокие шансы остаться незаконченным.

Я вообще-то собирал(ся/ась) устраиваться в Valve, EpicGames или куда бы то ни было ещё, и работать там, зачем мне всё это? Большая часть программистов в мире — самоучки, зачастую с обширным «подвальным» опытом, более того, прототипы и небольшие игрушки являются отличным портфолио для устройства в крупные компании, причём не только на должность разработчика игр.

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

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

Комментарии (55)


  1. moveax3
    05.10.2019 07:43

    Спасибо за статью!
    Лет 6-7 тому назад зарабатывал написанием игр на ныне покойном Flash, от тетрисов и змеек до шутеров, файтингов и 3D со скелетной анимацией (Alternativa 3D — это было круто).
    Имхо алгебра и физика сама напросится на изучение, когда начнутся вопросы типа просчета траектории полёта снаряда, расчета коллизий игровых объектов и тд., тогда оно и заходит быстрее, с озарениями типа «Так вот зачем нужны это проекции векторов на ось!».
    Ну и по технологиям/движкам я бы неофитам советовал все таки брать те, что востребованы на рынке. Фан фаном, но когда за кайф от создания игр ещё и платят это вдвойне приятнее.
    Все это конечно мое субъективное.


    1. Terras
      05.10.2019 10:06

      По деньгам был выхлоп?


      1. moveax3
        05.10.2019 11:14

        Ошибся веткой, с телефона, ответил ниже.


    1. 16tomatotonns Автор
      05.10.2019 18:03
      +1

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


      1. moveax3
        05.10.2019 20:39

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


        1. 16tomatotonns Автор
          05.10.2019 22:12

          Да, тут уже можно думать, если заказчик сам оценивает риски, то всё ок.


  1. moveax3
    05.10.2019 11:09

    За промо игры неплохо платили. Как сейчас помню — увольнение с завода, первый опыт удаленной работы, оплата два раза в месяц по 15 тысяч через WesternUnion, первый опыт общения с англоязычными заказчикам. Хорошие воспоминания.
    Талантливые разработчики на kongregate на рекламе зарабатывали хорошо.
    Я тоже пытался, но оказалось, что не очень мои игры народу заходят, недостаток опыта, как следствие говнокод и игры, которые нравятся исключительно мне )
    Вот например https://www.kongregate.com/games/moveax3/spider-shot
    тут и юношеский максимализм, и баги из-за кривой архитектуры и говнокода, и влияние всяких Doom и Alien Shooter.
    Сие жуткое поделие принесло мне около $5 )


    1. atri1
      05.10.2019 15:40

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


  1. Fulcrum013
    05.10.2019 17:26

    С чего начать? С практики.

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


    1. 16tomatotonns Автор
      05.10.2019 17:27
      +1

      Во фреймворках или движках без прямого управления OpenGL/DirectX, нет никакой сложной математики. Для простого платформера не нужно ничего сложнее AABB-коллизии, для которой достаточно математики уровня восьмого класса, и небольшого рисования на бумажке. Под что-то не очень сложное, математику довольно просто натянуть по ходу дела, а под змейки и тетрисы математика и вовсе не нужна. Ваше предложение это замечательный способ потерять всякий интерес к области. Впрочем, если есть прям любовь к математике, то можно и с неё, разумеется.


      1. Fulcrum013
        05.10.2019 19:18

        Во фреймворках или движках без прямого управления OpenGL/DirectX, нет никакой сложной математики. Для простого платформера не нужно ничего сложнее AABB-коллизии, для которой достаточно математики уровня восьмого класса, и небольшого рисования на бумажке.

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

        Вообще компутер это универсальная числодробилка. Все что умеет компутер — числодробить. Иллюзия что компутер делает что то еще возникает исключительно в процессе правильно организованного числодробления. Ну и как их эта организация числодробления заинтерисует если с математикой не дружат?


        1. 16tomatotonns Автор
          05.10.2019 19:32

          При изучении математики через написание игрушек, есть одна маленькая фича: ты видишь что ты считаешь не так. Банальным научным тыком, легко вывести всё что необходимо, поправить (пусть даже десять раз), и всё таки написать более-менее правильно. Векторная алгебра изучается сама собой, наитием или чтением статей, плюс в статье описаны основные разделы математики, на которые стоит посмотреть.
          Другое дело что начинать с этого — не нужно, этим нужно продолжать, но начинать не стоит, если нет любви к математике.


          1. GhostWritter
            06.10.2019 09:14

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

            www.realtimerendering.com/raytracinggems/unofficial_RayTracingGems_v1.3.pdf

            inst.cs.berkeley.edu/~cs294-13/fa09/lectures/cookpaper.pdf

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

            Начать изучать лучше всего на листе бумаги, а потом в Matlab. А программирование игр точно не с OpenGL/DirectX, лучше всего узнать как все работает уже в готовых движках.


            1. LuckyOok
              06.10.2019 14:06

              Спасибо за ссылки. Интересно будет почитать на досуге.


  1. Fulcrum013
    05.10.2019 19:44
    -1

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

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

    Т.е. вы предлагаете начинать с более сложных задач которые требуют линейную алгебру, дифферинциальное, интегральное, и тензорное счисление как инструмент?
    Заканчивается такой «интерес» очень быстро — когда лезут с темами «как написать AAA или движок (нужное подчеркнуть) на коленке» на форумы и в них начинают с пеной у рта доказвать что для этого математика не нужна, потому что он видел на ютубе как змейку «без» математики пишут, все кто был способен им хоть что то объяснить, просто посылают их далеко и надолго.

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


    1. 16tomatotonns Автор
      05.10.2019 20:09

      Простите пожалуйста, расстояния не посчитать? vdist = (v2 — v1), и теорема Пифагора на получившийся вектор. Это всё есть в учебнике за восьмой класс, и в типичной статье «математика для разработчиков игр», которую начинающий разработчик загуглит одной из первых.
      Взаимное расположение? Так же легко, берётся бумажка, на ней координаты объектов, вычитаем координаты положения/центра по одной из осей и смотрим, где циферка получилась больше. Очень наглядно и выводится «по наитию» и переводится в код. Для этого не нужна ни высшая математика, ни законченное среднее образование, только арифметика, чуть-чуть логики и воображения.

      Где на самом деле может пригодиться именно высшая математика, так это, например, в построении математической гравитационной модели солнечной системы, там простенькое дифференцирование (простое смещение объектов «каждый кадр» недостаточно точное и несёт критичное накопление ошибок). Или в волновом анализе: мы хотим сделать визуализатор/ритм-игру которая адаптируется под трек, который в данный момент играет, тут уже всякие beat-detect'ы и fft.

      Только вот ведь незадача: в простом платформере это не нужно. И в сложном, зачастую, тоже. Для совсем сложного платформера может понадобиться continious-collision, это уже сложнее чем AABB, но далеко не высшая математика. Мы не строим самолёт или прибор, от которого зависят жизни, нам достаточно сильно упрощённых моделей, которые могут подглюкивать в граничных случаях, но в основном ведут себя хорошо. При управлении станком с множеством степеней свободы, нам может понадобиться разбираться в многомерных пространствах, где вектор положения в пространстве состоит не из двух-трёх компонентов, а из пятнадцати, например. Но это не станок, если начинающий разработчик начнёт строить станки, ему разумеется придётся углубляться.

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


  1. Fulcrum013
    05.10.2019 21:06
    -1

    Взаимное расположение?
    А теперь по наитию найдите угол визирования этого объекта 2 из объекта 1 (это относительно курса объекта один). Еще ни одного после таких наитий не видел чтобы вообще нашел. А задачка то банально по одному скалярному умножению на ось требует и арктангенса.
    А теперь сделайте «но наитию» банально алгоритм преследования с упреждением (перехвата).Не видел еще ни одной реализации «по наитию от гуру» меньше 200 строк которые при этом работают разве что случайно и то в случае если физика не моделируется. А вот с использованием понятия «производная угла визирования по времени» это требует одного ПИД-регулятора, который реализуется в одну строку. Так что не рассказывайте сказки про наитие.
    Про банальную навигацию круга внутри полигона (перс в навполи) можно вообще забыть с такими наитиями. Потому что инструмента при помощи которого могут банально найти дистанцию от стен не понимают в результате, не то что сумму Минковского и т.д. Про навигацию по лабиринту из навполи где еще и теория графов нужна как понимаете можно даже не пытаться «по наитию».
    Где на самом деле может пригодиться именно высшая математика, так это, например, в построении математической гравитационной модели солнечной системы Мы не строим самолёт или прибор, от которого зависят жизни, нам достаточно сильно упрощённых моделей, которые могут подглюкивать в граничных случаях, но в основном ведут себя хорошо.

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

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


    1. 16tomatotonns Автор
      05.10.2019 21:42
      +1

      Угол визирования — есть даже в статьях на хабре, вроде этой, это простейшие штуки которые изучаются автоматически, в процессе обучения кодингу.
      Преследование? В 99% случаев достаточно обычного изменения угла поворота на цель. Можно постоянно нацеливаться, можно доворачивать угол. Это простая задача, сложное преследование как в боевых ракетах, в подавляющем числе случаев, не нужно и даже вредно, игроку от этих ракет ещё надо как-то уклоняться. Можно построить треугольник, продолжив вектор движения объекта, и примерно прикинуть где он будет через примерное время долёта, это легко делается в цикле, а если всё таки нужно прям крутое «преследование с перехватом», то можно найти методики и алгоритмы, хотя бы википедию. Вы многократно усложняете простые задачи, с игровой формы до «реальной».
      Навигация — это отдельная тема, и без сложной навигации в подавляющем числе случаев можно обойтись, за исключением удержания курса на цель. А ещё можно руками натыкать навигационных точек, и ходить по ним, это вообще очень просто. Наша задача не написать ИИ, который будет уделывать игрока по всем фронтам, а написать ИИ который сможет красиво отдаваться, создавать неудобства и просто быть частью геймплея.

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

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


      1. Fulcrum013
        05.10.2019 21:52
        -1

        Это простая задача, сложное преследование как в боевых ракетах, в подавляющем числе случаев, не нужно и даже вредно

        Как она может быть сложной в боевых ракетах если ее решили в конце 40-х?
        Все предельно просто — ПИД регулятор удерживает производную угла визирования нулевой. Дал в формулу регулятора изменение угла визирования между фреймами на выходе получил управляющий сигнал насколько повернуть влево-вправо. и работать будет даже при полном моделировании физики, пока у преследующего есть запас энергии для совершения манеров с большей перегрузкой чем преследуемый. Куда проще то?
        И никакого вашего «можно прикинуть на 200+ строк может случайно заработает».
        Вы многократно усложняете простые задачи, с игровой формы до «реальной».
        На самом деле упрощаю до реальной. Теория автоматического упраления нужна чтобы упрощать построение автоматики а не чтобы усложнять. Но для того чтобы понять оную ТАУ нужны дифференциальное, интегральное и тензорное счисления.


        1. 16tomatotonns Автор
          05.10.2019 22:07

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

          Спасибо, я уже всё понял, можете не продолжать :)


          1. Fulcrum013
            05.10.2019 22:20

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


            1. 16tomatotonns Автор
              05.10.2019 22:23

              Смотрите. Довольно успешный скролл-шутер. Тут есть графика, и даже коллизия.
              youtu.be/9gAI1WJy9lo
              Но где тут пропорциональные навигации, где тут системы «избежания столкновений»? И, как так получилось, что без всех этих достижений науки и техники, в эту игру всё ещё интересно играть большому количеству людей? А ведь тут ещё и уровни не случайно генерируемые, вообще ужас.
              Вы опять взяли частный кейс, необходимый менее чем в одном проценте случаев, и начали его раскручивать.

              Ну вот это для игры можно то и не делать.

              В том-то и дело, что мы решаем, что можно делать, а чего можно не делать. Вы понимаете, что ваши кейсы настолько частные, что шанс на такое напороться мизерен?


              1. Fulcrum013
                07.10.2019 01:41

                Вы понимаете, что ваши кейсы настолько частные, что шанс на такое напороться мизерен?
                Настолько мизерен что вся навигация по навпоинтам именно так и работает — на пид-регуляции. А все остальное это надстройка, последовательно задающая таргеты регуляции. И использование такого навигатора по навпоинтам на нижнем уровне автопилота упрощает жизнь в любых автопилотах, хоть в системе облета препятсвий в реальной ракете, хоть в игровом автопилоте, с той лишь разницей у игрового вопросы определения положения других объектов в пространстве элементарно решаемы при помощи аналитической геометрии, в отличии от реального где для этого действительно нужны сложнейшие системы локации, фильтрации сигнала и т.д.
                А вот без этого инструмента игровые автопилоты как раз и становятся очень очень сложными и разрастаются на километры кода.


          1. Fulcrum013
            05.10.2019 22:29

            а потом оно разрослось до дипломной работы.

            Видели когда нибудь алгоритм 2D-огня хот-спот-блур-шифт? Просто да? Куда проще? И очень похоже.
            А от реальной модели конвекции которая в счете по наукам пользуется отличсется только тем что в char считают а не в double и функция тока константа (от этот шифт ее заменяет). У меня в диплом со счетом конвекции в жидком металле «по наукам» разрослось на эту тему.
            Так как в думаете его огонек этот «по наитию на коленке» настолько простым слепили ничего не зная, или тот кто очень хорошо знал конечно-разностные схемы просто немного упростили его и адаптировал к быстрому счету с сохранением стабильности (по ходу наверное самый сложный момент в этом деле — сохранить стабильность при понижении точности).


            1. 16tomatotonns Автор
              05.10.2019 22:32

              В играх это не нужно. Гипотетически, может оказаться полезным в 0.001% случаев, но шанс на это менее полупроцента => не нужно.


              1. Fulcrum013
                06.10.2019 00:27

                В играх это не нужно.
                Весь 2D огонь работает именно на этом. Тот который рендерится в максах для текстур — на счете по наукам по такой схеме. 3D огонь на партиклах тоже работает именно на этом только на счете схемы по подходу Лагранжа а не Эйлера


                1. 16tomatotonns Автор
                  06.10.2019 01:24

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

                  В играх это не нужно. Когда будете расчитывать конвекцию и температуру во всех областях пламени — будете выкатывать.


                  1. Fulcrum013
                    06.10.2019 09:20

                    Вы выкатили пушку для стрельбы по воробушкам.
                    image
                    Знаете что это? Средство промышленной добычи утятины.
                    и им занимаются дизайнеры а не программисты

                    Потому что там где этим занимаются программисты дизайнеры не нужны. Гуглите тему процедурная анимация текстур. А дизайнеры рисующие огонь в пинбраше — это уровень 8-битных «денди». Сейчас они если чем то и занимаются таким — настройкой параметров модели огня.


                  1. Fulcrum013
                    06.10.2019 10:04

                    В играх это не нужно.
                    Вы вообще в курсе что вся и графика и моделирование физики на оных науках живет и всегда жило и не только жило но и оные науки двигало?
                    К примеру возьмем те же алгоритмы шейдинга типа Гуро и Фонга которые сейчас развлекухой для студентов считаются а не для серьезной разработки игр. Что у Гуро что у Фонга описание созданного алгоритма стало докторской диссертацией.
                    Разница только в том что для реально научного и инженерного применения более важна точность счета, а для игр скорость. При этом сохранить числовую стабильность при снижении точности гораздо сложнее чем повысить точность.


      1. Fulcrum013
        05.10.2019 22:14

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

        Это обычные методики используемые для обучения в обычном вузе по специальности «прикладная математика и вычислительная техника». И других способов стать программистом окромя как закончить вуз по этой специальности не существует (как бы там не назвали сейчас название вертится вокруг этого и программа остается той же). При этом все точно так же и в америка и в европах и во всем мире. И выполняют таким образом за время обучения десятка полтора как минимум курсовых проектов. Это не считая лабораторок.
        но и не начнёт ни один проект, потому что у его голова уже до краёв заполнена алгоритмами и теорией
        О каком проекте может идти вообще речь пока нет навыков декомпозиции? Пока не освоит хотя бы процедурное программирование, пытаться решать задачи код которых не укладываются в классический экран (это который 25 строк) — вредно. Т.е. таки табуляция, численное интегрирование и т.д. штуки которые позволяют освоить базовые структуры управления выполнением, и буквально за месяц будет и декомпозиция. Все программисты через это прошли во всем мире. Те кто не прошли программистами так и не стали.


        1. 16tomatotonns Автор
          05.10.2019 22:18

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


          1. Fulcrum013
            05.10.2019 22:52

            Программисты, не проходившие вузовский курс ТАУ, а то и вовсе без высшего образования, притом в их компетенции и способности реализовать разные сложные штуки не приходится сомневаться.
            Покажите хоть одну более менее сложную штуку где то кроме авиасимов и т.д. которые ни разу не люди без образования делали. Знаете почему весь западный игросторой очень долго крутился вокруг коридорных шутеров и стратежек? Именно потому что там есть только то что может осилить такой горе-разраб на готовом движке. С опенворлдом у них до сих пор примитивщина в плане модели мира. У них там в геймдеве (не путать с движкостроительством там как раз бакалавров за людей не считают) действительно тяжко с людьми с в/о, хайтеч всех раскупает еще в универе. И именно это приводит к тому что индустрия вот-вот схлопнется. Недовольство игроков вызывает то что движковая часть (графоний и физоний) круть, а гемплей все примитивней и примитивней. Это и есть результат заблуждений что типа движок типа кирпичики с ними кто угодно сможет и без знаний. А на самом деле то хорошо сделанный движок может сильно поднять продуктивность профессионала который знает что и как нужно делать самому, а что и как ему может сделать движок. Неучу же он только доставит кучу головняка и вместо нормальной разработки будет очень долгое обкостыливание простейших действий огромной толпой оных псевдодешевых разрабов (хотя так понимаю был бы у них выбор с радостью перекупили бы в хайтече, только вот у хайтеча резерв поднятия з/п выше крыши, а геймдев-конторы в этом плане очень сильно ограничены).
            Да кстати какую статью не возьми на забугорных сайтах на тему как в геймдев попасть? Все до одной советуют — как можно глубже изучать прикладную математику. Без этого ничего не будет.


            1. Suvitruf
              06.10.2019 06:06

              Знаете почему весь западный игросторой очень долго крутился вокруг коридорных шутеров и стратежек? Именно потому что там есть только то что может осилить такой горе-разраб на готовом движке
              А вот сейчас обидно было


              1. Fulcrum013
                06.10.2019 08:56

                Именно потому что там есть только то что может осилить такой горе-разраб на готовом движке
                Вы похоже не совсем правильно поняли «на готовом движке». Я не против использования толково сделанных готовых движков. Я о том что это инструмент для профи с сответсвующим образованием, позволяющий сильно повысить продуктивность. Т.е. система полученная в результате декомпозиции задачи, инструмент позволяющий решать гораздо более сложные задачи, а не какое не средство типа снижающее порог вхождения до нуля и т.д.
                А неучи только граблями по лбу от движка получают. Особенно когда типа начинают расказывать навыки програмирования типа не нужны потому что код писать не надо. Ну не надо. Но от изменения способа представления кода принцип не меняется. Требования к умениям по анализу предметной области и постановке задачи только возрастают. Именно потому что рост продуктивности позволяет решать гораздо более объемную и сложную задачу, а соответственно и умений по ее осмыслению и декомпозиции.


              1. Fulcrum013
                07.10.2019 00:38

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


          1. Fulcrum013
            06.10.2019 10:40

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

            Таковых не существует. Инженер-программист — это такая квалификация которая присваивается только госкомиссией и только после защиты диплома по оной специальности.


  1. Fulcrum013
    05.10.2019 23:40

    Я сам окончил матобеспечение

    Ну вот поэтому вам в отой статейке что вы показывали про векторы все кажется понятным. Именно потому что знаете вагон и маленькую тележку свойств каждой из операций, из которых и вытекает их применение для решения тех или иных задач, ни одно из которых в оной статейке не описано. Естественно что когда знания в вопросе резко превосходят знания среднестатического инженера ( 2 семстра линейки и аналитической геометрии + 2 семестра вычислительной геометрии — так у вас было? Это по часам больше чем у остальных инженерных специальностей весь курс высшей математики), все это кажется само самой разумеющимся. А теперь представьте себе что это школьник читает у которого тока через год что такое вектор в школе на физике на пальцах объяснят.
    Так что ваши «по наитию» абсолютно естественные дела для профессионального математика особенно программиста, потому что наитие идет из очень глубоких знаний. А для непосвященных попытки это повторить смертельно опасны.
    и прекрасно знаю, что из этого реально используется в играх, а что нет, и с какой частотой
    Ну у меня ученик к примеру все это использует для скриптинга того же SAMP. Примерно с год по векторной алгебре и чуток по пропорциональной навигации поднатаскивал ну в принципе почитай тот то учебник если что объясню. А начиналось все с того что смотрел он на от эту или подобную статейку которую вы показали как баран на новые ворота когда на PAWN скрипты под оный SAMP писал а ниче путнего не получалось. Ну с учебниками ознакомился по линейной алгебре и потом с Роджерсом по вычислительной геометрии так редактор мира слепил быстренько. Потом на каникулах подзаработать решил этим летом. Сайт сверстать для одного SAMP-проекта подрядился. Ну типа сказали ему может скриптером потом возьмем.Ну сайт он доверстал показал там хозяину этот редактор а тут с сервом проблемы какие то со скриптами начались. Ну в общем результат — пятерых скриптеров которые все это не использовали уволили, его вместо них взяли. Проект в котором у них было порядка 150 тыс строк который они три года мурыжили он уже переделал с нуля. С нуля это вместо скрипта плагин который напрямую с апи сервера работает функционал уже серьезно превосходит то что там было. Размер кода на плюсах у него подбирается к 5 тыс строк. У них там щас пусконаладка как раз. И следующий заказ от того же заказчика у него есть — в этот раз клиента с движком с нуля для оного SAMP. Это хлопец сейчас в 9-ом классе.
    Так что не надо сказки рассказывать насколько все это можно изучить по мурзилкам и какая методика реально работает.


    1. 16tomatotonns Автор
      06.10.2019 01:35

      Я как раз занимаюсь обучением в т.ч. школьников и студентов, в том числе математике, и в курсе о том, что кажется им самим собой разумеющимся, а что нет. По этой же причине, я так много пишу про бумажку. Как только школьник или студент начинает черкать происходящее, всё встаёт на свои места, и становится само собой разумеющимся, «наитие» начинает работать в нужную сторону, проверено практикой, над многими школьниками и многими студентами.
      Будучи на втором курсе вуза, я отдельно самостоятельно перепроходил те же самые векторы (которые аккуратно пропустил в школе), прочитал всего-то несколько статей, включая ту что на хабре, для разминки написал и протестировал векторную библиотеку, и… Всё, я знаю векторы, умею их применять, и опа, игрушки получаются ничо так с математической точки зрения. И восьмиклассники, которые учатся у меня, читают те же статейки на том же самом хабре (или mathprofi, или ещё что-то), и нормально вкуривают в происходящее, даже если они этого ещё не проходили.
      Потому что сама тема простая, это то, что изучается автоматически при практике. Ты не понимаешь векторы, ищешь материал и уже начинаешь понимать. Смотришь на чужой код, видишь то что там происходит и начинаешь понимать. Получать вышку чтобы изучить векторы не нужно, поиска информации достаточно.

      Для написания простого двухмерного спейс-шутера «на фреймворке», более чем хватает простеньких векторов, на уровне сложения-вычитания скоростей, и вычисления длин по теореме Пифагора. Это всё. Больше ничего не нужно, это можно изучить за неделю практики. Неделю, особенно если восьмой класс уже пройден, и мы даже знаем тригонометрию.
      Прочитайте мою публикацию по данной теме. Всё очень просто, никакой математики сложнее Пифагора.
      habr.com/ru/post/346136

      И даже для отскоков шариков-кубиков, никакой высшей математики аналогично не нужно.


      1. Fulcrum013
        06.10.2019 07:55

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


        1. LuckyOok
          06.10.2019 12:42

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


          1. Fulcrum013
            06.10.2019 23:07

            Статья совершенно о других вещах.

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


            1. LuckyOok
              07.10.2019 16:39

              Это только ваше мнение. Хотелось бы, конечно, чтоб да, но на самом деле — нет. Потому что ни в теле статьи, ни в заголовке нет словосочетания «инженер-программист». Впрочем, может быть, Вы ведёте речь о какой-то другой статье, которая пока что существует только в вашей голове. Тут судить сложно, поскольку Вы так и не удосужились её написать и опубликовать пока что.


          1. Fulcrum013
            06.10.2019 23:18

            А здесь поговорить о немного других вещах. Более простых и приземлённых. Как вам такое предложение?
            Ну вот и я о том что начинать надо с простых приземленных вещей, а не сразу лезть в дебри api которые подразумевают знание чего и как там под капотом. Знаете по какой причине в универе изучение графики начинается не с пользования какими то либ а с лаб, набор которых в результате дает полноценный графический конвейер (ну софтверный аналог Direct3D/OpenGL)? Именно потому что после этого все вопросы «а че это и с чем это едят?» в плане любого графического api сразу отпадают. Остаются только вопросы как называется функция которая делает вот это или вот это, ответы на которые моментально находятся в референсе.


  1. LuckyOok
    06.10.2019 12:32

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


    1. Fulcrum013
      06.10.2019 22:59

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


      1. LuckyOok
        07.10.2019 16:54

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


        1. Fulcrum013
          08.10.2019 02:47

          Ни о каких лабах и курсачах здесь и речи нет.

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


          1. LuckyOok
            09.10.2019 16:51

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


    1. Fulcrum013
      06.10.2019 23:24

      Что немаловажно, во всех этих штуках кода, как такового, не сильно и много, вполне по силам разобраться семикласснику.

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


      1. LuckyOok
        07.10.2019 16:58

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


        1. Fulcrum013
          08.10.2019 02:40

          Ну вот суть высшей математики как раз в том чтобы разложить задачу на элементарные операции.

          Ну вот суть высшей математики как раз в том чтобы разложить задачу на последовательность элементарных операций. И не зная суть разложения понять код (а по сути эту последовательность элементарных операций) пытаться понять что и как вычисляется бесполезно, а тем более школьнику.


          1. LuckyOok
            09.10.2019 16:59

            Это совершенно непосильная задача — запустить код на выполнение, посмотреть на результат визуализации, модифицировать, запустить ещё раз, погуглить непонятное, спросить в чятике. Ведь нет в интернете 100500 статей, роликов, гифок, разъясняющих суть этих ваших синусов и прочие факториалы, а чятики — зло, там школота и наркоманы. Всё должен объяснять только убелённый сединами профессор, ну, или академик. Совершенно точно установлено, что необходимо закончить МГТУ им. Баумана прежде чем браться за написание своего первого платформера или арканоида.


  1. Fulcrum013
    09.10.2019 09:11

    Это совершенно непосильная задача — запустить код на выполнение, посмотреть на результат визуализации, модифицировать, запустить ещё раз, погуглить непонятное, спросить в чятике.

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


    1. LuckyOok
      09.10.2019 17:29

      Вы не амбидекстер случайно? Так ловко передёргиваете.


    1. 16tomatotonns Автор
      09.10.2019 19:28

      Почему это глупость? Где тут глупости? Обоснование есть? А что вы делаете, в случае если какая-то система ведёт себя не так как задокументировано? У вас бывали такие случаи? Вы когда-нибудь писали что-то, что потом работало в «боевых условиях»? А что вы делали когда это что-то вдруг переставало работать, особенно по неизвестным причинам, хотя математически всё верно?