Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: javiel en 05 de Abril de 2004, 01:42:22 PM

Título: Formato De Las Imágenes
Publicado por: javiel en 05 de Abril de 2004, 01:42:22 PM
 Bueno a ver como explico yo ahora esto....

Las imágenes de mi juego están en PNG, y estoy bastante contento con este formato, pero tengo un pequeño problema. El problema es que es muy fácil modificarlo. Como las imágenes las carga en tiempo de ejecución, pues nada mas que cambiar una nave se puede cambiar la navecita. Esto no está mal, de todas formas tengo pensado poner el juego con Licencia GPL, pero no se hasta que punto está bien esta facilidad de cambio de sprites.

He visto en juegos como "Pachi el marciano"

http://dragontech.sourceforge.net/index.ph...main=news&game=

que tiene el formato en una extensión llamada ".T8", bueno o eso creo que son las imágenes después de ver el código, pero no tengo ni la mas remota idea de que es esto, o como funciona ¿alguien sabe de que va?

No me gustaría cambiar de formato, ya que PNG es lo mejor que he visto hasta ahora, pero no se como se podría (o si se puede) enmascarar un poco las imágenes para que no se modifiquen con demasiada facilidad.

Gracias a todos y un saludo
Título: Formato De Las Imágenes
Publicado por: BeRSeRKeR en 05 de Abril de 2004, 04:12:32 PM
 Podrías empaquetar tus imágenes que no se puedan modificar en un zip (modificando su cabecera) o un rar (poniéndole una contraseña) o incluso inventándote tú mismo un formato. Evidentemente tendrías que crear un manager de archivos empaquetados para extraer los archivos en memoria y posteriormente cargar las imágenes o lo que sea desde esa zona de memoria.

Por la red hay librerías para manejar los formatos zip (zlib, por ejemplo) y rar.

Saludos.
Título: Formato De Las Imágenes
Publicado por: tewe76 en 05 de Abril de 2004, 04:21:24 PM
 ese es el método ideal, pero si qieres uno de medio andar por casa, pero eficaz en la mayoría de los casos, basta con q cambies la extensión de los archivos .png por .xxx (por ejemplo). Por supuesto, así se puede descubrir el truco con un poco de investigación, pero la mayoría de la gente ni se molestará en hacerlo.
Título: Formato De Las Imágenes
Publicado por: tamat en 05 de Abril de 2004, 04:58:34 PM
 renombra los pngs a .F4KU y ya está :D
Título: Formato De Las Imágenes
Publicado por: [EX3] en 05 de Abril de 2004, 05:08:16 PM
 Hombre yo en principio la idea de ke me modifiken las imagenes de mi juego pos me jorobaria un poco pero luego tb lo veria bien para ke la gente hiciera sus propios skins y demas historias (eso le da vida a un juego) cosa ke tb se puede hacer sin modificar las fuentes originales.

En tal caso yo optaria por paquetes, ya sean sin comprimir (PAK, WAD u cualquier formato conocido) o comprimido (ZIP, PK3, etc...) o crearte tu mismo tu propio formato de paquete. Esto luego a la larga tb es muy comodo para poder organizar los recursos de tu juego e incluso para hacer modificaciones de skins como he dicho antes añadiendo por ejemplo paquetes adicionales en el directorio del juego con los archivos modificados del original, luego suplantas los originales por los del pakete en la carga del juego y tal, como hace el Half-Life o el QuakeIII. Con esto de los paquetes nadie podria modificar los archivos a no ser ke tuvieran el editor con el ke se hizo el paquete, cosa ke es facil si usas formatos como el PAK o PK3, pero si te creas tu propio formato de paquete solo tu podrias modificar los archivos.

Salu2...
Título: Formato De Las Imágenes
Publicado por: Zaelsius en 05 de Abril de 2004, 06:54:33 PM
 Buenas, nosotros tenemos un empaquetador de archivos muy chulo, tiene una interfaz en C++ muy sencilla, admite compresión, y tenemos una GUI para Windows para crear los paquetes.

Viene incluido en un paquete de herramientas más general que hemos llamado "LemonGT", y puedes descargarlo junto a los tutoriales en www.LemonTeam.com

Aunque verás que pone versión "Beta", no hemos detectado errores en esta versión.

