Página 1 de 2
Como se crean juegos como CM?
Publicado: 10 Jun 2007, 10:30
por MPC
Hola a todos
Muchas veces me he preguntado que herramientas de desarrollo se utilizan para crear estos juegos que tanto nos gustan.
Como se crean esos graficos de tanques e infanteria asi como el terreno ?
Como se gestiona el movimiento de las unidades y la inclinación y penetracion de blindajes???.
Alguien tiene conocimientos sobre estos temas??
saludos
Publicado: 12 Jun 2007, 19:28
por Leta
BLAST2003 es un profesional del diseño 3D y me consta que hay otros por ahí que también entienden un rato de ello. Si no se pasa por aquí, envíale un privado a
BLAST, que estoy seguro que atenderá tus preguntas.

Publicado: 12 Jun 2007, 20:43
por Molinator
Sobre tu segunda pregunta, Como se gestiona el movimiento de las unidades y la inclinación y penetracion de blindajes???.
Muy probablemente se use C++. Para gestionar todo esto, el motor grafico del juego y el logico deben de interactuar, como es normal. "Algo" debe de informar al motor logico donde esta cada unidad, y asi aplicar diferentes modificadores. El motor grafico digamos que solo se encarga de decirle al logico que X unidad esta en terreno boscoso, luego el motor logico aplica todos las modificaciones necesarias a cada campo del objeto en cuestion.
Es muy probable que cada escuadra en CM sea una clase (una especie de estructura de datos con varios campos) que tenga como campos cosas como el numero de miembros, potencia de fuego, etc....
El movimiento de las unidades, basicamente el motor logico mandara la posicion x e y en cada iteracion del juego (un juego es basicamente un gran bucle) y el motor grafico actualizara la posicion. Luego tambien entran cuestiones como el pathfinding, puesto que lo normal es que en un juego hayan objetos solidos que no son atravesables, entre otras cosas.
Sobre la inclinacion y penetracion de blindajes, de nuevo es el motor logico del juego el que se encargara de ello tomando como entrada datos del motor grafico sobre la posicion del vehiculo, inclinacion sobre la horizontalidad, orientacion del mismo, etc... (ojo, este motor grafico en CM no existe tal cual, es un motor abstracto que maneja una cantidad de datos mucho mayor que el 3D que vemos).
El motor logico accedera a los datos internos de los tanques (inclinaciones del blindaje, grosor, potencia del cañon, penetracion, etc...) y aplicara diversas ecuaciones matematicas para calcular distancia, angulo y demas cosas del disparo. Luego, probablemente mezcle varios datos obtenidos de aqui y de alli, aplicara modificadores a razon de la veterania y demas, y el resto es basicamente pura fisica que finalmente determinara si el proyectil penetra o no.
Posteriormente o simultaneamente, segun, esto es representado en el motor grafico, que es lo que finalmente vemos.
Todo esto no es mas que hipotesis porque la unica forma de saberlo al 100% es con el codigo fuente delante. En realidad puede que la implementacion sea algo distrinta o que el peso del motor grafico sea mayor o menor. Pero vamos, lo normal es usar C++ y potenciar la programacion orientada a objetos, por lo que lo normal es que los tiros anden mas o menos por donde acabo de contar.
PD: Los graficos tipicamente se crean con herramientas de diseño 3D y luego se usa alguna API como DirectX o OpenGL para gestionarlos dentro del videojuego.
Publicado: 12 Jun 2007, 20:44
por Djiaux
pues yo no se mucho pero por lo que se de todo hay. A fin de cuentas en informática hay pocos límites.
Normalmente s ehabrá programado el motor del juego (calculo de física, definición de como van las cosas, el entorno 3D, etc) y luego se habrán ido introduciendo los modelos 3D de las unidades, sonidos, texturas, etc....
De ahí que haya motores de juego como el de quake, half life y muchos más que se 'exportan' a otros juegos. Las otras compañías se lo compran para hacer su juego y ya tienen un motor de puta madre, solo le cambian sonidos, modelos, texturas y demás.
si te pones a buscar bastante existen sitios como puntadelanza pero de desarrolladores amateurs y profesionales, busca, busca...
Publicado: 12 Jun 2007, 22:48
por MPC
Muchas gracias por tan interesantes explicaciones
Re: Como se crean juegos como CM?
Publicado: 12 Jun 2007, 23:24
por Nihil
MPC escribió:Hola a todos
Muchas veces me he preguntado que herramientas de desarrollo se utilizan para crear estos juegos que tanto nos gustan.
Como se crean esos graficos de tanques e infanteria asi como el terreno ?
Como se gestiona el movimiento de las unidades y la inclinación y penetracion de blindajes???.
Alguien tiene conocimientos sobre estos temas??
saludos
Realmente todo eso son simplezas y con un mínimo de conocimientos de programación, ganas y tiempo se hace. A mi lo que me interesa realmente es la IA del programa, las de este y de cualquier otro normalmente una mierda, y las que no lo son están programadas en buena parte.
Me interesan más preguntas como, que funciones deben utilizarse para que los movimientos de las unidades sean óptimos o se aproximen a ello? como se puede evaluar una situación para que la IA tienda o no hacia ella? como emular satisfactoriamente la actuación de un jugador humano? si descubres respuesta para esto me avisas que estoy muy interesado

