Ejecutable generico...

Aquí puedes proponer ideas para mejorar pilas, ¿que te gustaría ver en pilas?

Ejecutable generico...

Notapor Barajas » Jue Jul 26, 2012 5:08 am

Hola :D

Últimamente he estado pensando sobre la distribución de juegos hechos con pilas y el problema de tener que instalar python, pygame, y otras librerías en cada maquina que utilice el juego hecho con pilas...

Se que existe py2exe y otras herramientas, pero la idea de pilas es el hacer juegos de forma simple.

Así que se me ocurrió lo siguiente:

Imaginemos una plantilla de ejecutable. Esta plantilla tendría un archivo ejecutable principal, las librerías de pilas y un archivo "main" al cual ejecuta :D.

Ahora bien, digamos que este "main" lo único que contiene es un ejemplo de funcionamiento, y cualquiera que quiera distribuir su juego hecho con pilas, solo debe colocar los recursos de su juego y sus scrips en la carpeta, para finalmente, remplazar el archivo "main" por defecto por uno propio que ejecute su juego.

No sé si es una buena idea, ¿ustedes que opinan?
Vi veri universum vivus vici
Avatar de Usuario
Barajas
 
Mensajes: 209
Registrado: Mar Nov 16, 2010 12:06 am

Re: Ejecutable generico...

Notapor hugoruscitti » Jue Jul 26, 2012 1:55 pm

Me gusta la idea!!!

¿Sería algo cómo pygtk-portable cierto?

http://fnch.users.sourceforge.net/porta ... ndows.html

¿Cómo podemos hacer?, me gusta la idea, creo que puede funcionar y
quiero dar una mano.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Re: Ejecutable generico...

Notapor Barajas » Vie Jul 27, 2012 12:50 am

hugoruscitti escribió:¿Sería algo cómo pygtk-portable cierto?


Mas o menos, de hecho, la idea me mientras intentaba hacer un ejecutable de un juego (y mis fracasos haciéndolo :oops: jeje), en eso, mientras me paseaba por la pagina de pygame, encontré esto http://www.pygame.org/project-Packaged+Windows+Build+Creator-1992-.html.

Y la descargue.

Note que para correr mi juego solo debía mover el scrip al que llamaba el ejecutable por el que yo utilizaba, aun que claro, agregando manualmente las librerías que utilizaba al archivo zip.

Y en ese momento me vino la idea. :D

En resumen, solo necesitamos una aplicación "base" ( solo un scrip en pygame tipo "main" convertido con py2exe ), y sobre esa aplicación base ir agregando las librerías necesarias de pilas y así tener el ejecutable genérico...
Vi veri universum vivus vici
Avatar de Usuario
Barajas
 
Mensajes: 209
Registrado: Mar Nov 16, 2010 12:06 am

Re: Ejecutable generico...

Notapor hugoruscitti » Vie Jul 27, 2012 2:27 am

Interesante... ¿Te parece bien si hacemos algunas pruebas en el fin de semana a ver que sale?
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Re: Ejecutable generico...

Notapor Barajas » Vie Jul 27, 2012 2:57 am

De hecho, tomando como base el ejecutable de la pagina de pygame (si, el mencionado anteriormente )...

http://db.tt/rScZyE8E

Aquí esta mi experimento, si lo comparas el library.zip, yo agregue las librerías xml y stringIO, y creo que puedo hacer lo mismo con cualquier otra librería de Python...

Aun que es muy "tosco". Por eso opino que seria mejor hacer una versión "propia " del ejecutable para no tener que hacer todas las modificaciones que yo hice :roll: ....

Aun que es una demostración de que si se puede hacer :D
Vi veri universum vivus vici
Avatar de Usuario
Barajas
 
Mensajes: 209
Registrado: Mar Nov 16, 2010 12:06 am

Re: Ejecutable generico...

Notapor hugoruscitti » Vie Jul 27, 2012 5:47 am

Interesante, lo voy a probar en windows (en cuanto consiga uno) y te aviso a ver que tal.

Gracias!
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Re: Ejecutable generico...

Notapor hugoruscitti » Dom Jul 29, 2012 9:25 pm

