Я хочу изучить разработку игр. Какой язык я должен использовать? [закрытый]

Другие объяснили, что Вы не можете сделать этого в C#. В VB.NET Вы можете делать это, даже с опцией, strict/explicit на:

Option Strict On
Option Explicit On
Imports System.Text

Module Test

   Sub Main()
       Dim sb as new StringBuilder
       Foo (sb.Length)
   End Sub

   Sub Foo(ByRef x as Integer)
   End Sub

End Module

вышеупомянутый код эквивалентен этому коду C#:

using System.Text;

class Test
{
     static void Main()
     {
         StringBuilder sb = new StringBuilder();
         int tmp = sb.Length;
         Foo(ref tmp);
         sb.Length = tmp;
     }

     static void Foo(ref int x)
     {
     }
}

Лично я рад, что C# не имеет этого - он пачкает воды довольно много, особенно с точки зрения значения свойства, если параметр устанавливается в рамках метода, но затем исключение выдается.

РЕДАКТИРОВАНИЕ: Согласно просьбе мое обоснование относительно того, почему я верю передающим свойствам в, пачкает воды. Если Вы передаете нормальную переменную ссылкой, то та переменная оценена каждый раз, когда на нее ссылаются в рамках метода. Если значение изменяется по некоторым причинам (например, как побочный эффект некоторой другой работы в методе) затем, что изменение будет сразу видимо в методе. Это не имеет место, если Вы передаете свойство ссылкой в VB.NET: метод считывания свойства вызывается однажды, и затем метод set свойства вызывается однажды. Это не похоже, Вы являетесь передающими в, "вот , свойство - получает и установило от этого каждый раз, когда Вы используете параметр".

Вот полный пример, где передача поля и передача совершенно тривиального свойства в.NET имеют совсем другие результаты:

Option Strict On
Option Explicit On
Imports System.Text

Class Test

   Dim counter as Integer

   Property CounterProperty As Integer
       Get
           Return counter
       End Get
       Set (ByVal value as Integer)
           counter = value
       End Set
   End Property

   Sub Increment
       counter += 1
   End Sub

   Shared Sub Main()
       Dim t as new Test()
       Console.WriteLine("Counter = {0}", t.counter)
       t.Foo(t.counter)
       Console.WriteLine("Counter = {0}", t.counter)

       t.CounterProperty = 0
       Console.WriteLine("CounterProperty = {0}", t.CounterProperty)
       t.Foo(t.CounterProperty)
       Console.WriteLine("CounterProperty = {0}", t.CounterProperty)
   End Sub

   Sub Foo(ByRef x as Integer)
       x = 5
       Increment
       Increment
       Increment
       x += 1
   End Sub

End Class
21
задан sloth 29 January 2013 в 11:48
поделиться

28 ответов

Зависит от типа игры. Для «больших» игр, конечно же, C и C ++, поскольку именно на них написаны большие движки и промежуточное ПО (например, Gamebryo, Unreal, id tech, FMOD Sound System, инструменты RAD Game и т. Д.).

Python - это используется в некоторых играх как язык сценариев (для игровой логики, миссий, иногда ИИ), но есть также LUA и, возможно, многие другие, но здесь определенно используется python.

Для «казуальных» игр вы также можете рассмотреть Flash / ActionScript (браузерные игры также являются играми, и это большой рынок) или C # / XNA (хотя это не особо популярно).

Если вы хотите разрабатывать игры для iPhone, Objective-C - ваш лучший выбор в качестве альтернативы (Flash и MonoTouch) еще не проявили себя.

Чем вы на самом деле хотите заниматься в разработке игр? Вы хотите работать над графическим движком? Или звук? AI? Логика игры?

29
ответ дан 29 November 2019 в 06:10
поделиться

C ++, так как он широко используется для программирования игр, и вы получите множество примеров для игр на C ++. Как сказал другой ответ, 3D-программ на Python не так много.

0
ответ дан 29 November 2019 в 06:10
поделиться

I think that C++ is the best choice, I made some small games using free engines like Ogre or Irrlicht, especially Irrlicht because it's very easy to learn.

Also for 2D games you can use HGE.

But if you want to go whith Pyton try Blender a 3D modeling an animation tool, whith Blender you can make cool games and you have all the things you need to make a game in the same sotware, Blender uses Python for programing, but you can make games whithout knowing programing just using logic blocks.

0
ответ дан 29 November 2019 в 06:10
поделиться

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

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

