神代クロ のすべての投稿

タブレットIntuos4を買う

091116_185033タブレットを買いました。Wacom Intuos4 Medium PTK-640/K0です。

ウチにあるのが2世代前のIntuos2で、日記を読み返すと買ったのは8年も前です。とは言え、ここ何年もまともに使ってなかったんで、単なる敷物状態でした。

これじゃあいかんという事で、今年の春出た新型を買ってみました。サイズは前と同じくA5サイズで、アプリ無し版です。

少しだけタブレットを触ってみると、確かに描きやすくなってる! 前のはとにかく滑りやすく、滑らないように力を入れて描いてたのですぐ手が疲れたのですが、新型は紙に鉛筆で描くような筆感です。素晴らしい。春にワコム株を買っておけば良かった

これでスキャナで取り込む手間を無くして、直接描けるようになれれば、もう少し描く頻度を増やせそうです。

スポーツクラブに行く(10日目)

結局先週と同じ曜日の同じ時間帯になったけど、スポーツクラブに行ってきました。

今日はランニングマシンで10分間走ってみた。たったそれだけなのに、心拍数が170を越えて測定不能になったんでびびった。まだまだ持久力が足りないな。

そういえばランニングマシンで走りながら、新聞読んでるおばさんがいて噴いた。走りながら字が読めるんかな。色んな人がいるなぁ。

トレーニング後、シャワーを浴びてから着替えるんだけど、その時に衣服に爪を引っ掛けてしまい、爪が剥がれたよ(涙) 見事に横一直線に切れ目が入り、血が出るし痛いし。

右手の中指なんだけど、お陰でキーボードやらマウスの操作に不自由してます。ちゃんと手入れしとかないとな…

ゲーム開発28:マップデータ読み込み

今回はマップデータを読み込む処理を、CMapDataクラスとして作成しました。

Platinumというマップエディタでマップを作ってますが、このツールから書き出す形式にFMFというのがあって、これがベタデータでわかり易かったので、とりあえずこれをそのまま取り込みます。

サンプルプログラムがあったのでそれを参考に、というか多少手を入れた程度のものを作ってみました。

まずFMFのデータ形式ですが、ヘッダ部は以下のようになっています。

typedef struct FMFHeader
{
 DWORD Identifier; // ファイル識別子 'FMF_'
 DWORD Size;    // ヘッダを除いたデータサイズ
 DWORD Width;    // マップの横幅
 DWORD Height;   // マップの高さ
 BYTE ChipWidth;  // マップチップ1つの幅(未使用)
 BYTE ChipHeight;  // マップチップ1つの高さ(未使用)
 BYTE LayerCount;  // レイヤーの数
 BYTE BitCount;   // レイヤデータのビットカウント(未使用)
}FMFHEADER;

これの後ろに実データがレイヤー毎に区切り無く入ってます。なのでヘッダ内のSizeでメモリを確保し、WidthHeightから1レイヤーのサイズを計算して、任意の場所のデータを読み書きすれば良い感じです。もうサンプルのまんまだけどねw

しかしこのレイヤーという概念は便利で良いですね。1つのデータファイルにマップデータのみならず、キャラクタの配置イベント発生場所といった物を持たせられます。しかも同一のデータ形式で。

今まではキャラクタの位置情報は別形式で持ってたけど、FMFに一緒に載せてしまおうか。

次回は読み込んだマップデータを表示させます。

//-----------------------------------------------------------------------------
// ファイル読み込み
BOOL CMapData::File(char *filename)
{
 HANDLE FP;
 DWORD ReadBytes;

 // ファイルオープン
 FP=CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
 if (FP==INVALID_HANDLE_VALUE) {
  return FALSE;
 }

 // ヘッダ情報取得
 if (!ReadFile(FP, &fmfHeader, sizeof(FMFHEADER), &ReadBytes, NULL) || ReadBytes!=sizeof(FMFHEADER)) {
  CloseHandle(FP);
  return FALSE;
 }

 // 必要なメモリ確保
 LayerAddr= new BYTE[fmfHeader.Size];
 if (LayerAddr==NULL) {
  CloseHandle(FP);
  return FALSE;
 }

 // レイヤーデータ取得
 if (!ReadFile(FP, LayerAddr, fmfHeader.Size, &ReadBytes, NULL) || ReadBytes!=fmfHeader.Size) {
  CloseHandle(FP);
  return FALSE;
 }

 CloseHandle(FP);

 return TRUE;
}

//-----------------------------------------------------------------------------
// マップ情報取得
int CMapData::Get(BYTE layer_no, BYTE x, BYTE y)
{
 int  chip_no;
 BYTE *Layer;

 Layer=LayerAddr+fmfHeader.Width*fmfHeader.Height*layer_no;
 chip_no=*(Layer+y*fmfHeader.Width+x);

 return chip_no;
}

//-----------------------------------------------------------------------------
// マップ情報上書き
void CMapData::Write(BYTE layer_no, BYTE x, BYTE y, BYTE chip_no)
{
 BYTE *Layer;

 // 範囲チェック
 if (layer_no>=fmfHeader.LayerCount || x>=fmfHeader.Width || y>=fmfHeader.Height) {
  return;
 }

 Layer=LayerAddr+fmfHeader.Width*fmfHeader.Height*layer_no;
 *(Layer+y*fmfHeader.Width+x)=chip_no;
}

