Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual para Aprender RGSS by MakerJ
Manual para Aprender RGSS by MakerJ
Obra bajo licencia Creative Commons 3.0, totalmente prohibida su distribucin sin reconocer
al autor del mismo (MakerJ).
Queda totalmente prohibida su edicin sin permiso expreso del autor. Prohibido su uso con fines comerciales.
QUE ES RGSS?
RGSS son las siglas de Ruby Scripting System o lo que es lo mismo: Sistema de Scripting para juegos con Ruby.
No voy a explicar que es un lenguaje de programacin porque parto de la base de que sabeis que es, pasemos a
explicar que es el lenguaje de programacin Ruby.
-Ruby es un lenguaje multiplataforma, interpretado y orientado a objetos. Fue creado por Yukihiro
Matsumoto en 1993, como un lenguaje facilitador de trabajo, que divirtiera al programador a la
hora de hacer su trabajo.
Representa los comentarios. stos son ignorados por Ruby. Solo sirven de gua al
programador.
Ejemplos: # Comentario, =begin Comentario de muchas lneas =end
Violeta:
ELEMENTOS DE PROGRAMACIN.
-VARIABLES:
En el editor del Rpg Maker es posible insertar variables en un evento y aunque son un poco limitadas el concepto es
ms o menos el mismo que en programacin:
Las variables son estructuras de datos que, como su nombre indica, pueden cambiar el contenido a lo largo de la
ejecucin de un programa. Como ya sabemos, las variables almacenan y devuelven valores. Es posible (o no)
modificar su valor, pero nunca el tipo de variable.
Pasemos a ver los diferentes tipos:
Globales: Una variable global en Ruby (y en la totalidad de los lenguajes de programacin),
significa que tiene un alcance total en el programa. Una variable global puede ser modificada
desde cualquier parte del programa.
Las variables globales se diferencian de las dems porque comienzan con el smbolo del dlar
($) antes del nombre original.
Ejemplos: $game_system, $game_party, $variable_global
De clase: Las variables de clase en Ruby, significa que tiene un alcance solo dentro de la clase
donde fue asignada. Una variable de clase puede ser modificada dentro de cualquier metodo de
la misma clase, pero no desde otra clase.
Se diferencian porque comienzan con el smbolo arroba (@) antes del nombre original.
Ejemplos: @window_gold, @actor, @variable_de_clase
Locales/De mtodo: Las variables locales o de mtodo, en Ruby (y en la totalidad de los
lenguajes de programacin), significa que tiene un alcance solo dentro del mtodo en que fue
asignada. No puedes acceder a ella ni por diferentes mtodos ni por diferentes clases, solo
dentro de su mtodo.
Se usa sobre todo para contadores y variables que sabemos que nunca las vamos a usar fuera de
ese mtodo.
Se diferencian porque NO comienzan con ningn smbolo, como si fuera una palabra normal.
Ejemplos: contador, var_local
Instanciables: se pueden acceder a ellas en cualquier lugar de la clase (hablaremos ms delante de ello). Declaracin
en RGSS: @variable_instanciable=1
Arrays: este tipo de variable almacena muchos valores en una cadena. Por supuesto, los arrays pueden ser de los 4
tipos de variable citados anteriormente. Declaracin en RGSS: array=[hola,titis,mundo]
Acceso de variable: array[0] acceder al valor hola, array[1] a titis y array[2] a mundo, mucho ojo porque, en
primer lugar, las cadenas se cuentan desde 0 (0 es el primer valor del array y asi) y acceder a un valor del array
inexistente puede generar un error de excepcin al ejecutar.
-CONSTANTES
Una constante es lo mismo que una variable, con la importante diferencia de que su valor no puede
variar a lo largo de la ejecucin del programa. O sea, que no se puede modificar despus de dado el
valor en el script. Los valores constantes tienen un valor determinado por cdigo. Pueden declararse tanto fuera de
una clase como dentro de ella.
La mayor diferencia es que se escribe en maysculas:
EJEMPLO:
MAX_MAKERS, CONST
-OPERADORES
Son simples smbolos que se usan en programacin para realizar operaciones matemticas, una de las cosas mas
fciles de aprender.
Elementos:
+ Suma
- Resta
* Multiplicacin
/ Divisin
+= sumar variable con valor asignado
-= restar variable con valor asignado
*= multiplicar variable por valor asignado
/= dividir variable por valor asignado
= asignar valor
== equiparar un valor con otro
!= un valor es distinto de otro
> Valor mayor a otro
< Valor menor a otro
>= valor mayor o igual a otro
<= valor menor o igual a otro
! Negar un valor
-ARRAYS
Es un tipo de variables que almacena valores en una misma cadena y estos se pueden leer y escribir.
La ventaja de usar arrays es que puedes tener la cantidad de variables que quieras en un solo
Conjunto.
Ejemplo:
@makers = [MakerJ,Cedexia,Comunidad]
print @makers[0]
print @makers[1]
print @makers[2]
@makers[0] = Administrador_Cedexia
@makers = [MakerJ,Cedexia,Comunidad] : Hemos asignado en una array 3 valores de tipo string
(texto).
Print @makers [0] Con esta line la estamos diciendo al programa que imprima en pantalla un texto
usando la funcin print, el texto que se imprimir ser en este caso el indicado en la lnea, o sea al poner
el nmero 0 no est diciendo que imprima en pantalla el nombre MakerJ, esto pasa porque en
programacin se empieza a contar desde el 0, si entre corchetes hubiramos puesto 1 en pantalla se
mostrara el nombre Cedexia.
@makers[0] = Administrador_Cedexia : Esto lo que hace es simplemente cambiar el valor del primer
nombre, ahora ya no sera MakerJ sin Administrador_Cedexia, entonces al array final quedara as:
@makers = [Administrador_Cedexia,Cedexia,Comunidad]
Esto es una demostracin de como mediante un array podemos dar y modificar valores, creo que lo he
explicado suficientemente para que sea entendible.
TABLA HASH
Los Hashes, tambin conocidos como Arrays asociativos, mapas o diccionarios.
La diferencia entre array y hash, es que, como bien vimos anteriormente, el valor de un dato del
array est en cierta posicin, y ese dato tiene como referencia el valor de la posicin, a diferencia de
los Hashes, estos tienen la caracterstica de tener como referencia cualquier tipo de valor, pasemos a
explicarlo mejor:
@makers = {MakerJ =>Admin,Cedexia=>Web,Albert=>Mod}
print @makers[MakerJ]
CONDICIONALES
Como su nombre indica son elementos que guardan una condicin y que harn algo si esa condicin se cumple (o si
hay excepciones) de lo contrario se ignorar y se seguir adelante con el siguiente cdigo.
CONDICIONAL IF
Este es probablemente el condicional ms comn y usado en cualquier lenguaje de programacin.
Si se ejecuta su condicin o excepcin se ejecutar lo que haya declarado en dicha condicin o excepcin:
@persona1 = MakerJ
@persona2 = Albert
if @persona1 == @persona2
print Ambas personas son la misma
else
print Personas diferentes
end
Este ejemplo de condicional if lo que nos dice es que hemos declarado el valor persona1 que es igual a MakerJ y
persona 2 que es igual a Albert.
Empezamos el if con la operacin @persona1==@persona2 y debajo la operacin de imprimir en pantalla el texto
Ambas personas son la misma
Este texto se imprimira en pantalla en el caso de que los 2 valores fueran iguales, pero como en este caso son
distintos el programa seguir adelante con el cdigo.
Mas abajo encontramos un else que es la palabra que declara la excepcin, en este caso Personas diferentes.
La excepcin se cumplir en el caso de que la condicin no sea cumplida y como no lo fue, se imprimir en pantalla
el texto Personas diferentes
Acabamos el condicional con la palabra end, todo condicional, mtodo, clase, y ms, deben terminar si o si con un
end, sino no se marca el final y es muy probable que te de errores.
CASE
Parecido a if, pero se puede tener numerosas condiciones, incluida una excepcin. Tambin es posible usar rangos.
case @command_window.index
when 0
command_new_game
when 1
command_continue
when 2
command_shutdown
end
case @command_window.index: Primera lnea del condicional case, all es donde indicas que
variable quieres verificar, o sea en que variable quieres que se verifiquen los valores.
En este caso en una variable de clase llamada @command_window.index, lo que indica es la
posicin dentro de la caja de comandos del Scene_Title.
when 0: When significa en ingls Cuando, por lo tanto Cuando el valor de
@command_window.index es 0, se ejecuten las siguientes instrucciones.
command_new_game: Esta es la instruccin seguida del when 0, por lo tanto esta solo se
ejecutar si y solo si @command_window.index vale 0, Si te preguntas que es esta lnea, pues es
una llamada a otro mtodo dentro de la misma clase, pasar a explicarlo en las prximas lecciones.
Como ves, las siguientes lineas son iguales a las explicadas, pero verificando diferentes valores para
ejecutar diferentes instrucciones.
Dejar claro que los when no terminan con ningn end, pero el cada case siempre debe terminar con
uno.
Condicional unless
Vamos a explicar el ltimo condicional de sta leccin. El condicional unless es lo contrario al if, se
ejecutarn las instrucciones si y solo si la expresin es falsa. Vamos a un ejemplo para explicarlo
mejor:
@nombre = MakerJ
unless @nombre == MakerJ
print Si no eres MakerJ no me hables!
end
BUCLE FOR
Permite repetir una misma instruccin un nmero determinado de veces y desde un punto determinado hasta otro.
Dichos puntos de comienzo y fin del bucle pueden ser nmeros o variables numricas.
for i in 0..10
print i
end
for i in 0..10: El bucle debe comenzar por la palabra reservada for, seguida de la variable, la palabra
reservada in, y el rango de contador.
Hay una pequea diferencia entre 0..10 (dos puntos) y 0...10 (tres puntos), el primero toma un rango
desde el primer nmero hasta el ltimo, o sea un rango total, del 0 al 10, y el segundo (tres puntos),
toma un rango desde el primer numero hasta el penltimo, del 0 al 9.
end: Como todo condicional y bucle, marca el final del mismo.
sto imprimir por pantalla 10 veces la variable i, y como i es el contador, imprimir 1,2,3,4... hasta
llegar al 10.
BUCLE WHILE
ste bucle sirve para repetir continuamente ciertas instrucciones, pero a diferencia de loop do, este
termina cuando la expresin dada sea falsa. Vamos a un ejemplo:
Cdigo Ruby
@num = 10
while @num == 10
print @num sigue siendo igual a 10
end
Cdigo Ruby
Todo bucle while, comienza con la palabra reservada while, seguido de la expresin a verificar. En
este caso verificamos si @num==10. While significa Mientras, por lo tanto mientras @num sea
igual a 10, que las instrucciones se ejecuten. O sea, si @num vale 10 en todo el programa, ser un
bucle infinito, ya que si no cambia de valor, seguir ejecutando sus instrucciones.
Operadores
lgicos
Los operadores lgicos indican el formato de validar cierta expresin en un condicional o bucle. Por
ejemplo este que vimos anteriormente:
Cdigo Ruby
@num = 10
while @num == 10
print @num sigue siendo igual a 10
end
Cdigo Ruby
El operador lgico en este caso es ==, el signo de igual.
Hay una importante diferencia entre = y ==, el primero es ASIGNAR, con l puedes asignarle un
valor a una variable, constante, etc. El otro es IGUAL, para comparar valores en condicionales o
bucles. Pasemos a la lista de los mismos:
Igual: El smbolo de igual para la comparacin en condicionales y bucle es: ==
Sirve para verificar si un valor es igual a otro.
Or: Significa en matemtica. O sea puedes comparar dos valores verificando si uno o el otro
es verdadero. El smbolo es: || or
Not: Significa No es cierto, negacin. Por lo tanto es para verificar que algo no es cierto, el
smbolo es: != !(expresin)
Mayor: El smbolo mayor, para verificar si un dato es mayor que otro, excluyndose. Se expresa
con el smbolo: >
Mayor o igual: Es lo mismo que mayor, pero incluyendo el valor dado. Smbolo: >=
Menor: El smbolo menor para verificar si un dato es menor que otro, excluyndose. Se expresa
con el smbolo: <
Menor o igual: Es lo mismo que menor, pero incluyendo el valor dado. Se expresa de la
siguiente manera: <=
Clases y mtodos
Son el cuerpo y alma del scripting. Las clases son objetos que llamaremos para hacer la magia. Dentro de dicha
clase encontramos los mtodos. Los mtodos contienen las instrucciones que creamos y vamos a mandar al
intrprete. Para que ste las ejecute. Una clase puede tener atributos, al igual que los mtodos. En principio, si
existen atributos stos se deben rellenar con un valor al llamar scripts, de lo contrario, generara un error de
excepcin al ejecutar. Bien antes de nada, nuestra clase (casi siempre) debe tener un mtodo por defecto llamado
initialize. Ah es donde pondremos nuestros atributos de acceso a la clase, y tambin ejecutaremos cdigo una vez
inicializado el script.
class Clase_Marras #he notado que hay que poner en maysculas la primera letra de la
clase para que no de problemas de sintaxis
attr_accessor :greeting
attr_accessor :name
#los atributos en cuestin
def initialize(greeting, name) # el mtodo de inicializacin junto
con sus atributos
@greeting=greeting
@name=name
end
def say
print @greeting + " " + @name
end
end
Herencia de Clases:
Eres hijo nico, tu padre muere y heredas sus pertenencias. Es una forma simple de explicarlo.
Para que una clase herede de otra, debemos poner esto:
class Clase_Marras < Windows_Base
Este ejemplo te permitira, por ejemplo usar el sistema de ventanas para mostrar textos, ventanas y ms cosas. Ideal
para crear vuestro propio sistema de men personalizado.
Pero todava no hemos terminado. Debemos inicializar la clase padre cuando la necesitemos. Ya que
Windows_Base te permite crear ventanas y tiene ciertas propiedades obligatorias para su creacin (posicin x,
posicin y, ancho, alto).
En el mtodo de inicializar metemos:
super(0, 0, 200, 200)
Aqu es de cuando acabamos con la teora y pasamos a una parte ms prctica , que ya iba siendo hora.
GRFICOS Y IMGENES
Todo juego sea del tipo que sea debe tener grficos, un juego que no los tenga no puede llamarse juego propiamente
dicho.
En esta leccin aprenderemos a insertar grficos y como debemos utilizarlos:
@sprite = Sprite.new
@sprite.bitmap = Cache.picture(nombre_del_archivo)
@sprite = Sprite.new: Primero de todo, para crear un sprite, debes asignarlo a una variable,
para posteriormente poder manipularlo. As que en este caso le asignamos un nuevo
sprite/imagen a la variable @sprite, la variable puede llamarse como quiera, no tiene porque
llamarse as.
Despus, introducimos el signo de asignacin (=), y a continuacin el comando Sprite.new, esto
si es obligatorio escribirlo tal cual est, crea un nuevo sprite/imagen.
@sprite.bitmap
MANIPULAR GRFICOS
Como no siempre quedan las imgenes como queramos o donde queramos, tenemos a nuestra disposicin algunos
cdigos para ayudar. Para utilizar estos mtodos hay que
escribir el nombre de la variable a la que le asignamos un sprite nuevo o una ventana, ms un punto,
ms el mtodo, todo seguido.
REPRODUCIR AUDIO
Comp un juego sin audio queda sos, aqu os dejo el comando para reproducirlo:
VENTANAS
Este tipo de ventanas no tiene nada que ver con las de tu casa.
Estas son bloques en los que se muestra lo que tu elijas desde el propio script.
A continuacin, dentro del mtodo initialize, vamos a indicar los parmetros de super.
El comando super contiene cuatro parmetros, el primero es X, se debe indicar la coordenada X
donde la ventana se situar, en el segundo la coordenada Y, el tercer parmetro es width, o sea la
base, el largo de la ventana, y el ltimo y cuarto parmetro es height, que es la altura de la ventana.
Con estos parmetros podemos jugar, manipulando las dimensiones y posicin de la ventana.
Por lo tanto, el comando quedara: super(x,y,base,altura)
class Window_Sample < Window_Base
def initialize
super(70,100,400,20)
end
end
Lo que hicimos fue agregar el comando super, con sus respectivos parmetros, lo situamos en las
coordenadas (70,100), con una base de 400 y una altura de 20 pxeles.
Ahora vamos a crear otro mtodo, donde dibujaremos un texto, le llamaremos refresh, no tiene
porque llamarse a si, pero en la mayora de las ventanas se encuentra. As que, vamos a crearlo:
con esto acabas de crear tu propia ventana, cuando tengas mas conocimientos podrs poner todo lo que desees en
ella.
Window_Base
Window_Base, es una clase como cualquier otra, pero tiene los mtodos base para toda ventana,
por eso es que siempre heredan de ella, contiene el initialize con todos los parmetros default,
contiene mtodos muy tiles como dibujar el nombre del hroe, la vida, o la clase:
text_color(n):
ESCENAS
Las escenas lo son todo tanto en Rpg Maker XP como en VX.
El ttulo es una escnea, el mapa tambin, tambin puede ser un objeto, pero solo puede haber una escena actual.
Para llamar a una escena, hay que asignarle a la variable global $scene, la escena que queremos
ejecutar. Por ejemplo:
$scene = Scene_Title.new
As se llama tambin desde un comando Llamar Script. Recuerda que la variable global a asignar la
nueva escena, siempre debe ser la variable $scene.
Vamos a crear una escena, que salga un cartel en la punta arriba-izquierda que tenga un
acceso rpido para salir del juego. Vamos paso a paso a crearlo:
class Scene_Sample < Scene_Base
end
Primero de todo creamos una clase, llmala como quieras, te recomiendo que el nombre comience
con Scene_, para organizarte mejor. Heredamos los mtodos de Scene_Base. Y seguimos
Empezaremos la scene con un mtodo llamado start:
class Scene_Sample < Scene_Base
def start
op1 = Seguir
op2 = Ir al ttulo
op3 = Salir
@mapa = Spriteset_Map.new
@com = Window_Command.new(172,[op1,op2,op3])
end
end
@com
RESUMIENDO
Como en cualquier mtodo de programacin lo primero que se hace es crear un hola mundo nosotros no vamos a ser
menos ^^
Un hola mundo es una ventana que nos muestra un texto con la frase Hola Mundo, pero como eso ya est muy
visto nosotros crearemos nuestro propio Hola Cedexia
Pues vamos a ello, vamos al editor de scripts y creamos un script encima de main donde ponemos lo siguiente:
class Mostrar_Cedexia
def main a
@window_1=Hola_Cedexia.new
Graphics.transition
loop do
Graphics.update
Input.update
@window_1.update
if Input.trigger?(Input::A) #si pulsamos el Z en nuestro teclado, la ventana desaparecer y volveremos a
controlar al personaje
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
break
end
end
Graphics.freeze
@window_1.dispose
end
end
Echo todo esto solamente tendremos que crear un evento en el juego donde llamemos este script:
mostrar=Mostrar_Cedexia.new
mostrar.main
Y asegurarnos de que lo activamos en el juego.
Con esto ya habramos creado nuestro propio Hola Cedexia
YA EST?
Si, con todo lo que te he ensaado en esta gua puedes hacer prcticamente lo que quieras siempre que utilices bien
los cdigos y lo hagas con cabeza.
Ahora mismo eres un erudito del RGSS (si lo has entendido todo) por eso espero que sepas utilizar esos
conocimientos para hacer algn buen proyecto.
FINAL DE LA GUA
Aqu es donde acaba mi gua para aprender RGSS orientado a Rpg Maker XP.
Despus de estar unas cuantas horas pegado a la pantalla escribiendo lo que acabas de leer quiero dar por finalizado
mi trabajo.
Esta gua a sido creada por mi para el foro de Cedexia.
Finalemente me gustara dar las gracias a todos los usuarios de Cedexia por hacer posible este proyecto.
Si quereis ver mas manuales como este, preguntar dudas, hacer sugerencias, postear vuestros juegos o lo que sea os
recomiendo registraros en : http://cedexia.saapy.com
Podeis contactarme en el foro de cedexia o mediante el siguiente mail: makerjworld@hotmail.com
HASTA LA PROXIMA!
Obra bajo licencia Creative Commons 3.0, totalmente prohibida su distribucin sin reconocer
al autor del mismo (MakerJ).Queda totalmente prohibida su edicin sin permiso expreso del autor. Prohibido
su uso con fines comerciales.