ゲーム開発講座
Chapter1-1
-ゼロからの基礎だよの巻-
 
 
-はじめに- 
どうもパソコンの前の皆さんこんにちわ。 
旧コンテンツを見てた皆さんお久しぶり。 
初めての皆さん初めまして。 
講師のケムニャです。
YO-HO! 
みんなこんちわ。 
一緒に話を進めていく役のポーチカだよ。
さてこの講座のコンセプトを説明すると 
「とりあえず動くプログラム」 
になるんだ。 
とりあえずに、動く。 
名言だ。
なんだよとりあえずって
んー、まずこの講座はどちらかというと、プログラムを組んだことがない初心者や 
こういったプログラムはどうすれば組むことが出来るか判らないと言った 
方々の為の講座なんだ。
・・・で?
あまり実践的な事ばかり書くと初めての方は判らない。 
それに俺自身そこまで難しい事は判らない
ダメじゃないかそれじゃあ! 
このタコ助!
いやいや。 
俺自身難しい事は判らないけどゲームを作る事が出来る。 
つまり言い換えると、簡単な知識でもしっかりと理解できたらゲームが作れる。 
全てのプログラムの命令文を知らなくても使用するものだけを覚えていたら作れるんだ。 
基礎が判れば応用も利く。 
基礎が判れば自分で他の命令文の使い方も理解できるってもんよ。
・・・そうだね。 
お前の馬鹿っぽい顔を見ていると自分でも出来るんじゃないかという 
希望が沸いてくる。 
そんな奇妙な実感が有る!
・・・そうかよ。 
それでいいんだよ。
-開発言語-
で、何したらいいんだ? 
シーか?ベーシックか?ジャバか?
なにぃ、やっちまったなぁ! 
男は黙ってHSP!
なんだそれは! 
聞いたことがあるぞ! 
って言ったら講座の出だしっぽくて良くない?
良い、良いよ! 
HSPてのはフリーウェアのプログラム言語なんだ。 
それなりに人気があって機能を拡張するソフト等が色んな人に作られていて 
プログラムを気軽にやってみるのに凄く便利なんだ。 
っていったら講座の出だしっぽくて良くない?
真似すんなよー。 
で、どこで入手すんの? 
 
ここ。 
HSPオフィシャルホームページ 
「HSP2の紹介とダウンロード」って所から 
「HSP ver2.61」てのをダウンロードしてくれよ。 
インストーラー版とアーカイブ版どっちでもいいよ。
あれ? 
最新版は3.1のようだけどなんで2.61なの?
いい質問だ。 
vver3のほうが凄いものが作れるんじゃないか!? 
と思うかもしれないけど別に出来上がるものに変わりはないよ。 
ver3とver2はプログラムの描き方が違うんだ。 
だから慣れ親しんでるver2で説明するんだ。
・・・でもver3のほうが良いんじゃ?
どうせ出来上がるものは同じだしver2とver3のプログラムの組み方が違うと言えど 
命令文は同じものだから使い方を理解したら使いたい人はver3を使うといいんじゃないかな。 
ただ命令文を拡張させるプラグインはverによって対応していたりしていなかったりするんだ。 
ver2のみ対応のも多いという点は見逃せないね。
なるほどなー。
で、インストールは完了したかい? 
インストール方法が解からないってのは流石に勘弁な!
できたよー! 
で、次はどうするんだい?
早速HSPを触ってみよう。
インストールしたフォルダを開いてみてくれ。 
スタートにあるプログラムじゃなくてマイコンピュータやエクスプローラで開いてくれ。
おお、なんかイッパイ表示されたよ。
とりあえずこれを起動させてみてくれ。 
こいつをどう思う?
すごく、ゲームを作る言語っぽいです。 
あ、凄い! 
3Dのアクションゲームとか作れるんだ!
3Dだろうがネットワークゲームだろうが作れるぞ。 
作り手次第でなんだって出来るんだ。 
完全に何でも出来るってワケじゃないけど 
無茶な注文をつけない限り大概のジャンルのゲームは作れる。 
プログラムの可能性は無限大さ!
テンション上がってきた。
ヒィ、落ち着け! 
さて次にコレを起動させてみるんだ。 
 
こんな画面でましたね?
黒い! 
こりゃ黒い!
黒さはどうでもいい! 
ぱっと見黒いですがメモ帳と同じなんだ。
あ、本当だ文章かける。 
えーと「かゆ・・・うま・・・」と
(初期バージョン以外はなんで「うまいかゆ」に変わったんだろう?) 
まぁメモ帳と同じような使い方ってのが解かってくれたらソレでいいよ。 
さて早速プログラムいってみようか。 
 
