DAY BY DAY---Inside Game---
|
現在作っているゲームのまとめ
最終更新日:2007/10/7 18時
進歩は亀以下並みに遅いけど、空いた時間を見つけてせっせと作ってます。とにかくソロソロ本気で、数人でテストできるところまで持っていかないとヤバイ気がする。
けっこう時間が空いて、サーバープログラムなんか全然訳ワカラない状態だと思う。
<実装状況> □--予定 ■--実装中[%] ★完了 !バグ・エラー △考え中
アルゴリズムライブラリ
STL使えよ!とか言わないで;;
★List、Node、Queueをクラス化しDLLに。(2007/10/04)
★DynamicArrayをクラス化し上に追加。(2007/10/04)
★List、DynamicArrayクラスは未使用。(バグ多過ぎのため
Lis→STLのlistDynamicArray→STLのvectorを使用。
Direct3D系ライブラリ(停滞中)
★メッシュ表示 ★回転、移動、拡大縮小 ★ライト設定 ■フォグ設定[10]
GUI
★GetGlyphOutlineを使って文字テクスチャを生成できるようにした。
現時点ではID3DXSpriteのDraw関数にて描画。
そのうち頂点バッファとかつかってDrawPrimitiveで描画するかも。
そっちの方が早かったり、遅かったり。どっちが良いのかワカラない。
★GUIライブラリ内で生成される各GUIの番号を管理する。(2007/10/04)
★デスクトップウィンドウの実装。内容はスタティックウィンドウと同じだが、一番最初に生成され、優先順位が変わらないウィンドウ。(2007/10/07)
△描画対象をデスクトップウィンドウにすると、例えばマップチップとかが置けるようにする。
これではスピードが遅くなる???
サーバー:(停滞中) □サーバー情報をFTPでサイトにアップロード クライアント:
★FPS制御(2007/10/3) □パケット暗号化 □チャットメッセージの送信間隔を極端に短くならないようにする □新規発言の度にチャットログを下に更新
アップデータ:(停滞中)
★暫定のアップデーターを作る
サーバー&クライアント:
□ユーザー情報パケット <サーバー> 画面:
タブ画面 ・サーバー情報画面 -> サーバー情報: ・ユーザー情報画面 -> 管理: 管理: ・現在の接続者リストから選択したプレイヤーを切断・ログアウトさせれる。 ・アカウントリストから選択したアカウントを削除できる。 ・総接続者数、ゲーム中人数、アカウント数を表示。 サーバー情報: ・サーバー名、ドメイン名、IP、ポート、状態、起動時間をサーバーアプリに表示 起動: ・メニューで、開始・停止・終了を選択できる 処理分担: 受信スレッド、送信スレッド、同期処理スレッドに分ける。 キャラクター移動等、フレームに関係あるものは同期処理スレッドで処理する。 チャット等同期を取る必要が無いものは受信スレッドで処理。 <受信> @WSAAsyncSelectでソケットイベントが来たらWindowProcにメッセージを渡すように設定。 AWindowProcでソケットイベントを取得。 BLPARAMがイベント名、WPARAMがソケットなので、構造体で纏めてイベントキューに詰め込む。 C受信スレッドからイベントキューのデータを取り出す。 DLPARAMでFD_ACCEPT、FD_READ、FD_CLOSEの場合分け。 <送信> @ユーザー1人1人の接続情報等を持っているデータからソケット情報などを取り出す。 Aパケット送信 ココは、特定ユーザー(1人)に送信、特定ユーザー(複数人)に送信、全員に送信という具合で処理を分ける。 <同期> @時間計測開始 Aゲーム中の人数分ループをまわす Bキャラクターの同期が必要な情報が更新されている→更新 C時間計測終了 D1フレームを処理するのにかかった時間を計算し、残りの時間スレッド停止(オーバーの場合回り続ける・・かな) コレは本のアルゴリズム。 <クライアント> 画面: ・ゲーム画面(DirectXで更新) ・独自のGUIを使用する。 グラフィック:
2D→3Dに変更しつつあるかも。
面倒になったら2Dで行くことに。。
面倒なんでとりあえず2Dでがんばってみよう。(2007/10/3) チャット機能:
・入力→サーバー→クライアントという具合に、一旦サーバーに送る。
・マップ毎に送信クライアントを絞り、さらにマップ内エリア毎にクライアントを絞り送信する。
・チャットメッセージは「キャラネーム:発言内容」で表示
コマンド機能:
入力ボックスに/〜と入力すれば色々なコマンド送信可能にする。
<GUI> GUIハンドル型:
GUIHND型
GUI作成方法: <例>
DXDat dd; //DirectXのデータ
MGUIDLLInit(hWnd,&dd);
GUICONFIG Config; //GUI設定構造体 Config.m_Caption = "TITLE";
Config.m_Name = "window001"; Config.m_GUIType = WINDOW;
Config.m_GuiStyle = GS_WINDOW|GS_STANDARD; Config.m_Width = 320; Config.m_Height = 240; Config.m_PosX = 100; Config.m_PosY = 50;
Config.m_GUIProc = GUIProcTest; //GUIプロシージャ
if(MGUIRegister(&Config))
{
return 1;//登録エラー
}
GUIHND hnd = MGUICreate(&Config);
if(hnd == NULL)
{
return 2;//GUI作成エラー
}
という具合に基本的にWinAPIみたいな感じ。 <リンク> MMORPGを作ってみたい Revelation of ALTERMIA SOUL GAINER SBO SOCIA online 開発ノート
ゲーム作成経験なしのオレがMMORPGを作るブログですが・・・何か?
どっと村
○×つくろーどっとコム <参考書> MMORPGゲームサーバープログラミング オンラインゲームプログラミング |
Copyright(C) 2006 DAY BY DAY. All rights reserved. |
|
|
|