忍者ブログ
カレンダー
10 2024/11 12
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
プロフィール
HN:
[-_-;] (みかん)
性別:
男性
趣味:
プログラミング、XOPS
自己紹介:
中部地方在住です。
最新コメント
[11/30 NONAME]
[11/22 NONAME]
[09/24 NONAME]
[06/10 NONAME]
[01/29 NONAME]
XOPS関連サイト「みかん箱」の運営や、OpenXOPSの開発などを行う[-_-;](みかん)のブログ。近状報告や独り言などを書きます。
Prev Month123456789101112131415161718192021222324252627282930Next Month
「XopsAddonCreator」の開発 -7
当初の予定には無かった機能なのですが、思い付きで開発してみた。
作成ウィザードとかデータチェック機能とかを作るのから逃げてるd


(クリックで拡大)

メタセコイア形式の入出力機能と、DirectXのXファイルの出力機能 を実装してみました。
BD1からMQO(メタセコイア形式)へは、nine-two氏提供の公式ツール「bd2mqo」、一方で
MQOからBD1への変換はka-navi氏の「MQO2BD1」をそれぞれ参考にし、同等(っと思われる)
機能を提供します。
BD1からXファイル出力については完全オリジナルですが、現行のポイントエディタ(XPE+)
で使用しているアルゴリズムを移植しています。

余談ですが、Xファイルの出力機能をなぜ現行のポイントエディタが有しているかというと、
3Dビュアーにマップ表示を行うためです。 一度マップデータをXファイルにモデルとして
落とし込んで、そのモデルを表示しているわけです。
(ポイントエディタでマップを開く際に時間を要するのはその・一度変換するためです。)
無論、今回のXopsAddonCreatorではそんな回りくどい方法はやってません。

技術的はBD1からMQOや、BD1からXファイルなんかより、ダントツでMQOからBD1が大変
です。公式のMQOフォーマット情報をもとに、ファイルの構文解析を行うロジックを自前で
作る羽目になりました。とりあえず試作しましたが、まだ完全じゃないかもしれません。

とりあえず、これでXOPSのマップデータとメタセコイア形式が、1つのソフトウェア上で共有
できるようになりました。需要があるかは知りませんが。
category : ソフト・ツール開発 comment [0]
PR
「XopsAddonCreator」の開発 -6
前回ソースコードが1万行を超えたことに触れましたが、これくらいの規模になると何処に何を
書いたか自分でも分からなくなってくるんですよね。
ここ数日はハードウェアを集中的にやり込んでました。
一通りキリが良いところでこちらに戻って参りましたが、ソースコードを目で追うのが大変です。

以下、残りの主な作業内容です。
 ・オプション設定項目の追加
 ・オプション設定項目の多言語化
 ・各種ショートカットキーの実装
 ・ミッション作成ウィザード
 ・デザインルールチェック:DRC(旧・ポイントチェック)
 ・ポイント検索機能
 ・ポイントの説明文編集
今までに触れてきたリストで、上記に含まれていないものは実装が概ね完了しています。
~あぁ本当に面倒な物だけ残ったなぁ。

「ポイント検索機能」については、機能もインターフェースも全く決まっていません。
「ミッション作成ウィザード」は現行XPE+(ポイントエディタ)に採用した物をそのまま移植する
予定です。
本当はさらに強化した機能も脳内には浮かんでいるのですが、あまりにもシステムが複雑で
作り上げる自信がありません。せっかく思いつきましたが今回は見送りです。

UV座標関係については仮実装しましたが、さらなる強化提案を頂いたので検討しています。
この辺は『マップ作成のし易さ』に直結する問題なだけに、出来るだけ機能を作り込みたい。

公開時期は未定で、計画としては本当に皆無です。
っと言いつつ、実は(公開時期について)開発ペースからある程度予想出来ていたりしますが、
根拠も自信もありませんし皆さんにお約束できるものでもありませんので、まだ公表しません。
category : ソフト・ツール開発 comment [0]
「XopsAddonCreator」の開発 -5
最近ふと気が付くと自分のやりたいことと やるべきことを自問自答しています。

ハードのSDカードの件は、「なんかやけに遅いな・・」っと思っていたらクロック周波数が構想の
半分で動いてました。
動作速度下げて色々テストしていたまま忘れてました。 なんていうアホ。
速度を倍に戻すとだいぶマシになりました、っといっても今だ遅いことに変わりないのですが。


XopsAddonCreatorの件は、ボチボチ進んでいます。
 ◆やったこと
  ・「MIFからBD1とPD1を開く」機能実装
  ・歪んだブロックのマーキング
  ・代用キーで操作可能に
  ・「イベントビュアー」を実装
  ・距離計測機能を追加
  ・人の到着待ち範囲を表示する機能追加

歪んだブロックの判定ですが、各面の法線を使います。
各6面はそれぞれ4つの頂点から構成されていますが、その4つの頂点のうち3つの頂点を使って
三角形を4通り作ります。 それらの法線・計4本の誤差を調べれば、その面が歪んでいるか判定
でき、結果ブロックが歪んでいるか調べられます。
ただこれだけだと裏返しになっていうブロックまでは判定できないので、対象のブロックの中心座標
を求めて、その座標を起点に全6面全てが裏向きなばら、裏返し状態でないことが確認できます。

