アリの巣

untrocheが書きます

猿でもわかる!定期ゲームの作り方

定期ゲームではないです。なんかこう……ロールプレイするチャットサイトに申し訳程度のゲーム要素が付いた……

あとこの記事は創作キャラクター交流ゲーム Advent Calendar 2023の8日目です。
アレ? おかしいな 上の方には12月9日って書いて

adventar.org

創作キャラクター交流ゲームって言えば良かったやんけ! だって文字数長くて……

 

前(7日目) GM向け:SW2.5で良い感じのロールプレイをしたい! KoN氏

 

次(9日目) 仕立て屋妖狐、異星を征く 或いはやらざるを得なかった私なりの無謀 切り株氏

もくじ

お前誰やねん

untroche(@untroche_ar)と申します。アントローチと読みます。

8月の、多分10日くらいから10日間ほど、KILLINIG-BURN-ONLINEというサイトを運営しておりました。(今はサービス終了しています)

 

rs-game.linkみてこれ Rの手記さんに記事にしてもらったやつ いいでしょ ふふん

 

今回の記事は、KILLING-BURN-ONLINEを作る過程の備忘録という側面が強いです。
ぶっちゃけこれ書いてる時点で8割忘れてるんですけど、頑張って思い出しながら書きます。

KILLING-BURN-ONLINEは定期ゲームではないのですが、この記事ではなんかそれっぽい界隈のゲームを便宜上定期ゲームと呼称します。
企画名に則って創作キャラクター交流ゲームと呼ぼうかとも思ったのですが、1回タイピングしただけで嫌になったので定期ゲームと呼ばせてください。

実際のところ解説記事としてはあんまり役に立たないんじゃないかな。有益情報になるよう努力はします。

 

とはいうものの実は大体のことは
定期ゲを作るのは大変 という話 - 些末巻
とか
創作アイデアをゲームシステムにしてみよう|ゆう
とかに書いてあります。

私みたいな木っ端の書いた記事よりもよっぽど役に立つので、本当にゲーム作りたいならこんなとこにいないでこっち見てください。

これ別のアドカレ企画の記事じゃない? ……すみません……あの……

ゲーム作るには何すればいいの

  • 企画
  • 制作
  • 広報

ゲーム制作にはおおむねこのようなフェーズが存在します。定期ゲームに限らず、すべてのゲームが多分この過程を踏んでいると思います。

企業なんかがゲームを作るとなるとほぼ確実にこれらの作業は別の人が分担して行うことになるのですが、定期ゲームを作ろうなんて奴に友達がいる訳無いので*1我々はこれらを一人でこなすことになります。
普通に考えてプロが専業してやるようなことをアマチュアが何役も兼ねるのはおかしいと思うのですが、そういうものだから仕方ありません。
世のGMさんたちに感謝しましょうね。

 

当初この章の内容はこれだけだったのですが、流石に薄っぺらすぎるのでなんか書きます。別に必要な内容ってわけではないので畳んでおきます。

プログラミングについて

ゲームを作る、それも個人で、となるとプログラミングの工程はほぼほぼ避けられません。

TRPGやマーダーミステリーなどの比較的アナログなゲームであれば黒い画面に向かってカタカタ……みたいなことはあんまりしないかなとも思いますが、実はこれらを作るのにだってプログラミング的な考え方は必要です。


では、プログラミング的な考え方とは要するに何でしょうか?


結構説明が難しかったりするのですが、ここでは文部科学省の言葉を引用しましょう。文科省ですよ文科省。そんなん絶対正しいやんな。

プログラミング的思考とは
自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、
一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、
記号の組合せをどのように改善していけば、より意図した活動に近づくのか、
といったことを論理的に考えていく力
文部科学省 小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)

だそうです。はえ~ なんか難しそうっすね


実のところ、定期ゲーマーにとってはすっごく分かりやすいたとえが存在していたりします。プログラミングとは、すなわち……

戦闘設定!!!!

これです。戦闘設定をうまく組める人間は絶対プログラミングできます。

逆説的に、戦闘設定うまくなりたい人はプログラミングやってみるといいんじゃないでしょうか。(遠回りなので、それだけを目的にするのはさすがにおすすめしません)


こういう条件でこのスキルを発動し、これを使うと今のSPがこういう状態になるから次はこういう動きをして……みたいな、キャラクターが戦闘中どう動くかの記述。
これの、動かす対象が自分のキャラクターじゃなくて目の前のコンピュータに置き換わったバージョンです。

サンプルコード載せますね。JavaScriptって言語ですが、あんまり気にしなくていいです。

		let mp = 4;

		if (mp >= 5) {
			console.log("MPを5消費して発動するつよいスキル!");
			mp = mp - 5;
		}
	
		if (mp >= 3) {
			console.log("MPを3消費して発動するふつうのスキル。");
			mp = mp - 3;
		}
	
		if (mp >= 2) {
			console.log("MPを2消費して発動する弱めのスキル……");
			mp = mp - 2;
		}
	

こういう感じだったとき、このコードは真ん中のふつうスキルだけを発動して終了します。
なぜかというと、自分のMPが4で、コードは上から処理されるからです。

if文というやつで、自分のMPがスキルを発動するためのコストをちゃんと支払えるかを判定しています。一番上のコードでMPは4に設定されたので、MPを5消費する最初のつよいスキルは発動しません。
その次のふつうスキルは発動し、ここでMPがコストの3だけ減らされて……今は1になりました。
最後の弱めスキルは消費MPが2なので、最初の時点では発動できたのですが、今はMPが1なので発動しません。
結果として、ふつうスキルだけを発動して終了するわけですね。


……これで参考になるのでしょうか。
ともかくプログラミングって実は基本の部分は結構簡単なので、できればやってみてほしいな……楽しいから……

企画すっぞ!コラ!

企画とは、作りたいものを具体的に決める工程を指します。

例えば栗鼠氏式戦闘システムを採用したいとか、PC同士でいちゃいちゃにゃんにゃんしてほしいとか……
作りたいゲームを想像し、それらをメモ帳かなにかに書き出していきます。

多分こんなとこ見てる人は作りたいゲームが既に決まっていると思うのですが、その場合でも明確に文書化すれば後で見直しやすくなるのでおすすめです。
作ってると途中で何やりたかったか忘れていくんですよね。

 

初心者向け

さて、作りたいものは書き出せましたか?

そこには無限の世界が広がっています──最強複雑ゲームシステムに広大なマップと膨大な探索要素。クラフト機能なんか作っちゃって、プレイヤーはdiscordで日々情報交換に勤しみ頑張って攻略する……


そんなもん作れるわけねーだろ! バーカ!!!!


ゲーム制作界隈にはこんな格言があります……「最初は薬草採取するゲームを作れ」と。

赤ずきんがお使いを頼まれ、山に登って病気に効く薬草を取ってきて、それをお母さんに届けてハッピーエンド。
こんな単純で簡単なゲーム、すぐに作れると思うでしょう……じゃあ作ってね。簡単だし一週間でいいよね。

それは多分無理です。出来たなら才能あるのでもっと強いゲームを作りましょう。でも多分無理です。
ゲーム制作って大変なんですよ……これは今私の作業が全然進んでないことの言い訳とかじゃないんですけど……


最初は簡単なゲームを作るべきです。スパーナルブルーを作っているCloveR Steps様が今年で何年目か知っていますか?
18周年だそうですよ。凄いですね……凄すぎるな……

つまり18年ゲーム作らないとスパブルは作れないんですね(CloveR Steps様は当初ゲーム制作してなかったが????)。だいぶ語弊ある気もしますが、まあそういうことです。


KILLING-BURN-ONLINEは簡単に作れることを重視して企画を行いました。チャット機能+1程度の規模に収めることを考え、その+1として「ボタンを押したら何かが起こる」という要素を作成しました。
その程度の単純なものでも開発には2,3か月かかったので、ゲーム制作って大変だなあと思います。
(単に私の手が遅いだけという可能性もあります)


ここ読んでムカついた人向け

わかる。私も最初にこれ言われたらムカつくもん。

好きなもん作らせろや! 俺の勝手やろがい! ってなります。大丈夫、あなたは間違っていません。芯の強い創作者向けの性格をしています。


さて、「ゲームのボリュームを減らせ」って言っても、それだと俺のゲームの真の面白さは伝わらない……それは、本当にそうでしょうか?

一度立ち止まって、自分のゲームの「本当にやりたいこと」を考えてみませんか。


これが具体的にスパブルそのものを作りたいとかだったらもう頑張れとしか言いようがないのですが、たいていの場合「このゲームの」「この部分が面白かったから」自分もそれをやりたい、って形なのではないかなと思います。


栗鼠ゲー式戦闘システムが好きだからそれを搭載したゲームを作りたい、とここでは仮定しておきます。

その場合、極論ですが、戦闘システムだけを見せたいならチャット機能は必要ないですよね?

戦闘システム自体も軽量化できそうです。
発動条件を指定して手番ごとに判定、というシステムだけが重要ならわざわざ魔撃だの重撃だのの攻撃属性を再現する必要はありませんし、その場合ステータス自体も攻撃力だけあればよさそうです。
何なら攻撃力を排除してスキルの係数をそのままダメージにしたってかまいません。


……こんな感じで自分のゲームに必要ない部分を切り詰めて切り詰めて、たまに切り詰めすぎて成立しなくなっちゃったところを最低限補強して、そうしていけば最終的には比較的現実的な規模のゲームになっているのではないかなと思います。
ついでにその過程でオリジナリティっぽいものも獲得できているかもしれません。

後は頑張ってください。

 

上級者向け

一流の企画屋は、この時点で「このゲームがどうウケるか」なんてことを考えるらしいです。


例えばSNS上で話題にしやすいキャッチ―な要素を盛り込むとか、プレイヤー間でミームになりうるキーワードを仕込むとか……
ソシャゲとかだと、どのようにしてプレイヤーからお金を搾り取るかとかもこの段階で考えます。ガチャとかなんとか。

開発にかかる期間の見極め、スケジュール設定、SNS運用……考えることはいっぱいです。ゲームは企画段階で8割完成するといっても過言ではありません。


しかし俺たちは気ままな個人製作者なので、期限をブッチしても極論問題ないしスタッフは自分だけだから給与計算とかしなくていいし作ったゲームは無料で遊ばせればいいのです。

好きなものを作りましょう。それが許されているのです。なんたって趣味ですからね。(これは初心者向けの内容が分かっている前提で言っています)


……とはいえ作りかけたものを完成させないのは精神衛生上良くないので、完成しそうな感じで頑張っていきましょうね。お互いに……


これは最近の良かった講演資料です。資料だけ見てわかるかな。とりあえず貼っておきます。

コンセプトを絶対神とするゲーム制作のすゝめ - ところにょり氏
……まだ資料公開されてなかったみたいです。公開されたタイミングで私がこの記事のことを覚えていればリンクを追加します。

 

大体の想像ができたら、次はそれを実現するために必要な機能や画面を頑張って考えていきます。

ブラウザゲームっていうならログイン画面とか登録画面は必要ですよね。ログインできるならログアウトもできないといけない気がします。

ゲーム画面があって……あ! チャットは必要。キャラクターのお気に入り登録機能は……うーん……

…………

あと何が必要なんですか? わかりません。一回もゲーム作ったことないのにゲームに必要な機能とか分かるわけなくないですか?

というわけでどうしようもないので制作に移ります。まあなんとかなるやろ!ガハハ!(あんまりならないので、可能な限りここで粘ってください)

ひたすらにVisual Studio Codeとにらめっこする工程

制作に移ったわけですが、そもそも定期ゲームって何でできているんですか?(非常に抽象的な疑問)

たいていの場合は、HTMLCSSJavaScriptPHPデータベースという五種の神器によって定期ゲームは作られています。
詳しくはググるか、この記事を見てください。

 

定期ゲを作るのは大変 という話 - 些末巻

 

確認した限りだと、シマナガサレとか影別の宴とかはこの構成だったと思います。スパブルも多分そう。
フタハナやデスアナはCGIっていう古き良き仕組みによって作られているような気がします。

(細かいこと言うとPHPCGIの一種なんだけど、その辺詳しく突っ込まれると私もよく分かんないとしか言えないので程々に流させてください)

フレームワークっていう神器(2)も存在するのですが、私が使ってないのでわかんないです。ググってください)

 

……で、何すればいいの?

 

定期ゲを作るのは大変 という話 - 些末巻

 

を読んでください。何回も貼ってるんですけど、何回も貼れるくらいしっかりした良い記事です。
良い記事過ぎて、究極的にはこの記事はこれへのリダイレクトでも構わないくらいです。

 

一応ここでもちょっと書いておくと、具体的な流れとしては

  • 中身(バックエンド(サーバーサイド))のプログラミングをする
  • 外身(フロントエンド)を作る

って感じです。

とはいえ中身作るって言っても、前の章でも言ったように何が必要かなんてわかんないので、この2工程を反復横跳びすることになるんじゃないでしょうか。
やる気が維持しやすい形で頑張っていきましょう。

実は一回ゲーム作るとなにが必要か分かるようになって簡単にゲーム作れるらしい ゲームを作るために、ゲームを作りましょう。は?

 

ぶっちゃけプログラミング関連で私が言えることなんて存在しないので、いい感じのサイトやツールを紹介して終わりたいと思います。

 

paiza
初心者がプログラミング最初の概要を掴むのにおすすめの学習サイト。大体なんでもある。PHPとかMySQLとかJavaScriptとか調べるとよい。
金払わなきゃいけない部分もあるけど、わかりやすい参考文献って大体紙の本なので支出が必要なのは変わらないと思います。
progate
さっきの記事でも紹介されてた、paizaと似たような学習サイト。paizaは動画形式+αなのに対して、こっちはスライド形式らしいです。
えっいいな。私もこっち使えばよかった。paizaはちょっと就活圧がすごいんですよね。
Visual Studio Code
エディターツール。最近のプログラムはだいたいこれを使って書くらしいです。よく似た名前のVisual Studioってやつもあるんですけど、そっちは完全に別物。
拡張機能を追加して使うタイプのやつです。
Docker
ローカルに仮想サーバー環境を立ち上げて開発やテストを行うことが出来るツール。は? 何言ってっかわかんねえよ
要するに、レンタルサーバーを借りなくてもとりあえず開発するだけなら出来るようになるってやつです。実際に公開するならサーバーは用意しなくてはいけませんが、とりあえずね。
Docker Desktop
上述したDockerを、GUIで使いやすくする便利なツールです。
上級者は無くても何とかなるらしいですが、私はちょっと黒い画面でカタカタするのにあんまり向いてなかったのでこれを使っていました。

【地獄編】

サイトの見た目を作るコーナーです。

 

サイトデザインで何より重視すべきなことは「ユーザーが使いやすい形にする」ことです。見た目のオシャレさなんてのは二の次!
なるべく各機能に直感的にアクセスできるように、タブ形式のメニューには文字だけでなくアイコンを仕込むとか……重たすぎるアニメーションは嫌われるとかなんか……いろいろ……

最初は装飾0で、必要なボタンを適当に並べただけのものでも問題ないと思います。
リリース時まで見た目がダサいのはちょっと嫌なので直前に作り直しは必要ですが、後から機能を追加することになったときに考え直しが発生するのはつらいですからね。

 

ただ、見た目が出来上がってた方がテンションが上がるというのは事実です。自分が楽しくなれる感じで作るのが一番!

こうやって楽しいままに作ってると作業工程がグダつくので、最初の企画段階でスケジューリングまでやっておいた方がいいというのは間違いありません。私はやってなかったのでグダついて辛かったです。

 

デザインについては、実はセンスじゃなくてガチガチの理論があるんだぜ……っていうのは割と有名な話かと思います。
視線誘導とかカラーパターンとか。そういう感じのキーワードで調べたらいい感じのサイトが見つかると思うので、その辺に書いてあることを丸パクリしてください。変にオリジナリティとか出そうと思わない方が良い。

KILLING-BURN-ONLINEはなんか定期ゲームであんまり見ないデザインをしていましたが、あれはコンシューマゲームとかPCゲームのUIに影響を受けています。多分。
サイドウィンドウが小さすぎて狭苦しい印象だったんじゃないかなと思います。すみません。

【煉獄編】

頑張って各機能を完成させ、一通り動くところまで仕上げました。

次はデバッグ作業、新しくキャラクターを登録するところから始めてゲームの一通りの機能をテストし、バグが無いことを確認しましょう。

