🍤

【ゲーム開発は楽しい!】Ebitengine ぷちConf #1 イベントレポート

2023/10/04に公開

勉強会は、振り返るまでが勉強会です! というわけでこの記事では、少し日が空いてしまいましたが、先日渋谷にて開催されたGo製のゲームエンジン "Ebitengine" に関するゆるい勉強会&交流会、 Ebitengine ぷちConf #1 の模様をお伝えいたします。

開催するまでは不安もありましたが、蓋を開けてみれば満員御礼! 懇親会も延長して話し込んでしまうほど大変活気の満ちた会となり、主催として感謝の念にたえないところでございます。

大半は「Goが好きで、Ebitengineも名前だけは知っているけど、実体はよくわからない」という方にお集まりいただき、まさにそういう方へのアンサーとなるような「入門してみた」や、歴史や理念の解説、ゲームの例、実用例の紹介など、綺麗に「刺さる」発表が幸いにも揃う形となりました。

昨今のゲーム開発界隈のドタバタもあり、「その他のゲームエンジン」への注目が高まっている中、世にEbitengineあり、というところを見せられたんじゃないかなと思います。

第一回を糧として今後もぷちConfは継続して開催していきたいと思いますので、興味のある方は是非↓あたりをチェックしていただければと思います🙏

特にオンライン配信についてはトラブルがあり、配信を期待してくださった皆様には大変申し訳ありませんでした。次回は絶対に配信を成功させたいと思いますので、どうかお待ちいただけると幸いです🙇

開催内容

内容 発表者(敬称略)
スポンサーLT DeNA
世界のEbitengine Nadim Kobeissi + eihigh
基調講演 hajimehoshi
テンションも揚げてこう!ebitengine開発 lapis2411
Ebitengineのイベントで発表するのでEbitengineを初めて触ってみた shinnosuke
Ebitengine触ってみたぞい eiei114
EbitengineでGUIツール作ってみた aethiopicuschan
教育現場におけるEbitengineの可能性 tenntenn
私とノベルゲームとEbitengine kyp
懇親会 + なんでも質疑応答タイム hajimehoshi + eihigh

すべての資料が一覧できるページはこちら

以下に各発表の感想を述べていきます。資料は是非拡散・ブックマークなどしていただけると嬉しいです!

「世界のEbitengine」

https://vimeo.com/868572575

Odencat の Daigo さん発案で、Dr. Kobushi's Labyrinthine Laboratory (Steam, Switch) というゲームを開発した Nadim Kobeissi さんへインタビューを行いました。実際にSwitchにEbitengine製ゲームを販売している貴重な開発者の一人である Nadim さんの意見は非常に説得力があるのではないでしょうか。

Ebitengineはクロスプラットフォーム対応はじめ、様々なゲーム開発の難しい要求に応えるように設計されています。それだけ磨かれているということですね。Ebitengineのおかげで、Go言語が好きな人がゲームを楽しく開発できるわけです。

海外でも(というか、Ebitengineは海外の方がよく使われてる気がしますが)、実際のゲーム開発でヘビーに使われている様子は非常に参考になるかと思います!

基調講演「Ebitengine の過去・現在・未来」

https://docs.google.com/presentation/d/1l7b6dtcBblfILcHdlZ9UJlgjGkEjpw5KnIVOnG_r0vY/edit#slide=id.p

開発者の星一さんより、基調講演として、Ebitengineのこれまでの10年のあゆみと理念、そして未来の展望について発表していただきました。

Ebitengineがどうすごいかを最も雄弁に語るのはその歴史だと思います。はじめは Unityのほうがよくない? なんて言っていた Daigo さん(Odencat にて「くまのレストラン」や「メグとばけもの」など大ヒットゲームを輩出)も、今では自分のゲーム開発にとって Ebitengine はなくてはならないものだと語っています。

10年が経ち、"2d game engine" でググると1ページ目に出てくるくらいには有名になったEbitengineですが、それでも知名度も開発者もまだまだ足りないです。この点はまさに自分がアプローチしたいとずっと考えている点ですね。

ですが、人を集めるために派手な機能を盛り込めばいいという話ではありません。この点が最もEbitengineの尊敬する理念なのですが、これからも引き続き地味なことを地味にやっていくことに注力するとのことです。すごい。本当に正解。地味なことが一番重要だし難しいのです。これから入る予定のIME対応などは特に、アジア圏の開発者が取り組まないといけない故対応されること自体が貴重で、安定して使えるようになったら非常に嬉しい人も多いのではないでしょうか。