Hola barajas!

Me puse a realizar algunas pruebas y escribí un poco sobre cómo generar estos cargadores:

http://hugoruscitti.github.com/2012/07/ ... os-python/

Logré armar un cargador básico y otro para ejecutar juegos pygame. Me gustaría implementar
uno para pilas y (si tenemos exito, uno para cocos2d). ¿Me darías una mano?.

Aún no investigué si se puede cambiar el ícono del archivo .exe, o si es posible generar un
empaquetado que recolecte mas archivos (para que no sean tantos).

¿Que te parece?, ¿algun otro miembro de la comunidad se anima a ayudarnos?
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Re: Ejecutable generico...

Notapor Barajas » Lun Jul 30, 2012 6:15 pm

Bien, haré lo que pueda :D
Vi veri universum vivus vici
Avatar de Usuario
Barajas
 
Mensajes: 209
Registrado: Mar Nov 16, 2010 12:06 am

Re: Ejecutable generico...

Notapor Barajas » Mié Ago 01, 2012 2:36 am

Después de un par de pruebas, he conseguido lo siguiente:

Para corregir el error relacionado con Box2D, conseguí corregirlo de una forma que me parece "poco elegante.." :roll:

En la carpeta donde esta la librería de Box2D, en el mismo modulo hay, justo al inicio un bloque de código que versa lo siguiente:

if version_info >= (2,6,0):
def swig_import_helper():
from os.path import dirname
import imp
try:
fp, pathname, description = imp.find_module('_Box2D', [dirname(__file__)])
_mod = imp.load_module('_Box2D', fp, pathname, description)
print '_Box2D', fp, pathname, description
finally:
if fp is not None: fp.close()
return _mod
_Box2D = swig_import_helper()
del swig_import_helper
else:
import _Box2D


La solución, que me parece fea y burda es remplazar ese bloque de código por el siguiente :

if version_info >= (2,6,0):
import _Box2D


Una vez hecho ese cambio, para probarlo utilice en cargador.py importo Box2D y ejecute el .bat, y revise el ejecutable, en efecto, funciona ya con esta modificación. No solo eso, ya funciona también al importar Pilas en el cargador :D

Y también:

hugoruscitti escribió:Aún no investigué si se puede cambiar el ícono del archivo .exe, o si es posible generar un
empaquetado que recolecte mas archivos (para que no sean tantos).


Sobre el cambio de icono, eso se puede hacer modificando el archivo setup.py, entre otras cosas :)

exe = Executable(
script="cargador.py",
base="Win32GUI",
targetName = "Cargador.exe", #El nombre con el que saldrá el ejecutable...
compress = True, # indica si el modulo en bytecode debe ser comprimido o no...
icon = None # nombre del icono que debe ser incluido junto con el ejecutable en Windows
# o colocado en el lugar en el directorio destino para las otras plataformas...
)


Sobre lo del empaquetado, creo que es utilizando en setup el apartado de options del tipo "build_exe" :

setup(
name="Cargador",
#options = {"build_exe": build_exe_options},
version="0.1",
description="Un cargador de juegos",
executables=[exe],
)


y según veo en la pagina de cx_freeze, en la sección dedicada a "build_exe", la opción "compressed", la cual crea un zip, aun que no lo he probado, tal vez mañana... jeje

Espero que esto sea útil. :)
Vi veri universum vivus vici
Avatar de Usuario
Barajas
 
Mensajes: 209
Registrado: Mar Nov 16, 2010 12:06 am

Re: Ejecutable generico...

Notapor hugoruscitti » Mié Ago 01, 2012 2:11 pm

Wow!!, buenisimo barajas!!

Este fin de semana voy a actualizar el artículo y hacer algunas pruebas mas, a ver
si llegamos a liberarlo!.

Ah, otra cosa: ¿Se empaqueta Qt también?
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Re: Ejecutable generico...

Notapor Barajas » Mié Ago 01, 2012 10:16 pm

hugoruscitti escribió:Este fin de semana voy a actualizar el artículo y hacer algunas pruebas mas, a ver
si llegamos a liberarlo!.

