MAMEなblog ~絵描きな戦記~
下手の横好きで迷走するM∀MEのブログ. ブルブラ攻略有り(なぜ?).オリジナル小説もあります. 絵を載せるために始めたブログだったはずなのだが・・・. 今はもっぱらゲーム製作.

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

報告的に

1つ難関をクリアしたのでゲーム製作に戻っているM∀MEです.
木曜には試験あるけど.
 
前回,新しい画面スクロールぃぇーいう話でしたが問題発見.
グラフィカルボタンの上にいるかどうかを判定して画面スクロールをすると,逆に言えばボタンの上にいるときしかスクロールしないわけで.
つまりウインドウ外にマウスを持っていくとボタンから出てしまうのでスクロールしないという事態に.
ウインドウの外でもマウスを端に持っていったというイメージなので,やはりスクロールしないとダメかなあというわけで.
仕方がないのでさらなる代替案を発見・開発しました.
それがこれ,kag.rightClickHook です.
右クリックが押されたときに動作するサブルーチンを作れるようなもので,
 [iscript]
 function myrightClickHook()
 {
  kag.process('', '*back');
  return true;
 }
 [endscript]
という感じで{ }内に動作内容を書き込み,
 [eval exp="kag.rightClickHook.add(myrightClickHook)"]
で,発動させます.
これをスクロール前に書き込んでおけばスクロール中に右クリックで*backに飛ぶので,無限ループから抜けることができます.
このままではスクロール時以外でも右クリックで*backラベルに飛んでしまうので,
 [eval exp="kag.rightClickHook.remove(myrightClickHook)"]
とすることで内容を消去し,デフォルトに戻すことができます.
 kag.process
は前回にも登場した,強制的にジャンプを行うタグ.(多分正式にはタグじゃない)
{ }内の最後に
 retrun true;
を書くのを忘れないように.
 myrightClickHook
というのはオリジナルネームなので,好きに名付けることができます.
ちなみに左クリックも
 kag.leftClick.Hook
でアクセスできるので,設定が可能です.
左クリックの場合,選択肢をクリックしたときなどはフック(Hook)は動作しません.
マップ上でユニットを選択してステータスを見るときなどは右も左も設定しておく必要があるかと思います.
画面全体をボタンにしても左クリックでステータス画面に移れますが,その場合右クリックが効きませんので.
キーボードからの入力を読む場合には
 kag.keyDownHook
を使います.どのキーかは仮想キーコードを使うらしい.(使ったことないです)
 
 
では,明日は勉強しようと宣誓しつつ今日はこの辺で
ホントにゲーム製作報告だけでした
 
スポンサーサイト

テーマ:日記 - ジャンル:アニメ・コミック

NANA MIZUKI LIVE FORMULA 2007-2008

の埼玉公演に行ったというのにブログを更新しなかったというのはなかなか筋金入りのサボり魔のM∀MEです.
というか気付けば全然違う記事で更新しとる…….
問題なく楽しかったのですけどね.
朝の5:30に家を出たというのも今となってはいい思い出です.
相変わらず楽しいのだが,なんというかマンネリ化してきた.
や,ライブそのものではなくて,ライブに行くという行為が.
3回目で何を言ってやがるって感じですが,1回目は初めてでワクワクだったし,2回目は慣れた分楽しめたって感じだった.最長ライブでもあったし.
次は何かイベント事が欲しいところです.
行ったこと無い人と行ってみるとか.
 
昨日はミュージックステーションで2007年シングルベスト50をやっていて,もってけセーラー服が40位に入っていた.
健闘である.
もし妹と見ていたら二人して吹き出していただろうと思ったのは内緒.
 
今日は1秒の世界という番組を見た.
1秒間でどれだけの森がなくなってるとか氷が溶けてるとかそういう紹介の仕方をする番組.
で,石油の消費のところで,冷蔵庫を旧型から新型へ買い換えると二酸化炭素の排出量が減るから地球にいい,という話が出ていた.
そこで紹介される数字は恐らく信用できるものなのだろうが,この手の話がでるときに必ず度外視される問題がある.
それは,その冷蔵庫の生産で排出される二酸化炭素である.
問題にならないほどそれは少ないのだろうか? 疑問である.いつかそこまで突っ込んだ番組が現れないものか.
 
ゲーム製作続報.
や,劇的な進歩はないんですけど.
技の選択画面はテキトーに作ったので,現在は攻撃可能範囲を検索するスクリプトを制作中.
格闘武器か,射撃武器か,MAP兵器か,必殺技なのか,合体攻撃なのかで検索条件を変えています.
格闘武器だと空中には攻撃できないから侵入不可マスは範囲に含まれないとか.
最近,必殺技や合体攻撃には格闘と射撃がありそうな気がしてきてどうしたものかと.
特殊攻撃ってことで空にも攻撃できることにしちゃおうかなあ.
 
