Я заканчиваю свой первый год обучения CS, который был в основном курсом на основе Java. Я хотел бы немного помочиться с разработкой игры, но я не уверен, с чего начать.
Некоторые люди предлагают мне начать с создателя игры, который имеет язык сценариев в стиле C (который должен быть легко подобран), поскольку он, вероятно, самый простой и позволяет мне сосредоточиться в основном на игровом дизайне и на том, как в целом игра сочетается.
Я вижу, что многие люди рекомендовали XNA, поскольку он имеет хорошую абстракцию opengl и directX через свои API. Я также слышал, что C # очень похож на Java.
Я также рассматривал программирование игр на Java, так как мне это вполне удобно, и я много читал о многопоточности и API-интерфейсах 2d-графики.
Наконец, мой друг недавно показал мне пигмею, которая также звучит очень хорошо, хотя я не очень много знаю об этом.
Я не знаю, является ли C ++ хорошей отправной точкой, многие посты, которые я видел для начинающих разработчиков игр, не рекомендуют его для первого игрового проекта.
Буду признателен за любой вклад, особенно от тех, кто вошел в разработчика игр из Java-фона
источник
Ответы:
Есть много хороших выборов. (Я преподаю CS1 и CS2, а также программирование игр.) Прежде всего, конечно, научиться думать, как ученый. Не слишком привязывайтесь к языку, потому что понятия действительно универсальны.
Java - довольно хороший язык, но создание игры на Java немного утомительно. Есть несколько интересных движков, которые делают процесс немного проще. К сожалению, может быть болезненно прикреплять игровой движок к вашему инструменту редактирования.
Мне нравится движок FANG (к сожалению, я пока не могу публиковать гиперссылки, поэтому поищите его в Google.) Одна интересная часть этого проекта - онлайн-редактор. Это означает, что вы можете начать прямо сейчас, не связываясь с настройками затмения.
Я действительно не фанат Game Maker. Графический интерфейс хорош для людей, которые не хотят учиться программировать, и это достойный (но не очень) инструмент для создания прототипов. Однако есть две вещи, которые мне не нравятся. Во-первых, это коммерческий. Это не плохо, но если есть бесплатные альтернативы с открытым исходным кодом, которые так же хороши (и есть), возможно, вам следует сначала изучить их. Большая проблема с Game Maker - это язык сценариев. В конце концов вы собираетесь перерасти GUI и захотите начать писать код. Язык сценариев в GM довольно задом наперед. Поскольку вы являетесь специалистом CS, вы (я надеюсь) заинтересованы в повторном использовании кода, элегантности, ясности, эффективности и модульности. Язык GM разочарует вас.
Я люблю Python и Pygame. (На самом деле, я написал книгу о них. Посмотрите все мои заметки и онлайн-видео на моем сайте, если хотите. Добро пожаловать на эти ресурсы, есть ли у вас эта книга или нет.) Python - хороший элегантный язык, который не ' Это слишком сложно для изучения (особенно если вы уже знаете, как программировать.) Pygame является оберткой на популярном движке SDL 2D. Фактически, я добавил в Pygame второй упаковщик, чтобы с ним было так же легко работать, как с Flash.
Говоря о Flash, я не думаю, что это того стоит. (Я знаю, что вы не спрашивали). Это хорошая платформа, но стоимость и неопределенность в отношении того, как она будет работать на мобильных устройствах, означает, что она может быть не таким уж хорошим инструментом обучения. (Я тоже написал книгу о разработке игр на Flash, но я больше не учу Flash.)
Вот еще несколько замечательных вещей, которые стоит попробовать. Получить копию нуля из MIT: scratch.mit.edu Это сделано для детей, но не позволяйте этому оттолкнуть вас. Это абсолютно невероятный инструмент для игры и анимации. В программировании используются плитки, поэтому с ними легко начать. Вы будете очень удивлены тем, что вы можете сделать с этим.
Вы также можете попробовать Алису из Carnegie Melon www.alice.org . Последнее (3-е) издание на самом деле является расширением Java, которое использует Sims2 Models.
И Скретч, и Алиса свободны.
Еще один замечательный инструмент для изучения - Blender www.blender.org
Это инструмент для 3D-моделирования, но многие люди не знают, что это еще и полноценный игровой движок с интерфейсом программирования методом перетаскивания. После того, как вы переросли плитки, в него встроена поддержка Python.
Теперь я довольно заинтересован в HTML5 (который является всего лишь HTML - это действительно HTML, CSS и JavaScript). Он не совсем как среда разработки игр, но я верю, что он станет крупным игроком. Моя следующая книга будет посвящена разработке игр на HTML5.
Удачи вам, и дайте мне знать, если у вас есть еще вопросы.
источник
Это зависит от того, какова ваша цель и в какую часть разработки игр вы хотите попасть.
Вы больше интересуетесь фактами о том, как работают игровые движки и что-то строят с нуля, или вы хотите как можно быстрее приступить к разработке игровых частей.
Гайки и болты: XNA - хороший способ погрузить пальцы на эту арену. Фреймворк многое делает для вас, но вы можете постепенно заменять каждый фрагмент своим собственным кодом, когда вам станет комфортнее с C #. Изучение C # хорошо для будущих позиций разработки игр, так как инструменты часто создаются с C #.
Программирование геймплея: Unity - хороший вариант здесь. Бесплатно и позволяет кодировать на нескольких языках, включая JavaScript и C #. Вы сможете быстро приступить к работе, что является хорошим стимулом для мотивации. Кроме того, вы можете перейти на другой язык и даже смешать языки, чтобы помочь вам попрактиковаться в расширении вашего понимания.
Приятным моментом является то, что они оба могут свободно играть и могут быть подключены к различным аппаратным средствам при довольно минимальных затратах.
источник
Всегда можно сделать некоторые игры на основе Java, ничего плохого в них нет (http://zetcode.com/tutorials/javagamestutorial/)
XNA и AS3 очень близки и могут создавать игры настолько сложные или настолько простые, насколько это необходимо. (хотя то же самое относится и к Java)
Одна вещь, которую нужно помнить, это всегда практиковаться и просто поиграться с кодом.
источник
Java Monkey Engine
Если вам удобнее всего работать с Java, вы можете использовать Java Monkey Engine для фреймворка, используемого при создании игр. В нем также имеется достаточное количество документации / учебных пособий, включая инструкции по интеграции с Netbeans и Eclipse.
источник
Единство
Я бы сказал, попробуйте Unity . У них есть бесплатная версия, и вы можете промокнуть за несколько часов, чтобы получить основную идею, следуя двум учебникам, предоставленным Unity:
Еще одна интересная вещь в Unity - это то, что вы можете использовать JavaScript в качестве языка сценариев и опубликовать свою игру на Windows, MacOS, Web, iPhone, а теперь и на версии 3 на устройствах Android.
Также они используют движок StackExchange для ответов Unity, и у них есть замечательное сообщество для всех ваших вопросов, связанных с Unity.
источник
Любой из них был бы хорошим началом, выступая в роли разработчика, чье начальное образование в области CS было на Java.
C # очень близок к Java (я иногда шучу, что это ограниченная платформа Java с лучшими библиотеками), поэтому XNA может быть хорошим выбором. Minecraft разработан на Java с библиотекой игр lwjgl, так что если вы хотите придерживаться Java, это хороший метод. Конечно, 3D-разработка довольно сложна; в зависимости от ваших знаний, опыта и настойчивости вы можете подождать с 3D (или даже с 2D в 3D-системе), пока вы не получите больше образования за плечами.
Для 2D-решений: Game Maker очень прост и используется для создания отличных игр. Вы должны быть в состоянии выбрать язык сценариев довольно легко, но это может быть слишком просто для человека с годичным опытом работы с Java. Я разрабатываю во Flash, используя чистый AS3 ( учебник ), который достаточно близок к Java, чтобы ваши навыки легко переводились.
источник
Я настоятельно рекомендую перейти с XNA. Это довольно мощная и хорошо поддерживаемая платформа с растущим сообществом. XNA действительно начинает находить свое «место» в экосистеме теперь, когда платформа поставляется на большем количестве платформ, чем когда-либо (включая Windows Phone 7). Однако, что более важно, использование XNA заставит вас изучать C # и общую разработку .NET. Вы должны получить опыт работы с этой платформой независимо от того, решите ли вы заняться разработкой игр, поскольку разработка .NET развивается и имеет очень здоровый рынок труда. С другой стороны, Java уже некоторое время медленно умирает, а недавние события лишь ускорили ее упадок. Если ваша CS-программа, как и та, которую я закончил, в значительной степени ориентирована на Java, то она будет полезна для изучения C # / .NET в свободное время.
Даже если Java продолжает жить и вы решите продолжить карьеру в разработке Java, вам, скорее всего, придется в любом случае интегрироваться с системами .NET. Так что, как бы то ни было, опыт поможет вам только в долгосрочной перспективе.
источник
Если вы интересуетесь игровым дизайном , почему бы не начать с создания карточной игры или чего-то, что вообще не требует программирования? Это позволит вам сосредоточиться на дизайне и механике игры, а не пробиваться через API, языки и фреймворки, с которыми вы не знакомы.
источник
Вам также может понравиться использование http://Processing.org . Это отличная среда для изучения графического программирования. Хотя это не совсем инструмент для разработки игр, он может многое предложить. Это язык является расширением / упрощением Java, и он будет быстро выучить.
источник
Не связанный с программированием совет от меня:
Создайте аккуратный проект и покажите его своим профессорам.
Так я устроился на летнюю работу программистом после первого и второго года обучения в школе.
источник
Если вы просто ищете разработку игр, зачем одновременно изучать другой язык? Я бы придерживался Java, если вы не хотите изучать новый язык.
Основные варианты Java, о которых я знаю, это jMonkeyEngine, движок трехмерной графики, который обычно считается довольно хорошим.
И есть JOGL, который является Java-оболочкой над OpenGL. Это, естественно, намного более низкий уровень.
Если вы только начинаете и хотите больше работать с логикой, чем с буферами, привязкой шейдеров и т. П., Переходите к jMonkeyEngine. Если вы хотите углубиться, чтобы начать, пойти с JOGL.
Если вы хотите выучить новый язык, из C # и Python я бы сказал C #. Синтаксис очень похож на Java, а XNA и SlimDX очень хороши для графики. XNA - это более высокий уровень, и он кое-что для вас сделал. Тем не менее, это идет с ограничением только для Windows, без Mono.
Python - это очень простой язык (максимум у меня ушло около недели с небольшим вниманием из книги, написанной в год C ++). Pygame является оболочкой для библиотек SDL из C, поэтому, вероятно, не обладает таким количеством функций, как XNA.
источник
Еще один голос за единство . В течение следующих нескольких лет вы будете иметь достаточно времени для изучения C ++ и других языков. Если ваша цель - разработать игру, то увлечение тем, что по сути является работой над движком, займет слишком много времени. Если вы хотите стать разработчиком движка, обязательно вернитесь и попробуйте реализацию более низкого уровня.
Движок Unity позволит вам абстрагироваться от большинства деталей, чтобы вы могли сосредоточиться на программировании игрового процесса. Сообщество на форумах и Unity ответы на основе Stack Exchange невероятно полезны. Вы можете программировать на Javascript или C #. Исходя из Java, я начал с Javascript, потому что для него было написано много уроков, но он переключился на C # (что было довольно легко).
Я думаю, что XNA и Pygame также могут быть хорошими (так как они отвлекают некоторые из более утомительных вещей), но у меня нет опыта с ними.
Наконец, не ставьте перед собой слишком большой цели. Может быть очень легко недооценить, как много времени занимает реализация функций в игре. Начните с основной игровой механики, которая позволит вам быстро привести игру в играбельное состояние. Затем вы можете начать добавлять другие элементы.
Веселиться!
источник
XNA - отличное решение, если вы уходите с Java. C # будет искать и читать почти идентично Java для вас, так что вы сможете подключиться очень быстро, не изучая новый синтаксис. Платформа XNA предоставляет множество хороших API-интерфейсов для работы, а также есть много бесплатного открытого кода «Microsoft Permissive License», который поможет вам начать работу над некоторыми проектами.
Я бы не рекомендовал вам использовать Java, большинство графических API ужасны, нет поддержки тонны 3d, и вообще Java просто работает медленно; Для большинства приложений Java нет ничего особенного, но видеоиграм нужно МНОГО производительности.
C ++ - это способ создавать видеоигры, довольно много времени. Однако переход от java -> C ++ будет довольно неприятным. Не говоря уже о том, что большинство низкоуровневых хардкорных графических программ на самом деле написано в стиле C, а не в C ++, так что вы собираетесь выполнить несколько арифметических операций с указателями, чтобы попытаться снизить производительность. Это может быть интересно, но отнимает много времени. Это также может занять много времени, чтобы вы начали.
Есть множество хороших игровых движков, таких как Ogre, но потом вам придется потратить кучу времени на изучение того, как сначала сделать что-то с ним, это может показаться слишком сложным.
Будьте осторожны, какими бы удивительными ни были ваши игровые идеи, помните, что видеоигры дороги, требуют много времени на разработку и имеют большие команды разработчиков.
Если вы хотите создать игру и быть единственным человеком, который над ней работает, вы почти собираетесь НАЙТИ, чтобы сделать ее 2D-игрой (хотя в любом случае вы должны начать с 2D), и вам придется начать ДЕЙСТВИТЕЛЬНО, ДЕЙСТВИТЕЛЬНО просто.
Почти все, что вы можете себе представить, было бы слишком амбициозным на данный момент.
Мой совет: получите бесплатную Visual Studio 2010 Express, если у вас ее нет. Загрузите игровую студию XNA и .net framework 4. Загрузите демонстрационную версию XNA. Запустите демо, затем просмотрите код и посмотрите, что и для чего. Попробуйте прочитать документацию о том, как XNA делает 2D-игры.
Затем выберите свою любимую старую школу, супер легкую игру. Pac-человек? Pong? Астероиды? Космические захватчики? Марио? Выбрать что-то глупо, просто глупо. Тогда просто переделайте игру точно так, как она была. Вам достаточно беспокоиться о программировании и изучении нового API, который не нужно беспокоить при разработке игр; это просто отвлечет вас.
Затем, как только вы запустили свой клон марио или что-то еще, вы можете начать экспериментировать с игровым процессом и попробовать добавлять новые вещи.
Начните с маленьких шагов, и это будет намного веселее, и вы узнаете много нового.
Попробуйте перейти к изменению исходного кода Quake3 на C ++, чтобы сделать игру, и вы действительно будете разочарованы, и даже если вы заставите ее работать, вы многому не научитесь делать это.
ПРОСТО ИМЕТЬ УДОВОЛЬСТВИЕ: D
источник
вспышка
Flash AS3 - это фантастический язык, позволяющий сосредоточиться на важных концепциях ООП, не беспокоясь об управлении памятью и написании заголовочных файлов. Это также в значительной степени полный 2D-движок с деревом отображения, системой событий и множеством других полезных функций.
Существует огромное сообщество разработчиков Flash-игр, и, вопреки распространенному мнению, вы можете разрабатывать Flash-игры, используя инструменты с открытым исходным кодом. Если вы используете Windows, я бы порекомендовал FlashDevelop .
Я бы сказал, что Flash еще более кроссплатформенный, чем Java или любая другая технология, кроме Unity. 99% людей могут просматривать Flash-материалы в своем браузере на рабочем столе, поэтому вашими творениями легко поделиться со всем миром. Большинство смартфонов постепенно получают поддержку Flash, а для iOS, единственной платформы, которая не поддерживает Flash в браузере, вы можете создавать приложения с Flash CS5 (хотя это имеет свою стоимость).
Я думаю, вам было бы стыдно бороться с чем-то более сложным, таким как C ++ или даже C #, когда вы можете начать изучать основы создания игр прямо сейчас с AS3. Как только вы поймете AS3, вам будет легче переключаться на другие языки позже. В моем собственном случае, я был разработчиком Flash, но я научился программировать с Objective-C и сумел сделать хитовую игру для iPhone. Сделайте себе одолжение и посетите http://www.flashgamedojo.com/ - я не думаю, что вы будете разочарованы!
Единство
В Unity есть много тех же преимуществ Flash, но в 3D.
С Unity вы можете программировать на C # или на UnityScript (это javascript-y). Это не с открытым исходным кодом, но это бесплатно. Это очень хорошо поддерживается, и есть отличное сообщество. Проблема разработки 3D-игр заключается в том, что для большинства игр вам понадобится много искусства и ресурсов. Это также может быть проблемой для 2D-игр, но, как правило, 3D-искусство занимает намного больше времени, и сделать «программистское искусство» намного сложнее.
Заметка по открытому исходному коду
В использовании программного обеспечения с открытым исходным кодом нет ничего плохого, но вы теряете самообладание, если используете его только потому, что оно с открытым исходным кодом. Выберите лучший язык и инструменты, которые помогут вам учиться быстрее и с минимальными трудностями. В том же духе менталитет «сначала научиться самому сложному» (т. Е. C ++) сумасшедший. Что вы действительно должны изучать, так это логику, а не синтаксис, так что учитесь на любом языке с меньшим багажом и препятствиями для входа. На мой взгляд, это AS3.
источник