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

FPSを作ってみる@wiki

01)

最終更新:2010年01月31日 19:28

slice

- view
管理者のみ編集可

(2010/01/31)

なんだか頭がボーっとしててすっごい能率悪い。まあそれは置いておいて
どんなパケットが送られているかを監視するためにwiresharkというソフトを使い始めた。
が、winXPの場合インストールしてそのままだとループバックメッセージが取れない。
普通に考えて自分宛のパケットは回線通さず自分のPC内部だけで済ませた方がスマートなんだろうけど
デバッグするときには効率が悪かろうが何だろうがパケットを投げる動作してもらわないと困るわけで。
その設定に調べたり試行錯誤なりで小2時間掛かってしまったがなんとか完了。
参考にしたページはhttp://wiki.wireshark.org/CaptureSetup/Loopbackや、http://elend.sakura.ne.jp/?p=117とかかな。

さあ早速デバッグだ、けど何所をデバッグしようとしてたのか忘れるという。
色々グダグダであった。何時もの事だけど。
wiresharkは、というかパケット解析ツールは一般にユーザーが勝手に定義したデータの中身なんて知ったこっちゃないので
16進数でしか表示してくれない。
パケットの意味を表す数値(タグ)とその意味は今の所表を参照して理解するしかないんだけど
これってずっとやってると頭に入っちゃって表が要らなくなるんだろうな・・

(2010/01/30)

おいおい、チンタラやってたら一月終わるじゃないか・・でも目に見える進展なし。
プログラムは書いてるっちゃあ書いてるけど作り直してばっかりなもんで簡単なゲーム作るぞ!と勇んだ所から実質進んでない。
え~っと進捗は以上なのでこの文章は主に生存報告みたいな感じですね。
もう頑張るとしか言えない。

(2010/01/16)

winsockを使い始めたはいいが、ある程度関数を増やすと共通部分は纏めてライブラリ化したくなる。
そしたら今度は自分用に汎用クラス化したくなる。
ターン性のテストプログラムを書いていたらリアルタイムゲームのキャラクタの移動処理、同期処理なんぞが気になりだす。
ふと図を描いてみて、気が付いたら既存のネット対戦ゲームを2つ起動して一定のpingがある同じ外部サーバに繋ぎ、挙動を観察する。
で、それを踏まえてまた仕様を考える・・・
当初の「一先ず最低限ゲームとして動かす」から脱線気味である。
そもそもネットワークは3月以降(表現が曖昧だったけど2月までにと言うのは2月も入ってるという事でお願いしたい)
やる予定だったが今はこっちの方がやる気があるし主にモチベーション維持の観点で仕方ない。

(2010/01/13)

まあそんな感じ。
見ての通りフォントを変えられるようにしてメンバリストの同期もさせた。
30秒間発言がない(通信がない)メンバに対して生存確認のメッセージを送り更に30秒反応が無かったら
タイムアウトとして退席させるようにもした。
作ってて思ったが最初からサーバー部分を別プログラムで実装すればいいじゃん。
 ・・・とまあ色々追加したけど実際はIPの簡易暗号化が時間掛かったオチで。

個人が作ったソフトで通信をするには
マスターサーバーを運営できる体力があれば別だけど通常はIPをやり取りして対戦なりチャットなりをする。
しかし誰でも見られる掲示板等に生のIPを晒すのは微妙なのでソフト側で簡易的な暗号化を施すケースがある。
それを入れようと思ったのだけどところがどっこい、テキトーな実装だと
数値チョッと変えただけだと暗号の文字列の変化も少なかったりする。
簡易だから別にいいっちゃあいいんだけど何か気になる。
なので元数値を1変えただけでガラッと変わるように無駄に試行錯誤してた。こんなソフト誰も使わんってのに。
でもまあ将来ゲームのほうにも使えなくも無いからよしとしようか。
暗号化例としては
127.0.0.1 -> 330f3ecfa0bc0078adec1b5d8a23dee253cbd481
127.0.0.2 -> 0bf7b640183b1860126b934a32a426f91c4c5c99
127.0.0.3 -> a6cb299334ac671c31bc4c3d1b33198bafdb83e5
もっと短くしようと思えば出来るけど面倒なので、チャットに関してはこの辺で妥協。
同一ソケットに対して同時にrecv()とsend()しちゃイカンという問題に関して
今の状態だとクライアント側で起こりえなくもないなあ・・サーバーは大丈夫なのだが。
もしそうなったらどうなるのか知らない。次に何か作るときは対策しよう。
ソケットを複数作るのは通信の効率的にどうなのかな?

前々から決めていた通り、チャットソフトで得た知識を使って次は簡単な対戦ゲームに挑戦する。

(2010/01/10)

今更だけど動画をアカウントもって無くても見れるようにしてみた。
些細な変更なので更新履歴には載せてませんが。