あと画面スクロールが劇的進化を遂げる可能性が.
現状では,無限ループ内でマウス位置を取得し,それがウインドウ端なら画像位置をずらして画面スクロールを再現しています.
基本的に1つ前の動作に戻るのには右クリックを使えるようにしているのですが,無限ループ中はシナリオ動作中と判断されて右クリックが反応しません.
仕方ないので画面全体をボタンにして,左クリックされたら無限ループから抜ける,すなわち1つ前の動作に戻れるようにしてあります.
左クリックは反応するのがちょっと不思議ではありますが.
が,これでは画面スクロールが起こっているときだけ右クリックで戻れないという中途半端な使用に.
前から何か手はないかと思案していたのですが,先ほど天啓がありました.
onenterという,グラフィカルボタンの上にカーソルが乗ったときに実行するTJSが記述できるタグを使えばいいのではないかと.
手順としては,ウインドウ上部,下部,左部,右部の4つにわけてボタン画像を配置します.
ウインドウ中央部だけはボタンにしません.
4箇所のボタンにはonenterと強制的に指定したラベルに飛ぶkag.processを使います.
 [button onenter="kag.process('ファイル名','ラベル名')"]
こんな感じ.飛ぶラベルには画像を移動させる命令を書きます.
画像は端に行くまで移動し続ける.
で,ボタンからカーソルがでたときに実行するTJSが記述できるonleaveで画面移動を止める.
さらに,中央部にカーソルがあるときには何も動作がないので右クリックが使える,と.
我ながら名案.
問題はonleaveで強制的に移動を止めたときにバグが出ないかどうか.
出そうならonleaveとは違う手段で止めないといかんです.
まあグラフィカルボタンよりもクリッカブルマップの方が早い気もするけど.
クリッカブルマップ用画像の使い方がいまいちわからないから無理なのだ!
 
 
では,迫り来る就活に怯えつつ今日はこの辺で
マジでヤベーってばよ
 

テーマ:日記 - ジャンル:アニメ・コミック

ただひとつの愛を今 歌いたい

今日も王子でバイトでしたのよ.
気が付けば4連休のハズが,初日と最終日バイトでなんだか普通に2連休じゃんっていう.
まあお小遣いに変換されてはいるのですが.
世の中等価交換だ.
考えてみれば初日の早朝4時頃にはもう4連休計画はつまずいていたわけですね.
 
と,言いつつ本日は夕方出勤だったのでレポートを1つ済ませつつさらにプログラムを作れるくらいの余裕があったわけですよ.
なんという充実した休日であったことか.
そもそもあんな朝早くから起きてること自体が珍しい.
そんなわけで今日も吉里吉里マイだったわけですが見た目的には進展なし.
昨日載せたプログラムを汎用型に改造してました.
というのも,昨日の時点では,「フェイト」と表記させるために「フェイト」と打ち込んでました.
それじゃあフェイトが出ないときはどうすんねんということで,事前にステージ情報を専用ファイルから読み込んだ後に出撃準備プログラムに移行するようにしました.
ここをいじれば名前だけこっそり「なのは」にすることも…….
ステージ情報ファイルにはついでに敵の出撃情報も書き込んであります.
その情報も使って戦闘画面の最初は作成.
とりあえず選択した味方が配置した場所に表示されつつ,敵側も表示されるとこまで.
あとは,素早さ順に行動させたいので,素早さ判定ルーチンを思考.
したんだけど僕の頭脳では限界っぽかったのでまたも友人のS君の力を借りました.
S君の守備範囲はサハラ砂漠よりも広大です.
そんなわけでなんとなく目処はたちつつも,ユニット全員分の素早さをspeed配列に入れていかなければならない事実が発覚.
そこいらを書いて今日は終わりな感じです.
 
学んだこと
実は大変な発見がありまして.
最初の参考資料には
ゲーム変数f.は吉里吉里を再起動したときには読み込まれない.
とあったので,それはまずくねーということでほとんどの変数をシステム変数sf.で定義していたのですが.
実は僕の勘違いで,システム変数は吉里吉里起動時に読み込む変数.ゲーム変数はデータロード時に読み込む変数.という意味だったようです.
つまり1周目かどうかなどのセーブデータを超えた情報はシステム変数に.
セーブデータごとの好感度などはゲーム変数に.
一瞬の計算だけに使う変数は一時変数tf.に.
ということらしい.
まあ普通はそれくらい理解して使っているとは思いますが…….
 
