ゲームのシステム作る時に使う機能

ゲーム制作に使うツールごとに、用意されている機能とそれの特性を活かして自分が考えてるシステムを実現するかを考えるのが、システム完成の近道だと思うのです。
例えばCnCなんかは、

  • アクティブオブジェクト
  • 衝突判定
  • 変数とフラグ
  • アニメーション
  • オブジェクト方向
  • 足し算・引き算・掛け算・割り算

主にこれらが使いやすく、性能もグーです。何か仕掛けを作りたい時はこれらの組み合わせを中心にして実現させるのが無理がなくて良いです。

作り手にとっての分かりやすさ

どう良いかって言うと、まず作ろうとしてる自分にとって分かりやすい。
CnCのイベントラインには「○○と××が衝突した時」みたいな風に表示されるわけなので、イベントエディタの画面をパッと見渡しただけでどういう処理をするための仕掛けなのかがわかります。
マニアックなCOXを多用すると、どういう処理やってるのか自分で見えなくなってしまうので自分は極力COXは使ってません。実際結構何とかなるものです(;´Д`)

バグが減る

次に、ちゃんと動いてくれる。バグとかが発生しにくいわけです。
これは先に書いた自分が分かりやすいのも関係してます。イベント組み立ててる人間が把握しやすいならバグも自然と減りますよね。
それに、ツールが得意としている機能を使っているのだから、不具合も少ないはず。逆にそこに不具合がたくさん隠れてるんだったらそれは未熟なツールだって話です。
CnCKnPの強化版なわけですが、上の箇条書きで並べた機能はほとんど全部KnPの時代からあるものです。ないものといえばフラグくらい。(そのせいか、自分がフラグを沢山使った処理をさせるとうまくいかない事がある) まー長い事実装されている機能なのだから安定しているだろうってのがバグが少なくて済むと思う理由です。

組み立てやすい

上の2つの話を合わせた話。
標準機能はなんといっても標準なんだから、他の機能と連携させやすいです。
他の機能と連携するシステムを作るのが作り手にとって簡単だし、イベントラインもスマートに出来ます。あちこちで開発されたCOX*1も、標準の機能を補助する形で利用するとうまく組み込めます。マニアックな機能同士を組み合わせたフクザツなエンジンをベースにしたシステムを組もうとすると、どっかしらでカチあってうまく動かないことが多々あります('A`)

その上で多くの機能を選んで使う

まあでも上の箇条書きにあるもの以外使うな!っていうわけではなく、あくまでこれらを中心に、足りなくなった部分は他の機能やCOXで補おうという話です。
KnPからCnCになってからなんといっても便利なのが「条件を逆にする」です。これは新機能ですがこれといった不具合を経験した事がないので積極的に使ってます。
次に便利なのが文字列システムです。KnPは数字しか扱えなかったのですが、CnCから文字列も使えるようになりました。イベントで文章を組み立てて表示させたり、かなり仕掛けの幅が広がったと思います。
もひとつ便利なのがListオブジェクトです。コントロールオブジェクトのひとつなんですが、こいつは飛びぬけて有用です。オイラはこれを画面に出してプレイヤーにリストを見せるのではなく、画面外に隠しておいて内部で番号リストなどを処理させるのに使っています。具体的な用途は、例えば0〜9の数字の中から5だけを除外してランダムに取得するとか。今思えばこれ、プログラミングに出てくる配列みたいなもんですね。
COXといえばDMC2使わないと効果音がバグるんで使ってます。*2 繰り返し処理をFastloop使って一瞬で済ませる事もあるし、基本機能の算数じゃまかなえない時はAdvanced Math使います。ウィンドウからフォーカス外れた時にキー操作を拾われたらどうしても困るときはWindow Focus入れます。
CnCといえばINIオブジェクト、COX!」ってよく言われててオイラもそう思っていたんですが、実際使ってみると便利なものは案外最初から入ってるものに多いですね。上でCOXの名前をズラズラっと書いたけどあれらを全部同時に使おうとした事なんてほとんどないし。まあオイラが作るゲームの規模が小さいだけって事かもしれないけど、基本機能を軸にして製作するのはやりやすいってのはガチだと思います。
基本機能に頼らないんなら別のツール使うべきって話だしねえ。

*1:もはやCnC用COXを今も作ってる人は稀_| ̄|○

*2:標準機能なのにな…。