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

FPSを作ってみる@wiki

12)

最終更新:2010年12月31日 22:55

slice

- view
管理者のみ編集可

(2010/12/31)

自分で言うのもアレだがwikiのタイトルからしてゲームを作ってみてるのか怪しいものだ.
だって最後に動画出したの2年近く前だろ・・・
過去の発言を見返すと何か宣言しても守れてなさ加減が半端ないので
もう「○○します!」とかは辞めた.

来年の目標は自分の中では設定するけどここへは書かない.
代わりにそう気づいてもらえるように行動で示したいと思っている.

皆様,良いお年を

(2010/12/30)

頑張って作ったコードだけど後で良いアルゴリズム思いついてイラネってなるケースが時としてある.今がまさにそうで.
タイルを並べて背景を作る部分にメモリの無駄が多すぎる事が判明.
細かく書いても仕方ないので掻い摘むと現在の実装では毎回タイル毎に頂点を設定して1マスずつ描画すると重いから
最初に一旦全部テクスチャに出力しておいてそれを一枚ポリゴンに貼り付けて表示という手段をとっている.

しかしこの方式は描画速度は恐らく最速であるものの,メモリに背景画像を全部持つ為にマップが広いと問題になる.
RGBそれぞれ8bitそれにαを8bitの場合,256x256サイズでも256KByte要る.
512x512なら1MByteだし1024x1024ともなると一枚で4MByteも食ってしまう.
今のPCならロースペックでもVRAM128MByteとか当たり前だから全く心配要らないものの
幾らなんでも背景だけで使いすぎだろと.背景の重ね合わせ等しようものなら倍,更に倍へと増えていくし.
まあ年内はこれで出す予定だけど(棒人間が動くだけなので期待しないで欲しい)

で,改善策.
ちょっと良く出来たフリーソフトや製品等はこっちの方法で描画してると思う.
表示画面より少し大きいサイズのテクスチャを一枚だけ確保して画面がスクロールする度に
必要な部分だけマス目毎に上書き描画するという物で
早い話がファミコン,スーファミ世代のコンシューマーでやってる方法.
表示部分がテクスチャ端に近づいたらループさせて表示する.
ただこれだとマスの大きさが2のべき乗でないと都合が悪いが <= 全く問題ないな!
自分は変に自由度持たせようとするから結局効率悪くなっちゃうんだよなあ・・・

(2010/12/21)

ひたすらバグ取り.主にLuaの仕様でつまづく.
メタテーブルの__gcはユーザーデータだけ有効かよ,ユーザーデータのメタテーブルはLuaから変更できないのかよ等.
ていうかメタテーブルは面白い機構であると同時にCのオーバーロード以上にバグの温床になる.
特にメタテーブルの主要なメソッド,__indexを指定した後は変数の参照や書き換え時に常にメタテーブルを意識する必要がある.
(でないとあらぬ変数を書き換えたりエラー吐いたり)
やればやるほど無理やりオブジェクト指向してる感がひしひしと.
本来Luaはそんな複雑な用途に使うもんじゃねえよという声が聞こえてきそうだし
こりゃSquirrelに浮気するのも無理ないな・・・あっちはクラスをサポートしているし整数も使えるなあ.

関係ないけど配列の添え字が1からっていうのはすぐ慣れた.これに関しては特に文句なし.

と,なんということだ!こんな調子じゃ何も出せぬまま今年が終わるではないか.
「残り10日」

(2010/12/16)#2

うむ.大体組み換え終わり.
ついでにインラインアセンブラでこちょこちょやってた部分も一掃され前よりは保守性の高いコードに.
まだ動かない部分があるがこれはまた明日直すとしようか.

(2010/12/16)

前々から気になってたシリーズ.LuaとC++の互換関数の動作が遅い.
どんくらいかっていうと2Dの画像をカーソルキー上下左右で移動&描画させるだけのプログラムに
CPU時間の15%も食っているレベル.デバッグビルドとはいえこれは流石に不味い.
(ちなみにLuaからC++の関数を呼ばずに黒画面の描画だけだと2%)
原因は呼び出しの度に引数の数分メモリをnewしてるから.
事前に引数の数や形式を専用関数を呼ぶことでリストアップしておいて毎回それを参照しながらどんな変換処理かますかを振り分けているのである.
関数の引数や型なんてものはコンパイルした時点で決まっているのに
何故回りくどくて無駄な事をしているかといえば当時は手探り状態だったからとしか.