0
ответ дан 29 November 2019 в 06:10
поделиться

Возможно, вы захотите начать с казуальных игр. Это, конечно, зависит от ваших желаний, но казуальные игры немного более доступны как разработчикам, так и пользователям. Эти инструменты также легче освоить: Flash / Flex и Silverlight очень доступны и доставляют массу удовольствия в использовании.

0
ответ дан 29 November 2019 в 06:10
поделиться

Я считаю, что одним из самых быстрых и полезных языков разработки игр является ActionScript 3.0 с использованием Flex SDK. Возможность создать игру и опубликовать ее в Интернете для огромной аудитории - очень полезный опыт.

0
ответ дан 29 November 2019 в 06:10
поделиться

The simplest and fastest way to learn game programming is with Python/PyGame.

Python is a cross platform, byte code compiled, easy to learn programming language with a really clean syntax that maximises readability. It has a ton of libraries and documentation written for it.

PyGame is a 2D game development framework written in python which is really simple to learn, with lots of tutorials and documentation written for each. Each year a PyGame context is held where people over the word submit their PyGame games. Python is interpreted language ( but you can also package it in an standalone executable) , so when you download a game to play you can also see its source code and change it.

2
ответ дан 29 November 2019 в 06:10
поделиться

C ++ - это язык, на котором фактически написана игра, по крайней мере, для сложных графически насыщенных игр, таких как World of Warcraft. Такие языки, как Python, часто используются для написания сценариев поведения в игре.

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

Однако более легкие игры, чем Python, обычно пишутся на Flash с использованием языка сценариев Flash (ActionScript). Оказывается, это на самом деле разновидность Javascript. Javascript, в свою очередь, очень похож на Python.

Итак, я предлагаю вам изучить Python, а затем изучить Javascript. Затем напишите несколько простых игр на PyGame, Flash, или даже Javascript в браузере. Затем, если вы все еще хотите изучать C ++, продолжайте изучать это, но продолжайте экспериментировать с игровым дизайном в свободное время, создавая казуальные игры.

2
ответ дан 29 November 2019 в 06:10
поделиться

Я бы начал с C ++, который является языком выбора для большинства игр, созданных сегодня. Существует ряд игр, разрабатываемых на DirectX с использованием C # в управляемой среде с использованием фреймворка XNA. Посетите этот сайт. Центр разработчиков XNA

2
ответ дан 29 November 2019 в 06:10
поделиться

Если производительность критична, используйте C ++.

Многие игры написать основной движок на C ++, а затем привязать его к Python для менее критичного для производительности кода (игровая логика, миссии, AI). Хорошим примером этого является Civilization 4. Это также делает игру расширяемой.

Я лично рекомендую C # / XNA для нового разработчика и использующего такую ​​среду, как Ogre.

3
ответ дан 29 November 2019 в 06:10
поделиться

Какой язык вы знаете лучше всего? Если ваша цель - изучить разработку игр, не усложняйте процесс, пытаясь также изучить C ++.

4
ответ дан 29 November 2019 в 06:10
поделиться

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

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

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

Посмотрите на www.GarageGames.com, где можно найти как готовый игровой движок, так и сообщество разработчиков, пишущих игры.

0
ответ дан 29 November 2019 в 06:10
поделиться

Смотря какие игры. Я не думаю, что существует много игр с 3D-графикой, написанных исключительно на Python. C ++ используется для трехмерной графики, поскольку он очень быстр при необходимых численных вычислениях. Python не может с ним конкурировать. Если вы хотите создать автомобильную гоночную игру с 3D-графикой, такую ​​как Mario Kart, вам нужно изучить C ++, а не Python.

Однако, как говорит Сан-Хасинто, на данном этапе этот вопрос немного спорный.

8
ответ дан 29 November 2019 в 06:10
поделиться

Желание «Изучить разработку игр» очень и очень расплывчато.

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

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

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

10
ответ дан 29 November 2019 в 06:10
поделиться

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

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

12
ответ дан 29 November 2019 в 06:10
поделиться

Целевая платформа? Во Flash или не во Flash (векторная графика)? В растровое изображение или нет?

На основе некоторых из этих типов вопросов вы можете прийти к меньшему диапазону возможностей.

Например, целевая платформа XBox 360: код: C ++ нужна команда для публикации: да (если вы работаете в игровой компании, это проще :)

