Консультации для первого года обучения по специальности CS [закрыто]

17

Я заканчиваю свой первый год обучения CS, который был в основном курсом на основе Java. Я хотел бы немного помочиться с разработкой игры, но я не уверен, с чего начать.

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

Я вижу, что многие люди рекомендовали XNA, поскольку он имеет хорошую абстракцию opengl и directX через свои API. Я также слышал, что C # очень похож на Java.

Я также рассматривал программирование игр на Java, так как мне это вполне удобно, и я много читал о многопоточности и API-интерфейсах 2d-графики.

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

Я не знаю, является ли C ++ хорошей отправной точкой, многие посты, которые я видел для начинающих разработчиков игр, не рекомендуют его для первого игрового проекта.

Буду признателен за любой вклад, особенно от тех, кто вошел в разработчика игр из Java-фона

avatarX
источник
5
C ++ сложен, чертовски сложен, но в конечном итоге легче, если вы попытаетесь обдумать это до того, как Java действительно установит его. Определенно труднее выучить C ++ из фона Java, чем выучить Java из фона C ++. joelonsoftware.com/articles/ThePerilsofJavaSchools.html
Дэвид Янг
1
Я бы умер, пытаясь выучить C ++ после запуска с Java, я начал с более старого стиля C ++, а затем выучил Java. Если вы беспокоитесь о переходе к указателям, я рекомендую просто изучить прямое программирование на C и Unix. Это вводит вас в совершенно новое мышление, поэтому вы с меньшей вероятностью будете применять неприменимые концепции Java.
Майкл Бартнетт

Ответы:

14

