FC2ブログ

この前の会合の続き

K「明日会合があるのに、今更先週の会合の内容を伝えようとしているケーケーと……」
J「まったく更新される気配がない小説『キュリアと謙次』の地の文担当、J・イノブンです。どうもおねがいします」
K「そんで、前回の会合の内容には続きがあるわけですよ」
J「明日が次回の会合なのにか? しかもカラオケ付き」
K「そのとおり!! 明日は歌いまくるぜ!! おぉ!!」
J「で、話を戻して、前回の内容の続きとは一体?」
K「そーそー、この前、TOHOが欠席で、それなのにTOHOの書いたプロットをほか三人で読んだわけですが……」
J「ん? それで? ……おーい、反応しろよ、おーい」
K「……長い」
J「へ?」
K「とてつもなく長いプロットだった。僕がこのプロットを一人で読もうとしなかったのは、プロットの文章量が長かったためなのだ。これではRPGが完成するのはいつになるやら」
J「へえ、……ってチョイ待て」
K「ん?」
J「それってさ、お前がプロットを読む前にすでに長すぎるとわかってたんだろ? じゃあそれもらったときにTOHさんに文句言っとけばよかったのに」
K「いや、そのときは脚本が来てなくて、そして脚本とプロットを比較したとき、作ろうとしているRPGの会話イベントの量の多さにようやく気付かされたのです。……ちなみに、脚本は読んだけど、もらった時はRPGが長くなることに気付けなかった俺自重wwww」
J「マジ自重しろwwww」
K「それで、Skypeを利用して、TOHOに連絡を取ったんだ」
ケーケー「おーい、この量だとマジ、4年ぐらいかかるぞwwww」
TOHO「じゃあ、体験版ができてから、あとはイベント類、僕が担当するよ」
ケーケー「でも時間がかかるだろう」
TOHO「いんや、4か月あれば十分」
J「TOHOさん自重wwww」
K「いや、奴の作業量なら、本当に4カ月でできるかもしれない。僕は小説を一話更新するのに1カ月かかるが……」
J「そんだけかかってできてないだろwwww」
K「奴は、一か月あればノート一冊分更新してるというほどの作業量なのだ。こいつなら本当に4カ月で完成するかもしれない」
J「ということで、お願いしたわけだ」
K「んだ」
J「ところで、体験版というのは?」
K「ああ、そうそう。僕らが制作にどのくらいかかるか、そしてこのプログラムでゲームが動くかを確認するための『体験版』です。ダンジョンは4つ」
J「で、完成版のダンジョンの数は?」
K「21個wwww」
J「となると、残りの17個を4カ月で作るわけだ、TOHOさんはwwww」
K「そのとおりwwww」
J「そういえば今更だが、TOHOさんの名前の由来って、かの有名な同人STGからきてる?」
K「んにゃ、違うらしい。本人がいうには、TO砲というチームが元ネタらしい。正直、僕はうろ覚えですが」
J「そーなのかー」
K「逆に僕が好きですね、『東方』は。けっこうやりこんだからなあ」
J「……さて、このままだとこの人、東方の話をしやがるかもしれないので、そろそろこの記事を終え……」
K「待て、勝手に終わらせるな!!」
J「え? まだ前回の会合でなにか言うことがあった?」
K「No,I don't」
J「じゃあ終了で」
K「おーい!! ふざけるなー!! 東方の話をさせろー!!」
スポンサーサイト



敵キャラの役は誰の耳?

