見出し画像

イオン鯖Hackathon2024 に参加しました

ぽんぬさんが企画立案運営を行い「ゲーム」をテーマに8チームのべ14人(含むAI)の参加者(なんか主催しながら参加したすごい人がいるらしいです)が5/18~6/1の二週間にわたって開発を行いました。皆さんお疲れ様でした。筆者もチーム「floor × ceiling」で地球ネコさんと参加しました。

筆者は趣味プログラマを含めれば20年近くコードを書いていてかつゲーマーなので、ここで出ねばアザラシが廃るということで、チームを立ち上げて馳せ参じることとなりました。

最初はそういう「やってやろうじゃん」という気持ちからでしたが、やり始めてみると本当に楽しく、充実した二週間でした。次回があればまた参加しようと思います。このような場を作ってくれたぽんぬさんには本当に感謝です。ありがとうございました。

イオン鯖Hackathon2024

Hackathonはともかく「イオン鯖」ってなんぞやというと、招待制の半クローズドな大規模ディスコードサーバーです。ユーザー層はゲーマーをボリュームとするオタクが中心なのでHackathonもバッチリ成立しますね。

採点は参加チームの代表者1名と有志の審査員が技術点1点、アイディア点1点の計2点の持ち点を投票します。発表に辿り着けた6チームの代表者6名と審査員3名による投票の結果、チーム「floor × ceiling」はアイディア点でトップを取りつつも二位となりました。二週間でフルグラフィックBGM付きのローグライトRPGを作ってきた人が居て、技術点がもりもり入っていました。私もプログラマとしてこれに技術点を入れないわけにはいきませんでした。すばらしいです。優勝チームの「インターネット総菜屋出張店(仮)」白鳳さんおめでとうございます。

他にもコーディング未経験から全部AIに聞いてクリック連打ゲー(“気付いたら”クッキークリッカーみたいになってたそうです)を作ったチームもあって、いやはやすごい時代になりました。


作ったもの

こちらが開発した作品と発表資料です。

詳しいことは資料で語っているのでここではざっくりと説明しますと、「要素を増やせば増やすほどスコアが伸びるけど、要素を増やすほど注意力を要求されるので難しくなる」ジレンマをマネジメントして高スコアを目指すローグライトです。

どうしてこういうゲームを作ったのか

Hackathonのスレッドで雑談中に《書かれざるものの視認》でめくれてきたゲームをそのまま作りました。

日本語版《書かれざるものの視認》カード画像

平易な表現に直すと、雑談中に自分で書いた「ADHD虐殺ゲー」というキーワードをきっかけに基本的なアイディアが全て降ってきました。日々そうやって生きています。

絶対に面白いという確信をその時点で持ったので、まずは動くことをゴールに設定して、見た目はストレッチゴールにしました。これがストレッチしきらなかったのが2位に終わった原因のような気がしますが、優先順位の付け方は間違ってなかったと思います。

技術選定

かなり初期の段階からhtml + JavaScriptで開発すると決めていました。

とにかく、プレイしてもらえば勝負できる、プレイしてもらえないと話にならない、プレイした審査員を破壊すれば勝てる! というゲームだと思ったので、プレイまでのハードルは可能な限り低くしたかったです。そのためには、「圧縮ファイルをダウンロードして展開して実行ファイルをポチー」なんてことは許容できません。URLを貼って、そのURLを踏めばプレイできるぐらいの手軽さが必要です。Hackathonに参加する人や有志で審査員をやってくれるような人は一通りやってくれるとは思いますが、万全を期そうと考えました。

URLを踏めば動作するという条件なら他にもCGIやJavaアプレットなど選択肢はありますが、動かすだけならテキストで完結するゲーム内容であることや、データベースを扱うなどのサーバーサイドで動かさないといけない理由もないため、htmlで用意したものをJavaScriptでガチャガチャ動かすのが最適なスケールであろうと判断しました。

環境構築が死ぬほど楽なのも良い点でした(テキストエディタで編集してブラウザで開けば動く)。

使用ツール

Discord

連絡用に作成しました。メンバーが二人ともDiscordの操作には慣れていたので良い選択でした。

