Чи є майбутнє C # у розвитку ігор?


18

Нещодавно я дізнався, що MMO Minecraft працює від Java з недавнього інтерв'ю на CVG.co.uk про можливу співпрацю двох колишніх та нині конкуруючих колег. В інтерв'ю він прямо сказав, що засновником Minecraft є кодер Java, і він є кодером C або C ++, тому вони несумісні один з одним. Тож співпрацювати над майбутніми проектами буде складно.

Це змусило мене задуматися, якби Java могла це зробити? Що передбачає майбутнє для MS, дуже популярного мови C # та платформи .Net, що стосується розвитку ігор чи основних ігор?



3
Це все про потрібні вам вистави, Minecraft нормально керованою мовою, але для графічних ігор високого класу перевагу віддається C або C ++ або іншим рідним мовам

19
Minecraft насправді не є MMO.
DeadMG

3
@ Guillaume86: Кодированний код на даний момент може перевершувати нативний код, і Jits постійно стає кращим. Також керовані мови створюють набагато більш надійні програми. Отже, врешті-решт, C ++ втрачає перевагу у виконанні та значно важче писати надійні програми (що означає триваліший час розробки та більше витрат)
Мартін

4
JIT може перемогти погано написаний нативний код, не жорстко оптимізований і налаштований внутрішні петлі. Згідно навіть із C #, ви можете написати ці чутливі сегменти в C / C ++, якщо дуже хочете.
кодеранджер

Відповіді:


22

Ви повинні перевірити XNA . Платформа для створення ігор для Windows, Xbox 360 та Windows Mobile 7. Все в C # і .NET.


11

Я займаюся розробкою професійних ігор більше 5 років. Більшу частину цього часу я використовував C # майже виключно.

Стек C # і .NET взагалі справді чудово підходить для серверних технологій. Я працював над не менше 4 іграми MMO з сервером, написаним на C #. Крім того, коли Unity3D набирає популярності, для багатьох браузерних та мобільних ігор потрібна C #. Не забувайте про рамки XNA: це не двигун вибору для назв консолей AAA, але багато чудових ігор, зроблених з нею, і багато інших на даний момент в процесі створення.

В цілому, C # безумовно має майбутнє в розвитку ігор.


це старе питання, але одне мене турбує. "серверна технологія" - що саме ви маєте на увазі під цим? WindowsService, який працює на якомусь сервері Windows за допомогою .NET Framework? Я завжди думав, що сервери створені в c ++ і працюють на unix os. Мені було просто цікаво
Маршалл

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

дякую, що повернулися до мене. Просто для уточнення - "працює на Windows" як безголові Служби Windows або такі програми, як WinForms (із вбудованою конфігурацією чи щось подібне)?
Маршалл

Послуга без голови, як правило, краща ідея, але ніщо не заважає вам просто запустити консольний додаток. Або навіть графічний інтерфейс, за винятком того, що на сервері немає нікого, хто використовує вказаний графічний інтерфейс.
забудьте

10

Як вже було сказано, Mono приносить C # на кілька платформ. У цій самій області ви знайдете Тао , багатоплатформенну бібліотеку для Mono та .NET, яка дозволяє отримати доступ до Cg, DevIL, FreeGLUT, GLFW, GLU, ODE, OpenAl, OpenGL, PhysicsFS, SDL та WGL. Це, очевидно, не настільки надійне, коли мова йде про функції, як XNA (яка забезпечує основні компоненти двигуна безпосередньо розробнику); але, це досить потужно.

Отже, безперечно платформа поза межами ОС і апаратного забезпечення, що контролюється Microsoft, безумовно, можлива. Просто, не так багато популярних інді-ігор використали цю здатність.

Як уже згадувалося, XNA у поєднанні з C # дозволяє незалежним розробникам публікувати на 360, ПК та Windows Phone 7.

Загалом, C # живий і здоровий у розвитку ігор як мотор / мова гри.

Як мова інструментів, вона використовується скрізь. Я створив інструменти для EA, THQ і тепер Arkadium, які використовують C #.