では,見切り発車は怖いと痛感しつつ今日はこの辺で
水樹奈々で「SEVEN」を聞きながら
 

きっと終止符のない この旅路

現在朝の5時半ですが.
出撃準備画面のプログラムが終わったっぽいです.
全部で空行・コメント行含めて282行.
まあそれなりにスマートにできたかなとM∀ME的には好評価です.
そんなわけでしてゲーム画面を初公開.
いるかわからんけど,似たようなものを作ろうかと思っている方のためにソースも中途半端に公開.
そもそも参考にできるほど綺麗かどうかは知らん.
ひょっとしたら吉里吉里じゃない方が(ry
※画面は開発中のものであり,実物とはかなり異なります.
 というか出てる人とかなんの関係もありません.
 
game1

 ユニット選択画面
 
とてもシュールな数字が並んでいますがこれは試作だからですよ?
まずはここでユニットを選択します.
いきなり 出撃 とか選択しちゃだめです.
ユニット名の文字がリンクになっているので,マウスでクリックできます.
[link exp=f.pilot='sinjyo',f.name='新庄・運切',f.Unum=0 target=*santaku]新庄・運切[endlink][r]
[link exp=f.pilot='fate',f.name='フェイト',f.Unum=1 target=*santaku]フェイト[endlink][r]
ついでにいろいろな変数に値をいれときます.
でもこの通り,誰を選んでも飛ぶ先は *santaku です.
 
game2

 三択画面
 
選んだユニットを配置するのか能力を確認したいのかはたまた前の画面に戻りたいのかを選択します.
ラベル名もずばり *santaku .
ここのちっこい窓に名前を出したいが為に,前の画面で f.name='新庄・運切' とかやってます.
でもいまいちシナリオ変数を使えばいいのか一時変数を使えばいいのかわからん.
まあどっちだから困るってことはないんだけど.
とりあえずシステム変数以外はロードで読み込まれないってだけ押さえておけば.
ここも文字がリンクです.
すでに配置済みの場合 配置 の変わりに 取消 が表示されます.
そういや配置取りやめコマンドがないなーと思って表示されるようにしたのですが,かわりに表示されるようにしたお陰で,ついでに二重配置も防止できてしまったという棚ぼた仕様.
あと少しで防止プログラムを書くところだったのは秘密.
 
game3

 ステータス表示画面
 
能力もといステータス画面が見られます.
や,べつに言い直したことに意味はないですけど.
顔絵が上も下も一緒なのはパイロットとユニットが一緒だから.
新庄は尻神様であっても人間ですので.
実際はロボット物なので別々になります.
攻撃力等は別ファイルで定義しておいた sf.sinjyo_kogeki=110 とかから呼びだして表示してます.
技とか特殊能力とか精神コマンドは別ファイルから call を使って表示させてます.
あ,右側の1段目が技,2段目が特殊能力,3段目が精神コマンドです.
特殊能力ってのは,配置場所によって発動する能力です.
特殊能力と精神コマンドは,名前だけじゃ効果がわからないのでカーソルを乗せると効果が表示されるようになってます.
[link hint="攻撃力上昇"]【後】根性シューター[endlink]
な感じです.
要は飛ぶ先が設定されていないリンクにヒントを追加してあるだけです.
この画面だとカーソルが消えてるけど 【後】根性シューター の効果が表示されてますね.
つまり新庄君は 後衛に配置されると攻撃力が上がる ということです.
後衛とは7~9番です.
 
game4

 ユニット配置画面
 
シュールな数字をクリックすると配置されます.
2には既にフェイトを配置済み.
この画面だとカーソルが消えてるけど,色が変わってる8に乗ってます.
絵を押せるってことはグラフィカルボタン機能を使ってる(クリッカブルマップはここでは不向き)わけですが.
シュールな数字達は100×100の画像です.
本来なら画像を3つつなげて300×100にしとかないといけなところですが.
上に幅100までは透明,幅101~300は半透明の画像をグラフィカルボタンとして置いているので,シュールな数字達がボタンのように見えるわけです.
[image storage="masu_1.png" layer=0 page=fore left=240 top=16]
[layopt layer=0 page=fore visible=true]
[layopt layer=message9 page=fore visible=true]
[position layer=message9 page=fore left=0 top=0 width=800 height=600 marginl=0 margint=0 marginr=0 marginb=0 color=0xffffff opacity=0]
[current layer=message9 page=fore]
[locate x=240 y=16]
[button graphic="button.png" exp="f.haichizumi[f.Unum]=1,f.layer=0" clickse="ピコ2.wav" target=*umekomi]
こんな感じで.
clickse="ピコ2.wav" があるので押すと初音ミクの声で ぴこ♪ って言います.
友人のS君が作ってくれました.(S君ありがとう)
ちなみにボタン画像はメッセージレイヤに乗るので,この場合は専用の透明メッセージレイヤを用意する必要があります.
で,押すと *umekomi に飛んで画像が埋め込まれます.
その際に配置済みフラグ(配列) f.haichizumi[f.Unum] に配置したマスの数字を入れておきます.
これを使って三択に 配置 の変わりに 取消 を表示させたり,その 取消 を選んだときにどこにある画像を数字に戻せばいいか判断したりしてます.
ただこのままだと,配置場所選択でフェイトの場所に新庄を上書きしたあとにフェイトの三択画面にいくと 配置 が 取消 と表示されてしまう(新庄の配置済みフラグ f.haichizumi[0] が0以外の数字になったままの為)ので,*umekomi の際に毎回
[iscript]
var damy, i;
damy=f.haichizumi[f.Unum]; //配置済みフラグをダミーに受け渡し

for(i=0; i<=1; i++)
{
if(f.haichizumi[i]==f.layer+1)
f.haichizumi[i]=0;
}

f.haichizumi[f.Unum]=damy; //ダミーから配置済みフラグを戻す
[endscript]
こんな感じで上書きされたのかどうかを判定してます.(上書きされてたら配置済みフラグを0に)
ちなみに[iscript]と[endscript]に囲まれた場所はKAGではなくTJSを書き込みます.
一応説明しますと,吉里吉里はKAGという言語で書かれたシナリオファイルを再生しますが,KAGはTJSという言語で作られています.
そんなわけで吉里吉里はTJSも読めるのですというかコンフィグとか基本設定とかはTJSです.
そしてKAGにはif文がないので,for文を使うにはTJSで書き込むしかないという…….
ここでは i<1 の間しか繰り返してないけどこれはユニットが2体しかいなから.
ユニット数にあわせるので,将来的にはここも変数かなあとか.
 
 
とまあ,本日は60%は吉里吉里知ってる人にしかわからず,10%は本人にしかわからないんじゃないかという内容でお送りしました.
では,でもそんなの気にせず今日はこの辺で
水樹奈々で「Sing Forever」を聞きながら
 

テーマ:日記 - ジャンル:アニメ・コミック

昨夜の出来事.

時は丑三つ時もとうにすぎた深夜4時過ぎ.
僕はパソコンに向かっていた.
父「まだ起きてるのか?」
M∀ME「ああ」
父「課題がまだ終わらないの?」
M「別にそんなことはないけど.明日大学休みだから」
父「はあ!? 聞いてないぞ」
M(いや,言ってな……)
父「だったら明日働け.だから早く寝ろ」
M「何ですとー!?」
 
というわけで家族の一方的な愛に包まれて今日は王子でバイトでしたのよっていうか3時間くらいしか寝られなかったっちゅーねん.
大学休みだとか言わなきゃよかった.
 
そんなことがありまして,昨日更新するはずだった吉里吉里関係.
といってもなんだかどこまでやったのかうろ覚え…….
ユニット選択→ステータス表示を完成させたはず.
そこで
学んだこと
エンティティ
 タグの属性値をTJS式で表す機能をエンティティと呼ぶ.
 &TJS式 と表記する.
 TJS式ってのはつまり計算式.従って,属性値に1つの数を書くことろを計算式にしたいときに使う機能です.
 数式を入れられるということは変数が使えるということで.
 変数1つでも計算式なので,属性値に変数の中身を使うことができたわけです.
 つまるところラベル名に変数を入れてジャンプすることが可能だったのですよ.
 これで構想がいろいろ実現しましたよって.
 メデタシメデタシ.
 
 
では,なんかあまり休めそうもない連休に絶望しつつ今日はこの辺で
CLANNADで泣きそうな夜に
 

テーマ:日記 - ジャンル:アニメ・コミック

プロフィール

M∀ME

Author:M∀ME
・職業
学生(医療関係のロボットを日々研究中)
・趣味
お絵かき,アニメ鑑賞,読書
・苦手なもの
早起き,勉強,トマト
・好きな言葉
刹那主義(今が楽しければいーじゃん)
・好きな小説
終わりのクロニクル,空の境界,グインサーガ
・好きな歌手
水樹奈々,カーペンターズ,ビートルズ

最近の記事

最近のコメント

カテゴリー

回る~回ってく♪

ツ・ナ・ガ・ル!

月別アーカイブ

ラッセン美術館

ブログ内検索

最近のトラックバック

RSSフィード

ブロとも申請フォーム

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。