Riprendendo un po' il programma della Slim Dogs ma riproponendolo in chiave nostrana..
Io quest'oggi voglio sapere COME..?! Come 'bip' hanno fatto a realizzare WILD ARMS per playstation 1?!
PRESENTAZIONE:
Spoiler
Io sono Massimo Bivona anche conosciuto come Lomax_Iced è in questo spazio web mi piacerebbe parlare dei videogiochi che più mi piacciono.
Ma nello specifico vorrei condividere con voi i miei studi riguardante il COME sono state realizzate certe scene (ossia momenti di gioco) e cercare di imparare insieme a riprorle.
Ultimamente ho messo un po da parte il javascrit perché avevo nostalgia del buon vecchio ruby e del mio primo Rpg Maker (rmxp appunto) e questo solo per darvi la motivazione del perché ho deciso di rispolverare l'rgss. Fatti i convenevoli.. che ne dite? Iniziamo? :)
Io sono Massimo Bivona anche conosciuto come Lomax_Iced è in questo spazio web mi piacerebbe parlare dei videogiochi che più mi piacciono.
Ma nello specifico vorrei condividere con voi i miei studi riguardante il COME sono state realizzate certe scene (ossia momenti di gioco) e cercare di imparare insieme a riprorle.
Ultimamente ho messo un po da parte il javascrit perché avevo nostalgia del buon vecchio ruby e del mio primo Rpg Maker (rmxp appunto) e questo solo per darvi la motivazione del perché ho deciso di rispolverare l'rgss. Fatti i convenevoli.. che ne dite? Iniziamo? :)
EPISODIO PILOTA:...WILD ARMS.
Spoiler
Analizziamo un po' questa sequenza di Scene:
Badate da qui in avanti le potrei chiamare anche Momenti.
Momento1 -> show loghi
Momento2 -> show video opening
Momento3 -> show Nodo (se premete start vi rimanda al suo Scene_Title, se invece lasciate che il BGM si concluda vi rimanda allo Scene_Prologo)
Momento4b -> show Prologo.
Momento4a -> show Scene_Title (load - New Game - Memory Card)
Momento5a -> load
Momento5c -> show Scene_Memory Card
Momento5b -> Show Scena scelta personaggio con cui iniziare
Per il momento soffermiamoci a questi e proviamo a realizzare questa successione di momenti, partendo dal primo:
MOMENTO1 #LOGHI:
Momento4a
Analizziamo un po' questa sequenza di Scene:
Badate da qui in avanti le potrei chiamare anche Momenti.
Momento1 -> show loghi
Momento2 -> show video opening
Momento3 -> show Nodo (se premete start vi rimanda al suo Scene_Title, se invece lasciate che il BGM si concluda vi rimanda allo Scene_Prologo)
Momento4b -> show Prologo.
Momento4a -> show Scene_Title (load - New Game - Memory Card)
Momento5a -> load
Momento5c -> show Scene_Memory Card
Momento5b -> Show Scena scelta personaggio con cui iniziare
Per il momento soffermiamoci a questi e proviamo a realizzare questa successione di momenti, partendo dal primo:
MOMENTO1 #LOGHI:
Spoiler
Esistono 2 modi per poter realizzare uno Scene_Loghi.
IL PRIMO -> Lo chiamerò 'metodo Easy' ovvero realizzare una scena che piloti un vettore che mostra a video una serie di immagini, tante quanto lo sono i loghi da mostrare.
METODO_EASY:
METODO PRO:
Passiamo ora al Momento3 o Scena_PushBottonStart è mediamente semplice da realizzare. Perché con molta onestà ho dimenticato come impostare la condizione che decida che quando il brano conclude il tempo di esecuzione e viene sentito tutto nella sua interezza poi in automatico l'eseguibile convoca il momento prologo. Beh questo ancora non mi è noto ANZI se avete idee sono bene accolte :)
Per quanto riguarda invece creare una scena semplice di premi start in stile retrò, toh:
Attualmente vi anticipo che questo script vi darà errore alla riga 20, questo perché le mie prove sul renderlo esattamente come quello di wild arms sono ancora work in progress.
Però se si preme il tasto invio si accede al momento successivo ossia lo Scene_Title (ossia il menu composto dai tasti LOAD - NEW GAME - MEMORYCARD).
Esistono 2 modi per poter realizzare uno Scene_Loghi.
IL PRIMO -> Lo chiamerò 'metodo Easy' ovvero realizzare una scena che piloti un vettore che mostra a video una serie di immagini, tante quanto lo sono i loghi da mostrare.
METODO_EASY:
Spoiler
1. Creiamo la struttura vuota di una scena avviabile:
Occhio è opportuno che abbiate un po' di infarinatura con la programmazione, ad ogni modo proverò ad accennare qualcosa ma è meglio che approfondiate i concetti base in altro modo.
Comunque qui in questo forum ci sono ottimi tutorial da spulciare. Torniamo a noi..
Creata la struttura convenzionale di una scena, adesso armiamola di variabili e costanti:
In giro troverete degli script strutturati in maniera simile, daltronde sono gli stessi da cui ho imparato a fare questa cosa.
Però il mio è diverso, ha annesso un diPiù, ossia ho implementato dentro di esso il modulo IMPOSTAZIONI così da poter modificare i parametri in modo più easy.
Ora questo metodo per usarlo al meglio potete fare in modo che invece di realizzare 1frame a logo. Provate a generare una serie di frames a logo. Esempio 5 frames dedichate a logo1, altre 5 dedicate al logo successivo e così via, in questo modo si greano delle gift e il risultato verrebbe più bello, che il mostrare le singole immagini statiche. Non serve modificare lo script per una cosa del genere, basta solo mettere le immagini ordinate in sequenza.
1. Creiamo la struttura vuota di una scena avviabile:
module IMP #IMPOSTAZIONI
end
class Show_Loghi
def main
loop do
Graphics.update
update
if $scene != self
break
end
Graphics.transition
end
Graphics.freeze
end
end
Occhio è opportuno che abbiate un po' di infarinatura con la programmazione, ad ogni modo proverò ad accennare qualcosa ma è meglio che approfondiate i concetti base in altro modo.
Comunque qui in questo forum ci sono ottimi tutorial da spulciare. Torniamo a noi..
Creata la struttura convenzionale di una scena, adesso armiamola di variabili e costanti:
module IMP #IMPOSTAZIONI
FRAMES = 3 #DUE IMMAGINI
end
class Momento1 #Show Loghi
def main
#carichiamo le variabili globali di sistema ci faranno comodo.
$data_system = load_data("Data/System.rxdata")
$game_system = Game_System.new
@index = 1
@counter = 0
#creiamo lo strumento show_Loghi
show_loghi("logo",100)
end
# costruiamo il metodo show_loghi
def show_loghi(nome, frames)
@nome = nome
@frames = frames
@sprite = Sprite.new
loop do
Graphics.update
@counter += 1
# adesso definiamo il cuore del nostro script
if @counter == @frames
@counter = 0
@frames += 1
if @index == IMP::FRAMES #ossia l'equivalente di 2 immagini.
@sprite.bitmap.dispose
@sprite.dispose
$scene = Momento2.new("opening", 132, 0, 0, 0, 0)
end
end
if $scene != self
break
end
@sprite.bitmap = RPG::Cache.title(@name + @index.to_s)
Graphics.transition
end
Graphics.freeze
end
end
In giro troverete degli script strutturati in maniera simile, daltronde sono gli stessi da cui ho imparato a fare questa cosa.
Però il mio è diverso, ha annesso un diPiù, ossia ho implementato dentro di esso il modulo IMPOSTAZIONI così da poter modificare i parametri in modo più easy.
Ora questo metodo per usarlo al meglio potete fare in modo che invece di realizzare 1frame a logo. Provate a generare una serie di frames a logo. Esempio 5 frames dedichate a logo1, altre 5 dedicate al logo successivo e così via, in questo modo si greano delle gift e il risultato verrebbe più bello, che il mostrare le singole immagini statiche. Non serve modificare lo script per una cosa del genere, basta solo mettere le immagini ordinate in sequenza.
METODO PRO:
Spoiler
adottare sempre la filosofia del frame to frame però questa volta pre-registrando una piccola clip.avi e farla eseguire dal programma.
Vediamo come:
In questo modo lo script richiamerà le api del sistema operativo, creerà un player che assumerà le grandezze del vostro Game.ini ed eseguirà la piccola clip. Volendo si potrebbe unire
Momento1 con Momento2 ossia permettendo a questo script di gestire oltre che al mostra loghi anche la scena successiva in cui viene mostrato il video di opening, sigla iniziale del gioco.
basta un po di ingegno e fantasia. Ad ogni modo i due metodi sono entrambi validi per adempiere a tale scopo. Volendo ancora possiamo unire i due script in modo che possiate avere la possibilità di scelta e poter switchare fra il preferire il metodo easy o sbrigativo. A voi la decisione qual'è meglio. :)
adottare sempre la filosofia del frame to frame però questa volta pre-registrando una piccola clip.avi e farla eseguire dal programma.
Vediamo come:
class Momento1 #Show Clip.avi
def initialize(movie,length,x,y,x2,y2)
@readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l'
@movie_name = Dir.getwd()+"\\Video\\"+movie+".avi"
@counter = length
end
def main
game_name = "\0" * 256
@readini.call('Game','Title','',game_name,255,".\\Game.ini")
game_name.delete!("\0")
Graphics.transition
@wnd = Win32API.new('user32','FindWindowEx','%w(l,l,p,p)','L')
@temp = @wnd.call(0,0,nil,game_name).to_s
@movie = Win32API.new('winmm','mciSendString','%w(p,p,l,l)','V')
@movie.call("open \""+@movie_name+"\" alias FILE style 1073741824 parent " + @temp.to_s,0,0,0)
@message = Win32API.new('user32','SendMessage','%w(l,l,l,l)','V')
@detector = Win32API.new('user32','GetSystemMetrics','%w(l)','L')
@width = @detector.call(0)
if @width
sleep(1)
Graphics.update
sleep(1)
Graphics.update
sleep(1)
end
@movie.call("play FILE", 0,0,0)
loop do
sleep(1)
@message.call(@temp.to_i,11,0,0)
Graphics.update
@message.call(@temp.to_i,11,1,0)
Input.update
if Input.trigger?(Input::C)
@movie.call("close FILE",0,0,0)
break
end
@counter = @counter - 1
if @counter <= 0
break
end
end
@movie.call("close FILE",0,0,0)
$scene = Momento2.new
Graphics.freeze
end
end
In questo modo lo script richiamerà le api del sistema operativo, creerà un player che assumerà le grandezze del vostro Game.ini ed eseguirà la piccola clip. Volendo si potrebbe unire
Momento1 con Momento2 ossia permettendo a questo script di gestire oltre che al mostra loghi anche la scena successiva in cui viene mostrato il video di opening, sigla iniziale del gioco.
basta un po di ingegno e fantasia. Ad ogni modo i due metodi sono entrambi validi per adempiere a tale scopo. Volendo ancora possiamo unire i due script in modo che possiate avere la possibilità di scelta e poter switchare fra il preferire il metodo easy o sbrigativo. A voi la decisione qual'è meglio. :)
Passiamo ora al Momento3 o Scena_PushBottonStart è mediamente semplice da realizzare. Perché con molta onestà ho dimenticato come impostare la condizione che decida che quando il brano conclude il tempo di esecuzione e viene sentito tutto nella sua interezza poi in automatico l'eseguibile convoca il momento prologo. Beh questo ancora non mi è noto ANZI se avete idee sono bene accolte :)
Per quanto riguarda invece creare una scena semplice di premi start in stile retrò, toh:
# ** Scene_Title
#------------------------------------------------------------------------------
# This class performs title screen processing.
#==============================================================================
module IN
IM = true
PSB = "" #PUSH START BOTTON
TF = false #Transizione finestra
OPF = 160 #Opacità Finestra
WF = 192 #Larghezza Finestra
AF = 2 #Allineamento orizzontale Finestra
PXF = 0 #Posizione X Finestra
VAF = 0 #Allineamento Verticale Finestra
PYF = 288 #Posizione Y Finestra
PSB = ["psbOFF","psbON"] #Tasto PSB nonselezionato/selezionato
PX = 0 #Posixione X tasto s1
PY = 0 #Posizione Y tasto s1
BT = 0 #BLEND_TYPE
end
class Scene_Node < Scene_Title
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
$data_common_events = load_data("Data/CommonEvents.rxdata")
$data_system = load_data("Data/System.rxdata")
# Make system object
$game_system = Game_System.new
$game_animaPictures = Game_AnimPicture
# Make title graphic
@background = Sprite.new
@background.bitmap = RPG::Cache.title("WATitle")
@background.x = 0
@background.y = 0
# Make a Font:
Font.default_name = "Filgaia"
# Make a FontSize
Font.default_size = 28
# Make command window
s1 = "PUSH START BUTTON"
w = IN::WF
@command_window = Window_CommandNode.new(192, [s1])
if IT::TF
@command_window.opacity = 0
else
@command_window.back_opacity = IT::OPF
end
case IN::AF
when 0
@command_window.x = IN::PXF
when 1
@command_window.x = 0
when 2
@command_window.x = (640 - @command_window.width ) / 2
when 3
@command_window.x = 640 - @command_window.width
end
case IT::VAF
when 0
@command_window.y = IN::PYF
when 1
@command_window.y = 0
when 2
@command_window.y = (480 - @command_window.height ) / 2
when 3
@command_window.y = 480 - @command_window.height
end
if IN::IM
@command_window.visible = false
#LOAD #s1 nonselezionato
@command_img1 = Sprite.new
@command_img1.blend_type = IT::BT
@command_img1.bitmap = RPG::Cache.title(IN::PSB[0])
@command_img1.x = IN::PX
@command_img1.y = IN::PY
end
# Play title BGM
Audio.bgm_play("Audio/BGM/ms",100,100)
# Stop playing ME and BGS
Audio.me_stop
Audio.bgs_stop
# Execute transition
Graphics.transition
# Main loop
loop do
@command_img1.bitmap = RPG::Cache.title(IN::PSB[1])
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
# Prepare for transition
Graphics.freeze
# Dispose of command window
@command_img1.dispose
@command_window.dispose
# Dispose of node graphic
@background.bitmap.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# If C button was pressed
if Input.trigger?(Input::C)
command_push_start_botton
end
if ! Input.trigger?(Input::C)
antefatto
end
end
#--------------------------------------------------------------------------
# * Command: Push Start Botton
#--------------------------------------------------------------------------
def command_push_start_botton
# Play decision SE
Audio.se_play("Audio/SE/OkOp",100,100)
# Stop BGM
Audio.bgm_stop
# Reset frame count for measuring play time
Graphics.frame_count = 0
# Make each type of game object
$game_temp = Game_Temp.new
$game_system = Game_System.new
=begin
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
=end
# Dispose of title graphic
@command_img1.dispose
@background.bitmap.dispose
# Switch to title screen
$scene = Scene_Start.new
end
def antefatto
# Ferma BGM
Audio.bgm_stop
# Riproduci BGS
#Audio.bgs_play("Audio/BGS/",100,100)
# Resetta il frame count (serve per calcolare il tempo di gioco)
Graphics.frame_count = 0
# Crea gli oggetti
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
# Imposta il party iniziale
$game_party.setup_starting_members
# Imposta la mappa iniziale
$game_map.setup($data_system.start_map_id)
# Coordinate iniziali
$game_player.moveto($data_system.start_x, $data_system.start_y)
# Refresh del giocatore
$game_player.refresh
# Riproduce i BGM e BGS propri di quella mappa
$game_map.autoplay
# Aggiorna mappa (per gli eventi in parallelo)
$game_map.update
# Vai alla Scene_Map
$scene = Scene_Map.new
end
end
Attualmente vi anticipo che questo script vi darà errore alla riga 20, questo perché le mie prove sul renderlo esattamente come quello di wild arms sono ancora work in progress.
Però se si preme il tasto invio si accede al momento successivo ossia lo Scene_Title (ossia il menu composto dai tasti LOAD - NEW GAME - MEMORYCARD).
Momento4a
Spoiler
Questo scene_title è composto dal tasto load se esiste una partita salvata; poi il tasto New Game; e infine il tasto memorycard che noi dato che non abbiamo, ho immaginato che quella potesse essere la sezione dedicata ai crediti e ai ringraziamenti e riferimenti al gioco originario (chiamandola appunto Memory).
Ad ogni modo:
Se si va al New Game, si passa al Momento di scelta con che giocatore iniziare conoscendo le loro vite prima ancora che il party si formasse.
Bene per realizzare questa cosa, ci viene in aiuto lo script di SelezionaCampagnia realizzato da un utente di questo forum di cui io non ricordo il nickname (voglia perdonarmi)
Questo scene_title è composto dal tasto load se esiste una partita salvata; poi il tasto New Game; e infine il tasto memorycard che noi dato che non abbiamo, ho immaginato che quella potesse essere la sezione dedicata ai crediti e ai ringraziamenti e riferimenti al gioco originario (chiamandola appunto Memory).
Ad ogni modo:
#==============================================================================
# ** Scene_Start
#------------------------------------------------------------------------------
# ad immagini (load - New Game - Memories) che rimanda a selezione personaggio
#==============================================================================
module IT #IMPOSTAZIONI TITLE
IM = true
BACKGROUND = "" #Sfondo
LOAD = "" #carica partita salvata
NEWGAME = "" #rimanda a selezione personaggio (avviando una n.partita
MEMORY = "" #rimanda alla schermata dei crediti e ringraziamenti
TF = false #Transizione finestra
OPF = 160 #Opacità Finestra
WF = 192 #Larghezza Finestra
AF = 2 #Allineamento orizzontale Finestra
PXF = 0 #Posizione X Finestra
VAF = 0 #Allineamento Verticale Finestra
PYF = 288 #Posizione Y Finestra
BACKGROUND = ["tmpot"] #Sfondo
BGX = 0 #Posizione X tasto Background
BGX = 0 #Posizione Y tasto Background
LOAD = ["loadOFF","loadON"] #Tasto LOAD nonselezionato/selezionato
LX = 0 #Posixione X tasto s1
LY = 0 #Posizione Y tasto s1
NEWGAME = ["newgameOFF","newgameON"] #Tasto NEWGAME nonselezionato/selezionato
NGX = 0 #Posixione X tasto s2
NGY = 0 #Posizione Y tasto s2
MEMORY = ["memoryOFF","memoryON"] #Tasto MEMORY nonselezionato/selezionato
MX = 0 #Posixione X tasto s3
MY = 0 #Posizione Y tasto s3
BT = 0 #BLEND_TYPE
end
class Scene_Start
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
$data_system = load_data("Data/System.rxdata")
# Make system object
$game_system = Game_System.new
# Make a graphic
@background = Sprite.new
@background.bitmap = RPG::Cache.title(IT::BACKGROUND[0])
@background.x = 0
@background.y = 0
# Make command window
s1 = IT::LOAD
s2 = IT::NEWGAME
s3 = IT::MEMORY
w = IT::WF
@start = Window_CommandStart.new(w, [s1, s2, s3])
if IT::TF
@start.opacity = 0
else
@start.back_opacity = IT::OPF
end
case IT::AF
when 0
@start.x = IT::PXF
when 1
@start.x = 0
when 2
@start.x = (640 - @start.width ) / 2
when 3
@start.x = 640 - @start.width
end
case IT::VAF
when 0
@start.y = IT::PYF
when 1
@start.y = 0
when 2
@start.y = (480 - @start.height ) / 2
when 3
@start.y = 480 - @start.height
end
# Continue enabled determinant
# Check if at least one save file exists
# If enabled, make @continue_enabled true; if disabled, make it false
@load_enabled = false
for i in 0..3
if FileTest.exist?("Memories/Save#{i+1}.rxdata")
@load_enabled = true
end
end
# If continue is enabled, move cursor to "Continue"
# If disabled, display "Continue" text in gray
if @load_enabled
@start.index = 1
else
@start.disable_item(1)
end
if IT::IM
@start.visible = false
#LOAD #s1 nonselezionato
@start1 = Sprite.new
@start1.blend_type = IT::BT
@start1.bitmap = RPG::Cache.title(IT::LOAD[0])
@start1.x = IT::LX
@start1.y = IT::LY
#NEWGAME #s2 nonselezionato
@start2 = Sprite.new
@start2.blend_type = IT::BT
@start2.bitmap = RPG::Cache.title(IT::NEWGAME[0])
@start2.x = IT::NGX
@start2.y = IT::NGY
#MEMORY #s3 nonselezionato
@start3 = Sprite.new
@start3.blend_type = IT::BT
@start3.bitmap = RPG::Cache.title(IT::MEMORY[0])
@start3.x = IT::MX
@start3.y = IT::MY
if @load_enabled
@start2.bitmap = RPG::Cache.title(IT::LOAD[1])
@start3.bitmap = RPG::Cache.title(IT::NEWGAME[0])
else
@start2.opacity = 160
@start1.bitmap = RPG::Cache.title(IT::LOAD[0])
@start2.bitmap = RPG::Cache.title(IT::NEWGAME[0])
end
end
# Play title BGM
$game_system.bgm_play($data_system.title_bgm)
# Stop playing ME and BGS
Audio.me_stop
Audio.bgs_stop
# Execute transition
Graphics.transition
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
# Prepare for transition
Graphics.freeze
# Dispose of start
@start.dispose
@background.dispose
if IT::IM
@start1.dispose
@start2.dispose
@start3.dispose
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
@start.update
@start1.update
@start2.update
@start3.update
if @start.active
update_start
return
end
end
def update_start
# If RIGHT button ware repeat
if Input.repeat?(Input::RIGHT)
# Play buzzer SE
$game_system.se_play($data_system.cursor_se)
# Branch by command window cursor position
case @start.index += 1
when 0 # LOAD
@start1.bitmap = RPG::Cache.title(IT::LOAD[1])
@start2.bitmap = RPG::Cache.title(IT::NEWGAME[0])
@start3.bitmap = RPG::Cache.title(IT::MEMORY[0])
when 1 # NEWGAME
@start1.bitmap = RPG::Cache.title(IT::LOAD[0])
@start2.bitmap = RPG::Cache.title(IT::NEWGAME[1])
@start3.bitmap = RPG::Cache.title(IT::MEMORY[0])
when 2 # MEMORY
@start1.bitmap = RPG::Cache.title(IT::LOAD[0])
@start2.bitmap = RPG::Cache.title(IT::NEWGAME[0])
@start3.bitmap = RPG::Cache.title(IT::MEMORY[1])
end
return
end
#If LEFT button ware repeat
if Input.repeat?(Input::LEFT)
# Play buzzer SE
$game_system.se_play($data_system.cursor_se)
# Branch by command window cursor position
case @start.index += -1
when 0 # LOAD
@start1.bitmap = RPG::Cache.title(IT::LOAD[1])
@start2.bitmap = RPG::Cache.title(IT::NEWGAME[0])
@start3.bitmap = RPG::Cache.title(IT::MEMORY[0])
when 1 # NEWGAME
@start1.bitmap = RPG::Cache.title(IT::LOAD[0])
@start2.bitmap = RPG::Cache.title(IT::NEWGAME[1])
@start3.bitmap = RPG::Cache.title(IT::MEMORY[0])
when 2 # MEMORY
@start1.bitmap = RPG::Cache.title(IT::LOAD[0])
@start2.bitmap = RPG::Cache.title(IT::NEWGAME[0])
@start3.bitmap = RPG::Cache.title(IT::MEMORY[1])
end
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Play buzzer SE
$game_system.se_play($data_system.decision_se)
# Branch by command window cursor position
case @start.index
when 0
load
when 1
newgame
when 2
memory
end
end
end
#--------------------------------------------------------------------------
# * Command: LOAD
#--------------------------------------------------------------------------
def load
# If continue is disabled
unless @start1_enabled
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Switch to load screen
$scene = Scene_Load.new
end
#--------------------------------------------------------------------------
# * Command: NEWGAME
#--------------------------------------------------------------------------
def newgame
if @start2_enabled != 0
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Reset frame count for measuring play time
Graphics.frame_count = 0
$scene = Test.new
else
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
end
#--------------------------------------------------------------------------
# * Command: MEMORY
#--------------------------------------------------------------------------
def memory
if @start3_enabled != 0
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Reset frame count for measuring play time
Graphics.frame_count = 0
$scene = Scene_Crediti.new
else
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
end
end
Se si va al New Game, si passa al Momento di scelta con che giocatore iniziare conoscendo le loro vite prima ancora che il party si formasse.
Bene per realizzare questa cosa, ci viene in aiuto lo script di SelezionaCampagnia realizzato da un utente di questo forum di cui io non ricordo il nickname (voglia perdonarmi)
Ad ogni modo, fatte le dovute modifiche e migliorie, eccovi ricostruite queste prime fasi di Wild Arms.
Successivamente annoterò i miei sviluppi e vi terrò aggiornati.
Se questo format vi è piaciuto e vorreste che lo continuassi fatemelo sapere nei commenti. :)
Modificato da Lomax_Iced, 28 June 2021 - 03:15 AM.