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


取り敢えず仕様を「3マス先までは見える」とし、3マス先の壁の描画処理だけ作ってみました。


・・・力技で。
こんな感じ。(※随所にDXライブラリの関数を使用しています。)

static void draw_wall( void )
{
char front_x = 0 ;
char front_y = 0 ;

char right_x = 0 ;
char right_y = 0 ;

char chk_x ;
char chk_y ;

char pos_x ;
char pos_y ;

switch( party.direction )
{
case North :
front_y = -1 ;
right_x = 1 ;
break ;
case East :
front_x = 1 ;
right_y = 1 ;
break ;
case South :
front_y = 1 ;
right_x = -1 ;
break ;
case West :
front_x = -1 ;
right_y = -1 ;
break ;
default :
break ;
}

//DrawGraph( 0, 0, map.wall_gra[ 4 ], TRUE ) ;
DrawGraph( 0, 0, map.wall_gra[ 0 ], TRUE ) ;

// 座標系
// x -3 -2 -1 0 1 2 3
//y
// 3 ○ ○ ○ ○ ○ ○ ○
// 2 × ○ ○ ○ ○ ○ ×
// 1 × × ○ ○ ○ × ×
// 0 × × × ☆ × × ×

// 3マス先を描画
if( MapData[ party.x + front_x * 3 ][ party.y + front_y * 3 ] == 0 ) // (0,3)が壁 ?■?
{
chk_x = party.x + front_x * 3 + right_x ;
chk_y = party.y + front_y * 3 + right_y ;
if( MapData[ chk_x ][ chk_y ] == 0 ) // (1,3)が壁 ?■■
{
chk_x = party.x + front_x * 3 - right_x ;
chk_y = party.y + front_y * 3 - right_y ;
if( MapData[ chk_x ][ chk_y ] == 0 ) // (-1,3)が壁 ■■■
{
DrawGraph( 0, 0, map.wall_gra[ 3 ], TRUE ) ;
}
else // (-1,3)が道 □■■
{
DrawGraph( 200, 0, map.wall_gra[ 3 ], TRUE ) ;
}
}
else // (1,3)が道 ?■□
{
chk_x = party.x + front_x * 3 - right_x ;
chk_y = party.y + front_y * 3 - right_y ;
if( MapData[ chk_x ][ chk_y ] == 0 ) // (-1,3)が壁 ■■□
{
DrawGraph( -200, 0, map.wall_gra[ 3 ], TRUE ) ;
}
else // (-1,3)が道 □■□
{
DrawGraph( 200, 0, map.wall_gra[ 5 ], TRUE ) ;
}
}
}
else // (0,3)が道 ?□?
{
chk_x = party.x + front_x * 3 + right_x ;
chk_y = party.y + front_y * 3 + right_y ;
if( MapData[ chk_x ][ chk_y ] == 0 ) // (1,3)が壁 ?□■
{
chk_x = party.x + front_x * 3 - right_x ;
chk_y = party.y + front_y * 3 - right_y ;
if( MapData[ chk_x ][ chk_y ] == 0 ) // (-1,3)が壁 ■□■
{
DrawGraph( -440, 0, map.wall_gra[ 3 ], TRUE ) ;
DrawGraph( 420, 0, map.wall_gra[ 3 ], TRUE ) ;
}
else // (-1,3)が道 □□■
{
DrawGraph( 420, 0, map.wall_gra[ 3 ], TRUE ) ;
}
}
else // (1,3)が道 ?□□
{
chk_x = party.x + front_x * 3 - right_x ;
chk_y = party.y + front_y * 3 - right_y ;
if( MapData[ chk_x ][ chk_y ] == 0 ) // (-1,3)が壁 ■□□
{
DrawGraph( -420, 0, map.wall_gra[ 3 ], TRUE ) ;
}
else // (-1,3)が道 □□□
{
// 何も描画しない
}
}
}

if( MapData[ party.x + front_x * 1 ][ party.y + front_y * 1 ] == 0 ) // 正面が壁
{
DrawGraph( 0, 0, map.wall_gra[ 1 ], TRUE ) ;
}
else if( MapData[ party.x + front_x * 2 ][ party.y + front_y * 2 ] == 0 ) // 2歩先が壁
{
DrawGraph( 0, 0, map.wall_gra[ 2 ], TRUE ) ;
}
else if( MapData[ party.x + front_x * 3 ][ party.y + front_y * 3 ] == 0 )
{
//DrawGraph( 0, 0, map.wall_gra[ 3 ], TRUE ) ;
}
}


