ゲームプログラム
そろそろステージデータを使ったゲーム作りをしたいと思って作ってみた。 マップエディタはいつものように、「Platinum」 http://www.hyperdevice.net/ import std.file; /** * 2次元マップ<br> * ハッシュテーブルによる実装 */ class Layer2D { public: /** * …
どうやら、おめがさんが「RECT WINDER」に手を入れようとされている模様。 http://d.hatena.ne.jp/o_mega/20061109/1163033243 しかし、ソースコードを読んだところ、フレームスキップ処理を入れてないのにガッカリしたようです。 適当ですみません。 その点…
D言語へBulletMLを組み込む方法 - ゲーム作者の集い[ゲームヘル2000] - アットウィキ ふー、書き終わりました。 kenmoが何でこんな文章を書き続けるのかというと、 まあ、自分の知識をひけらかしたい、ってのもあるのですが、 得た知識をしっかり自分の頭に…
D言語で簡単にゲームが作れるようにライブラリを作ってみた。 D言語ゲームライブラリ「dHell」 - ゲーム作者の集い[ゲームヘル2000] - アットウィキ ただし、機能は、 画像読込・描画(BMPのみ) BGM読込・再生(WAV/OGGのみ) 効果音読込・再生(WAVのみ) …
とりあえず、一通りの情報は揃えてみました。 D言語ゲーム開発入門 - ゲーム作者の集い[ゲームヘル2000] - アットウィキ 今のところは「SDL」オンリーです。 今まで、 「D言語でゲーム作ってみたいけど、情報集めるの面倒だし、、」 と思っていた人に役に立…
http://d.hatena.ne.jp/o_mega/20060922/1158951079 グレア処理は3Dでしかできないと思っていたのですが、 2Dでも頑張ればできるのかー! とオドロキでした。 せっかくなので、HSPで実装して、やり方をゲームヘルにまとめておきました。 http://www5.atwiki.…
最近、Flashでちまちまと遊んでいます。 なんとかゲームっぽい体裁を整えたのがこちら。 http://blog58.fc2.com/k/kenmo/file/App.swf (※Flash Player 9 が必要でつ) 1週間ほど触り続けて、なんとなく思った、ActionScript 3(Flash)の強み Javaの仕様に…
レンズフレアとは レンズフレアとは、 逆光を撮影したときにレンズ内で光が屈折してできる 輪っかや多角形の光のことです。 レンズフレアの具体的な画像については、Googleのイメージ検索で、、。 http://images.google.co.jp/images?q=%E3%83%AC%E3%83%B3%E…
すんげー難しいと思っていたのですが、 やってみたら意外に簡単でした。 なんというか、自分のプレイが1つ1つ再生されるのは、 ちょっとした感動モノでした。 で、やり方です。 とりあえずクラス図を、、(´∀`; ゲームにおいて、キーの入力判定として必…
http://www5.atwiki.jp/yaruhara/pages/39.html 1週間ぐらいネチネチ更新して、ようやく完成しまちた。 kenmoもオブジェクト指向を1年ぐらい使い続けてきて、 最近ようやく机上の理論だけでなく、 実用的な方法も分かってきたような気がします。 まー、も…
はじめに レベルデザインを楽に作るためのツールとしては、 マップエディタ スクリプト データベース が三種の神器ではないかと思っています。 マップエディタ・スクリプト・データベースとは それぞれについて簡単に説明すると、、、 マップエディタとは、…
BulletMLを使ってシューティングゲームを構築すると、 こんな形に落ち着くのでは、というkenmoの実装例をメモ書き。 BulletML BulletMLはどんなものか簡単に解説しますと、 XMLを解析して「弾幕」を生成するだけです。 なので弾を発射する「敵」の動きは別に…
http://d.hatena.ne.jp/kenmo/20050817#p1 で 「移動量は極座標にするべきだにゃーー!!」 なんてことを書いたわけですが、 これにはちょっとした欠点がありまして、、。 それは、極座標同士の加算・減算の手順が面倒、ということです。 例えば、 45°方向に…
http://www.gamasutra.com/features/20020821/dawson_pfv.htm を見て知りましたー。 Pythonだとこんなに簡単にマイクロスレッドが、実装できてしまうんですねー。 …今まで知らなかったのが悔やまれます、、。 ウサギとカメのゲーム #!/usr/bin/env python # …
今回は、Builderパターンを使って、最近はやりの「調合システム」を構築してみます。 kenmoの勝手な考察ですが、調合システムは、 単体では弱いが、組み合わせをすることにより強力なアイテムになる 「あとアレがあれば、強力なアイテムが作れるのにー」とい…
最後に「敵の生成ロジック」を見ていきます (※バージョンは「exelinya_0214.zip」です) geneenemy 敵の生成はgeneenemyですね。(1128〜1182行目) まあ、そんなに長くないです。 (最新バージョンでは、生成ロジックが強化されているようですが、、) 敵…
えぐぜりにゃ〜ソース解説の続きです。 (※バージョンは「exelinya_0214.zip」です) 今回は敵の移動関数の解説になります。 移動関数概要 ソースとしては、801〜1029行目が、敵の移動関数になります。 803行目は、存在チェックですね。 if(enemy_type(cnt) …
前回はざっくりと移動関数を見ましたので、今回は細かく見ていきます。 (※バージョンは「exelinya_0214.zip」です) movemychar まずはプレイヤーの移動関数です。(498行目から) プレイヤーの移動関数は、以下の処理を行っています。 ライフの自動回復 キ…
色々と勉強になった「えぐぜりにゃ〜」のソースをkenmoなりに解説してみます。 シーンの状態遷移 まずはシーンの遷移について解説します。 34行目〜41行目の定数に注目します。 // 遷移状態ステート #define STATE_TITLE_INIT 0 #define STATE_TITLE 1 #defi…
で、早速モーションブラーを作成。 モーションブラーの原理は、 現在の描画内容をテンポラリに取っておいて、 次回描画時にテンポラリをアルファブレンドする、 だけです。 Pygameを使うとこんな感じ。 // ゲームループ while(True): // 一連の描画処理 … sc…
実は、kenmoが今作っているゲームのソースコードが結構大変なことになっちゃっていたりします。 というのは、ゲームのメインとなるシーンのクラス(SceneMain)に、 たくさんのTask(オブジェクト)がぶら下がっているからです。 …えーと、こんな感じ(´д`…
とりあえず、Pythonのソースコードだけ。 解説は後日にて…。 class Task: """ タスク """ def __init__(self, name, x=0, dx=0): """ コンストラクタ """ self.name = name self.x = x self.dx = dx def update(self): """ 更新 """ self.x += self.dx if(se…
ゲームには、よく使う演出として、 オブジェクトが「ぎゅいーん」とカットインしてきて、 少しずつ減速しながら、ある位置にピタっと止まる演出がよくあります。 今回はそういった動きを実装する方法を解説します。 加速度を算出する方法 方法の1つとして、…
逆引きゲームプログラミング (GAME DEVELOPER BOOKS)にのっていたのを自分なりにまとめてみました。 代表的なゲームバランスの調整手法 名称 内容 プログラム 例 ランク法 EASY/NORMAL/HARDなど、難易度を段階別にする 易しい 家庭用ゲームならほとんど レベ…
アドベンチャー用のスクリプトを構文解析した結果、 たぶんこんなコードに変換するだろう、という予想のメモ書き。 if文 ○解析前 if(式){ }○解析後 if, ifブロックの終端アドレス, 式(, ... , 終端文字) goto文 ○解析前 goto *ラベル○解析後 goto, ジャン…
言語解析の流れ 言語解析は、大まかに以下の流れになります。 字句解析 構文解析 意味解析 コード生成 コード解析実行 字句解析 字句解析は、プログラムやスクリプトを「意味のある最小単位の文字列」に分解することです。 この最小単位をトークンといいます…
はじめに 有限状態機械とは、 「複数の『状態』を持ち、その『状態』により『振る舞い』が決定される抽象的な機械」 のことです。 具体的な例を挙げると、パックマンのモンスターがそれに該当します。 モンスターは、 移動 追跡 逃避 3つの「状態」を持ちま…
この前のスクリプトは、 条件分岐がない ラベルがない ということで、ゲームを作るのに、 使えないスクリプトであることが判明しました…!(´∀`; というのは例えば、 階段を降りますか? Yes→降りる No→降りない ということもできません(´Д`; というこ…
はじめに 今回は、タクティクスオウガのような戦術SLGの、 ゲームバランスについて考えてみます。 基本は「ジャンケン」 こういったゲームにおいて、基本となる考え方は、 ユニット同士の相性に「ジャンケン」のような関係を持たせることです。 例えば、「歩…
昨日に続いて、RPGネタです。 マップに配置したイベントIDをキーに、イベントスクリプトを呼び出す、 という話だったのですが、 今回はその「イベントスクリプト」の構造に触れてみたいと思います。 イベントスクリプトは、 イベントID ├フラグ操作 └イベン…