Páginas

viernes, 18 de octubre de 2013

Dia 1: sobre la planificación de un RPG local: El tipico problema de las camaras ocultas de VideoMatch

Saludame saludate, ah... no?  Silver ser reiría...

Con propósitos de documentación, inclusive si es posible (pero no es el objetivo) que pueda para muchos ser didactico, escribiré así como que entradas respecto al desarrollo de lo que vendría siendo un juego en RPG para 4 jugadores Locales (No online) sea de paso sabido: Local != Online sin embargo no necesariamente implica que Local = conexion en red (LAN), concluimos así el objetivo principal del juego que es: Realizar un juego para 4 jugadores, que pueda ser jugado (valga la redunancia) en una PC de escritorio. Y para más claro: NO LAN, NO Online, NO red, NO conexiones.

FAQ inecesario tendencioso tomador de bebidas encafeinadas:

-Cómo surgio el proyecto?
 Un dia común como vos como yo, surge un dia 27 de Septiembre de 2013 una propuesta por parte de Escuarenics (Copyright)  para ampliar la franquicia codiciosa y avara de Fainal phantasi, es así como surge un proyecto sin precedentes en el mundo de los videojuegos :D
Okno, un dia (like a Cat) postee en Facebook una publicación pidiendo a los Dioses de la programación una idea como para hacer (se hacía el pr4h después de lo que venía siendo estudiar C/C++) y bueno, le pintó la nostalgia de hacer alguito en Game Maker.... (hereje). Así llegó Kurt que me propuso hacer un juego para 4P del tipo RPG.

-Ya tenés planeado el juego?
Ya sabeis lo dizen por losh mediosh... vuestra media naranja sois vosotros mismos, ahora casaos con vustro propio ego de mierd* (?)
ah... digo, no---

- Cuba o Africa?
Ya tu sabeh mi negro... Cuba libreeee!

-Sea dicho de paso este FAQ no aporta nada, ni siquiera es un FAQ, fuck! -



Bien, ahora planteando el tema de la jugabilidad el primer inconveniente fue meter un jugador independiente en un lugar X distinto de los demás.
¿Qué quieres decir con esto? D:
- Quiero decir que por cada jugador (quizá algo obvio) se empleará una camara independiente. Ahora si un jugador por si mismo quisiera entrar en una casa, tienda, casa tienda, tienda casa, casienda, tiendasa,....(?) habría que plantearse primero, que no se puede cambiar de room puesto que todos los jugadores forman parte del juego actual, si hicieramos eso moveriamos todos los jugadores a un room diferente, como no queremos que succeda.
Una solicion para dicho inconveniente fue plantearme el realizar un espacio reservado para cada jugador, un espacio donde esté la casa a donde se ingresa. El tamaño debería ser <= Tam_max_ed, donde Tam_max_ed es el tamaño del edificio más grande.



Luego surge un segundo inconveniente (respecto al rendiemiento), nos preguntamos entonces ¿Es necesario hacer un apartado exclusivo para cada jugador? Si lo pensamos bien, no realmente, porque todos podrían entrar en una misma casa, es más si hay una cantidad  de casa menor a la cantidad de jugadores en verdad no tendría mucho sentido, puesto que los jugadores podrían compartir (en todo caso) un espacio reservado. Pero esto complicaría un poco la administración de espacios reservados, calcularlos por room respecto a si hay o no cantidad de jugadores <= cantidad de edificios (casas)
Eso, a saber es desviar nuestro punto de programación a algo innecesario, para lo que viene siendo "el pez gordo".

Hasta ahora esto es todo XD me canse de escribir, otro dia ampliaré mas el concepto.

 

sábado, 31 de agosto de 2013

Programando una IA de naves


 Hola GATONAUTASSSSSSSSSSSSSSSsssssssssssssssssssssssssss ah, re que nunca escribia el sucio...

Luego de haber retomado lo que venia siendo la programación dentro de un IDE como es el Game Maker, que lo había dejado años atrás porque ya no era lo que era siendo que dejo de ser lo que solía ser cuando era lo que realmente era , no siendo lo que uno espera de ser lo que era(?) ah.

Eeeeeeeen, fin *german reference* lo que pasa es que uno anda asi como que perdido con la facultad y toda la pesca ( y no cuenta como excusa, en la Rusia Sovietica las computadoras te programan a ti).


Programar no es lo mismo que antes, antes estaba al reverendo pedo TOO MUCH! XD y bueno que querés las vacaciones daban para clavarse... altos algoritmos aaaaah picaron!

Programame programate, alica, alicate

