SimpleROHook Source Code Overview

SimpleROHook Source Code Overview

体調との折り合いを見ての作業だったので随分と時間が経過してしまっています。まだ少々弄らないといけないのですが、ソースコードを公開できるような体裁が整いました。なるべくスキルの無い人でも弄ることが出来るような構成にしたつもりです。c#が出来る人ならホストプログラムの方を作成できるのではないかと思います。

ツイッターを始めたので賛同者は記事にツイートしてください。人数次第で機能拡張など、どこまでやるかを考えます。

避難所雑談スレで突っ込みがありましたが、よくよく考えればその通りで、悪者は一人でいいとかそういう話ではありませんが、フォローしたい人だけフォローして下さい。世間の事情からフォローできない人は、コメント投稿をもって意思表示とします。
投稿されたコメントは意思表示の人数としてカウントします。表示承認しませんので外部には表示されません


2014-05-22-simplerohook-src-overview

クリックまたは保存してフルサイズでご覧ください。ソースコードの片りんはこちらで見ることが出来ますが、現行のコードはもう少し直感的に理解可能かと思います。

因みに以下のコードだけでプレイヤー直下に文字が表示できます。

現行のコードでもjROの2014年5月20日のパッチで動作しなくなったM2Eには対応していません。良い機会なので、これに対応する方法をソースコードを交えて解説することで以後、ほかの誰かがソースコードを修正すれば使えるような形に出来ればと考えています。
残りのROライフを有意義に過ごすためのプロジェクトとでも申しましょうか…。

公開はgithubで行おうかと考えています。

コンパイルにはVisualStudio 2010、またはVisualStudio 2013 (Expressでも可) で行います。

VC++2010のビルドツールが必要なので、VisualStudio 2013の方は別途にVC++2010ExpressかVC++2010のインストールが必要です。必要なのはビルドツールだけなので最低限のインストールで構いません。これはC++の標準ライブラリのバージョンをROのexeで使用されているものと合わせるために必要です。DirectX7のライブラリが必要ですが、インストールするバージョンはこちらをご覧ください。

環境セットアップ関連は以下の記事を参考にして下さい。

Visual Studio 2013 の プラットフォーム ツールセット を拡充する | Planetleaf.com Lab.

まぁ、わりと夢物語が入っています。ここまでやって置いてなんですが、個人的にはお蔵入りでもいいかと思っています。
正直、公開直前になってパッチが当たってM2Eが死亡。盛大に予定が狂いました。泣きたい気持ちになっている人がここに居ます。

苦労してまでやる事かな…とか思ってみたり

追伸:イズルードはこんな感じで…
ro2014new_izulude

 

以下、こんなコードなら自分でも弄れるかもしれない的な事を判断するための材料にでもして下さい。

座標変換の計算式は、以前のバージョンではデバッガを使用して計算中の値を拾って、一般的な透視変換の式に当てはめたため微量の誤差がありました。

今回新たにクライアント内で実際に使われている透視変換のファンクションを解析して寸分たがわぬ計算式を復元しました。

nowProjectVertexCalcForm

CRendererという描画タスクのコアクラスからスクリーン系の補正値を拾う事で計算式を完成させています。この為、パッチによりクライアントのデータ構造が変化するとその都度解析、変更が必要ですが、コードがシンプルなのでメンテナンス性に優れています。

 評価用コード

現状のコードのコピペで失礼。DirectXの初期描画時にCRoCodeBindクラスが生成され、クライアントのUIが描画される前にDrawOn3DMap関数が呼ばれ、クライアントの全ての描画が終わった後にDrawSRHDebug関数が呼ばれるというシンプルな物です。

散らばっていたコードをクラス化して体裁を整えただけなので、もう少し形状が変わるかもしれません。

ws2_32.dllのrecvがパケットを取得するとPacketQueueProc関数に処理が渡り、現状はパケットログが流れています。

gitの使い方をこれから覚えるという体たらくなので、しばらくお待ちください。コードを改修しつつ、やり方を解説できるくらいには覚えないといけませんね。やはりgitの導入と使い方、githubのアカウントの作り方とか、ここのサイトにまとまっていたほうがいいですかね…。

 

 

コメントを残す