1日でゲームをつくろうとした話

おはよう! そして会えない時のために、こんにちは、こんばんは!

 

とあるアドベントカレンダーの11日目の記事です。
この記事は、けっこうアドカレに空きがあったので、書いています。過度な期待はしないでください。
このブログのことすっかり忘れていて、前の記事から1年以上空いていました💦
 

 

つくったゲームを紹介したいだけで、

内容スカスカなので、読むのは本題とまとめだけでいいです。

 

簡単な自己紹介

ゲームをつくるのが好きです。
大学に入ってから今までに、音ゲーやパズルゲームなどいろいろ作りました。
特に力を入れて作ったのはアクションパズルゲームゼルダみたいな感じにアクション操作でパズルを解き進めるゲーム)です。

ブログ慣れしてないからか、個人情報は怖くてあまり書きたくないので、この程度で……。
 

1日でゲームを作ろうとした話

ゲームつくりたいけど、忙しくて作れない!

……けどまぁ、1日くらいなら時間はとれるかな? と思い、
1日でゲームを作ろうとしました。(結果は2日かかりました💦)

 

下手っぴな文章は読みたくねぇよ! という方は、
https://drive.google.com/drive/u/1/folders/1HadU2kZm3uFlv9-iMTMH0h-81lnCL334

このURLにある「Tetroad.zip」をダウンロードして、解凍したのち、
「tetroad.exe」をクリックしてください。(windowsで動くやつです。)

 

どんなゲームをつくるか?

カードゲームやRPGなど、作成に時間がかかるのは、論外。
ちなみに、ゲームを初めてつくろうとする人は、ドラクエとか遊戯王とかに影響されているのか、そういうゲームをつくろうとしますが、完成させることができずに結局1本もゲームをつくることなく、挫折します。


で、いきなり結論ですが、今回は対戦型パズルゲームをつくることにしました。
パズルゲームは絵素材の用意がほとんど要らないし、対戦でAIを用意するなどしなければ、すぐに作れると思ったからです。

 

じゃあ、どんなパズルゲームをつくるか?

1日でつくることも考えると、100%新規で作るのは厳しそう。
なので、中学のころに、友達と休み時間にやっていた自作パズルゲームと、
有名な「テトリス」を合体させたゲームを作ろうと思います。
(中学のころのパズルゲームは紙とペンで遊ぶものです。詳細は省きます~)

開発環境

技術的なことは書くつもりはないので、簡単に。

・VisualStudio
・DxLib(C++のライブラリ)
・Krita(イラスト作成ソフト)
・EDGE(ドット絵作成ソフト)

上2つはコード作成、下2つは絵素材作成です。(どれも無料)
音素材や一部の絵素材はフリー素材を使います。

開発日程

タイトルは「1日でゲームをつくろうとした話」ですが、前述のとおり、2日かかっちゃいました。

1日目(前半)

対戦パズルのルール決めをしました。これは後ほど紹介します。

1日目(後半)

コード作成。ときどき絵素材作成。

絵素材は昔作ったゲームの絵素材(数分程度でつくれるもの)とテトリミノのドット絵を作成したくらいです。

で、遊べるようになり、一応【完成】!!

2日目(前半)

ルールのパラメータをいじれるようにし、また、その設定画面のために絵素材をつくった。このとき描いたのがこれ ↓ です。紙に数分で描いたものをプリンタでスキャンし、Kritaで1,2時間ほどかけて色付けしたものです。

私がつくってるゲームに常に登場するキャラです。

f:id:saltOrder:20191211042931p:plainf:id:saltOrder:20191211043003p:plain

2日目(後半)

タイトル画面とルール説明画面をつくった。

つくったゲームの紹介(本題)

テトロード」という名前の対戦型のパズルゲームです。

f:id:saltOrder:20191206092658p:plain

 フィールドにテトリミノを置き、その自分のミノを道にして、コマ(T字テトリミノに乗ってる黒いやつ)を反対側の1列にたどり着かせたら勝ち!

 

操作は単純。

・テトリミノを置く

・コマを動かす

・コマが乗っていないテトリミノを消す

だけ!(HOLDとかミノ回転もあるけど)

 

これを毎ターン配布されるアクションポイントを消費しながらゲームをすすめていく。

 