Re: Como se crean juegos como CM?
Publicado: 13 Jun 2007, 00:13
por Molinator
Nihil escribió:
Me interesan más preguntas como, que funciones deben utilizarse para que los movimientos de las unidades sean óptimos o se aproximen a ello? como se puede evaluar una situación para que la IA tienda o no hacia ella? como emular satisfactoriamente la actuación de un jugador humano? si descubres respuesta para esto me avisas que estoy muy interesado

Ye voy a hablar un poco de oidas puesto que no estoy muy metido en el tema en cuestion (aun

).
Los movimientos de las unidades, se usan algoritmos de pathfinding, que si no me equivoco se basan, al menos en su mayoria, en otro algoritmo, el A*, el cual no conozco, la verdad. Pero generalizando, el escenario por el que se mueve un personaje, se "mapea" (por decirlo de alguna forma, se crea una cuadricula artificial) de tal forma que el movimiento de las unidades solo puede ser de cuadricula en cuadricula (un juego de tablero al uso).
Cuando ordenas a una unidad moverse de "A" a "B", con los algoritmos arriba dichos, se calcula el camino optimo a traves de dichas casillas (tal y como lo estoy diciendo me estoy percatando que esto se pude implementar mediante simples grafos con peso). A la hora de mapear el escenario, logicamente se definen las zonas por las que no se puede pasar (si fuera un grafo, estos nodos no estarian conectados).
Repito, que no se mucho, pero el tema va por ahi. Algoritmos para calcular los caminos optimos de grafos existen.
Sobre la IA, tambien estoy verde, pero he hecho cosas como que el PC pueda interpretar y responder a preguntas que le formules, o llegar a conclusiones segun a una serie de situaciones, por lo que supongo que tambien el tema andara por ahi. Basicamente tu generas un programa con una serie de reglas, en el caso del CM seria algo asi del estilo de "si yo soy un tanque, y dentro de mi LOS, hay otro tanque entonces dispararle", y asi cientos de reglas. Por si solas no hacen nada, ojo.
Luego se generaran una serie de hechos, que en el caso de un juego sera de forma dinamica, del estilo de "veo un tanque", "soy un infante", "estoy a cubierto", etc....
Entonces, llegado a este punto, con una serie de hechos y reglas, tu puedes lanzarle al ordenador una pregunta y el te respondera con la decision a tomar. Entonces alguna parte del programa recojera dicho mensaje, y lo interpretara como alguna orden del juego.
Para emular satisfactoriamente la actuacion de un humano, hay que elaborar todo eso de arriba muy, muy bien, y sobretodo requiere de mucho testeo. Y como tal y como esta el mundillo del videojuego, pues es mas facil meter graficos cañeros que vende mas y cuesta menos esfuerzo (incluso como bien dicen, te los puedes comprar ya hechos).
Tambien repito en este caso que de programacion de IA se mas bien poco, pero por lo que se, creo que el tema tambien anda por ahi.
Publicado: 13 Jun 2007, 01:06
por Nihil
Si, si la teoría yo también me la se