//-----------------------------------------------------------------------------
// マップの横幅取得
int CMapData::GetWidth()
{
 return fmfHeader.Width;
}

//-----------------------------------------------------------------------------
// マップの縦幅取得
int CMapData::GetHeight()
{
 return fmfHeader.Height;
}

ゲーム開発27:マップチップ作成中2

名称未設定 4マップチップの方向とか角度とか間違ってたので修正しました。

前のだと進行方向の先からマップを見てる事になるから、変だよね。あと俯瞰角度も広く見えるように変更しました。

何度か作り直して今のカタチにしたけど、これで大丈夫かなぁ。まぁキリが無いのでひとまずFIXとして、マップデータ読み込み処理を作ることにします。

ちなみにこの画像の構成のままプレイ出来るとは限りません。技術的に解決すべき事が色々あるからね。

先は長い。

スポーツクラブに行く(9日目)

夕方くらいにスポーツクラブに行ってきました。やはり休日の夕方は混んでるね。

既にたくさんの人が使ったせいか、汗臭い器具があったよ(汗) やはり早めに行くべきか。しかし昼間はトレーニングの効果が出にくいらしいからなぁ。

ダイエットは朝、筋力アップは夜トレーニングすると良いとか。だからホントは朝から行ければいいんだろうけどね。

次は時間や曜日を考えて行ってみよう。

横浜で打ち合わせ&飲み

今日も横浜で打ち合わせです。今日の議題は某所のクリスマスイベント用システムの開発について。

クリスマスかぁ、例年俺はひとりでケーキ2個買って来て、日本酒をかっ食らって寝るとかそんな感じだけど、今年は違うものにしたいね。

打ち合わせ後は、持ち込んだノートPCでその場で作業したり。夜になったのでみんなでご飯を食べに行こうとしたら、ちょうど他の人達が地方出張から帰ってきたので、せっかくだからと居酒屋へ行くことになりました。

居酒屋では大量の串を注文して、みんなで食べたよ。飲みながらクレーム処理について語ったり。飲食系はヤ○ザ連れて来るから困るとかそんな感じ。出来るだけ穏便に済ませたいものです。

段々仕事が溜まって来たな…うまくこなさないと。

OAチェアを買う

chairデスクトップPCを使う時用のイスを買いました。SANWA SUPPLY SNC-NET4BKN2 OAチェアです。写真の左側のがそうです。

実はイスも10年間同じものを使っていて、最近プラスチックのタイヤがボロボロと欠けてきてたんだよね。タイヤは取替え出来ないっぽいし、買い替えとなりました。

家電屋で実際にイスに座って確かめながら、値段との兼ね合いも考えてこれにしました。約13,000円也

組み立ては自分でやったけど、30分くらいで完成かな。六角レンチで各所を固定するだけの単純な作業でした。

背もたれが頭の所まであり、レバーを引けば後ろにだらんと下がるので良いです。今までのは(写真の右側)、背もたれが小さいため、猫背がちになってたけど、これで姿勢も良くなりそうです。

ただ、今までのイスより大きいため、キーを打つ時に違和感があるなぁ。まぁこれは慣れかな。

これでより一層ネットサーフィn…じゃなくて、仕事に励めます。

ゲーム開発26:マップチップ作成中

2b65fcceゲーム開発再開です。

とりあえずマップを作ることにしました。あれこれ試してみたけど、やはり立体っぽく見えるのが良いなぁと思い、微妙に見下ろし視点にする事にしました。

しかし真横からの視点に比べて情報量が一気に増えるなぁ。お陰で必要なマップチップが数倍に膨れ上がったよ。

しかも作ってて合ってるのかどうかわからなくなったり。たまにマップエディタで仮組みして確認しながら作ってはいるけど、よくかわらなくなってきた。

ちなみにマップエディタはPlatinumというフリーソフトを使っています。

とりあえずもう少しマップチップを作ったら、マップデータをゲームに取り込む処理に移ります。

2009/11/4追記
やっぱりマップチップが間違ってたので作り直し中…

冬コミ(C77)受かりました

コミケ受かりました。まだ郵送で来てないけど、まぁオンラインで確認してるから大丈夫でしょう。

12月30日(水) 東地区 “W” ブロック 44b

位置的には東2ホールの真ん中へんです。もしかして島端

夏は落ちたので1年ぶりの参加です。前回出した巫女さんゲームを、さらに作り込んで出す予定です。例によって製作過程はこのブログに書いていきます。

もう年末に向けたシステム開発の依頼とか来てるし、今後は忙しくなりそうです。いやぁそれにしても龍が如く見参!面白いなぁw

スポーツクラブに行く(8日目)

超久しぶりの超スポーツクラブです。

なんと3週間ぶりだったり。海外旅行と風邪と、あとしばらく間が空くと行きたくなくなる病のせいです(汗)

何とか頑張って行って、いつものメニューをこなしました。海外で美味いものを食べ過ぎたり、風邪で引き篭もってたりしたんで、これまでのトレーニングがリセットされた感じです。そんな訳で物凄い疲れた。

改めてスポーツクラブ通いをスタートします。