K(ケーケー)「今日もKOKOの会合を開きましたとさ、めでたしめでたし」
J(J・イノブン)「終わるな!! せめて何をやったのか報告しろ!!」
K「まったく、しょうがないなあ」
J「しょうがなくないって。んじゃ報告よろ」
K「おk。まず、前回、サークル員全員に、『できれば敵キャラを5体以上考えてくれ』と言っておいたのですが、TOHOは欠席で、残りの三人で合計14体集まりました」
J「おお、じゃあ一人だけ、一体作れなかったわけだ」
K「いや、それが違うんだな。なんと、卍幽が9体も考えてくれたのだ」
J「結構考えてくれてるじゃないか」
(※われわれは、RPG制作が初めてなので、『えー? そんなに頑張ってないじゃん』と思われることも、『~も』とか、『こんなに頑張ってくれたのだ』的に評価することが多々あると思いますので、そこら辺をご了承ください。所詮はダラダラサークルです)
J「待てよ、それじゃああとは5体しか残ってないよな? おいケーケー、お前は何体考えたんだ?」
K「5体。さすがに言いだしっぺだからね。下手絵だけど」
J「じゃあjusticeさんは?」
K「駄目だなあイノブン、お前は引き算もできないのかあ?」
J「まさかの0体!?」
K「お前、そんなことを言うなよ!! あいつはこんなに頑張ってくれたじゃないか!!」
J「おまwwww 少なくとも頑張ってはいないだろ。しかもあの人、敵キャラ担当ですぜ?」
K「……おい、イノブン。お前はこの記事に書いてあることをちゃんと読んでいないのか?」
(※われわれは、RPG制作が初めてなので、『えー? そんなに頑張ってないじゃん』と思われることも、『~も』とか、『こんなに頑張ってくれたのだ』的に評価することが多々あると思いますので、そこら辺をご了承ください。所詮はダラダラサークルです)
J「いや、読んでるけどさ、さすがに度が過ぎないか?」
K「いや、だってあいつはあんなに頑張ってくれたんだぜ!?」
(※われわれは、RPG制作が初めてなので、以下略)
J「わかったわかった。わかったからそれごとコピーして持ってこないでくれ」
(※結論:KOKOはテキトーにゲーム作ろうとしてるダラダラサークル)
K「というわけで、敵キャラの役を卍幽にとってかわってもらった。彼なら適任だ」
J「てことは、ステータスの役がjusticeさんに?」
K「その通り。ま、卍幽もまるっきりステータス考えてなかったみたいだし」
J「……へえ、卍幽さんも頑張ってたみたいですねえ(苦)」
K「まあ、一番の責任は、役割をかなりテキトーにふった僕にあるんですけどね(笑)」
J「(笑)じゃねえよ!?」
K「と、まあこんな感じで各人が気の向くままに作業してるサークルですので、その辺をよろしくお願いします」
J「まあ、人それぞれ適不適があるからなあ」
K「その通り、僕もプログラミングじゃない作業はほとんどしてないし。BGMとか効果音とか、マップチップとかどうしよう」
J「まあ、こんな五月病患者が仕切ってるサークルだからなあ……」
K「ま、みんないろいろやることがあるし、しょうがない」
J「じゃあまあそういうことにするか。で、他には今日、なにかやったのか?」
K「僕のつくったプログラムを見せました。とはいっても、キャラがフィールドを移動するだけのプログラムですが」
J「前回、それすでに作ってなかったか?」
K「いや、今回はまた別。ちょっとしたゲームになりました」
J「ゲームって、どんな?」
K「こんな↓」
①ステージ0には、5つのスイッチがランダムに配置され、決まった位置に宝箱が表示されます
②3つの宝箱のうち、ひとつは鍵、二つは耳っ苦[ミミック]
③5つのスイッチを押すと、階段が現れ、ステージ1に進められる
④ステージ1の奥に、鍵穴がある
⑤鍵をもっていくと、さらに奥へ進められる
⑥ゴール!! 敵に出会った数が表示され、アプリケーションが終了する
J「つまり、ただ移動するプログラムではないわけだ」

K「とりあえず、今回もかなり記事が長くなってしまったので、また次回に回します。ではまた」
J「シーユーアゲイン!!」

RPG開発サークル『KOKO(ココ)』結成!!