pero para todo eso que explicas, muy "fácil" en terrenos perfectamente delimitados como pueda ser un tablero de ajedrez es muy difícil trasladarlo a algo del calibre del combat.
Lo primero que necesitas es una función heurística que sea capaz de evaluar por qué a un infante le conviene avanzar de A a B o quedarse con el culo cubierto, intenta únicamente imaginar una función de este tipo que tenga que calibrar el movimiento de un platoon de carros con niebla de guerra, con problemas de LOS, con absoluto desconocimiento siquiera de que fuerzas dispone el enemigo, y estimando si le merece la pena capturar una bandera o si el riesgo de perder los puntos que vale un tiger hace que no merezca la pena ni asomar la jeta
Suena difícil eh? por eso la IA se suele batir bien en terrenos defensivos, coloca las unidades en terreno con LOS y protegidos y a esperar a que te vengan, ahora, no le pidas que improvise un ataque...
Hace tiempo como ejercicio me propuse esbozar mentalmente un jueguezillo de blindados, con unicamente tres tipos distintos de carros, y el unico objetivo de masacrar al enemigo que contaría con lo mismo. En terreno plano pero con elementos que cortaran la visión. Y no era capaz de ver un patrón de movimiento que pudiera seguir una IA y que fuera aceptable. Intenta pensar unicamente en un árbol de busqueda de patrones de movimiento que maximicen una hipotética heurística...
Publicado: 13 Jun 2007, 04:28
por Cid250
Lo primero de todo, tienes que salir de este pais... las universidades españolas de informatica están a la cola en este tipo de materias...
En toda españa, ni siquiera en las privadas, encontrarás calidad en la enseñanza de estas disciplinas, eso si... los masters los pagas a precio de oro aunque al final obtengas una enseñanza mediocre.
Si te gusta el tema, empieza a ahorrar y ve pensando en mudarte de pais a alguna de las universidades que imparten estas disciplinas como un asunto serio... ya que es una industria.
Lo maximo que puedes conseguir aqui en españa es trabajar duro y hacerte a ti mismo con el doble de esfuerzo y dinero que necesitarias en otros paises para obtener el mismo resultado en calidad de formación relativa a la creación de videojuegos.
Por supuesto las universidades españolas te dirán que si, que si, que ellos ofrecen un altísimo nivel de preparacion... pero no les creas, si trabajasen la mitad de lo que se hechan de flores a si mismos... seriamos una potencia!.
Para temas graficos te recomiendo los videos en DVD de CG Academy... son una base muy buena, para empezar en el modelado artístico orientado a la industria del videojuego, pero están en ingles y son caros:
http://www.cg-academy.net/
Quizas estén tambien disponibles por cauces no "legales" en internet, no se. Pero para un joven estudiante, no creo que le pidan responsabilidades legales.
De programación de videojuegos... mejor que te busques la vida en Amazon, donde venden todos los libros de programacion de videojuegos que desees al nivel que quieras... o que te leas a diario paginas web como Gamasutra, solo para tomar contacto con el mundillo a modo de periodico diario.
Lo que hace mucha gente para empezar es usar motores de otros juegos, que estén bien documentados mediante unas SDK... teniendo un motor con buena documentación, es mas posible que obtengas resultados mas rapido y no acabes desanimado. Algunos tienen ya rutinas de IA (inteligencia artificial) y tu solo tienes que combinarlas a tu gusto... no ofrece posibilidades infinitas, pero es menos duro que currarse una IA propia.
Y recuerda... con menos de 10 años estudiando... solo eres un novato en este campo tan amplio. Así está la complejidad de los juegos a dia de hoy.
Publicado: 13 Jun 2007, 15:55
por MPC
Apostaba por que existiera software asequible (a estas alturas) para desarrollar tanto los graficos como la IA, al estilo de Vbasic en el principio de los tiempos.
A mi, CM me llama mucho la atención y creo que en su creación no debe ser un juego complicado, creo.
Siempre me he pregundado si con una herramienta +o- comun como .NET más otra de graficos, tal vez open GL, se podría desarrollar algo que implemente las carencias que en otros foros he comentado sobre CM (ejem implementar campañas...)
Publicado: 13 Jun 2007, 15:58
por MPC
TAmbien pienso que el exito de este juego es sus limites que le hacen tener una altisima jugabilidad. Tal vez sea un error plantear objetivos más ambiciosos....¿?
Publicado: 13 Jun 2007, 16:27
por Nihil
Tienes compiladores gratuitos de muchos lenguajes de programación, opr no decir de prácticamente todos, así que en ese sentido puedes programar lo que te de la gana sin que te cueste un duro, tres cuartos d elo mismo ocurre con el diseño gráfico, estoy seguro que si buscas un poco por la red encontrarás las herramientas necesarias para hacer cualquier cosa de una forma totalmente gratuita.
Ese no es el problema, el problema es el conocimiento, si quieres un consejo planteate una meta menos ambiciosa así puedes irte dando cuenta de la envergadura de lo que estás hablando.
Por ejemplo yo en mis años locos de carrera una de las prácticas fue hacer un juego de billar, que si no recuerdo mal programé en turbo pascal sin más (gratis). Quieres darle un tiento a programar una IA? prueba con un juego de tablero simple, opr ejemplo también en la carrera me tocó hacer un juego de Othello.
Si te planteas una meta muy lejana te aseguro que no llegarás nunca intenta primero aprender a andar y luego ya tendrás tiempo de echar a correr.
**** Edito para añadir que releyendo tus mensajes no sé si es algo que te gustaría hacer a ti o estás hablando de algo genérico, si es algo genérico quéadte con que no es tan simple como parece a primera vista

