SlideShare a Scribd company logo
1 of 23
RSE3.2からRSE3.5への移行
若葉堂本舗
ToC
 RSE3.5とは
 RSE3.5とRSE3.2の違い
 RSE3.5で出来るようになったこと
 RSE3.5で廃止・変更されたもの
 RSE3.2系からRSE3.5へ移行の手引き
RSE3.5とは
 次世代マルチメディアエンジンSpE4の
テストベッド
 主たる目的はスクリプト言語の仕様変更
の検証
 既存RSEクリエイタ向けの移行、習熟期間
提供の意味合いも持つ
RSE3.5とRSE3.2の違い
 言語仕様が異なる
 SpE4で実装される「SphereScript」の先行実装
のため
 BASIC風の旧スクリプトからC系風に進化した
 既存スクリプトとの突合試験用に旧スクリプトの
動作もサポートしている
 構造化言語となった
 制御構文が追加された
 「関数」「ユーザ定義関数」が取り入れられた
 「変数」が使えるようになった
 #includeによるスクリプト内スクリプト展開が可
能になった
 コメント記法が;から//へ
RSE3.5で出来るようになったこと
 制御構文の拡張
 if、for、gotoなど
 ユーザ定義関数
 function get_anego () {}
 外部ファイルインクルード
 #include
 複数行コメント
 /*
ここはコメント
*/
RSE3.5で廃止・変更されたもの
 call命令(SpE4で廃止予定)
 ユーザ定義関数で代用
 return命令(変更)
 判定無しで直で返る
 常にreturn 0 == 0なイメージ
 jump命令(変更)
 goto文に変更
 ラベル、レジスタ、カウンタ(廃止)
 全て変数で賄えるため
RSE3.5へ移行の手引き のToc
 命令の書き方の変更
 値の設定
 配列って何?
 ifって何?
 whileって何?
 ユーザ定義関数って何?
 call, returunの移行
 #includeって何?
命令の書き方の変更(1/2)
 RSE3.5 RSE3.2
message BELU, “レイチェル”, “マスタ♡” message(BELU, “レイチェル”, “マスタ♡”);
 命令名の直後に「(」を追加
 設定する値群の末尾に「);」を追加
 たったそれだけをするだけでおk!
命令の書き方の変更(2/2)
 RSE3.5 RSE3.2
sethp L1, 9999 ; ラベル1(まるくん)を無敵化 set_hp(MARK, 9999); //まるくんを無敵化
 一部の命令の名前が変わっています
 変わっているといっても、単語間の区切りに
_(アンダースコア)が入っただけですが
値の設定(1/3)
 RSE3.5 RSE3.2
; 値の設定:F1に1をセット
set F1 = 1
// 値の設定:F1に1をセット
F1 = 1;
 行の頭からsetを取っただけ
値の設定(2/3)
 RSE3.5 RSE3.2
; 値の設定
set F1 = 1
; 現在のレベルの取得
getstatus LEVEL;
; R0に現在のレベル値が入っている
// 値の設定
F1 = 1;
//現在のレベルの取得
R0 = get_status(LEVEL);
//R0に現在のレベル値が入っている
 基本的に
変数名 = 値
以外での値の設定(代入)はありません
値の設定(3/3)
 RSE3.5 RSE3.2
; 値の設定
set F1 = 1
; 現在のレベルの取得
getstatus LEVEL;
; R0に現在のレベル値が入っている
; そのままではR0以外の名前にはできない
; R0を見ただけではどんな値が入っているか
; 判らない
// 値の設定
F1 = 1;
//現在のレベルの取得
level= get_status(LEVEL);
// levelに現在のレベルが入っている
// levelって書いてあるんだからlevelの値が
//入っているのだろうと見当がつく
 値の名前は自由に設定できるように
なりました
 何が入っているかは「見れば判る」はず
配列って何?
 RSE3.5 RSE3.2
表現不能 tiger_sq_list = [
SHIBUTANI,
TAKESHIBA,
KOIWA
];
//タイガー小隊1番機を取得
raiders = tiger_sq_list[0];
 グループや繰り返し処理を行いたいものを
簡単に表現できます
ifって何?(1/2)
 RSE3.5 RSE3.2