こんだけで3マス奥だけ。あとこれを2マス、1マス、それに側面もと考えるととても書く気にはなれない。
もうちょっと効率の良いアルゴリズムを考えねばー・・・
スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

新曲がだいぶ出来上がってきました。


無題


正直やりすぎた気がする。

長い。
自分でもよく思うんですが、ウチの曲は冗長すぎる気がする。

イントロ→Aパート→Bパート→Aパート→Bパート→Cパート(締め)
ないし
イントロ→Aパート→Bパート→Aパート→Cパート(締め)

と言う構成の曲が非常に多い気がします。
別に趣味レベルでやってることだから人の目を気にする必要も無いんですが、やっぱり公開している以上そこんとこは気になるもので。

「全4分を謳い一見大作っぽく見えるけど実は2ループしてるためイントロを除くと1分半程度しかない」
「この曲は2ループあるから、後半は聴かなくても別にいいや」

過敏なだけかもしれないけど、そう思われるのがちょっと悔しい。
ていうか、自分で昔の曲を聴きなおすと
「ループするのうぜぇ」
とかよく思うのデス。

そう思って泣く泣く2ループ目を削ったモノもよくあります。高々8小節程度のシメの為にループさせることも無いかな・・・と思って。


でも、今回の曲はそんな配慮は一切ありません。

イントロ→Aパート→Bパート→Aパート→Cパート→Aパート→Bパート→Aパート→Cパート→Dパート

という鬼構成。
入り乱れるリピート記号とダル・セーニョ。
早くも繰り返し聴いていて、完成しても居ないのに飽きてきました。

でも、これ、「ゲーム音楽」と言う観点に視点を変えると意味が出てくるもので、
ラスボス戦なんだから1分2分で終わらないでしょ?
ちょっとずつ曲が変化して行ったほうが戦闘がだれなくていいんじゃない?
という見方も出てくるような気がするんです。
まあ、10分は長すぎだけどね。(でもSO3のラスボス戦は10分あったなあ・・・)

携帯などスリム化に進むこの社会、もうちょっとスリム化するとしましょう。

テーマ : ゲーム作り - ジャンル : ゲーム

実に2ヶ月ぶりの更新となります。
仕事が忙しく休日は家で休んでいるだけだったり、2連休が取れたら雪山に繰り出してみたりと相変わらず色々忙しい日々です。

以前サイドビュータイプのRPGを作っていることを何度かこの日記で挙げてきましたが不思議なもので外形が出来上がってくると途端に飽きました。

そんな中、Wizardry形式のゲームなら戦闘以外の面倒なところを殆ど作らなくて良い為RPGとしては敷居が低いのではないか。
そう思い並行してプロジェクトスタートしました。

ソースの履歴を見るとなんと新規作成日は2007/7/28。かれこれ半年も同じゲームを作ってるなんて俺すごくね?って感じです。

そうは言っても、extrierのWiz歴って言うのがPS版の4と5をクリア、GBC版の外伝1(だっけ?)をクリアしたくらい。あんまり知識が無いのでなかなか大変です。

そんな折”世界樹の迷宮”に出会いました。DSでやったゲームの中で一番のめりこみました。

天の声が聞こえました。
「世界樹の迷宮っぽいゲームを作りなさい」

それがコレです。

無題


取り敢えず一応見せられる形になったのでこうして公開してみました。
ホントに基礎の基礎のバトルのみ完成しています。

今は画面レイアウトを熟考中。シンプルなものにしたいという意思が強くあったのでコレに落ち着きました。


次の目標は壁を表示するアルゴリズムを作ること。
視界が横3マスの縦3マスとして、壁か床かで各マス2パターン。描画パターンは単純計算で2^9で512通り。(ありえないパターンもあるので実際にはコレよりもう少し少ないけれど)

流石にこんなに沢山画像は用意できないため何枚かベースになる画像を元に、この512種類どんなパターンでもOKな組み合わせになるようアルゴリズムを考えなければなりません。

たぶん先人たちが通った道。
参考に出来るようなHPが探せなかったので、しょうがないので自力で作ってみます。

作れるかな。。。

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

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