[Java] JFénix13 (PC, Android, iOS)

Franco77

THUSING
Hola gente! me alegra que esté haciendo un thread... hace tanto que no hago uno jajaja

Resulta que desde que @Lorex y @GoDKeR empezaron con su proyecto Fénix13 me dieron ganas de hacer algo relacionado a ésto.
Amo FénixAO y me pareció buenísimo que lo rearmen basándose en la versión 13 del AO.
Esto me vino muy bien para empezar otro proyecto a partir de éste ^^


Hace poco menos de un mes, empecé a hacer un cliente de FénixAO, tomando como referencia sus códigos.
Lo estoy escribiendo en Java, y uso la librería libGDX, la cual esta hecha para poder funcionar en PC (Windows, OS X, Linux), Android, iOS y HTML (aunque por el momento ni me preocupé por este último).


El proyecto es público y está en GitHub:

Mi idea por el momento no es hacer un servidor ni nada por el estilo, simplemente dejarles este cliente para lo que quieran, tratando de que sea lo más parecido a lo que están haciendo Facu y Loren con Fénix13, y que funcione con su servidor.
Además me sirve muchísimo ya que gracias a esto aprendí un montón de cosas y voy a seguir aprendiendo más, y bueno me gusta este desafío.

Me estoy ocupando bastante en dejarlo comentado explicando qué es cada cosa, y en un futuro cuando esté casi listo o terminado me gustaría explicarles de forma general como está organizado, como funciona, para que sirve cada clase, como agregar tal cosa, etc, así lo pueden aprovechar. Además aprenderían muchísimo :D.

Les dejo una foto:

Lo que ven es todo dibujado con OpenGL, la GUI que uso es una librería que viene dentro de libGDX, que se llama Scene2D (como verán en el PAD, o en los botones negros)
La skin de la gui es una que encontré por ahí, bastante fierita jajaja, mas adelante veré si me hago una mas linda.

Costó un poco al principio en pensar como organizar todo, y es más, sigo cambiando las cosas constantemente. Pero traté de dejarlo lo más flexible posible para que puedan agregar cosas de forma fácil.
Como ven no tiene mucho hasta ahora, solo renderiza los mapas y permite moverse (no le den bola a la capa 3 que esta corrida)


Así como lo ven, compila perfectamente en Android y se ajusta a cualquier pantalla. Mas bien al último quizás rearme todas las pantallas para Android e iOS, cambiando la jugabilidad y tamaño de las cosas, porque evidentemente es imposible jugarlo así :p


¿Cómo lo pruebo?
Bueno paso a explicarles de forma breve que tienen que hacer:

Instalar:
El JDK,los IDEs y Git son fáciles de instalar, si usan Windows solo tienen que darle todo a siguiente.

Si lo van a probar en Android, luego de instalar las SDK Tools, ir a la carpeta de instalación, entrar a la carpeta "tools" y ejecutar el archivo android.bat (o android.sh si estan en Linux).
Acá van a tener que marcar lo siguiente e instalar:
  • Android SDK Tools
  • Android SDK Platform-tools
  • Android SDK Build-tools (asegúrense de que sea la version 24, ni mas ni menos)
  • SDK Platform (API 24)
  • Google USB Driver
Si en las dos que lo especifiqué, no instalan exactamente las versiones que dije, no van a poder compilar, para eso van a tener que editar el archivo "android/build.gradle" en las líneas:
Código:
buildToolsVersion '24'
compileSdkVersion 24

targetSdkVersion 24
Para iOS la verdad que por el momento desconozco que hay que bajar, pueden buscar en la Wiki de libGDX

Una vez listo todo, pueden bajarse el proyecto desde el link (Download ZIP) o instalar Git y clonarlo en su compu (para simplemente ir actualizándolo después y no tener que bajarlo de nuevo)
Abren el CMD, se situan en una carpeta y simplemente hacen:
Esperan un rato hasta que se les baje todo y listo.

Si salen commits nuevos, para actualizarlo tienen que simplemente hacer:
En fin, van a tener ésto:

En la carpeta "core" van a encontrar todo el código.
En "android", "ios" y "desktop" van a encontrar las clases correspondientes para arrancar el juego desde cada plataforma.
En "android/assets" se encuentran todos los recursos del juego (esto es porque Android funciona así, tienen que estar ahí).
En "util" van a encontrar simplemente utilidades, como por ejemplo para crear los Texture Atlas, o un editor del archivo "fonts.ind" para agregar fuentes generadas con el CBFG.


Una vez listo, abren el IDE e importan el proyecto... yo se los voy a mostrar con el IntelliJ IDEA.

Van a importar proyecto:


