Подтвердить что ты не робот

Разработка игр, язык для новичков?

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

Обычно я бы просто выбрал один, но это моя дилемма. Я не уверен, что это правильно, но я читал от программистов, что C намного быстрее в 3d-рендере, тогда как Python - нет. Затем люди сообщают о поддержке, заявляющей, что Python может преуспеть при 3D-рендеринге.

Я тоже не знаю.

Моя текущая цель - сделать игру с графикой, похожей на Blizzard Diablo II.

У меня есть опыт работы с PHP, фреймворками JavaScript и чистым SQL. Кроме того, я работаю в среде Mac и имею доступ к Windows XP.

Со всем сказанным, с чего мне начать и почему?

Приветствия

ИЗМЕНИТЬ НОВЫЕ ВОПРОСЫ

Хорошо, это все для меня подавляющее. Простите меня, если я ничего не упустил. Я просматриваю Unity 3d и XNA, но это в основном игровые движки, используемые с .NET Framework, прежде всего С#?

Если бы я хотел полностью выполнять всю свою разработку на OS X, но компилировать для нескольких платформ, что является оптимальным выбором?

4b9b3361

Ответ 1

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

Изучение С++, изучение 3D-рендеринга API, а также изучение методов игрового программирования - это три жесткие цели. Это, вероятно, очень хорошая идея, чтобы делать их по одному, так что вы не боретесь со всеми тремя одновременно.

Если вы уже определились с С++ и конкретным графическим API (OpenGL, DirectX, независимо...), то я бы посоветовал изучить их по трем отдельным проектам, в этом порядке, сначала простое консольное приложение на С++, или ряд упражнений, таких как Project Euler, затем ознакомьтесь с API с помощью некоторых графических визуализаторов и после того, как вы разумно завоевали обоих из них, чтобы перейти к созданию игры.

Если вы на самом деле не состоите в браке с какой-либо платформой или инструментальной цепочкой, вам, вероятно, следует начать с изучения методов программирования игр. К сожалению, ни PHP, ни JavaScript действительно не поддаются этому, но, как предложили другие, python, используя библиотеку PyGame, очень легко подбирать.

Как только вы почувствуете, как игровое программирование работает на простом языке, вы можете начать изучать свой путь вокруг 3d api, создавая игру, которая соответствует вашей цели. Вероятно, это не будет слишком долго, прежде чем вы начнете сталкиваться с проблемами производительности. Только тогда вы должны изучить переписывание критических кодовых путей на другой язык.

Ответ 2

Я бы попробовал XNA Game Studio и посмотреть, нравится ли вам это. Я использую его немного и как это до сих пор. Он привязан к .NET, который представляет собой довольно прочную основу для начала работы и хорошо выглядит при любом возобновлении.

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

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

Здесь ссылка, чтобы начать работу.

Ответ 3

... Я читал от программистов, что C намного быстрее в 3d-рендере, тогда как Python - нет. Затем люди сообщают о поддержке, заявляющей, что Python может преуспеть при 3D-рендеринге.

Это действительно зависит. C намного быстрее, но когда дело доходит до игр, ваше узкое место часто является рендерингом графики, а затем, например, оптимизируя ваши вызовы OpenGL, вы можете писать игры на Python и получать хорошую производительность. Однако Python не является хорошим выбором для слишком сложных/3D-игр; вы бы хотели использовать такие двигатели, как Panda3D (это упоминалось здесь). Зачем? Он предоставляет код рендеринга, написанный на С++ (в данном случае) для производительности, позволяющий писать более высокоуровневую логику в Python, но при этом использовать С++, если скорость абсолютно необходима. Если вы еще не изучили язык, Python будет менее запугивающим, но C даст лучшую производительность в долгосрочной перспективе. Обратите внимание, что оптимизация преждевременно (т.е. Беспокоиться о производительности до того, как вы много написаны) не является хорошей идеей.

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

... графика похожа на Blizzard Diablo II.

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

... Unity 3d и XNA

Из того, что я знаю, XNA обычно является Windows-only, но это здорово, если вы новичок в разработке игр. Unity3D поддерживает Windows и Mac, хотя он использует языки .NET. Он также поддерживает диалект Python под названием Boo, поэтому это может быть полезно.

Для Python-движков и библиотек у вас будет PyGame и Pyglet для 2D. Pygame - обертка вокруг SDL, и, похоже, она более популярна. Pyglet - это оконная среда для Python и OpenGL, хотя она также обеспечивает анимацию, циклы событий, воспроизведение мультимедиа и многое другое. Однако это означает, что вам нужно будет изучить OpenGL, в то время как с PyGame это может быть необязательно. XNA освобождает вас от необходимости изучать DirectX, и Unity дает вам свой движок. Panda3D упоминается для 3D; Pyglet + OpenGL также может обрабатывать 3D.

Единство выглядит красивее; однако это может быть подавляющим. Python в порядке, но не всегда так много.

Ответ 4

