目次
- レンダリングエンジンはすごい!
- レンダリングエンジンについて
- ゲームのレンダリング部分
- エンジンを作るにあたって
レンダリングエンジンはすごい!
レンダリングエンジンってすごいんです。レンダリングエンジンっていうのは、ブラウザでいうとHTMl,CSS, JSのデータ通りに画面に写す物なのですがこれを僕が作ろうとすると絶対フリーズします。
なんで絶対フリーズする!といえるのかは、僕が一からゲーム作っているときにレンダリングに似た処理に遭遇したからです。
ゲームはすごい単純に言えば、パラパラ漫画みたいなものです。x秒間に2D3Dを描画して入力をしたら当たったかどうかを判定して描画をする。これを基本的に繰り返しています。
言ってしまえばなんてことはありません。ただのパラパラマンガです。ですが、ここにメモリが入ってくると自体は変わります。
よくメモリリークが大変、ということを耳にすることがあると思います。これって要するにメモリ内に必要のないデータが溜まってパソコンがフリーズするようになってしまいます。
そうすると、ゲームやっている最中に固まったり、操作ができなくなったりしてゲームができなくなってしまいます。
これを避けるためには、人間側でメモリリークをしないようにするか、ガベージコレクションのようなアルゴリズムを利用して避ける方法があります。僕が作っていたゲームだと、起動はできるのですが1分後にパソコンがフリーズしてしまって、どうやってメモリを開放すればいいかが全くわからなかったです。
一般で出回っているレンダリングエンジンの何がスゴイって、要するに他のソフトに干渉させずに最大限のパフォーマンスを出せるところなんです。ゲームも、性能のいいパソコンを持っていればChrome開きながらゲームをすることもできます。16GBのメモリがあってゲームで利用するメモリの量を4GBでできれば他の12GBを使ってブラウザを開いたり、VSCODEを開いたりすることができます。
要するに非常に高価なハードを自由自在に使わせてもらえるレンダリングエンジンというのはスゴイんです!
レンダリングエンジンの構成を考えてみると、ブラウザもゲームも結構似ている構成になっていることが分かります。
レンダリングエンジンについて
レンダリングエンジンとは、簡単に言うとパソコンが画面に描画するときに使うソフトです。FireFoxでもレンダリングエンジンが使われていてHTML, CSS, JSを読み込んでそれにあった動きを画面に映してくれます。
HTML, CSS, JSを解釈をしてそれにあった動きをエンジンが任せて描いてくれている。基本的にはメモリを自分で管理をすることはありません。少なくともHTML, CSSではメモリを気にした書き方を指摘されることはまずないです。よほどトリッキーな動きをしない限りは気にする必要はありません。
レンダリングエンジンを使うことで、作る人はフリーズのことをあまり考える必要がなくきれいなサイトを作ることができます。これってすごい画期的なんですよ。
エンジンがなくてHTML, CSS, JSの規格だけあったと仮定します。規格だけあれば、作る人は規格に合った実装を行えばサイトを解説してユーザに規格どおり作ったブラウザを配布すれば大丈夫です。しかし先程も言った通り、メモリの管理は難しいです。
HTML一つとっても、文字をただ出すのにどうやって文字を出せばいいのか、文字を出せたとしてもその状態を何時間キープしてもパソコンがフリーズしないか、ということをクリアしなければなりません。それがサイトごとに作れば作成者の自由度は上がりますが、それだけに作成者の技量が物を言って広く作ることができません。そして、利用者から見てもサイトごとに性能の差があり利用する時に必ずダウンロードをしてインストールしなければならない。
FireFoxにもいろいろな必要な機能はあるが、レンダリングエンジンがあればサイトの配布にはサーバと自分が作ったHTML, CSS, JSをサーバに置けば自分のサイトを見せることができます。
ゲームのレンダリング部分
ゲームのレンダリングは見ている先程も言った通りパラパラマンガです。要するに写真を連射してそれをパラパラと写すようにしています。
ただ、ゲームの場合ですとカメラに写すために光の動き、オブジェクトの動きを計算してから写します。例えば、ゲームオブジェクトと光オブジェクトがあったとすると、2つのオブジェクトが並列に計算しなければなりません。2つのオブジェクトが並列で計算するのでそれだけメモリーリークの可能性が高くなります。メモリの中身を人間がいじりながらやるのでメモリを効率よく使うためにはメモリ管理はもちろんアルゴリズムも必要となります。
レンダリングエンジンとゲームエンジンを利用することで作成者はある程度までメモリの利用について気にする必要はなくなります。ゲームエンジンを使うことで通常ならメモリを気にしなければならない部分を触らずに開発ができるので1から作るよりもより自由な開発が可能になります。
エンジンを作るにあたって
エンジンはスゴイです。エンジンの仕様をなぞればメモリをそれほど気にする必要なく作ることができます。
もちろん、マシンの性能の限界突破をしようとすればメモリの管理はしなければなりません。ゲームもサイトもアイディア勝負になる部分があり、そこでみんながアイディアを出しあえればよりよいものになります。
エンジンを作ることはやめませんが、こうしてレンダリングがすごい!ということが分かっただけでも良かったと思っています。