atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
FPSを作ってみる@wiki
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
FPSを作ってみる@wiki
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
FPSを作ってみる@wiki
ページ検索 メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • FPSを作ってみる@wiki
  • 進捗状況(2011
  • 12)

FPSを作ってみる@wiki

12)

最終更新:2011年12月25日 10:05

slice

- view
管理者のみ編集可

(2011/12/25)

進捗

Done
  • テキスト描画に使用するフォントテクスチャのフォーマットをD3DFMT_A8R8G8B8からD3DFMT_A8へ変更
  • 上記の変更に従い文字描画クラスの修正
  • ユーザー情報テーブルのスイープ処理
  • Poolプラント追加
  • RadioBox, CheckBoxのバグ修正
(・GUI部品:スライダーの追加(not スクロールバー) <= まだ途中)
ざっとこんな所.

フォントテクスチャは暫定でA8R8G8B8にしていたものの,
実際はαチャンネルしか使ってなかったんで,だったらαだけのフォーマットがあるだろうと思い探したらやはりあった.
単純計算で4分の1のメモリ使用量となる.処理速度は殆ど変わらず.
ただR16G16やR16F(浮動小数点数フォーマット)等のフォーマットでは使用されないBlueやAlphaの数値は1.0固定だったのに対し
A8だと0になるようで,1.0を前提に組んでいたコードを手直しする必要があった.

もっと手の込んだ手法としてはフォントテクスチャとしてA4R4G4B4かA8R8G8B8をガッと確保し,
チャンネル毎に違うフォントを4枚分割り当てるなんてのも考えられなくはない.
そうすれば途中でテクスチャの切り替え無しに異なるフォントを一括描画可能だ.面倒だけど.

ユーザー情報テーブルのスイープというのは前に書いた通り,ユーザーの情報が詰まったJSONテーブルを一定の量だけとっておく処理である.
これについては説明の必要も無いかと思う.

RadioBoxとCheckBoxのバグについて.
LuaではJava等と同じくオブジェクトは参照渡しなのだが,ここで1つ疑問が生ずる.
すなわちオブジェクトの初期値や関数の引数をコピーすべきかどうか.(C++の場合は明示的なので問題ない)
何も考えず常にコピーするのも一考だが処理量が増える.かといって参照コピーでは後で引数を再利用する場合に問題である.
今までは「後でなんとか調整すればいいや」と放置していた訳で,早速ツケが回ってきた格好だ.
RadioBoxに初期値として渡す項目のテーブルを参照コピーとすると複数設置した場合にクリックしていない方のボックスが
反応してしまったりとか.

で,どうしたか.色々悩んだ挙げ句
引数をテーブル1つに纏めて渡す所で,メンバ名先頭に_(アンダーバー)を付けるとそのメンバ項目をコピーするようにした.
根本的な解決策ではないがとりあえずこれで行く.

思えば引数を再利用するケースはそんなに無さそうだし
引数の基本は参照コピー,必要に応じて呼び出し側が複製という形がよさそうか.

(2011/12/18)

xpressive

マニュアルを見る限りすぐにでも移行できそうだったのでboost::regexからboost::xpressiveにサクッと切り替え,
ついでにダイアログの正規表現処理をstatic regex版へ移行・・・
したのは良いが案の定コンパイル時間が目に見えて長くなった(3秒から20秒程度に)
コンパイル時に正規表現の解析をしてるから恐らく動作速度は有利なのだろう.
しかしダイアログリソースなんて頻繁にやるものではないからデメリットの方が大きい(そして戻すのも面倒くさい罠).よって放置.

通常の正規表現より表現の幅が広いというのは,再帰的な構文解析ができるという意味だろうか.
計算式の解析をしたいという時には便利だろう.

ただ,これでわりかしstatic regex構文は覚えられたので
HTTPヘッダの解析を書き直せばそれなりの成果は得られると思う.
(JSONは正規表現使うまでもない)

さて.Twilveの方はというと.
  • TwitterAPIを用いてツイートやその他諸処の情報を取得するクラスを「ソース」
  • ツイートを流したり,溜めたりするクラスを「プラント」
と呼ぶ事にした
従ってTweetFlow(以後Flow)はプラントの一種である.
ちなみにFlowの他にもツイートが溜まり,ユーザーがクリックするまで消えないPoolというプラントも現在作成中である.主に自分への返信向け.

ソースを編集するウィンドウは前回のスクリーンショットのように,
使用するAPIを選んで付随するパラメタを入力するだけと非常に簡素な物.
パラメタは現状,検索キーワードのみに対応.

ソースを作成した後,まだGUIを用意してないが「プラント編集ウィンドウ」にてソースとの関連づけを行うと実際に
ツイートが流れてくる仕組み.重複も勿論可.
ソースには通常のPull型(こちらが要求する)とPush型(向こうから適時送られてくる)があり,
TwitterAPIにおいて前者は通常のAPI,後者はストリームAPIが該当する.
Push型はともかくPull型は何らかのタイミングでリクエストを送る必要がある.
とりあえず,Twitterには有名なAPI回数制限が存在するのでずっとコールし続けても引っかからない30秒間隔としておいた.
ソースが増えればもっと長くする等工夫が要るだろうが・・