Я только начал проверять это самостоятельно, но если вы хотите попробовать Python с 3D, я бы рекомендовал попробовать Panda3D. Все основные функции были написаны на С++, но вы можете программировать на Python или С++. Это игровая инфраструктура, поэтому у нее много встроенных функций, таких как обработка столкновений, некоторые средства искусственного интеллекта и контроля производительности. Он был разработан Disney, но свободен и поддерживается как Disney, так и Carnegie Mellon. Там отличный [ручной] онлайн и довольно много примеры программ. Еще одна интересная вещь в том, что для него есть веб-плагин. О, и я упомянул, что это кросс-платформенный?

Ответ 5

Если вы посмотрите на игру, подобную Civ IV, вы увидите, что графический интерфейс реализован в C (SDL, я считаю), который связывается с Python, и много не GUI-логики написано на Python.

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

Если вы обнаружите узкое место, вы всегда можете перенести это на C или что-то подобное и связать его с Python.

Если вы используете Python, вы можете хотя бы немного поиграть с Pygame.

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

Ответ 6

Я обнаружил, что С++ с OPENGL намного проще управлять, чем другие, в основном из-за огромного количества информации в Интернете/книгах. Я использовал JOGL (Java + OPENGL), но это было rel. но в то время мне это не нравилось.

Тетрис обычно является хорошей стартовой игрой IMO.

Ответ 7

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

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

Предполагая, что вы выбираете что-то вроде XBox, есть XNA, который может быть закодирован на С#. Если вы решите разработать веб-приложение, то есть множество генераторов веб-игр, таких как Sploder.

Ответ 8

Я понимаю, что графические игры, такие как Diablo II, обычно записываются на С++ по соображениям производительности.

Но мне нравится идея разработки .NET на XNA в С# или VB.

Ответ 9

Это зависит. C/С++ намного быстрее, поскольку он скомпилирован в простые инструкции процессора. Python интерпретируется, что делает его более медленным по определению. Важный вопрос: какова будет ваша игра? Возможно, что-то вроде Diablo II возможно с Python. Интерпредированные языки, как правило, гораздо удобнее работать, поэтому, если производительность и распределение позволяют это, перейдите на Python. В противном случае C/С++ - отличный выбор из-за его скорости и количества доступных библиотек (почти каждая графическая библиотека была первоначально закодирована для C/С++).

Ответ 10

Я начал играть с развитием игры несколько лет назад, используя сочетание С++ и игровой библиотеки Allegro. Я не уверен, как далеко зашло Allegro за последнее десятилетие, но я предложил бы, чтобы ваши ноги были мокрыми до погружения в XNA.

Ответ 11

Разумно начать с чего-то знакомого, такого как Haxe или ActionScript (поскольку вы уже знаете JavaScript), чтобы узнать о методах разработки игр и шаблонах дизайна. Как только вы узнали об этом, изучение другого языка программирования относительно тривиально.

Ответ 12

Я сам использовал XNA, и я должен сказать, что его очень хорошая платформа для начала, однако, если вы уверены, что хотите начать с независимого от платформы проекта, я бы предложил вам посмотреть на подобные OpenGL с C/С++. Также взгляните на подобные GLFW http://www.glfw.org/ или SDL http://www.libsdl.org/ для окон, управления событиями ОС и обработки ввода. Я использовал SDL для многоплатформенного порта Tetris, но с тех пор перешел на GLFW для версии астероидов, которые я пишу. GLFW поставляется со справочным руководством и руководством пользователя при его загрузке.

Страница движков DevMaster: http://www.devmaster.net/engines/ содержит множество ссылок на библиотеки для различных аспектов разработки игр и будет хорошим местом для начала.

Ответ 13

Я бы рекомендовал С# с XNA, потому что библиотека XNA делает для вас много работы.

Ответ 14

Я бы предложил вам посмотреть, какие игры вы на самом деле хотите сделать. Быстрый темп 3d fps требует некоторых других навыков, чем SimCity. Существует довольно много рамок для разработки игр, каждый со своими преимуществами и специальностями. Ищите тот, который соответствует типам игр, которые вы хотели бы написать. Выбор языка менее важен.

Для Mac Unity кажется популярным. Еще один интересный вариант, который вы можете изучить, - Blender. Хотя это приложение для 3D-моделирования, оно написано на скриптах в python и может быть использовано для разработки игр.

Ответ 15

Если ваша цель - сделать игру сама по себе с требованиями разработки на OSX и работать в любом месте, это очень похожее на Unity3D, будет хорошим совпадением. На этом пути вы в конечном итоге кодируете UnityScript и, возможно, С#. Это дает вам множество инструментов в пакете, и оно популярно в кругах разработки игр. Так что это звучит для меня хорошо.

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

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

Ответ 16

Вы можете проверить (некоторые из) следующие (кросс-платформенные) игровые движки:

OpenArena, ogre3d, Irrlicht (размещен на sourceforge), Sauerbraten, dimension3, Panda3D, Cube, Unity, torque-3d,...

http://osx.hyperjeff.net/Apps/apps?f=game%20engine