前回書いた通り、これからするべき課題を書いておきます。
 ◆工程表
  ・最近開いたファイル機能実装
  ・UV座標マッピングをできるように
  ・オプション設定項目の追加
  ・オプション設定項目の多言語化
  ・未使用の認識番号の検索機能実装
  ・選択されたデータの数値移動機能実装
  ・ポイントテンプレート機能実装
  ・各種ショートカットキーの実装
  ・XOPS起動機能 追加
  ・ミッション作成ウィザード開発
  ・デザインルールチェック:DRC機能実装
  ・help browser実装
  ・ポイント検索機能実装
  ・自動バックアップ機能実装
  ・ポイントの説明文編集機能実装

「デザインルールチェック:DRC」というのは、XPE+(ポイントエディタ)でいう「ポイントチェック」です。
XopsAddonCreatorはブロックの編集機能も有しているので、ブロックのチェック機能に加えて、
ブロックデータとポイントデータの組み合せてチェックできるようにしようかと思っています。
例えば、ミッションスタート直後に埋まっている人・武器を見つけて警告してくれたりしたら素敵ですね。

まだまだ先は長いです。

あまり関係ないですが、ついに全体のソースコードの行数が1万行を超えました。
自分1人で作ったプログラムの中で、単一作品のソースコードとしては自己最高記録更新中です。
category : ソフト・ツール開発 comment [1]
「XopsAddonCreator」の開発 -4
VC++でこれ作りながら、ハードも触って、学校のテストも近いからその件もあるし、もう忙しいの
なんのって。 いや、逆に見れば暇だからこんなことやってるんだけど。


とりあえず最新情報をSSで貼る。


(クリックで拡大)

ぱっと見そんなに変わっていないように見えるが、外見に変化が少ないのはその通りである。
内部のゴチャゴチャした部分をいじっていたのでメイン画面に大きな変化はない。

ややその中身の話をすれば、ブロックデータの頂点管理をしやすいように関数を作ったことが大きい。
1個のブロックを描画するにも、
 「2Dトップビューの右上だから、座標は2・・・」
 「7番目の頂点座標のUV座標は、13と21・・・」
なんてことをその都度やっていたので、行数は多いし面倒くさいし間違えやすかった。
今回新たに作った関数を使えば、その煩わしさから解放されるうえ間違いがなくなる。
ついでにブロックデータも今まで単純な各配列変数に格納していたが、ポイントデータと同様構造体化した。
 ・・・なんていうマニアックな話だwww

ブロックネタの積み重ねだが、影の処理を作り直した。
2012年9月20日に話した通りだが、SSで見る以上に不完全で特定の向きのブロックなどで
色がおかしくなる不具合があり、ソースコード上も決して綺麗とは言えないごり押しプログラムだった。
これらは「偽XOPS」(fxops)から持ってきたコードだったが、結局作り直してしまった。
見かけ上は変わらないが、不具合も無くなり計算もシンプルになった。我ながら満足満足。

目に見える機能追加としては、UV座標の補正機能を追加したこと。公式エディタでいう「UV FIX」機能。
見かけ以上に単純な処理だったので賞味10分ほどで完了。
あとは、ソフトウェアの起動画面? を仮実装した。 まだ見せられる状況じゃないけれど。

公式エディタには歪んだブロックを黄色や橙色で表示する機能があるが、あれが良く分からない。
正月休み中に、久しぶりに公式ブロックを立ち上げていろいろ研究していたが、何かヒントを掴み
かけたものの一晩寝たら忘れてしまった。
歪んだブロックを判定する処理は必須なので、避けては通れないという思いだけなのが空しい。


全体の工程表を作っていないので分からないが、体感で必要機能の半分以上は既に実装している
気がする。
近いうちに「残り何が必要か」「まだ構築していない機能は何か」というリストを作る。
category : ソフト・ツール開発 comment [0]
同窓会に行く
今日は大雪が降って大変でしたが、中学の同窓会に行ってきました。
女子が変わり過ぎていて誰が誰だか全然分かりませんでしたが、懐かしい顔ぶれが揃いました。

ただ、せっかく集まった同級生とうまく話せませんでした。
自分は決して、誰とも話さない無口なタイプではない(っと思っている)のですが、人間関係の中心にいる
わけでもない訳で。
偶然隣に座った人とはちょっと話す程度で、誰も話に向かって来てくれるわけでもなく、逆に自分から行く
にも記憶が曖昧で話していてボロが出るのではないかと不安になったりしたり。
「あぁ、あいつ元気そうだな~ (遠い目」って感じで、結局近くにいた数人しか話しませんでした。
写真とかもそんなに撮ってませんし。

要因として、名前や人間関係などの記憶が曖昧になっていて、誰とどの程度親しかったか覚えていなかった
という致命的な理由と、他には思い出せる範囲で本当に親しかった連中とは事前に長電話で話してしまった
ことでしょうか。
あとは、今の自分の通っている学校がとにかく遠く、近情の説明がしにくい っというのもあるのだろうか。


細かい各個人との人間関係はさておき、とりあえず中学時代の自分をちょっと思い出しました。
あの時の自分がいるから、選んで進んできた学業・進路といい、今の趣味があるということを実感しました。
大げさな表現ですが、自分の原点なるものに立ち返った気がします。

関係ないですが、同窓会開始前に時間があったので近年のゲームセンターに行ってきました。
なんていうか目新しい物が多くて色々凄かったです。
category : 私生活とか comment [0]
[58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68]

※過去のブログ記事は 原則として編集・修正していません。
 各記事の内容は投稿時のものであり、現在では異なる場合があります。
 最新の情報は、関係する内容について書かれた 最新の記事をご覧ください。

TOP