ウディタでネットランキング機能のあるゲームを作るのに必要なものリスト

みなさん、ウディタでゲームを作っていますか!?

ウディタにダウンロード機能が実装されてから、いつの間にやら11年が経っていました。
私もダウンロード機能を使って、自動バージョンアップ機能や追加コンテンツのダウンロード機能などを実装した作品を公開してきました。

ですが、その中でも一番魅力的なのは「ネットランキング機能」ではないでしょうか。
一人で黙々とプレイするだけでは味わえない熱い戦い。
時に圧倒的な実力を持つライバルに屈して、時にライバルに勝利して栄光を掴む喜び。
積極的にプレイはしないけど、1位が更新されてないかついチェックしてしまうウォッチングの楽しみ。
そして、自分のあまりの下手さに嫌気がさしてやめてしまう心の弱さ。
良くも悪くも、ネットランキング機能にはこのようなドラマが生まれます。

今回は、ウディタ でネットランキング機能のあるゲームを作るには何が必要か、説明します。


ウディタ本体

何はともあれ、ウディタ 本体がないと始まらない。

最新版のウディタ 3では、POST送信機能が追加。
これにより、今までより大容量のデータを送付できるようになりました。
スコアだけでなくプレイデータの送信とかもできる……かもしれません。

また、有償版であるウディタ 3 Pro版では、ダウンロード処理にかかる時間が大幅に短縮されました。
これが予想以上に快適です。スコアデータの送受信なら1秒も経たずに終わってしまう。
……その為に5000円払う価値があるかは、みなさまの判断に任せます。

尚、プロ版の機能を使った作品は規定によりウディコンに参加できないため、その点は注意。

ウディタで自作システムのミニゲームを作る技術

これも必須。
ランキング機能が欲しくなるようなミニゲームを作れないと、ランキング機能を作る意味がない。
もっとも、基本システムだけでランキング要素のあるゲームを作れるアイデアがあるなら別ですが……。

ジャンルとしては、スコアアタックやタイムアタックが基本となります。
私は現在音ゲーを作っていますが、これはランキングシステムと相性がいい。
一時期ネットランキング機能のあるレースゲームを作ろうとしましたが、技術不足でレースゲーム部分を作れず断念。
POST送信機能のある今ならゴースト送信機能なども作れるはずなので、やる気のある方は作ってみてください。

CGI・PHP・SQLが使えるサーバー

最近はGoogleスプレッドを使用してランキングシステムを作る方法もあるようですが、そちらは各自調べてください。

CGIはとは、ブラウザなどからの呼び出しに寄ってサーバー上で動作するプログラムのこと。
使用される言語としては、PHPなどが主流。
一方、SQLはデータベースを操作する時に使う言語で、サーバー上で動作するデータベースとしてMySQLSQLiteなどがあります。

最近は個人サイトも下火で、レンタルサーバーを契約していない製作者も多いでしょう。
ですが、ネットランキング機能を運用するには、CGIやPHPが使えるサーバーが必要。
また、必須ではないですがスコア等のデータを管理するためにMySQLやSQLiteが使えた方が管理がしやすく、便利。

ただ、無料のレンタルサーバーだとCGIやPHPが使えないところがほとんど。

安価にCGIが使えるレンタルサーバーとしては、さくらのレンタルサーバやロリポップ!などがあります。

私が使ってるさくらのレンタルサーバの場合、ライト(月額121円)からPHPが使用可能。
ただしデータベースはSQLiteのみ対応で、MySQLは使用不可。WordPressには対応していない点に注意。
スタンダード(月額550円)だとMySQLが使用可能で、WordPressも使用可能です。

ロリポップの場合、エコノミー(月額99円)でPHPやSQLiteが使用可能ですが、MySQLは使用不可。
ライト(月額220円)だとMySQLやWordPressが使用可能。

……書いてて気づきましたが、今となってはさくらのレンタルサーバよりロリポップの方がお得ですね。
サイトでもコスパNo.1宣言してるし。

PHP・SQLを書く技術

これについては、ウディタで自作システムを作るだけの技術があればなんとかなるでしょう。
コマンド式のウディタとテキストベースのPHPでは操作性の違いはありますが、慣れれば問題ないでしょう。
強いて言えば、PHPは行の最後にセミコロンを入れないとエラーが起きる点に注意してください。

