Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





OMD viejo proyecto, nuevo código

Iniciado por Khayn, 12 de Septiembre de 2008, 05:02:17 PM

« anterior - próximo »

Khayn

la cosa es que blitz no carga algo en memoria y despues lo asignas como lo que quieras, si no que carga especificamente un modelo y si el archivo no tiene esa extensión o esos parametros te da error, por lo que no puedo crear un archivo, leerlo y despues decirle que lo tome como un modelo...
vamos creo que es así en blitz, en caso contrario y si sí se pudiera me encantaría saber el modo

Buffon

#16
Como ya te he dicho por whisp nunca he trabajado con blizt pero fijo que se debería poder.

Aunque no sea del todo correcto:

puedes hacer una aplicación en C++ que te realice este paso, el de desencriptar y te lo guarde en un lugar recóndito del sistema con un nombre poco identificativo, desde blizt si podrás llamar a otras aplicaciones, no?

una vez se generan esos ficheros, los llamas desde blizt y los borras.

EDITO:

que pocas facilidades da blizt no ? xD

tmb sería sencillo ejecutar esa aplicación en C++, redirigir las pipes de in(1) y out(2) para que se comuniquen como si fuera una pipe. Joder vaya prácticas de sistemas operativos me he llegado a chupar yo en la uni con estas tonterías xD

[EX3]

Lo que si permitira blitz es cargar un archivo en modo binario, no? Cargar todo su contenido en un array de bytes. De ser posible esto podrias cargar el archivo en modo binario, aplicarle un algorritmo de encriptacion y salvarlo encriptado. Despues, solo seria realizar los pasos inversos para cargarlo:

cargar archivo encriptado -> aplicarle el algorritmo para desencriptarlo -> salvarlo a disco -> cargarlo con la funcion de carga de modelos de blitz

Nunca he pasado de un "hola mundo" en blitz pero si me he leido muchas veces por encima la doc por curiosidad y creo que si habia funciones basicas para tratamiento de archivos (diria si mi memoria no falla que muy similares las del clasico GWBasic del 87), a parte de las funciones para leer y escribir archivos de texto.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

yens

Muy a riesgo de no aportar nada útil voy a comentarte que existe una cosa llamada BB Cruncher que permite comprimir hasta un 50% los recursos que utilices para luego usarlos en Blitz3D. Igual tiene alguna forma de encriptar o demás chorradas, pero bueno te lo dejo por aquí, igual sirve de algo: http://www.blitzmax.com/toolbox/toolbox.php?tool=65

Khayn

gracias a todos por el interés mostrado..

Lo del encriptado de EX3, eso lo hice pero el problema es que has de cargar el binario desencriptarlo, guardarlo, recargar el nuevo emporal y borrar el temporal... (no quiero temporales)

Buffon en C++ se que existe una cosa llamada libreria, otra llamada objetos, y un rollo sobre .h y .cpp que aun no se que es :D, soy negado en C, me da cefaleas el día que encuentre un manual decente mandaré a paseo al blitz que lo estoy deseando.

Yens sí, el Cruncher comprime,(me da igual comprimir que encriptar la cosa es negar el acceso a nadie al modelo), es una muy buena opcióm, pero no descomprime en memoria, lo saca a un temporal lo lee y despues lo borra estamos en las mismas...

Se que hay otra aplicacion el Molebox, pero es de $$ y no sale barato, comprime y proteje al estilo Cruncher pero lo hace todo en memoria, hice pruebas con el de evaluacion y claro la carga de modelos se va al doble o triple de tiempo, el tipo de juego que estoy haciendo como que se hace pesado el cambio de mapas y esperar 30 segundos...

Por eso pregunto si hay cosas alternativas para el blitz o que se puedan adaptar a el sin muchos probemas para un novato, por que si no lo único que veo es el puñetero molebox y como no me dedico a esto como que pagar 120E por algo que no le voy a sacar beneficio uff, duele que no veas :D

[EX3]

Cita de: Khayn en 24 de Octubre de 2008, 12:10:16 AMLo del encriptado de EX3, eso lo hice pero el problema es que has de cargar el binario desencriptarlo, guardarlo, recargar el nuevo emporal y borrar el temporal... (no quiero temporales)
Tiene algun metodo o funcion Blitz3D para cargar un modelo en memoria sin tener que cargar un archivo? pasarle un array de bytes con la informacion del modelo? De ser asi no tendrias que generar temporal, simplemente cargar el archivo encriptado, desencriptar y pasarle el array desencriptado a la supuesta funcion de carga en memoria.

De todas formas, lo de usar temporales no es algo tan dramatico. Generas el temporal en el directorio temporal del usuario y con un nombre generado al azar y nadie tiene que saber que existe. Ademas, se trata de eliminar el archivo una vez cargado. Yo esto lo utilizo en un par de funciones de dx_lib32 por que no me queda mas remedio y va como un tiro aparte de lo dicho sobre eso de que nadie tiene por que saber que usas temporales y en caso de saberlo donde y como se llama el archivo temporal. Yo en mi caso, sin depurar el codigo de mi libreria y ver el nombre que se genera, seria muy muy complicado averiguar que archivo ya que puedes tener cientos de archivos con formato de nombre similar en tu directorio temporal.

