Куда мне идти после изучения С++?
Я в старшей школе и занимаюсь классом, где мы в основном разрабатываем наш собственный курс и выбираем то, чему учимся. Я решил узнать о С++ и программировании игр.
Я хотел бы узнать как можно больше об использовании С++ с OpenGL или DirectX или каким-либо другим API.
После окончания обучения С++, куда мне идти? Можете ли вы порекомендовать книгу по программированию игр?
Ответы
Ответ 1
Говоря, что вы думаете, что знаете, что большинство из С++ напоминает мне, когда я сказал, что я знал, что я знаю большую часть Java. Когда вы говорите такие вещи о языках, которые вы не использовали в течение 8 лет, вы попали в зону плохого комфорта. Протяните себя. Много. Прочтите книгу о языке. Вы будете шокированы тем, что не знаете.
Пока у меня нет хороших советов по программированию игр, я могу сказать вам, что в качестве программиста вы должны полностью решать основы, в полной мере. Для меня это означает чтение кода Complete, GoF и все что угодно Мартином Фаулером (не один раз, а несколько раз). Это также означает расширение ваших знаний о технологиях с помощью игрушечных проектов.
Тогда вы можете делать все, что хотите, и делать это хорошо.
Ответ 2
Единственный способ научиться делать игры - это сделать игры. Я всегда слышал это как предлагаемый порядок:
- Pong
- Tetris
- Pac-Man
- Братья Супер Марио
Конечно, я имею в виду "игры такого типа", а не точные клоны. Идея заключается в том, что вы параллельно развиваете видеоигры, перейдя с одноэкранных игр на прокрутку экрана. Кроме того, концепция ИИ вводится на полпути. Вы отмечаете, что изучаете OpenGL - я начну с 2D-игр с самого начала создания активов, и детали 2D-графического движка намного проще. Будет меньше времени на "видео", и больше на "игру".
После того, как вы закончите первые четыре небольших проекта, начните думать о том, как сделать игру в жанре Doom.
К сожалению, нет никаких "очевидных" книг по игровому программированию, как в общем программировании (Knuth, Wizard Book). Из тех, что я прочитал, мне больше всего понравилась серия "Game Programming Gems", в которой содержатся небольшие фрагменты идей, которые помогут вам освоить ваши игры.
Ответ 3
Да, я знаю, что не смогу сделать супер-потрясающую MMORPG,
К этому я должен сказать... Почему бы и нет? Люди, которые работают над этими вещами, являются просто смертными, такими как вы и я. У них нет сверхчеловеческих способностей, которые вы не можете приобрести.
Верно, что существует только конечное число заданий и конечное число людей, которые успешно справляются с заданной задачей, но если вы искусственно ограничиваете то, что возможно, вы не делаете этого или даже не изучаете навыки вам нужно.
Например... Когда я был студентом, меня интересовали операционные системы. Если бы я сказал что-то пораженческое, как "никто не работает на ядрах в эти дни", и просто сдался, я бы не узнал ничего о развитии ядра, и я бы не стал так хорошо выполнять свою работу сегодня.
Я бы сказал вам... Идите в приличный колледж, занимающийся информатикой, не прекращайте кодирование из интереса в свое время, и подавайте заявку на стажировку и работу в той области, в которой вы работаете заинтересованы. Больше всего не бойтесь быть амбициозными.
Ответ 4
Вы должны потратить некоторое время на изучение как можно большего количества математики. Основные поля, такие как Geometry, Algebra, Trig и Matrix Algebra, будут, ИМХО, минимальным.
Ответ 5
Я тоже однажды подумал, что знаю большую часть С++... Затем я читал "Эффективный С++" , "Эффективный STL" , "С++ Gotchas" и "Modern С++ Design" , и я понял, насколько я ошибался.
Ответ 6
У всех разные мнения, но я бы рекомендовал просто прыгать в OpenGL. Это довольно легко понять, как только вы это знаете, гибкой и кросс-платформенной. Он также широко документирован.
Я бы также настоятельно рекомендовал расчесывать свою математику. Математика - это такой важный навык, когда речь заходит о 3D. Вы должны знать о матрицах, векторах, поворотах, переводах, ect...
Ответ 7
Вы можете посмотреть некоторые игры с открытым исходным кодом на С++, такие как OpenLieroX или другие, и принять участие в их разработке.
Или создайте новую игру самостоятельно с нуля, что может занять некоторое время. Подумайте о чем-нибудь и попытайтесь его реализовать.
Вы должны взглянуть на SDL-библиотеку. Эта библиотека - очень простой способ настроить главное окно, получить события с мыши и клавиатуры (или даже геймпада и других) и нарисовать простые 2D-материалы. И вы также можете использовать его для инициализации среды OpenGL.
Ответ 8
Как говорили другие, я СЕРЬЕЗНО ставил под сомнение ваше выражение, чтобы быть знакомым с большинством С++, но в стороне...
Вам нужна хорошая основа в алгоритмах и структурах данных, а также базовое понимание классической компьютерной модели Non Neumann (или Гарварда, возьмите ваш рис). Я бы не стал читать ANYHING, связанный с разработкой программного обеспечения, пока я не узнал, по крайней мере, самые общие структуры данных и их обычные реализации. Вам не будет полезно читать о моделях, если вы не знаете, что std:: map более подходит, чем std::vector, если вам нужно искать тысячу элементов 100 раз в секунду, чтобы найти правильный элемент для обновления в память, которая соотносится с определенным элементом в вашей игровой среде.
После этого будет полезно хорошее понимание concurrency, но если вы хотите больше узнать о дизайне, это будет время.
Ответ 9
Если вы хотите продолжить игру, С++ - это хорошее место для начала. Вы также можете проверить С#, поскольку он используется Microsoft в XNA (XBox), Second Life, а Unity - на смартфонах.
Пока я не соглашался ни с кем по математике и чтению, что вам нужно делать, я думаю, что лучше просто свернуть рукава и программу. Прочитайте код других людей, а затем прочитайте, чтобы вы могли понять, почему они делают то, что делают.
Если вы думаете, что хорошо знаете С++, следующим шагом будет научиться использовать его для создания лучшего программного обеспечения. Для этого я бы начал читать Эффективный С++.
Если у вас действительно есть дескриптор на С++, то, возможно, этот поток StackOverflow ответит на ваш вопрос об играх.
Лично, даже если ваша цель - игровое программирование, я бы отделился от этого, чтобы получить прочную основу в качестве разработчика.
Возможно, вам нужно сделать небольшое веб-программирование, чтобы понять, что это такое. Возможно, что-то вроде Ruby on Rails.
В качестве альтернативы вы можете попробовать написать простой компилятор или даже операционная система, чтобы понять, что происходит под капотом, и узнать, что это тоже программы, написанные смертными.
Вместо того, чтобы писать свои собственные, вы также можете участвовать в проекте с открытым исходным кодом. Если бы у меня было время, я бы потратил время на чтение кода Haiku и найти что-то, чтобы внести свой вклад. Вот список игр с открытым исходным кодом, которые вы также можете рассмотреть.
Ваши шансы на получение достойной работы, вероятно, немного улучшатся, если вы знаете Java или .NET, так что это также варианты. Если вы решите .NET, я рекомендую проверить Mono.
Ответ 10
Не забывайте, что программирование игры - это не только графика! Там AI, звук, вход, сеть и т.д. И т.д. - есть много и много вещей, которые входят в "тройную A" видеоигру, в которой участвуют многие люди, время и энергия...
Если вы хотите сделать инди-игру, я лично рекомендую сначала приложить к созданию простого клона 2D-игры, такого как тетрис, или что-то в этом роде, чтобы вы могли точно понять, что связано с созданием игры.
Возьмите также решение для управления версиями - могу ли я рекомендовать Bitbucket и TortoiseHg.
И самое главное все, получайте удовольствие!:)
Ответ 11
Также не забудьте посетить https://gamedev.stackexchange.com/ во время обучения
Ответ 12
Обычно я бы сказал, что вы учитесь на совершенно другом языке, однако вы, скорее всего, очень новичок в программировании в целом. Поэтому я собираюсь пойти на изучение другого языка. Попробуйте Python или Ruby, потому что они динамически типизированы. Позже, когда у вас есть основа в структурах данных, разработке/анализе алгоритмов и т.п., Попробуйте функциональный язык, такой как Haskell, Scala, Lisp или OCaml.
Ответ 13
Если вы спрашиваете, куда идти, как в послевузовском образовании, включающем разработку игр в качестве программиста, я недавно закончил выпускник Full Sail и очень рекомендую его. Не совершенный, не далеко, но если это действительно то место, где у вас есть страсть, идите на это.
Насколько это было бы важно для разработки игр?
Отказ от ответственности: далеко не полный список.
Общие:
- Архитектура программного обеспечения
- Шаблоны проектирования
- Структуры данных
- Архитектура машины
Математика/Физика:
- Линейная алгебра (матрица и вектор)
- Физика твердого тела
- Havok Physics Engine
- PhysX
AI:
- Конечные государственные машины
- Планировщики
- Алгоритмы поиска
- Флокирующие алгоритмы
Scripting:
- Системы событий/сообщений
- Python
- LUA
Графика:
- Direct3D и HLSL
- OpenGL и GLSL
Input:
Аудио:
- OpenAL
- DirectSound
- FMOD
- Wwise
Оптимизация:
- Многопоточность
- Управление памятью/переработка
- Архивация/Сжатие/декомпрессия
- SIMD/SSE
- Сборка
Инструменты:
- С#/.NET Framework/Windows Forms
- Java
Работа в сети:
- Архитектура сервера и клиента
- Архитектура сети
- MySQL
Ответ 14
Попробуйте пойти в ваш книжный магазин университета Loca. Они катают книги для своих продвинутых занятий, которые вам могут быть интересны.