2006年03月26日

MIDP2.0メモリー不足エラー発生!(泣)

…こないだ紹介したアドベンチャー系ケータイゲームなんですが、またもやしかも特大!)にぶち当たってしまいますた……

デカめの画像を複数表示する時、OutOfMemoryErrorが出てしまうのです…

Sunホームページによると、

メモリ不足のために Java 仮想マシンがオブジェクトを割り当てることができず、ガベージコレクタによっても使用可能なメモリをこれ以上確保できない場合にスローされます」

だそうです。

要するに(イメージも含めて)メモリ内のデータ量が多くてメモリ領域確保出来ねーヨ馬鹿!って言われた訳です…(泣)


現在は全ての情報(画像、文字、アニメーション)を起動時に読み込んでるのですが、ページごとに切り替えようかなと…
速さを求めてそうしたのですが、裏目に出てしまったようです…

それと、Spriteクラスを使ってるのですが、アクションゲームじゃないのでそのままImageクラスを使う方がいいかと。
余分なメモリーを使わないのでメモリ領域も少しは確保できるかもしれません。

今回メモリー領域確認の為使用したコマンドは、

Runtime run = Runtime.getRuntime();
String freememinfo = run.freeMemory();
String totalmeminfo = run.totalMemory();


です。これで現在フリーのメモリー量全体のメモリー量がわかります。

ってことで今後の修正方針は:

1.ページごとにリソースをIOから読み込んで各データ(画像、文字、アニメーション)をメモリー内に確保する。

2.Spriteクラスで処理していた画像データをImageクラスに直す。


で様子をみてみます…

はぁ、設計ミスだなこりゃ…サイアク…


posted by 1.618 at 23:46| Comment(0) | TrackBack(0) | JavaTips | このブログの読者になる | 更新情報をチェックする

2006年03月21日

WBC日本一位!!!!!

おめでとーございます!!!

日本悲願のWBC優勝達成!!!


すごー!

韓国に2連敗して何かスイッチ入ったんですかね?

今日テレビ見てたんですけど、キューバの点の取り方も凄かった。
ホームラン2本(だっけ?)も打ったし、1点差に詰め寄られたし…

でも、日本はホームラン1本も打たなかったのに10点(!!)も入れた!

すごー!

キューバってエラー日本よりも少なかったですよね?
(あるいはピッチャーの調子がみんな悪かったのか…)

追いついては引き離しの繰り返しだったのでかなりどきどきしました!

いや、いいゲームでした!
野球みててあんだけ興奮したのってコレが人生最初だと思います!w

日本世界一! サイコーです!!
posted by 1.618 at 22:24| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2006年03月17日

MIDP2.0におけるリソースの読み込み

ご無沙汰です。

色々のプライベートで入り込んでてブログ更新遅れてます。

最近はこないだやった「Fate」が面白かったので、テキストアドベンチャーゲーム作ってます。MIDPで。

画像系の処理は、Spriteクラスを使います。別にImageクラスでもいいかなと思ったんですが、回転やミラー処理の事考えてSpriteクラスを使います。(継承させてフレーム数とか、初期のX、Y値を保存させる)

画像系の処理は比較的簡単。
もう殆ど出来上がりっぽい所まで来てます。

……なんですが、問題はI/Oと文字処理です。
これらは直にハードと関わるので、Javaを使ってても調整や設定が非常に難しいです。

僕の持ってる機種はボーダフォン
Nokia702nkII

なのですが、プログラミングする上ではケッコー癖の強い機種って事が判明しますた。w

この機種、海外メーカーだからかもしれませんが、普通に日本語をファイルから読み込むようにプログラムすると余裕で文字化けします…!orz
mojibake2.jpg
↑エミュレータ―上ではちゃんと表示できますが……

mojibake1.jpg
↑実際のマシンにインストールすると化けます……orz

ホント、こういうバグって勘弁してほしいです……

昨日から相当調べてたんですが、nokia製品は文字コードにunicode、UTF-8を使っているって事がわかりました。

で、色々試してたんですが、結果、次のようにしたらうまくいきました。

1.日本語のファイルを「UTF-8」に変える。
  やり方としては、Eclipseでファイルを作成して、そのファイルを右クリック→「properties」→「Text file encoding」を「others」→「UTF-8」にする。

2.inStreamを利用したコードでファイルを取り込む時、Stringをnew String(string, "UTF-8")で変換する。

  byte[] work = new byte[bytesize];
  int size=0;
  InputStream in = null;
  try{
    in = getClass().getResourceAsStream(str);
    size = in.read(work);
    in.close();

    return new String(work, "UTF-8");
  }
  ……