То же самое верно и для платформ Playstation или более старых XBox и т. д. Практически любые консольные игры, которые вы собираетесь делать, нуждаются в dev kit, и это происходит только в том случае, если у вас есть сделка с производителем или издателем.

Итак, давайте пока пропустим консоль.

Остается несколько вариантов, которые по-прежнему основаны на Интернете или на iPhone. Но вы уже сказали, что не хотите делать Flash, iPhone или браузерные игры.

Итак, на очереди Mac или ПК. Если вы в конечном итоге захотите попасть на консоль, игры на основе вдов - отличный способ. Вы можете изучить графические библиотеки, DX, а потом использовать что-то подобное, например, на XBox 360. Или, если вы хотите перейти на кроссплатформенность, посмотрите на Open GL ... и если вы решите опуститься до платформы, которая имеет "

0
ответ дан 29 November 2019 в 06:10
поделиться

Я думаю, что если вам нужны игры с 3D-графикой, то лучше всего подойдет C ++ с DirectX

0
ответ дан 29 November 2019 в 06:10
поделиться

Game programming is not different in C++ than Python. You already know C++, so the answer is: Learn Python. Why? Because it's a bloody cool language.

You'll also learn a lot of game programming by doing it in Python, even if you need to switch to C++ for doing heavyweight 3D engines.

So the answer is really.... BOTH! :-)

0
ответ дан 29 November 2019 в 06:10
поделиться

Если вы делаете инди-игру (т.е. 2d, в команде менее десяти человек, низкий бюджет), тогда лучше всего подойдет pygame.

В http: // pygame много библиотек. org , которые упрощают разработку. В игре есть графический интерфейс, сеть, поиск пути ... Python 2 пока лучше. Вам пока не понадобится P3000.

Lua - тоже очень популярный выбор, но он в основном для больших профессиональных игр. Они часто выбирают Lua из-за его философии невозможности отказа . Вы можете передать больше или меньше аргументов, чем принимает функция, и она не будет жаловаться. Сбой может произойти практически во всем, и он все равно будет работать в среднем .
Кроме того, он имеет очень мощные (своего рода) потоки. Нет никаких условий гонки. Когда-либо. И есть лямбды. И это очень легко модифицируется Это в основном Лисп с меньшим количеством скобок. Само собой разумеется, программисты Lua очень, очень осторожные люди.

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

Если вы «хотите научиться разработке игр», вы, вероятно, захотите писать игры. Кроме того, как для python, так и для Lua существует довольно простой способ написать сценарий и затем отправить его .exe. Поищите в другом месте "Embedding% s"% language_name, но в основном это просто

#include
...
python_run_file ("main.py");

2
ответ дан 29 November 2019 в 06:10
поделиться

I'm of the mind that you want to know lots of languages, and how the same "program" looks in different languages. Then you can make better decisions about what parts of a program should be in which languages. You can use any language to write a game. The concepts themselves behind organizing data to execute are more important than the language, and practicing different languages helps you become comfortable with those concepts. Then you can "pick up" and get a feel for new languages quickly without much re-learning.

So I think that it doesn't hurt to try to learn and practice multiple languages at once, even as a beginner. C++ is certainly widely used in industry game programming (where it's survived more than in many other programming domains). OpenGL usually comes along with that for high performance 3d programming. Python has libraries for writing games, is considered 'easy' syntactically (personally I agree). You might skip C++ for now and focus on C and python, and return to C++ after studying Object-oriented.

You want to learn the concepts behind what your code does, and efficiency trade-offs. To write more complex games you simply need more knowledge - knowing which data structures are most efficient for the requirements. How to structure your programs so that they don't fall apart in your head when you want to fix a bug or add a feature. With a bit of rudimentary programming knowledge and Python you can write a pretty good game without graphics for practice. And there is PyGame and other libraries for graphics, sound etc.

2
ответ дан 29 November 2019 в 06:10
поделиться

I would say this depends on your programming experience, if your used to C like syntax and think that way, i.e curly brackets, semicolons, strong typing, go with the C++, its fast, and its the language you know.

However if you comfortable with programming languages as a whole, then python is not a bad alternative, and I would highly recommend the panda3d 3d engine (I consider this more of a 3D engine, rather then a game engine in the sense you still have to build game specific logic), it uses python and I think the newest python 2.6.xx version is your best bet. As far as performance, unless your running an older machine, interpreted languages such as python can run nearly as fast a compiled languages such as c/c++.