Ebitengineの魅力がギュッと詰まった発表でしたし、そもそもゲームエンジンの開発者本人のお話を聞ける機会そのものがわりと貴重なものだと思います。星さんには他にも合間合間や懇親会で質問に答えていただいたりなど、ここでしか聞けない話もたくさん聞けて、オフラインならではの良さを感じたりもしましたね。星さんに直接お話が聞きたい方は、ぜひ次回のぷちConfにて!

「テンションも揚げてこう!Ebitengine開発」

LTのトップバッターは、lapis2411 さんです。ゲーム開発してテンションが上がることといえば?⇒ゲームパッドが使えること!というわけで、ゲームパッドを使った実装のデモを披露していただきました。Ebitengineならゲームパッド対応も簡単で捗りますね。コードも公開されております。

ゲームパッドは製品によってボタン配置が違ったり、ここも自力でやろうという気にならない程度には地味にしんどい部分なんですよね。それをよしなに吸収してくれるのがEbitengineです。ゲーム開発の中でもゲームパッド対応はなんだかんだ後回しになってしまいがち(主観)ですが、やはりゲームパッド操作できるとテンション上がるのは間違いないので、ゲームパッドをお持ちの方なら一回はいじってみていただきたいです!

「Ebitengineのイベントで発表するのでEbitengineを初めて触ってみた」

続いては、sinnosuke さんによる発表です。なんとイベントきっかけで初めてEbitengineを触ってみたとのことです。そんなきっかけになれてとても嬉しいですし、始めてみたい!という参加者の方にとても寄り添った内容になると思うので、ありがたい限りですね。

大学の授業でゲームプログラミングをした経験はありながら、Ebitengineをゼロから始めるにあたって頼ったのはなんとChatGPT。便利な世の中ですね(この後もChatGPTはちょいちょい登場します)。オセロをオソロとtypoしてもよしなに推測してくれるらしいです。

ChatGPTの手も借りたおかげで、なんと初めて触ったにもかかわらず2本ゲームを完成されたとのことです。これもきっとEbitengineのシンプルさ(とAIパワー)の為せる業ですね。

実際に作られたゲームはこちらのサイトで公開されています(拙作 eihigh/wasmgameをご利用いただきました)。よければ是非遊んでみてください。

https://shinnosuke-k.github.io/ebitengo

「Ebitengine触ってみたぞい」

続いては、eiei114 さんによる発表です。なんと eiei114 さんもイベントきっかけでEbitengineに触れてみたとのことです。ありがたい限りです。

Webアプリのハンズオンだと似たようなものになってしまいがちなので、ゲーム開発に挑戦してみたとのことです。最終的には某 .io ゲームのようなものを作ろうと試みたものの完成しなかったとのことでしたが、オンラインゲームは難しいので仕方ないですね。

Unityエンジニア歴2年半ということで、UnityとのAPIの比較もありました。Update という関数名には馴染みのある方も多いでしょう。

Goはサーバーサイドで活躍する機会が多い言語なので、バックエンドもフロントエンドもGoで書いてみた!というような事例がもっと増えると楽しいなあ、なんて思ったりもしました。

「EbitengineでGUIツール作ってみた」

続いての発表は aethiopicuschan さんによる、画像を読み込んでスプライトシートやGIFアニメーションとして出力できるツール odori のご紹介です。

エイヤで作りました、というわりには、綺麗なUIを備えており、感嘆してしまいました。Goをお持ちの方は go run github.com/aethiopicuschan/odori@latest ですぐに手元で試せるのでぜひどうぞ。

その実用性もさることながら、EbitengineでGUIツールが作れるという事実そのものが大きなインパクトがあったように思います。もちろんゲームが作りたい方は多いですが、ゲームの補助ツールやゲームと関係ないツールを開発する手段として、Ebitengineが有用であるというのがこの発表で知らしめられて、その点で特に印象に残ったとおっしゃる方が多かったです。

基調講演のところでも触れられたとおり、GUIツール向けの機能は今後本体側で拡充されていくようなので、ツールに興味がある方にもどんどんEbitengineに触れていってもらいたいですね。

それと、すごくスムーズにOSのファイルオープンダイアログが開いて驚いたのですが、これは ncruces/zenity を利用しているようですね。便利。私もGUIツールを作るときは活用してみようと思います。

「教育現場におけるEbitengineの可能性」

https://docs.google.com/presentation/d/1UGbXXPtfTMt3jP5h4H4kz010v_AO0yOHcBhdfR0bnxQ/edit#slide=id.p

続いての発表は、Go界隈ではお馴染み tenntenn さんによる、教育現場におけるEbitengineについての発表です。

みなさんご存知(要出典)、人類Gopher化計画を実施している tenntenn さんは、その一環で大学にてGoをがっつり学生に教えています。その最後に各自が自由にソフトウェアを制作するパートがあるのですが、それまでWebアプリの作り方しか教えていないにも関わらず、なぜか一瞬触れただけのEbitengineを使ってゲームを作ってくる学生が絶えないとのことです。それならいっそ教える側から歩み寄っていこう、というのが、教育現場におけるEbitengineの活用のスタート地点とのことです。