チャンネルは、デフォルトのテキストチャンネルの他に、調べて見つけたパクれそうなコード参考になりそうなページを貼る「調べ物」と、リーダー(筆者)が思い付いたことをそのまま全部垂れ流す「brainstorm」を作成しました。

GitHub

コードを共有して開発するにはこれが良いという噂を聞いて導入しました。メンバーが二人ともミリしらだったのでさぐりさぐり使っていたような気がします。趣味も含めて20年プログラマやっててGitHub触ったこと無いなんてあるか?

ブランチを切ってプルリクエストを出してマージしてとやっている横でどしどしmainにコミットが飛ぶなど、ギリギリの秩序でしたが、この状況に対してリーダーは「自分がブランチ切ってるならええか」とそのままにしていました。悪いリーダーですね。

サクラエディタ

ちょうどそこに転がっていたので抜擢されました。容疑者は「テキストエディタなら誰でも良かった」と供述しています。想定開発規模的にサクラエディタで十分だろうという舐めはありました。

強調キーワードを入れることをすっかり忘れていてメモ帳に毛が生えた程度のエディタになっていましたが、高校生の時にJavaScriptを全て理解した時もメモ帳で書いていたので、由緒あるエディタに戻ってきたと言えるのではないでしょうか[要出展]。

メモ帳

休み時間に書こうと思ったら職場のPCに入っているテキストエディタっぽいものがこれでした。仕事でコードを書いていないとこうなります。

メモ帳に毛が生えた程度のエディタで書けるのならメモ帳でも書けるだろうと思ったのですが、職場のPCの環境が壊れているのかアンダースコアがメモ帳で開くと見えないというすごい罠があり、これで一時間ぐらい嵌まりました。これは想定外でした。まさか生えてる毛が重要だったとは……。

EmEditor

Microsoft Storeに「テキストエディタ」と入れて一番上に出てきたエディタです。容疑者は「テキストエディタなら誰でも良かった」と供述しています。

そのままでJavaScriptのキーワードを色分けしてくれてここまでで一番やり易かったです。

FFFTP

流石に令和の世にFFFTPはないだろうと思って、とりあえずFileZillaを入れようとしたら、なんかインストーラーがMicrosoft Defenderに弾かれて全てが面倒になってFFFTPを入れました。

これは本当に令和のHackathonですか?

っていうかGitHubにおいたhtmlをそのまま表示できるサービスなんてあったんですか!?

実際の開発

リポジトリが立つまで

開発スタートの5/18(土)の朝8時にディスコード鯖を立て地球ネコさんを招待しました。ここから開発スタートです。

リーダーの自分は高校生の時にJavaScriptを全て理解しているのでバリバリ書けますが、地球ネコさんはhtmlも初学者のようだったので、バリバリ書ける人がバリバリ書くだけなのはHackathon的にどうなんだろうという思いがあり、ひとまずは調べ物とネタ出しに徹しました。自分がバリバリやれば一週間ぐらいでできるだろうという根拠の無い直感があったので、慌てるのはそこからにしようと思っていました。

地球ネコさんが「『カード並べて、そこから任意の枚数を選び、選んだカードになんかする』ってポーカーのカード交換だね」という世紀の大発見をするなど調べ物は順調に進み、パクリ元パーツ取りするソースとしてグラブルのポーカーをJavaScriptで再現したものと、JavaScriptで組まれたタイマーを確保して開発の準備は万端。

順調な開発を報告するリーダーの様子

なんなら発表資料も作り始めるぐらいでした。

コードの前にパワポを作る上流工程のSE

そしてそこからしばらく静かに時が流れ、5/25(土)。流石にそろそろ慌てる時間というところに地球ネコさんがカードを選んでFizzBuzzしてスコア計算するところまで書いて持ってきてくれました。とてもすごい。ここで初めてリポジトリが作成され、本格的な開発がスタートしました。

ちょっとした問題

当初の予定では「htmlで用意したものをJavaScriptでガチャガチャやる」つもりでした。ところがリポジトリに入ってきたコードは「JavaScriptでガチャガチャやって全てのhtmlを出力する」ものでした。これはかなり話が違ってきます。この事態に対してリーダーは「うごくしええか」とそのまま行くことにしました。拘りたいのはそこではないですからね。

