12/15~21にかけて2025年度traP冬ハッカソンが開催されました。
我々のチームは『Super Ankars』というゲームを作り、最優秀賞を受賞しました。
メンバー
全員24Bです
- zoi_dayo (プログラマ・リーダー(?))
- sumire0517 (グラフィッカ・プログラマ)
- SyntaxError (プログラマ)
- YMAC (プログラマ・UIデザイナ)
- masu_kou (グラフィッカ)
- MP (サウンド)
- nemlos5 (グラフィッカ)
ゲーム概要
「オンライン4人対戦安価バトル」です
チャットツールのようなUIで「↓12」のような投稿が送られてくるので、互いにメッセージを送りあい、ちょうどその12個下に適切なメッセージを投稿できた人が勝ちです。
単にそれだけだとtraQ (部内チャットツール) で十分なので、いろいろスキルや演出を追加してあります。

ロール
マッチング完了時、4人のプレイヤーにランダムに「速攻」「自動」「妨害」「一撃」のロールが割り振られます。このロールによって、ゲーム内で利用できるアクティブスキルが変化します。

スキル
大きく「ノーマルスキル」「アクティブスキル」の2種類があります。ノーマルスキルはスコア増加など所持するだけで効果があるスキルで、アクティブスキルはクリックで発動するスキルです。
アクティブスキルはロールごとに3種類ずつ用意されており、ゲーム中に最大2つまで取得できます。

ゲームループ
マッチング成立後、チャットバトルを5ラウンド行います。各ラウンドは30秒継続し、時間が切れるまで安価が繰り返されます。
安価ごとに単語リストが提示されるので、リストに含まれる単語で安価を取得する必要があります。
各ラウンド前にはスキル選択があります。ノーマルスキルとアクティブスキルが合わせて3つランダムに提示され、そのうち1つを取得できます。

アクティブスキルの発動に必要なポイントは時間経過で取得できるほか、「ksk」と投稿することでも取得できます。ただし「ksk」は単語リストにないので、この投稿で安価を踏んでしまうと点が得られません。
技術的な話
メンバーの経験を考慮し、ゲームのフロントエンド本体はUnity、バックエンドはGoを利用し、接続はgRPCで行いました。
一般にUnityを用いたオンラインゲームというとPhotonなどのサービスを利用することが多いですが、今回は
- ゲームの内容的にはオンラインゲームというよりWebサービスに近い
- Goに慣れているメンバーがいた
- 外部サービスを経由することによるレイテンシを低減したかった
- (gRPCを使ってみたかった)
という理由でgRPCを採用しました。まともにgRPCを触ったことがあるメンバはいませんでしたが、開発開始3時間でUnity側でgRPCクライアントを動作させることに成功し、4日目のフロント・バック結合時にもまったく問題なく動作させることが出来ました。使いやすかったです。
メンバーの得意分野がバラバラだったため、YMACがフロントエンドのUI・アニメーション部分を、SyntaxErrorがバックエンドの全てを、zoi_dayoがフロントエンド側ロジックと接続を担当しました。MVPを人に割り当てたみたいなことになっています。MVP詳しくないので適当です。
(システムがWebアプリと酷似していることもあり) かなりきれいにタスクを分離して開発できたので良い方針だったと思います。
また、このゲームではメッセージの投稿順を競うので、「表示順の入れ替わり」が致命的な問題になります。ので、メッセージ送信時にクライアント側で仮表示する (Optimistic Updateって言うんですかね) ような機能は実装せず、タイムラインはすべてサーバーからの指示を受けてから表示ということになっています。gRPCによってイベントの通知順序は保証されているのでこれで大丈夫なはず...? です、たぶん。
感想
YMAC
まずは、ありがとう...
ひたすらUIを置いて演出を走らせるメソッドを数十個書く仕事をしていました
ほんまにオンライン関連のロジックを何も書いていないのですが、なんか知らんうちにサーバーとの連絡ができて知らんうちにオンラインゲームが完成していてマージでびっくりしました、ありがとう
割とこの2年間、最優秀賞を取ってやるぞというモチベでハッカソンに参加してきたので、今回最優秀賞が取れて超嬉しいです ブログが公開されるのがハッカソン終了一ヶ月後とかなので若干記憶が薄れつつありますが、 まじで嬉しいです ありがとう... ありがとう
SyntaxError
まずは、ありがとう
バックエンドを担当してました。
日程の都合で企画段階はほとんど参加できてなくてごめん…生活破壊して開発したから許して
バイトに行ってる間に神の企画が立ってました。
zoi君にとりあえずモック立てよかで作ってたのが、いつの間にか本番環境として動くようになってました。表に出る部分に一切かかわってない分、UI/グラと繋がった時の感動と複数人プレイが神のグラ、神のUI、神のサウンドで実現したときの脳汁は言葉では言い表せないです。
このチームで制作できて本当に楽しかった!ありがとう!!
MP
まずは、ありがとう
プランナーとBGM制作を担当しました!
この企画を思いついたとき、絶対に勝ったって確信するほど自信がありました。
ただ日数が経つにつれて適切なボリューム感なのか、ゲームが完成するのか、当日プレイヤーを4人集められるのか...とだんだん不安になってきてずっと重い気持ちでした。web系のことは何もわからないので、現状の進捗がよくわかっていなかったのも一因かもしれません。
だからこそゲームが動いたときはとても嬉しかったし、仕上げてくれたチームメンバーには本当に感謝しかありません。みんなのお陰です!!!!!本当にありがとう!!!!!!
sumire0517
まずは、ありがとう
グラフィックとロゴ、一部サウンド周りのプログラムを担当しました。
kskちゃん(自分のアイコンのキャラ)は1日目の夜ぐらいに急にイメージが降ってきて、そこから勢いで完成させました。めっちゃ可愛いですね。
メンバーのみんなには絶大な信頼を置いていたので、絶対良いものが完成するだろうと開発期間前から思っていました。Unity初心者の自分にも適切にタスクを振ってもらえたり、描いた絵を褒めてもらえたりしてずっと楽しかったです!ありがとう、心からのありがとう...
nemlos5
まずは、ありがとう。
グラ素材の一部を描きました。
なんだかんだ素材が出揃ったのは最後の方で、ちょっとメンバーに迷惑をかけたなと思っています。が、少なくとも過去に参加したハッカソンの中では1番メンバーに貢献出来たと思うので、そこは良かったなと思います。あとキャラデザは大変だけどやってみたらめっちゃ楽しかったです。
気がついたら爽快で楽しいUIの最強ゲームが出来ていて、メンバーの最強さを改めて感じました。僕の描いたイラストも上手く見せられていて感動しました。本当に、みんなありがとう。
ブログ書くの遅くなってほんまごめん。
zoi_dayo
まずは、ありがとう...!!!
gRPCの整備をしたり、Unityのデータ取り回しの部分をしたりしていました。
ぼーっとしていたら神のゲーム案が生えていて驚きました。初日にガッとgRPCの環境を整備したあとは、バックエンドの全てをSyntaxに投げ、演出の全てをYMACに投げ、その間を邪魔しないように繋いだりsumiさんにタスクを投げたりしていました。一番楽しいところですね。知らない間にリーダーということになっていてびっくり。
ゲームが出来て改めてチームの動きを振り返ってみると、すべてのメンバーがそれぞれの得意分野に注力できており、チームとして最高のパフォーマンスを出せたんじゃないかな、と思います。チームを組んでくれて本当にありがとう...!!
そして、ブログを出すのがめっちゃ遅くなって、すみません...