Ну так то, имея клиент, можно свою серверную часть написать, как делали с вов или линейджем 2. Разве что конкретно в танках придётся кучу математики использовать.
О, да. Много любителей игр порой просто не понимают какая-лютая математика там скрывается под капотом у их любимых игр. Особенно смешно, когда какой-нибудь двоечник пишет сочинение, что в будущем хочет стать разработчиком игр (реальный случай со школы племянника). Это примерно как мы все в детстве поголовно мечтали стать космонавтами. В теории возможно, но для этого ведь пахать надо, чего у желающего обычно не наблюдается.
Я признаю, что есть пласт игр, в которых без математики никуда, но это в основном какие-то сверхтяжёлые(и в плане разработки, и в плане игры в них) симуляторы типа ИЛ-2, KSP, даже WoT(хоть и аркада, но используется базовая тригонометрия для расчёта пробил/непробил); а большинство игр обходится только бизнес-логикой и азами математики, которые можно осилить не то что легко, а даже в процессе разработки, когда уже непосредственно прижмёт.
Так почему Вы так гиперболизируете сложность разработки игр, будто это настолько же трудно, как и ракеты в космос запускать? Я не придираюсь, просто очень хочу услышать про опыт использования математики в играх, когда она подходила до реально сложных вещей(всякие кривые для анимирования не в счёт, так как работают почти сами собой).
Как я знаю, математика очень нужна тем, кто пишет игровые движки, а не сами игры.
Математика на серверной стороне нужна, когда мир не псевдо-плоский.
Собственно, нужно рассчитывать физику движения всего. Плюс поиск пути - тот еще геморрой.
Если речь про клиент - то вот математики уже надо овердохуя - от тригонометрии до матриц. Даже если использовать готовый игровой движок.
"Математику уже затем учить надо, что она ум в порядок приводит" - Стэтхем.
Вкатиться в геймдев с математикой 5 класса можно, но с оговорками:
Без математики в геймдеве можно решить 95% задач. Но мидловский грейд можно достигнуть только умея решать не менее 100% поставленных задач.
Не всегда можно решить задачу в рамках готового движка. Иногда понимание того как движок работает внутри необходимо, чтобы правильно решить задачу.
Если студия использует свой студийный движок, то совсем не везде есть разделение на команды движка и игры, которые отгорожены друг от друга кирпичной стеной. В моем случае бывало так что все разработчики могли коммитить и в код игры и в код движка, если задача того требовала (чаще, естественно, не требовала).
Не могу сказать, что прям лютой математики. Но высшей так точно достаточно.
Простейшим примером является процедурная генерация вещей , подземелий , городов, монстров, локаций и даже квестов.
Например для процедурной генерации бесконечного города часто используют алгоритм WFC , он же: коллапс волновой функции.
А для генерации ландшафтов и для создания карт частенько применяют шум Перлина , симплексный шум, или преобразование Фурье.
Так же частенько в создании игр используется линейная алгебра и в частности матрицы и вектора.
Сейчас конечно существует и альтернативные варианты, например: сторонние библиотеки, ассеты и пакеты. Но у таких вещей есть свои проблемы, в том числе недостаточная оптимизация, из за которой частенько даже простенькие игры подвисают на весьма мощных устройствах. А так же зачастую не самые оптимальные решения внутри, которые в самый неподходящий момент могут вылезти боком из за того, что они универсальны и не предполагали определенного сценария.
Из личного опыта кстати могу привести пример. Однажды у меня была задача для мобильной казуальной игры, где нужно было перебрасываться частицей из точки в точку по орбитам планеты на определенные отражатели. Однако их периодически перекрывали другие вращающиеся объекты.
Казалось бы, что сложного, сделай круг вращения и меняй координаты, но когда началось тестирование - выяснилось, что все это очень сильно тормозит на тот момент не самых мощных смартфонах среднего класса. Проблема была в рендеренге объектов. Кроме того, по изначальной задумке было сделать именно похожую на орбиты модель перемещение объектов, естественно с определенными упрощениями.
Времени было в обрез и надо было что-то делать. И вот тут банальное знание формулы движения объекта по орбите космического тела и линейной алгебры - спасло всю ситуацию. Благодаря ей мы отказались от покадрового перемещения объекта и считали все объекты в одном методе, что в итоге и выиграло для нас немного производительности и мы закончили вовремя.
И это я не говорю о процедурных анимациях, а так же искусственном интеллекте врагов, чуть более умного чем болванчик- табуретка. Ну и их величиствах шейдерах, которые тоже требуют понимания математики, хотя и не слишком заумной.
Я не разработчик игр, в моей сфере деятельности математики немного, а та что есть не уходит дальше 1-го курса универа. Однако, практически любая игра требует высшую математику и иногда очень глубокую, читал статьи с разбором.
Некоторые вещи, которые полностью опираются на математику::
Симуляция жидкостей
Анимация
Алгоритмы
Архитектура игровых движков
Написание игровой логики
Аналитика и сбор данных
Расчёт кадров в секунду
Игровая физика
Графика/Шейдеры
Искуственный интеллект
Процедурная генерация
Рендеринг полигонов
И много другое...
Это по большей части забирают на себя движки и готовые модули. Математика в играх очень важна, но можно справляться и не зная её.
Допустим, что некоторые из перечисленных вещей действительно требуют знаний высшей математики, но непосредственно разработчику игр они настолько сильно и нужны.
Пункты, которые выполняются игровым движком и не требуют создания вручную в 99.999% случаев:
-Симуляция жидкостей
-Анимация
-Архитектура игровых движков(зачем вообще лезть под капот, если ты разработчик игр, то есть пользователь игрового движка и до разработки самого движка отношения не имеешь?)
-Расчёт кадров в секунду
-Графика/Шейдеры
-Рендеринг полигонов
Вещи, которые, в принципе не требуют значительных знаний математики:
-Написание игровой логики
-Аналитика и сбор данных
Вещи, которые могут требовать незначительных знаний с математики, но ни разу не глубоких:
-Алгоритмы
-Игровая физика(пару формул подставил, параметры задал и никакого глубинного понимания не нужно)
-Искусственный интеллект(очень притянутое здесь понятие, ведь всё-равно любой искусственный интеллект в играх, это тупой набор правил, которым четко следуют игровые болванчики, не имея никакого продвинутого ума. Никто в здравом уме не использует в играх продвинутые вещи типа нейронных сетей, ведь это, во-первых дорого и долго делать, во-вторых, это повысит системные требования в n-раз сразу, в-третьих игры должны развлекать игрока, а не побеждать его быстрее, чем он моргнёт глазом)
В итоге все Ваши пункты очень сильно притянуты за уши и не имеют ничего общего с реальностью, если садиться за комп с целью сделать игру, а не игровой движок, изобретая заново десятки, сотни, тысяч велосипедов.
Кстати, о шейдерах. Посмотрите курсы. Всё, что требует шейдера не из коробки - там лютая математика. Не просто знание формул, а именно понимания что ты делаешь, на уровне каждой вершины и каждого пикселя.
Ну вот возьми WoW, в котором уже был десяток аддонов, в каждом из которых максимальный уровень повышался на 10. И последний аддон, в котором левел кап снизили до 60 опять.
И им нужно было пересчитать уровни, ХП и тыщу других параметров всех мобов, всех предметов, всех скиллов так, чтобы каждый уровень от 1 до 120 downscale до соответствующего, так, чтобы сохранялось количество тычек для убийства моба соответствующего уровня соответствующим уровнем персонажа, чтобы персонаж в экипе из предыдущего аддона мог спокойно убивать боссов из позапредыдущего, но не мог даже тычки сделать по мобам из текущего.
Я где-то читал, что эта формула даунскейла - страницы 3-4 логарифмов, интегралов и другой магии высшей математики
но непосредственно разработчику игр они настолько сильно и нужны.
Эх, смотришь так на "разработчиков", котоыре все переваливают на уже готовый движок игры, но с ними не связывались. Движки из коробки очень сильно не оптимизированы, и возможности сделать это у разработчиков нету. Как бы вы не ебались с урезкой полигонов, вам все равно придется лезть под капот и переделывать много вещей, а вот уже в чужом коде копаться на эту тематику, так вспомните свои слова про математика не нужна.
Эх, смотришь на людей, которые изобретают тысячу велосипедов, пишут свои движки, создают свои графические библиотеки и уверяют, что без этого не создать свою собственную игру, а те, кто берут готовые инструменты для забива гвоздей, а не создают молоток с нуля, в их глазах выглядят как лохи: и думаешь: "фига Вы престали ко мне, я разработчик игр, а не движков/драйверов/операционных систем/систем BIOS/прошивок микросхем и других вещей, которые можно взять готовыми, а не изобретать велосипед. Может ещё свой процессор с нуля нужно создать, чтобы удостоиться чести быть "настоящим" разработчиком игр?
Я не говорил про соаздение своих движков, а про лезть в код уже чужого движка, где использована математика
Есть очень интересный канал с "математическими приключениями".
Вот несколько примеров видео
Не так просто с первого раза все понять.



