From the category archives:

Adobe Flash

Otro juego de fútbol multiusuario en el cual colaboré con la programación del lado del servidor. Lo interesante que tuvo este proyecto es que había bots que jugaban junto con el jugador y en su contra utilizando agentes y máquinas de estado.


Juego contra la computadora
Juego contra la computadoraLobby del juegoProgramé en mi laptop, pero con monitor y teclado

Otra cosa que me gustó de este proyecto es que apliqué "nuevas técnicas" que me permitieron desarrollarlo en tiempo récord desde cero.

{ 3 comments }

Programación Adobe Air 2.0 en Linux

by Jorge Machin on July 26, 2010 · 0 comments

in Adobe Flash, Linux

Al igual que las aplicaciones Flex, es posible desarrollar en Linux aplicaciones de escritorio en AIR. En este post pongo un ejemplo y una miniguía de instalación.

Instalación

Primero se necesita bajar e instalar la versión 4.1 de Flex, la cual se puede obtener de http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex4sdk en forma de un archivo zip llamado flex_sdk_4.1.zip

mkdir flex
cp flex_sdk_4.1.zip flex
cd flex
unzip flex_sdk_4.1.zip

Desafortunadamente la versión multiplataforma de Flex, aunque ya incluye una versión de Air, está rota y aparentemente sólo funciona para Windows y Mac. Pareciera que a los señores de Adobe se les olvidó Linux en el caso de Air; por lo que es necesario descargar el SDK de AIR y desempaquetarlo sobre el directorio donde instalamos Flex.

Entonces, bajamos Air 2.0 de http://www.adobe.com/cfusion/entitlement/index.cfm?e=airsdk y sobre-escribimos el sdk de AIR que descargamos:

cp AdobeAIRSDK.tbz2 flex
cd flex
bunzip2 AdobeAIRSDK.tbz2
tar -xvf AdobeAIRSDK.tar

Sinceramente no sé si es el método correcto de arreglar los errores de Adobe, pero fue lo primero que se me ocurrió y me funcionó.

Escribiendo un programa de prueba

Como ejemplo de una aplicación creamos el programa mxml llamado Test.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication  xmlns:fx="http://ns.adobe.com/mxml/2009"
                        xmlns:s="library://ns.adobe.com/flex/spark"
                        xmlns:mx="library://ns.adobe.com/flex/mx">

</s:WindowedApplication>

El cual compilamos con el comando:

bin/mxmlc -library-path+=frameworks/libs/air Test.mxml

Ahora creamos un archivo que nos describe la aplicación AIR, al cual llamamos Test-app.xml

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<application xmlns="http://ns.adobe.com/air/application/2.0">

<!-- Adobe AIR Application Descriptor File Template.

        Specifies parameters for identifying, installing, and launching AIR applications.

        xmlns - The Adobe AIR namespace: http://ns.adobe.com/air/application/2.0
                        The last segment of the namespace specifies the version
                        of the AIR runtime required for this application to run.
                       
        minimumPatchLevel - The minimum patch level of the AIR runtime required to run
                        the application. Optional.
