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

FPSを作ってみる@wiki

04)

最終更新:2011年04月30日 22:02

slice

- view
管理者のみ編集可

(2011/04/30)#2

その2

チマチマと.

(2011/04/30)

リハビリング

はいはい.モデリングのリハビリ.
野暮ったく見えるけど実際には下のようになるんじゃないですか?多分.

(2011/04/27)

リソース構造

22日に記事を上げようとメモ帳に書いたところで放置してしまった.いつもの悪い癖.
以下は17~27日の状況と思ってほしい.

OAuth認証は面倒だなぁ,と嘆いていたらTwitterには簡易版のxAuthというのがあるようで.
でもまあOAuthで認証する所まで行けたしいいか.
後は気が向いた時にでも少しづつやっていくつもり.
数学もチマチマとベクトル,行列,座標変換と進み今はクォータニオンで苦戦中.
当然ながら四元数の名の通りまずは複素数から学ばないと入っていけないようだ.

そしてゲームの話.リソース管理について.
今まで同じリソースは1本の可変長配列で管理していた.
(例えばテクスチャならテクスチャ全体で1本,モデルならモデルでというように)
リソースにはハンドルという番号を割り当て,ユーザーはこれをマネージャに渡して実際のポインタを得るわけだ.
しかしこの構造はゲームで使う上で問題になる.
ぶっちゃけ図を入れるまでもないが・・一応説明しておくとこの図は
新しい要素を追加する時に空きが足りなければ新しく領域を一本確保して既存要素をコピーするという可変長配列の動作を示している.
アクセス自体はインデックス一発で高速なものの
誰かがリソースを使用していると勝手に拡張も出来なかった.
どんな時にマズいかと言えば
  • あるテクスチャAを読み込み中にテクスチャBも必要だとわかった
  • 続けてBも読みたいが,配列に空きが無いので拡張したい(新しく領域を確保して,そこへ既存の領域をコピー)
  • しかしAは使用中なので勝手にメモリを移動できない = Bを読めない
といった具合.

もちろんこのケースではBの読み込みを遅延させる方法で回避可能だ.しかし根本的な解決とは言えないのも事実.例えば
  • テクスチャAの関数内でモデルXの関数を呼ぶ
  • モデルXの関数ではテクスチャBの情報が要る(Bはまだ読み込まれていない)
となればやはり破綻する.
悪い事に実際ゲームでは上の状況は日常茶飯事なのだ.
今までは騙し騙し小細工で乗り切ってきたがいい加減に抜本的な改善が必要である.

考えてみればそもそもリソースを一本の配列でメモリに置かなくてはならない理由など無いのだ.
(いや,出来るだけ1箇所に纏めたいが)
一先ず大まかなデータ構造で思い付くのは「配列(ベクタ)」「線形リスト」「ツリー」・・だろうか.
とりあえずアクセスの度に大量の分岐が入る線形リストは論外だし
ツリーにしても乱暴ではあるが似た様な物か.
だからといってリソースをハンドルを使わず生ポインタで管理するのも避けたい.というかそれではリソース管理の意味が無い.
でも根元の部分だけに速度はある程度欲しい・・・

結局インデックスアクセスだろう,配列1本が駄目なら2本以上だという考えに至った.
配列を拡張したいのにそれが使用中であったら新しく配列を確保してしまえという方向.
この図を見て「やっぱ目的のリソースがどの配列にあるか分岐が要るじゃない?」と思われそうだが
ある種の制限を加えれば計算で一意に求まる.それは
  • 各配列サイズは2の累乗とする
  • 新しく確保する配列のサイズはこれまでの全要素数に等しい
のような物.
2つ目の項目は何を言ってるのかというと{ [2] }の状態で新たに配列を確保する時のサイズは要素数=2, 新しい配列サイズも[2]であり,
{ [2],[2] } となる.更に追加すれば { [2],[2],[4] } になる.
まぁこんな小手先テクニック,大して高速化にならんだろうが・・
頃合を見計らって一本に纏める機能もつけた.車輪の再発明感がプンプンするがこれで先ほどの問題解決に至った.

