Хочу научиться писать 2d игры

Привет, сообщество stackoverflow! Я изучил основы C # (я могу написать несколько приложений-форм), и теперь я хочу научиться писать 2d-игры. Я не знаю, с чего начать. Есть ли движок, подходящий для 2D-игр? Изучив основы 2d, я хочу писать простые игры, которые работают под windows и linux (это было бы круто, linux :)).

Я спросил друга, который занимается программированием, и он сказал, что мне следует использовать XNA с C # (но это будет работать только в Windows). После поиска в Google я обнаружил, что OpenGL с C ++ лучше всего подходит для написания игр для Linux, поскольку нет DirectX / XNA. И я еще не использовал C ++, опять же, чтобы этому научиться.

Вы можете что-то предложить? Может другой двигатель? Я только что установил XNA и взглянул на демо-игру (платформер), код совсем несложный. Подходит ли XNA для 2D-игр?


person CSharpBeginner    schedule 26.09.2009    source источник
comment
Взгляните на Тао, mono-project.com/Tao   -  person Dykam    schedule 26.09.2009


Ответы (7)


Делайте шаг за шагом. Когда вы только начинаете, вам не нужно, чтобы ваш код работал на каждой платформе. Неважно, использует ли он OpenGL или DirectX, потому что у вас будут свои руки, чтобы создать игру для работы на одной платформе с одним графическим API.

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

Все что тебе нужно это:

  • язык программирования, который вам удобен. Похоже, это C #, так что придерживайтесь этого.
  • Каким-то образом вывести графику на экран. Библиотека .NET может это до некоторой степени, но какая-нибудь библиотека более высокого уровня, вероятно, упростит эту задачу. Вы можете использовать XNA, SlimDX или другую оболочку Direct3D. Или вы можете попробовать SDL.NET. Или вы можете написать свой собственный. Возможности, которые вам понадобятся, довольно просты, и каждая графическая библиотека, 2D или 3D, позволит вам это сделать.

Особенно не нужно ничего, что «хорошо для 2D-игр». XNA может отображать графику на экране, поэтому она делает то, что вам нужно. Если вы также понимаете код, необходимый для его использования, то XNA вполне подойдет. Не пытайтесь найти «лучшее» или что-то, что имеет «отличное качество для 2D-игр».

person jalf    schedule 26.09.2009
comment
Добавьте Tao Framework, чтобы сделать OpenGL и некоторые другие классные кроссплатформенные API-интерфейсы доступными для языков .NET, что почти бесплатно обеспечивает кроссплатформенность;) - person Cecil Has a Name; 26.09.2009
comment
Тао хорош ... вот одно из лучших руководств по XNA и старому управляемому DirectX для C #, которое я нашел: riemers.net/eng/Tutorials/xnacsharp.php - person Oskar Duveborn; 26.09.2009
comment
Я хотел сказать, что кроссплатформенность не имеет значение. Легче ли использовать Tao по сравнению с другими фреймворками для конкретных платформ? если да, то это - вот почему он должен его использовать. Если нет, то он не должен использовать его, независимо от того, на скольких платформах он будет работать. - person jalf; 26.09.2009
comment
В принципе да. при условии, что вы остаетесь в рамках той части .NET, которая поддерживается Mono. И, конечно, графический код может быть очень непостоянным. Вам, вероятно, придется потратить немало времени на его отладку, потому что он загадочным образом работает иначе в Linux, чем в Windows. Но позвольте мне еще раз спросить, зачем вам нужна эта, ваша самая первая игра, чтобы быть кроссплатформенной? Вы также перевели все, что читали в первом классе, на испанский, русский и китайский языки? - person jalf; 27.09.2009
comment
Спасибо, думаю воспользуюсь XNA. Уже написал небольшую игру, красивый фреймворк :) - person CSharpBeginner; 27.09.2009
comment
Прохладный. Я слышал об этом хорошее, и он хорошо поддерживается. А потом, когда у вас есть игра, обязательно запускайте ее на всех платформах, которые вам нравятся. Но заставьте его работать на одной платформе, прежде чем беспокоиться о двух или трех платформах. у вас будут руки заняты и так;) - person jalf; 27.09.2009

Наверное, самая простая и доступная платформа - это Flash. Легко распространяемый и довольно быстрый в освоении для игр (судя по огромному количеству флеш-игр, доступных в сети).

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

Еще одно направление, которое вы могли бы избрать, - вместо того, чтобы начинать свою собственную игру с нуля, вы можете попробовать создать мод для чего-то вроде Half-Life 2 или Unreal. Это дает вам базовую платформу, которую вы можете изменить и посмотреть, как она себя ведет. А пока вы просматриваете чужой код и видите тонкости разработки игр.

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