他にもちょっとした問題として、リーダーの自分が仕事の日(水曜日でも土曜日でもない日)にあまりコードを書けないことがわかってきました。しかし、チーム「floor × ceiling」はメンバーが二人です。

頼りになったことを報告する様子

書き散らかしたイシューを次々と解決していくのが本当に頼もしかったです。このチームなら完成まで行けるという根拠のない直感がうまれました。

本当に助かりました。ありがとうございます。

開発終了まで

明瞭な仕様が存在するロジック部分を地球ネコさんがメインで担当し、リーダーの自分が漏れたところをカバーしたり、見た目をせめてカードショップには行ける程度まで整える部分を担当しました。ストレッチしきらなかったと書いた通り、黒人セキュリティに「ノーカードショップ!」と止められそうな見た目になっています。

最終的に全てのイシューをクローズしたのが発表16分前の20:44、発表資料はそれよりちょっとだけ早く20:35に完成。かなりギリギリまで走ることになりましたが、なんとか完成して発表を迎えることができました。

発表

開始10分前になってもどこのボイスチャンネルでやるのかアナウンスがなく、とりあえず地球ネコさんと白鳳さんといた雑談チャンネルへ。ハースストーンのわんこを見ながら雑談しているも、開始5分前になってもどこにボイスチャンネルでやるのかアナウンスが無い状態。これが弊アリアンロッド鯖のセッションなら何も慌てないのですが、そうではないのでちょっと心配になりました。

その後無事に会場がアナウンスされて続々と移動。その後はとてもスムーズに進行していきました。発表順は事前に決定済み(とても偉い!)で、チーム「floor × ceiling」は最後から2番目(実際は当日の進行トラブルで最後から3番目に)。発表資料は出来ていましたが練習は一切していなかったので持ち時間の5分に収まるか全く不明でした。いうて5分って長いよというつもりでどーんとぶつかっていきましたが1スライド収まりませんでした。これは仕方ないです。

発表資料は面白いものを作った自信がありましたし、発表中の手応えも良かったのですが、トリを担当したチーム「シンギュラリテイギ」の発表がとてもすごく、すごかったです。発表点があったら間違いなくここに入れてました。素晴らしかったです。

フリープレイタイム

「プレイしてもらえば勝負できる」という気持ちで来たので、ここからが本番です。早速きっかんさんが手札を15枚にして爆散したのを報告してくれるなど好感触で、短い時間にも関わらずたくさんの人に遊んでもらえました。

ありがとうございました。

投票

「ディスコードのDMとかで投票集めるのかなあ~」とかぼんやり思っていたらGoogleのアンケートフォームが出てきて、確かにそれじゃんとなりました。発表会の中身の段取りはしっかり練られていた印象です。

エンジニアとしての責務で技術点は二週間でフルグラフィックBGM付きのローグライトRPGを作ってきたチーム「インターネット総菜屋出張店(仮)」に入りました。

問題はアイディア点で、単純に一番面白かったのはチーム「シンギュラリテイギ」だったのですが、面白い部分が発表に非常に偏っていて、これはゲームの面白さだったのか?という疑問があり、かなり悩みました。

最終的に私の思う「アイディア」を一番体現していたチーム「ゲームマスター」へ投票しました。一見してウケ狙いの「ベイブレード」というテーマ選択が、ド派手で目まぐるしい画面を演出しつつ、実は入力は最初に一回取るだけであとはすべて物理シミュレーションで済む簡潔さを両立させている。これはまさに「アイディア」です。

投票結果

冒頭で紹介した通り、優勝したチーム「インターネット総菜屋出張店(仮)」に次ぐ2位でアイディア点ではトップとなりました。

絶対に面白いゲームを動くように作ったし、面白い発表資料を作って、それを元に面白い発表をした自信はありましたが、それがしっかり面白いと評価されたのは嬉しいです。書きながらじわじわどんどん嬉しくなっています。

やったー!

お知らせ

チーム「floor × ceiling」は3人目のメンバーとして白鳳さんを迎え、ゲームグラフィックの刷新を行います。

今度ともチーム「floor × ceiling」をよろしくお願いいたします。

いいなと思ったら応援しよう!