Я с детства хочу делать игры, но моя проблема в том, что я не понимаю как именно их делать. Имею опыт в программировании, хорошо знаю основы C++, немного Python, чуть-чуть C#, но я даже понятия не имею, как программировать игры.
Недавно я посмотрел фильм Indie game: The movie и захотел сделать 2D игру. Я побродил по просторам интернета, но так ничего и не нашел (хороших уроков или объяснений). Самое лучшее, что я нашел - это просто куски из кода, с объяснениями типа: "А вот здесь осуществляется физика". Когда я находил исходники разных игр, то я просто не мог понять: почему так?
Думал и над тем, чтобы работать на каком - нибудь движке(например Unity или Unreal Engine 4). Но посмотрев на крутых Indie разработчиков из фильма, которые сделали все сами, мне кажется, что я испытаю большее удовольствие, сделав все сам. Когда делаешь игру на "готовеньком", кажется, будто доделываешь то, что уже почти сделано. Было бы здорово: сделать игру самостоятельно, например, как Below, Limbo, Spelunky (новая версия) или те же игры из фильма.
Прошу, посоветуйте что-нибудь. Как быть? Может, я в чем-то ошибаюсь?
Стоп-стоп-стоп! Давайте попорядку. А то сейчас начнется.
Ваш вопрос не корректный. Вы задаете его так, как будто наигрались в Батлфилд 3 и хотите сделать такую же игру.
1) Идете сюда en.wikipedia.org/wiki/Game_programmer Видите, что разных направлений разработки довольно много.
2) Берете Mathematics for 3D Game Programming and Computer Graphics, Third Edition и 3D Math Primer for Graphics and Game Development, 2nd Edition. Если вам что-то не понятно, то ищите другеи способы вспоминания 1-2 курса универа: линейную алгебру, основы матана и прочие матрицы.
3) Все игры уже лет 10 строятся на том, что основной единицей геимплея является RigidBody (абсолютное твердое тело). Идете сюда www.cs.cmu.edu/~baraff/pbm/pbm.html Качаете, читаете. Дальше качаете исходники какого-нибудь Box2D. https://code.google.com/p/box2d/downloads/list и www.bulletphysics.com/ftp/pub/test/physics/papers/...
4) Ну и нетленка blog.gamedeff.com/?p=64
Да ладно, такое ощущение, что тролли не только задают, но и отвечают. Как так: вы знаете С++, но не знаете как делать игры? Как загружать изображения в память знаете? Как писать классы и создавать объекты знаете? Как наладить взаимодействие объектов тоже знаете? Тогда в чём вопрос вообще?
Если вы не понимаете как именно работать с графикой, то подсказываю: никто не гонит использовать нативный Direct3D. Берите любой подходящий фреймворк и в путь. Для C++ могу посоветовать, Например, HGE. Я сам с него начинал. Он уже не поддерживается, насколько я знаю, но форум жив, а энтузиасты потихоньку его допиливают. Примеры есть, да и сам по себе он достаточно простой. С его помощью вы сможете загружать изображения (в том числе анимированные), а так же манипулировать ими. Для создания 2Д игры самое то. В общем посмотрите примеры и сами попробуйте.
Также, смотрю, проскакивают ответы насчёт того, чтобы делать сразу трёхмерную игру, да ещё и с физикой. Да блин, начните с простого. Сделайте. как тут уже писали, кнопку с поведением, или ещё лучше, напишите тетрис или смейку. Потом уже разберётесь как что работает. Без знания основ вообще не вижу смысла хвататься сразу за 3д.
И игра - это не обязательно физика. Не надо сразу ломиться читать алгебру и начинать писать свой физический движок. Изучайте всё по мере надобности.
Для начала, на любом языке, сделайте что-нибудь простое, например тетрис, пятнашки, змейку, арканоид, 2048 или любую другую знакомую игру от начала до конца. Можете внести изменения, добавить уровни и т. д, но чтобы получился готовый продукт. На этом этапе многие отваливаются, так как реальность оказывается сложнее и скучнее. А без этого, никак, так как это даст базовые принципы создания игр.
Если нужно сильно оттянутся - ставь древний виндовс, и пиши напрямую в видеопамять, режимы EGA, VGA, SVGA, там познакомишся напрямую с VSYNC, графическими бэк-буфферами, напишешь свой метод putPixel(x,y,color), затем найдёшь где-то реализацию drawLine, которая будет использовать putPixel, потом другие методы и графические эффекты (вывод графиков придуманных функций), потом распарсишь и выведешь bmp, создашь библиотеку спрайтов, 33-м прерыванием создашь курсор мыши, навесишь спрайт, который может бытоь анимированным, будешь двигать его мышкой, потом найдёшь статью про изометрию, и создашь карту уровня, и промучаешся над тем чтобы плавно скроллить, и только потом у тебя появится Свой класс Enemy, у которого будет life=100;weapon=randomLowWeapon();.. путь джедайского маст-дая. так как ты и хотел, с нуля.
Движок Unity3D. Для начинающего самое оно (впрочем как и для профессионала). Информации в интернете очень много, как на русском, так и на английском языках. Ищите лучше.
А вообще, не хочется конечно разрушать ваши мечты и стремления, но скорее всего, у вас ничего не выйдет. Вы правда думаете, что люди из указанного вами фильма задавали подобные вопросы?
Хотите делать игры учитесь программировать и ищите работу в данной области. Набирайтесь опыта и лет через несколько пробуйте сами. А инди геймдев не так прост как вам кажется. Золотых гор там нет.
Конечно же люди из фильма задавали эти вопросы, дело только в том когда, все с чего-то начинают и для того что бы стать профи, неизбежным является начало с низов
А что именно вы не знаете, если знаете С++?
С чего начать?
Начните с простого: кнопки старт, по нажатию на которую появляется квадратик, которым вы можете управлять нажатиями стрелок
Вы сначала попробуйте состряпать что-нибудь дельное на том же Unity или Unreal, чего не постыдились бы выпустить на публику. После сего действия думаю поймете что писать все самостоятельно не лучшая затея.
@Kyberman ложь! По той простой причине, что поняв устройство юнити, можно сделать как минимум тоже самое. Единственное что, писать много игр таки надо. Ну и хотя бы 1% без помощи всяких Unity.