-->

        <!-- A universally unique application identifier. Must be unique across all AIR applications.
             Using a reverse DNS-style name as the id is recommended. (Eg. com.example.ExampleApplication.) Required. -->

        <id>Test</id>

        <!-- Used as the filename for the application. Required. -->
        <filename>Test</filename>

        <!-- The name that is displayed in the AIR application installer.
             May have multiple values for each language. See samples or xsd schema file. Optional. -->

        <name>Test</name>

        <!-- An application version designator (such as "v1", "2.5", or "Alpha 1"). Required. -->
        <version>v1</version>

        <!-- Description, displayed in the AIR application installer.
             May have multiple values for each language. See samples or xsd schema file. Optional. -->

        <!-- <description></description> -->

        <!-- Copyright information. Optional -->
        <!-- <copyright></copyright> -->

        <!-- Publisher ID. Used if you're updating an application created prior to 1.5.3 -->
        <!-- <publisherID></publisherID> -->

        <!-- Settings for the application's initial window. Required. -->
        <initialWindow>
                <!-- The main SWF or HTML file of the application. Required. -->
                <!-- Note: In Flash Builder, the SWF reference is set automatically. -->
                <content>Test.swf</content>

                <!-- The title of the main window. Optional. -->
                <!-- <title></title> -->

                <!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
                <!-- <systemChrome></systemChrome> -->

                <!-- Whether the window is transparent. Only applicable when systemChrome is none. Optional. Default false. -->
                <!-- <transparent></transparent> -->
                <!-- Whether the window is initially visible. Optional. Default false. -->
                <!-- <visible></visible> -->

                <!-- Whether the user can minimize the window. Optional. Default true. -->
                <!-- <minimizable></minimizable> -->

                <!-- Whether the user can maximize the window. Optional. Default true. -->
                <!-- <maximizable></maximizable> -->

                <!-- Whether the user can resize the window. Optional. Default true. -->
                <!-- <resizable></resizable> -->

                <!-- The window's initial width in pixels. Optional. -->
                <!-- <width></width> -->

                <!-- The window's initial height in pixels. Optional. -->
                <!-- <height></height> -->

                <!-- The window's initial x position. Optional. -->
                <!-- <x></x> -->

                <!-- The window's initial y position. Optional. -->
                <!-- <y></y> -->

                <!-- The window's minimum size, specified as a width/height pair in pixels, such as "400 200". Optional. -->
                <!-- <minSize></minSize> -->

                <!-- The window's initial maximum size, specified as a width/height pair in pixels, such as "1600 1200". Optional. -->
                <!-- <maxSize></maxSize> -->
        </initialWindow>

    <!-- We recommend omitting the supportedProfiles element, -->
    <!-- which in turn permits your application to be deployed to all -->
    <!-- devices supported by AIR. If you wish to restrict deployment -->
    <!-- (i.e., to only mobile devices) then add this element and list -->
    <!-- only the profiles which your application does support. -->
    <!-- <supportedProfiles>desktop extendedDesktop mobileDevice extendedMobileDevice</supportedProfiles> -->

        <!-- The subpath of the standard default installation location to use. Optional. -->
        <!-- <installFolder></installFolder> -->

        <!-- The subpath of the Programs menu to use. (Ignored on operating systems without a Programs menu.) Optional. -->
        <!-- <programMenuFolder></programMenuFolder> -->

        <!-- The icon the system uses for the application. For at least one resolution,
                 specify the path to a PNG file included in the AIR package. Optional. -->

        <!-- <icon>
                <image16x16></image16x16>
                <image32x32></image32x32>
                <image48x48></image48x48>
                <image128x128></image128x128>
        </icon> -->
       <!-- Whether the application handles the update when a user double-clicks an update version
        of the AIR file (true), or the default AIR application installer handles the update (false).
        Optional. Default false. -->

        <!-- <customUpdateUI></customUpdateUI> -->

        <!-- Whether the application can be launched when the user clicks a link in a web browser.
        Optional. Default false. -->

        <!-- <allowBrowserInvocation></allowBrowserInvocation> -->

        <!-- Listing of file types for which the application can register. Optional. -->
        <!-- <fileTypes> -->

                <!-- Defines one file type. Optional. -->
                <!-- <fileType> -->

                        <!-- The name that the system displays for the registered file type. Required. -->
                        <!-- <name></name> -->

                        <!-- The extension to register. Required. -->
                        <!-- <extension></extension> -->

                        <!-- The description of the file type. Optional. -->
                        <!-- <description></description> -->

                        <!-- The MIME content type. -->
                        <!-- <contentType></contentType> -->

                        <!-- The icon to display for the file type. Optional. -->
                        <!-- <icon>
                                <image16x16></image16x16>
                                <image32x32></image32x32>
                                <image48x48></image48x48>
                                <image128x128></image128x128>
                        </icon> -->

                <!-- </fileType> -->
        <!-- </fileTypes> -->

</application>

Finalmente ejecutamos la aplicación con:

adl test.mxml

Algunos detalles...

Para usar aplicaciones que tengan transparencia es necesario que el escritorio la soporte; por ejemplo usando compiz.

{ 0 comments }

El cubo volador

by Jorge Machin on July 14, 2010 · 3 comments

in 3D, Adobe Flash, C/C++, Personal, Portafolio, Proyectos, Unity, videos

Una pequeña prueba de concepto para agregar figuras 3D a videos para juegos y otras aplicaciones.

Por supuesto que el guión no esta basado en algo que me haya pasado :)

{ 3 comments }

Burundis 2000

by Jorge Machin on April 21, 2010 · 0 comments

in Adobe Flash, Arqueología Machinesca, Personal, Portafolio

Este es un sitio que me tocó administrar por dos años en una época muy difícil. Las máquinas eran Pentium III a 500 Mhz y los proyectos de software libre apenas empezaban a tomar vuelo a nivel industrial. Esto se traducía a que el software y el hardware era muy inestable especialmente cuando se llevaba a sus extremos. Aunque uno tuviera mucho cuidado no eran raras las fallas y caídas de los servidores debido a lo novel que estaban los desarrollos. Me tocó experimentar con la beta de ReiserFS para soportar "grandes" cantidades de directorios y de manera rápida. Ahora ya son comunes los sistemas de archivo basados en journaling e incluso las configuraciones por defecto pueden aguantar una buena carga.


Comenzaba a usarse el formato de los blogs tan común ahora.
Comenzaba a usarse el formato de los blogs tan común ahora.

Los días de San Valentín teníamos un tráfico impresionante. La situación se empeoraba porque muchos sitios de correos gratuitos se caían y bloqueaban las multiples colas de correo que levantavamos.

La ventaja... en esos tiempos había mucho menos spam.

{ 0 comments }

Revisando memory-sticks abandonados encontré un video de noviembre de 2006 donde grababa una prueba de como me conectaba desde mi máquina XP a mi servidor Linux con KDE y Fedora Core 6. Se puede ver como corría al mismo tiempo un video, un chat 3D escrito en Flash y un programa de demostración 3D de Irrlicht (OpenGL). Desafortunadamente es una de mis primeras pruebas y no transmitía el audio. Al poco rato de hacer este video configuré lo que me hacía falta.

Realmente el desempeño es muy bueno considerando que es una conexión remota. En parte es porque las ordenes OpenGL se corren localmente como se puede ver en el acercamiento a la terminal en la parte final del video.

{ 0 comments }