Есть много хороших выборов. (Я преподаю 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.

Удачи вам, и дайте мне знать, если у вас есть еще вопросы.

Два пи
источник
Спасибо за ваш вклад, я проверяю ваш сайт, пока мы говорим. Я уверен, что это будет неоценимо, если кто-то с вашим опытом внесет свой вклад
avatarX
Обработка указателей не универсальна = (проклинаю мою Java, приводящую.
Дэвид Янг
Я хотел бы знать, почему вы думаете, что создание игры на Java утомительно. Кроме того, кажется, что вы предлагаете Python менее утомительным. С таким большим количеством великолепных сред и библиотек, ориентированных на Java-игры, это выглядит очень смелым заявлением.
Зфедорана
1
Для начинающего программиста все в Java может быть более утомительным. Сравните что-то вроде printf. В python это часть инструкции print: выведите «% s, ваш счет% d»% (студент, счет). В php вы должны привести все примитивы к классам-оберткам, привести их к объектам и создать массив анонимных объектов. Я люблю Java. (Я учил этому много лет и написал об этом книгу.) Однако, если цель состоит в том, чтобы заставить кого-то заняться программированием игр, я хочу язык, который как можно больше мешает.
Два пи
Спасибо, что нашли время, чтобы прокомментировать. Это помогло мне понять, откуда ты. Тем не менее, я еще не совсем уверен, что python - лучший язык для студентов, и это похоже на то, как профессорско-преподавательский состав моего университета ставит под сомнение их недавние изменения в Python для студентов первого курса. Возможно, студенты просто застряли на новых проблемах. Раньше студенты делали все «публично статичным», теперь им трудно понять разницу между типами.
Зфедоран
5

Это зависит от того, какова ваша цель и в какую часть разработки игр вы хотите попасть.

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

Гайки и болты: XNA - хороший способ погрузить пальцы на эту арену. Фреймворк многое делает для вас, но вы можете постепенно заменять каждый фрагмент своим собственным кодом, когда вам станет комфортнее с C #. Изучение C # хорошо для будущих позиций разработки игр, так как инструменты часто создаются с C #.

Программирование геймплея: Unity - хороший вариант здесь. Бесплатно и позволяет кодировать на нескольких языках, включая JavaScript и C #. Вы сможете быстро приступить к работе, что является хорошим стимулом для мотивации. Кроме того, вы можете перейти на другой язык и даже смешать языки, чтобы помочь вам попрактиковаться в расширении вашего понимания.

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

wkerslake
источник
4

Всегда можно сделать некоторые игры на основе Java, ничего плохого в них нет (http://zetcode.com/tutorials/javagamestutorial/)

XNA и AS3 очень близки и могут создавать игры настолько сложные или настолько простые, насколько это необходимо. (хотя то же самое относится и к Java)

Одна вещь, которую нужно помнить, это всегда практиковаться и просто поиграться с кодом.

Призраки
источник
3

Java Monkey Engine

Если вам удобнее всего работать с Java, вы можете использовать Java Monkey Engine для фреймворка, используемого при создании игр. В нем также имеется достаточное количество документации / учебных пособий, включая инструкции по интеграции с Netbeans и Eclipse.

lathomas64
источник
Я должен сказать, что JMonkeyEngine выглядит хорошо. Я обязательно проверю это. Спасибо за ваш вклад
avatarX
2

Единство

Я бы сказал, попробуйте Unity . У них есть бесплатная версия, и вы можете промокнуть за несколько часов, чтобы получить основную идею, следуя двум учебникам, предоставленным Unity:

Еще одна интересная вещь в Unity - это то, что вы можете использовать JavaScript в качестве языка сценариев и опубликовать свою игру на Windows, MacOS, Web, iPhone, а теперь и на версии 3 на устройствах Android.

Также они используют движок StackExchange для ответов Unity, и у них есть замечательное сообщество для всех ваших вопросов, связанных с Unity.

Lipis
источник
1

Любой из них был бы хорошим началом, выступая в роли разработчика, чье начальное образование в области CS было на Java.

C # очень близок к Java (я иногда шучу, что это ограниченная платформа Java с лучшими библиотеками), поэтому XNA может быть хорошим выбором. Minecraft разработан на Java с библиотекой игр lwjgl, так что если вы хотите придерживаться Java, это хороший метод. Конечно, 3D-разработка довольно сложна; в зависимости от ваших знаний, опыта и настойчивости вы можете подождать с 3D (или даже с 2D в 3D-системе), пока вы не получите больше образования за плечами.

Для 2D-решений: Game Maker очень прост и используется для создания отличных игр. Вы должны быть в состоянии выбрать язык сценариев довольно легко, но это может быть слишком просто для человека с годичным опытом работы с Java. Я разрабатываю во Flash, используя чистый AS3 ( учебник ), который достаточно близок к Java, чтобы ваши навыки легко переводились.

Грегори Эйвери-Вейр
источник
1

Я настоятельно рекомендую перейти с XNA. Это довольно мощная и хорошо поддерживаемая платформа с растущим сообществом. XNA действительно начинает находить свое «место» в экосистеме теперь, когда платформа поставляется на большем количестве платформ, чем когда-либо (включая Windows Phone 7). Однако, что более важно, использование XNA заставит вас изучать C # и общую разработку .NET. Вы должны получить опыт работы с этой платформой независимо от того, решите ли вы заняться разработкой игр, поскольку разработка .NET развивается и имеет очень здоровый рынок труда. С другой стороны, Java уже некоторое время медленно умирает, а недавние события лишь ускорили ее упадок. Если ваша CS-программа, как и та, которую я закончил, в значительной степени ориентирована на Java, то она будет полезна для изучения C # / .NET в свободное время.

Даже если Java продолжает жить и вы решите продолжить карьеру в разработке Java, вам, скорее всего, придется в любом случае интегрироваться с системами .NET. Так что, как бы то ни было, опыт поможет вам только в долгосрочной перспективе.

Майк Штробель
источник
действительно.com/ jobtrends? q = java & l = и действительно.com/ jobtrends? q= .net & l= довольно хорошо представляют рыночный спрос на оба. Похоже, что Java на самом деле растет.
Дэвид Янг
Я не учел приток Java-разработки, вызванный успехом платформы Android. Вероятно, это во многом связано с переходом на новые вакансии в конце 2008 и начале 2009 года. Интересно будет посмотреть, как WP7 и доступность MonoTouch для iOS и MonoDroid для Android влияют на мобильность Java.
Майк Штробель
1

Если вы интересуетесь игровым дизайном , почему бы не начать с создания карточной игры или чего-то, что вообще не требует программирования? Это позволит вам сосредоточиться на дизайне и механике игры, а не пробиваться через API, языки и фреймворки, с которыми вы не знакомы.

Trimbo
источник
1

Вам также может понравиться использование http://Processing.org . Это отличная среда для изучения графического программирования. Хотя это не совсем инструмент для разработки игр, он может многое предложить. Это язык является расширением / упрощением Java, и он будет быстро выучить.

xer0x
источник
0

Не связанный с программированием совет от меня:

Создайте аккуратный проект и покажите его своим профессорам.

Так я устроился на летнюю работу программистом после первого и второго года обучения в школе.

гвоздильщик
источник
Это может быть полезно, но на самом деле оно не решает кризис языка / API, к которому приходит OP.
Коммунистическая утка
0

Если вы просто ищете разработку игр, зачем одновременно изучать другой язык? Я бы придерживался Java, если вы не хотите изучать новый язык.

Основные варианты Java, о которых я знаю, это jMonkeyEngine, движок трехмерной графики, который обычно считается довольно хорошим.

И есть JOGL, который является Java-оболочкой над OpenGL. Это, естественно, намного более низкий уровень.

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

Если вы хотите выучить новый язык, из C # и Python я бы сказал C #. Синтаксис очень похож на Java, а XNA и SlimDX очень хороши для графики. XNA - это более высокий уровень, и он кое-что для вас сделал. Тем не менее, это идет с ограничением только для Windows, без Mono.

Python - это очень простой язык (максимум у меня ушло около недели с небольшим вниманием из книги, написанной в год C ++). Pygame является оболочкой для библиотек SDL из C, поэтому, вероятно, не обладает таким количеством функций, как XNA.

Коммунистическая утка
источник
0

Еще один голос за единство . В течение следующих нескольких лет вы будете иметь достаточно времени для изучения C ++ и других языков. Если ваша цель - разработать игру, то увлечение тем, что по сути является работой над движком, займет слишком много времени. Если вы хотите стать разработчиком движка, обязательно вернитесь и попробуйте реализацию более низкого уровня.

Движок Unity позволит вам абстрагироваться от большинства деталей, чтобы вы могли сосредоточиться на программировании игрового процесса. Сообщество на форумах и Unity ответы на основе Stack Exchange невероятно полезны. Вы можете программировать на Javascript или C #. Исходя из Java, я начал с Javascript, потому что для него было написано много уроков, но он переключился на C # (что было довольно легко).

Я думаю, что XNA и Pygame также могут быть хорошими (так как они отвлекают некоторые из более утомительных вещей), но у меня нет опыта с ними.

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

Веселиться!

acmshar
источник
0

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

SpacePrez
источник
0

вспышка

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.

Мэтт Рикс
источник