getstatus LEVEL
call R0 == 0 easy
;levelが0の場合はeasyへジャンプ
;帰ってくるかはeasy側の処理次第
# easy
message BLUE “System” “easy”
Return 0 == 0
level = get_status(LEVEL);
if (level == 0) { //levelが0の場合のみ{}内を実行
message(BLUE,“System”, “easy”;);
}
 特定の条件のときのみ動く処理を
楽に書けます
ifって何?(2/2)
 RSE3.5 RSE3.2
; 制御元
getstatus LEVEL
call R0 == 0 easy
call R0 == 1 norma;
# easy
message BLUE “System” “easy”
Return 0 == 0
# easy
message BLUE “System” “normal”
Return 0 == 0
// 制御元
level = get_status(LEVEL);
If (level == 0) {
easy();
}
If (level == 1) {
normal();
}
function easy () {
message(BLUE,“System”,“easy”);
return ;
}
function normal () {
message(BLUE,“System”,“normal”);
return ;
}
 結果、分岐処理を直観的に書けるように
なりました
whileってなに?(1/2)
 RSE3.5 RSE3.2
set F1 = 0;
#rachel_play
Message BLUE, “Rachel ”, “I like master”
set F1 += 1;
jump F1 < 10 rachel_play
i = 0;
while(i< 10){
message(BLUE, “Rachel ”, “I like master”);
i++;
}
 繰り返し処理を簡単に書けます
whileってなに?(2/2)
 RSE3.5 RSE3.2
表現不能 tiger_sq_list = [
SHIBUTANI,
TAKESHIBA,
KOIWA
];
length = array_lengths(tiger_sq_list);
i = 0;
while(i< length){
//.タイガー小隊全機を無敵化
raiders = tiger_sq_list[i];
set_hp(raiders, 9999);
}
 纏めて設定をする場合にも便利です
ユーザ定義関数って何?(1/2)
 RSE3.5 RSE3.2
; 制御元
getstatus LEVEL
call R0 == 0 easy
call R0 == 1 norma;
# easy
message BLUE “System” “easy”
Return 0 == 0
# easy
message BLUE “System” “normal”
Return 0 == 0
// 制御元
level = get_status(LEVEL);
If (level == 0) {
print_level(“easy”);
}
If (level == 1) {
print_level(“normal”);
}
function print_level(level_name) {
message(BLUE,“System”, level_name);
return ;
}
 値以外が同じ処理などで、
処理を再利用することができます
ユーザ定義関数って何?(2/2)
 RSE3.5
/**
* ハヤトのfoxメッセージを纏める
*/
function hayato_fox () {
fox_type = get_fox_type(HAYATO);
if (fox_type == 1) {
message(BLUE, “レイチェル”, “FOX1!!”);
}
else if (fox_type == 2) {
message(BLUE, “レイチェル”, “FOX2!!”);
}
}
 処理グループを纏める場合にも使います
 EFFYの特殊起動なども簡単に纏ることができ
再利用が可能になります
call, returunの移行
 RSE3.5 RSE3.2
; 呼び出し元
call 0 == 0 test
; test
#test
message BLUE “レイチェル” “大好きマスタ”
Return 0 == 0
// 呼び出し元
test();
//test
function test () {
message(BLUE,“レイチェル”,“大好きマスタ”);
return ;
}
 上のスクリプトは両方ともまったく同じ
動作をします
 呼び出し方、書き方、返り方が変わっただけ
 ね?簡単でしょう。
#includeって何?(1/2)
 mission01.spt common.inc
function easy () {
message(BLUE,“System”,“easy”);
return ;
}
function normal () {
message(BLUE,“System”,“normal”);
return ;
}
#include common.inc
level = get_status(LEVEL);
If (level == 0) {
easy();
}
If (level == 1) {
normal();
}
 mission02.spt
#include common.inc
level = get_status(LEVEL);
If (level == 0) {
easy();
}
If (level == 1) {
normal();
}
 多く使う処理を1ファイル書いたら
それを使いまわせるようになります
 RS3のfox系のメッセージや、EFFYの特殊機動
の流用が楽になります
#includeって何?(2/2)
 mission01.spt common.inc
function easy () {
message(BLUE,“System”,“easy”);
return ;
}
function normal () {
message(BLUE,“System”,“normal”);
return ;
}
//赤字はcommon.incの内容
function easy () {
message(BLUE,“System”,“easy”);
return ;
}
function normal () {
message(BLUE,“System”,“normal”);
return ;
}
level = get_status(LEVEL);
If (level == 0) {
easy();
}
If (level == 1) {
normal();
}
 #includeがある行に指定されたファイルの
