DAY BY DAY

工学部情報工学科の学生がお送りする趣味、勉強の不定期日記です。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

オンラインゲーム製作:概要

<概要>
 [目的]
  MMO型ゲームのシステム構築練習
 [ゲーム設定]
  ・ゲーム内に複数のワールドが存在する。
  ・プレイヤはワールド間を移動できる。
  ・各プレイヤは各ワールドに指定数だけキャラクタを作成する事ができる。
  ・各ワールドには複数のエリアが存在する。
  ・キャラクタはエリア間を移動できる。
  ・キャラクタはエリア内を移動できる。
  ・複数のキャラクタとチャットが可能である。
 [条件]
  ・システムの構築練習なので、ゲーム性、グラフィック等の要素はあとで考える。

<開発環境>
 Windows XP, Visual C++ 2005, DirectX9, g++
 ・クライアント機
  Windows XP,DirectX9
 ・サーバ機
  Vine Linux

<大まかなスケジュール>
[1] 画面遷移プログラムの理解、作成、プロトタイプ構築
[2] 入力装置プログラムの作成
[3] GUIの作成、UML化
[4] サーバの基本構造を作成、UML化
[5] C-S間でエコー通信
[6] クライアントの基本構造を作成、UML化
[7] クライアントのゲーム画面以外の画面を作成、UML化
[8] ゲーム画面の作成、UML化

<今までの成果物>
[DirectX9ラッパープログラム]
[画面遷移プログラム]
[入力装置プログラム:キーボード]
[入力装置プログラム:マウス]
[GUIプログラム]
[ウェブの画面遷移図]
[サーバのクラス構成案(クラス図)]
[サーバの基本プログラム]
そのうちUMLでも載せるかもしれません。
スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

オンラインゲーム製作:チャットテスト

チャットテストの様子。

テスト手順。
1.サーバ起動。画面左上。
2.ログを表示。画面左下。
3.クライアント1、クライアント2、クライアント3の順にログイン。
4.クライアント1発言。
5.クライアント2発言。
6.クライアント3発言。
7.クライアント2発言。

WS000114.jpg
WS000115.jpg
WS000119.jpg
WS000118.jpg
WS000117.jpg
WS000116.jpg

どうやら3人目から動作がおかしくなるようです。
今まで2人分でテストしてたからな。
チャットをするにはもう少しかかりそうです。

テーマ:プログラミング - ジャンル:コンピュータ

オンラインゲーム製作:GUI -停滞期-

<現状>
段階:[3]

はい、ここ最近全然進歩してなかったです。
ソースコードを弄っていたらどんどんドツボにハマってしまい、訳のわからない不具合に悩まされ為です。
後は勉学が忙しくなってきた為です。
特に実験レポートがorz

とりあえず、冬期休暇にも入りましたので、また進めていきたいと思います。

テーマ:プログラミング - ジャンル:コンピュータ

オンラインゲーム製作:GUI - プログレスバー

<現状>
段階:[3]

[現状説明]
・プログレスバーの完成

GUI:プログレスバー

よし、次はダイアログだ(`・ω・´)
スケジュール:2010/10/24(Sun)

テーマ:プログラミング - ジャンル:コンピュータ

オンラインゲーム製作:GUI - マルチラインテキストボックス

<現状>
段階:[3]

[現状説明]
・スクロールバー
スクロールバーのつまみ機能を実装せず、スクロールバーの上下ボタンによりスクロールする機能を実装した。

・マルチラインテキストボックス
入力カーソルの処理などが面倒なので、
とりあえずテキスト表示専用のマルチラインテキストボックスを作る事にしました。

GUI:マルチラインテキストボックス1
テキストの横方向がボックスに収まる様には出来ました。
しかし縦方向が収まりませんでした。

テキストを範囲内に収める方法として生のテキスト情報をゴリゴリいじる事もできますが、
何かめんどくさそうなので、
テキストを書き込む為のレンダリングターゲットとしてテクスチャを一つ用意し、
それにテキストを書き込んで、
スクロールバーによる制御をしようかなーと思います。

この手法の方が汎用性が高い様な気がしますね。気がするだけですけど。
でもどっちが簡単なんだろう。


テーマ:プログラミング - ジャンル:コンピュータ

オンラインゲーム製作:バグデータベース

[2]
・手順
 1.テキストボックスにマウスポインタを合わせてクリック。
 2.任意数文字を入力する。
 3.Spaceキーを押して空白文字を入力する。

・期待された振る舞い
 テキストボックス内に空白文字が表示される。

・バグである振る舞い
 文字列の一番右に空白文字がある場合にのみ空白文字が表示されない。
 続いて空白文字以外の文字列を入力すると、空白文字が正しい位置に表示される。
・修正済み?
 No  :2010/10/22 【“オンラインゲーム製作:バグデータベース”の続きを読む】

テーマ:プログラミング - ジャンル:コンピュータ

オンラインゲーム製作:現状

<現状>
段階:[3]

[現状説明]
・テキストボックスの実装完了。
・パスワードボックスの実装完了。
・半角文字入力ボックスの実装完了。
ただし、この3つのテキストボックスにスペース文字を入力しようとするとバグが発生。

まず、適当に文字を入力する。
GUI:半角文字入力1

次にスペース文字を入力するが、スペース文字が表示されない。
GUI:半角文字入力1_2

その後「Input」と入力すると、スペース文字が入力された形で表示される。
GUI:半角文字入力2

ID3DXFont::DrawTextの引数にDT_CALCRECTを渡す事によって文字列が収まる様な矩形サイズを取得していますが、
どうやらそれがスペース文字を認識しない模様です。
どうすればスペース文字を認識するのだろうか...orz


しかし、それを除けばきっちり実装が出来ています。
GUI:半角文字入力3


今日は以上!

テーマ:プログラミング - ジャンル:コンピュータ

オンラインゲーム製作:現状

<現状>
段階:[3]

[現状説明]
・メインメニュー
GUI:メインメニュー



・ログイン画面(仮)
GUI:ログイン画面(仮)



・キャレットの表示(ちょっと見難いかも)
GUI:キャレットオン


・日本語入力
GUI:日本語入力1

GUI:日本語入力2
編集している文節の背景色を変更できるようにした。

GUI:日本語入力3
変換候補ウィンドウを表示。候補文字列1~9

GUI:日本語入力4
変換候補ウィンドウの表示。候補文字列10~19

GUI:日本語入力5
文字列がテキストボックスの範囲を超えると、超えた分だけ文字を後ろから削除します。
つまりスクロールはしない様にしました。
問題は、インデックス18の「σ(°ン °) ワタシデス」を変換候補とした時にプログラムがクラッシュする事です。

「σ(°ン °) ワタシデス」が変換候補になった時、候補文字列の右端がテキストボックスの右端を超える為、
「σ(°ン °) ワタシデス」の後ろの文字から削除していかなければなりません。
現状ではどうやら文字列の削除部分まではうまく実行できているようで、
だいたい削除した時の文節情報、属性情報の設定部分のプログラムでクラッシュしている模様です。
このあたりを修正すればどうにか日本語入力はできるようになるでしょう。



[スケジュール]
スケジュール:2010/10/21(Thr)
Joel on Softwareのスケジュール管理法を利用してみました。
タスクの粒度とか、そもそもタスクがこれで足りてるのかとか、全然分かりませんけどね。

テーマ:プログラミング - ジャンル:コンピュータ

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。