K「前回の記事で言ってたRPG開発サークルの名前を、KOKO[ココ]に決定しました!」
J「ま、実を言うと、結成は8月3日ぐらいですけどね。作ったRPGを配布するかはまだ未定」
K「とりあえず今回は、当サークルのメンバーを紹介したいと思います」
①ケーケー 担当:メインプログラミング
②TOHO[ティーオーホー] 担当:シナリオ
③卍幽[まんじゅう] 担当:ステータス
④justice 担当:敵キャラ設定
K「以上、4名です。ただし、担当はひとまずという形で決めたので、各人が他の作業を担当することもあります」
J「4人か、……あれ、そういえばイノブンは? このなか入ってないの?」
K「俺のネガティブ思考のくせしてほざくな」
J「そこまでネガティブな発言してない気がするが……」
K「あと、開発言語はWin32 APIを予定しております。とはいえ、僕はまだプログラミング初心者なので、ひとつひとつ、小さなプログラムから開発していっています」
J「たとえば?」
K「ただ文字表示するだけのプログラムだったり、キャラがマップ上を移動するだけのプログラムだったり……」
J「ほんとに細かいなあ。いっきにゲームをつくっちゃえよ」
K「そんなことやったら、未来永劫、RPGなんかできないぞ。こんな小さなプログラムでも、けっこうバグがおきまくってるんだから」
J「へえ、たとえば?」
K「文字表示だったら、最後の文字以外が太字になってたり(原因:文字を表示する枠を上書きしていなかったため、同じ場所に同じ文字が何度も書かれていたため。このプログラムは流し文字を表示するものなので、時間がたつにつれ、表示する文字数を増やすものであった)、また、マップ移動だったら、キャラが表示されなかったり(原因:インスタンスハンドルのコピーのし忘れで、BitBlt関数が使えなかった。BitBlt関数は、画像を画面に張り付ける関数と思っておいてください)、画面がスクロールされるとき、普通とは逆向きにスクロールし、おしたボタンの方向に画面が移動して、結果、ウィンドウからすぐにキャラが映らなくなったりと(原因:BitBlt関数の値の入力ミス)」
J「なんか、お前が書いた原因のせいで、かなり分かりにくくなってるな。でも、普通とは逆にスクロールするのは痛くないか?」
K「ああ。キャラが移動する方向に画面が移動するからなあ。当然、ウィンドウ内の画面しか映らず、すぐにキャラがうつらなくなってしまうという……。正直、ウケた」
J「ウケるな」
K「それでは、今日はこのぐらいで、ではまた」
J「ごきげんよう」

WM_KEYDOWNには注意

