ゲームアプリケーションにおけるSQLiteを用いたデータ管理(1)

SHAMAN-Projectのデータ管理部分の対応として、SQLiteの導入を進めております。
これまで、アドベンチャーパートのメッセージデータが、ソース直書きでしたが、
これをSQLiteのデータベースから取得できるように変えました。


実際にどういったシステムが出来たのかというデモと、
プログラム的にどういった変更をおこなったのかという内部的な解説は、
次回のエントリで行いたいと思います。

今回のエントリでは、SQLiteに関する解説と、
ゲームアプリケーションのデータ管理に用いた際の利点について、掲載します。

SQLiteとは

データベースエンジンの一つです。
データベースエンジンは、一般にサーバーアプリケーションでよく用いられますが、
SQLiteは、組み込み用に実装サイズを抑えた設計がされたものです。


管理構造としては、
“データベース”が複数の“テーブル”を管理して、
“テーブル”が複数のデータを管理します。
そして、“データベース”単位で1つのデータファイルとなります。


その他特徴としては、実装例が多く情報が多いことや、
著作権を放棄している(パブリックドメイン)ことが挙げられます。

ゲームアプリケーションへの応用

ゲームアプリケーションにとって、多くの項目を実装する必要がある中で、
昨今、グラフィック部分をUnityに、エフェクト制作を専用ツールを用いて、というように、
特定の要素をミドルウェアに任せる方法論が確立されつつあります。


そして、データ管理部分をSQLiteに任せるというのも、これと同じイメージになるかと思います。
ですので、一般に言われるようなミドルウェア導入に伴うメリット、デメリットも、
そのまま当てはまるかと思います。

具体的には、メリットとしては、データ管理部分を一からスクラッチする必要がない、などです。
デメリットとしては、バージョンアップに伴う仕様変更があった場合、
それに追従するためにソースを変更する必要がある、などです。


その他、SQLiteは多数の言語のバインディングに対応しておりますので、
ゲームアプリケーションのクロスプラットフォーム化にも対応可能です。
具体的には、ゲームアプリケーションの言語、OSが変わったとしても、
SQLiteのカバー出来る範囲であれば、同じデータを使い回せます。


また、メリットのひとつとして、データを動的に変更できることが挙げられます。
具体的には、メッセージのような静的なデータ以外にも、
現在所持しているアイテムのリスト、といった
ゲームの進行に合わせて変更が必要なデータにも対応することが出来ます。


さらに、別のメリットとして、ソートや特定データの抽出など、
データベース特有の機能を使えることが挙げられます。
例えば、現在所持しているアイテムのリストをSQLiteでデータ管理し、
ソートの機能を使えば、リストの整列を簡単に実現することが出来るでしょう。
その他、全ての商品アイテムをSQLiteでデータ管理し、
販売ショップカラムに特定のショップ名がついているものを抽出すれば、
あるショップの商品ラインナップを簡単に取得することが出来るでしょう。