そしてテトリスみたく、列(縦)が埋まったら消えます。

このときの列に、コマが乗っていると振り出しに戻されちゃいます💦

 

シンプルだけど、やってみると意外に頭を使うゲームになりました。

まとめ

この記事に来た人は、ゲームをダウンロードしてくれるだろうという前提で、本題すらもスカスカな内容の記事になってしまいました。ごめんなさい。

なので、ぜひダウンロードして友達と対戦してみてください!

https://drive.google.com/drive/u/1/folders/1HadU2kZm3uFlv9-iMTMH0h-81lnCL334

 

ちなみにこのURLには以前作ったアクションパズルゲームの体験版もおいてあります。
アクション的に難しいところはありませんが、ほとんどの人がクリアできないステージがあるので、時間がある人だけやってみてください。 

 

 

「SALT ORDER -third order-」Game^3に参加!

2018年9月16日(日)に東京工業大学の大岡山キャンパスで開催されるGame^3(ゲームキューブ)というイベントに参加させてもらいます!

この記事では、このイベントで展示させていただくゲームの簡単な紹介するよ!

 

★Game^3って?

簡単に言えば、個人やサークルで作成したゲームの展示会!
展示しない人も自由に見にきて遊ぶことができるんだって♪

詳しくは↓

game3.trapti.tech

★展示するゲーム

展示するゲームの名前は「SALT ORDER -third order-」だよ。
名前からもわかる通り、SALT ORDER三本目のタイトル。

ジャンルはパズルアクションRPGで、「とある電脳世界へ盗まれたデータを取り戻すために、ギミックという名のロボットが敵のスキルを利用し謎を解きすすむ」といった感じのゲームになります。

三本目のタイトルと言いましたが、前作を知らない方でも楽しめる内容にするつもりですのでぜひプレイしに来てね。(そもそも2本目のタイトルは公開すらしていないみたい💦)

f:id:saltOrder:20180831001044p:plain

             (↑パッケージイラスト的な絵)

★プレイ画面

言葉でいろいろ書くよりプレイ画面を見てもらった方がどういうゲームかわかってもらえると思うので……どうぞ!

f:id:saltOrder:20180831001509p:plain

一応、画面の説明~。

左上にあるHPゲージはそのまんまで、残りのHPを示していて、0になるとゲームオーバー。前回のセーブポイントからやり直しになっちゃうよ。

その下のBatteryゲージはスキルを使うのに必要なバッテリー残量を表示しているよ。スキルっていうのは、ギミック(パッケージイラストのロボット)が持った敵の能力を扱うことで、この画面では、空飛ぶスキルを使ってるよ!

画面右上にあるTIMEと書かれたゲージはスキルが発動している残り時間を表していて、スキルが発動していないときはスキルの内容を表した絵が表示されるよ。

あと、基本的には敵は踏みつけると機能停止するよ。

その他、ワープ床やHP回復装置などは、直接遊んでみてどんなものか確認してね。

★操作方法

f:id:saltOrder:20180831013354p:plain

操作はゲームコントローラー(あるいはキーボード)です。
操作方法は上のような画面がスタートボタンを押すとでてくるので、確認してね。

★登場キャラ

ギミック(Gimmick)

f:id:saltOrder:20180831004231p:plain

敵の電脳世界に唯一潜入できるロボット。
本作のプレイアブルキャラ。 

実は第一回、第二回のGame^3でも登場した。

ソルト(Salt)

f:id:saltOrder:20180831005035p:plain

水色ポニテのAIの女の子。
ナンプラー博士のパソコンに住んでいる。
AIアカデミーではほぼビリの成績だったらしい。

シュガー(Sugar)

f:id:saltOrder:20180831010034p:plain

ソルトと同じくAIの女の子。
ソルトとは違い、AIアカデミーを優秀な成績で卒業。
第一作のラスボス。

ナンプラー博士(Dr.Nampla)

ちょっとエッチなおじいちゃん博士。
奪われたデータを取り戻すようソルトに依頼する。

謎の声??? 

シュガーがナンプラー博士から奪ったデータを、更に奪った者。
たまに通信に割り込んでくるが、正体は不明。

★本作までのストーリー