En la sección de tutoriales puedes ver un tutorial más extenso sobre el formato y cómo añadir encriptación fácilmente.

Si tienes algun problema utilizándolo contáctanos por este foro, el nuestro o por mail.

Edit: una captura del GUI para que veais que fácil es
(http://www.telefonica.net/web/zsgames/posts/packer.png)
Título: Formato De Las Imágenes
Publicado por: [EX3] en 05 de Abril de 2004, 07:17:08 PM
 Yo estoy implementando una pekeña modificacion en el formato PAK del Quake/Half-Life, compresion mediante ZLIB. El tema de usar el PAK como base es por ke para crear los paketes prefiero el editor ke tengo para los PAK, el PAKScape, es un editor con una interfaz muy sencilla y flexible ke permite arrastrar elementos desde una carpeta al programa y viceversa (drag&drop) y eso es algo ke veo muy util y como yo estoy muy perro como para currarme un editor como ese pos se me ocurrio la idea de crear un programa aparte ke, una vez creado el PAK, extragera en memoria los archivos, los comprimiera y volviera a crear el nuevo PAK (*.TPK, TLSA PAK  :P ) pero comprimido, variando incluso la cabecera con alguna informacion adicional que fuese util para el motor.

Luego si por alguna causa se kisiera modificar el contenido del TPK se usaria el mismo programa para realizar la tarea al reves, osea, extraigo en memoria los archivos, los descomprimo y creo otra vez el PAK original.

Se ke suena un poco a chapuza (pero solo un poco xDDD) pero weno, si me da el venazo ya me pondre hacer un editor en condiciones xDDDDD

(http://sofsoldier.free.fr/hsmapping/tutorials/images/PakScape_pak0_models.gif)
PAKScape

Salu2...
Título: Formato De Las Imágenes
Publicado por: Lord Trancos 2 en 05 de Abril de 2004, 08:06:10 PM
 Como muy bien dices, si lo vas a hacer GPL no tiene mucho sentido que protejas los graficos.
Título: Formato De Las Imágenes
Publicado por: Zaelsius en 05 de Abril de 2004, 08:21:10 PM
 Hombre, los fuentes de Quake 1/2 son GPL y el arte sigue siendo copyright de Id Software. Javiel, en este caso deberias incluir una licencia adicional para los gráficos o dejar muy claro que no se pueden usar, porque teniendo el código fuente no cuesta nada sacarlos.

Aunque pienso como Lord Trancos, que mientras tu juego no sea comercial no te tendrias que molestar en proteger los gráficos, pero si lo haces, pues algo más habrás aprendido :).
Título: Formato De Las Imágenes
Publicado por: TheAzazel en 06 de Abril de 2004, 05:34:12 PM
 Bueno, a mi no me gusta q se modifiquen los graficos... yo stoy con la mayoria, hazte un formato propio que sea sencillote y ya esta, personalmente tengo un empaquetador multimedia donde puedo meter archivos de sonido,musica,imagenes,tiles,botones,sprites y fuentes y lo q hace es importar los formatos mas conocidos y luego internamente usa formato propio, tambien puedes exportar, en fin esta bastante bien... a ver si en una de esta saco ganas de algun sitio, lo documento un poco y lo pongo en la web para que lo utiliceis todos los q querais ya que puedes criptar con password cada "paquete" asi nadie te podra toketear tus datos(bueno, eso de nadie... en la informatica si alguien te la quiere liar te la lia, es cuestion de cto interes tenga, cto tiempo y cto sepa jejeje)
pos na mas, un saludo
Título: Formato De Las Imágenes
Publicado por: Lord Trancos 2 en 06 de Abril de 2004, 08:49:18 PM
 
Cita de: "ZaelSiuS"Hombre, los fuentes de Quake 1/2 son GPL y el arte sigue siendo copyright de Id Software. Javiel, en este caso deberias incluir una licencia adicional para los gráficos o dejar muy claro que no se pueden usar, porque teniendo el código fuente no cuesta nada sacarlos.

Aunque pienso como Lord Trancos, que mientras tu juego no sea comercial no te tendrias que molestar en proteger los gráficos, pero si lo haces, pues algo más habrás aprendido :).
Que el codigo sea GPL no quiere decir que los de ID hayan renunciado al Copyright © del codigo. (y tampoco de los graficos, claro).