Lo que sea... viendo la venida de lo que será la nueva GIA4, una leyenda entre otras leyendas... no sé quien fue el Semi Dios que se dio el lujaso de hacer una nueva... porque desde la GIA2 a la GIA3 pasó creo yo mucho tiempo, o eso me pareció. Un excelente trabajo de Ciberman en cuanto al concepto de juego... yo la verdad para cosas novedosas no soy un As.
   Esto nos lleva  a preguntarnos quien diseñó la GIA4? o quienes, si fuera el caso.... pero algo que mas intriga creo yo es de QUÉ se va a tratar... ya cubrieron naves cenitales, Tetris! y plataformas. ¿Qué depara la GIA4? RPG's? No sé como que no cuadra... o la propuesta del autoritario Metal Mario? Una GIA de peleas a lo KOF?  [Aunque bueno, no todo el merito es de Metal Mario, sino de... hmmm.... no me acuerdo pero el tipo que la propuso, bastante original :D]

Y bue, ya me fuí por las ramas *se prende alta tuca*... viendo la llegada de la GIA4 me surgió probar mis habilidades en Game Maker, que resultaron ser una nefastes XD de las cosmicas exponenciales bananasticas ._.)
Como sea... intenté recrear la GIA1 la batalla de naves, haciendolo todo desde 0 con funciones trigonometricas y tal.... llegué conceptualmente a hacer 2 hojas de tería sobre como mover la nave, calculos y un monton de cosillas trigonometrísticas:

La foto-certificada, que no se ve una put* mierd* LOL


Comencé haciendo algo sencillote, una funcion de SENO/COSENO en la que la nave rota alrededor del cursor:

._.) no aparenta nada hasta ahora


Lo que hacía era orbitar alrededor del punto del mouse, asi como un droide rotatorio, Lo que se ven de colores, son los que determiné como puntos de area peligrosa, es decir dentro de esos puntos la nave puede ser dañada con cualquier proyectil, no es tan general, sino que mide un radio de 32 o 16, aprox. un calculo asi como que estimativo (se re iba al carajo):

acá se nota mas la rotacion, menos croto
Finalmente le decidí dar un toque matemático (al pedo) porque estaba al pedo... valga la redundancia, LOL


caretear es gratis, por eso lo hago =D

A la final todo quedó RE armado, hacía todo lo que tenía que hacer, se iba hacia el punto de salvataje si determinaba que debía esquivar, entonces rotaba, estaba todo perfecto!
Lo que falló fue cuando el punto cambió a un proyectil variable, como un disparo, el punto de rotación se calculaba siempre y nunca era relativo, sino mas bien absoluto, hacía saltos en la pantalla, HORRIBLES parecía que estaba re baqueteado con cocaína el piloto... volaba mal la nave al carajo tendiendo al infinito y más allá.

zopeda de mi IA

