Как стать программистом игр - нужны ли серьезные знания математики?


2 1

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

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

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

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

Моя первая реализация казалась мне эффективной, но после запуска оказалось, что игра тормозит на большом поле. На маленьком мое решение работало быстро, но с увеличением появлялись тормоза. Пришлось садиться и оптимизировать код. 

На мой взгляд игровая индустрия очень интересная. Если любите решать задачи, то это то, куда стоит смотреть. Да, она требует математики. На сколько серьезной? Ну тут вопрос в том, что вы понимаете под словом серьезная. Опять же, я с современными AAA играми дела не имел, но 3D шутер пытался писать во времена MS DoS, когда нужно было все вручную трасировать лучи и рисовать все самостоятельно. 

Сейчас я больше делаю что-то небольшое для удовольствия. Математика тут не особо крутая и алгоритмы в основном простые. 

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


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку уже лайкнули 1 человек


Комментарии

Сергей

14 Января 2019

Привет, Михаил! Раз уж ты упомянул БД и флаги, то позволь такой вопрос.
Мне по работе досталось поддерживать базу на Oracle 10g  с полями типа CHAR(n), хранящими по сути битовые маски. Например, значение «ЗР-С--» означает, что параметры 1, 2 и 4 истинны, а 3, 5 и 6 ложны.
Есть ли преимущества такого подхода, кроме как объявить одно поле вместо многих BOOLEAN полей, и насколько такой приём оправдан? Или это не более, чем лень разработчика объявлять кучу булевых полей?
Нагрузка на БД сейчас достигает около 100 одновременных соединений, но в другом городе могла бы быть и больше.


Михаил Фленов

14 Января 2019

Одно поле вместо 10 это конечно небольшое преимущество. Лучше это или хуже - зависит от того, как Oracle работает с такими полями (какая производительность), а вот этого я не знаю. С этой базой данных у меня не на столько хороший опыт.


Добавить Комментарий

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

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

Пишите мне