Con lo de que si el juego iba a ser GPL no valia la pena proteger los graficos, y tal y como dices, me referia a que puesto que se tiene el codigo se pueden sacar/convertir los graficos (aunque sin el codigo tb se pueden sacar), por lo que el trabajo de esconderlos resulta un poco tonto (mejor gastar el esfuerzo en otras cosas). Otra cosa es que simplemente quieras empaquetarlos para meter un poco de orden.
Título: Formato De Las Imágenes
Publicado por: [EX3] en 13 de Abril de 2004, 09:33:51 PM
 Yo la razon por ke decidi usar paketes en mi juego es simplemente por tener una organizacion de los archivos y para poder hacer añadidos de forma sencilla. Mi motor busca, por orden alfabetico, en un directorio determinado todos los *.pak ke haya y luego genera una lista con todos los archivos encontrados en los *.pak, pero la lista solo contiene archivos unicos:

QUOTE ("pak0.pak")
GFX/Logo.bmp
GFX/Main.png
Sound/Shoot.wav
Credits.txt[/quote]
QUOTE ("pak1.pak")
GFX/Sky.bmp
GFX/Main.png
Credits.txt[/quote]
QUOTE ("La lista final seria")
GFX/Logo.bmp (pak0.pak)
GFX/Main.png (pak1.pak)
GFX/Sky.bmp (pak1.pak)
Sound/Shoot.wav (pak0.pak)
Credits.txt (pak1.pak)[/quote]
Los archivos contenidos en la lista siempre son los ultimos archivos leidos, si se lee un archivo ke ya existe en la lista, el antiguo se cambia por el nuevo. Es el mismo mecanimso ke usan motores como el del Quake, Quake 2, Half-Life, Quake3 o Jedi Knight 2 entre otros.

Salu2...
Título: Formato De Las Imágenes
Publicado por: Lord Trancos 2 en 13 de Abril de 2004, 10:03:59 PM
 Interesante mecanismo ;)
Título: Formato De Las Imágenes
Publicado por: tewe76 en 13 de Abril de 2004, 11:58:15 PM
 
CitarLos archivos contenidos en la lista siempre son los ultimos archivos leidos, si se lee un archivo ke ya existe en la lista, el antiguo se cambia por el nuevo
¿Por qué tienen prioridad los últimos leídos? No hay ningún motivo, ¿no? Supongo que lo haces simplemente por seguir un criterio.  
Título: Formato De Las Imágenes
Publicado por: [EX3] en 14 de Abril de 2004, 01:15:58 AM
 
Citar¿Por qué tienen prioridad los últimos leídos? No hay ningún motivo, ¿no? Supongo que lo haces simplemente por seguir un criterio.
Pues si, es mas por criterio ke por otra cosa, recuerda ke el motor hace una lista por orden alfabetico de los paquetes que se encuentran en el directorio, y luego genera la lista de los archivos en conjunto de todos los paquetes y lo mismo, la lista se hace leyendo los paquetes por orden alfabetico, tal y como estan en la lista anterior, de ahi la razon de por ke doy prioridad a los ultimos archivos leidos, por ke asi y tal como se leen los paquetes, asi me aseguro ke cuando kiero hacer una modificacion esta se haga, asi en vez de leer el archivo original leo el nuevo.

No se exactamente como lo hara el Half-Life (por ejemplo) pero me imagino ke este usara un patron de busqueda con los *.pak, algo asi como buscar solo pak*.pak, asi solo lee pak0.pak, pak1.pak, pak2.pak, ... asegurando asi actualizaciones correctas de los archivos originales pero esto para hacer addings o plugins en un poco mas puñetero.

Tal y como lo tengo yo es como funciona en el Jedi Knight 2, estan los paquetes originales (assets0.pk3, assets1.pk3, assets3.pk3, ...) pero luego tb te lee cualquier *.pk3 lleve el nombre ke lleve como por ejemplo el modelo de Luke SkyWalker ke le meti al modo multiplayer (anhluke.pk3).

Si tengo ke elegir uno de los dos modos me kedo con el ke uso ahora ya ke es mas personalizable en cuanto a los nombres.