Seleccionan el archivo "build.gradle" de la carpeta raíz:


En la próxima pantalla dejen todo como está, solo asegúrense que tienen seleccionado su JDK.. si no les aparece van a tener que revisar su variable de entorno JAVA_HOME


Después de esto les va a empezar a bajar todas las librerías y cosas necesarias.
Una vez terminado les aparece esto:


En donde pueden desmarcar lo que no vayan a usar (si no tienen las SDK Tools, desmarquen Android, xq les va a joder el Gradle después para sincronizar... con el de iOS no hay problema, pueden dejarlo y no les va a joder)

Acá le dan de nuevo a OK:


Y listo, ya van a tener las cosas cargadas....
Pero es muy importante que hagan esto:

Yo modifiqué ligeramente la librería de libGDX, específicamente en 2 clases, para poder darle color a cada vértice de un cuadrado por separado (podría usar shaders mas adelante y me evito la negrada que hice, pero en fin, funciona muy bien :p)
Por lo que tienen que reemplazar las que se les bajo a su PC, por las que yo modifiqué.
Las que modifiqué están en la carpeta "util/libs"

Para esto vayan a:
File > Project Structure... > Libraries > gdx-1.9.5

Y borren la referencia a esos dos JARs, y agreguen la de los JARs que están en "util/libs"

Si usan android, indíquenle cual es su compilador:
En la misma ventana de Project Structure, van a Project y cambian el JDK de java por el SDK de Android... (les va a permitir de todas formas compilar en ambos cuando quieran, sin cambiarlo)



Ahora que hicimos estos cambios, sincronicen de nuevo el proyecto de Gradle:


Ahora solo queda agregar la configuración para que pueda compilar:


El perfil de ejecución para android ya lo tienen creado, (o lo pueden crear fácilmente, quedándoles así):


Por último les queda crear el perfil para Desktop, para q lo puedan probar en sus PCs:


Y les tiene que quedar así:


Y LISTO!! le dan al bendito botón verde de Run, según lo que elijan (Desktop o Android) y les debería compilar sin problemas.


Uff se me hizo largo el thread jajaja, bueno eso, es para que vean que no es tan complicado y los que no saben puedan probarlo tranquilamente.


Bueno, en fin, espero que les guste y bueno, seguiré actualizandolo mientras pasen los días.
Quiero agradecer a los que hacen el proyecto de Fenix13, porque gracias a ellos yo puedo hacer esto :D

Saludos!!!
 

Dr. GoDKeR

El Rey y el As
Miembro del equipo
Administrador
Developer
Moderador de RRPP
Moderador de AO
Moderador de Tecnología
Moderador de Entretenimiento
Moderador de Diseño
Especialista de RRPP
Especialista de Entretenimiento
Especialista de Tecnología
Especialista de Argentum
Especialista de Diseño
Buenísimo!
 

Santty.-

Legendario Inmortal Lvl 2
Ayer tuve el agrado de probarlo en un Moto G primera generación y andaba de 20 a 30 FPS, muy bueno para el modelo de cel. Es una muy buena base
 

Franco77

THUSING
Ayer tuve el agrado de probarlo en un Moto G primera generación y andaba de 20 a 30 FPS, muy bueno para el modelo de cel. Es una muy buena base
Buenisimo!
En Android es mas delicada la cosa.. Hay que tener mas cuidados para q no se te vaya al carajo el rendimiento :p
De todas formas mas adelante voy a enfocarme más en eso y vez como optimizarlo ^^
Por ahora carga todos los texture atlas de una y te fuma la RAM..

Lo probé en un samsung J7 y a 1024x768 píxeles tira 50 fps ^^
 

Agushh

MR BROWNSTONE
Buenísimo genio!, voy a estar leyendo a ver si aprendo algo de esto. Un abrazo y gracias por compartir.
 

Franco77

THUSING
Que buena onda, córdoba! No sabía que ya ibas tan avanzado en esto :p. Congrats.
Jajaj le falta muchísimo igualmente ehh? pasa que estuve muucho tiempo organizando y pensando en como hacer el esqueleto digamos, todavia sigo lidiando con eso :p
Me estoy tomando mi tiempo en que quede bien organizado, asi q eso me hace ir un poco lento. De todas formas mas adelante iré midiendolo al proyecto, ver que cosas ya estan hechas, que faltan, en cuanto las terminaría, etc.

Buenísimo genio!, voy a estar leyendo a ver si aprendo algo de esto. Un abrazo y gracias por compartir.
Genial! eso me agrada mucho! que se pongan a verlo y puedan aprovecharlo.
 

guidON.-

Newbie Lvl 2
Estuve viendolo y parece copado. Me gustaria contribuir, lo seguis trabajando?

