ゲームの設計について考える

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 14年前
住所: 北海道札幌市
連絡を取る:

ゲームの設計について考える

投稿記事 by Dixq (管理人) » 14年前

私は職業でゲームプログラマーやってる訳ではありません。
学生時代から趣味でやってるだけです。
それゆえ現場でどんな設計が主流になっているのかなどは知りません。

ところで、ゲームの設計にタスクシステムを取り入れることは言わば標準であるかのように称賛されていますが、
私はタスクシステムがどうも好きに思えません。
いや、根本的な設計は自分でやってることと変わりないんですが、わざわざ双方向リストにする必要性が感じられないのです。

普通に、全ての基本となる基底クラスから全てを派生させ、基底クラスのポインタでstlのlistを作って回せばいいだけなんじゃないでしょうか・・。
フリータスクもメモリプールで代用できる気がします。

でも現場でそこまで使われているならきっと自分が知らない利点もあるんだろうということで、今日は書店に行きました。
端からタスクシステム系のことが書いてありそうな本を読んでみたものの、やはり自分の求めていた答えは見つからない(自分の手法で代用できそうなことばかり)

なので、タスクシステムの利点ご存じの方、よければ教えて下さい!
(基底クラスのポインタのリスト、ポリモーフィズムとメモリプールで代用できないタスクシステムならではの利点を)

=============================================================

後、最近自分の知らないデザインパターンをもっと学ぶべきだなと痛感してます。
GoFの提唱した物だけじゃなくても良い物は沢山あるし。
ということで、しらばくデザインパターンの勉強もしてみようと思います。
有用なデザインパターンは館でも紹介したいな。

しかし、最近館を作っているとすごいボリュームになりそうな章があって困ってます・・でも館ほどじゃないし・・。
中間をとって「○○の部屋」位の項目を作りますかね・・w
最後に編集したユーザー Dixq (管理人) on 2011年6月25日(土) 22:17 [ 編集 1 回目 ]

ISLe
記事: 2650
登録日時: 14年前

Re: ゲームの設計について考える

投稿記事 by ISLe » 14年前

双方向リストを自前で用意するのはSTL(どころかC++さえも)を使える環境が限られるからです。
スクエニのFFチームみたいな数千人規模のプロジェクトじゃなければPCと同じような環境で開発することできないです。
テンプレート使うとインライン展開されて実行ファイルのサイズが爆発的に増えることがある(というより見積り難い)ので家庭用ゲーム機の開発では嫌われます。
浮動小数点数使えない環境も少なくないですよ。

(追記)
あと優先順位ソートを細かく制御したいときイテレータが邪魔になることがあります。
最後に編集したユーザー ISLe on 2011年6月25日(土) 22:33 [ 編集 1 回目 ]

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 14年前
住所: 北海道札幌市
連絡を取る:

Re: ゲームの設計について考える

投稿記事 by Dixq (管理人) » 14年前

> ISLeさん

情報ありがとうございます。
なるほど、家庭用ゲーム開発という枠組みを超えるか超えないかで設計は変わる可能性がありそうですね。
とりあえず知らない内からあれこれ考えるより一度作ってみて良し悪しを考えてみようと思います。

しかしISLeさんに話を聞くたびにゲームプログラムをちゃんと学びたくなります。
いっそ一度ゲーム会社に転s(ry
いや、あくまでゲームは趣味でやりますが。趣味でどこまで出来るか挑戦です。
最後に編集したユーザー Dixq (管理人) on 2011年6月26日(日) 11:29 [ 編集 1 回目 ]

ISLe
記事: 2650
登録日時: 14年前

Re: ゲームの設計について考える

投稿記事 by ISLe » 14年前

趣味で始めたのはかなり古いので、時代ごとの特殊な環境を経験してて、いまもプラットフォームを限定しないように最大公約数的なコードを書く癖が付いてます。
過去にどういう経験をしたかというのは個人差があるし、環境は時間とともに変化するので、これがゲームプログラミングのスタンダートだ、と一概に言えるものは無いような気がします。

PCで開発しつつ家庭用ゲーム機で開発する苦労を味わう方法があったのを思い出しました。
CDやDVDからそのまま起動できるようにして、なおかつ遅延無く快適に遊べるように作る、というものです。
快適に遊べる、の基準として最も重要なのは、画面が静止しない、ということです。
このアイデアは10年位前に思い付いたもので、性能の良いドライブだと効果が薄いかもしれません。
#家庭用ゲーム機での開発では光学ドライブのアクセスをエミュレートする装置があったんですよね。
アクセスが遅いだけでなくシークにも時間がかかるメディアで快適に遊べるようにするのは、メモリの少ない環境で快適に遊べるようにするのと共通点も多いのです。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 14年前
住所: 北海道札幌市
連絡を取る:

Re: ゲームの設計について考える

投稿記事 by Dixq (管理人) » 14年前

> ISLeさん
> 快適に遊べる、の基準として最も重要なのは、画面が静止しない、ということです。

なるほど、まさに次の日記で言っている「同期式」ではダメだということですね。
非同期式に至っても、各クライアントでアクションをとりあえず実行しておいて、定期的に修正する方法と、
サーバー側でクライアントの行動を制御して結果を配信する方法となど考えられると思いますが、
とりあえず実行してしまった方が良いのかもしれませんね。
ただアクション性が高いゲームだとどうなるか・・。