データベースを操作するSQLも、少しクセはありますが何とかなると思います。
SQLの強みは、大量のデータを高速で抽出・並び替えできること。
過去作「KamuNi」ではプレイヤー別自己ベストのデータが数万個単位でありますが、特に処理速度を気にすることなくランキングの更新・閲覧ができます。すごい!

SQLに関しては、どちらかというとPHPからSQLを操作する方法の方がめんどくさい。
あまり話題になってないですが、データベースに接続するためのユーザーIDやパスワードの管理も気をつけたいところ。
講座サイトのサンプルだと、PHPのコード内に直接IDやパスワードを書いていますが、これではセキュリティ的にマズイ。
私は過去にやらかしていました(セキュリティ上の理由につき、具体的な内容は割愛)

ただ、PHPについてはプログラムを書くよりも重要な問題があります。

ローカルでPHPを動かす環境づくり

下手するとネットランキングを作る上で一番の鬼門……かもしれません。

PHPは本来サーバーで動作するプログラム。
基本的にはローカルのパソコン上では動作できません。
多くのプログラムは、開発環境でプログラムを書いて問題なく動作するかチェックしてから公開するのですが……。
パソコン上でPHPが動かないと、プログラムの動作をチェックもできません。

PHPをパソコン上で動作させるには、ApacheなどのWebサーバープログラムの導入が必要。
ただ、これも設定がめんどくさい
PCの移行を含めて過去に2回Apacheの導入をやったことがありますが、もう一度やれと言われて出来るか自身がない。

<?php
	echo "Hello world";
?>

上のコードはHello worldと表示するだけの簡素なプログラム。
PHPが使えるサーバーにアップロードすれば、ちゃんとHello worldとヒョじされます。
ただ、これをパソコン上で表示させると、結構めんどくさい。

試行錯誤の上、「echo “Hello world”;」が動いた時の感動はひとしお。
逆に言えば、これに喜びを見出せない人にはネットランキングの実装はオススメできません。

ここまでできれば、ネットランキング機能のあるゲームは作れます。
ですが、ここで最後にして最大の難所が訪れます。

十分なプレイ人数の確保

ネットランキングを実装するにあたって最大の難所、それが十分なプレイ人数を集めること

そもそも、ゲームはプレイされて初めて価値が生まれるのです。
存在するだけで価値があるものなど、世の中には無い。残酷だけどこれが真理。
苦労して作ったランキングシステムも、プレイする人がいなければなんの意味もない。
苦労して書いたプログラムも、プレイする人がいなければ水の泡。
また、月数百円とはいえ誰もアクセスしないサイトにサーバー代を払えるかも心理的に微妙なところ。
心理的にも経済的にも、ある程度のプレイ人数が確保できないと運営は難しいです。

ただでさえ、ゲームのDL数を伸ばす確実な方法は無いに等しい。
プロのプロデューサーやディレクターが指揮する大手ゲーム会社のAAA級ゲームでさえ、コケる時はコケます。
ましてや、ノウハウも知名度もない底辺ゲーム製作者の作品がDL数を伸ばすのは非常に困難。
今のふりーむなら初週100DL、累計300DLも行けばいい方でしょう。
また、経験上DL数に対してランキングに参加する人は1/3〜1/5程度。
300DLならランキングに参加するのは60人ってところでしょうか。
これが多いと見るか少ないと見るかは、みなさまの判断に任せます。

逆にDL数が伸びすぎても、別な問題が発生します。
具体的にはサーバーの負荷や通信量など。
特にサーバーの負荷は注意が必要。あまりやりすぎると、サーバー会社に怒られたりします。
開発時は、なるべく処理を軽くする・処理時間を短くするなどの対策を取りたいところ。
……サーバー会社に怒られるくらいDL数が伸びることは、まずないと思いますが


厳しいことを言いましたが、なんだかんだ言ってランキングシステムのあるゲームを作るのは楽しいです。
ゲームを熟知した作者が他プレイヤー相手に無双するもよし。
作者より遥かに上手いプレイヤーを見て感嘆するもよし。
更新されないランキングを眺めて寂しく思うもよし。
良くも悪くも、あなたの生活になんらかの彩りを加えるのは事実です。

技術や興味があれば、みなさまも楽しいネットランキング生活を過ごしてみてください。





この記事が気に入ったらサポートをしてみませんか?