[DUDA] Programar videojuegos, c++, c# o java?

Pues eso, me gustaria q me orientarais un poco en el campo de la programacion de videojuegos, y lo primero, el lenguaje a elegir, se que esto deberia ir en el foro de Desarrollo, pero aquello esta mas muerto....

Bueno, yo habia pensado en utilizar XNA con C# ya que por lo que se no se puede con c++
Con c++ existe DarkGDK, aunq comparado con XNA no hay color.
Y en cuanto a java pues no se muxo de librerias orientadas a videojuegos.(Aunque actualmente programo en este lenguaje, pero programas de gestion)

Que opinais, cual deberia elegir?

Gracias de antemano.
XNA es la mejor apuesta de futuro en mi opinión. El C++ también te permitirá hacer tus pinitos. El Java creo que es la peor elección de las 3 claramente.
depende de la plataforma para la que quieras programar, si quieres algo que te sirva para "todo" tirate por el C [sati]
yo lo hago con c++ y opengl... aunque aprender java es mucho mas facil y sencillo, aunque c++ te da muchas mas posibilidades... aparte siempre puedes intentarlo en lenguaje ensamblador...
red0n escribió:yo lo hago con c++ y opengl... aunque aprender java es mucho mas facil y sencillo, aunque c++ te da muchas mas posibilidades... aparte siempre puedes intentarlo en lenguaje ensamblador...


Ensamblador??? [flipa] xro q dices????
dark-kei escribió:
red0n escribió:yo lo hago con c++ y opengl... aunque aprender java es mucho mas facil y sencillo, aunque c++ te da muchas mas posibilidades... aparte siempre puedes intentarlo en lenguaje ensamblador...


Ensamblador??? [flipa] xro dices????

Ni que fuera una locura, por ejemplo Wreckless de xbox estaba hecho en ensamblador.
Ensamblador mola. Trátalo bien y él te dará patadas en el culo, pero es un viejo entrañable, uno no se puede enfadar con él xD
Johny27 escribió:
dark-kei escribió:
red0n escribió:yo lo hago con c++ y opengl... aunque aprender java es mucho mas facil y sencillo, aunque c++ te da muchas mas posibilidades... aparte siempre puedes intentarlo en lenguaje ensamblador...


Ensamblador??? [flipa] xro dices????

Ni que fuera una locura, por ejemplo Wreckless de xbox estaba hecho en ensamblador.


Supongo que para lo que pretenderá hacer si es bastante locura, a no ser que se tome la programación en asm como un entretenimiento en sí mismo.
La mejor apuesta a corto y a largo plazo es sin duda C#, mucho más completo que C++ y más cómodo a la hora de programar. De C++ te recomiendo el engine 3D de Ogre, muy facil de manejar y muy potente, el C# es el que más utilizo te recomiendo en este caso aparte de XNA, engines muy buenos con los que podrás hacer el juego que quieras y con poco esfuerzo, el primero se llama Jad Engine, que empezó como un proyecto español y al verse que tenía potencia se expandió más a un plano internacional, el segundo que te recomiendo por su facilidad de uso es el Visual3D.NET. Con todo ésto, un poco de trabajo y un mucho de imaginación lograrás lo que quieras.

Saludos!
Johny27 escribió:
dark-kei escribió:
red0n escribió:yo lo hago con c++ y opengl... aunque aprender java es mucho mas facil y sencillo, aunque c++ te da muchas mas posibilidades... aparte siempre puedes intentarlo en lenguaje ensamblador...


Ensamblador??? [flipa] xro dices????

Ni que fuera una locura, por ejemplo Wreckless de xbox estaba hecho en ensamblador.

No jodas, no sabía eso, me parece una barbaridad [flipa] .
Johny27 escribió:
dark-kei escribió:
red0n escribió:yo lo hago con c++ y opengl... aunque aprender java es mucho mas facil y sencillo, aunque c++ te da muchas mas posibilidades... aparte siempre puedes intentarlo en lenguaje ensamblador...


Ensamblador??? [flipa] xro dices????

Ni que fuera una locura, por ejemplo Wreckless de xbox estaba hecho en ensamblador.



taras de coña no?? porque yo estaba de coña... aunque si se de un SO que esta hecho con ensamblador... programar en ensamblador es mear contra el viento, para eso uno programa en C que es el lenguaje entre el alto y bajo nivel.

