Друг решил вкатиться в геймдев (как всегда есть мотивация, а знаний (как оно всегда бывает) естестве
Аноним
18/02/23 Суб 22:25:46
№
862303
1
Выбрал основной движок юнити, c# естественно не знает.
Я выбрал из множества доводов, что это хуёвая затея заниматься ему играми, лишь один, тип у него всегда была 3 по математике (и то, нарисованная)
На это он начал доказывать, что создание игр не требует высокого школьного уровня математики, этош ни неирасетии!!1!1!!1!!
И вот мне как человеку, который в айти отрасли практически ничего не знает, особенно в геймдеве, стало интересно, а какими математическими знаниями должен обладать среднестатистический разработчик одиночка, чтоб написать допустим такие инди игры как cuphead, hollow knight (именно код. Геймдизайн, создание моделей опустим)
Можно ли написать, не обладая начальными знаниями высшей математики, нелаганое говно по типу яндере симулятора?
Для того чтобы сделать платформер, никакими особыми знаниями обладать не нужно. Все знания на этой пикче. Каждую наносекунду скорость падения увеличивается на гравитацию, все.
А вот если встанет задача что-то типа определить, находится ли объект в каком-то угле обзора в 3д, вот тут можно тушить свет.
>нелаганое говно
>яндере симулятора?
шта
>Выбрал основной движок юнити
>c# естественно не знает
Пусть переходит на Godot, топ движок для инди.
>была 3 по математике (и то, нарисованная)
У меня тоже, полёт нормальный. Было б желание...
>создание игр не требует высокого школьного уровня математики, этош ни неирасетии!
Он прав, не требует. Нейросети тоже не требуют, базовая нейросеть содержит в себе только сложение и умножение, то есть в своей основе нейросети проще любой видеоигры, они просто перемалывают очень много данных очень много раз, имея внутри себя очень много одинаковых "обучаемых" компонентов, которые по отдельности чрезвычайно просты. Но описания архитектур нейросетей часто пишут формулами с криптографическими закорючками - таким способом математики самоутверждаются, типа они кому-то нужны и заняты чем-то важным, ведь без них эти закорючки прочитать и понять сложно. Ну, это как незаменимые говнокодеры, которые пишут такой код, который понимать и поддерживать могут только они, поэтому их уволить и хочется, и нельзя.
>Можно ли написать, не обладая начальными знаниями высшей математики, нелаганое говно по типу яндере симулятора?
Конечно, можно. Можно вообще ничего не знать, и сделать яндере симулятор. Ты же знаешь, почему оно такое говно лагучее? Потому что яндередев нихрена не знал и упорно сопротивлялся обучению, перев как бульдозер по единственному известному ему пути, пока его не засрали по уши его же собственные фанаты. Ну, его можно понять: звёздная болезнь, творческое дело. Это как какому-нибудь всемирно (да и не очень) известному художнику говорить, что он неправильно кисточку держит или как-то не так цвета смешивает, он же тебя этой кисточкой убить попытается и ни за что не прислушается, даже если ты даёшь исключительно правильные советы.
>какими математическими знаниями
>cuphead, hollow knight
>именно код
Математики там мало и бОльшая её часть уже давно реализована в недрах игрового движка, а тебе остаётся только правильно дёргать рычаги - функции API движка, чтобы он работал так, как ты хочешь. Намного сложнее математики - спроектировать правильную архитектуру конкретной игры, изобрести или применить алгоритмы, какие-то структуры данных и т.д. Универсальных решений либо нет, либо они слишком медленные для достаточно большого мира/количества контента. Тебе чаще придётся не математику решать, а переделывать свой собственный говнокод, который ты написал в пылу творческого порыва, не задумываясь об архитектуре, а также думать о том, как всё сделать правильно - потому что в информатике очень много путей к одной цели, но многие из них неэффективны, и если в обычном ПО ты можешь позволить себе заставить пользователя ждать или покупать более мощный ПК, то в геймдеве ты вынужден выбирать наиболее эффективные решения, иначе ты значительно сокращаешь потенциальную аудиторию и получаешь негативные отзывы с общим посылом "оптимизация говно". Вот в этом магическом слове "оптимизация" скрыта вся боль игрового программиста, которому приходится втискивать фантастические хотелки геймдизайнера в огромный зоопарк реального железа. Но, если ты новичок и не против сделать ещё одно лагающее говно, то вперёд и с песней, по туториалам на готовом движке слепить играбельный продукт можно за пару вечеров на коленке, и это было возможно ещё два десятилетия назад. База геймдева практически не изменилась, никаких прорывных открытий как не было, так и нет, а если что-то и было, то подходит только под одну микроскопическую нишу; больше всего надежд было на воксели, но для них, по-хорошему, нужны фундаментально другие видеокарты, чтобы они могли хотя бы сравняться с полигональной графикой без костылей, поэтому о них толком ничего не слышно, а ведь прорыв обещали, наверное, как минимум с 90-х.
>>862309
>А вот если встанет задача что-то типа определить, находится ли объект в каком-то угле обзора в 3д, вот тут можно тушить свет.
Тривиальная задача вообще-то.
https://docs.godotengine.org/en/stable/tutorials/math/vector_math.html#facing
3D не сильно сложнее 2D, нужно просто не бояться, ведь многие операции можно свести к одной плоскости, тем более что большинство 3D игр до сих пор геймплейно сфокусированы на одной плоскости. Скорее игроку сложнее ориентироваться в 3D мире, чем тебе формулы считать для ИИ неигровых персонажей.
>Выбрал основной движок юнити
На этом, собственно, его вкатывание в геймдев и окончится.
А тред можно закрывать.
/thread
>какими математическими знаниям
Я тебе открою тайну, в геймдеве кроме математики надо делать миллион самых вещей, требующих определенных знаний и скиллов.
Но если уж тебе так интересно, вот код контроллера персонажа в celeste, простом пиксельном 2д платформере.
Надеюсь, после просмотра вопрос больше не останется.
https://github.com/NoelFB/Celeste/blob/master/Source/Player/Player.cs
Этого не слушай, это движкосрачер, безыгорный фантазёр, ни одной Игры в своей жизни не сделал, одни ассет-флипы.
Только и делает что щитпостит с рекламой юнити и хейтом Godot (Unity ему за это даже не платят, просто такое ноулайф хобби у человека).
>своего движка
Вообще-то, Godot не "мой" - он наш, геймдевовский.
>Но если уж тебе так интересно, вот код контроллера персонажа в celeste, простом пиксельном 2д платформере.
Охуенно гордиться говнокодом.
>гордиться
Да это троллинг такой, подкол новичка. Мол, аж 5500 строк кода для простого персонажа в платформере. Тем временем тетрис можно сделать за пару тысяч строк без движка, с учётом всего рендеринга, менюшек, вычислений и так далее. Так что код Селесты это просто мем, как пузырёк в сумке Гнума.
>jumpGraceTimer
>Grace
>благодать, милость, изящество, грация, украшать, награждать, удостаивать
Не могу понять, это комплимент изящным движениям игрока или насмешка над криворуким игроком? Лол.
Про койот тайм знаю, это когда игроку дают дополнительные 0.001 секунды на нажатие прыжка после того, как персонаж уже сошёл с прыгабельной поверхности и вот-вот начнёт падать.
>0.001 секунды
Кстати, в каких-нибудь играх обыграли этот койот тайм максимально преувеличенно, как в мультиках? Чтобы персонаж реально бежал по воздуху, смотрел себе под ноги, дико пугался и только после испуга падал.
А то как-то тупо выглядит, когда игра не мультяшная и персонажи никогда не осознают, что бегут по воздуху.
Это же западные рабы капитала, у них там Grace period в кредитках.
Ну смотря каких игр. Вернее даже не от игр зависит, а просто какая-то конкретная фича может требовать математики - в основном связанной с векторами. И тут либо ты её знаешь и делаешь, либо гуглишь решение - нередко поможет, либо ищешь ассет для этого, либо просто думаешь а нах оно надо мб без этого норм будет(и это не всегда прям плохой вариант - если видишь что фича непосильна и того не стоит, то на нее можно и забить).
> а какими математическими знаниями должен обладать среднестатистический разработчик одиночка, чтоб написать допустим такие инди игры как cuphead, hollow knight
Для таких игр около-нулевыми. Ну, разве что скорость и ускорение из физики стоит знать.
> Можно ли написать, не обладая начальными знаниями высшей математики
Конкретно высшая математика ваще не нужна. Только если с шейдерами будет развлекаться, то надо бы линейную алгебру понимать. Не то чтобы прям наизусть знать и считать определитель в уме, но просто понимать зачем она нужна и что с её помощью можно достичь.
> нелаганое говно по типу яндере симулятора?
Количество лагов никак не взаимосвязано со знаниями математики. У яндере симулятора кстати главная проблема это архитектура
>>862363
> Но если уж тебе так интересно, вот код контроллера персонажа в celeste, простом пиксельном 2д платформере.
Ебать говнокодище. Это конкурент яндере симулятора?
>У яндере симулятора кстати главная проблема это архитектура
Смотрел разбор каких-то слитых исходников и там чувак выяснил, что основная проблема с производительностью в каком-то всратом ассете поиска путей
> овер 1к строчек кода в одном файле
В геймдеве это бЭсТ пРаКтИс?
>Для таких игр около-нулевыми. Ну, разве что скорость и ускорение из физики стоит знать.
Аналитическая геометрия нужна, начала. Полярные координаты, перенос с поворотом, матрицы трансформации.
>Но описания архитектур нейросетей часто пишут формулами с криптографическими закорючками - таким способом математики самоутверждаются, типа они кому-то нужны и заняты чем-то важным, ведь без них эти закорючки прочитать и понять сложно. Ну, это как незаменимые говнокодеры, которые пишут такой код, который понимать и поддерживать могут только они, поэтому их уволить и хочется, и нельзя.\
Как же ты чертовски прав в чём-то.
Нах оно надо в 2д платформере?
Координаты и углы эйлера знаешь - все, готов. Если не знаешь, то за 15 минут поймешь идею и вперед.
Надо знать вектора, углы, синусы-косинусы и понимать скорость и ускорение.
>основная проблема с производительностью
Яндере Симулятора в том, что НПЦ дёргают функции для проверки чего-то 60 раз в секунду. То есть, условно, каждый школотёнок, пока не сдох, 60 раз в секунду смотрит на часы и проверяет, не пора ли пойти в класс? В нормальной игре был бы звонок, звонок прозвенел - НПЦ получили команду двигаться в класс, всё. Смотреть на часы 60 раз в секунду нет необходимости.
>>863100
>1к строчек кода в одном файле
Обычно в геймдеве высирают более 9000 файлов в одну папку и потом не могут ничего найти. Или высирают более 9000 папок в сложной иерархии, и потом не помнят, куда и что положили. А в одном файле пишут только ньюфаги, которые ещё не просекли фишку файловой системы.
>>863469
>Мозг сотрёт инфу которую ты не юзаешь.
Двачую, любые теоретические знания нужно закреплять практикой, регулярной практикой. И учиться, соответственно, тому, что будет часто нужно на практике, а не рандомным вещам.
Если ты делаешь что-то вторичное - конечно, никаких знаний иметь не нужно. Гайдики на ютабе забиваешь и вперед.
Но чем уникальнее твоя поделка, тем больше ты должен будешь думать над её реализацией. И чем больше у тебя будет опыта в проге и знаний матеши, тем легче тебе дастся проект.
В гд, как и в практически любом хобби, работает правило "изи ту лерн, хард ту мастер". Мысль очевидная, но полезная.
>Яндере Симулятора в том, что НПЦ дёргают функции для проверки чего-то 60 раз в секунду
Правда профайл юнити счел именно поиск путей самой тяжелой частью, а не это
Есть интересный парадокс, что не всегда заранее известно, какой поделке нужна сложная математика, а какой не нужна.
Например, я делал довольно сложные игры, которым математика не требовалась, и они работали на программистской логике, то есть вся сложность игры возникала из сложных комбинаций, а не того что я бы пыхтел выводя тригонометрические формулы и матрицы.
С другой стороны, с одной игрой я обосрался и бросил, хотя в нее может играть 5-летний ребенок, просто с карандашом и бумагой, но оказалось очень сложно объяснить компьютеру "соедини две точки линией, не пересекающей другие линии".
Двачну этого анона.
По моему опыту, сотни акторов, которые проверяют условие и возвращаются, не могут повлиять на производительность (не знаю, сколько в яндере одновременно персонажей, но предположу что 100-200).
А вот всякие поиски путей или физика (когда актор перемещается по террейну и заходит на всякие тротуары, обходит клумбы и машины и расходится с другими акторами) может наглухо просаживать, видимо попадая в долгие циклы, где перебирает вершины меша коллизии, например.
Никакого парадокса нет, если продумать как и что ты будешь делать
Нужно хороший знание английского языка и линейной алгебры.
Если он сможет осилить этот курс то он готов к геймдеву.
https://youtube.com/playlist?list=PLImQaTpSAdsArRFFj8bIfqMk2X7Vlf3XF
Какая разница на каком этапе ты столкнешься с этим парадоксом? Ну на этапе продумывания обнаружишь.
Это на то и разработка, что продумать все = реализовать и закодить все.
А твой совет - это уровня "просто сразу пишите без багов, тогда и исправлять не придется".
>У яндере симулятора
Его проблема в том что он ВСЕ модели загружает без лодов и обрабатывает даже если их не видно.
Я к тому, что никакого парадокса нет, если тв шаришь в алгоритмах.
>какими математическими знаниями должен обладать среднестатистический разработчик одиночка
никакими
Речь шла не про алгоритмы, а про математику.
Да и алгоритма может не быть. Ты можешь примерно думать что уж на такую простую вещь он есть, но его или нет, или он описан в таких трудночитаемых пейперах, что надо быть профессором чтобы это разобрать за несколько лет.
>но оказалось очень сложно объяснить компьютеру "соедини две точки линией, не пересекающей другие линии"
В чем суть задачи-то? Соединить две точки кривой минимальной длины, обходящий другие точки? Или группы точек как-то объединить прямыми попарно? Вроде не очень сложная задача.
>Обходящие другие линии между точками.
Для этого же есть миллион алгоритмов поиска пути. Только тебе нужны не дискретные, а непрерывные варианты. Гугли shortest path continuos space.