内容が展開されるイメージです
ご清聴ありがとうございました
本日はここまで!

More Related Content

What's hot

Serverspecを使ってみた話
Serverspecを使ってみた話Serverspecを使ってみた話
Serverspecを使ってみた話Yasufumi Moritake
 
serverspecみんなで集めて(゚Д゚)ウマー?
serverspecみんなで集めて(゚Д゚)ウマー?serverspecみんなで集めて(゚Д゚)ウマー?
serverspecみんなで集めて(゚Д゚)ウマー?Sho Hashimoto
 
リアルタイムOSの必要性とTOPPERS/SSPの紹介
リアルタイムOSの必要性とTOPPERS/SSPの紹介リアルタイムOSの必要性とTOPPERS/SSPの紹介
リアルタイムOSの必要性とTOPPERS/SSPの紹介NSaitoNmiri
 
Itamae-Serverspec入門
Itamae-Serverspec入門Itamae-Serverspec入門
Itamae-Serverspec入門辰徳 斎藤
 
ret2dl resolve
ret2dl resolveret2dl resolve
ret2dl resolvesounakano
 
さわってみようTOPPERS/SSP
さわってみようTOPPERS/SSPさわってみようTOPPERS/SSP
さわってみようTOPPERS/SSPNSaitoNmiri
 

What's hot (8)

about dakota6.7 gui
about dakota6.7 guiabout dakota6.7 gui
about dakota6.7 gui
 
Serverspecを使ってみた話
Serverspecを使ってみた話Serverspecを使ってみた話
Serverspecを使ってみた話
 
serverspecみんなで集めて(゚Д゚)ウマー?
serverspecみんなで集めて(゚Д゚)ウマー?serverspecみんなで集めて(゚Д゚)ウマー?
serverspecみんなで集めて(゚Д゚)ウマー?
 
リアルタイムOSの必要性とTOPPERS/SSPの紹介
リアルタイムOSの必要性とTOPPERS/SSPの紹介リアルタイムOSの必要性とTOPPERS/SSPの紹介
リアルタイムOSの必要性とTOPPERS/SSPの紹介
 
Itamae-Serverspec入門
Itamae-Serverspec入門Itamae-Serverspec入門
Itamae-Serverspec入門
 
ret2dl resolve
ret2dl resolveret2dl resolve
ret2dl resolve
 
さわってみようTOPPERS/SSP
さわってみようTOPPERS/SSPさわってみようTOPPERS/SSP
さわってみようTOPPERS/SSP
 
Rake
RakeRake
Rake
 

Viewers also liked

とある技術の快速聊天
とある技術の快速聊天とある技術の快速聊天
とある技術の快速聊天wakaba
 
Percubaan Upsr Matematik 2008
Percubaan Upsr Matematik 2008Percubaan Upsr Matematik 2008
Percubaan Upsr Matematik 2008cikgusabriconvent
 
Guia Práctica Mundial Sudáfrica 2010
Guia Práctica Mundial Sudáfrica 2010Guia Práctica Mundial Sudáfrica 2010
Guia Práctica Mundial Sudáfrica 2010JugadaPreparada
 
Pain Control
Pain ControlPain Control
Pain Controllk1759
 
tien geboden van een antilliaan
tien geboden van een antilliaantien geboden van een antilliaan
tien geboden van een antilliaanDiana Keyen
 
Travel Agencies 2009 B
Travel Agencies 2009 BTravel Agencies 2009 B
Travel Agencies 2009 Bargenterav
 
How To Fill Forms & How To Serve 5B 2009-B
How To Fill Forms & How To Serve  5B 2009-BHow To Fill Forms & How To Serve  5B 2009-B
How To Fill Forms & How To Serve 5B 2009-Bargenterav
 
Like & Dislike
Like & DislikeLike & Dislike
Like & Dislikeargenterav
 
Restaurants (According To Building Structure)
Restaurants (According To Building Structure)Restaurants (According To Building Structure)
Restaurants (According To Building Structure)argenterav
 
Happiness In A Nutshell - Andrew Matthews
Happiness In A  Nutshell - Andrew MatthewsHappiness In A  Nutshell - Andrew Matthews
Happiness In A Nutshell - Andrew MatthewsBharat Subbaraman
 