Salu2...
Título: Formato De Las Imágenes
Publicado por: seryu en 14 de Abril de 2004, 01:27:17 AM
 cualqier archivo se puede sacar, al principio parece molon esconderlos del usuario, pero finalmente no merece la pena. Lo qe publiqes tiene ya una proteccion de copyright.

yo personalmente prefiero perder el tiempo denunciando y sacando pasta de gente qe use mis texturas, qe perder tiempo programando movidas raras.

sinceramente, gasta tiempo solo en temas de zipeo por compresion, no por proteccion.
Título: Formato De Las Imágenes
Publicado por: seryu en 14 de Abril de 2004, 11:43:36 AM
 x cierto a mi me horroriza lo de que haya archivos de nombres repetidos, y es algo qe yo al menos no permito que exista, eso solo da lugar a confusion.

En motores pensados para cargar mods como los quake si puede resultar util en el sentido que cargando un nuevo pak puedes reemplazar texturas originales. Lo cual aun me sigue escamando un poco..

como el asunto de las mayusculas y minusculas en archivos, nunca se lo perdonare a windows.  (nooo)  
Título: Formato De Las Imágenes
Publicado por: javiel en 15 de Abril de 2004, 05:14:01 PM
 que quede claro que yo no quiero denunciar a nadie por utilizar mis gráficos. En el caso del software lo pienso publicar bajo GPL ya que me parece lo mejor (por supuesto esto es cuestion de gustos), pero en el caso de los gráficos quiero protejerlos, pero no para que nadie los pueda utilizar, sino para poder utilizar mis naves sólamente yo y si alguien los quiere utilizar que me pida permiso. No es que vaya a decir que no pero quiero saber donde se ponen y para que ya que la parte gráfica es la parte que se ve de un juego (claramente) y no me gustaría que se me relacionase con otros proyectos en los que no tengo nada que ver o no me gustan.

Esto no quiere decir que nadie quiera utilizar mis gráficos, a lo mejor son una mierda y a nadie les interesa, pero si a alguien les gusta quiero ser yo quien decida si los pueden o no utilizar. También forma parte de la explotación del juego ya que si yo creo un personaje concreto para el juego no me gustaría que mi personaje sea utilizado por nadie sin mi permiso. Entiendo que esto sale fuera de la filosofía del Software Libre y es por eso por lo que no quiero dar facilidades y poder protejerlo. Está claro que el que quiera pillarlo lo podrá hacer, pero si los camuflo un poco mejor, y después los registro para que no haya problemas

Por ultimo me gustaría saber, si sabéis algo sobre esto, si puedo poner mi código bajo GPL y los gráficos bajo otra licencia que me proteja de que nadie los pueda usar sin mi permiso. Sabéis algo de esto??

saludos

Título: Formato De Las Imágenes
Publicado por: seryu en 15 de Abril de 2004, 05:41:18 PM
 Es perfectamente posible, muchos juegos son asi.

http://www.eternal-lands.com/
Solamente ofrece opensource el programa cliente, ni el servidor ni el arte son gpl.

http://www.planeshift.it/pslicense.html
el programa es gpl, el arte no.

Título: Formato De Las Imágenes
Publicado por: shephiroth en 22 de Abril de 2004, 11:34:11 AM
 Wenas. Na, que pasaba por aqui, y aprobechando pues os dejo una pregunta que viendo vuestros post os seá fácil responderla. Si meto mis imagenes (y texto y demas) en un zip (arj se puede??) o en pak, como hago luego para en el programa poder usarlo???

Tengo la ligera idea que me diréis que descomprimiendola de forma temporal en algun sitio, digase c:\TEMP, pero eso queda muy evidente, y dependiendo del tamaño de los comprimidos puede llevarle demasiado tiempo a la máquina l tener que descomprimir todo el archivo si solo quiero acceder a un archivo.

Como veis tengo dudas, algun amable veterano que me ayude??? sino al final, me quedare sin casa  (nooo)  
Título: Formato De Las Imágenes
Publicado por: BeRSeRKeR en 22 de Abril de 2004, 02:40:01 PM
 Para leer un archivo insertado en un pak, zip, rar o lo que sea, tendrás que descomprimirlo en memoria y leerlo desde ahí mismo.

