Разработка игр только на C. Является ли это возможным? [закрыто]

18

Я студент первого курса колледжа в Индии и хочу сделать небольшую игру в этом семестре.

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

То, что я ищу, является простой игрой вождения сверху. В нем не будет ничего фантастического, и даже визуальные элементы будут питаться от простых персонажей. Например, контролируемый пользователем автомобиль может быть представлен символом ▓, а край дороги - серией |. Как вы думаете?

Ишан Шарма
источник
1
связанные с : gamedev.stackexchange.com/questions/371/...
Тетрадь
8
SDL написан на C. OpenGL - это C. Что еще нужно?
Коммунистическая утка
2
Кроме того, Quake все сделано в C.
Коммунистическая утка
Сделайте себе одолжение и используйте библиотеки Allegro;) alleg.sourceforge.net
o0 '.
1
RollerCoaster Tycoon был сделан почти в чистом виде, так почему бы и нет?
Рамон Заразуа Б.

Ответы:

23

Написание игр на С возможно. Например, Quake II написан исключительно на C, поэтому написание других игр на C не должно составлять никаких проблем. Это может быть лучшим выбором, если вы более опытны и удобны в C, чем в C ++.

martiert
источник
2
@Ishan Sharma: На самом деле, большая часть разработки игр (движков) все еще не написана на C, или, по крайней мере, на C: ish C ++. Ничто не говорит о том, что ваша игра на C ++ будет лучше (или даже лучше написана) только потому, что это C ++.
аннулировано
6
@void: Это верно только в том случае, если рассматриваемый программист не знает, как эффективно использовать C ++. Программы на C ++, написанные там, где автор имеет базовое понимание объектной ориентации, гораздо более безопасны и надежны, чем эквивалентные программы на C.
DeadMG
8
@DeadMG [нужна цитата]
Боб Сомерс
6
@ Боб Сомерс: Легко. Сравните std::stringс char*. std::stringвсегда очищает свою память в любой ситуации, каждый раз выделяет нужное количество. char*Вы можете забыть освободить, или дважды освободить, или не выделить достаточно памяти. Упс. Базовая логика говорит , что программы C ++ являются лучше и безопаснее , чем программы C.
DeadMG
12
@DeadMG Хороший программист может написать хороший, безопасный код на любом языке. И наоборот, плохой программист может написать ужасный, небезопасный код на любом языке. Бедный плотник обвиняет свои инструменты.
Боб Сомерс
11

Я работаю на базе кода AAA MMORPG, которая является чистым C, так что да.

coderanger
источник
5
Я предполагаю, что это ставит вас в Cryptic. Вы используете какой-либо язык сценариев?
Дэн Олсон
3
У нас есть язык внутренних выражений, который используется дизайнерами практически для всего, и мы используем смесь Python и Lua для некоторых вещей (автономная обработка, сокращение карт в игровых DBS для статистики), но в самой игре нет языка реальных сценариев.
Coderanger
6

Да, это вполне возможно. Многие API уровня ОС, такие как POSIX и Windows, DirectX и OpenGL, имеют C-совместимые интерфейсы.

DeadMG
источник
6

Фабьен Санглард написал статью о своем 3D-движке на C. На Reddit эта статья вызвала интересную дискуссию.

Языки - это всего лишь инструменты ... Поэтому используйте их с умом. Чтобы создать хорошую игру, проще использовать XNA или Unity3D. Освоение C - хороший первый шаг, но вы должны изучить C ++, D, python, lua ... C ++ - очень сложный язык. Так что используйте его осторожно.

Эллис
источник
3

C отлично подходит для разработки игр.

Я работаю над 3D-платформером, и у меня никогда не было проблем с языком. Единственными проблемами являются обнаружение столкновений и затенение, я просто ничего о них не знаю, они все равно встречаются на любом другом языке.

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

Если вам нужна ориентация объекта и модульность, вы можете создавать структуры указателей функций.

Triang3l
источник
1

Без сомнения. Многие библиотеки, полезные при разработке игр (такие как SDL, PhysFS и т. Д.), Имеют C API, что очень помогает.

Возможно, вы захотите посмотреть на встраивание скриптового языка, такого как lua если хотите заниматься любым расширяемым программированием на высоком уровне. Многие люди начинают видеть привлекательность в программировании C-фреймворка, который использует lua для таких вещей, как AI, события и т. Д.

Удачи.

Джеймс
источник
1

Простой ответ на этот вопрос: Вы можете сделать простую текстовую игру, подобную этой, на любом языке программирования. Даже паскаль, базовый или x86 ассемблер:]

(и больше ничего не нужно)

NotaBene
источник
0

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

Если вы настаиваете на C вместо C ++ (что не имеет смысла для меня, но для каждого свое), лучше всего использовать Lua в сочетании с C.

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

Дэн Олсон
источник
Lua хорош во время разработки, но перед выпуском все должно быть перенесено на родной язык для более высокой производительности.
Triang3l
@ Triang3l Я совсем не согласен. То, что вы описываете, является преждевременной оптимизацией. Использование родного языка НЕ ​​гарантирует, что ваш код быстрее. Правильный способ сделать это - профилировать ваш код, находить узкие места и улучшать этот код. Существует множество примеров, когда разработчики пытались написать собственный код C для замены кода Java, а код C стал значительно медленнее, или когда разработчики пытались заменить код C значительно более медленным кодом сборки. Не стоит недооценивать разработчиков языка высокого уровня и среды исполнения для него.
user1657170
0

Конечно вы можете. Многие игры были запрограммированы на C (DOOM приходит на ум). SDL - это библиотека программирования игр, написанная на C.

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

rzrscm
источник
0

Я думаю, что это можно сделать с полной игры. Я сделал игру (которая похожа на «космическое воздействие» мобильного телефона nokia 1110) в моем проекте на 2-й семестр с использованием компилятора turbo c. Я думаю, что вы можете попробовать этот способ (как студент первого курса), не зная других.

sabbir
источник