0
ответ дан 29 November 2019 в 06:10
поделиться

Это зависит от вашей цели.

Например, если вы когда-нибудь захотите разрабатывать игры для Xbox 360, вам понадобится C # и XNA Game Studio.

XNA Game Studio - это набор проектов и библиотек C #, предназначенных для использования с Visual Studio (любой редакции, включая Express) для создания игр для Xbox 360 и Windows / DirectX.

2
ответ дан 29 November 2019 в 06:10
поделиться

Перейти на C ++, это основной язык в отрасли; и вы узнаете все тонкости разработки игр. Использование C ++ также дает вам еще одно преимущество: вы можете реализовать язык сценариев, такой как LUA или Python, например, Game Logic!

0
ответ дан 29 November 2019 в 06:10
поделиться

Если вы хотите работать в отрасли, научитесь хорошо разбираться в C ++. Действительно хорошо. Мол, божественно.

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

Python2 имеет лучшую библиотечную поддержку для игрового материала - - PyGame настроит ваше окно и предоставит вам 2D-операции, PyOpenGL для более интересных вещей, Panda3D и т. Д.

7
ответ дан 29 November 2019 в 06:10
поделиться

Если вы ищете двухмерную гоночную игру, я бы посоветовал использовать AS3 (Flash) с Box2d. -проще начать -большая аудитория

удачи вам, какой бы язык вы ни выбрали!

2
ответ дан 29 November 2019 в 06:10
поделиться

I think your best approach is to start with a language that you are familiar with. Learning about game development requires you to be at ease with your tools and to focus on the specific challenges that comes with the field, rather than the language.

Start with the fundamentals: how do you manage your game loop, how do you load external resources, how to you save and restore state, how to you manage your artificial intelligence and which pathing algorithms are more efficient for your needs? As you start learning, you'll see architectural and functional patterns emerge.

As your project grows, you'll start tackling new challenges such as networking, optimization and the usage of frameworks to make game development more efficient.

So in general, I'd say go for something easy that you are comfortable with, like Python (there are wonderful libraries and frameworks available). Learn the core fundamentals there, and from then on you can explore other options like C++ (seriously used in the industry) and their existing frameworks. I'd stick to non-mobile, non-flash development for now, as developing in those environments introduces extra challenges and constraints which are fairly specific.

2
ответ дан 29 November 2019 в 06:10
поделиться

Учитывая, что вы хотите изучить разработку игр и не имеете большого опыта в этом, я бы рекомендовал начать с Python 2 и использовать последнюю версию, поддерживаемую PyGame.

http://www.pygame.org/

Существует очень много игр, написанных на Python с помощью PyGame, которые доступны в качестве исходного кода для загрузки и изучения. Если вы когда-нибудь получите работу по программированию игр, скорее всего, игровой движок, который они используют, не будет тем, который вы использовали раньше, поэтому вам нужно будет перенести свой опыт в их движок и API. Поэтому Python никоим образом не помешает вам. Фактически, поскольку это освобождает вас от множества мелких деталей, вы можете сосредоточиться на изучении разработки игр, а не на указателях, структурах, синтаксисе, ошибках компиляции и т. Д.

Позже, вы можете перейти на C, когда у вас уже есть основы игрового программирования. Или вы можете обнаружить, что предпочитаете копаться во внутренностях игрового движка, настраивать драйверы и т. Д. В этом случае придерживайтесь PyGame и работайте над улучшениями и улучшениями.

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

5
ответ дан 29 November 2019 в 06:10
поделиться

Я не уверен в вашем предыдущем опыте программирования. Если вы хотите быстро войти в курс дела, я бы порекомендовал Питон. Другие рекомендовали PyGame, который является стандартом де-факто для Python. Есть и другие альтернативы (например, модифицированная версия движка Verge под названием Ika, которая находится в стадии разработки slow, http://ika.sourceforge.net/news.php), но PyGame очень солиден.

Так как вы спрашивали о ресурсе для начала, я бы порекомендовал Invent с Python (http://inventwithpython.com/chapters/). Он использует Python 3 и PyGame, и начинает по-настоящему базовую версию. В следующем месяце или около того вы сможете купить книгу, если захотите (автор упомянул мне, что издатель взял более раннюю версию книги и сделал очень плохую бумажную версию - так что, если вы увидите это на Amazon, избегайте!)

.
0
ответ дан 29 November 2019 в 06:10
поделиться
Другие вопросы по тегам:

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