Игровое программирование - Как постараться не изобретать велосипед

У вас есть вся информация в этой официальной документации .

Чтобы удалить Anaconda, как вы хотите, вы можете сделать:

conda install anaconda-clean
anaconda-clean --yes

rm -rf ~/anaconda3
rm -rf ~/.anaconda_backup

И, наконец, очистить файл ~/.bash_profile от чего-то похожего:

# added by AnacondaX Y.Z.0 installer
export PATH="/Users/sfish/anaconda3/bin:$PATH"

11
задан Mansfield 7 June 2012 в 03:02
поделиться

14 ответов

Мои существующие взгляды:

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

  • Если Вы хотите сделать надлежащую игру, пользоваться любыми библиотеками, что Вы хотите и разрабатываете всю игровую инфраструктуру сами. Это - то, что я делаю теперь, и я использую все хорошие вещи как STL, ATL/WTL, Повышение, SQLite, DirectX, и т.д. До сих пор я узнал много об аспекте логики середины/игры кода и дизайна.

  • Если Вы просто хотите сделать игру с художниками, и другие люди, сотрудничающие для создания готовое изделие, используйте один из существующих механизмов (ЛЮДОЕД, Irrlicht, Туманность, Крутящий момент, и т.д.) и просто добавьте в игровой логике и искусстве.

Один заключительный бит мудрости, которую я изучил, это не волнуется о Не Изобретенный Здесь синдром. Поскольку я пришел к пониманию, что другие библиотеки (такие как STL, Повышение, DirectX, и т.д.) имеют порядок величины (или три) больше человеко-часов времени разработки в них, намного больше, чем я мог когда-либо тратить на ту часть игры/механизма. Поэтому единственная причина реализовать эти вещи самостоятельно состоит в том, если Вы хотите узнать о них.

8
ответ дан 3 December 2019 в 00:59
поделиться

Я рекомендовал бы попробовать поросенка.

  • Это имеет хорошую производительность, поскольку это использует opengl
  • Это - компактная единая библиотека
  • Это не имеет никаких дополнительных зависимостей помимо Python

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

7
ответ дан 3 December 2019 в 00:59
поделиться

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

Почему я выбирал Quake II? Поскольку, работая в версии, скомпилированной для.NET, это работает с рендерером программного обеспечения в больше, чем приемлемая частота кадров на текущей машине. (Если Вам нравится - сравнивают MAME, который эмулирует несколько процессоров и аппаратного обеспечения машинной графики на приемлемых уровнях),

4
ответ дан 3 December 2019 в 00:59
поделиться

Я полагаю, что Вы работаете под ошибкой.

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

Другими словами, у Вас есть "Высокий риск проблем производительности", если Вы не используете платформу.

13
ответ дан 3 December 2019 в 00:59
поделиться

Необходимо спросить себя, если Вы находитесь в этом, чтобы создать механизм или создать игру. Если Ваша цель состоит в том, чтобы создать игру, необходимо определенно посмотреть на установленный играющий механизм. Для 2D разработки игр посмотрите на Игрового Разработчика Крутящего момента. Это - очень мощный 2D играющий механизм/SDK, который введет Вас в эксплуатацию со дня 1. У них есть много инструментов, которые интегрируются с ним, контент-пак, и Вы получаете полный исходный код, если Вы хотите внести изменения и/или изучить, как это работает. Это - также совместимая MAC OSX и имеет версии Linux в сообществе.

Если Вы ищете что-то на консольной стороне, у них есть это также.

4
ответ дан 3 December 2019 в 00:59
поделиться

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

Для 2-й игры я не думаю, что производительность будет проблемой, я рекомендую идти с чем-то, что доберется, Вы приводите на экране к самому короткому количеству времени. Если у Вас есть большой опыт, делающий Python затем pyGame, хороший выбор.

