¿Porqué Quake no está escrito en Ruby, Perl? (Pero si en C++ y ahora en Java)

Por una sencilla razón: Son scripting languajes. Son ideales para hacer prototipos, hacer programas que necesitan ser modificados con cierta frecuencia. Pero como todas las cosas (sobre todo para los fanaticos de Ruby, Perl, Python) no esperen ver pronto a Ruby en telefonos celulares ni en juegos, ya que el lenguaje (como otros scripting languajes) no da para tanto (bueno, quizas para un juego de la la "vieja" o el "ahorcado").
Pero el punto interesante es que Java está mucho más seria como plataforma para juegos. Usando librerías nativas (las cuales están encapsuladas con el API de Sun) se hacen juegos que corren en celulares y computadoras de escritorio. Es también refrescante ver que Quake tiene nueva vida gracias a Java y que ahora cualquiera puede correrlo usando un Applet.
Oh, se me olvidaba, tampoco se puede hacer Quake con AJAX :D
Buscar en Technorati: quake



12 Comentarios:
buen punto
Vaya, es una verdadera pena que no se puedan escribir juegos con lenguajes de script.
Lo siento por los amigos de pygame, despues de esta noticia estarán un poco desolados.
También habra que comentarselo a los creadores de motores gráficos ogre,nebula,etc... que utilizan lenguajes de script como Tcl y Phyton entre otros.
Has programado algún juego alguna vez? O todo lo que has conseguido es una vieja o un ahorcado, por que los grandes juegos sí que usan lenguajes de script.
salu2
Una cosa es que los motores de juegos tengan capacidad para hacer scripting y otra es que sus nucleos esten hechos en un lenguaje de scripting totalmente.
Lo de hacer un juego, nunca uno serio pero si interfaces en Swing, Aplicaciones web y otras cosas.
Lo de los "grandes juegos" es solamente un "cliche". Muestrame un juego de la gente de pygame y comparamelo con cualquiera de los juegos de XBOX.
Oh, espera, no puedes, verdad :)
Bien, sin irme mas lejos veamos que te parece un juego comercial con gran éxito a nivel mundial como es la saga de Commandos (hay que patrocinar las cosas de casa) que esta programado con c++ y tcl.
La programación de videojuegos con un lenguaje compilado como c++ y el uso de lenguajes de script es una técnica bastante extendida.
Salu2
Interesante lo de Quake en Java, ¿qué tal es el rendimiento?
Y en cuanto a lo de los lenguajes de scripting, coincido totalmente contigo, zapatero a su zapato, no toda herramienta funciona para todo problema.
O es que acaso hay juegos "exitosos" en LISP, Logo, (para hablar de lenguajes no procedurales que no son de scripting), Fortran, SmallTalk (lenguajes procedurales que tampoco son de scripting), etc
Prueba Ruby
http://www.microsiervos.com/archivo/internet/prueba-ruby.html
Ese artículo de kodeGeek es un absurdo. Cualquiera con dos dedos de frente sabe que nadie va a hacer un juego "desde cero" con Perl, Python o Ruby. Todos estos lenguajes dinámicos de alto nivel (y no simplemente de scripts, y quien piense lo contrario es sólo por ignorancia) tienen enlaces con otros lenguajes como C, C++ y FORTRAN para que cubran las falencias que puedan existir por rendimiento.
En desarrollo de sistemas actual, con los procesadores que tenemos, lo más crítico no es la velocidad de ejecución sino la velocidad de desarrollo. Qué prefiere la mayoría, un sistema para dentro de una semana que ejecute una operación en 1 segundo, o un sistema dentro de dos meses que ejecute una operación en 0.1 segundos. Y más aún que después de revisar el sistema de una semana se revisen los puntos claves de rendimiento, se codifican en un lenguaje compilado y en un par de semanas más la operación se ejecute en 0.15 segundos. Y esto se traduce en un montón de tiempo que puede dedicarse a más y más proyectos.
Simplemente no está en Ruby porque ya está en C++, y los programadores inteligentes resuelven problemas nuevos o proponen nuevas soluciones y no pierden el tiempo en reinventar la rueda (la pereza como virtud).
No sé si este anonimo es el mismo anonimo, o varios anonimos o todos los anonimos se juntaron para escribir juntos :)
(ese es el problema de ser anonimo)
OK, a enseriarse. Si anonimo, la velocidad a la que desarrollemos o liberemos una aplicación es crucial y es por ello que nadie se inventa librerías OpenGL o entornos 3D como el motor de Quake Engine o el de Unreal, sino más bien se concentran en sacar buenos juegos. Pero por otro lado, todos esos motores están altamente optimizados para la tarea que tienen por delante ya que la tolerancia de los jugadores a juegos lentos es simplemente cero.
¿Mi articulo es un absurdo? Nope, es solamente una opinión; Sino te gusta te invito a que te leas algo más fresa como "Tecnochica" u otro blog de gadgets de los que hay por allí. Por el contrario, si quieres debatir mi punto de vista (de manera cordial) entonces eres bienvenido :)
De nuevo, quiero ver el primer juego de escala escrito en un lenguaje totalmente interpretado como Ruby, Perl o Python. El punto de el articulo (en caso de que te lo hayas perdido) es el siguiente: Zapatero a sus zapatos
El autor del anónimo soy yo, Francisco Palm. Pero no voy a crear una cuenta en blogger sólo para dejar un comentario.
Ahora bien, llámalo absurdo, llámalo opinión, lo cierto es que la programación Java es una falacia. Dime un sólo sitio web -heavy- tipo Google o Amazon hecho con tecnología Java y empezaré a creer en ese lenguaje. Java se propuso como una alternativa a C y C++ con su garbage collector pero ha terminado convirtiendose en una vaina deforme plagada de errores de diseño. Si eso no es evidente para ti no añadiré otra cosa sino pedirte que retomenos el tema dentro de un par de años, cuando ya sea evidente para cualquiera.
Ahora no entiendo, me invitas a debatir de una manera más cordial después de mandarme a leer algo "más fresa" porque no me gusta el artículo, no esperes más de lo que das.
Si te parece excesivo el adjetivo absurdo bien podríamos discutir su uso, pero lo que quiero decir es que hay desconociiento de la naturaleza y la cultura de los lenguajes dinámicos avanzados como Python, Perl y Ruby.
El tema no es si me gusta el artículo o no, tu escribes bien y solo el hecho de mantener vivo el blog es una buena referencia. Por ese lado muy bien y en cualquier caso tus aportes por lo menos dan de que hablar a impresentables como yo, así que no te des mala vida.
Y no conseguirás ver juegos hechos totalmente en un lenguaje dinámico, al menos hasta que no tengamos procesadores de 10 GHz. Habría que ser un insensato (o insensata).
Ahora bien, si se quiere desarollar en Software Libre, entendiendo su cultura, Perl o Python son la mejor opción debido a la inmensa cantidad de herramientas que hay disponibles, muchas desarrolladas en lenguajes compilados.
Saludos
F. Palm
Vaya Francisco, no sabia que visitabas mi blog. Por lo menos logre sacarte de el anonimato, ya eso es algo :)
De nuevo me remito a los hechos: Los motores de los juegos estan escritos en lenguajes compilados (por muchas razones, ademas de eficiencia, como proteccion de la propiedad intelectual) y el uso de scripting es usado para otras tareas mas limitadas.
En cuanto a si Java es un lenguaje con errores de disenos, no lo dudo ya que no existe la herramienta perfecta. Sin embargo, existen las herramientas adecuadas para ciertos trabajos y es alli en donde un lenguaje como Java se come vivo a cualquier lenguaje intepretado (entre otras cosas por la cantidad de opciones).
Una cosa que no mencione en el articulo es la madurez de las herramientas utilizadas para hacer juegos: En ese aspecto, Java y C++ tienen mejores editores y herramientas especializadas que Python, Perl y Ruby. Y en la industria de juegos el "time to market" es un factor primordial.
Por otro lado, Java puede ser utilizado para correr lenguajes intepretados y "dinamicos" como Jython o Groovy. Lo contrario no puede decirse.
Tambien difiero en que Java no sea tan bueno para desarrollar software libre, pero mejor evitemos el topico ya que de eso no se trataba la coversacion original :)
Saludos.
-JV.
Ejemplo de juego hecho en Perl:
Frozen Bubble
que lo traen casi todas las distribuciones de linux.
Hablando más en serio. No se trata de usar un lenguaje enfrente de otros porque me parezca mejor. Un informático de verdad debe saber usar la mejor herramienta para resolver un problema determinado.
Con C/C++ puedes y DEBES hacer programas que requieran mucho cálculo, incluído -casi- todos los juegos, porque compilar el nucleo principal significa ir 50 veces más rápido que hacíendolo en Java, Perl o Python, con sus máquinas virtuales.
Pero resulta que mi jefe me pide un programa que procese imágenes vía satélite en tiempo real, las pase a formato jpeg2000, haga un análisis espacial para averiguar focos de incendio y el resultado lo envíe por correo al teletexto de TVE y en formato shape a los servicios de protección civil, con las coordenadas de los incendios proyectadas en UTM30... y tiene que estar terminado en menos de una semana... bueno... pues gracias a que Perl dispone de miles de librerías ya escritas, el programa se puede hacer en dos, probar un tercero y empezar a dar servicio al cuarto...
Yo uso Perl porque TODO ya lo tengo resuelto. Me conecto a CPAN y busco lo que necesito. Incluso librerías matemáticas precompiladas de C++ que me permiten filtrar y procesar imágenes gigantescas poniendo en perl una línea tan sencilla como:
$imagen_filtrada = $imagen * $mascara;
Recuerda: Con C++ puedes hacer programas rápidos. Con Perl puedes programar rápidamente.
Un ejemplo de nuestro trabajo:
Xplanet vs Forest Fire
Anonimo (no sé ahora quien escribe :)). Tu dices lo siguiente:
"Pero resulta que mi jefe me pide un programa que procese imágenes vía satélite en tiempo real, las pase a formato jpeg2000, haga un análisis espacial para averiguar focos de incendio y el resultado lo envíe por correo al teletexto de TVE y en formato shape a los servicios de protección civil, con las coordenadas de los incendios proyectadas en UTM30... y tiene que estar terminado en menos de una semana... bueno... pues gracias a que Perl dispone de miles de librerías ya escritas, el programa se puede hacer en dos, probar un tercero y empezar a dar servicio al cuarto..."
Es un ejemplo bobo, ya que lo que describes allí es integración de servicios (que se puede hacer con cualquier lenguaje), tiempo no realista (un proyecto así para ser terminado en una semana sin errores y sin pruebas). De hecho en la forma como lo describes casi excusas la in incompetencia como programador.
¿Quien te dijo que un proyecto así se ejecuta con un sólo lenguaje?
Lo de que C++ es más rápido que Java, tu eres de quienes ayudan a perpetuar el mito. No voy a entrar en detalles aquí, pero todo depende de la tarea que tengas a mano. Java utiliza librerías ntavias, al igual que Perl, para hacer el trabajo mientras te proporcionan un API fácil de usar. Estás equivocado.
Usas Perl porque tienes TODO resuelto, pues te felicito. Yo en cambio no te contrataria ya que en la vida real buscamos gente que sepa utilizar más de una herramienta (la adecuada para el trabajo), además de que los programadores "cut & paste" se consiguen ahora por outsourcing, mucho más barato en otros lados...
Me encanta el siguiente cliché:
"Recuerda: Con C++ puedes hacer programas rápidos. Con Perl puedes programar rápidamente."
En C++ hay toolkits para procesar imagenes, al igual que Java. Perl (como lenguaje) no tiene un API para el manejo de imagenes sino que usa otras herramientas escritas en código nativo (por velocidad). Tu puede programar rápido en el lenguaje que quieras, a eso se llama ser prágmatico.
Finalmente el enlace que colocaste produce esto:
"An error has been encountered in accessing this page.
1. Server: xplanet.sourceforge.net
2. URL path: /phpBB2/viewtopic.php
3. Error notes: File does not exist: /home/groups/x/xp/xplanet/htdocs/phpBB2/viewtopic.php
4. Error type: 404
5. Request method: GET
6. Request query string: p=681
7. Time: 2005-12-11 07:57:03 PST (1134316623)"
¡Buena muestra de tu trabajo! :)
-KodeGeek
Publicar un comentario en la entrada
Enlaces a este articulo:
Crear un vínculo
<< Regresar