Розробка ігор лише в C Це можливо? [зачинено]


18

Я студент першого курсу коледжу в Індії і хочу зробити невелику гру як проект цього семестру.

Я досить добре володію C і швидко навчаюсь, але хотів би запитати, чи розробляю гру повністю на C (немає C ++ чи C #), я б хотів їх використовувати, але для коледжних проектів, у нас суворі вимоги використовувати лише C.

Те, що я шукаю, - це проста рульова гра з видом зверху. У ньому не буде нічого фантазії, і навіть візуальні речі будуть живитись простими персонажами. Наприклад, автомобіль, керований користувачем, може бути представлений ▓ та краями дороги за серіями |. Що ти думаєш?



8
SDL написано на C. OpenGL - це C. Що ще потрібно?
Качка комуніста

2
Також у Quake все робиться в C.
Качка комуніста

Зробіть собі прихильність і використовуйте бібліотеки Allegro;) alleg.sourceforge.net
o0 '.

1
RollerCoaster Tycoon був виконаний майже в чистому складі, так чому б і ні?
Рамон Заразуа Б.

Відповіді:


23

Написання ігор на C можливо. Наприклад, Quake II написаний виключно на мові C, тому писати інші ігри на C взагалі не повинно бути проблемою. Можливо, це буде кращий вибір, якщо ви більш кваліфіковані та комфортніші на C, ніж у C ++.


2
@Ishan Sharma: Насправді багато розробок ігор (двигунів) все ще знаходяться в C, або, принаймні, дуже C: ish C ++. Ніщо не говорить про те, що ваша гра C ++ буде краще (або ще краще написана) лише тому, що це C ++.
недійсна

6
@void: Це справедливо лише в тому випадку, якщо відповідний програміст не має уявлення про те, як ефективно використовувати C ++. Програми C ++, написані там, де автор має основне розуміння орієнтації на об'єкти, набагато безпечніші та надійніші, ніж еквівалентні програми C.
DeadMG

8
@DeadMG [потрібна цитата]
Боб Сомерс

6
@Bob Somers: Легко. Порівняйте std::stringз char*. std::stringзавжди очищає власну пам'ять у будь-якій ситуації, виділяє потрібну кількість кожного разу. char*, ви можете забути звільнити або подвоїти безкоштовно або не виділити достатню кількість пам'яті. Уопс. Основна логіка говорить, що програми C ++ є кращими та безпечнішими, ніж програми C.
DeadMG

12
@DeadMG Хороший програміст може написати хороший, захищений код будь-якою мовою. І навпаки, поганий програміст може писати жахливий, незахищений код будь-якою мовою. Бідний столяр звинувачує свої знаряддя праці.
Боб Сомерс

11

Я працюю над кодовою базою AAA MMORPG, яка є чистою C, так що так.


5
Я думаю, що це ставить вас у Cryptic. Чи використовуєте мову будь-якого сценарію?
Ден Олсон

3
У нас є внутрішня мова вираження, яка використовується дизайнерами в основному для всього, і ми використовуємо суміш Python і Lua для деяких речей (офлайн-обробка, зменшення карт на DBS-грі для статистики), але немає справжньої мови сценаріїв у самій грі.
кодерангер

6

Так, це цілком можливо. Багато API-інтерфейсів на рівні ОС, такі як POSIX та Windows, DirectX та OpenGL, мають C-сумісні інтерфейси.


6

Фабієн Санглард написав статтю про свій 3d двигун у C. На Reddit ця стаття породила цікаву дискусію.

Мови - це лише інструменти ... Тож використовуйте їх розумно. Для створення гарної гри може бути простіше використовувати XNA або Unity3D. Освоєння C - хороший перший крок, але ви повинні навчитися C ++, D, python, lua ... C ++ - це дуже складний ланцюг. Тому використовуйте його обережно.


3

C чудово підходить для розвитку ігор.

Я працюю над 3D-платформою, і у мене ніколи не було проблем з мовою. Єдині проблеми - це виявлення зіткнень та їх затінення, я просто нічого про них не знаю, вони все ще траплятимуться на будь-якій іншій мові.

Насправді мені це набагато простіше, ніж такі мови, як C # та Java. Я завжди повторюю об'єкти, що використовують покажчики ( приклад з мого коду ), і freadекономив багато часу, роблячи завантажувач карт.

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


1

Без сумніву. Багато бібліотек, корисних для розробки ігор (наприклад, SDL, PhysFS тощо) мають API API, що дуже допомагає.

Ви можете заглянути вбудовувати мову сценаріїв, наприклад, lua, якщо ви хочете зробити будь-яке розширене програмування високого рівня. Багато людей починають бачити привабливість у програмуванні С-рамки, яка використовує lua для таких речей, як AI, події тощо ...

Удачі.


1

Проста відповідь на це запитання: Ви можете робити просту гру на основі тексту, як це в кожній мові програмування. Навіть pascal, basic або x86 асемблер:]

(і більше нічого не потрібно)


0

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

Якщо ви наполягаєте на C замість C ++ (що не має сенсу для мене, але для кожного свого), вам, можливо, найкраще використовувати Lua спільно з C.

Для проектів коледжу, для яких потрібен C, це не буде варіантом, але для проектів у вільний час це буде хороший спосіб вчитися.


Lua хороший під час розробки, але перед випуском все повинно бути перенесено на рідну мову для підвищення продуктивності.
Triang3l

@ Triang3l Я зовсім не згоден. Те, що ви описуєте, - передчасна оптимізація. Використання рідної мови НЕ гарантуйте, що ваш код буде швидшим. Правильний спосіб зробити це - профіль вашого коду, пошук вузьких місць та вдосконалення цього коду. Є чимало прикладів, коли розробники намагалися написати власний код C для заміни Java-коду, а код C став значно повільнішим, або де розробники намагалися замінити C-код на значно повільніший код збірки. Не варто недооцінювати розробників мови високого рівня та середовища її виконання.
користувач1657170

0

Звичайно, ви можете. Багато ігор було запрограмовано на C (DOOM приходить на думку). SDL - бібліотека ігрових програмувань, написана в С.

Звичайно, це може бути трохи складніше, ніж використовувати C ++ для великого проекту, але це можливо.


0

Я думаю, що можна зробити повноцінні ігри на c. Я зробив гру (яка схожа на «космічний вплив» nokia 1110 mobile) у своєму проекті 2 семестру, використовуючи компілятор turbo c. Я думаю, ви можете спробувати так (як студент першого курсу), не знаючи жодного іншого.

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