• Lunes 23 de Diciembre de 2024, 08:01

Autor Tema:  Programacion De Videojuegos En C/asm  (Leído 3702 veces)

remhunter

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Programacion De Videojuegos En C/asm
« en: Lunes 20 de Septiembre de 2004, 11:02 »
0
wow, mi primer mensaje en estos foros  :P
hace tiempo que me ronda la cabeza una idea que tengo en mente. Si bien c++ es un lenguaje de alto nivel con el que es "facil" programar en comparacion con otros lenguajes de mas bajo nivel, supuestamente la velocidad a la que corre este es menor que dichos lenguajes de bajo nivel(como c o incluso asm)
mi pregunta es(dado que estoy interesado en aprender estos lenguajes si resultase factible su uso para el desarrollo de videojuegos), quitando la lentitud que conlleva programar en asm/c, que ventajas/inconvenientes tendrian estos lenguajes en la programacion de videojuegos???

iori2029

  • Miembro activo
  • **
  • Mensajes: 48
    • Ver Perfil
Re: Programacion De Videojuegos En C/asm
« Respuesta #1 en: Lunes 20 de Septiembre de 2004, 18:43 »
0
No creo que se pueda obtener mas velocidad que con assambler o c.Yo se que son los lenguajes que crean los programas mas rapidos.Ahora c++ no es tan lento(digo si casi todos los juegos buenos llevan c++).Yo creo que el asm y c++ son lo adecuado para esto, o por lo menos para empezar.

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Programacion De Videojuegos En C/asm
« Respuesta #2 en: Lunes 20 de Septiembre de 2004, 19:11 »
0
Esta fué una típica discusión (al menos lo imagino) en el momento en que aparecieron los primeros lenguajes de alto nivel contra el ensamblador (y luego la siguiente generación de lenguajes de alto nivel contra la primera), siempre se dice que un lenguaje de alto nivel será más lento que el ensamblador, pero eso en muchos casos deja de ser cierto si se programa bien, además de que cada vez contamos con procesadores mucho más rápidos.

Por otro lado, ¿quién quiere mantener un código escrito completamente en ASM? Lo que se gana con los lenguajes de alto nivel es rapidez de desarrollo, además de una mayor flexibilidad al momento de mantener y/o actualizar el software.

En un videojuego profesional muy probablemente se programe en C++ el 95%, y el resto en ASM, pero sólo en aquellas partes donde sea evidente la ganancia en eficiencia y/o velocidad.

Saludos,
José Jorge (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Programacion De Videojuegos En C/asm
« Respuesta #3 en: Martes 21 de Septiembre de 2004, 05:42 »
0
realmente no creo que un videojuego gane mucho utilizando assembler ya que los compiladores modernos producen codigo de maquina mucho mas rapido que el que pudiera crear culquier programador experto.

REspecto al lenguaje... lo adoro!!! pero definicitva,ente para un juego comercialo usaria C++ o C#.
Ahora para apernder si usaria y uso lenguaje c... bastantante,
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

remhunter

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Programacion De Videojuegos En C/asm
« Respuesta #4 en: Martes 21 de Septiembre de 2004, 23:53 »
0
vamos a ver. acabo de ver un articulo que hablaba de programacion grafica, y, decia que lo mejor, dado que segun ellos el 10% del codigo comprende el 90% del tiempo de ejecucion, es identificar las rutinas que mas tiempo toman y reescribirlas en asm.
despues de esto dice la siguiente frase:
Citar
Por supuesto, si se escribe un programa 100% en asm conociendo los diferentes trucos de pipelinning y saltos de cache, etc. se puede obtener un código mucho más rápido, pero en mucho más tiempo y más difícil de mantener.
mi pregunta es, si una engine (por ej la del doom3) esta escrita en c++ y luego hay otra engine con las mismas caracteristicas exactamente, pero escrita en c/asm, la diferencia de rendimiento seria despreciable o por el contrario la 2º engine seria bastante mejor?? y si estuviese escrita totalmente en asm??? cambiaria asi mucho mas respecto a la programada en c/asm?

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Programacion De Videojuegos En C/asm
« Respuesta #5 en: Miércoles 22 de Septiembre de 2004, 01:12 »
0
Hay que ser sadomasoquista para escribir un motor 3D 100% en asm :whistling:
Con tal de que tenga las rutinas criticas escritas en assambley alcanza y sobra. (Por cierto, estas rutinas no superan un 10% ).
 :hola:

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Programacion De Videojuegos En C/asm
« Respuesta #6 en: Miércoles 22 de Septiembre de 2004, 02:05 »
0
Cita de: "Chris Sawyer"
What language was RollerCoaster Tycoon programmed in?
It's 99% written in x86 assembler/machine code (yes, really!), with a small amount of C code used to interface to MS Windows and DirectX.
Sacado de aqui: Frequently Asked Questions about Chris Sawyer & Game Development.

Actualmente, creo que el porcentaje de ensamblador en los juegos es de... 0 % Half-Life 2 está programado íntegramente en C++ (o no he encontrado los archivos fuente en asm). E intuyo que lo mismo pasa con Doom 3. Las partes que tradicionalmente se hacían en ensamblador eran las de rasterización (pintar) y hoy en día eso lo hace la tarjeta gráfica. Así, lo único que se programa en ensamblador son los shaders (pixel y vertex shaders según DX, y fragment y vertex programs según OGL). Aunque esto ya tiende a desaparecer, gracias a CG, HLSL y GLSL.

Según esto, mi consejo es que aprendas C++ y alguna librería gráfica, como DirectX u OpenGL.

Un saludo.

Ruben3d

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Programacion De Videojuegos En C/asm
« Respuesta #7 en: Miércoles 22 de Septiembre de 2004, 04:08 »
0
Cita de: "remhunter"
mi pregunta es, si una engine (por ej la del doom3) esta escrita en c++ y luego hay otra engine con las mismas caracteristicas exactamente, pero escrita en c/asm, la diferencia de rendimiento seria despreciable o por el contrario la 2º engine seria bastante mejor?? y si estuviese escrita totalmente en asm??? cambiaria asi mucho mas respecto a la programada en c/asm?
Existe otro "detalle" que creo que no se ha tomado en cuenta. Al momento de realizar el pesado trabajo de optimizar cualquier tipo de programa usando "trucos avanzados" estás optimizando el código para un procesador de una determinada sub-familia. Por ejemplo: para tal modelo de intel o para tal modelo de amd.

Esto lo escribo por que dependiendo del procesador los tiempos de proceso de las distintas instrucciones varían mas o menos un 5% a 20%, lo que en algunos procesadores se hace un poco más rápido en otros se hace un poco más lento... Así que mientras puedes estar optimizando el código para el modelo X de intel para ganar un 10% puedes estar perdiendo un 15% en el modelo X de amd o viceversa. Al final terminas con el lio de tener que crear y mantener dos versiones optimizadas del mismo código para distintos procesadores.