かなりざっくりなあらすじ。

first order(コミケC91で販売)

ナンプラー博士のデータがシュガーに奪われ、シュガーを倒すが、すでに謎の声の者に奪われていた。

second order(体験版は第5回Game^3展示・未販売)

謎の声の支配する電脳世界にはパソコンが生まれる前の時代から存在する古代プログラムであるギミックしか潜入できないことが判明。シュガーと協力してギミックを見つけ出す。

★その他

開発はC++、DxLib

イラスト素材は主に自作

音素材はフリー素材の利用

★最後に

いろいろとざっくり過ぎて、わかりずらかったかもしれませんが、おそらく展示するのはRPG要素は薄めの体験版の展示を考えているので、パズルアクションをやってみたいという方、ぜひプレイしに来てください。そしていろんなスキルを使うかわいいギミックを見てください!

あ、あとプレイ画面は開発中のものです。実際の展示とは異なる場合がございます。

 

 

 

マニュアルマッチングツールの仕様

※ソフトを持っていない方には全く関係のないページになります。

 

SIFTマッチングなどでは、どうも上手くマッチングしない……。けれども、2つの画像間の正しい対応をとらなければいけない場合などに、マウスクリックによる手動で対応をとるツールです。

 

以下、かなり雑な操作説明……。

 

 

★画面の説明

f:id:saltOrder:20180823192327p:plain

左側からに操作アイコン、画像1(水色枠)、画像2(ピンク枠)、マッチングリストになっています。

操作アイコンは次の項目で説明します。

画像1,2はまず、上にその画像のアドレスと名前、その下に画像の全体、さらにその下に画像の一部分を表示してあります。画像の一部分は画像全体のところに表示されている枠の内部が表示されています。

右上の数字は作業中のIDです。

その下には、マッチングリストが表示されています。白・水色・ピンクのチェックボックスは削除アイコンを使うのに利用します(後に説明)。また、2つの画像でマッチングできていないものは赤の!が表示されます。

画面、右下の黒十字は、左クリックで、マッチングIDを新規で作成します。

 

 

★操作説明

基本的にはマウスのみの操作になります。

まず左側に縦に並ぶアイコンの説明です。

1:新規作成(白紙のアイコン)

現在の作業を破棄し、新しい作業に移ります。

2:保存(フロッピーディスクのアイコン)

保存します。

後に説明する「コマンドラインからの実行」でない場合、保存される出力データの名前はoutput.txtになり、保存される場所はmanualMatching.exeと同じ場所になります。

3:クリック(矢印のアイコン)

基本的にはこのアイコンを左クリックしたあと、手動マッチングを行います。

このアイコンがうっすら光っているときに画像をクリックすると画像のクリック位置の座標を記録します。

4:移動(十字の矢印のアイコン)

このアイコンがうっすら光っているときに一部分画像を左クリックしながらマウスを動かすと表示範囲が動きます。

5:ズーム(虫眼鏡のアイコン)

このアイコンがうっすら光っているときに一部分画像を左クリックすると、拡大され、右クリックすると縮小されます。

6:選択(点線四角のアイコン)

このアイコンがうっすら光っているときに画像(全体・一部分の両方で可)を左クリックしながらマウスを動かすと緑の四角が表示されます。その状態で左クリックを解除すると、その緑の四角に含まれるマッチングの白・水色・ピンクのチェックボックスが反転します。

7:線の表示(斜め線のアイコン)

手動マッチングの結果の線を表示、あるいは非表示にします。

8:点の表示(バツのアイコン)

記録されている座標を点を表示、あるいは非表示にします。

9:IDの表示(吹き出しのアイコン)

マッチングリストのIDを表示、あるいは非表示にします。

10:グレースケールに変更(グレーのグラデーションのアイコン)

表示されている画像をグレースケールに変更します。

11,12,13:削除(ゴミ箱のアイコン)

チェックボックスにチェック(■)が入っているものを削除(初期化)します。

ピンクのみにチェックがはいった状態でピンクの削除アイコンを左クリックすると、右側の画像の座標情報が削除されます。

チェックがどのマッチングにも入っていない状態で削除アイコンを左クリックすると、全てが削除されます。

14:HELP

このサイトに飛びます。