5

У C # не тільки майбутнє в розвитку ігор, але і подарунок - Ознайомтеся з Magicka , нещодавно випущеною грою (і добре проданою), розробленою за допомогою XNA. Погляньте також на виграшні записи Dream.Build.Play . C # - це життєздатний спосіб створення ігор (хоча зараз я не вірю, що це правильний вибір для всіх ігор).

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


4

Java завжди була дуже універсальною мовою, і завжди люди мали можливість кодувати ігри в ній, від простих веб-ігор (Java аплети / GWT з полотнім плагіном) до повних 3D звірів (замовлення JMonkey ). Тому я б не сказав, що Java може робити подібні речі - це вбивця C #, оскільки більшість людей знає, що Java вже може це зробити.

C # як і раніше залишається популярним, оскільки він неминуче зв'язується з Windows, Windows Mobile та Xbox набагато краще, ніж Java (що, справді, всі розробники ігор дійсно піклуються про націлювання, тому перевагу крос-платформи, яку Java має в основному, втрачено.) також отримав XNA, який справді знявся з точки зору розвитку ігор.

Так, так, Java - це ідеально хороша платформа для розробки ігор, якщо хтось захоче піти цим маршрутом, але це, звичайно, не вбивця C # або .NET.


4

Ознайомтеся з Unity 3D; С # сценаріїв C # (і JavaScript, і Boo) у високоефективній 3D-системі.

Додайте XNA до суміші, і ви шукаєте кілька чудових платформ для використання C # для розробки ігор.


У Unity також є веб-плеєр, щоб ви могли грати у браузері. Плагін не має такого величезного проникнення на ринок, як flash або java, але це можливо.
Майкл Коулман

Так, єдність !!
Даніель Пендергаст

1

Так, C # має майбутнє, з рамкою XNA. Більшість вважає за краще C ++ через швидкість, але C # вже не така повільна ...


2
Це зовсім не повільно. Це рідко гірше, ніж приблизно 70% швидкості С ++, а іноді навіть може бути швидше!
Нолдорін

4
Операції, пов'язані з процесором у C #, є досить швидкими, вони проводять додаткову перевірку, що значно покращує безпеку коду за рахунок незначних звернень до продуктивності, але де це значно гірше, ніж C ++ - у споживанні пам'яті та керуванні ними. Це чортове набагато простіше і менш схильне до C #, але продуктивність хітів GC може бути абсолютною собакою.
Justin.m.chase

Але будьте обережні, коли націлюєте на Xbox360. У програмі XNA не вистачає можливостей для деяких основних оптимізацій і не дозволяє вам переміщувати чутливі до продуктивності частини на некерований код.
drxzcl


1

Що він робив з Java в цьому випадку, це створити аплет, щоб ви могли просто увійти на сайт і пограти з дуже поширеним плагіном, повністю прозорим, для якого використовується операційна система. Я думаю, що його думка полягала в тому, що Java була досить прозорою при використанні цього способу, і це полегшило б швидку ітераційну розробку / тестування, яку він отримував від шанувальників. Я не вірю, що ви можете просто зробити це з XNA, тому що зазвичай у тестера є все, що встановлено, а також гра та деякі загальні знання про те, як це компілювати та запускати.

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


1

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

Ніщо не могло бути далі від істини.

C # і Java вже давно використовуються в іграх. C і C ++ мають ще довше, і досі є. Lua використовується як мову сценаріїв для деяких неймовірно популярних ігор, при цьому движок написаний на C / C ++.

Так зрозуміло, що жодна мова програмування не видуває з води інших мов програмування, як The Game Programming Language. Насправді ми бачимо тенденцію до того, що провідні ігри складаються з високомобільної мови програмування для складання двигуна (ив).

Ключовим на даний момент є продуктивність. Якщо будь-яка з використаних мов / бібліотек програмування викликає непередбачувані / неконтрольовані паузи в додатку, то в ігровій дії, яка впаде на обличчя. У текстовій пригодницькій грі це все може бути добре.

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