Saludos.
Título: Formato De Las Imágenes
Publicado por: shephiroth en 22 de Abril de 2004, 03:16:54 PM
 wenas. Si, la teoría muy bonita, pero a mi me va más la práctica.....como lo descomprimo en memoria, y como le digo yo que lea un archivo en memoria, porque yo si esta en el ordenata se, si esta en memoria ya no se xDD
Título: Formato De Las Imágenes
Publicado por: BeRSeRKeR en 22 de Abril de 2004, 04:22:17 PM
 Pues lo de descomprimir en memoria ya se encarga la librería que utilices para ello. Esa librería tendrá una función a la que le pasas el nombre del archivo a descomprimir y te devolverá un puntero al comienzo de la zona de memoria donde está el archivo descomprimido.

Después para leerlo pues por ejemplo, en Direct3D tienes la funciones de D3DX (supongo que OpenIL también tendrá esa opción) que te cargan una imagen desde memoria. Tu le pasas el puntero y ella se encarga de cargarlo.

Pero si lo que quieres es cargarlo por tí mismo, pues todo es punteros y más punteros. Con un puntero vas recorriendo la zona de memoria donde está el archivo y vas leyendo los datos (es más o menos como leer un archivo en disco con fread, fseek, etc. Tal vez algo más complicadillo ya que los punteros se suelen atragantar :D). Eso ya es algo que es básico saber a la hora de programar.

Saludos.
Título: Formato De Las Imágenes
Publicado por: shephiroth en 22 de Abril de 2004, 08:35:18 PM
 Buenas. Lo primero decir que lo hago todo a mano xDD. Pero sigo sin entender como hacerlo.

Veamos, tengo un archivo (voy a hacerlo con zip, pero tambien necesitaría otros formatos, el q hablais de pak no estaría nada mal) llamado sprites.zip en el que tengo las imagenes sprites1.tga y sprites2.tga

Si hago un FILE archivoZIP = fopen("datos/sprites.zip","r"); me devolverá un puntero al archivo.....pero como lo descomprimo en memoria, y una vez q este descomprimido, como sé donde empieza el fichero sprites1.tga, y donde el sprites2.tga (de los cuales por anticipado no se el tamaño exacto, lo unico que es q estan comprimidos, pero ya tengo la funcion para descomprimirlos xDD).

No se si se me entiende la duda xDD
Título: Formato De Las Imágenes
Publicado por: BeRSeRKeR en 22 de Abril de 2004, 10:23:48 PM
 Pues la verdad es que no lo entiendo muy bien. ¿Quieres decir que eres capaz de descomprimir el archivo pero no sabes su tamaño?. Eso me parece bastante contradictorio.

Yo te aconsejaría que si vas a utilizar el formato zip, utilizases alguna librería para ello ya que, mas que nada, es un curro bastante gordo crearse uno mismo las funciones de descompresión para el formato zip. Además, con estas librerías no sólo se te devuelve el archivo descomprimido en memoria sino que también te devuelve el tamaño del mismo.

Saludos.
Título: Formato De Las Imágenes
Publicado por: BeRSeRKeR en 22 de Abril de 2004, 10:31:09 PM
 Por cierto, como tampoco es cuestión de que te diga cómo se hace un manager de archivos zip, te aconsejo, si quieres saber cómo hacerlo, que te descargues el código fuente de las herramientas del quake3. Ahí verás que hay una librería (con el código fuente) y código para utilizar esa librería. Lo puedes descargar de aquí (creo que ese es el archivo).

Saludos.
Título: Formato De Las Imágenes
Publicado por: shephiroth en 23 de Abril de 2004, 02:54:39 PM
 Buenas. Lo siento, pero debí de escribil mal y te llevé a confusión. En ningun momento he querido decir que sepa como descomprimir el zip en memoria, simplemente he expresado mis desconocimientos y no he sabido hacer la pregunta.

Actualmente mi proyecto accede a las imagenes directamente, manteniendo subcarpetas para tenerlo un poco "ordenado". Al ver este post me pareció muy buena idea la de poder introducir archivos de información similar en un unico archivo (lo de zip era un ejemplo, por lo q leo tirare más por los paq por eso de ser mas usado xDD).

Segun he leido hay que leer el archivo en memoria, descomprimirlo en memoria, y acceder a la imagen en memoria, de ahi vienes mis dudas.