おおおぉぉぉ!!!
よし、そのテンションだ。 
まず面倒な説明は抜きにして触ってみようか。 
メモ帳部分に何も書いていない白紙の状態でコレを押してみてくれ
なんか画面が一瞬でて消えたぞ! 
教授、コレはいったい!?
慌てんな、落ち着け。 
今のボタンは作ったプログラムを実行するボタンなんだ。 
プログラムを書く所が空白だったからなにも起きずに終了したんだ。 
次は命令文を書いてみようか。
お、いよいよだね!
では下の文章を書き写してくれ。 
mes "おはようさん"
「mes」は半角、次に半角スペース一回。 
"も半角で"に挟まれた文章は全角でOK。 
命令文の後に半角スペースは全ての命令文に共通だから覚えておいてくれ。
これはどういう意味なの?
プログラムの入門の基本、文字の表示さ。 
mesとは文字を表示する命令文なんだ。 
"で囲んだ中の文字を表示する事が出来るんだ。 
他にも様々な使い道があるんだけどソレは後ほどに。 
では早速実行してみてくれ。
よーし、今度こそ! 
って、チクショー! 
ケムニャ!謀ったなケムニャ! 
さっきと同じで何もおきずに消えたじゃないか!
同じに見えたかい? 
一応表示はされたんだけどね。 
文字を表示させるというプログラムを実行した後、 
何もする事が無くて終了したんだ。 
でもソレじゃあ意味がないよね、だからもう一行追加してくれ。 
mes "おはようさん" 
stop
コレで早速実行だ。
お、今度は画面消えずに残ったぞ。 
画面の左上に文字も表示されてる!
プログラムとは上から順に1行づつ実行されていくんだ。 
何もする事ができなくなるとプログラムは終了する。 
でもstopを入れるとプログラムを一時的に止める事ができるんだ。 
このstopはプログラムを修正する時任意の場所で止めてプログラムの状態を調べたい時等 
プログラムの動きをテストする時に大活躍するぞ。
なるほど、重要というより便利な機能って所だね
では次に画像を表示させてみようか。 
picload "hsp2ttl.jpg" 
stop
コレで早速実行だ。 
hsp2ttl.jpgていうのはHSP2.61と同じフォルダに入っている画像だ。 
.jpgとファイルの拡張子が表示されてない人は拡張子を表示させておいてくれ。 
フォルダ内を表示しているウィンドウのツール>フォルダオプション>表示を選び、 
登録されていない拡張子を表示しないの項目のチェックを外すといいよ。
おおう! 
エラー出たよ。 
「画像ファイルがありません」 
だってさ。
うん、そうなるだろうね。 
表示される人もいるかもしれないのが困った所だけど。 
画像ファイルは有るんだけど別の場所を探してしまってるんだ。 
とりあえずこのプログラムソースを保存してみよう。 
保存先はHSP2.61をインストールした場所にしてみようか。 
もう一度実行してみて。
お、画像が表示されたよ。 
どういう事?
プログラムを保存した場所と画像のある場所が同じだから画像を探すことが出来たんだ。 
でも毎回このフォルダにプログラムを保存していくとごちゃごちゃして見難いから専用フォルダを作ろうか。 
適当な場所に適当な名前のフォルダを作って。
作ったよ。
じゃあそのフォルダにこのファイルをコピーしてくれ。 
hsed2exe 
hsp2.exe 
hspcmp.dll 
hsprt 
hsp2ttl.jpg 
これはHSPの本体なんだけど軽いから 
何かを新しく製造するごとにフォルダをつくってコピーすると便利だよ。
本当だこりゃ軽い。 
こんなに軽くて大丈夫なの?
普通そんなもんさ。 
VBとかVCは内容じゃなくて見た目等を充実させてるからファイルがでかいんだ。 
次は”ラベル”をやってみようか。
ラベルってなに? 
シールか何か?
ラベルってのは標識って意味。 
プログラムは上から順に下に進んでいくと言っただろ。 
でもラベルを作っておくとプログラムの途中でそのラベルまで一気に飛んだり戻ったりできるんだ。 
それって重要なの?
ま、今に解かるって。 
ラベルの描き方は最初に*をつけてその後に好きな名前を入れるとOK。 
ラベルは*の後に半角スペースはいらないんだ。 
でも半角の数字だけや特定の名前は入れれないんだ。 
次に指定ラベルに移動する命令gotoてのがあるんだ。 
gotoの横に半角スペースを入れてラベルを指定するんだ。 
goto *mozi 
mes "ここは表示されない" 
stop 
*mozi 
mes "飛んだよ" 
stop
飛んだのを確認した後、一行目を消して実行してみて。
お、飛んだ飛んだ。 
消すとちゃんと飛ばないね。
飛んだのを確認した後、一行目を消して実行してみて。 
あとこの短いプログラムだと問題ないけどプログラムが長くなると凄く読みにくくなるんだ。 
だからTABを使ってプログラムに段差を作るといい。 
	goto *mozi
	mes "ここは表示されない
	stop
*mozi
	mes "飛んだよ"
	stop
こんなふうにね。
こりゃ見やすい。 
かもしれない!
あとラベルはmesのような命令と同じ名前にするとエラー出るから気をつけて。 
それとラベルは全角の文字でもいいよ。 
goto *そっち 
*そっち 
みたいにね。
あっ! 
その方が解かりやすいかもしれないね!
まぁ好きなようにしていいよ。 
好きなように出来るのもプログラムの楽しさの一つだしね。 
さて、gotoじゃ少々実感が弱いから次はbutton命令をやってみようか。 
コレはボタンを表示させて、そのボタンを押すと指定されたラベルを飛ぶものなんだ。 
使い方は 
button p1,p2 
p1にボタンに表示される文字、p2に移動先のラベルを指定。 
命令で二個以上有るときは,で区切るんだ。 
	button "飛ぶよ",*mozi
	stop