実際ゲームは学習の題材としてうってつけです。これは私も非常に感じていることで、ゲームプログラミングからプログラミングの楽しさを知り、ゲームと特に関係ない本職プログラマーになる流れは、それこそBASICの時代からの鉄板です。

教材としてのゲームは、どちらかというと今はScratchのようなノーコードツールの方が注目されがちですが、それにはやはり限界があるというか、実際のプログラミングとの乖離が少なくありません。いっそ最初からテキストプログラミングを教えてしまってよいのではと tenntenn さんの考えですが、私もそれに賛同します。

しかし、3歳児にいきなりGoとEbitengineのプログラミングを教えているというのはさすがに英才教育が過ぎるような気もしました(笑)

「私とノベルゲームとEbitengine」

最後は、SAEKO: Giantess Dating Sim を開発している、プログラマー兼シナリオライターの kyp さんによる発表です。発売は来年予定とのことです。ウィッシュリスト登録是非是非よろしくお願いします!

SAEKO: Giantess Dating Sim は、Ebitengine製である以前に一つのインディーゲームとして発売前から非常に注目を集めており(Game Sparkのインタビュー記事。他にも多数あるものの割愛)、今回の発表の中でも特に反響が大きかったです。同日に開催していたTGSでも展示されており、本当に忙しい中 kyp さんにはご参加いただく形となりました。本当にありがとうございます...!

「奇抜」「インモラル」「怪作」と評される本作ですが、何より奇抜なのはゲームの世界観以上にGoで制作されていることとのことです。はい、私もそう思います。

Webのバックエンドエンジニアであり、Go, Rails, AWS などの経験を持つ kyp さんがゲーム開発に着手したのは今年1月のこと。そこから Unity 等様々なゲームエンジンを試したものの、なぜか表示がおかしくなるなどどうも肌に合わず、最終的に辿り着いたEbitengineで「気づいたらデモが出来上がっていた」とのこと。

Ebitengineはエディタとcliで開発が完結するし、型もドキュメントも整っていること。そして、何もお膳立てがない状況からすべてを自分で作る必要があるため、勝手にユニークなシステムが出来上がっていることが良かったとのことです。

その例の一つが、トレーラーでも確認できる「ふよふよ浮かぶテキスト」。自分で書いたコードなので、気楽にカスタマイズできた、とのことです。

https://www.youtube.com/watch?v=yZXE6SfXmGU

私はEbitengineはゲーム制作にどんどん実用すべきだと考えていますが、ろくな制作実績のない私が主張しても説得力がないのですが、このようなある程度の規模のあるゲームがEbitengineを採用しているというのは、まさに説得力の塊でした。

実際、ゲームの企画だけパブリッシャーに持ち込んで「Ebitengineで作ります」、なんて主張しても絶対通らない(メジャーなゲームエンジンで作らされる)、今回はデモが先にあったからラッキーなことにEbitengineで作ることが出来た、なんて裏話も聞くことができました。

Ebitengineが kyp さんに届いたことはじめ、様々な奇跡の上に成り立ったゲームなんだと思います。こういった開発者の方々をどんどん増やしていきたいですね。

「Ebitengineと、コミュニティと、私の夢」

筆者からも挨拶を兼ねて、なぜEbitengineを選んだのか、なぜこのようなコミュニティ活動をしているかについて発表しました。

クロスプラットフォームに対応した「安定した」ゲームエンジンは非常に貴重です。Ebitengineは「くまのレストラン」「メグとばけもの」始め実際のゲームと歩んできたからこそレアなバグにも対処できて安定しており、そして、安定しているからこそ、開発者は安心していじり倒すことが可能です。

そんないじりがいのある楽しいゲームエンジンEbitengine唯一の弱点は、まだ人が少ないこと。もっと多くの人がEbitengineとゲームプログラミングの楽しさを知るべきだし、Ebitengineユーザーが増えるとエコシステムも充実してもっといろんなことが可能になるはずです。

...といったことを「私の夢」と題して語ってみたスライドとなります。共感していただける方がいたら嬉しいな!

懇親会の感想

配信トラブルで時間が押している中ではありましたが、懇親会にて様々な方とお話することができました。ありがとうございます!

冒頭にも述べた通り、Ebitengine未経験の方が大半ながら、Go好きを基本として、Unityエンジニアやその他のゲームエンジニアなど、様々なバックグラウンドの方がEbitengineに興味を持ってくれて、なおかつ皆さん新しい技術が好きですから、大変熱のある会話が交わされたように思います。Ebitengineによるゲーム開発はいいぞ!

tenntenn さんの発表を受けて、子どもたちがEbitengineで育ったら、10年後はきっとすごい数の「Ebitengineにお世話になった人」が生まれるんじゃないか、なんて話で盛り上がったりしましたね。実際私も、DXライブラリという歴史あるC++のゲームエンジンで育ってきた身ですし、それによる出会いもありました。DXライブラリにお世話になったという人は、ゲーム業界の中でもそこら中にいます。Ebitengineもそうなったらとても熱いですね。

それと、kyp さんと実際のゲームのコードを見ながらあれこれ話す会も開かれたりしました。貴重な機会ですし、私の方もつい熱が入っていろいろ聞いてしまいました(お世話になりました)。ゲームのコードはステートマシンを愚直に書く機会がどうしても多くて冗長になりがちだったり、いわゆる「シーン」に相当する機能をうまく設計するのが難しいなど、kyp さんの悩みに対して共感の嵐でした(笑)

プログラミング関係なく、ゲーム自体についていろいろと聞いたりもしました。原作小説はなかなか日の目を浴びることがなかったが、こうしてゲームの形で発表することで人目を引くことが出来て嬉しい、などなど。いい話がたくさん聞けて大変光栄でした。

結局だらだらと一時間半くらい延長して話し込んでしまいました。でもそれだけの熱量を感じる場だったので、本当に開催してよかったなと改めて思ったりしました。

ポスト/ツイートピックアップ

https://twitter.com/satorunooshie/status/1705172085851762864

https://twitter.com/mitsuaki1229/status/1705174559668994108

https://twitter.com/xiombatsg/status/1705181578987815282

https://twitter.com/nlog2n2/status/1705181736433574392

https://twitter.com/mitsuaki1229/status/1705183857815978033

https://twitter.com/the_uhooi/status/1705184174544757010

https://twitter.com/xiombatsg/status/1705187050339918007

https://twitter.com/tuyuri_dev/status/1705187877213368387

https://twitter.com/xiombatsg/status/1705189807457210767

https://twitter.com/nlog2n2/status/1705190067478933795

https://twitter.com/nlog2n2/status/1705190352951631885

https://twitter.com/bokusu/status/1705190788492296314

https://twitter.com/tenntenn/status/1705191317406695726

https://twitter.com/satorunooshie/status/1705191414114709793

https://twitter.com/ienagatoshiyuki/status/1705212582121054355

まとめ「これがきっかけで、Ebitengineに入門する人がたくさんいた!」

「ゆるい交流会」のコンセプト通り、いい意味で小さくまとまった、それでいて熱量が高くお互い話しやすい、いい会だったのではないかと思います!

配信トラブルの件は本当にすみません🙇アーカイブが復活するかどうかは未定です...。次回は必ずリベンジして、遠方の方にもEbitengineの良さをお届けしようと思いますので、何卒温かい目で見守ってくださると幸いです🙏

とにかく、参加者の方にEbitengineの良さを知ってもらったのももちろんですし、発表者の方が、いわゆるイベント駆動でEbitengineに初めて触れてもらえたのも非常に嬉しかったです。

今後も、Ebitengineの名前は知っているけど、実体はよくわからない、でもゲーム作りには興味がある! という入門前の方に向けた発信の取り組みを続けていって、より多くの方にEbitengine、そしてゲーム作りの楽しさを伝えていけたらいいなと思っています。

もし次回以降、こんなコンテンツがあったら嬉しいとか、要望があれば私か星さんあたりにフィードバックしていただければ、どんどん取り入れていこうと思っています!

それでは、いずれ来たる #2 にてお会いしましょう!

集合写真
集合写真(撮影時はマスク任意着用です)

スペシャルサンクス

  • 要所要所でいつもサポートいただいていた、Ebitengine開発者の星さん
  • Ebitengineをもっと広めたいという志を共にする、Odencatの Daigo さん
  • あちこちで可愛い!と評判だったロゴイラストの原作者であり、快く許諾いただいた Colmar Ponsuke さん
  • 豊富なイベント運営経験から、準備のほとんどで頼りにさせていただいた Peacock さん
  • YouTube チャンネルや connpass organization など気前よくお貸しいただいた tenntenn さんおよび一般社団法人 Gophers Japan の皆様
  • 当日てんやわんやしながらも全力で運営協力いただいた uhooi さん、higashi さん
  • 会場準備や諸注意など、陰の努力をものすごくしていただいたDeNAのエンジニアリング室の皆さん
  • オンライン配信を視聴いただいた皆さんと、現地でご参加いただいた皆さん!

本当にありがとうございました...!! 今後とも何卒よろしくお願いいたします!

Discussion