Pudhuaaru KGFS Newsletter Issue VII
Pudhuaaru KGFS Newsletter Issue VIIPudhuaaru KGFS Newsletter Issue VII
Pudhuaaru KGFS Newsletter Issue VIIBharat Subbaraman
 

Viewers also liked (18)

paradijs
paradijsparadijs
paradijs
 
とある技術の快速聊天
とある技術の快速聊天とある技術の快速聊天
とある技術の快速聊天
 
Percubaan Upsr Matematik 2008
Percubaan Upsr Matematik 2008Percubaan Upsr Matematik 2008
Percubaan Upsr Matematik 2008
 
Padurea Baneasa
Padurea BaneasaPadurea Baneasa
Padurea Baneasa
 
Guia Práctica Mundial Sudáfrica 2010
Guia Práctica Mundial Sudáfrica 2010Guia Práctica Mundial Sudáfrica 2010
Guia Práctica Mundial Sudáfrica 2010
 
pps
ppspps
pps
 
virus
virusvirus
virus
 
Wishes
WishesWishes
Wishes
 
Pain Control
Pain ControlPain Control
Pain Control
 
tien geboden van een antilliaan
tien geboden van een antilliaantien geboden van een antilliaan
tien geboden van een antilliaan
 
Presentatie2
Presentatie2Presentatie2
Presentatie2
 
Travel Agencies 2009 B
Travel Agencies 2009 BTravel Agencies 2009 B
Travel Agencies 2009 B
 
How To Fill Forms & How To Serve 5B 2009-B
How To Fill Forms & How To Serve  5B 2009-BHow To Fill Forms & How To Serve  5B 2009-B
How To Fill Forms & How To Serve 5B 2009-B
 
Like & Dislike
Like & DislikeLike & Dislike
Like & Dislike
 
Restaurants (According To Building Structure)
Restaurants (According To Building Structure)Restaurants (According To Building Structure)
Restaurants (According To Building Structure)
 
Tours
ToursTours
Tours
 
Happiness In A Nutshell - Andrew Matthews
Happiness In A  Nutshell - Andrew MatthewsHappiness In A  Nutshell - Andrew Matthews
Happiness In A Nutshell - Andrew Matthews
 
Pudhuaaru KGFS Newsletter Issue VII
Pudhuaaru KGFS Newsletter Issue VIIPudhuaaru KGFS Newsletter Issue VII
Pudhuaaru KGFS Newsletter Issue VII
 

Similar to Rse3.2からRse3.5への移行

[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥Insight Technology, Inc.
 
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...Suguru Ito
 
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
How to use STARC RTL Design Style Guide Verilog-HDL 2011 versionHow to use STARC RTL Design Style Guide Verilog-HDL 2011 version
How to use STARC RTL Design Style Guide Verilog-HDL 2011 versionKiyoshi Ogawa
 
Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんかcch-robo
 
131101 foss4 g_tokyo_grass_shell_presentation
131101 foss4 g_tokyo_grass_shell_presentation131101 foss4 g_tokyo_grass_shell_presentation
131101 foss4 g_tokyo_grass_shell_presentationTakayuki Nuimura
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいcharsbar
 
serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例Koichi Shimozono
 
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話Kentarou Takeda
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方Soudai Sone
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE辰徳 斎藤
 
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Masayuki Ozawa
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法博文 斉藤
 
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpringオープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpringMeiji Kimura
 
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説Takateru Yamagishi
 
Write good parser in perl
Write good parser in perlWrite good parser in perl
Write good parser in perlJiro Nishiguchi
 
とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)Kazuhiro Yoshikawa
 
Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7Sea Mountain
 
ECMAScript 6 Features(PDF 版)
ECMAScript 6 Features(PDF 版)ECMAScript 6 Features(PDF 版)
ECMAScript 6 Features(PDF 版)taskie
 

Similar to Rse3.2からRse3.5への移行 (20)

[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
 
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
 
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
How to use STARC RTL Design Style Guide Verilog-HDL 2011 versionHow to use STARC RTL Design Style Guide Verilog-HDL 2011 version
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
 
Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんか
 
131101 foss4 g_tokyo_grass_shell_presentation
131101 foss4 g_tokyo_grass_shell_presentation131101 foss4 g_tokyo_grass_shell_presentation
131101 foss4 g_tokyo_grass_shell_presentation
 
実は怖くないDevOps
実は怖くないDevOps実は怖くないDevOps
実は怖くないDevOps
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
 
L-R
L-RL-R
L-R
 
serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例
 
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
 
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
 
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpringオープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
 
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
 
Write good parser in perl
Write good parser in perlWrite good parser in perl
Write good parser in perl
 
とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)
 
Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7
 
