目次
今回は、私が過去に作ったゲームのソースを公開して、その解説を行ないます。
第一回は「ダンジョンキーパー」です。
ソース…danjon.txt
正直、2年前に作ったものなので、というか、初めて作ったゲームなので、
かなりソースは汚いです。
Cプログラム診断室に持って行ったら、間違いなく集中治療室行きです。(;´Д`)
ソースは4k弱なのでたいしたことはありませんが、
1500行目あたりで、もうコリャ読めないとダウンしてしまいました。
では、なぜそれを公開しようと思ったのかというと、
ゲーム作成の基本的な要素が、結構詰まっているからです。
ソースは汚いですが、当時はゲームとして基本的な部分はしっかり作ろう、
という意気込みはあったような気がします。
また他にも、こんなつくり方しちゃダメだよ、というダメな例を示すことができるからです。
人の振り見て我が振り直せ、というか反面教師というか、
ダメな例から、こうやっちゃダメというパターンが学べると思います。
そんなわけで、ソース解説です。
なお、HSPという言語で書かれていますが、それを知らなくても理解できるように解説します。
むしろ、ソースよりも処理の解説をしていきたいです。
107行目あたりからのマジックナンバーもどうかと思いますが、
このゲームでは、アイテムが落ちている場所が分かるように、
プレイヤーの視界内にアイテムが落ちていた場合、ピカッと光る表示を行っています。
ですが、この合成の仕方まずいです。
単純に黒を透明色として合成しているだけです。
光画像
まあ、この光画像がしょぼいといううわさもありますが、
確か記憶では、合成画像がいまいちだったため、色々悩んだあげく、
白の部分が多い光画像になった気がします。
(加算合成を知らなかったため)
合成画像
単純合成拡大
まあ、小さい画像なので、これでもアリかもしれませんが、
今なら、加算合成を使います。
(光を表現するには、加算合成がよい)
加算合成
こうすれば、自然な光を表現することができます。
他にもすでに半透明合成のところで説明しましたが、
階段を降りた時に画面が暗くなる演出です。
この画像に、
これを半透明合成(合成率50%)すると、
フェードアウトする効果が簡単に得られるわけです。
他にも、回復魔法を使用したときには、白い画像を使って、フラッシュしていたりします。
あと、ダメージを受けたときに画面を揺らしています。
その仕組みとしては、まず現在の画面をバッファに取っておきます。
そして、乱数で画面をズラして描画を行います。
これを連続して行うことにより、画面が揺れているような効果が得られるわけです。
バッファに退避→画面を黒で消去→ズラして描画→黒で消去→ずらし描画→…。
また、ズレ幅はダメージの大きさに比例して揺らしています。
中ボス/ラスボスでは、消去を行わず、半透明合成をしています。
特別な印象を残したい場合、こういった演出もありだと思います。
(※ただ、画面外に描画を行うのは、処理としてはよろしくないとは思います)
実は、このゲームは某雑誌に応募したものなのですが、
その時あった批評として、カーソルを動かすたびに音が出るような演出が欲しい。
というものがありました。
確かにゲームは、プレイヤーからの入力に対して、常にリアクションが必要なものである気がします。
他にも、フォントを自作したほうがいい、とかありました。
これはさすがに大変な気がします。
でも、数値ぐらいはシステムフォントを使用しないほうがいいのかもしれませんね。。。
以上、ソース解説でした。
(というか、ソースはあんまり解説していないような…)
こんなのでも、役に立てば幸いです。
以上、.1064でした。