zillionプロジェクト開発ブログ 忍者ブログ

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ただいま作っております。これをライブラリ化して、カズのほうに渡して、そのデータ通りに動くようにランタイムを改造してもらいます。

そうすれば、俺もエディタの機関部である、エディト機能自体に着手できるのでありますからなぁ。

今できているのは、ゲームシステムデータのローダーだけです。
これは、スクリーンがフルスクリーンで実行かとか、ゲームのタイトルとか、そのようなところのパラメーターになります。

今日製作しているのは、シーケンスごとに定義する部分、つまり、Flexでいえば、ステートに当たりますね。

これによって、ゲームをシーンごとに分けるようにします。

それはそうなのですが・・・

問題がありまして・・・

[1]ロード時間の問題
XMLのロードってどのくらいの時間がかかるのか。実用的な範囲で運用できるのか。

[2]ファイル分割の問題
シーケンスごと、武器ごと、キャラクターごとにファイルを分けられるようにした方がいいのではないか、という問題。
要所要所でロードすればいい。

[3]ランタイム開発間に合うのかという問題
エディターも最初の頃かなり遅れてたので人の事言えませんが、1人で間に合うのかという問題。


物作るって大変だなぁ

拍手[2回]

PR

hiroumaumaさんのブログでは、PSPプログラミング講習が人気を博しているようです。

残念ながら僕はPSPに関してプログラムを組んだことはありません。
ソースを見たことならありますが・・・
なので、MSXML6を利用した、XMLの内容の取得をしてみます。