ECMAScript 6 Features(PDF 版)
ECMAScript 6 Features(PDF 版)ECMAScript 6 Features(PDF 版)
ECMAScript 6 Features(PDF 版)
 

Rse3.2からRse3.5への移行

  • 2. ToC  RSE3.5とは  RSE3.5とRSE3.2の違い  RSE3.5で出来るようになったこと  RSE3.5で廃止・変更されたもの  RSE3.2系からRSE3.5へ移行の手引き
  • 4. RSE3.5とRSE3.2の違い  言語仕様が異なる  SpE4で実装される「SphereScript」の先行実装 のため  BASIC風の旧スクリプトからC系風に進化した  既存スクリプトとの突合試験用に旧スクリプトの 動作もサポートしている  構造化言語となった  制御構文が追加された  「関数」「ユーザ定義関数」が取り入れられた  「変数」が使えるようになった  #includeによるスクリプト内スクリプト展開が可 能になった  コメント記法が;から//へ
  • 5. RSE3.5で出来るようになったこと  制御構文の拡張  if、for、gotoなど  ユーザ定義関数  function get_anego () {}  外部ファイルインクルード  #include  複数行コメント  /* ここはコメント */
  • 6. RSE3.5で廃止・変更されたもの  call命令(SpE4で廃止予定)  ユーザ定義関数で代用  return命令(変更)  判定無しで直で返る  常にreturn 0 == 0なイメージ  jump命令(変更)  goto文に変更  ラベル、レジスタ、カウンタ(廃止)  全て変数で賄えるため
  • 7. RSE3.5へ移行の手引き のToc  命令の書き方の変更  値の設定  配列って何?  ifって何?  whileって何?  ユーザ定義関数って何?  call, returunの移行  #includeって何?
  • 8. 命令の書き方の変更(1/2)  RSE3.5 RSE3.2 message BELU, “レイチェル”, “マスタ♡” message(BELU, “レイチェル”, “マスタ♡”);  命令名の直後に「(」を追加  設定する値群の末尾に「);」を追加  たったそれだけをするだけでおk!
  • 9. 命令の書き方の変更(2/2)  RSE3.5 RSE3.2 sethp L1, 9999 ; ラベル1(まるくん)を無敵化 set_hp(MARK, 9999); //まるくんを無敵化  一部の命令の名前が変わっています  変わっているといっても、単語間の区切りに _(アンダースコア)が入っただけですが
  • 10. 値の設定(1/3)  RSE3.5 RSE3.2 ; 値の設定:F1に1をセット set F1 = 1 // 値の設定:F1に1をセット F1 = 1;  行の頭からsetを取っただけ
  • 11. 値の設定(2/3)  RSE3.5 RSE3.2 ; 値の設定 set F1 = 1 ; 現在のレベルの取得 getstatus LEVEL; ; R0に現在のレベル値が入っている // 値の設定 F1 = 1; //現在のレベルの取得 R0 = get_status(LEVEL); //R0に現在のレベル値が入っている  基本的に 変数名 = 値 以外での値の設定(代入)はありません
  • 12. 値の設定(3/3)  RSE3.5 RSE3.2 ; 値の設定 set F1 = 1 ; 現在のレベルの取得 getstatus LEVEL; ; R0に現在のレベル値が入っている ; そのままではR0以外の名前にはできない ; R0を見ただけではどんな値が入っているか ; 判らない // 値の設定 F1 = 1; //現在のレベルの取得 level= get_status(LEVEL); // levelに現在のレベルが入っている // levelって書いてあるんだからlevelの値が //入っているのだろうと見当がつく  値の名前は自由に設定できるように なりました  何が入っているかは「見れば判る」はず
  • 13. 配列って何?  RSE3.5 RSE3.2 表現不能 tiger_sq_list = [ SHIBUTANI, TAKESHIBA, KOIWA ]; //タイガー小隊1番機を取得 raiders = tiger_sq_list[0];  グループや繰り返し処理を行いたいものを 簡単に表現できます
  • 14. ifって何?(1/2)  RSE3.5 RSE3.2 getstatus LEVEL call R0 == 0 easy ;levelが0の場合はeasyへジャンプ ;帰ってくるかはeasy側の処理次第 # easy message BLUE “System” “easy” Return 0 == 0 level = get_status(LEVEL); if (level == 0) { //levelが0の場合のみ{}内を実行 message(BLUE,“System”, “easy”;); }  特定の条件のときのみ動く処理を 楽に書けます
  • 15. ifって何?(2/2)  RSE3.5 RSE3.2 ; 制御元 getstatus LEVEL call R0 == 0 easy call R0 == 1 norma; # easy message BLUE “System” “easy” Return 0 == 0 # easy message BLUE “System” “normal” Return 0 == 0 // 制御元 level = get_status(LEVEL); If (level == 0) { easy(); } If (level == 1) { normal(); } function easy () { message(BLUE,“System”,“easy”); return ; } function normal () { message(BLUE,“System”,“normal”); return ; }  結果、分岐処理を直観的に書けるように なりました
  • 16. whileってなに?(1/2)  RSE3.5 RSE3.2 set F1 = 0; #rachel_play Message BLUE, “Rachel ”, “I like master” set F1 += 1; jump F1 < 10 rachel_play i = 0; while(i< 10){ message(BLUE, “Rachel ”, “I like master”); i++; }  繰り返し処理を簡単に書けます
  • 17. whileってなに?(2/2)  RSE3.5 RSE3.2 表現不能 tiger_sq_list = [ SHIBUTANI, TAKESHIBA, KOIWA ]; length = array_lengths(tiger_sq_list); i = 0; while(i< length){ //.タイガー小隊全機を無敵化 raiders = tiger_sq_list[i]; set_hp(raiders, 9999); }  纏めて設定をする場合にも便利です
  • 18. ユーザ定義関数って何?(1/2)  RSE3.5 RSE3.2 ; 制御元 getstatus LEVEL call R0 == 0 easy call R0 == 1 norma; # easy message BLUE “System” “easy” Return 0 == 0 # easy message BLUE “System” “normal” Return 0 == 0 // 制御元 level = get_status(LEVEL); If (level == 0) { print_level(“easy”); } If (level == 1) { print_level(“normal”); } function print_level(level_name) { message(BLUE,“System”, level_name); return ; }  値以外が同じ処理などで、 処理を再利用することができます
  • 19. ユーザ定義関数って何?(2/2)  RSE3.5 /** * ハヤトのfoxメッセージを纏める */ function hayato_fox () { fox_type = get_fox_type(HAYATO); if (fox_type == 1) { message(BLUE, “レイチェル”, “FOX1!!”); } else if (fox_type == 2) { message(BLUE, “レイチェル”, “FOX2!!”); } }  処理グループを纏める場合にも使います  EFFYの特殊起動なども簡単に纏ることができ 再利用が可能になります
  • 20. call, returunの移行  RSE3.5 RSE3.2 ; 呼び出し元 call 0 == 0 test ; test #test message BLUE “レイチェル” “大好きマスタ” Return 0 == 0 // 呼び出し元 test(); //test function test () { message(BLUE,“レイチェル”,“大好きマスタ”); return ; }  上のスクリプトは両方ともまったく同じ 動作をします  呼び出し方、書き方、返り方が変わっただけ  ね?簡単でしょう。
  • 21. #includeって何?(1/2)  mission01.spt common.inc function easy () { message(BLUE,“System”,“easy”); return ; } function normal () { message(BLUE,“System”,“normal”); return ; } #include common.inc level = get_status(LEVEL); If (level == 0) { easy(); } If (level == 1) { normal(); }  mission02.spt #include common.inc level = get_status(LEVEL); If (level == 0) { easy(); } If (level == 1) { normal(); }  多く使う処理を1ファイル書いたら それを使いまわせるようになります  RS3のfox系のメッセージや、EFFYの特殊機動 の流用が楽になります
  • 22. #includeって何?(2/2)  mission01.spt common.inc function easy () { message(BLUE,“System”,“easy”); return ; } function normal () { message(BLUE,“System”,“normal”); return ; } //赤字はcommon.incの内容 function easy () { message(BLUE,“System”,“easy”); return ; } function normal () { message(BLUE,“System”,“normal”); return ; } level = get_status(LEVEL); If (level == 0) { easy(); } If (level == 1) { normal(); }  #includeがある行に指定されたファイルの 内容が展開されるイメージです