Ah, otra cosa: ¿Se empaqueta Qt también?


Sí, de hecho, basta con solo importar pilas y son empaquetadas todas sus dependencias (pygame, box2d, pyqt...) :D

Pero, no de la misma forma los recursos de pilas, es decir, las imágenes y sonidos :( .

De hecho, sugiero algunas modificaciones practicas a los archivos:

a setup.py:

# -*- coding: cp1252 -*-
from cx_Freeze import setup
from cx_Freeze import Executable

#las opciones "extras"
build_exe_options = {
"packages": ["pilas"],
#lo anterior importa a pilas y a sus dependencias, sin necesidad de mandarlo llamar en el script
"optimize" : 2,
# optimiza lo máximo posible el ejecutable
"compressed":True,
# esto pone las librerías utilizadas en un archivo zip, lamentablemente no sucede lo mismo con las dlls de las mismas librerías....
}

exe = Executable(
script="cargador.py",
base = 'Win32GUI',
targetName = "Cargador.exe",
compress = True,
copyDependentFiles = True,
appendScriptToExe = False,
appendScriptToLibrary = False,
icon = None
)

setup(
name="Cargador",
version="0.1",
options = {"build_exe": build_exe_options}, #aquí ponemos las opciones extras...
description="Un cargador de juegos",
executables=[exe],
)


Y como me di cuenta de que pueden existir infinidad de otros errores a parte de que no pueda cargar los archivos, (errores de sintaxis, falta de algún recurso de imagen o sonido... ) realice la siguiente modificación al archivo cargador.py (por la cual me di cuenta de que no importaba las imágenes de pilas... :roll: ) :

# -*- coding: cp1252 -*-
import tkMessageBox
import Tkinter
import imp
import sys
try:
imp.load_source("__main__", "run.py")
except IOError:
root = Tkinter.Tk()
root.withdraw()
#utilizo sys.exc_info()
#lo que hace sys.exc_info() es mandar información más especifica de cualquier tipo de error ocurrido
MENSAJE_ERROR = """Lo siento pero a ocurrido el siguiente error:
""" +str( sys.exc_info()[1])
tkMessageBox.showerror("Error", MENSAJE_ERROR)


Creo que eso seria todo por el momento :D
Vi veri universum vivus vici
Avatar de Usuario
Barajas
 
Mensajes: 209
Registrado: Mar Nov 16, 2010 12:06 am

Re: Ejecutable generico...

Notapor hugoruscitti » Lun Ago 06, 2012 8:16 pm

No tuve tiempo de verlo el fin semana barajas.... mil disculpas, lo voy a volver a agendar
para este finde y aviso.

Saludos!
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Re: Ejecutable generico...

Notapor hugoruscitti » Mié Ago 15, 2012 6:25 pm

Avancé un poco mas con el artículo y el repositorio:

http://hugoruscitti.github.com/2012/07/ ... os-python/
https://github.com/hugoruscitti/cargador_de_juegos

¿Cómo lo ves barajas?
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Re: Ejecutable generico...

Notapor Barajas » Jue Ago 16, 2012 12:39 am

hugoruscitti escribió:Avancé un poco mas con el artículo y el repositorio:

http://hugoruscitti.github.com/2012/07/ ... os-python/
https://github.com/hugoruscitti/cargador_de_juegos

¿Cómo lo ves barajas?


Pues va bastante bien :D
Vi veri universum vivus vici
Avatar de Usuario
Barajas
 
Mensajes: 209
Registrado: Mar Nov 16, 2010 12:06 am

Re: Ejecutable generico...

Notapor hugoruscitti » Lun Ago 20, 2012 5:44 pm

Listo!!!,

Terminé el artículo, a ver que les parece:

http://hugoruscitti.github.com/2012/08/ ... os-python/
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Re: Ejecutable generico...

Notapor Barajas » Mar Ago 21, 2012 4:36 am

Me parece perfecto :D
Vi veri universum vivus vici
Avatar de Usuario
Barajas
 
Mensajes: 209
Registrado: Mar Nov 16, 2010 12:06 am


Volver a Sugerencias e ideas

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados