Edited at
Siv3DDay 9

Siv3DからOpenSiv3Dに乗り換えよう


はじめに

こんにちわ。大乱闘に夢中で直前に必死こいて記事を書いているマホウです。

自分自身OpenSiv3Dを実際に触り始めたのは最近なのですが、導入は相変わらず簡単だったので

まだ、既存Siv3Dを使っている人や、これからOpenSiv3Dを始めてみようと思っている人への敷居下げにでもなれば良いかなと思います。


OpenSiv3Dをはじめよう!

ちょっと前の話ですが、Siv3Dユーザーの知りあいが新規ゲームを開発していました。

この時期なら、OpenSiv3Dを使っているのかと思いましたが、聞いたところまだ既存のものを使っていました。

別の友人も既存Siv3Dで新しいゲームを作ろうとしていたり、意外とまだまだ移行していないユーザーは多そうです。

なんでやろ。。。


なんとなくハードルが高い


  • 学習コストがかかりそう

  • 名前にOpenって付いてるし、なんとなく難しそう(OpenXX系への敷居)(独断と偏見)

SoundAudio など既存とOpenでclass名が変わっていたりインターフェースが変わっている部分が多少あるが、ほとんどSiv3Dライクのまま書くことができる。

そのため、既存ユーザーであれば、ほとんど学習コストもかからず始めることができるはず。

既存プロジェクトからの移行でも大改修とまではならないだろう。(大変ではありそう)

OpenSiv3DにはSiv3Dのような手軽さはちゃんと継承されています!


既存からOpenSiv3Dに移行されていない機能

現状、まだ手が届いていないところがあるため、それが理由で移行できないこともあるだろう。

移行されていない機能はSiv3D.hppを見ればなんとなく確認できます。

例としてv0.3.0時点で以下の機能はなさそうだった(今はWindowsならv0.3.1がでている)


  • 動画読み込み系

  • 3D描画

  • JSON読み込み/ZIP読み込み

  • GUI

  • 入力デバイス系


    • マイク

    • ペンタブ

    • Kinect

    • Tobii



  • などなど

しかし、開発当初に比べればかなりの機能が使えるようになっていて、普通に2Dゲームくらいならだいたい実現できると思われる。

むしろ、機能的な理由以外では既存から乗り換えない理由はないと思っています。

作りたいものの実現に機能が足りてない場合だけ、既存を使用するでもよいかもしれませんね。


実際に導入してみよう

びっくりするくらい簡単でした。

とゆうか既存Siv3Dの頃から変わっていない簡単さ。

なので、導入も楽でした。


導入方法

導入の詳細は公式でまとめてあるので以下のページを読んだほうが早い。


  1. C++開発環境をインストールする

  2. OpenSiv3Dインストーラーをダウンロードしてインストールする

  3. 導入終わり。

  4. プロジェクトを立ち上げればサンプルコードがでてくる。

  5. 作りたいもの作る。

ね? 簡単でしょ?


実際のサンプルコード

実際のサンプルコードはこんなかんじでした。(コピペ)


Main.cpp


# include <Siv3D.hpp> // OpenSiv3D v0.3.0

void Main()
{
Graphics::SetBackground(ColorF(0.8, 0.9, 1.0));

const Font font(60);

const Texture textureCat(Emoji(U"🐈"), TextureDesc::Mipped);

while (System::Update())
{
font(U"Hello, Siv3D!🐣").drawAt(Window::Center(), Palette::Black);

font(Cursor::Pos()).draw(20, 500, ColorF(0.6));

textureCat.resized(80).draw(700, 500);

Circle(Cursor::Pos(), 60).draw(ColorF(1, 0, 0, 0.5));
}
}


既存のSiv3Dユーザーならほんとど変わっていないことがよくわかるはず。

でも、既存と比べて楽しい画面になっていますよ!!

OpenSiv3DならEmoji使えます。 🐣🐣🐣🐣🐣🐣🐣🐣


新しいものを取り入れる姿勢

ちょっと話が変わります。

個人的に新規プロジェクトであれば、積極的に新しいものを取り入れていくと良いと思っていたりします。(理由がないなら)

Siv3Dに限った話ではないですが、新しいバージョンがでればやれることが増えたり、機能改善がされたり開発そのものもより良くなるでしょう。

既存Siv3DからOpenSiv3Dの場合は機能でみるとプラスだけでなくマイナスもあるので現段階では難しいところもあるかもしれませんが

それは時間の問題であって、いつかはOpenSiv3Dが既存Siv3Dの機能をカバーしきれる日がくるはず

また、新しいものを取り入れるっていう事がつまり学びになって自身の力の向上にもなります。

OpenSiv3Dを始めるともれなくC++17も学べちゃう


まとめ


  • OpenSiv3Dをはじめよう


    • 導入はとても簡単

    • Siv3Dとほぼ変わらず書ける

    • C++17も学べる

    • 既存から移行されていない機能はまだある



  • 新しいものはどんどん取り入れていこう

  • 大乱闘は面白い