UnityとかUnreal Engineは触りたくないけどゲームが作りたい!
2024-04-09
azblob://2024/04/08/eyecatch/2024-04-08-love-opensiv3d-000.jpg

はじめに


初めまして!2024年入社の小野寺春樹です。簡単に自己紹介をさせて頂きます。

プロフィール

名前:小野寺 春樹(おのでら はるき)

生年月日:2004年3月5日

出身地:宮城県 登米市 米山町 (田んぼいっぱい)

出身校:仙台高専広瀬キャンパス 情報システムコース

卒研テーマ:ロボカップサッカー

趣味:ゲーム(最近はトレーナーや先生として生きています)

好きな食べ物:ラーメン炒飯セット

卒業研究はロボカップサッカーについて研究していました。ロボカップサッカーというのは名前の通り、ロボット同士がサッカーをする競技です。世界的な大会があり、人間よりも早いボール回しが見られ、とても壮観です。もし気になる人はyoutubeにも動画が上がっているので調べてみてください。

そんなロボカップで私は、システムの開発を行っていました。特に私が関わったのは、ロボット同士でパスを行う所で、そのシステムでは今まで実装されていなかった機能なので四苦八苦しながら研究してました。

robot

上の画像はロボットを実際に写したときのやつです。

ゲームを作りたいけど、ツールの使い方を覚えるのが大変!


では、本題に入る前に皆さんに一つお聞きします。

「俺はゲームを作りたい!だからプログラミング力を身に着けた!さっそくゲームを作ろう!」となったとき、皆さんはどんなツールを思い浮かびますか?

Unity?UrealEngine?それともScratch?どれも正解です。

でもそれぞれメリットはあるけどデメリットもありますよね。例えば、UnityやUrealEngineなんかは、そのツール独自の使い方があってオブジェクトの設置の仕方等、ゲームを作る前に覚えることが多すぎるじゃないですか。そしてScratchもゲームを作るには良いですが、ブロックをペタペタ貼ってるので、コーディングをしてる気分はあまり起こらないと思うんです。

でも、「ツールを使うのにそんな時間は取りたくない!でもプログラミングをしてる感じは出しながら開発したい!」

そんなわがままな私とあなたにおすすめのゲームを作れるツールがありました!

それがOpenSiv3Dです。

Icon
出典:Siv3D

OpenSiv3DはC++を使用した(ここ大事!)、オープンソースのフレームワークで、CUIベースなので、コードを書けばすぐに動かすことができます。もちろんオンライン対戦をすることもできて、2Dゲームが基本ですが、頑張れば3Dゲームを作ることも可能です。

OpenSiv3Dとは?


ここで少し、OpenSiv3Dについてすこし深堀りしたいと思います。OpenSiv3DはC++をベースにした(ここ大事!)フレームワークで、大きな特徴としては「コーディングベース」であることです。どういうことかというと、下のサンプルコードの通り、

C++# include <Siv3D.hpp>

void Main()
{
	Scene::SetBackground(ColorF{ 0.8, 0.9, 1.0 }); // 背景色を設定する
	const Texture food{ U"🍿"_emoji }; // 絵文字からテクスチャを作成する
	const Texture chick{ U"🐥"_emoji };	// 絵文字からテクスチャを作成する

	while (System::Update()) // メインループ
	{
		Circle{ Scene::Center(), 100 }.draw(); // 画面の中心に円を描く
		food.drawAt(Scene::Center()); // 画面の中心にテクスチャを描く
		chick.drawAt(Cursor::Pos()); // マウスカーソルの位置にテクスチャを描く
	}
}
gif

たった数行を書くだけで、すぐにゲームとして動かすことができます。Unityのように最初にテクスチャを用意して、配置してと言った前準備がいらないです。

また準備するときも楽で、Visuial StadioとOpenSiv3Dをダウンロードするだけですぐに始めることが出来ます。

あと、Siv3Dにはマスコットキャラクターがおります。かわいいですね。

siv3dkun
出典: Siv3D くん - Siv3D

C++についても紹介したい


OpenSiv3Dで使用しているプログラミング言語「C++」についても紹介させてください。

C++について、GaiXerに聞いてみました。

gaixerが簡単に教えてくれましたが、この言語の良い所はC言語を元にしているので、とても早いし軽い、さらにC言語では大変だったメモリ管理を気にしながら書かなくても大丈夫、おまけに同じオブジェクト指向である、javaよりも見た目が綺麗になります(自談)。

ここからは私の独断と偏見になりますが、私のようなゲーム好きが高専に入る理由は大体はゲームを作りたいからだと思ってます。しかし、一番最初に習う言語はC言語、私も実際C言語を最初に習いました。でも、こんなんじゃゲーム作りに生かすことができない!私、ロボット作製とか組み込みとかしないし!

そんな諦めの気持ちを持った時に出会ったのがC++。

C言語の知識を持ちながらプラスα覚えるだけですぐに扱える素晴らしい言語それがC++。

C++愛してます。

【自作ゲーム】PaintRunner


最後に、実際にOpenSiv3Dを使ったゲームを紹介していきます。

私がチームメンバーとして参加して作ったゲームで「PaintRunner」という名前です。

どんなゲーム?

PaintRunnerは迷路を脱出しながら相手より広い陣地を塗りまくるゲームです。

勝敗は塗ったマスがそのままポイントになり、時間内に片方しかゴールできなかった場合、ゴールした方にボーナスポイントが入ります。

その後、ポイントの多い方が勝利という風になります。

いろんなアイテムが存在

また、この迷路内には色んなアイテムがランダムで設置されています。

自分の足を速くしたり、逆に相手の足を遅くすることができる等、6種類程のアイテムも用意しています。

より多くの陣地を広げられるのはどっちだ!ということで気になる人は私まで連絡してください。一緒にやりましょう。

私の担当

ちなみに、このゲームは前述した通り、チーム開発をしていました。そこでの私の役割はみんなが作成した部分のマージ作業、というものをやっていました。皆が思いのままに作ってしまうので変な名前の関数を作ったり、おかしな引数を用意しているので整合性を保ったままつなぎ合わせるのは大変でした。特に大変なところと言えばネットワークの部分です。PhotonのAPIを使って開発したのですが、実際にネットワークを触るのは今回が初めてだったので、どういうコーディングをすれば通信できるのか一苦労しました。

最後に


自己紹介も含めて、OpenSiv3Dについても話させて頂きました。しかし、ここまでOpenSiv3Dについて語ってきましたが、実はまだ初めたての初心者になります。自作のゲームもあれが2作目です。

どの口で語っとるんだべと言われるかもしれませんが、初めてこのツールに出会ったとき、衝撃を受けたのでぜひ皆さんに知ってほしくて紹介させていただきました。

もし、この話を読んで興味が沸いた人が一人でもいてくれれば嬉しいです。