21
12

More than 1 year has passed since last update.

OSSのRTSゲームエンジンをC#(WPF)で作り始めて四か月と少し。思ったこと。

Posted at

なぜ開発を開始したか

フリーゲーム界で有名なゲームエンジン「ヴァーレントゥーガ」のexe及びツールが
何者かに削除されるという事件があり、新規タイトル開発が正規の手続きでは出来なくなった。
……じゃあ新しく「〇〇トゥーガ」を作ったら良いんじゃね!?
せっかくだし、ローグライク要素や、技術・内政ツリーといった要素も含めて、
MITライセンスの最強のRTSゲームエンジンを作るかあ~~~~。

現在の進捗その1(顔絵はAIさんに描いてもらいました

現在の進捗その2

思ったこと。技術選定編

・せっかくのゲームエンジン、何を使って実装する?
Unityか、C++か、それともRust?
可視性、保守性、速度、いろいろと考慮すべきことはあるが……
・将来的にはスマホでも出来るようにしたいなあ、じゃあ、Unityか?
でもUnityプロジェクトでOSSって聞いたことがない。あるのか?
それに、ゲーム起動時にロゴが出るのがなあ……

少し調べる。うむ、.NET6だとクロスプラットフォーム開発が出来るんだとか。
MAUIというアーキテクチャーだとスマホ対応も可能!?
一番得意なC#で開発出来るなら、それで行くしかないか(現実的に考えて

思ったこと。インタープリタ編

・「ヴァーレントゥーガ」では独自言語からなる式をファイルに記載することで、内政やイベントを実装出来る。
それと同じことをするには、やはりコンパイラ、というかインタープリタを作るしかないようだ。

というわけで単純な木構造のインタープリタを作った。
しかし。
躓いた。
何故か。

メッセージウィンドウが原因である。
メッセージウィンドウはユーザーのクリックによって、次のメッセージやイベントが読み込まれるのだが……
インタープリタというものは、こういうユーザーとの対話を想定していないのである!
※例えば、ユーザーからの入力次第で次の処理に移ったり、処理そのものを変更するようなコンソールプログラムがありますかな?
scanf?まあ確かにそれはそうなんだが、GUI(WPF)にscanfはありませんぞ。
まあそういうわけです……

が、掲示板に泣く泣く開発停止を報告したら。
助けてくれる人がいた。
おかげで開発を続行することが出来た。
ありがとう、Yutaka-Sawada氏。

思ったこと。設計編。

・基本的に「ヴァーレントゥーガ」と同じ動きが出来れば良い……。
だからある意味では楽。
何しようかな、と思ったら「ヴァーレントゥーガ」を使ったゲームを起動すれば良いだけだから。
・とはいえ、独自色も出すから能天気にはしていられない
例えば要望にあったゲージ付き必殺技。
どう実装すれば良いかは思いつくが、これはゲームではなくゲームエンジンなのである。使われなければ意味がない。
ゲージ付き必殺技の呼び出し方(というかインターフェース?)について悩む日々。

思ったこと。負債編。

・日常生活を送りながらの開発である。
どうしても適当な部分が出る。
(というか適当であることを許せないとソロでの開発は厳しかろう。
・適当な部分が負債となって拙者に襲い掛かって……はいないが、いずれそうなるだろうなあ。
・単体テスト?自動テスト?でもGUIっすよ……。関係ない?ごもっとも。とはいえテストコード書くの大変だなあ。

思ったこと。やる気編。

・夏バテでやる気が出ない
・サウナ行くか
・そうだ!Discordで実装を配信しよう!
・見られているというプレッシャーにより、実装が進む

まとめ

・お体に お気を付けてね OSS(俳句 

・ここまで読んで頂きありがとうございます。

このゲームエンジンのリポジトリ

コミッター歓迎!簡単なC#なのでgithubデビューにもちょうどヨシ!

21
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
12