Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Peguntas De Un Novato

Iniciado por dordokamaisu, 01 de Febrero de 2004, 02:17:50 PM

« anterior - próximo »

dordokamaisu

 Soy estudiante y recientemente un compañero de la uni y yo nos hemos propuesto crear una aventura gráfica con la idea de aprender poco a poco a desarrollar juegos.

Tenemos nociones de C++, que desgraciadamente se quedan un poco escasas en lo que se refiere a la implementacion de el apartado gráfico: cargar fondos, animaciones, etc; por no hablar de la parte del sonido (nooo) .

Si alguien conoce algun tutorial que hable sobre las librerias que haya que utilizar o que den cualquier información sobre los temas que planteo, o me puede dar cualquier referencia bibliográfica (no me importa tener que leer), estare muy agradecido.

Para acabar, quiero decir que también nos gustaria que la aventura no fuese del todo lineal, pero de momento no tenemos muy claro como lograrlo. Cualquier tipo de consejo o idea sera bien recibido.

Gracias.
m.

Mars Attacks

 Bienvenido ;)

Sobre lo primero, ni guarra.

Sobre lo último, supongo que enfocándolo como una máquina de estados funcionaría. Es decir, le asignas a cada "escenario" un estado y luego dependiendo de los que has hecho, pase a otro determinado.

CoLSoN2

 como libreria gráfica podeis miraros SDL (libsdl.org) y todas las librerías auxiliares construídas a partir de esta que hay en su web (SDL_Image y demas)
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

dordokamaisu

 No entiendo muy bien a que te refieres con una maquina de estados, ¿hablas de teoria de sistemas?
Creo que sigo la idea, pero ¿podrias explicarme un poco mejor lo que dices?
Gracias

Mars Attacks

 Pues es simple. Supón que a cada lugar donde puedes estar (por ejemplo, establo, iglesia, campo, herrería) le asignas un entero que inicialmente está a 0 si aún no has estado allí y a 1 (o a otros valores si buscas estados más detallados, por ejemplo, si le preguntas algo determinado a alguien determinado) si sí has pasado por allí.

Supón que si has estado en el establo y en la iglesia te mandan a la herrería, y si no al establo.
Pues haces un
if (establo && iglesia) {printf("El malvado Ser Villeta te sugiere que vayas a la herrería\n");}
else {printf("El malvado Ser Villeta te ordena que vayas al establo\n");};

en realidad este tipo de cosas hay que currárselas muy mucho para que queden bien, y más que "ifs" habría que utilizar un switch enorme dentro de una función.

Te recomiendo, si puedes, olvidarte de los gráficos y demás e intentarlo simplemente mediante mensajes de consola. Así de paso te las verás con un gestor de diálogos que te puede resultar útil luego.

dordokamaisu

 Gracias Mars Attacks.

Los tiros ya van mas o menos por ahi, pero me estoy dando cuenta de que para hacerlo un poco complejo va a ser muy dificil. Queremos hacer algo asi como una situacion en la que tienes que poner de acuerdo a varios paises en algo (aun sin decidir), y que el juego se desarrolle de manera que la actitud de estos paises hacia ti sea diferente en funcion de tus actos. Asi a grandes rasgos.

La idea de trabajar con aplicaciones de consola para crear este sistema "no-lineal" me parece buena, probablemente lo haga.

Gracias de nuevo por la ayuda.
m.

jpastor

 Digamos que controlas a España, y que exite Francia, Portugal, Inglaterra, ... Cada pais tiene una valoración sobre ti (supongamos que puede ir de 0 a 100 por aquello del %).

Pues bien, haz que tus acciones suben o bajen ese valor (pegar colleja a Tony Blair baja puntuación en inglaterra y sube en francia porque alli les hace gracia). Y luego que las reacciones de cada pais hacia ti dependa de ese porcentaje:

Si esta entre 0 y 25% -- no dejarte pasar
entre 25 y 50% -- volcar camiones de fresas en la frontera
...

cuantas más acciones tengan influencia en la valoracion hacia ti y más casos de reacciones haya, más "realista".

Thenend

 Eso suena algún juego de Chris Crawford. Del estilo del "Trust and Betrayal" (por lo que he oido, no he jugado) o el "Balance of Power" pero en aventura gráfica.

A ver qué os sale, seguro que algo interesante. Suerte.

Mars Attacks

 Jpastor, es la explicación más amena que he visto en mi vida, felicidades  (ole)

Se parece al sistema vectorial que una vez le propuse a AgeR para algún juego masivo de estos de razas. Cada individuo comienza con un vector con tantas casillas como jugadores o razas o grupos hayan menos uno, y cada casilla representa si es amigo, enemigo o neutro (-1 0 y 1, por ejemplo, o  0 1 y 2). En principio todos son neutros a menos que te propongan alianzas (pasan a ser amigos) o te ataquen (ergo enemigos).
Así se pueden tener individuos que colaboren con razas que no son la suya (mercenarios, por ejemplo) y cosas así.

Loover

 Bueno, nunca he hecho un "parser" para crear aventuras gráficas, pero si he seguido la programación de uno que ha hecho [Over]. Cuando lo vea le diré que se pase por aquí y postee algo porque su parser es estupendo.

