Как стать автором
Обновить

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вы разницу не улавливаете? Одно дело разбирать что и как должна делать система по документации и выявлять несоответсвие в коде. И совсем другое дело пытаться понять по коду что и как он должен делать — т.е восстановить по нем документацию, чем вы по сути и предлагаете заниматься когда говорите про посмотрят в чужом коде, вместо того чтобы изучать математику необходимую для понимания докуметнации.
У вас бывали такие случаи?

Для того что я разрабатываю такие случаи в продакшине исключены.
Вы когда-нибудь писали что-то, что потом работало в «боевых условиях»
Ну чтоб прям в боевых нет. А в условиях промышленного производства так вертелся от запуска и до включения электропитания (сбои по питанию там иногда бывают. Примерно раз в 5 лет.).
… Вместо того чтобы изучать математику необходимую для понимания докуметнации

Ну чтоб прям в боевых нет. А в условиях промышленного производства так вертелся от запуска и до включения электропитания (сбои по питанию там иногда бывают. Примерно раз в 5 лет.).

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

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

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

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

То в вашей жизни не хватает знаний о тех вещах в разработку которых вы пытаетесь лезть. Попробуйте изучать матаппарат который ппредназначен для решения задач возникающих в разработке игр.
Они глядишь и решаться начнут, и все просто станет, и код станет очень компактным, и вычислительной мощности хватать станет.
Попробуйте уже перестать лезть с репортажами из своего маня-мирка, где без матана и профессорских корочек даже табурет не сколотить, в комментарии к статьям для начинающих. Это трудно, но всё же попробуйте. И, раз уж сильно невтерпёж излить накопленное, излейте уже в виде отдельной статьи.
Хорошо сказали. Дядька советует интересную область начать со скучной математики.
Для того, что бы просто взять готовый «огонек» и сунуть в игру, мне нужно изучить целый раздел физики… Очень странные заявления.
Этого мало, нужно стать доктором всяческих наук и стать профессионалом во всех областях, от гончарного дела до ракетной науки. Иначе, всё что ты будешь делать, будет фигнёй по умолчанию: ты ведь не учёл физику огонька с гончарной точки зрения.
В игре главное чтобы «игралось и ощущалось». Опишите в двух словах например дум: коридоры с демонами — бегаем пуляем по целям, общее ощущение от описания фигня какая-то. Симулятор самолёта: видим приборную панель, взлетели, по карте до точки, бомбы сбросили, обратно… ещё более скучно. И таких примеров кучи, все эти векторные математики, пустяковая задача — они изучаются(за совсем небольшое время), а вот чтобы придумать интересную атмосферную игру программировать вообще уметь ненужно ;P
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории