Desarrollo de juegos solo en C. ¿Es posible? [cerrado]


18

Soy un estudiante universitario de primer año en India y quiero hacer un pequeño juego como un proyecto de este semestre.

Soy bastante bueno en C y lo estoy aprendiendo rápidamente, pero quería preguntar si desarrollar un juego completamente en C (sin C ++ o C #) me encantaría usarlos, pero para proyectos universitarios, tenemos requisitos estrictos de usar solo C.

Lo que estoy buscando es un simple juego de conducción con vista superior. No tendrá nada sofisticado e incluso las cosas visuales serán alimentadas por personajes simples. Por ejemplo, el automóvil controlado por el usuario puede ser representado por ▓ y los bordes de la carretera por series de |. ¿Qué piensas?



8
SDL está escrito en C. OpenGL es C. ¿Qué más necesitas?
El pato comunista

2
Además, Quake se hace todo en C.
El pato comunista

Hazte un favor y usa las bibliotecas Allegro;) alleg.sourceforge.net
o0 '.

1
RollerCoaster Tycoon se hizo casi en puro ensamblaje, ¿por qué no?
Ramon Zarazua B.

Respuestas:


23

Escribir juegos en C es posible. Por ejemplo, Quake II está escrito exclusivamente en C, por lo que escribir otros juegos en C no debería ser ningún problema. Puede ser la mejor opción si eres más competente y cómodo en C que en C ++.


2
@Ishan Sharma: En realidad, una gran cantidad de desarrollo de juegos (motor) todavía no se usa en C, o al menos muy C: ish C ++. Nada dice que tu juego de C ++ será mejor (o incluso mejor escrito) solo porque es C ++.
nulo

66
@void: Eso solo es cierto si el programador en cuestión no tiene idea de cómo usar C ++ de manera efectiva. Los programas C ++ escritos donde el escritor tiene una comprensión básica de la orientación a objetos son mucho más seguros y confiables que los programas C equivalentes.
DeadMG

8
@DeadMG [cita requerida]
Bob Somers

66
@Bob Somers: Fácil. Comparar std::stringa char*. std::stringsiempre limpia su propia memoria en cualquier situación, asigna la cantidad correcta cada vez. char*, puede olvidarse de liberar o duplicar o no asignar suficiente memoria. Whoops La lógica básica dice que los programas C ++ son mejores y más seguros que los programas C ++ .
DeadMG

12
@DeadMG Un buen programador puede escribir un código bueno y seguro en cualquier idioma. Por el contrario, un mal programador puede escribir un código horrible e inseguro en cualquier idioma. Un pobre carpintero culpa a sus herramientas.
Bob Somers

11

Trabajo en una base de código AAA MMORPG que es pura C, así que sí.


55
Supongo que eso te pone en Cryptic. ¿Utiliza algún tipo de lenguaje de script?
Dan Olson

3
Tenemos un lenguaje de expresión interno que utilizan los diseñadores para básicamente todo, y utilizamos una combinación de Python y Lua para algunas cosas (procesamiento fuera de línea, reducción de mapas en DBS del juego para estadísticas), pero no hay lenguaje de secuencias de comandos real en el juego en sí.
coderanger

6

Sí, es perfectamente posible. Muchas API de nivel de sistema operativo como POSIX y Windows, DirectX y OpenGL tienen interfaces compatibles con C.


6

Fabien Sanglard ha escrito un artículo sobre su motor 3D en C. En reddit, este artículo ha creado un debate interesante.

Los idiomas son solo herramientas ... Así que úselos sabiamente. Para crear un buen juego, puede ser más fácil usar XNA o Unity3D. Dominar C es un buen primer paso, pero debes aprender C ++, D, python, lua ... C ++ es un idioma muy difícil. Así que úsalo con cuidado.


3

C es genial para el desarrollo de juegos.

Estoy trabajando en un juego de plataformas en 3D, y nunca he tenido ningún problema con el idioma. Los únicos problemas son la detección de colisiones y el sombreado, simplemente no sé nada sobre ellos, todavía ocurrirían en cualquier otro idioma.

De hecho, me resulta mucho más fácil que lenguajes como C # y Java. Siempre itero en entidades que usan punteros ( un ejemplo de mi código ) y freadahorro mucho tiempo haciendo el cargador de mapas.

Si desea la orientación y la modularidad de los objetos, puede crear estructuras de punteros de función.


1

Sin duda. Muchas bibliotecas útiles en el desarrollo de juegos (como SDL, PhysFS, etc.) tienen API de C, lo que ayuda mucho.

Es posible que desee considerar incrustar un lenguaje de secuencias de comandos como lua si desea realizar una programación extensible de alto nivel. Muchas personas están comenzando a ver el atractivo en la programación de un marco C que usa lua para cosas como IA, eventos, etc.

Buena suerte.


1

La respuesta simple para esta pregunta es: Puedes hacer un juego simple basado en texto como este en cada lenguaje de programación. Incluso ensamblador pascal, básico o x86:]

(y no necesito nada más)


0

Sí, es posible, pero puede que no sea el curso de acción más deseable. Algunas personas reconocen en estos días que C y C ++ no son ideales para una serie de tareas, y la lógica de juego de alto nivel a menudo cae en esa categoría.

Si insiste en C en lugar de C ++ (lo que no tiene sentido para mí, pero para cada uno lo suyo), es mejor que use Lua junto con C.

Para sus proyectos universitarios que requieren C esto no será una opción, pero para proyectos de tiempo libre sería una buena forma de aprender.


Lua es bueno en el tiempo de desarrollo, pero antes del lanzamiento, todo debería ser portado a un idioma nativo para un mayor rendimiento.
Triang3l

@ Triang3l No estoy de acuerdo en absoluto. Lo que describe es la optimización prematura. Usar un idioma nativo NO garantiza que su código sea más rápido. La forma correcta de hacer esto es perfilar su código, encontrar cuellos de botella y mejorar ese código. Hay muchos ejemplos en los que los desarrolladores intentaron escribir su propio código C para reemplazar el código Java y el código C se volvió significativamente más lento, o donde los desarrolladores intentaron reemplazar el código C con un código de ensamblaje significativamente más lento. No subestimes a los desarrolladores de un lenguaje de alto nivel y el entorno de tiempo de ejecución.
user1657170

0

Por supuesto que puede. Muchos juegos han sido programados en C (DOOM viene a la mente). SDL es una biblioteca de programación de juegos escrita en C.

Of course, it may be a little more difficult than using C++ for a big project, but it's possible.


0

I think it is possible to make a complete c games. I have made a game ( which is similar to 'space impact' of nokia 1110 mobile ) in my 2nd semester project using turbo c compiler. I think you can try this way ( as a first year college student ) without knowing any others.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.