Publicado: 13 Jun 2007, 17:43
por BLAST2003
Como lenguaje de programación yo apostaría que se usan sólo los de alto nivel básicamente C++.
Para el asunto del 3D se puede usar casi cualquier software 3DMax, Maya, XSI... con eso se crean las animaciones, las formas, las explosiones,....o sea todo lo que "se vé".
En los juegos lo prioritario en cuanto al 3D es que los objetos tengan pocos polígonos. En cuanto a aceleración 3D se usan dos standares Direct3D y OpenGL. Y en función de esto la recreación 3D tendrá una caracteríticas de iluminación, transparencias, partículas...etc (raytracking).
En cuanto a las tripas del juego es como te han contado se definen una serie de objetos para cada categoría. Cada uno con sus caracteríticas. Y así el programa en ejecución va resolviendo los distintos problemas que suceden. Por ejemplo:
Unidad va de A a B....entre medias topa con un bosque...si la unidad es de infantería podrá pasar, si es un tanque no podrá. Creo que es un ejemplo de un problema simple que se puede resolver con una booleana.
En cuanto a lo de mejorar la IA yo creo que todas las IAs de todos los juegos son muy pobres. Me parece más que nada que a efectos de que el juego vaya fluido. Si no fuese así, habría dos opciones. Una, que los mapas no fueran randomizables...y programas la IA Adhoc para el mapa en cuestión. O sino, diseñar un "sistema experto" es decir que aprenda con cada partida que juega....y que lo tengan jugando 1 año entero antes de lanzar el juego. Luego el sistema se optimiza y se cierra para que use la experiencia que ya tiene. Lo único que me parece que en el segundo caso cada usuario quizá necesitase un DeepBlue para jugar una partidita.
Saludos
Publicado: 13 Jun 2007, 17:54
por Nihil
Pues depende mucho del juego que estemos hablando, pero seguramente no se use un único lenguaje para su programación, necesitaras un lenguaje rápido para los procesos críticos, probablemente C, en los viejos tiempos usarían ensamblador y para el resto algo de un nivel más alto.
Lo mismo pasa con los gráficos, dependiendo del tipo de juego podrás necesitar un motor de la releche o quizás con el paint vas que chutas

fíjate en el combat estos con los gráficos no se habrán calentado mucho los cascos.
Hay lenguajes que se prestan muy bien para el aprendizaje, por ejemplo el Python, y para hacer juegos con los módulos pygame para el python
http://www.pygame.org realmente para hacer una obra maestra n hace falta el motor gráfico del unreal y con imaginación, ganas y una idea brillante puedes hacer una pequeña joyita y si no al menos para ir aprendiendo tienes.
Publicado: 13 Jun 2007, 19:10
por Molinator
Nihil escribió:Por ejemplo yo en mis años locos de carrera una de las prácticas fue hacer un juego de billar, que si no recuerdo mal programé en turbo pascal sin más (gratis). Quieres darle un tiento a programar una IA? prueba con un juego de tablero simple, opr ejemplo también en la carrera me tocó hacer un juego de Othello.
Casualmente este año he hecho yo el Othello mediante Visual C++, sin IA, todo sea dicho. Aunque el problema en este caso, y en juegos similares, de la IA no seria donde colocar la ficha (tecnicamente se podria mirar la jugada optima, la que mas fichas del contrario gire, sin muchos problemas), el problema serio que yo veo es el ir "mas alla", el evaluar si te puede interesar en un momento dado plantar una ficha en cierta posicion, aunque gire menos fichas, pensando en movimientos futuros.
MPC, no se si te estoy entendiendo mal, pero si tienes la idea de crear algo similar al CM, pero con campañas y demas (algo que a mi me encantaria, por cierto), hazte a la idea que la mayoria de los juegos cuestan años hacerse y lo hacen equipos de 10-20 personas, minimo.
Hay casos como el Take Command que basicamente lo hicieron 2 personas, pero creo que tardaron nada menos que 4 años terminarlo.
Los videojuegos son cosas mucho mas complejas de lo que parecen.