バグが見つかりましたね?(見つからないならそれはデバッグ不足です。バグは確実に絶対に間違いなく存在します) それでは修正しましょう。修正しましたね? それでは次のバグが見つかりました(見つからないならそれはデバッグ不足です。バグは確実に絶対に間違いなく存在します)。それでは修正しましょう。修正しましたね? それでは次のバグが見つかりました(見つからないならそれはデバッグ不足です。バグは確実に絶対に間違いなく存在します)。それでは修正しましょう。修正しましたね? それでは次のバグが見つかりました。…………

【死】

死ぬ~~~~!!!! 死、死~~!!!!!!!! うわああああああああああああああああああ!!!!!!!!!!!!!!!!!!!!!!!!

ゲーム公開

ゲームを公開します。
多分ここまでの段階で我慢できずにTwitter*2に「定期ゲーム作ってるよ!」とかツイート*3したと思いますが、本格的にゲームを公開するのであれば運営用のアカウントを別に用意したほうが賢明だと思われます。
あくまで身内でひそやかに公開するのであれば必要ありませんが、基本的に運営専用アカウントの方が投稿の拡散率が数倍~数十倍違います。

またこれは自分の反省なのですが、告知の際は必ずキャッチ―な画像を用意しましょう。
文字だけの告知であったとしてもその内容を画像にして投稿しましょう。
人々は小さな文字を読まないと思った方がいいです。つまりこの記事なんかは死ぬほど読み飛ばされるってことです

 

サーバーの用意もしましょう。たいていの場合有料のレンタルサーバーが使用されていますが、KILLING-BURN-ONLINEは無料のレンタルサーバー(XREAというサービスです)を使用しました。
これはサーバーに1ミリも金を払いたくなかったからなのですが、少なくともここは機能的には問題ないかなと思います。
広告の表示義務があるのが玉に瑕ですが、それも多少のお金を払えば無効にできるほか、2週間程度は無料で試用が可能です。
つまり2週間以内で終了するゲームであればタダです。

 

サーバーについてはいろいろあるのですが、最初はVPSというやつよりも共用サーバーの方がおすすめです。

VPSではサーバーの設定をいろいろしないといけません。自由度は高いのですが、初心者に自由度が与えられたところで意味はないので、最初からある程度の機能が備わってサポートも充実している共用サーバーの方がおすすめです。
あと値段的にもこっちの方が安いです。

 

マジの富豪とか、本格的に俺はこの道で生きていく! って気合なら専用サーバーってやつがいいらしいです。私には遠い話なのであんまり解説できません。

 

ネコでもわかる!さくらのVPS講座

 

こういうのとか読んでね。VPSメインの記事なのでVPS推しが強いですが、聞き流しましょう。

さらに強くなってくると、自分でサーバー用PCを用意して……みたいなことになっていきます。遠すぎ やばすぎ

 

うおお! ゲーム公開すっぞ! バグが見つかりました。修正しましょう。バグが見つかりました。修正しましょう。バグが見つかりました。修正しま

 

運営中の記憶は一切ないので何も書けることがありません。ここまで来たらあと少しのはずなので、頑張ってください。

おわり

お疲れ様でした。多分本当にゲーム作りながらこの記事読んでいる人なんて一人もいないと思いますが、これは自分への言葉なので問題ないです。
あとWARDIAN GAME alpha作ってるひとり城様にも向けています。お疲れ様です。

 

結構な文章量になってしまいましたが、本当に重要なのは企画の章だけなのでそこだけ読めば大丈夫です。最後に書くことじゃなくね? すみません……

ゲーム制作は企画が9割!

 

WARDIAN GAME alphaを応援しよう

 

長々とお付き合いくださりありがとうございました。お相手はuntrocheでした。次回作"Strings"もよろしくお願いします。



以上! 解散!

あとがき

アドカレ記事を書くためにはてなブログに初めて登録したのですが、これ殆どフタハナのプロフィール画面作成ですね。
フタハナやデスアナでプロフ頑張りたいって人は、勘所を掴むためにはてブロやってみてもいいんじゃないですか?

*1:これは嘘 私以外には友達いるらしい

*2:X

*3:ポスト