これからの予定.
  • GUI部品の細かいバグ修正
   リストボックスをクリックすると親ウィンドウのフォーカスが外れてしまう,Editの選択範囲の表示順位など.
  • Poolの実装
   前述.
  • Twitterユーザー情報のキャッシュ機構
   全部溜めるとあっという間にMB単位になってしまい,Luaで10MBも使うと全体的な動作が遅くなる.
   そこでLeast Recently UsedならぬLeast Recently Tweeted方式で使われない情報を捨てていく.
  • GUI描画が何故か妙に重い問題の原因究明と修正
   D3D描画コール自体は1~2回だし,頂点バッファとインデックスバッファもこの前それぞれ1回に纏めたにも関わらず相変わらず重い.
   長文テキストなどそれなり頂点数が多いオブジェクトを同じ形式で描画するとパフォーマンスが出るのに何故GUIだけ?
やっぱりgifアイコンに対応すべきだろうか?使ってる人結構居るのがなんとも・・
ユーザーストリームのツイート以外の「誰々をふぁぼった」だの,「RTされた」のイベントはどのように通知したら面白いかなー等

挙げればきりがない
  • 少しは見栄えのするデバッグ用コンソール <- 開発のテンションに影響する
  • 簡易プロファイラの書き直し
  • 右クリックメニュー
  • ストリーム接続がエラーを吐いた時の対処
  • ソースとプラント配置の保存,復元

(2011/12/15)

増えるリスト

Todoリストを1つ処理すると2つ増え,その中の1つを処理すると3つ増え・・

Done
  • Editボックス内スクロール
  • 上記に伴う選択範囲表示のクリップ
  • GUI部品:スクロールバー
  • GUI部品:リストボックス
  • 簡単な当たり判定に一々C++を経由してた箇所を,判定ルーチンを一部Luaに移植する形での修正
  • Windowsのダイアログリソースからレイアウトをインポートする機能
  • プールメモリアロケータにrealloc的な機能を追加
  • ユーザーポインタ使用のポリゴン描画周りの最適化(失敗)

ざっとこんな所.
もちろんメインディッシュはEditボックス内のスクロールでした.
表示領域をカバーできるサイズのバッファ(テクスチャ)を取り,そこに
昔のゲーム機のBG面のようにフォントを書き込んでいく・・・
ただゲーム機のタイルサイズは通常,固定であるがフォントの場合は幅が文字毎に違うので
バッファから一部はみ出る文字がどうしても出てくる.
考えるだけで面倒くささが伝わると思う.

スクロールバーとリストボックスはまぁ・・・昔に実装した事があったからそこそこという感じで.

次に躓いたのはダイアログリソースからインポートする機能.ダイアログリソース自体の説明は要らないと思う.
ウィンドウ出す毎に座標をポチポチセットしていたのでは(というか先週までそうだった)埒があかないから
ヴィジュアルなエディタで編集しましょうねという事で.
テキスト形式だからすんなり行くかと思ったら構文解析で手間取る.
いつものようにif文でガリガリやればそれなりの時間で終わったんだろうが
つい欲をだして「正規表現で解析してみようか」なんて調べ始めたのが運の尽き.

最初はLuaに備わってるstring.gmatch()でもいいかと試してみたけど,どうもしっくりこない.
これは自分が知らなかっただけなのだが,本来正規表現のマッチングは複雑な処理を伴う物であって
それをLuaにフルで乗せようとすると折角コンパクトなLuaの容量が膨らんでしまうとの事で
string.gmatchは簡易版のようだ.

この時点でLuaを諦めC++の,前から目を付けていたboost::regexを試すが
今まで「なんとなく」で正規表現を使っていたので構文の把握にこれまた手間取る.
(boost::spirit使った方がスマートに出来そうだ)
で,やっと出来たのが3日前くらいか.

今は・・相変わらずツイッタークライアントを作っているんだが
説がまた長そうなんでここで一端止めておく.
「12)」をウィキ内検索
LINE
シェア
Tweet
添付ファイル
  • src_tweet.jpg
FPSを作ってみる@wiki
記事メニュー
  • トップページ
  • 参考資料ブックマーク等
  • Tips

Media

  • 頂き物
Screen shot
  • FPS_page1
  • FPS_page2
  • FPS_page3
  • Other_page1
Drawing
  • Drawing(analog)
  • Drawing(digital)
  • Drawing(digital) 2
  • Drawing(digital) 3
  • Drawing(digital) 4
  • Drawing(digital) 5
  • Drawing(digital) 6
  • Drawing(digital) 7
  • Drawing(digital) 8
  • Drawing(digital) 9
  • Drawing(digital) 10
  • Drawing(digital) 11
  • Drawing(digital) 12
  • Drawing(digital) 13
Movie
  • movies-list

Old Contents

  • トップページ(old)
  • メモ書き
  • 力仕事UP場
  • ゲームシステムとか
  • バグ・動作報告
  • program(twilve)