プログラムの方は先日のWINAPIの想起が終わってやっとメインである通信に悩んでる。
ソケットの取り扱い、どのように命令をおくるか、サーバーからの通知はどうするか・・等
その辺2人だけで通信するなら特に注意することはないんだがサーバーにクライアントがアクセスして
メンバリストに登録し、一定時間反応がないメンバはタイムアウトとして生存確認クエリを送って
更に指定時間すぎたらリストから削除~みたいに色々追加するとプログラムの設計が込み入ってくる。

今日はsend()とrecv()は同じソケットに対して2つのスレッドで同時に実行したらマズいだとかの注意事項や
データを受信する時の手順だとかをメインに勉強した。
TCPだとそこまでする必要ないかもだけど練習の為に自前パケットにチェックサム組み込んだりもした。
通信路の関係で一度のsend()で送ったデータが必ず一回のrecv()で受信できるとは限らないので
もしデータが破損してたら次のデータまで読み飛ばしたり、そこんとこのロジックも少し。
クライアント管理の構造体はどうしたら良いかねとか。
明日辺りには一区切りつけて簡易ゲームを作りたいところだ。

(2010/01/08)

AIを組み込む作業が煮詰まってしまったので
通信の練習。WinSockよりWINAPIを思い出すのに殆ど時間費やしてたり。
画像はtelnetと通信してみたところだけどもちろん同じプログラム同士でもOK。
sendボタンを使わなくても入力欄でEnter押せば送信できるようにした。Shift + Enterで複数行入力。
現状だと2人でしか会話できないし名前を入れるのもまだだ。
もう少しだけ機能を追加したら次はターン性ゲームっぽいのを作ってみようか。
通信対戦の練習になりそうなゲームっていったらもちろん「アレ」ですな。

(2010/01/07)

数日前にこっそり次に実装する機能についてアンケートを設置したのだが
パッと見で通信対戦の需要が高そうなので、そっちの方向でいく(まだ決定じゃあないけど)
さて、そうすると何を使って通信しようかという至極真っ当な疑問が出る。
Windowsだからdirectplay(以下dp)、winsock(以下ws)のどちらかになりそうだ。
dpと聞くとムッと思ってしまうのはルーターの設定が面倒だからなのか、どうなのか。
とりあえず問題が起きやすい、クセが強いという印象だ。
通信環境の差はdpが吸収してくれるといってもwsもそうでないかね?とか。
と、ちょっと思い出した事がある。それはdpって廃止されるとか何とかの話を耳にしたことがある。
ググるとやはり設計が古いとかで将来的に廃止されるらしい。
幾つかサイトを拝見したら、使えなくは無いけどあんま使うなみたいなニュアンスで書いてあるので
素直にwsで行こうかなと。ロビーやチャットとか中身も理解したいしね。

(2010/01/06)

AIの状況判断ロジックを分離できたか確認するために
主人公と位置が離れていたら主人公の場所まで移動し、
近ければ5秒間待機という単純なアルゴリズムを作ってテスト。
今の所うまく動作しているようだ。
撃つ、逃げる等他の動作を組み合わせても動くかもテストしなければならんな。
ある位置に行こうとしたけれど途中で想定外の障害物が邪魔して通れない時に対して
アクションを中断して別の解を出す機構も欲しい。

(2010/01/05)

AIを実装する為に着々と下地作りその1、アクション実行をカプセル化。
アクションを表す1つの構造体を渡したら後は勝手にやってくれるっていう仕組みを作った。
次はアクションが実行できるか、実行できるとしたらどの程度の時間がかかるか予測をする関数を作りたい。
要するに行動判断する部分とそれを実行する部分を分離させたいんですな。
速いうち(できれば今週中)に完了したいところだ。

(2010/01/03)

とっくに明けました、おめでとうございます。
今年もよろしくお願いします。

え~遂に年の桁が変わり更に3日も過ぎてしまいました。
2010ってなんか未来っぽいし数字の見た目も格好いいね。
さて。去年のことは振り返らないようにして今年の目標を立てます。
  • ひとまず動くAIを組み込んだNPCとタイマン勝負(~2月)
  • ネットワークプレイを実装し2人以上で対戦
  • 武器やアイテムの追加
  • システム案を固めAIを強化、スクリプトでユーザーが弄れるようにする
  • ひとまずゲーム部分だけ完成
  • テクスチャ作成とかランダムマップアルゴリズム強化
あとは効果音、タイトル画面、もし出来たら途中セーブなどなど。

思いつく限りではこんなとこですね。
横に書いてある~2月というのは、それまでにテストプログラムを完成させるという意味。
もちろん一旦最初から作り直すのも込みの期限。
その後はどの項目から達成しようか決めてないんですけど・・・
ネットワークかAIの強化かランダムマップ強化のどれかだろうな。

肝心のシステム周りはちょっとだけ案が浮かんだりしてるのでメモしてる段階です。
これから煮詰めないと。

「01)」をウィキ内検索
LINE
シェア
Tweet
添付ファイル
  • chat0.jpg
  • chat1.jpg
  • chat2.jpg
  • chat3.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.