*mozi
	mes "ボタン押しましたね"
	stop
 
お、なんだかプログラムを動かしているっぽい!
じゃ、次は画面のリフレッシュと位置の指定。 
文字やボタン出しっぱなしじゃなんだから消さないとね。 
あとボタンや文字を表示させるごとに位置が改行されるね。 
でも位置を指定すれば問題ないし位置指定はゲームを作る時の 
画面デザインでは無くてはならない機能だ。 
ただ単純に画面を真っ白にしたい時はclsと入れればいいよ。 
clsと書くと画面が真っ白くリフレッシュされボタンも消せる。 
位置の設定は 
pos p1,p2 
p1にはX座標、p2にはY座標を入れるんだ。
え、X座標?Y座標? 
なにそれ、物理学か何か?
X座標Y座標というのは、そうだな。 
X座標は表示されているウィンドウからの横の距離、Y座標は縦の距離だ。 
画面のサイズは640x480だから下のプログラムソースの 
一行目の数字を変えて実行してみて。 
	pos 100,200
	mes "ここだよ"
	stop
 
あ、本当だ表示場所が変わった。 
でも表示する位置が今一つ定まらないなぁ。
その辺りは慣れしかないね。 
絵を描くソフトとか座標をリアルタイムで表示するのが多いからそういうの活用してもいいね。 
じゃ、画面リフレッシュを使ってみようか。 
	pos 10,20
	mes "ポチ「おはよう」"
	pos 100,40
	button "次へ",*a01
	stop
*a01
	cls
	pos 10,20
	mes "ケムニャ「もう昼だぜ」"
	pos 100,40
	button "次へ",*a02
	stop
*a02
	cls
	pos 10,20
	mes "ポチ「嘘だろ、遅刻じゃないか!」"
	stop
 
なんだかノベルっぽい!
あと:を使うと一行に数個命令文を書くことができる。 
あまり使いすぎると見難いけど使うべきして使うとスッキリして見やすくなるんじゃないかな。 
	pos 10,20:mes "ポチ「おはよう」"
	pos 100,40:button "次へ",*a01
	stop
*a01
	cls
	pos 10,20:mes "ケムニャ「もう昼だぜ」"
	pos 100,40:button "次へ",*a02
	stop
*a02
	cls
	pos 10,20:mes "ポチ「嘘だろ、遅刻じゃないか!」"
	stop
こんな風にね。 
さて、今回の講座はここまで。
次回予告
さーて次回からはゲームを実際に作っていくよ。
おおうとうとうゲーム作りを! 
で、出来るかなぁ?
ここまでを理解できていると出来るさ。 
問題ねぇ、やっちまいな!
よーし頑張るぞー。 
ところでケムニャぶん殴っていいかい?
ひぃ、やめてよ! 
最近の若者こわいわー。
だって旧製作講座では私が最後殴ってシメだったじゃない。 
文化とお年寄りは大切にしなければいけないわ。
やめろ、よせ! 
痛い、振った髪が当たって痛い! 
アニメぽい髪の描き方だからトゲトゲしてる部分が刺さって痛い! 
地味に痛い! 
今回それっぽい素材を用意してないから次回にしてくれ!
しょーがないなー。 
んじゃ、まった来週
来週に出来るかなぁ、デキネェだろうなぁ。 
また次回っつーことで。
 今日はここまで。
 
 
今回のまとめ 
mes p1 
p1に"でくくった文字を表示させる。 

stop 
プログラムを一時停止させる。 

	mes "おはようさん"  
	stop
 
picload p1
p1で指定した画像を表示する。
	picload "hsp2ttl.jpg"  
	stop
 
*ラベル
ラベルを作成する。
ラベルの前にスペースやTABを使わない事。

goto *ラベル
指定したラベルに飛ぶ。

	goto *mozi
	mes "ここは表示されない
	stop
*mozi
	mes "飛んだよ"
	stop
 
button p1,*ラベル
ボタンを表示、p1にボタンに表示する文字。
	button "飛ぶよ",*mozi
	stop
*mozi
	mes "ボタン押しましたね"
	stop
 
cls p1
画面をリフレッシュし、ボタンを消す。
p1を0か無記入の場合白く、1〜3は灰色、4で真っ黒になる。

pos p1,p2
文字やボタンを表示する座標を指定。

	pos 10,20:mes "ポチ「おはよう」"
	pos 100,40:button "次へ",*a01
	stop
*a01
	cls
	pos 10,20:mes "ケムニャ「もう昼だぜ」"
	pos 100,40:button "次へ",*a02
	stop
*a02
	cls
	pos 10,20:mes "ポチ「嘘だろ、遅刻じゃないか!」"
	stop
 
もどる