Но ведь достаточно встретить одну нестандартную задачу под которую нет библиотеки и придется писать решение самому, а в любом серьёзном проекте этих нестандартных задач будет достаточно много.
Да, но Вы всё-равно слишком гиперболизируете важность высшей математики в разработке. Вы же сами начали писать со слов "Я не разработчик игр, но...". В современном мире, даже школьники могут делать свои игры. В мире, в принципе, существуют игровые движки для того, чтобы разработчики непосредственно игр не лезли в дебри математики, а именно писали игровую логику, для которой не нужны знания математики в широком смысле этого слова.
Как я и писал Выше очень немногие проекты требуют лезть в дебри. Даже нестандартные задачи обходятся в большинстве случаев только элементарной логикой и не более.
Я думал, что Вы имеете какой-то опыт в разработке или хотя-бы знакомых разработчиков, которые дали какие-то инсайды, но сейчас я могу видеть, что Вы пытаетесь доказать стереотип, не имея никаких реальных аргументов в его пользу. Не нужно так делать и спорить на те темы, о которых ни слухом, ни духом.
Знаете, разрабатывать двумерные игры на каком-нибудь конструкторе тоже можно, однако это не то же самое, что делать серьезные ПК игры с реалистичной физикой. К примеру составитель натолок тоже разработчик игр в какой-то мере, однако ему вряд ли придется сталкивается с теми сложными алгоритмическими задачами, которые наверняка приходится решать при создании AAA-игр. Под некоторые игры даже движки пишут с нуля, сами должны представлять какой там объем работ выполняется.
Простые игры безусловно можно и без сложной математики. Свой движок и свою игру с блекджеком и шлюхами? Без лютой математики точно не обойтись.
К примеру, любимой всеми нами серии GTA на все 100% дохрена математики, хотя бы просто потому что: https://ru.wikipedia.org/wiki/RAGE_(игровой_движок)
Касательно школьников, они как раз эти самые AAA игры и играют. И когда школьник мечтает, что будет разработчиком, он явно не разработку тетриса у себя в уме представляет. Просто наивно не понимает, что для игр уровня GTA 5 нужно просто дохрена труда и труда целых коллективов математиков, а он тут даже с двойками справится не может - вот что я хотел донести своим самым первым комментарием.
В серьезном проекте хватает и более простых задач, которые тоже кто-то должен делать. Пусть умный Вася пилит движок, чтобы не-такой-умный Петя реализовал все хотелки (комментарий выше про племянника).
Ну а в маленьких придется как-то обходиться средствами движка.
А что вы понимаете под "разработкой движка"? Если я возьму UE4 из коробки и начну пилить для него систему поиска пути в трёхмерном пространстве с учётом порталов - это разработка движка или таки игры? Я считаю, что игры, потому что движок у меня уже есть. Если вы считаете, что это разработка движка, тогда всё понятно.
Или другой пример - Kerbal Space Program. Там математика нужна для реализации орбитальной механики в игре. Пример узкий, но наглядный.
О KSP я писал выше. Это исключение из правил, а не "почти все игры", как писалось выше.
Теорию графов, разумеется. Вроде бы это не совсем школьный курс и тем более не арифметика.
Теорию графов, понимание алгоритма a-star в частности, понимания нормалей геометрии, понимания физики и скорости. При большом открытом мире - понимания чанкования/деления мира, и сопряжения поиска пути в чанке и между чанками, если не хотите лагодрома и ООМ.
У вас не очень достоверное понимание о создании игр, простите. Математика нужна даже если использовать готовый движок, те же Unity и Unreal. Можно использовать готовые и комьюнити скрипты и алгоритмы, но шедевра (да даже просто рентабельного продукта) таким подходом не получить.
прогуливал матан с 5 класса по 3 курс - игры мне это делать не помешало, гуглите Gazmatera Return Of The Generals
IT-юмор
6.9K постов53.2K подписчика
Правила сообщества
Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору