----

技術とかいろいろ

レンタルサーバー/XAMPPで動く定期ゲーのサンプルを作った話

この記事は定期ゲ・乙 Advent Calender 2021 11日目の記事です。定期ゲ・丙 Advent Calendar 2021の同日にもイラスト技法系の記事を上げているのでよろしければそちらもどうぞ。

10日目:イラリクをしよう! - Ykou/ヤコウさん

12日目:定ゲキャラのグッズをつくろう!のはなし - 犬飼/さかなのマーチさん

イントロダクション

はじめましての方ははじめまして。そうでない方はこんにちは。( 'ω'  )<)です。この記事を読まれている方はおそらく定期ゲーをプレイしたことがある方でしょう。さて、定期ゲーをプレイしているとこういう意欲が湧くのではないでしょうか?……「自分でも定期ゲーを作ってみたい!」

ただ実際作ろうと思っても、定期ゲーのあの仕組みどうなっているんだろう?という部分で突っかかってしまい、実際に作るのは難しいです。

そんなこんなでそういう人を応援できたらと思い、一昨年こういう感じの記事を書かせて頂いたのですがまあ環境構築が面倒。あとVPSのレンタル料が高い。個人的にはライブラリが豊富なNode.jsは個人開発には最強の環境だと思っていますが、躓きやすい点が多いのもまた事実。

note.com

(リンク先タイトルは未完成ってなってますがあの後完成させて別記事で完成版公開してます)

簡単に動く定期ゲーサンプルを公開した

そんなわけで作りました。環境構築がめちゃくちゃ楽!ほぼ置くだけで動く定期ゲーのサンプルです。定期ゲーで実装されがちな機能をおおよそ網羅している……と思います。

github.com

コンセプトはNode.jsで作る定期/APゲームよりもっと単純な技術を使うことになっており、PHPに関してはほぼ入門クラスの技術しか使っていません(SQLについてはちょっと簡単にはできませんでしたが)。また、関数や変数名などに気を配り一応読みやすいように書いたつもりではあります。

PCにXAMPPというPHPの開発環境をさくっと作れるツールを入れることで簡単に試すことができます。詳しい手順はリンク先に書いてあるのでそちらをご参照ください。

想定する使い方としては、定期ゲーを作りたいときにどう作ればいいのかで迷った時にちょっとコードを追ってみる、あるいはこれをベースに定期ゲーを作ってみるなどとなっています。ライセンスはMIT Licenseなので扱いやすいはず。もしよければ使ってみてくださいね。

本当はNode.jsで作る~のときのように途中式として作成手順も公開したかったんですが、どうにもそこまでの時間がなかったので……。完成品はできたのでそのうち書きたい……来年のアドカレとかになるかな……。

サンドボックス

実際どのように動作するかのサンプルとして、アドカレ期間中実際に動作している環境を設置しておきます。以下のURLからアクセス可能です。自由に動かしてみてください。

https://sakana-teiki.sakura.ne.jp/teiki/

ざっとデバッグはしたつもりですが、おそらくバグはまだまだ残っているのでもしバグを見つけたら報告していただけると助かります。

今後の予定

マスタデータを作る機能が備わっておらずデータづくりが面倒なので、管理画面からマスタデータを作成できるようにしたいというのがまず一つ。

もう一つ、これだけ設置を簡単にしたら「プライベートなRPチャットを作りたいな」という需要にも応えられるのでは?と思ったので戦闘や探索といった機能を削ぎ落としてチャットに特化したバージョンを別で公開したいな~と思っています。

今は暁月のフィナーレと零式で忙しいんで後になると思いますが。

余談

12/1現在、統計データは以下のようになっています。定期ゲーを作るのって大変……。仕様の規模に違いはあれど、公開されている定期ゲーは多数の努力の上に完成したものなので、みんなGMには優しくしてあげてくださいね。

  • 総行数:21312行
  • 総文字数(依存ライブラリ除、空白含):64万4056文字
  • 動作に使っているデータベースのテーブル数:44個

結び

書く必要のあることは大概GitHub側に書いてしまっているのでこちらはすごいうすめの記事になってしましましたが、見てほしい部分はGitHubのインデックスのところに主に書いてあるので、そちらもよろしくお願いします。

ここまで読んでいただきありがとうございました。もしよろしければ定期ゲ・丙 Advent Calendar 2021の同日にあげているイラスト技法の話と定期ゲ・甲 Advent Calender 2021で1週間後に上げるデザインサンプルの話もよろしくお願いいたします。

それではまた。