Hola bueno nose si hago bien en postear esto aqui pero me han surgido algunas dudas...
Realmente he visto en el poco tiempo que estoy en la programacion de juegos.. que me encanta y disfruto mucho...y tengo fe de poderme dedicar a ello...de una manera mas profesional... yo como programador, tengo un colega que ha estudiado multimedia y encima un colega ricacho que le sobran swirth y servidores.. vamos que por material no falta..
Estuve mirandome el fin de semanas juegos a los que conozco y con que lenguajes se han echo.... si la verdad esque hay mucha diversidad en lenguaje...
El unico que apenas vi mencionado es mi querido bennu... sin entender porque...
Que diferencia hay de un lenguaje a otro? en muchos lugares he leido que para programar juegos el mas potente es c++..pero solo eso es mas potente...
Me gustaria saber la diferencia que seria programar con un lenguaje o otro.. para un futuro hacer un juego mas pepino...
Si alguien lo sabe.. o algun lugar que pueda darme una informacion para quedarme trankilo..
gracias :D
La diferencia crucial es que Bennu es como una capa encima de C, o sea, bebe de funciones creadas en C/C++ que directamente tendrias que hacer tu en tu juego si sigues el camino C/C++.
Al tener esto, pues Bennu es mas facil, porque es mas sencillo de entender, y las funciones estas que te permiten un sin fin de cosas pues ya no tienes que hacerlas tu porque ya estan hechas. Encima que tampoco tienes que saber como estan hechas, sencillamente cojes una funcion que hace algo especifico y la usas.
Bueno, en realidad, Bennu es una capa interpretada sobre SDL, escrito todo ello sobre C, lo que significa que su velocidad es bastante más lenta que C+SDL, y mucho más que sobre C.
En programación existen diversos "niveles" entre los lenguajes:
-Los niveles más bajos te permiten hacer programas más rápidos, que consumen menos recursos y que te dan más control sobre lo que haces. Sin embargo, tardas mucho más en escribir el código, puedes tener más errores y necesitas más conocimientos, tanto de programación como de la máquina.
-Los más altos lo que hacen es automatizar muchas tareas, usan varias funciones de los lenguajes de bajo nivel para hacer algo concreto, como por ejemplo, dibujar una imagen. Esto ahorra muchísimo tiempo y te quita muchos problemas, pero sin embargo, el programa es más lento, pues puede repetir varias veces la misma función de bajo nivel para lo mismo.
Bennu se encuentra entre los lenguajes de alto nivel, ya que te hace todas las funciones de dibujado (incluidas las rotaciones, escalados y demás, que usando C tendrías que hacerlo tu pixel por pixel), de reproducción de música o de manejo de teclado y ratón, por ejemplo.
Los programas que hagas requerirán una máquina el doble o el triple de rápida que usando C, pero tardarás como cuatro, cinco o incluso seis veces menos en hacer tu juego o aplicación.
Un ejemplo: en C, usando SDL, hacer un scroll te puede ocupar fácilmente 100 ó 200 líneas de código. En Bennu no más de 5.
A la hora de hacer videojuegos, las empresas usan C o C++ porque sirve para cualquier máquina, pero siempre usan una capa por encima para el manejo de gráficos, con librerías como OpenGL, DirectX, SDL o las que ofrezcan los creadores del hardware.
Últimamente se ha puesto de moda Flash, por su sencillez de manejo e integración en páginas web; Java, por ser multiplataforma y simplificar C un montón; Android, por ser casi igual que java; u Objetive C, que es el lenguaje de iPhone.
Si quieres trabajar en la industria, Bennu no te va a servir en el currículum, tienes que dominar C, y un par de librerías gráficas, o java/android. Bennu sólo te serviría en caso de sacar un juego que pegue un pelotazo, en caso de sacar cientos de juegos para que vean lo trabajador que eres, o símplemente para hacerte tus aplicaciones de manera rápida o un prototipo del juego.
Personalmente, prefiero hacer mis juegos en Bennu, porque tengo tantas ideas en la cabeza que es la única manera de sacarlas todas ¡¡y aun así me falta tiempo!! Y si luego quiero cobrar algo, hacerme una cuenta paypal para donaciones.
Hay más factores que influyen en la poca acogida de Bennu, pero no quiero alargar el mensaje mucho más ^^U
drumpi, creo que has exagerado bastante...
bennugd no es mas lento que C por usar SDL por debajo, al contrario, en ese sentido hace lo mismo que cualquier programa C que use SDL directamente, la lentitud esta en el interprete/vm, no en ser una cascara de SDL.
luego te equivocas al decir que BennuGD no te servira en el curriculum de una compañia de videojuegos, al contrario, lo que a las compañias le interesan es que domines las tecnicas/conceptos y como encarar un problema concreto, obviamente que sepas programar, y eso bennugd sirve de maravillas. De hecho a mi me ha servido y me ha dado mucha chapa BennuGD, es mas, me han llamado hace poco de una compañia donde tuve una entrevista tiempo atras, pero como yo pedia demasiado por lo que se pagan en el rubro no cerramos, pero ahora me volvieron a llamar conociendo esos requisitos monetarios, pero bueno, ahora estoy demasiado bien y manejo mi tiempo como para aceptar alguna otra cosa.
y hablando de SDL, tampoco necesitas una maquina un doble o triple de rapida... eso es una exageracion.
Toda capa por encima de X es más lenta que la capa X, es un hecho. Ten en cuenta que, por ejemplo, en un frame es posible que se llame dos veces al blitter (es un ejemplo, no tiene que ver con la realidad) para dibujar dos imágenes distintas, y el blitter usa varias llamadas a SDL, por lo que se hacen las mismas operaciones dos veces, cuando usando directamente SDL se podría haber hecho en una :D
Pero bueno, tu sabes mejor que nadie dónde se gasta más tiempo, así que no puedo discutir contigo.
En lo otro sí: no sé cómo será en Argentina, pero aquí tienes que saber C y como mínimo durante 5 años, a ser posible, con papelito por delante. O en su defecto, Java, que te lo piden para cualquier cosa que implique tocar un ordenador ¡¡cualquier cosa!!
Además, que yo sepa, tú, juegos en Bennu, has hecho pocos (que yo recuerde, RE 65565 y Sabreman). A ti te han cogido por programar Bennu en C :D :D :D
Drumpi, no es que hayas exagerado, es que has confundido terminos.
No puedes poner SDL al nivel de C, C es un lenguaje, y SDL es un conjunto de librerias.
nop, el blitter usa 1 sola llamada a SDL...
hay un desconocimiento tremendo de las interioridades de BennuGD, y no es para nada bueno, suponer cosas en base a lo que uno haria...
claro, por hacer bennugd, pero lo que cuenta no es el lenguaje que sepas o no, sino lo que eres capaz de hacer, cuanto de conceptos sepas y como llevarlos a la practica, sin tener en cuenta tal o cual lenguaje... hay que saber programar, no conocer uno o mas lenguajes.
yo tengo de C como 25 años, claro... ;)
EDIT: voy a agregar mas datos, en BennuGD SDL se llama menos que un programa hecho en C+SDL, y las llamadas que se hacen de SDL son realmente muy livianas.
el tiempo no se va ahi.
Podras tener 25 en C, pero como en DIV no tienes ni 1, pues todavia te falta xDD ;D
Quote from: FreeYourMind on March 21, 2011, 09:08:24 PM
Podras tener 25 en C, pero como en DIV no tienes ni 1, pues todavia te falta xDD ;D
jajaja...
Quote from: FreeYourMind on March 21, 2011, 08:54:08 PM
Drumpi, no es que hayas exagerado, es que has confundido terminos.
No puedes poner SDL al nivel de C, C es un lenguaje, y SDL es un conjunto de librerias.
Emm ¿cuando he puesto SDL al nivel de C, que no lo encuentro? ;D
Quote from: SplinterGU on March 21, 2011, 08:57:53 PM
nop, el blitter usa 1 sola llamada a SDL...
hay un desconocimiento tremendo de las interioridades de BennuGD, y no es para nada bueno, suponer cosas en base a lo que uno haria...
Menos mal que he dicho:
Quote from: Drumpi on March 21, 2011, 08:43:30 PM
(es un ejemplo, no tiene que ver con la realidad)
Que si no, lo mismo se me malinterpreta :D :D :D
Y respecto a lo de los lenguajes, en España sólo se valora saber Java desde hace años si vas a usar ordenadores, y C para el resto. Un físico con un curso de 6 meses de java se valora más que un ingeniero técnico de telecomunicaciones, que sabe de HW y ha programado en 7 tipos de lenguajes distintos (aunque sea algo tan raro y tan útil como la programación orientada a procesos, para procesadores multinúcleo).
Tienes que saber java, sí o sí, y si encima es para una consultora (el 95% del trabajo ofertado en informática), java, bases de datos, html, php, j2ee y una serie de lenguajes tan específicos que no aparecen ni en los árboles de la historia de los lenguajes de programación, y que va destinado a lo mismo: a crear una web corporativa, para que los empleados accedan a la base de datos.
Si buscasen experiencia, sólo mis 18 años de experiencia en el diseño de videojuegos, aunque sea en papel, debría sobrar, pero ya me han rechazado 5 veces por no saber java o no tener más de 3 años de experiencia (y creo que con Fenix y Bennu supero ámpliamente esa cifra).
Lo siento, pero el tema trabajo me pone histérico últimamente, y más con el lío de las consolas de gp32spain.
aun no has dado con la empresa adecuada, sigue insistiendo que ya te llegara... ;)
Drumpi, en España se valora Java y las tecnologias que dices porque casi todo se basa en desarrollo Web. Para las pocas ofertas de creación de juegos, o bien te piden estos nuevos cacharros portatiles, Android o iphone, o un sin fin de cosas.
No te piden Bennu porque sencillamente no lo conocen, así de claro, porque nos vamos a engañar, los lenguajes DIV-LIKE los conocemos unos pocos, que tuvimos la suerte de descubrir DIV.
aca tambien se pide mucho java, y C casi no se pide, pero cuando se pide se paga bien... eso sucede en todo lo que no es muy pedido, y donde hay poca gente que lo conoce.
Free, si fuese para cacharros portátiles, creo que una matrícula en un manual sobre beagleboard obtenido de documentación en inglés diría muchísimo en mi favor, pero claro, como el OMAP3530 no se parece al de iPad, los procesadores ARM no se usan... (fin del sarcasmo ;D).
(Me están entrando ganas de programar en GBA :D :D :D).
Es lo que digo, para trabajar te tienes que tirar por java, para programar por C, y Bennu sólo para tus cosas.
Lo único que podemos hacer para cambiar la situación es ponernos todos a currar e inundar el mercado con juegos de calidad, con el logo bien grande al comienzo :D
Y yo pregunto...¿Java es tan malo?
Depende del dineral que te quieras gastar :D
En mi carrera, al menos, java no se ve ni por equivocación, en las de informática, que yo sepa, tampoco, y el que te piden necesita de, al menos, una acreditación oficial (ya sea de una academia, un curso, un master, un postgrado o la oficial de Sun).
En cuanto al lenguaje, pues digamos que es una mezcla entre C y Bennu: tiene todas las cosas que tiene C, se orienta a clases como Bennu a procesos (no son concurrentes, pero se utilizan más o menos igual) y te simplifica la vida en muchos aspectos, por ejemplo, cuando trabajas con punteros, su sintaxis es más sencilla y no necesitas hacer FREE, ya lo hace sólo... lo cual siempre te deja con la intriga ¿lo ha hecho bien? ¿no se me habrá quedado algún puntero por ahí señalando, impidiendo que se borre la lista? :D :D :D
Nah, tiene algunas cosas que, si no has programado antes, te puede provocar malos hábitos, como declarar variables en cualquier lado, de cualquier tipo, y que en java sólo viven durante un tiempo (en serio, puedes declarar una variable contador en la llamada a FOR y desaparece al terminar el bucle). O usar más memoria de la cuenta, ya que hay funciones que reservan memoria según necesitan, en cantidades cada vez mayores.
Lo gracioso es que ahora sé más java que C habiendo estudiado 2 meses por mi cuenta ;D
Y que estoy repasando los punteros de C con Bennu :D :D :D
Quote from: osk on March 23, 2011, 12:33:49 AM
Y yo pregunto...¿Java es tan malo?
no es para nada malo, tal vez consume demasiados mas recursos de los que deberia...
y hacer una GUI puede ser peor que programar en assembler, si la intentas hacer solo por codigo...
por lo demas el IDE eclipse, practicamente programa por ti :P
drumpi, java no tiene punteros
Quote from: SplinterGU on March 23, 2011, 01:31:31 AM
drumpi, java no tiene punteros
cierto
drumpi
por lo de las variables que creas en un lugar y desaparecen (entre llaves) es igual que en C...
por lo de los malos habitos de java, uno es declarar tipos de datos simples en lugar de objetos con igual o mas funcionalidades, me pregunto de quien sera :P
Java tiene punteros, aunque estén escondidos ;D
Y sí, java tiene esas clases wrapper, pero no son de java, son clases adicionales que se meten en el paquete básico :D :D :D
Y yo he hecho una GUI toda por código, sin usar netbeans, llamado buscaminas :D :D :D LOL
Juer, cómo se desvían los temas :D
Bennu tiene muchíiiiiiisimo potencial, tanto que hasta ahora NADIE ha conseguido sacarle el máximo rendimiento, ni siquiera Splinter, ni yo (y eso que lo he intentado hasta en GP2X).
Pero vamos, que para demostrar lo que se puede hacer, sólo puedo hablar por mi experiencia:
-The amazing adventures of Echo: con el motor de scroll tileado hecho, el juego se hizo en un total de dos meses, gráficos y músicas incluidos (la reedición fueron dos o tres semanas, y para la nueva me lo estoy tomando con muchíiiisima tranquilidad).
-Screen Break Time: con dos grafistas y un músico, se hizo en menos de dos meses, e incluye niveles de plataformas, matamarcianos, carreras... y varios minijuegos. Eso en C es impensable, aunque uses librerías gráficas.
te equivocas, java no tiene punteros, que las cosas se pasen por referencia no significa que java tenga punteros... un puntero te permite acceder a la memoria directamente, lo que permitiria recorrer todos los bytes de la memoria (de un objeto) sin importar el tipo que este sea, y eso en java no se puede hacer.
java no tiene punteros, y la razon es demasiado simple, seguridad... java permite que la gente haga cosas chanchas y el se encarga de mantener la seguridad del sistema, sacrificando para eso potencia.
con java podes interfacear (hacer un wrapper) con usando jni.
Seguridad/punteros !!! Que tiene que ver !? ;D
La potencia es sacrificada porque es interpretado, tal como bennu.
Que no puedas usar punteros no significa que no puedas provocar petes en el programa jorobando asi la seguridad que tu dices (que lo le llamaria mas bien estabilidad).
ay... ay... ay...
seguridad tiene mucho que ver con punteros, el uso de punteros en un sistema es la causa mas frecuente de crashes o bugs... java, intenta evitar este tipo de problemas eliminando los punteros del lenguaje.
te equivocas mucho, java no siempre es interpretado, es mas, actualmente te diria que java interpretado casi no se usa, existe lo que se llama compilacion jit, que significa compilacion justo a tiempo (just in time), y lo que hace es compilar el codigo java ni bien lo carga en codigo de maquina. por ende no es interpretado.
yo no dije que no puedas provocar crashes en el programa si no usas punteros, pero evitas mucho que suceda, java hace unas cuantas cosas para tener un sistema bastante estable, no solo eliminar los punteros.
y seguridad esta bien dicho al referirse a estabilidad.
Quote from: SplinterGU on March 24, 2011, 12:06:39 AM
te equivocas, java no tiene punteros, que las cosas se pasen por referencia no significa que java tenga punteros... un puntero te permite acceder a la memoria directamente, lo que permitiria recorrer todos los bytes de la memoria (de un objeto) sin importar el tipo que este sea, y eso en java no se puede hacer.
java no tiene punteros, y la razon es demasiado simple, seguridad... java permite que la gente haga cosas chanchas y el se encarga de mantener la seguridad del sistema, sacrificando para eso potencia.
con java podes interfacear (hacer un wrapper) con usando jni.
Sí pero no ;D Todo el mundo (o al menos, los que se mueven a mi alrededor) llama "usar punteros" al uso de memoria dinámica, y cada vez que se crea una clase se crea un puntero, cuando se invoca un método se usa un puntero, cuando se lee de una variable miembro se accede a un puntero, cuando se asigna espacio a un vector, se usan punteros...
Pero sí estamos de acuerdo en algo: no son punteros :D :D :D
drumpi, vamos por partes.
los punteros no son solo memoria dinamica... todo en informatica son punteros si lo ves de esa forma, pero te equivocas mucho, y tambien se equivocan los que aseguran que un objeto en java es un puntero, que lo he leido por ahi en internet... es un grave error... que un objeto este en memoria (todo lo esta en un ordenador o similar) y se pase por referencias en las funciones, no significa en lo mas minimo que sean punteros...
java no tiene punteros y no hay discusion en eso, ya que es un hecho.