person MunkiPhD    schedule 26.09.2009
comment
Есть ли для этого (Flash) хорошие бесплатные инструменты, такие как Visual Studio Express для C #? Я действительно хотел бы знать, так как Adobe Flash CS кажется немного дороже. - person Cecil Has a Name; 26.09.2009
comment
Есть Flash Develop и FDT - person ; 19.09.2012

Кто-то упомянул Flash, это хорошее предложение, но немного дорогое. Если вы хотите бесплатно разработать Flash / AS3, я бы порекомендовал поиграть с Flixel. Вам также понадобится FlashDevelop, который является хорошим (также бесплатным ) IDE. На сайте Flixel есть много хороших ресурсов, которые помогут вам начать работу.

person Gary the Llama    schedule 02.10.2009
comment
Flixel великолепен, идеально подходит для 2D-игр. Вы можете использовать FlashDevelop, FlexBuilder или просто свой любимый текстовый редактор, например Emacs: просто используйте бесплатные инструменты командной строки Flex SDK. Если вы выберете текстовый редактор + командную строку, вам придется использовать систему сборки, такую ​​как Make, Ant или Rake. - person Sébastien RoccaSerra; 24.11.2009

Если вы думаете о будущем в графическом программировании, я бы выбрал OpenGL по следующим причинам:

  • OpenGL реализован в Windows, Mac, Linux и даже PlayStation 3. (чрезвычайно универсален).
  • Когда вы освоитесь с 2D-программированием, вы можете перейти к 3D и остаться с OpenGL.
  • OpenGL одинаково быстр с точки зрения производительности по сравнению с DirectX.
  • C ++ является частью каждой учебной программы по программированию на уровне колледжа. *
  • Я думаю, что работодатели уважают знание C ++ больше, чем любого другого языка.

Кривая обучения может быть выше, но ваше время будет потрачено не зря.

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

person James Jones    schedule 26.09.2009
comment
Вам не кажется, что следует учитывать, что 99,99999% всех компьютерных игр используют DirectX, а не OpenGL? И практически никакие игры на PS3 не используют его, потому что обертки Sony OGL - отстой, а разработчики обычно работают напрямую против GPU. - person jalf; 26.09.2009
comment
Извините, ваша точка зрения? Что за последнее десятилетие (в список входит оригинальный Unreal 1998 года выпуска) было сделано целых 73 игры, поддерживающих OpenGL? (Обратите внимание, что многие из них в этом списке также поддерживают DirectX). Вы всерьез предполагаете, что в этот список входит большинство игр? Что ваш средний разработчик игр использует OpenGL для разработки своих ПК? OpenGL - это то, на что вам следует пойти, если вы хотите будущего в графическом программировании? - person jalf; 27.09.2009
comment
Если OpenGL настолько плох, почему вы включили его в свой ответ? Неважно, использует ли он OpenGL или DirectX - person James Jones; 28.09.2009
comment
Чтобы ответить на ваш последний вопрос, да. Список программного обеспечения также включает широко распространенные современные игры, такие как Google Earth и Photoshop CS4. В любом случае, если вы прочитаете в Википедии сравнение DirectX и OpenGL, вы увидите, что они эквивалентны с точки зрения простоты использования и производительности. Выбирая DirectX, вы ничего не выиграете и только подвергнетесь привязке к поставщику. - person James Jones; 28.09.2009

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

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

Что касается движков: DirectX и OpenGL в наши дни сами по себе являются движками. Они позволяют вам очень легко выполнять большую часть примитивной работы (получить модель из 3ds Max и загрузить ее в свое приложение в 1-2 строчки кода), для небольшой игры вам больше ничего не понадобится.

Я также согласен с MunkiPhD: Flash был бы очень хорошей платформой для 2D-игры. Это очень просто и позволяет избавиться от утомительного графического программирования. Однако программирование на ActionScript далеко не «тяжелое» программирование с использованием языков семейства C и правильной разработки. платформы. ActionScript расстраивает меня каждый раз, когда я его вижу.

person Egor Pavlikhin    schedule 27.09.2009
comment
Я не новичок в программировании, 5 лет программирую на php и запустил прогу windows / linux. пол года назад. Я писал проги на Delphi (ненавижу синтаксис) и C #. Так что написать игру не составит труда. Я попросил здесь узнать, какой движок / фреймворк / что-то мне следует использовать. Я знаю, что Flash несложно кодировать, но я хочу писать код на C # :) Пока что спасибо .. - person CSharpBeginner; 27.09.2009

Если вы хотите сосредоточиться на 2D-играх и продолжать использовать C # на данный момент, И чтобы ваши друзья могли играть в ваши игры на Mac и ПК, думали ли вы об использовании Silverlight?

Использование Silverlight позволило бы обойти некоторые проблемы, такие как установка.

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

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я не уверен, в каком состоянии Silverlight для Linux.

person user179700    schedule 27.09.2009

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

alt text

person Phyxx    schedule 07.12.2009