Pues hombre, en parte entiendo que si no estas trabajando 120€ es una pasta. Es una lastima por que yo uso Molebox en muchos proyectos de VB6, varios de ellos con mi libreria, y va de lujo. Lo mas que se me ocurre, usar un zip con contraseña. Aparte, lo de Molebox es un caso a parte de lo que seria programar en Blitz o en otro lenguaje rutinas de memoria. En cierta forma si que trabaja con temporales pero de forma virtual, como si fuese un VMware o cualquier otra maquina virtual. Para tu hacer eso a pelo en blitz primero debe haber funciones que permitan la carga de recursos mediante bufferes de datos (arrays de bytes generalmente) ya que de lo contrario dificilmente podras hacer cargas en memoria.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Khayn

Buenos dias :D
Por suerte trabajo si tengo pero no en esto, y no voy a amortizar el molebox ya que no voy a vender nada :D, es que me expreso muy mal.
La única manera que conozco de crear modelos sin cargarlos desde un archivo con su correspondiente extensión es la manual, es decir vértice a vértice, estube buscando información y no encontré nada, o soy muy malo buscando en los foros, que lo soy!, o no hay modo, al menos en la documentación tampoco he visto nada.

Buffon

mirando esta referencia:

http://www.blitzbasic.com/b3ddocs/command.php?name=file&ref=goto

tienes todos los comandos para abrir ficheros.

te puedo plantear una idea, te autogeneras tu un fichero megaenorme que guarda todos los ficheros con la siguientes estructura de datos:

primero guardas en 4 bytes el número de ficheros que estás agrupando y luego vas guardando fichero a fichero poniendo delante su longitud utilizando también 4 bytes.

Si tienes dos ficheros

0x00,0x00,0x00,0x02,[0xXX,0xXX,0xXX,0xXX][fichero 1][0xXX,0xXX,0xXX,0xXX][fichero 2]

esto lo haces utilizando la API que te he puesto en el link.

Ahora te puedes implementar una clase Encriptador que te realice por ejemplo una encriptación/compresión Huffman, muy sencilla de realizar y muy básica, pero eficaz sobre todo el contenido, agrupando los bytes en 2, 4 ó 8 bits, a gusto del consumidor, y vuelves a crear el fichero resultante.

Cuando vayas a cargar el juego haces el paso contrario, descomprimes el huffman, y según vas leyendo uno a uno los ficheros los guardas en una carpeta personal si no sabes cargarlos directamente en blitz y luego a blitz le dices que coja el fichero que acabas de generar y lo borras.

Mano de santo :P

es mucho más curro del que normalmente se debería realizar pero te puede sacar del paso.

----------

Lo que yo haría pero en C++


std::ifstream is;
is.open("compressed.dat",std::ios::in);
parsea(desencripta(is));

desencripta me haría el huffman al revés, mírate un manual de huffman que en serio es muy pero muy sencillo.

parsea cogería el contenido del fichero y me lo guardaría en mi propia estructura de datos, total esto es lo que se realiza en los juegos cuando ves la barra de "cargando", mejor hacer el trabajo sucio ahora que luego.

RobiHm

si Blitz3D genera un .exe exísten programas para acoplar recursos o blindear a un ejecutable,
no se si te será de ayuda ya que hace mucho que no lo hago y no puedo aportarte nombres concretos,
Web : Indómita
Blog : MiBlog
Evobas : Evobas
Kobox : Kobox

yens

Cita de: Khayn en 24 de Octubre de 2008, 12:10:16 AM
Yens sí, el Cruncher comprime,(me da igual comprimir que encriptar la cosa es negar el acceso a nadie al modelo), es una muy buena opcióm, pero no descomprime en memoria, lo saca a un temporal lo lee y despues lo borra estamos en las mismas...

Nosé donde ni como ni si pioj leerá esto, pero casi seguro que cuando estaba haciendo unas pruebas con el de Blitz3D podíamos descomprimirlos al vuelo, miratelo bien y trataré de buscar los ejemplos en mi HD, porque me suena mucho de que se pueda.

Khayn

Estuve re-mirando del bbcruncher y sigo sin ver que lo hace en memoria..., lo que dice hacer es empaquetar en un archivo o en el propio ejecutable

Vi otra opción que es un tal BlitzReg que convierte lo que quieras a data encriptado para poder meterlo en el código, (haciendo chapuzas se podra hacer que ese data lo pille de un archivo),  despues lo lee lo desencripta y graba el temporal, (original), para ser leido, vamos creo que más o menos a lo que se refería buffon.

Otra opcion viable, pero que como se me acabo el periodo trial del mole box no puedo probar, sería hacer varios minipaquetes con los archivos que considere importantes, así no creo que el tiempo de acceso a ellos sea elevado....

Sincro

La verdad que el juego pinta bien, y es todo un logro que lo  consiga una sola persona ^^

Ami me recuerda un pokito a RO jejeje  y eso em gusta ^^  yo principalmente me deidico al tema de sonido y trasfondo.....  si peudo ayudar en lago no udes en decirmelo.

Khayn

Gracias.

Bueno creo que ya tengo algo hecho lo de las protecciones de gráficos, gracias a vuestras sugerencias, asi que uno de estos días tendré listo el alpha para test público.

Las ayudas siempre son bien recibidas, ponte en contacto y hablamos.






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.