Por si alguno le pasa, tuve problemas cambiando el jar y tuve que reemplazarlo en la cache de gradle. Por algun motivo me quedaba compilado el jar original.
 

Franco77

THUSING
Estuve viendolo y parece copado. Me gustaria contribuir, lo seguis trabajando?

Por si alguno le pasa, tuve problemas cambiando el jar y tuve que reemplazarlo en la cache de gradle. Por algun motivo me quedaba compilado el jar original.
Buenas! sisi hace mucho me di cuenta de eso, que se necesita reemplazarlo en la cache de gradle... Iba a actualizar el post y dsp me olvidé :p

Mirá.. momentaneamente dejé de hacerlo por falta de tiempo (la facu me mata :/)... de todas formas mis ganas de seguirlo nunca se fueron, es mas, me motiva muchísimo esto.
Me encantaría eso! de que contribuya quien quiera!, aunque me gustaría antes reorganizar un poquito el código y dejar un esqueleto.. armar un diagrama o algo y no dejar todo tan en la nada.
Te voy a tener en cuenta, podes preguntarme lo que quieras y hacer lo que quieras con el codigo ^^
 

guidON.-

Newbie Lvl 2
Tal cual. Ayer forkie el repo y estuve haciendo algunos retoques mientras entendia el codigo. Tampoco tengo mucho tiempo, entre laburo y facu, pero siempre que tengo un rato libre me copa hacer algo, asi que te voy a estar jodiendo cuando lo tenga.
 

AlienR

Newbie Lvl 1
Buenisimo capo estamos muy alineados, en este momento estoy haciendo casi lo mismo aunque por cuestiones de labuiro hace tiempo no estoy pudiendo meter una linea de codigo pero me parece la direccion que mas va a aportar al juego

lo que no logro resolver son temas como las conversaciones en movil y otras cuestiones filosoficas
en fin
mucha suerte!
 

Franco77

THUSING
Tal cual. Ayer forkie el repo y estuve haciendo algunos retoques mientras entendia el codigo. Tampoco tengo mucho tiempo, entre laburo y facu, pero siempre que tengo un rato libre me copa hacer algo, asi que te voy a estar jodiendo cuando lo tenga.
Buenísimo, incluso ustedes me motivan a buscar mas tiempos libres para avanzar jajajaj.
Dale dale! Preguntame y hablemos de lo que quieras!

Buenisimo capo estamos muy alineados, en este momento estoy haciendo casi lo mismo aunque por cuestiones de labuiro hace tiempo no estoy pudiendo meter una linea de codigo pero me parece la direccion que mas va a aportar al juego

lo que no logro resolver son temas como las conversaciones en movil y otras cuestiones filosoficas
en fin
mucha suerte!
Buenas! acabo de ver un thread tuyo del año pasado, nunca lo había visto y creo que está muy copado lo que estas haciendo!
Por lo que tengo entendido estas haciendo el cliente (unity) y servidor con NodeJS, basandote en la versión 13.0.
Esto de que hayan mas desarrollos me alegra mucho jajaja..

Si.. lo de las conversaciones es algo que hay que pensarlo bien... incluso hay varias cosas que todavía no me planteé y podrían ser un problema :p

Gracias y muchos éxitos para vos tmb, cualquier cosa preguntá.
 

AlienR

Newbie Lvl 1
Buenas! acabo de ver un thread tuyo del año pasado, nunca lo había visto y creo que está muy copado lo que estas haciendo!
Por lo que tengo entendido estas haciendo el cliente (unity) y servidor con NodeJS, basandote en la versión 13.0.
Esto de que hayan mas desarrollos me alegra mucho jajaja..

Si.. lo de las conversaciones es algo que hay que pensarlo bien... incluso hay varias cosas que todavía no me planteé y podrían ser un problema :p

Gracias y muchos éxitos para vos tmb, cualquier cosa preguntá.
Si lo habia planteado con unity al principio pero termine pasando a libgdx tambien por temas de coherencia de lenguaje, ya que estoy maquinando ideas locas con un servidor distribuido y las apis + servicios + productosse copan con java
sigamos la charla que parece interesante
 

Franco77

THUSING
Bueno aviso que hace unos días retomé el proyecto!
Reorganizé unas cuantas cosas, (todavía me queda algo)...
Y me puse a comentar casi todo, para que se entienda :p

Ahora estoy con el protocolo binario.. ya hice unas pruebas y funciona de 10 en android y escritorio, conectandose y traficando paquetes con el sv de FenixXIII.
Cuando tenga todo algo más sólido subo los commits!

Saludos!!
 
Arriba