Если бы Вы планируете выполнение некоторых 3-х игр в будущем, я рекомендовал бы смотреть на Людоеда (http://www.ogre3d.org). Это - кросс-платформенный 3-й графический механизм что краткие обзоры далеко графические API. Однако для 2-го проекта это - вероятно, излишество.

2
ответ дан 3 December 2019 в 00:59
поделиться

Я удивлен, что никто не упомянул XNA. Это - платформа, созданная вокруг DirectX для того, чтобы сделать, справился с программированием DirectX при удалении большого количества пуха и многословия более низкого уровня программирование DirectX.

Мудрый производительностью, для большинства 2D и 3D игровых задач, особенно создавая что-то как игра борьбы, эта платформа работает очень хорошо. Не с такой скоростью, как, если Вы делали чистый металл программирование DirectX, но это получает Вас очень близко, и в управляемой среде, не меньше

Другое прохладное преимущество XNA - то, что большая часть кода может быть выполнена на Xbox 360 и может даже быть отлажена по сетевому соединению, была игра, работает на Xbox. Играм XNA теперь позволяют быть утвержденными командой Xbox Live для распределения и продажи на Xbox Live Arcade также. Таким образом, если Вы надеетесь брать проект к коммерческому состоянию, Вы могли бы иметь, доступные средства распределения в Вашем распоряжении.

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

4
ответ дан 3 December 2019 в 00:59
поделиться

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

Я использую этот подход в своих играх; с помощью бурундука для 2D физики, Lua как встроенный язык сценариев и реализация openGL ES от Apple. Я пишу связующее звено для связывания всех их на языке C. Причем конечный продукт является способностью определить игровые объекты, создать экземпляры их и обработать события, поскольку они взаимодействуют друг с другом в функциях C, выставленных Lua. Этот подход привык во многих высокопроизводительных играх к большому успеху.

2
ответ дан 3 December 2019 в 00:59
поделиться

Относительно того, что люди сказали о C/C ++/Python, я - разработчик игр, и моя компания поощряет C. Не b/c C++ плохо, но потому что плохо записанный C++ является ядом для разработки игр из-за, он - трудность читать/отлаживать по сравнению с C. (C++ приносит пользу при надлежащем использовании но позвольте младшему парню сделать некоторые ошибки с ним, и приемник времени огромен),

Относительно фактического вопроса: Если Ваша цель состоит в том, чтобы просто получить что-то работа, пользуйтесь библиотекой.

Иначе кодируйте его сами по очень важной причине: Практика
Практика в управлении структурами данных. БУДУТ времена, необходимо управлять собственными данными. Практика в коде утилиты отладки.

Часто освобождает, делают, что Вы хотите и являетесь великими, но иногда ВАШ определенный вариант использования обрабатывается очень плохо lib, и Вы получите большую выгоду от записи, что Вы владеете. Это находится особенно на консолях по сравнению с ПК

(редактирование:) Относительно сценария и сборки "мусора": это уничтожит Вас на консоли, на недавней игре я должен был переписать главные части сборки "мусора" на Нереальном только для удовлетворения наших потребностей в части редактора. Еще больше должен был быть сделан в фактической игре (не только мной) (для ярмарки, хотя мы продвигали вне исходных спецификаций Unreal),

При сценариях часто хороший, но это не кнопка "I win". В целом усиления исчезают, если Вы продвигаете против пределов Вашей платформы. Я использовал бы "процент платформ ЦП, который я должен сэкономить" как моя функция оценки в решении, как соответствующий сценарий

2
ответ дан 3 December 2019 в 00:59
поделиться

Наиболее распространенным языком реализации для игр A-списка сегодня является C++, и много игр встраивает язык сценариев (такой как Python или Lua) для игровых сценариев события.

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

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

Если Вы идете с C++, и Ваши причины не должны быть более тщательно продуманы, чем, "потому что я хочу", я предложил бы, чтобы Вы посмотрели на SDL для рендеринга и аудио поддержки. Это сделает вещи немного легче.

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

Сказав все это, я предостерег бы Вас против преждевременной оптимизации. Для 2D игры Вы, вероятно, будете более обеспеченным движением с Python и PyGame сначала. Я был бы удивлен, окажутся ли те инструменты несоответствующими по современным ПК.

2
ответ дан 3 December 2019 в 00:59
поделиться

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

0
ответ дан 3 December 2019 в 00:59
поделиться

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

Лично мне нравится рекомендовать Игровому Разработчику Крутящего момента (иначе 2D Крутящий момент) от GarageGames. Но можно, вероятно, найти некоторые механизмы бесплатной игры там, которые удовлетворят потребностям также.

1
ответ дан 3 December 2019 в 00:59
поделиться

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

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

Кроме того, если Вы пользуетесь существующей библиотекой языка сценариев для создания игры, большая часть производительности, критические области (как графика) могут быть записаны в C++ так или иначе (надо надеяться, игровыми библиотеками). Таким образом, 80% ЦП могли бы на самом деле быть потрачены в коде C++ так или иначе, несмотря на то, что большая часть Вашего проекта записана в, скажите Python.

Я сказал бы, спросил бы себя, что Вы хотите больше: записать игру от начала до конца и узнать о разработке игр или выучить новый язык (C++). Если Вы хотите записать игру, сделайте это в языке сценариев. Если Вы хотите выучить новый язык, сделайте это в C++.

1
ответ дан 3 December 2019 в 00:59
поделиться

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

В моем текущем проекте используются C #, DirectX 9, HLSL и SlimDX. Каждый из них предлагает тщательно выверенный уровень абстракции. HLSL позволяет мне фактически читать код шейдера, который я пишу, а SlimDX / C # позволяет мне игнорировать указатели, циклические зависимости и обработку неуправляемого кода.

При этом ни одна из этих технологий не влияет на простоту разработки моего ИИ. , освещение или физика! Мне все еще приходится разбивать свои учебники так, как я бы не стал с высокоуровневым фреймворком.

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

Это достаточно большое поле, и ваш первый движок никогда не будет тем, который вы действительно используете. Если вы напишете это сами, вы напишете недостаточно хорошо. Если вы используете сторонние библиотеки, то определенно есть аспекты, которые будут вас раздражать, и вы захотите их заменить.

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

что-то вроде DarkBASIC не решит вашу проблему с блокировкой карданного подвеса, но затенение в основном выполняется за вас.

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

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

что-то вроде DarkBASIC не решит вашу проблему с блокировкой кардана, но затенение в основном обрабатывается за вас.

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

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

Это достаточно большое поле, чтобы ваш первый движок никогда не был тем, который вы действительно используете. Если вы напишете это сами, вы напишете недостаточно хорошо. Если вы используете сторонние библиотеки, то определенно есть аспекты, которые будут вас раздражать, и вы захотите их заменить.

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

Это достаточно большое поле, чтобы ваш первый движок никогда не был тем, который вы действительно используете. Если вы напишете это сами, вы напишете недостаточно хорошо. Если вы используете сторонние библиотеки, то определенно есть аспекты, которые будут вас раздражать, и вы захотите их заменить.

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

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

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

0
ответ дан 3 December 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: