Чи є C ++ "все ще" кращим у розробці гри? [зачинено]


17

Я 2D-ігровий програміст. Деякі мови програмування, якими я непоганий, - це C, Java, C #. Я також знаю Actionscript 2.0,3.0 і деякі JavaScript. Мені цікаво вивчити програмування 3D-ігор. На сьогоднішній день від досліджень, які я накопичив, гуглившись та читаючи різні форуми та статті з розвитку ігор. Я помітив, що більшість програмістів, як правило, віддають перевагу мові C ++. Також в курсі викладання програм онлайн-ігор я помітив, що вони вважають за краще викладати C ++ та Visual C ++ як початковий курс. З цієї причини я задаю це питання, оскільки я хотів би знати різницю між силою C ++, C # та Java для 3d програмування ігор.

Також додайте посилання на хороші статті з програмування 3d-ігор для вже програвача 2d ігор.

PS: ІМХО, я також вважаю, що C ++ є виразним.


Я також багато чого отримую. Тому задайте питання спільноті щодо того, якими навичками повинен володіти професійний програміст ігор. Отримав кілька приємних відповідей, орієнтуючись на C ++ як кращу мову для розвитку ігор. перевірити .. gamedev.stackexchange.com/questions/5552 / ...
GamDroid

@GamDroid: Мені не цікаво знати, що робить професійний програвач 2d ігор. Мені цікаво дізнатись про Visual C ++ і чому про це так говорять.
Вишну

2
Btw: Visual C ++? Не просто звичайний C ++?
швидкісник

Редактор Visual C ++ класний, але мова Visual C ++ (тобто: C ++ з API інтерфейсу Win32 та подібні речі, як з MS Visual C ++, так і з Borland C ++ Builder) досить заплутана і не повинна використовуватися для ігор (це занадто роздутий, а використання GDI повільніше, ніж використання, скажімо, SDL, для керування вікном)
швидкість

1
@ Віш, тоді вибачте, сміливо відредагуйте це, щоб бути точнішим, маючи на увазі коментарі поки що. Якщо ви маєте на увазі програмування Win32 заплутаним, то скажіть це.
Тетрад

Відповіді:


30

Так, найчастіше використовується мова C ++ (хоча деякі люди все ще використовують C).

Для цього є численні причини. Швидкий імпульс - це просто мова, якою користуються роками, багато технологій вже існує, і людям це зручно, тому зміни не відбудуться протягом ночі.

Тоді виникає питання контролю. Розробники ігор керують виродками, і нам подобається знати все, що відбувається в нашому коді. C ++ дає нам те, що контроль, C # та Java (щоб вибрати дві альтернативи, які ви згадуєте) забирають контроль. Багато в чому це може бути хорошою справою, але ігровим кодерам це не подобається :)

Нарешті, є простий практичний випадок, що SDK для різних платформ дуже орієнтовані на C ++. Використання іншої мови неминуче включає написання обгортки, перехресне компіляція до VM, і, можливо, (у випадку певної розробки консолі), власник платформи заборонено (вони насправді не люблять людей, що займаються компіляцією JIT, для початку).


2
В галузі розвитку основних напрямків, так.
JasonD

2
Щодо мов, С ++, насамперед - це не піде нікуди швидше. Я б припустив, що також не завадить ознайомитись із мовами сценаріїв - Lua, Python тощо.
JasonD

8
Visual C ++ - це не мова, це IDE.
SurvivalMachine

2
Так, хоча це, мабуть, найбільш використовуваний IDE, тому варто ознайомитися з цим одночасно з навчанням C ++.
JasonD

1
@SurvivalMachine Ну технічно це діалект (є багато розширень MSVC ++, яких немає в стандарті)
bobobobo

4

C ++ як і раніше вважається кращим, як ви бачите в майже будь-якій публікації на тему розробки ігор. В даний час я особисто використовую C для свого занурення в розробку гри з тієї простої причини, що код C ++, який я пишу, зловживає функціями шаблонування, широко використовує RAII, динамічне розподілення пам'яті та інші речі, які ви просто не повинні робити в ігровому коді з того, що я бачив так далеко.

Дотримуючись C, змушує мене бути мінімалістичним і думати про те, що я роблю. Це може бути складніше, коли вам доведеться повторно впроваджувати щось, що STL дає вам безкоштовно, але я відчуваю, що я пишу більш чистий код і в мене є час налагодити цю річ.


3
RAII цілком прийнятний (і його слід заохочувати) в ігровому коді.
кам’яний метал

1
@stonemetal: RAII заохочує затримку та, таким чином, непередбачуване розподіл ресурсів. Чи варто це заохочувати чи ні, залежить від розміру вашої гри та ваших цільових платформ (та відповідного ресурсу); в середньому я б не заохочував це. Крім того, RAII в C ++ найчастіше використовується при розподілі купи, оскільки OO C ++ робить розподіл стека занадто важким.

3
Яким чином RAII заохочує затримку розподілу ресурсів? Коли я використовую GLFW, я створюю клас під назвою GLFWRAII, який викликає функцію init GLFW в конструкторі та викликає процедуру очищення GLFW в деструкторі. Я виділяю його на стеку на початку основного, він жодним чином не затримує і не робить нічого непередбачуваного. Іншими можливостями може бути виділення на початку рівня та очищення в кінці рівня. Погане використання техніки не робить це поганою технікою. Ніщо про RAII не передбачає непередбачуваного розподілу ресурсів, крім поганого використання.
кам’яний метал

Вам просто потрібно уникати використання цих функцій. Я використовую C ++, і ніколи не використовую шаблони у своєму коді, а також об’єкти, що викидають винятки, у своїх конструкторах. У C ви все ще можете використовувати динамічний розподіл (і потрібно для 3D-гри). Крім того, ви повинні кодувати таким чином, щоб і комусь було легко зрозуміти - великий проект із чистим кодом С може бути пеклом, навіть якщо ви це розумієте. Якщо ви навчитесь думати про те, що ви робите, навіть якщо мова не змушує вас цього робити, ви зможете писати чистий код і на багатьох інших мовах.
Пабло Аріель

1

Я особисто не є фанатом C ++, і віддаю перевагу Java. Однак більшість людей в галузі користуються ним, і це найпростіша мова для перетворення на інші платформи без обгортки та віртуальних машин.

Однак іноді інші мови працюють досить добре для розвитку ігор. Я використовую Java з LWJGL, і це дивовижно. Тож якщо ви хочете почати з 3D-програмування та OpenGL, не вивчаючи C ++, спробуйте LWJGL з Java, тому що він дуже легкий, і я думаю, що це насправді код C ++, що проходить через JNI.

Можливо, з часом ви можете перейти на C ++, але ви можете почати і практикувати за допомогою C # або Java. Оскільки більшість ігрових кодів походить з досвіду роботи з мовою, але ви повинні спробувати практикувати OpenGL з мовою, якою вам зручно. Крім того, поки ви займаєтесь графікою, ви також повинні спробувати GLSL з OpenGL, він має дуже синтаксис, подібний С

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.