臭うどころかこのようなデータ構造は既にあって,前にネットでそれらしい資料を見かけたのだが
当時は全く必要としていなかったため「フ~ン」と流してしまっていた.
適当に単語で検索しても一向にヒットしないので仕方なくそれっぽい実装をしてみたわけだ.
あちらの実装では各配列のサイズが可変だったかな?

(2011/04/16)

再び寄り道

ゲームの方は進んではいるが未だ光明がみえない.
キャラクターのアニメーションやマップとの当たり判定,場面(会話シーンや戦闘シーン)
を包括的に管理する仕組みというんだろうか?
いわばゲームの裏の部分をせこせこと作っている.
一回作り方を確立してしまえばスムーズに進むとは思うが・・
HLSLと違って結果が地味なだけにモチベーションが低下せざるを得ない.

そこで前々からやりたかったシリーズが再び発動(前回の入力ログは完了した)
今回のお題は「Twitterのクライアントを作りたい!」である.
ゲームとは全く関係ないが気晴らしという事でご容赦願いたい.
とはいえフツーなクライアント出来ました~なんてやっても誰も使ってくれないどころか自分も楽しくないし
正直言ってそんなのは作る意味がない.1つでもオリジナリティが要る.
作るというからには何か思いついたんだなと察して貰って結構だが詳細に関しては後ほど.
少し前にBasic認証は廃止されたのでOAuth認証が最初の壁か?(そのくらいは自分で書きたい)

で,更にそれとは別に最近は数学の勉強をしている・・といったら大げさだが
今まで3D描画の時になんとなく計算していた行列を,プログラム見直しのこの機にキッチリ押えておこうと.
(行列の各列が基底を表していて~くらいは分かるがクォータニオンはブラックボックス)
具体的には「ゲームプログラミングのための3Dグラフィックス数学」という本を中心に
ネットに散らばる資料を参照しつつたまにテレビでやっている放送大学の「線形代数」を録画してみたり
マイペースでやっている.
いつまでにコレをやるという目標は特に無い.必要だと思うからやっているだけの事なので.
というより基本的な座標計算を生涯ライブラリに頼るなんて格好悪いじゃないか.

(2011/04/12)

キーログ

既に3回ほどオブジェクト継承やステート実装について記事を書こうとメモ帳に下書きしてはみたものの
例によって文章がまとまらない.完成してないんだから当たり前か.

とは言ってもその部分が何時終わるのか見通しつかないので
気晴らしにとキー入力のログ取りと再現のルーチンを実装している.
レースゲームやタイムアタック要素のあるゲームで定番の,デモを撮る(動画ではない)機能だ.
今作っているゲームに必須ではないのだが「前からやってみたかったシリーズ」のうちの1つであった.
特定の状況でのみ起こるバグの原因究明にも使えるかと思われる.

動作はフレーム毎のキー入力をテキスト形式でファイルに書き出し,読み込んでキー入力を再現する・・・という
単純なものだ.説明の必要はないだろう.
もちろん毎フレーム分の状態をバカ正直に書き出したのではメモリとファイル容量の無駄遣いである為
キーの入力状態が変化した時だけ記録し
ファイルへの読み書きもfstreamを使用したストリーミング形式としてある.
キー入力再現の次にやりたい事といえばクイックセーブ&ロードであるがこれは難易度が高そうだ.
「04)」をウィキ内検索
LINE
シェア
Tweet
添付ファイル
  • 89_0.jpg
  • 89_1.jpg
  • 89_2.jpg
  • vec0.jpg
  • vec1.jpg
  • vec2.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
もっと見る
最近更新されたページ
  • 2686日前

    menu_L
  • 2686日前

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

    Drawing_digital_13
  • 2686日前

    Drawing_digital_12
  • 2686日前

    トップページ
  • 2892日前

    Drawing_digital_11
  • 2973日前

    Drawing_digital_10
  • 3005日前

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

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

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

    menu_L
  • 2686日前

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

    Drawing_digital_13
  • 2686日前

    Drawing_digital_12
  • 2686日前

    トップページ
  • 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.