C++のテンプレート構文を駆使すればコンパイル段階で固定のメモリと変換処理をかませそうなので,今そうしている.
戻り値がvoid型の場合の例外処理とかで小細工が入る入る.冗長なプログラムコードがくわわる くわわる.
しかし全ては速度の為・・・っ

(2010/12/14)

全面的にスクリプトを取り入れたことでゲームロジックを簡単に変更できてコンパイルの手間いらずだ.
しかし気が付いたらスクリプトでスクリプトを作っているような状況に悩んでいる.
原因は「他の人にも理解しやすく記述も簡単」など欲張りすぎで
「自分用ゲームエンジン」で踏みとどまるべきなのだろう.
どこまでをC++で実装してどこからをスクリプトにするかの境界も曖昧だ.
(今のCPUならAPIを呼び出す部分以外は全部スクリプトで書いても動くとは思うが)

まあそれはそれとして・・
いくら自分用とはいえ描画や衝突判定の手数とか決まり事が多いなーというのが正直な感想.(だから悩んでいるとも言う)
帯に短し襷に長しとは正にこのことよのう.

という中途半端なエントリでした.

(2010/12/10)

5年前の自分に言いたい事.
「まず2Dでゲームを1本完成させろ」
恥ずかしながら今まで本格的にゲームを完結させた経験がなく
マップやキャラクターをどのように管理するかというのを殆ど考えてなかったのでここで詰まっている.
動画やサンプルみたいな,とりあえず動けばいい用途だとひたすらif文で処理を並べて
データなんかは面倒だから固定長配列で,定数もプログラムに埋め込んじゃえ
でわりかしサクッと作れるが所詮はその場限りなのである.

2Dといえどもゲームとしてやることは同じで,それが画像がモデルになり当たり判定が立体的になるだけだ.
いきなり3Dで作ろうとするとまず表示するだけで一苦労,表示した所でもう完成した気分になってしまい
さてじゃあゲームをと思っても組み方でつまづく.
「なんでもいいから1本完成させる」というのは簡単なようで非常に重要だ.

で,今やってるのは横スクロールの2Dアクションゲームを想定して前回のテクスチャアニメーションに続き
タイルベースの背景表示とイベント配置,それと場面進行管理.
表示云々はいいとしてゲームのコアとなるイベント配置と場面進行ですな.
FPSのマップエディタなんかで”エンティティ”(以下Entity)と呼ばれるオブジェクトを扱った経験がある人も居るかと思うが
基本的にはあれを真似てマップに予めプログラム側で定義した”敵を置くEntity”や”スイッチEntity”を
”置く敵の種類”,”スイッチが起動する対象Entity”等のパラメタを付加して配置.
マップ切り替えや会話イベントもそれ用のEntityを起動して行う寸法だ.
今組んでる仕様で上手く動くかどうかは分からないが,ともかくやってみる所存.

(2010/12/05)

2Dベースのゲームを動かすために色々.
といっても3Dでも使える要素は入ってるから「ま た 道 草 か」のような突っ込みは勘弁願いたい.
例えば2Dアニメーション.要は板ポリゴンのテクスチャを切り替えて表示するだけなのだが中々奥が深いのだ.
アニメーションを単純に実装するとコマ毎に画像ファイルを用意して次々に切り替える,
又は全てのコマをまとめたファイルを1つだけ用意しテクスチャ座標を操作するという
2方式が考えられるが
  • アニメーションのループ
  • コマがテクスチャサイズに満たない場合の対処(D3Dでは2の累乗サイズのテクスチャしか使えない)
  • ホットスポット(コマの中心点)
等々を考え出すと止まらない.

もちろん今作るゲームに特化させて「敵のパラメタはこのファイルにすべて集約,項目も全部決めておく」などとする事も可能だが
自分は現状を見ればわかるとおり2Dスタイルのゲームが作りたくなる時もあればFPSや古典的なシューティング
を作りたくなるそして投げ出す時もあるから
ある程度汎用性をもたせたいわけである.

テクスチャに関して言えばコマの分割やホットスポットなんてのは画像だけでほぼ決まる物なので
だったらと自動的にテクスチャと一緒に関連情報を読み込むようにしてみた.
(テクスチャと拡張子違いの同名ファイル.JSON形式)

これはFPSだとHUDのアニメーションやビルボードによる爆発,煙エフェクトに使えるかと思っている.
「12)」をウィキ内検索
LINE
シェア
Tweet
添付ファイル
  • tilemap0.jpg
  • tilemap1.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.