Как получить опыт работы с PS3 / Xbox 360, не имея доступа к наборам для разработчиков?

24

Я начинающий программист игр, пытаюсь войти в отраслевое программирование для PS3, Xbox 360. Главная проблема, которую я вижу, - это необходимость продемонстрировать свои навыки потенциальному работодателю, но без доступа к наборам Dev для PS3 или Xbox 360, делая это напрямую невозможно.

Мой вопрос: как лучше всего продемонстрировать разработчикам консолей свои навыки?

Программирование на C ++ в DirectX для Windows кажется близким к тому, чтобы показать навыки программирования на Xbox 360, а программирование на C ++ в OpenGL кажется относительно близким к показу навыков программирования на PS3. К сожалению, из веб-исследований кажется, что и Xbox 360, и PS3 действительно имеют свои собственные библиотеки, поэтому, похоже, это не на 100% плодотворное начинание. Этот подход кажется наиболее близким, но также и наиболее трудоемким. Кроме того, вы на самом деле ничего не запускаете на консоли.

С другой стороны, программирование на XNA имеет то преимущество, что ваши игры на самом деле находятся на консоли, хотя у меня складывается впечатление, что это рассматривается не как «реальная сделка», поскольку это всего лишь оболочка для DirectX и использует C # вместо C ++.

Есть ли у кого-то знания или опыт внутри отрасли, чтобы узнать, какие игровые демоверсии было бы наиболее полезно показать потенциальному работодателю? C ++ в DirectX, OpenGL, XNA, Unreal Engine, Unity3d, Flash и т. Д. И т. Д. И т. Д.? У меня всего столько часов в день, и я хотел бы знать, как направлять свои усилия.

Мне кажется, что DirectX будет лучшим выбором, так как он кажется ближе к тому, что используется на Xbox 360, но если хорошая демоверсия на другом языке / движке так же хороша, очевидно, что на это уйдет меньше времени. другой маршрут.

Заранее спасибо за помощь и совет!

jcurrie33
источник

Ответы:

17

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

Если вы программист игр, сделайте много игр.

Если вы технический программист, сделайте множество технических демонстраций. Прочитайте интересные технические документы и попробуйте новые вещи. Если вы делаете что-то интересное, что заставляет программистов уйти, мы ХОЧЕМ поговорить с вами. Мы хотим поговорить об этой маленькой интересной вещи, которую вы сделали. Это не должно быть игрой.

КЛЮЧЕВОЙ ФАКТ: Ваша демоверсия должна работать на самых разных машинах, включая запись видео в качестве резервной копии. Отредактировано не сырье.

Kimau
источник
8

Для младшей роли я не ищу большого опыта в каком-либо конкретном API, но вместо этого хорошо разбираюсь в концепциях.

Если это графическое связанные позиции вы ищете, вы знаете , продемонстрировать 3D математики, и как использовать API хорошо (OpenGL или D3D, не важно , который на самом деле - просто убедитесь , что вы оптимизировать его хорошо). Честно говоря, все API более или менее сводятся к составлению списков объектов для рисования, их отправке и управлению состоянием - и есть хорошие и плохие способы сделать это, так что поймите это.

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

Речь идет о стиле кодирования, а не о специфике.

Я бы на самом деле избегал XNA, если вы ищете коммерческую позицию, потому что она не очень полезна в этой области.

JasonD
источник
7

Кстати, я считаю, что программирование на Xbox 360 в C # / XNA - очень хорошая замена «реальной сделки».

Рассмотреть возможность:

  • В XNA на 360 вам приходится иметь дело со сборкой мусора; в частности, вам нужно избегать слишком большого, если вообще, выделения ресурсов на кадр. В то время как в C ++ на 360, вам не нужно иметь дело со сборкой мусора (если вы не имеете дело с языком сценариев, таким как Lua), но вы все равно хотите избежать многих, если таковые имеются, выделений на кадр.
  • Для того, чтобы воспользоваться преимуществами большой вычислительной мощности 360, вам нужно сделать свой код многопоточным. Это так же верно, если не больше, в XNA, как и в C ++, из-за желания компенсировать управляемый код, который немного менее производителен, чем C ++.
  • Помимо множества вспомогательных функций и классов, предоставляемых XNA, графический API в XNA, учитывая, что он основан на DirectX, очень похож на DirectX / C ++ на 360.