como te he dicho OpenGL + C++ me parece la mejor opcion, eso si hay que currar mucho para hacer cualquier cosica...
AlterElt está baneado por "troll"
madre mia programar un videojuego en ensamblador es una locura bajo mi punto de vista... a no ser que queramos algo realmente sencillo y aún así trabajar en C sería 1000 veces más cómodo y rápido.

Estamos programando un microprocesador en practicas con ensamblador y para que haga 4 gilipolleces tienes que sudar tinta...
red0n escribió:taras de coña no??
No, no es coña. Gracias a estar hecho en ensamblador tiene los graficazos que tiene:

Imagen

Imagen

Imagen

Imagen

Imagen

Imagen

Repito, esto es de la xbox 1, y es todo en tiempo real, nada de videos.
Para programar cosas específicas no es muy descabellado meter asm en juegos (desarrollar para dispositivos pequeños o hacer rutinas concretas que necesiten toda la potencia posible), pero sí que es algo que va a menos. Las máquinas cada vez son más rápidas y no hace falta apurar tanto, y un lenguaje de alto nivel permite desarrollar y mantener más rápida y cómodamente el proyecto reduciendo costes.
¿Y para que plataformas quieres programar? A mi en particular me gusta bastante NDS y Xbox. En ambos casos C++ es el camino a seguir.
Itagaki es (o al menos era) un gran amigo de ASM, se jacta(ba) de ello. A los atormentados que sigáis ese camino, os presento vuestro futuro:

Imagen

Java una chufa (en lo que a juegos se refiere) salvo para móviles y tal.

Lo mejor a fecha de hoy (no lo digo yo, sino la industria), C.

Ah, Wreckless es una jodida bestialidad.
Lee_Chaolan escribió:Ensamblador mola. Trátalo bien y él te dará patadas en el culo, pero es un viejo entrañable, uno no se puede enfadar con él xD



De echo Kojima no se lleva mal con el XD
Está claro cuanto más de bajo nivel sea el lenguaje de programación más rendimiento se puede sacar, pero creo que a estas alturas ponerse a programar un juego en ensamblador es una locura. Si acaso alguna rutina específica, pero un juego entero...

Respondiendo a tu pregunta si quieres hacer algún juego con gráficos 3d y tal optaría por C++ y opengl. Si lo que quieres es hacer juegos en 2d basados en sprites te recomiendo que uses python + pygame, es el lenguaje más sencillo que he visto en la vida y con 4 tonterías ya tienes montado un juego.
Yo estoy usando ahora C++ SDL + OpenGL y te aconsejo algo cuya capa de abstracción sea superior, a ti concretamente creo que te vendría bien C# + XNA, porque pasar de Java a C# es bastante fácil. La pega es que estás atado a Windows.

El Wreckless ese tendrá hecha en ensamblador alguna que otra rutina, no todo el juego entero.
Hombre a ver... lo primero seria empezar con algo sencillo 2D para windows y si saliera bien pues se podria portar a otras plataformas...
Elelegido escribió:El Wreckless ese tendrá hecha en ensamblador alguna que otra rutina, no todo el juego entero.

Casi todo el juego es ensamblador. Se hizo famoso por eso, porque sus programadores estaban pirados. Ahora, el resultado fue impresionante, un juego que aún le da en la boca a más de 2 y 3 juegos de la xbox 360.
Yo no veo tan descabellado hacer el motor en ensamblador, pero si hicieron los menús y cosas así en ensamblador ya seria para que les encerraran. Claro para hacer algo en ensamblador hay que tener mucha experiencia y tener extremadamente claro que quieres hacer en el motor.

Programar en C++ es casi tan cómodo como programar en java/c# si lo haces sobre un motor bien completo.

Realmente lo que tienes que elegir a la hora de hacer un juego es el motor que vas a usar, el lenguaje es una consecuencia del motor. Por ejemplo con Unreal Engine 3 el juego en si se programa en Unreal Script más que en C++.
dark-kei escribió:Hombre a ver... lo primero seria empezar con algo sencillo 2D para windows y si saliera bien pues se podria portar a otras plataformas...