って感じです。

これらを行った後、エミュレータ、実機で検証してみます。
mojibake4.jpg
↑エミュレータではちゃんと表示されています。実機では……?

mojibake3.jpg
↑成功!!やたー! (^o^)/

文字が画面からはみ出てしまってますが、まぁとりあえずリソースから日本語を読み込み、表示させるって所までは成功しました!

上のコードではreadメソッド一行でリソースを全て読むようにしていますが、ノキアサイトのドキュメントによると、上のやり方だと全てデータを読み終わらないのに結果が出てしまう場合があるそうです。なので、whileループで拾ってあげます。

byte[] work = new byte[bytesize];
int size=0;
InputStream in = null;

try{
 in = getClass().getResourceAsStream(str);
 if (in == null) return null;
 DataInputStream din = new DataInputStream(in);
 int bytes = 0;
 int offset = 0;
 while (true) {
  bytes = din.read(work, offset, work.length - offset);
  offset += bytes;
  if (bytes == -1 || offset >= work.length) {
   break;
  }
 }
 din.close();
 String s = new String(work, "UTF-8");
 return s;
}

これで完全!なハズ!!

今回のI/O系統のソースです。
IOUtil.java
posted by 1.618 at 22:58| Comment(0) | TrackBack(0) | JavaTips | このブログの読者になる | 更新情報をチェックする

2006年03月05日

Fate /Stay Nightの紹介

…やってしまいますた…

ゲームカテゴリは全然このBlogとカンケーないんで追加だけはしないようにしてたんですが、どーしても紹介したくなってしまって… orz

いや、それだけイイ作品なんで、何卒御理解の程を… orz

illusion.jpg

ストーリーはというと…

「手にした者の願いを叶えるという聖杯。
その聖杯を実現させる為、一つの儀式が行われようとしていた。

聖杯に選ばれた七人の魔術師(マスター)に、聖杯が選んだ七騎の使い魔(サーヴァント)を与える。マスターとなった者は他のマスターを消去して、自身こそ最強だと示さなければならないのだ。

この地に起きる儀式は、その名に恥じない“殺し合い”といえるだろう。

ふとしたきっかけからマスター同士の戦いに巻き込まれた主人公は、偶発的に七人のサーヴァントの一人、セイバーと契約する事になる。

望まぬままマスターの一人になった主人公は、聖杯を巡る戦いに身を投じる事になるのだが────」

ってな感じです。

18禁だし、ストーリーもありきたりっぽいので敬遠してたんですが、
数週間前にアキバ行った時町中がFate一色になってた(!)ので

ほほぅ…ここまで町を熱狂させるのには何か理由があるはず!

と思ってやってみることにしました…

saber1.jpg

…で、最初のテンポ、文章の表示の仕方の悪さに

「あー…失敗したかぁ…」

と思ったのですが!!

あれよあれよと言う間にストーリーに没頭!

気付いたら5つある全てのエンディング見てました…!

…こんだけハマったゲームなんてココ数年記憶にありません!

感じたことですが、このゲームはストーリー一本で勝負してきます。

archer1.jpg

その厳選されたアクション性のあるストーリーは他を圧倒して余りある…と言っても過言では無いと思います。

他の恋愛ゲームに見られるような恋愛物一本筋のストーリーではないって事と、
全てのエンディングがお子様的で単純な物ではないってのもハマった理由だと思います。

あと雰囲気を損なわない音楽や効果音ももちろん理由の一つですね。

18禁ってってもHシーンは殆どありません。
多分暴力描写の方に比重がいっていると思います…

機会があれば是非やってみてください。
ボロ泣き必至です!

「自分が踏みつけてきた────」の所で俺は3回程泣かされました… orz



Fate /Stay Nightのホームページ
http://www.typemoon.com/fate/
↑コッチがメインストーリー。

Fate /Hollow Ataraxiaのホームページ
http://www.typemoon.com/hollow/index.html
↑コッチは/Stay Nightの後日談。

アニメ・Fateのホームページ
http://www.staynight.com/top.html
3/29発売予定! Fate stay night DVD 第1巻 初回限定版
↑アニメにもなってるようです。

posted by 1.618 at 01:32| Comment(2) | TrackBack(2) | ゲーム | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は180日以上新しい記事の投稿がないブログに表示されております。