Замечательная особенность XNA в том, что она позволяет вам меньше концентрироваться на технических проблемах, связанных с отображением чего-либо на экране, и больше на создании своей игры. Простое создание игры (любой игры!), Которая не содержит ошибок и работает с приличной частотой кадров - особенно в ограниченной среде, которую предоставляет XNA, - даст вам большой опыт, демонстрацию, которую вы можете продемонстрировать, и, надеюсь, ногой в дверь.

Блэр Холлоуэй
источник
5

Если вам нужны навыки программирования PS3, вы можете искать:

  • знание архитектуры PPC; это вы можете получить, выполняя разработку C / C ++ на машине PowerPC, будь то OS X на старом Mac G5 или Linux на любой машине PowerPC, включая PS3.
  • знание AltiVec; Опять же, вы можете получить это с Mac или с Linux на недавнем компьютере с PowerPC, но знания SSE3 может быть достаточно.
  • знание SPU: вы можете практиковать это только на PS3, используя Linux.

Это не научит вас программировать видеочип PS3 или использовать официальные SDK. Хотя для программирования видео, вероятно, будет достаточно общих навыков OpenGL и DirectX, а также некоторых HLSL. В Интернете также имеется много информации и материалов, не все из которых являются незаконными, чтобы получить доступ к ним (например, измененная версия Sony GCC для PS3 распространяется на условиях GPL).

Если вы хотите навыки программирования X360, вы будете искать:

  • знание архитектуры PPC: см. выше

  • знание AltiVec: см. выше

  • знание DirectX: это вы можете практиковать в Windows.

  • знание Xbox 360 SDK: сходство таково, что практика XNA очень поможет.

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

Так что, как вы упомянули, я уверен, что DirectX будет самым полезным навыком, который вы сможете освоить. Тем не менее, имейте в виду, что конкуренция также пойдет по этому пути, и некоторые дополнения могут иметь значение.

Источник : я выполнил все вышеперечисленное и получил отличную работу в отрасли.

Сэм Хоцевар
источник
3

Этот вопрос (точнее, ваши устремления) нуждается в объеме. В наше время в отрасли вряд ли существует такая вещь, как «программист игры». Если вы не собираетесь работать с очень маленькой студией или программистом рендеринга, DirectX или OpenGl на самом деле не имеют значения. То, что отличает консоли от ПК, - это ограниченная производительность, ограниченная память и многоядерные проблемы. Независимо от того, к какой отрасли программирования вы стремитесь, это важно, поэтому показ того, что вы знаете, как с этим справиться, поможет мне. Знай свой C ++. Знать подводные камни C ++. Знать, как не использовать STL. Убедитесь, что ваш код не зависит от частоты кадров, многопоточный и использует пользовательские распределители памяти. Выделите это, конечно. Я думаю, что действительно важно то, что ваша демонстрация закончена, Многие программисты останавливаются, когда работает механика ядра, в то время как торможение в игровом программировании является завершающим - покажите, что вы знаете, как это сделать.

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

Удачи!

Кая
источник
Отличный момент при выборе области, на которой нужно сосредоточиться.
jcurrie33
1

DirectX - отличный выбор. Это самая простая демоверсия для нас, потому что у нас уже есть компьютеры с Windows, скорее всего. Если вы решите использовать опцию консоли, видео будет отличной демонстрацией. Но ничто не сравнится с работой вашего живого кода.

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

Seffyroff
источник
0

Знание любого 3D API - это хорошо. Не должно иметь значения, является ли это DirectX или OpenGL. 3D концепции везде одинаковы, только API разные. Знание OpenGL не ставит вас в невыгодное положение перед кем-то, кто знает Direct3D, когда борется за работу на XBOX младшего уровня. То, что вам нужно продемонстрировать, это ваша способность что-то кодировать и понимать C ++ (или любой другой язык), стандартные библиотеки, структуры данных и алгоритмы. Знание игрового движка, такого как UDK или Unity, является бонусом. Это демонстрирует вашу способность работать с промежуточным программным обеспечением, что часто встречается в игровых компаниях. Flash был использован при разработке интерфейса, это также умение не упускать из виду.

Самое главное, что вы просто создаете демо (на любом языке), делаете его хорошо и просматриваете его до конца. Удачи!

5ound
источник