Mi IA no llegaba más que unas cuantas lineas, unas... 80 (ah se hacía el humilde)... na, 80 no es nada, programé algo tirando a las 400 lineas si no me equivoco pero en otro lenguajejejejejejejejeje(?  *estaba re duro*

Bueno, no sé en que fallé, pero lo más seguro es que sea en la cohesión (ah, usaba terminos de la universidad, ewe) entre los distintos estados, 2 dependientes de 1 ya es demasiado.... dos modulos que dependan de uno es bastante, y más si son así como que similares: Esquivar de rotar, pero puede parecer similar.... lo que sea, a mi se me hace que fue eso, lo de andar anidando como negro a los cartones, lo que para mi fueron los estados a las funciones.... ah, re racista era? nee, eso es cosa de negros (?)

Bueno, como lección de vida, no importa qué tan documentado este su juegorl, siempre habrá un reverendo problema triple joputa que te joda lo que hiciste todo el santo dia, la re put* madre que los parió
:D los quiero ^_^

Recuerden... programar es de vikingos y de gatos con Notebooks! hasta la próxima :3



martes, 26 de marzo de 2013

Simpletron


Hola a todos los gatonautas que se gastan en leer la pavadas que escribo acá, porque de hecho, no lo hago a menudo.... no desde EL INCIDENTE D:
 Hacía años que no programaba algo en serio, y mucho menos juegos en Game Maker, porque... no se, vos viste cuando la magia se va... se va U__U

Hoy me di cuenta de que tan mal estaba cuando no podía poner a punto un for estilo fila y columna pero con un solo arreglo de 100 elementos.
 Y es que de eso trata simpletron! Una maquina SIMPLEtron capaz de hacer calculos basicos, y que además si se tiene un poco de imaginación puede ejecutar pequeños programas ciclicos para sacar promedios, etc, etc.

Simpletron es una maquina que entiende palabras especificas, y además trabaja secuencialmente de arriba hacia abajo. Una palabra en simpletros se entiende como un codigo numerico de cuatro cifra (veremos esto mas adelante) 
Simpletron cuenta con unos pocos comandos, enlistar! :

LEER = 10 lee una valor desde el teclado y la introduce en una celda de memoria.

ESCRIBIR = 11 , muestra en pantalla el valor almacenado en una celda especifica de memoria

CARGAR = 20  carga en la memoria temporal un valor indicado por la celda de memoria

ALMACENA = 21 guarda un valor dentro de una celda especifica de memoria

SUMA = 30 suma el valor que esta actualmente en la memoria temporal al que esta en la celda de memoria especificada y guarda el resultado en la memoria temporal

RESTA = 31 resta el valor que esta actualmente en la memoria temporal al que esta en la celda de memoria especificada y guarda el resultado en la memoria temporal

DIVIDE = 32 divide el valor que esta actualmente en la memoria temporal con el de la celda de memoria especificada, guarda el resultado en la memoria temporal

MULTIPLICA = 33 multiplica el valor que esta actualmente en la memoria temporal con el de la celda de memoria especificada, guarda el resultado en la memoria temporal

BIFURCA = 40 bifurca a la localidad de memoria especificada

BIFURCANEGATIVO = 41 bifurca a la localidad especificada, solo si el valor de la memoria temporal es negativo

BIFURCACERO = 42 bifurca a la localidad especificada, solo si el valor de la memoria temporal es igual a 0

PARAR = 43 finaliza el programa

MOSTRARREGISTROS = 50 muestra todos los registros y estados de memoria


el funcionamiento de Simpletron es bastante basico, trabaja con dos memorias:
Una memoria temporal, y una memoria de almacenamiento(la cual contiene 100 slots)
Por Cada comando que se escribe para simpletros, se ocupará un slot de memoria, tambien por cada valor que guardemos.

Una palabra en Simpletron se entiende como un codigo numerico de cuatro cifras, ej: 1023
Esta palabra se separa en dos partes, 10 y 23: 1023
Los dos primeros digitos indican que funcion va a realizar Simpletron, en este caso con 1023, los primero dos digitos, son 10, es decir que llamamos al comando de escritura.
Luego la segunda parte indica la celda de memoria que especificamos, en este caso 23.
Entonces con esto: 1023 estamos diciendo que vamos a leer un valor desde el teclado y lo vamos a guardar en la celda 23

Supongamos que queremos sumar dos numeros: 
Primero cargamos el primer numero 1009: cargamos el primer numero en la celda 09
Segundo cargamos el segundo numero 1010: cargamos el segundo numero en la celda 10
Ahora para Sumarlo, primero debemos cargar uno de los dos numeros a sumar en la memoria temporal, como lo dice la funcion, para ello usamos el comando 20 seguido del primer numero que queremos sumar
es decir: 2009, entonces ya lo tenemos cargado.
Luego para sumar usamos el comando de suma, que es 30 y seguido colocamos la celda de memoria que vamos a sumarle, es decir 3010, luego el resultado se almacena nuevamente en la memoria temporal.
Entonces tenemos:
1009
1010
2009
3010

Para que un programa termine correctamente, se emplea el comando 43, es indiferente si colocamos 4300, como si fuera 4398, puesto que solo interesa la primera parte, el 43.
Si, un programa termina con un error fatal, ya sea division por cero o desbordamiento de memoria (a saber, que solo pueden almacenarse numeros de 4 digitos), en ese caso se mostrará los registros para que puedas verificar cuales fueron los errores.
Bifurcar, significa ir a un punto del programa en especifico, tomando el ejemplo de la suma:
00 1009
01 1010
02 2009
03 3010
si queremos volver a ingresar un valor en la celda 09, nos bastará con usar el comando de bifurcacion 40, de la siguiente forma 4009 entonces esto hará que se ejecute el programa desde dicha posicion, puesto que como dije es un programa secuencial.

Luego de escrito el programa, para que se ejecute hay que colocar el centinela 99999


Este es un ejemplo del uso del comando de lectura:
Note que para ejecutar el programa debe tipear el centinela 99999
Se puede apreciar un "? 3" que sería el ingreso del comando 1003




Como se puede apreciar ocurre una advertencia de comandos inexistentes cuando se leen comandos que no corresponde a ninguna funcion en simpletron.




Aqui podemos apreciar una division por cero, lo cual despliega los registros, es decir, esto es un error fatal:

 Finalmente aquí apreciamos un programa que sirve para determinar el valor más grande, haciendo uso de BIFURCANEGATIVO, solo basta analizar un poco las funciones y los 4 digitos para entenderlo:




Eso es todo amigos :D si quieren hacer uso de esta simple pero poderosa herramienta (que de hecho no sirve para mucho XDD ) les dejo el link:


Saludos nuevamente Gatonautas!!!!!