その他:

マウスホイールの回転でもズームしますし、マウスホイールを押したままで動かすと4の移動ができます。

また画像の読み込みはドラッグアンドドロップで行います。

保存されるデータの名前はコマンドラインからの実行でのみ変更できます。

 

コマンドラインからの実行

コマンドラインでの実行は以下の3パターンで可能。

> manualMatching img1.png,img2.png,output.txt

読みこむ画像1、読みこむ画像2、出力のテキストデータのアドレスと名前をコンマで区切って入力。

> manualMatching oldOut.txt,newOut.txt

すでに保存したある出力データ、新たに保存する出力データのアドレスと名前をコンマで区切って入力。もちろん、oldOut.txtを読み込み、その続きから始まる。

> manualMatching oldOut.txt

すでに保存したある出力データのアドレスと名前を入力。もちろん、oldOut.txtを読み込み、その続きから始まる。

 

★保存されるデータ(.txt)

保存されるデータはテキストファイル(.txt)で出力されます。

1行目は、画像1のアドレスと名前。

2行目は、画像2のアドレスと名前。

3行目は、マッチングの個数。

4行目以降は、マッチングしたものの画像上の座標で、『画像1のx  画像1のy  画像2のx  画像2のy』になっています。削除アイコンによって初期化されたものはー1が入っています。

GREED【PLAYING CARD】

 

GREEDという名前のトランプゲームを考えました。
ありがちな心理戦ものなので、既存のものがあるかも?

 

☆ 概要

 4人のプレイヤーがそれぞれA~Kの13枚を使って遊ぶゲームです。

 毎ターン、プレイヤーは同時に場にカードを出します。そのカードの数字がそのター
 ンのスコアになりますが、最も大きい数字のプレイヤーはそのスコアはマイナスにな
 り、最も小さい数字のプレイヤーは0になります。
 その他、以下に示していくルールに従ってスコアを決め、最終的(13ターン終了後)
 に総スコアが高い人が勝者になります。

☆ ルール

 1.基本的には各ターンのスコアは出したカードの数字。

 2.数字の大小は「小←A、2、・・・、Q、K→大」。

 3.最も大きい数字のプレイヤーはー1倍した数字がスコアになる。

   (「場:Q,9,4,2」のときは、Qを出した人のスコアはー12。)

 4.最も小さい数字のプレイヤーのスコアは0になる。

 5.K(13)を出したとき、場にAが1枚でもある場合、Kを出した人のスコアは20。

 6.Aを出したとき、場に2,3,4のいずれかがある場合、Aを出した人のスコアは、そ
   のターンで最も大きい数字がスコアになる。

   (「場:Q,9,4,A」のときは、Aを出した人のスコアは12。」)

 7.場にカードを出すとき、裏側表示(数字が見えないように)で順(順は毎ターン
   変更)にだし、同時に表にする方法を採るが、このとき、最初から表側表示で
   出してもよい。

 8.場の数字の種類が2以下のとき、そのターンのスコアは全員0になる。

 9.ルール8の例外として、最も大きい数字が3枚あるとき、その数字を出した3人
   のスコアはそれぞれー20となる。

 10.ルール9の状況で「場:K,K,K,A」のときのみ、3人のスコアはルール5に則
   り、20となる。

 11.今までに出したカードは場とは別に見えるようにしておく。

 12.全員の絵札(J,Q,K)が出尽くした次のターンからは10が今までのKの代わりに
   なる。(「絵札が出尽くした後の場:10,5,2,A」のとき、Aを出した人は13点が
   スコアとなり、10を出した人は20点がスコアとなる。)

☆ 最後に

 いかがでしょうか。

 大富豪のイレブンバックみたく、Jが場にあったら大小入れ替えるなんてのも面白い
 かもしれないなぁ。1ターン目の前にランダムなカード交換を入れてもいいなぁ。な
 どと思ったのですが、まずはシンプルにいこうと思い、こんな感じのルールにしてみ
 ました。

 まだまだ改善すべきところが多いと思いますので、今後、どんどん更新すると思いま
 す。

 もし、このサイトを見て、やってみた方がいらっしゃったら、感想や改善点、既存の
 似たゲームのことなど聞かせていただけたら、うれしいです。