1) Abrir el archivo y volvarlo a memoria. Fenomenal, un fopen, y un fread que lea todo el archivo y lo lleve a un char*.

2) Descomprimir en memoria (ni idea xDD)

3) Acceder a las imagenes en memoria (ni idea xDD)

En mi anterior post me salte directamente al tercer punto, lo q te llevo a error xDD

Cual librería me recomendais para esto??

GRACIAS
Título: Formato De Las Imágenes
Publicado por: BeRSeRKeR en 23 de Abril de 2004, 03:22:31 PM
 Ya que te pones a meter las cosas en un "pak", ¿por qué no utilizar compresión?. Al fin y al cabo, con la ayuda de una librería es lo mismo que si metieras tus archivos en un "pak" sin compresión.

Con respecto a la librería, depende de qué formato quieras. Si quieres utilizar zip, utiliza la zlib o la que viene con el código fuente de las herramientas del quake3. Si vas a utilizar rar, píllate la librería unrarlib.

Con respecto a cómo descomprimir en memoria, depende. Si vas a utilizar un "pak" sin compresión no necesitas descomprimir nada, sólamente saber en que posicón dentro del "pak" comienza el archivo a extraer y qué tamaño tiene. Con eso haces un fseek para posicionarte en la posición correcta dentro del "pak" y haces un fread de tantos bytes como tamaño tenga el archivo. Pero si utilizas una librería como las que te he dicho, te olvidas de todo esto. La librería se encarga de ese trabajo.

Leyendo el punto número 1, me hace pensar que estás confundido. A ver, lo que tienes que cargar en memoria no es todo el pak (sería una barbaridad teniendo en cuenta que podría llegar a ocupa un capazo de megas) sino solamente el archivo que necesites (una imagen, un script, un sonido, etc).

Y finalmente, con respecto a lo de leer cosas en memoria, lo único que te puedo aconsejar es que te leas, en algún libro o tutorial en internet, el tema de punteros y cómo utilizarlos para desplazarse en una zona de memoria.

Saludos.
Título: Formato De Las Imágenes
Publicado por: shephiroth en 24 de Abril de 2004, 12:00:31 AM
 Wenas. Creo que porfin empezamos a entendernos xDD.

La verdad el proyecto esta en una fase demasiado temprana como para empezar a hacer este tipo de cosas, pero tomo nota. Lo más seguro utilizaré alguna libreria (de codigo libre, porsupuesto) a poder ser de arj que me gusta más xDD

Muchas gracias a todos por vuestros comentarios ^_^
Título: Formato De Las Imágenes
Publicado por: Mars Attacks en 24 de Abril de 2004, 01:23:04 AM
 Los programadores creo que ya te han solventado las dudas (o están en ello). Filosofeando un poco te diría que te olvides de ponerle "las cosas difíciles" al usuario. Si no quieres que usen tus imágenes sin tu permiso, simplemente pon un letrerito en el ejecutable que ponga "envíame un mail a tal si quieres usar las imágenes para tu proyecto".
Total, el que lo quiera hacer lo va a hacer igual, así que ¿para qué complicarse mutuamente la vida?

Un saludo GPL.
Título: Formato De Las Imágenes
Publicado por: shephiroth en 24 de Abril de 2004, 11:26:27 PM
 Wenas ^_^

Mars, gracias por tu comentario. En parte creo que tienes razón, que es liarse las cosas. Pero por otra parte siempre jode ver tus imagenes por ahi sin tu saberlo.

Y aparte, yo más lo hago por comodidad que por otra cosa. Estoy intentando hacer un rpg en 2d basado en tiles sin usar el típico rpgmaker. Me será mucho más fácil si cada.....área, o mapa.....sus sprites, textos y demás, estan todos en un pak diferente (evidentemente, esto facilitaría las cosas, puesto que todos los archivos podrían tener el mismo nombre en sus respectivos pak). Cierto es q lo mismo es con directorios, pero siempre queda mejor un .miextensionfavorita que un directorio con muchos archivos (que ademas esto consume mucho mas hd......he llegado a ver una carpeta que ocupaba menos de 30 megas, pero espacio ocupado en disco cerca de 1 giga, me quede  (uoh) ).

SALUDOS  (ole)