内部を識別する処理はまだ制作していませんが、ここでは、OEのアップデート処理に使用されているソースを基に解説します。(ほとんどXPathの解説になると思います。
なんか、スクショが切れてしまっていますが、SULTはHRESULTのですね、{も切れて映っていません・・・
picasaweb.google.com/112707182961116286529/HmIZeB#5495050720645511426

ヘッダ部分はこうなってます
MSXML6において必要なのはこの3つです。
上の二つはOEの内部的な物なのでお気になさらずに。
picasaweb.google.com/112707182961116286529/HmIZeB#5495051393212118418
ヘッダの、#importだという事に気を付けてください。#include ではないです。
また、#importの後に<msxml6.h>をインクルードしないとエラーになるそうです。
一応、using namespace MXXML2;をしておく方がいいでしょう。
ただ、型があいまいですというエラーが出ることがあります。

この場合は、あきらめて名前空間から型やメソッドを指定しましょう。
ちなみにこのソース、MSXML2::となっているのはわかりやすくするためです。当然、using namespaceであらかじめ断られているので、このままでも使用できます。

さて、実際の処理のほうを見てみましょう。
    MSXML2::IXMLDOMDocument2Ptr Domp;
    Domp.CreateInstance(__uuidof(MSXML2::DOMDocument60));
で初期化しています。msxml6を使うなら、このままでいいでしょう。

    if((Domp->load(_variant_t("Updata.xml"/*実際はサーバー上のアドレスを指定します。*/))==FALSE)){/*MB_RETRYCANCEL*/
        MessageBox(NULL,_T("アップデートの確認に失敗しました。\n\nネットワークの接続の有無の確認及び公式サイトにて、パッチ等の配布がされていないかチェックしてください。"),_T("アップデーターエラー"),MB_ICONERROR|MB_CANCELTRYCONTINUE|MB_HELP);
        return E_FAIL;
    }

まず、if分の中でロードを試みて、FALSEかどうか判断していますが、MFCでデバッグならば、ASSERTでも構わないでしょう。長いので独自に#defineで作ってみたりとかでも、少し見栄えが良くなります。

メッセージボックスの中身は・・・・気にしないでください。自分で好きな物をどうぞ。

さて、実際にエレメントの中身を読み込んでみましょう。
    MSXML2::IXMLDOMNodePtr pElement=Domp->documentElement;
    CComPtr<MSXML2::IXMLDOMNode> pNode = FALSE;
    MSXML2::IXMLDOMNodePtr result;
    result = pElement->selectSingleNode("/updata/FullUpdate/DLAdd");
    AfxMessageBox(result->text);

これは,MFCで組まれているので、AfxMessageBoxで簡易的にやっていますが、使わないならば、MessageBoxやprintfでも、確認するだけであれば代用が効きます。

selectSingleNode("/updata/FullUpdate/DLAdd");
問題はこの部分です。この部分で、XMLのどこを取得するのかをXPathで決めています。

OEのこの部分は、最新版のダウンロードアドレスを取得しているところです。
ちょっと長いですが、Updata.xmlの内容は以下のようになっています。
<?xml version="1.0" encoding="utf-8"?>
<updata>
<PachedUpdate>
  <Docs name="Editer">
    <DLAdd>
      http://www
    </DLAdd>
    <id>
      1.00
    </id>
  </Docs>
  <Docs name="Runtime">
    <DLAdd>
      http://www
    </DLAdd>
    <id>
      1.00
    </id>
  </Docs>
</PachedUpdate>
<FullUpdate>
  <DLAdd>
    サービスは停止しました。(^ω^)
  </DLAdd>
  <id>
    1.00
  </id>
</FullUpdate>
</updata>

実際はサービスは停止しましたのところに、DL先のアドレスがあり、ダウンロードされるように作っているのですが、とりあえず表示するだけなので、これを取得してみます。
picasaweb.google.com/112707182961116286529/HmIZeB#5495058465513221266

まあ、こんな感じですね。
さりげなくスクショ公開しましたが・・・

ちゃんと中身が表示されています。
変えればこんな風になります。
picasaweb.google.com/112707182961116286529/HmIZeB#5495059856599499714

さて、ボケはこのくらいにして、開発を急がなければ~



拍手[1回]

ようやくMSXMLの使い方がわかってきました。

XPathを使えば楽に、目的のエレメントが取得できます。

なんか、ブログの記事が難しくてつまらないぞとメールで、ご指摘いただいたので、今やっていること、わかりやすく書かせていただきます。

・自動アップデートへの対応

今やっているのは、自動アップデートそのものではなく、サーバー上からアップデートがあるかどうかを確認するものです。それからですね、ファイルを自動でダウンロードして、書き換えるのは。

どのようにやっているかというと、サーバー上には、最新のファイルたちのバージョンのリストがあります。
インストールすると、ローカルにファイルたちのバージョンを記憶する情報がレジストリに書き込まれます。

もし、このレジストリの値と、サーバーのバージョンの値が異なれば、もちろんのこと、このファイルは違いますね。

なので、そのファイルだけを受け取るのです。

・3Dのライブラリ化

例えば、エディターで作っているときに表示されていた3Dグラフィックと、実際に配布時にランタイムで実行されるときに表示される3Dグラフィックが違ったら大問題です。

正しく表示されるように作ったつもりが、表示されなかったり・・・

なので、このような基本的な描画処理は、エディターもランタイムもいっしょにしてしまおうというのが、目的なのです。

これによってそのようなこともなくなります。

・スタートウィンドウの作成

どんな人でも、初めて触るツールというのはとても扱いづらいものです。
なので、この改善策として、最初のウィンドウには、「学習」という項目があります。

そのうち用意するそれぞれのヘルプファイルへのアクセスのためです。

また、新規作成、開くなど基本的なアイコンもスタートウィンドウにおいておけば、グラフィカルなウィンドウで非常に操作しやすいのです。

・OEVServer[仮称]の作成開始
C#ですが、これはegretの作業項目となっています。
なぜC#にしたかというと、確かにjavaのようにクロスランタイムは無理ですが、サービスとしての運用が比較的容易であること。

また、javaに比べ少しばかり軽いこと。

LINQというシステムで、データベースに簡易的なアクセスを施せることです。

・OEViewer[仮称]の作成開始
これはAdobe AIRです。トビッチの作業項目となっています。
なぜ、AIRなのかというと、グラフィカルなデスクトップウィジェットを作れるからなのです。

これについての説明は明日です。というのも、これだけで1記事かけてしまうほど大きな内容なのです。

また、明日は久しぶりにスクショの日です。

少しは取れる内容があるかとは思いますので、頑張ってみます。

拍手[1回]

今日終業式です。

通知表にドキドキです。試験前、今までないほど勉強しませんでしたから。

問題は世界史の課題です。先生が忘れていることを祈ります。なんか、ずっと配られないので・・・

それと、エディターとランタイムで、今まで別々の3Dのライブラリを構築してましたが、これはまずいという事に気づき、共有ライブラリにすることに決めました。

PhysXの担当もおそらく僕になりそう。夏休みの宿題終わるかな~

拍手[2回]

夏休みとはいっても作業スピード変わりませんね。

やっぱり、ながーくかかっちゃいます。
ランタイムの進み具合に比べ申し訳ない勢いです。

さて3DFPSで問題なのは3DFPSとなると、物理的な演算をしなければならない点です。

確かに、手榴弾などの放物線運動は
y=v0t+1/2at^2
とx軸方向の等速運動、z軸方向も等速運動で表せられますが、
将来的に、ずっとこのような物理演算式を書いていては、できない部分も出てきます。
例えば、水の演算、反射・・・etc
さすがに高校生じゃ無理です。

Physxを使う方法が一番有力なんですが、資料が少なく難航しそうですね。

拍手[2回]

◎ カウンター
◎ カレンダー
08 2025/09 10
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
◎ 最新CM
[10/24 名無しの権兵衛]
[08/30 名無しの権兵衛]
[08/14 no name no future]
[08/05 ゲームサークルEaSt]
[07/28 リオウ]
◎ プロフィール
HN:
solilpquy
年齢:
30
性別:
男性
誕生日:
1994/09/22
職業:
人間
趣味:
趣味ねぇ~~う~ん・・・
◎ ブログ内検索
◎ バーコード
◎ アクセス解析
◎ フリーエリア
◎ フリーエリア
Script: Ninja Blog 
Design by: タイムカプセル
忍者ブログ 
[PR]