Progress log

  • (2018/03)
  • (2017/04)
  • (2017/03)
  • (2016/10)
  • (2016/09)
  • (2016/08)
  • (2016/07)
  • (2016/06)
  • (2016/05)
  • (2016/04)
  • (2016/03)
  • (2016/02)
  • (2016/01)
  • (2015/12)
  • (2015/11)
  • (2015/10)
  • (2015/09)
  • (2015/08)
  • (2015/07)
  • (2015/06)
  • (2015/05)
  • (2015/04)
  • (2015/03)
  • (2015/02)
  • (2015/01)
  • (2014/12)
  • (2014/11)
  • (2014/10)
  • (2014/09)
  • (2014/08)
  • (2014/07)
  • (2014/06)
  • (2014/05)
  • (2014/04)
  • (2014/03)
  • (2014/02)
  • (2014/01)
  • (2013/12)
  • (2013/11)
  • (2013/10)
  • (2013/09)
  • (2013/08)
  • (2013/07)
  • (2013/06)
  • (2013/05)
  • (2013/04)
  • (2013/03)
  • (2013/02)
  • (2013/01)
  • (2012/12)
  • (2012/11)
  • (2012/10)
  • (2012/09)
  • (2012/08)
  • (2012/07)
  • (2012/06)
  • (2012/05)
  • (2012/04)
  • (2012/03)
  • (2012/02)
  • (2012/01)
  • (2011/12)
  • (2011/11)
  • (2011/10)
  • (2011/09)
  • (2011/08)
  • (2011/07)
  • (2011/06)
  • (2011/05)
  • (2011/04)
  • (2011/03)
  • (2011/02)
  • (2011/01)
  • (2010/12)
  • (2010/11)
  • (2010/10)
  • (2010/09)
  • (2010/08)
  • (2010/07)
  • (2010/06)
  • (2010/05)
  • (2010/04)
  • (2010/03)
  • (2010/02)
  • (2010/01)
  • (2009/12)
  • (2009/11)
  • (2009/10)
  • (2009/09)
  • (2009/08)
  • (2009/07)
  • (2009/06)
  • (2009/05)
  • (2009/04)
  • (2009/03)
  • (2009/02)
  • (2009/01)
  • (2008/12)
  • (2008/11)
  • (2008/10)
  • (2008/09)
  • (2008/08)
  • (2008/07)
  • (2008/06)
  • (2008/05)
  • (2008/04)



記事メニュー2

Update Log

取得中です。
人気記事ランキング
  1. Drawing_analog
もっと見る
最近更新されたページ
  • 2687日前

    menu_L
  • 2687日前

    進捗状況(2018/03)
  • 2687日前

    Drawing_digital_13
  • 2687日前

    Drawing_digital_12
  • 2687日前

    トップページ
  • 2892日前

    Drawing_digital_11
  • 2973日前

    Drawing_digital_10
  • 3005日前

    進捗状況(2017/04)
  • 3046日前

    進捗状況(2017/03)
  • 3097日前

    頂き物
もっと見る
人気記事ランキング
  1. Drawing_analog
もっと見る
最近更新されたページ
  • 2687日前

    menu_L
  • 2687日前

    進捗状況(2018/03)
  • 2687日前

    Drawing_digital_13
  • 2687日前

    Drawing_digital_12
  • 2687日前

    トップページ
  • 2892日前

    Drawing_digital_11
  • 2973日前

    Drawing_digital_10
  • 3005日前

    進捗状況(2017/04)
  • 3046日前

    進捗状況(2017/03)
  • 3097日前

    頂き物
もっと見る
ウィキ募集バナー
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. MadTown GTA (Beta) まとめウィキ
  2. AviUtl2のWiki
  3. R.E.P.O. 日本語解説Wiki
  4. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  5. シュガードール情報まとめウィキ
  6. ソードランページ @ 非公式wiki
  7. ドラゴンボール Sparking! ZERO 攻略Wiki
  8. シミュグラ2Wiki(Simulation Of Grand2)GTARP
  9. 星飼いの詩@ ウィキ
  10. Dark War Survival攻略
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ストグラ まとめ @ウィキ
  3. ゲームカタログ@Wiki ~名作からクソゲーまで~
  4. 初音ミク Wiki
  5. 検索してはいけない言葉 @ ウィキ
  6. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  7. 発車メロディーwiki
  8. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  9. オレカバトル アプリ版 @ ウィキ
  10. SDガンダム ジージェネレーションジェネシス 攻略Wiki
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 過去の行動&発言まとめ - 鹿乃つの氏 周辺注意喚起@ウィキ
  2. マイティーストライクフリーダムガンダム - 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  3. 魚拓まとめ - 鹿乃つの氏 周辺注意喚起@ウィキ
  4. 参加者一覧 - ストグラ まとめ @ウィキ
  5. 1103環境(遊戯王) - アニヲタWiki(仮)
  6. 前作からの変更点 - 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  7. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  8. コレクター・ユイ - アニヲタWiki(仮)
  9. サーヴァント/一覧/クラス別 - Fate/Grand Order @wiki 【FGO】
  10. 画像倉庫 - 鹿乃つの氏 周辺注意喚起@ウィキ
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.