Sencillo 2D y multiplataforma puede ser C++ y SDL o algo que use dicha librería de una manera más abstracta para que no toques cosas muy a bajo nivel (por ejemplo CRM32Pro http://www.megastormsystems.com/sdk/crm32pro.htm).
Johny27 escribió:
Elelegido escribió:El Wreckless ese tendrá hecha en ensamblador alguna que otra rutina, no todo el juego entero.

Casi todo el juego es ensamblador. Se hizo famoso por eso, porque sus programadores estaban pirados. Ahora, el resultado fue impresionante, un juego que aún le da en la boca a más de 2 y 3 juegos de la xbox 360.


Me gustaría saber qué ha sido del Wreckless 2 (si no me equivoco existe) y del estudio en si, si están desarrollando para alguna plataforma o qué. El Wreckless como juego era bastante chufa pero técnicamente la rehostia, me acuerdo la primera vez que lo puse, me quedé fli pan do.
Elelegido escribió:
dark-kei escribió:Hombre a ver... lo primero seria empezar con algo sencillo 2D para windows y si saliera bien pues se podria portar a otras plataformas...


Sencillo 2D y multiplataforma puede ser C++ y SDL o algo que use dicha librería de una manera más abstracta para que no toques cosas muy a bajo nivel (por ejemplo CRM32Pro http://www.megastormsystems.com/sdk/crm32pro.htm).


Interesante...

Solo me faltaria encontrar algun libro de consulta
He pensado empezar por un juego basado en tiles.... que pensais? me parece q para empezar no esta mal...
lo del wreckless en asm me parece de lo mas inverosimil , he estado buscando informacion aposta y no he encontrado nada , ¿ que sentido tendria ponerse a saltarse todo el api del sdk de la xbox ? ¿ les firmaria alegremente ms la release pudiendo ser un saco de exploits ? ...

a nivel personal creo que esta sobrevalorado el ensamblador, cada vez los compiladores de alto nivel son mas inteligentes y se saben mejor los truqis para los micros sacando mas rendimiento que incluso una persona en el propio ensamblador .. ahi queda

para empezar creo que xna esta bastante bien , lo malo eso.. que tu juego funcionara donde a ms le de la gana

[bye]
Camtrack, pudieron programar el motor en ASM (o gran parte de él) sin que esto entrase en conflico alguno con el SDK, ¿no?
si si poderse se puede , pero seria algo rarisimo , y aun mas raro que microsoft lo consintiese , en terminso de trabajo seria brutal , ya te digo que de ser asi me encantaria ver algun reportaje que cuenten su odisea
Ensamblador? Eso son mariconadas, en N64 se programaba directamente el microcodigo.

Yo diría que para hacer un jueguecillo así normalito con java vas que te matas. Yo hice un tetris en java y una especie de salvapantallas en VHDL con una FPGA que ponia un punto en pantalla que rebotaba, se multiplicaba y si coincidían, lo absorbía.

Lo segundo es mucho más divertido, pero java tiene mas herramientas ya de por si, pa no romperse mucho la cabeza.
AlterElt está baneado por "troll"
Johny27 escribió:
red0n escribió:taras de coña no??
No, no es coña. Gracias a estar hecho en ensamblador tiene los graficazos que tiene:
***
Repito, esto es de la xbox 1, y es todo en tiempo real, nada de videos.


maté a un perro y me llamaron mataperros...

Vamos, que existan virgerias no significa que sea lo más adecuado...

Además que ese juego no creo que tenga TODO programado en ensamblador porque sería algo un paso más allá de una locura. Vamos, que todavía estarían programando.

Otra cosa es que determinadas rutinas estén programadas directamente en ensamblador, pero es que me parece una locura además de una pérdida del tiempo dedicarse a programar un juego entero en ensamblador.

Sería como si alguien se pusiera a hacer la sagrada familia a base de piedrecitas de 2 cm de diámetro para aprovechar mejor los recursos naturales... XD

Lo más común, bajo mi punto de vista debe de ser una combinación de un lenguaje de muy alto nivel (scripting de un motor determinado como UE) con algo de más bajo nivel como C. Incluso muchas subrutinas se programarán en python por la facilidad del lenguaje para luego ser portadas a C para optimizarlas o lo que fuera requerido.

pd: Creo que Dark Alex trabajaba en ensablador para programar los CF de la psp, pero de ahí a un videojuego entero... sigo viéndolo una locura poco productiva.
Gurlukovich escribió:Ensamblador? Eso son mariconadas, en N64 se programaba directamente el microcodigo.


[comor?]


Es un vacile no ?

a veces me cuesta distinguir si ironizais o hablais en serio
Camtrack escribió:
Gurlukovich escribió:Ensamblador? Eso son mariconadas, en N64 se programaba directamente el microcodigo.


[comor?]


Es un vacile no ?

a veces me cuesta distinguir si ironizais o hablais en serio


Gamefaqs
Gooler escribió:
Camtrack escribió:
Gurlukovich escribió:Ensamblador? Eso son mariconadas, en N64 se programaba directamente el microcodigo.


[comor?]


Es un vacile no ?

a veces me cuesta distinguir si ironizais o hablais en serio


Gamefaqs


wikipedia

http://en.wikipedia.org/wiki/Microcode
http://es.wikipedia.org/wiki/Microc%C3%B3digo
Camtrack escribió:
Gurlukovich escribió:Ensamblador? Eso son mariconadas, en N64 se programaba directamente el microcodigo.


[comor?]


Es un vacile no ?

a veces me cuesta distinguir si ironizais o hablais en serio

No, es real como la vida misma.
Johny27 escribió:
Camtrack escribió:
Gurlukovich escribió:Ensamblador? Eso son mariconadas, en N64 se programaba directamente el microcodigo.


[comor?]


Es un vacile no ?

a veces me cuesta distinguir si ironizais o hablais en serio

No, es real como la vida misma.


¿ ensamblador o microcodigo ? ¿en que quedamos ?
Camtrack escribió:¿ ensamblador o microcodigo ? ¿en que quedamos ?

A ver, no es tan dificil eh. Wreckless en ensamblador, n64 en microcódigo.
Johny27 escribió:
Camtrack escribió:¿ ensamblador o microcodigo ? ¿en que quedamos ?

A ver, no es tan dificil eh. Wreckless en ensamblador, n64 en microcódigo.


na si era por tirarte de la lengua a ver cua lera la siguiente perla

para los despistados , ni micro codigo en la n64 , ni el wreckless en ensamblador

el micro codigo es algo mas parecido a un firmware pero esta dentro de los microprocesadores , digamos que se encarga de ejecutar las istrucciones propias del micro en otras mas pequeñas que controlan los registros y las unidades aritmetico logicas dentro del micro...ni entran dentro de la especificacion externa del procesador ni se tienen acceso de ningun modo desde fuera... son parte del diseño interno del micro

y lo del wrekless por ensamblador... en fin.. aporta una prueba pq es una burrada


despistais a la gente a base de burradas pseudotecnologicas
Lo de Gamefaqs era una coña que tenemos en otro hilo. Quería indicar que yo entendía lo del microcódigo como una coña evidentemente.

Respecto a Wreckless en ensamblador y ¡Microcódigo! en N64 no es tal y como lo comenta Johny. Para Wreckless se utilizó ensamblador, pero eso no significa que el 100% del juego se haya hecho así. Y con lo del microcódigo lo mismo, puede que se haya utilizado, pero en partes marginales. Y aún así me extrañaría. Como no es jodido ya el ensamblador, encima a programar en microcódigo con instrucciones en hexadecimal, es un sinsentido, ni siquiera puedes incluir comentarios... Un buen compilador te da el paso de ensamblador al propio microcódigo y te facilita un tanto la vida si es que quieres hacerlo a bajo nivel, pero es que sería inhumano escribir algo como un juego en microcódigo.
Gooler escribió:Lo de Gamefaqs era una coña que tenemos en otro hilo. Quería indicar que yo entendía lo del microcódigo como una coña evidentemente.

Respecto a Wreckless en ensamblador y ¡Microcódigo! en N64 no es tal y como lo comenta Johny. Para Wreckless se utilizó ensamblador, pero eso no significa que el 100% del juego se haya hecho así.
Exactamente, nunca he dicho que estuviera al 100% en ensamblador.

Y con lo del microcódigo lo mismo, puede que se haya utilizado, pero en partes marginales.[/QUOTE]Ahí si te puedo decir que el sistema gráfico sí estaba casi al 100% en microcódigo EN DETERMINADOS JUEGOS, para la inmensa mayoría nintendo proporcionaba una especie de sdk y de ahí tiraban, pero había 2 o 3 estudios que sí tenían acceso al microcódigo, cosa que les permitía llegar a tirar hasta 3 o 4 veces más polígonos por segundo. Ejemplo de estos juegos son uno de rally (v-rally pude ser?), battle for naboo, indiana jones y alguno mas. La prueba de que estos juegos usaban un microcódigo diferente está en un desarrollador de ellos que lo afirmó en los foros de b3b, y que además son los únicos de n64 que no se han conseguido emular, ya que como la emulacion es de alto nivel, no puede con el microcódigo personalizado.

Se lo que me hablo, raramente me veréis inventarme cosas, y menos en temas de programación gráfica.

Edito: aquí teneis un comentario que hizo un desarrollador de n64 en el foro de b3d

ERP escribió:
Apoc escribió:ERP, as i know you worked in n64 games, can you tell me about its polygon count?

I need this info for a friend, who is making a database for his web.

Thanks in advance to all.


Depends on the uCode and what you were doing.
As a dev I'm going to claim we hit >100K/second in WDC (and stunt racer for that matter) (take it with a huge grain of salt) but I doubt many games were anything like that high, most probably <30K.
WDC has completly unique uCode and doesn't use the Zbuffer (to alleviate the fill issues), the engine is designed to push polygoons and actually uses the CPU to clip them because it was more efficient than the GPU in that step. The net result is an engine that goes CPU ->RSP ->CPU ->RSP->RDP with almost 7 fields of latency between input and the display update, which is just too much. Triangle seti=up takes orders of magnitude more time than the transform and lighting pipeline.

Top Gear Rally was probably <30K/second but it uses the first version of the poorly named "Fast 3D" uCode.

I can't imagine any other N64 dev was stupid enough to jump through the hoops we did with WDC.

I've never tested the actual RDP limit on N64 but it's probably in the 500K/second range.

If you didn't care about perspective correction, you could transform many more than that with custom uCode.
[looco]
Aún así ¿estás seguro de que habló de microcódigo y no se refería (al menos) a ensamblador? Es que es tan absurdo como escribir el motor gráfico con 1s y 0s.
Gooler escribió:Aún así ¿estás seguro de que habló de microcódigo y no se refería (al menos) a ensamblador? Es que es tan absurdo como escribir el motor gráfico con 1s y 0s.

Seguro, mira lo que dice:

ERP escribió:N64 uCode was not paricularly easy to develop, the tools were bad, the documentation minimal and you had to do everything including triangle setup. And there is nothing like trying to debug random hangs with no way to debug the case.


por lo que sí, es microcódigo.
Johny27 escribió:Exactamente, nunca he dicho que estuviera al 100% en ensamblador.

Y con lo del microcódigo lo mismo, puede que se haya utilizado, pero en partes marginales.


No quiero dudar de ti, pero la verdad esque me parece muy raro. Si pudieses dar una fuente que arrojase luz sobre ese tema...

Me extraña sobretodo porque el procesador de la 64 es un RISC puro y duro, y por lo tanto con su código ensamblador puedes llegar a una eficiencia tal, que no creo que se notase apenas diferencia respecto a la misma aplicación desarrollada con microcódigo (a no ser que hagan cafradas tales como obviar activar/desactivar líneas sin las cuales el correcto funcionamiento del micro no esté garantizado y cosas así).

EDIT:

Ahora acabas de poner el quote ese...
Elelegido escribió:
Johny27 escribió:Exactamente, nunca he dicho que estuviera al 100% en ensamblador.

Y con lo del microcódigo lo mismo, puede que se haya utilizado, pero en partes marginales.


No quiero dudar de ti, pero la verdad esque me parece muy raro. Si pudieses dar una fuente que arrojase luz sobre ese tema...

Me extraña sobretodo porque el procesador de la 64 es un RISC puro y duro, y por lo tanto con su código ensamblador puedes llegar a una eficiencia tal, que no creo que se notase apenas diferencia respecto a la misma aplicación desarrollada con microcódigo (a no ser que hagan cafradas tales como obviar activar/desactivar líneas sin las cuales el correcto funcionamiento del micro no esté garantizado y cosas así).

EDIT:

Ahora acabas de poner el quote ese...

Yo digo que es microcódigo porque lo decía nintendo y lo decían los desarrolladores, que se refieran al ensamblador lo dudo, pero vamos que el microcódigo era usado solo en la gpu, no en la cpu.
Juaner escribió:
Me gustaría saber qué ha sido del Wreckless 2 (si no me equivoco existe) y del estudio en si, si están desarrollando para alguna plataforma o qué. El Wreckless como juego era bastante chufa pero técnicamente la rehostia, me acuerdo la primera vez que lo puse, me quedé fli pan do.


Pues si siguen programando en ensamblador, estarán aún con la pantalla de título X-D.

Saludos! [bye]
Johny27 escribió:Yo digo que es microcódigo porque lo decía nintendo y lo decían los desarrolladores, que se refieran al ensamblador lo dudo, pero vamos que el microcódigo era usado solo en la gpu, no en la cpu.

Así entonces tiene más sentido (aunque realmente lo presupongo porque la GPU de la 64 ni idea de como era xD).
44 respuestas