Por lo que he visto, el quid de la cuestión para hacer un buen parser está en currarse un buen sistema de scripts. De forma que todo este automatizado por medio del script y que el motor gráfico y parte del lógico estén en una capa inferior. Ayuda mucho tb fabricarse un editor de forma que todo quede integrado (scripts, editor de animaciones, etc).
Sino me equivoco [Over] usó Lua, que viene de perlas para crearse un sistema de scripts.

De los pasos que hay que seguir para implementar todo eso ya que te lo explique él :P

Un saludo!

PD: En cuanto a la "no linealidad" podrías hacer un sistema parecido al juego este gratuito llamado "masq" (buscar en google) que viene a ser algo parecido a aquellos libros de "Elige tu propia aventura" :)
Aunque si fuerzas demasiado la no linealidad puede que como resultado de diseño tengas un juego de rol, jajaja.
Tb puede ayudar la aleatoriedad (aunque depende mucho del engine gráfico):
- Inclemencias del tiempo (algo que no afecte demasiado al paisaje, a no ser que estés dispuesto a redibujarlo entero) como llovizna, soleado, nublado, etc.
- Objetos que cambien de sitio de una partida a otra (desde objetos propios a usar en la aventura, hasta bloques enteros de gráficos (como cesped de un color u otro y en briznas en diferentes posiciones, árboles, rocas y pequeños detalles). Aún siendo un fondo 2d podría hacerse, superponiendo imágenes según convenga... (aunque no lo he visto nunca). Y si es 3d en tiempo real pues más fácil.
- Generador aleatorio de nombres

IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Zaelsius

 Bueno yo digo lo de siempre:

si no teneis experiencia en programación gráfica, empezad por un arkanoid o un tetris... luego cosas más avanzadas.

ALBSIM

 Si te gustan las aventuras de Lucasart, pásate por scummvm, es una aplicación capaz de cargar la mayoría de las aventuras de esta empresa (y creo que algunas otras más). Puedes aprender mucho echando un vistazo a las fuentes, pero se trata de un proyecto importante, con muchas líneas de código, en el que puede que te pierdas fácilmente, mas aún si eres novato en ésto. De todas formas busca en google, porque hay muchos tutoriales mas sencillos sobre aventuras gráficas. Alguien (no recuerdo quien) que postea en estos foros está creando un parser para aventuras gráficas.

tamat

 Yo creo que lo mejor es que diseñeis el sistema sobre papel, aplicando conocimientos de Ingenieria del Software que se pueden resumir así:

- lista de elementos que forman el juego, en tu caso habitaciones, objetos, personajes o cosas más abstractas como dialogos
- casos de uso, intenta ver qué acciones se pueden aplicar sobre cada elemento y qué acciones puede desencadenar este, por ejemplo un objeto puede cogerse, una habitación puede visitarse, etc.
- Crea un mapa de clases que contenga lo anteriormente mencionado, haciendo incapié en las dependencias, es decir, qué clases hacen referencia a otras, por ejemplo, una habitación puede contener objetos, un personaje puede contener dialogos, etc.
- Implementalo en una aplicación de consola, lo importante es que todo esté contenido en una clase 'juego' y que la parte que gestiona entrada y salida del usuario esté fuera y lo unico que haga es convertir los mensajes del usuario en comandos para el juego y extraer información del juego para mostrarsela al jugador.

Cuando veas que la aplicación de consola funciona entonces preocupate de la parte gráfica. Yo hice mi proyecto de final de carrera basandome en esos cuatro puntos y me fué muy bien porque me permitia avanzar sin tener que volver atras y rehacer cosas anteriores. Además la parte gráfica tiene una problematica asociada muy propia que no suele tener nada que ver con la logica propia del juego por lo que si tratas de lidiar con ambas a la vez te liaras, mejor que cada uno se centre en una o hacer las cosas por partes.

Un saludo.
Por un stratos menos tenso

dordokamaisu

 Vaya, gracias a todos!

No sabía la cantidad de respuestas que puedes recibir en un foro en un día.

He encontrado cosas utiles en vuestros posts. Dentro de unos días veré a mi compañero (ahora estoy de vacaciones fuera) y le comentare nuevas ideas. Si surge algo más ya se donde preguntarlo.

Gracias de nuevo.
m.

stratos

 Mientras sigues los sabios consejos de quienes han sufrido en sus cal-nes el proceso de hacer un juego, te centras en que el juego funcione en condiciones, y SOBRE TODO consigues que el juego sea como tú lo has ideado y diseñado, y no como no haya más remedio, porque te faltan recursos (el peor problema que existe, sacrificar una idea por falta de conocimientos o de técnica), te sugiero que le eches un vistazo a un libro.
Para centrarte después en el apartado gráfico y sonoro podrías utilizar las DirectX, o podrías utilizar las SDL, queda a tu elección. Aquí se han aconsejado las últimas, así que aquí tienes un enlace para que veas un libro orientado específicamente a "Programación de videojuegos con SDL en Windows y Linux":

http://www.ediversitas.com/index.php?idc=1

(Creo que también tienes un banner en la parte de arriba de los foros, pero por si acaso)

En fin, a sudar y romperse la cabeza, como todos!   :P  
Un saludo a todos.

Antonio Arteaga
Coordinador General de Stratos.
LibroVirtual.org






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.