Ответ 17

Поскольку вы новичок, вы хотите удалить как можно больше трудностей программирования. Я бы рекомендовал изометрический игровой движок, например IsoWorld, в котором много встроенных комнат, объектов и графики. Это доступно как для Mac, так и для ПК и имеет demo.

Ответ 18

Вы хотите начать с Diablo 2? Это массовая игра. Даже оригинальный Diablo займет несколько месяцев, чтобы сделать это самостоятельно. Я бы рекомендовал начать с чего-то меньшего, возможно, в 2D.

Я лично использовал Тетрис в качестве отправной точки.

Что касается языка, который кросс-платформенный и развивающийся на Mac, я бы, вероятно, проголосовал за ActionScript (Flash). Должно быть хорошей производительности, если только вы не делаете какую-то сумасшедшую тяжелую математику (что я сомневаюсь, что вы это сделаете) или хотите разумного 3D-рендеринга.

Ответ 19

Вы не можете действительно иметь свой торт и съесть его тоже.

Если вам нужна необработанная скорость, вам придется больше катить C/С++. Скомпилированные двоичные файлы по-прежнему являются самым быстрым способом.

Если вы хотите суперсовременную кросс-платформенную переносимость, Python, вероятно, лучший выбор. Тем не менее, это ужасно медленно.: -/

Если бы я писал 3D-игру, я бы написал ее на С++, С#defines для любой кросс-платформенной работы.

Я не особо забочусь о мышлении каркаса по обычным причинам.

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

Ответ 20

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

Для быстрого запуска, но результат так себе: Если у вас нет опыта в ООП (объектно-ориентированное программирование), я бы избегал языков, или, скорее, платформ, которые требуют много обучения сначала (потому что это убивает творчество). С# может быть таким языком для многих, поскольку Microsoft, в отличие от Google, предоставляет (слишком много для начинающих) модные парадигмы. Вместо этого есть вещи, которые вы могли бы сделать быстро и легко, например. Pascal или C. (Первая из них была и есть, и не без оснований рекомендовала университеты как язык, который привык к хорошим привычкам в программировании). С PHP вы можете пропустить это, но если у вас нет большого опыта написания хорошего кода (на самом деле это больше, чем просто скрипты на веб-сайтах, так как игры специфичны и обычно технически сложны, хотя я не знаю, что вы на самом деле раньше), я бы хотя бы пробовал C.

Для относительно быстрого запуска: опыт OOP С# -XNA может быть хорошим выбором. Я не рекомендую платформы Android и iOS, так как они обеспечивают слишком много терминологии, и они должны сначала изучить соответствующие языки и получить в ней довольно много опыта, иначе, если вы прыгнете в эту глубокую воду, это будет, вероятно, чистая боль для вас. Без ООП Java-программирование на рабочем столе, вероятно, наиболее хорошо подходит для перехода в современное программирование, и, например, Swing и 2D-графика легко освоить на платформе JSE (Java Standard Edition).

Для амбициозных начинающих разработчиков игр: сегодня на рынок выходят два основных типа игр: "casuals" (обычно головоломки или аркадный жанр) и 3D большие постановки. Быстрота (например, C и 3D) не стоит жертвовать написанием хорошего и четкого кода - последний повысит ваши навыки и, следовательно, эффекты, когда в конечном итоге (если когда-либо) обратится к C-программированию. Итак, я бы рекомендовал сначала экспериментировать с такими языками, как (как упоминалось другими) Python, или если вы хотите как можно скорее перейти в ООП, Java, а затем перейти на более конкретные платформы, такие как iOS, Android или Windows Phone, После написания по крайней мере трех игр среднего размера в 2D вы бы больше поняли, чего ожидать от разработки игр в целом и таких специфичных для игр вещей, как требовательный пользовательский интерфейс (отличный от веб-разработки), AI (также различные способы мышления приложения), одновременные и синхронизированные события, не говоря уже о 3D-графике и звуке в режиме реального времени...

Так что прыгать слишком глубоко, не рекомендуется, так как это требует слишком многого, чтобы испытать, а затем учиться (а не учиться сначала и опыт позже). Относитесь к тому, что написано выше, как подсказки, а не только к рекомендациям. Во всяком случае, удачи.:)

Ответ 21

Во-первых, это обучение программированию. Язык не имеет значения, но Python очень прост. Есть несколько хороших книг, я прочитал 2, и теперь могу сказать, что я хорошо разбираюсь в программировании? Напишите несколько примеров. Постарайтесь подумать о том, как вы можете управлять данными, которые вам нужны. Тогда есть Графика. Я бы начал с pygame, потому что это очень просто и имеет хороший сайт документации. Но всегда пишите примеры и старайтесь. Затем вы можете сделать свою первую программу. Что-то очень простое. Всего несколько сотен строк. Моя первая игра была танковой игрой, в которой 3 игрока могут сражаться и некоторые боксы на поле. Такое программирование не сложно, но нужно собрать опыт и время. И последняя самая сложная часть.