※この記事は、WINDOWSプログラミングを知っている方対象です。知らない方は読んでもしっくりこない可能性があるので、ご了承ください。
K「Win32 APIに入門したてのみなさん! WM_KEYDOWNには気をつけてください!!」
J「うわ、びっくりした。え、何? WM_KEYDOWN?」
K「Windowsプログラムのメッセージの一つだよ。自分は常にこれに頼っていたせいで、ろくなプログラムができなかった」
J「……ああ、要するに、小説書くのサボって、ずっとプログラミングで遊んでいたわけだ」
K「え? ああ、サボっていたっていうより、プログラミングのせいで小説書く時間がなかったっていう……」
J「それをサボっていたというんだが、……で、WM_KEYDOWNとは?」
K「キーを押したときにくるメッセージのことです。ちなみにキーから離した時には、WM_KEYUPというメッセージがきます」
J「ほうほう……、それで、それの何を気をつけろと?」
K「では今暇な方は、Wordでもメモ帳でも何でもいいので、この記事をコピーしてみてください。丸ごとです」
J「はいはい、……で?」
K「一番上の行にカーソルをおいて、↓キーを押しっぱにしてみてください」
J「おk。……で?」
K「さて、今、一回だけカーソルが移動して、しばらくしてからカーソルが高速で動いたでしょう」
J「言われてみれば……、まあ、当然のこととしか思っていなかったな」
K「これこそがまさにWM_KEYDOWNなのです!」(※多分。でも実際にもWM_KEYDOWNで似た様なことが起こるから、WM_KEYDOWNだと思っていて問題ないと思います)
J「と、いうと?」
K「つまり、ボタンを押しっぱなしにしたとき、一回だけボタンを押したというメッセージが来て、しばらくして、そのメッセージが何度も連続で来るようになるのです」
J「なるほど、……で、それでどんな問題が生じるんだ?」
K「シューティングを想定してみてください。→を押しっぱなしにしたら、押してる間、ずっと移動していなければならないのに、WM_KEYDOWNを使うと、(使い方によっては問題が生じなくなりますが、普通の使い方をすると)一回だけ右に移動して、しばらくして右に移動し始めるという、変な動作が生じるのです」
J「確かにそれはおかしいな。弾幕に余裕でぶつかる」
K「もうひとつ、問題があります。今使ったWordまたはメモ帳を閉じずに、今度は左上にカーソルを持ってきてから、↓を押しっぱなしにして、一番下に行く前に↑を一回押してください」
J「え? うわ、難しいな。えーと、↓を押しっぱで、↑を一回押す。……あ、止まった」
K「そう、↓を押しているのに下に移動しない。これもWM_KEYDOWNの性質のひとつなのです」
J「と、言うと?」
K「キーを同時押しすると、後に押したほうを離したとき、WM_KEYDOWNが来なくなるというわけです。WM_KEYDOWNが来るとき、WPARAM型の副メッセージを連れてきます。この副メッセージをwpとしましょう」
J「ふむふむ、それで?」
K「先ほど、↓を押しっぱなしにしていたとき、wpの値はVK_DOWNなのですが」
J「↓キーを押してまーす、という意味だね」
K「それで↑を押すと、wpの値は書きかえられ、VK_UPになるのです」
J「↑キーを押してまーす、という意味だね」
K「そして↑キーだけを離すと、↓キーを押しているのにもかかわらず、プロシージャーは『今、↑キーを離したから、もう何も押されていないだろう、よし』と思い込み、WM_KEYDOWNを出さなくなってしまうのです」
J「うーん、よくわからんが、要するに、今押しているキーと別のキーを同時押しした場合、押しているキーの情報が別のキーの情報にとってかわられるから、別のキーを離すと、キーを押しているにもかかわらず、キーを押していないかのように判断されてしまうということか」
K「そういうこと、ちゃんとわかってるじゃないか。とくに、WM_KEYDOWN内で」
if(wp==(WPARAM)VK_UP)
K「という風にキーが押されているかを判別する場合は要注意!!」
J「ちなみに上の文は、『↑キーが押されているならば』という意味です」
K「先ほどいったとおり、wpの中身は一つのキーしかないので、このやり方では、SHIFTキーと方向キーの同時押しができません。なので」
if(GetKeyState(VK_UP)&0x80)
K「とすることをお勧めします」
J「これはさっきのとどう違うんだ?」
K「GetKeyState関数は、今押しているキーで判断するため、WM_KEYDOWNさえ発動すれば、wpの値は違えど、ちゃんと↑キーさえ押していればキーが押されていると判断されます」
J「つまり、さっきので↓押してるのに止まっちゃう、なんてことにはならないわけだ」
K「その通り。このような工夫で、『方向キー+SHIFTでダッシュ』なんてことも可能になるわけです」
J「そうだったのか。では長くなったが、最後に一言」
K「RPG開発サークルを作りました。よろしくお願いします」
J「え? 何?」
K「地元の友達と結成したのだ。ただ小規模なため、ゲームの配布や販売などは多分、行いませんが」
J「じゃあよろしくといっても、どうよろしくすればいいんだよ」
K「活動内容などをブログにのせるつもりだ。というわけでよろしくお願いします」
J「あ、そうそう忘れてた。小説は?」
K「……」
J「黙るな!! 次の更新はいつになるんだ!?」
K「一応、書いてはいるんですよ。キュリアと謙次Ⅲも、4ページめに突入してますから」
J「何ページ中?」
K「9ページ中」
J「まだ半分もいってなかったのか、ま、はやく更新してくれよ」
K「持病もちなので、その範囲でがんばります」
J「持病=五月病ね」
K「というわけで、長くなりましたが、ではまた」
プロフィール

ケーケー

Author:ケーケー
趣味:自作小説執筆、プログラミング、電子工作
好きなゲーム:ぷよぷよ

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR