ティラノカップ

【ハックツハッカソン ティラノカップ】ガベージコレクタ

https://github.com/raiga0310/hackz-hackathon2023

Next.js

GitHub

TypeScript

React

Node.js

Rustの型をガベージコレクタが開放する弾幕STG

ライガー

推しアイデア

CPU上のガベージコレクタが弾(メモリ解放)を放ち残留物を掃除する3人称弾幕シューティングゲームです。 学習コストの高いRustに慣れ親しんでもらうために開発しました。ゲーム内の敵の名称やギミックは、Rustの型から発想を得ています。

作った背景

Rustの型の理解のハードルを下げたいと思ったので、ゲームでわかりやすくしようと思ったから。 またゲーム開発自体をほぼしたことがないため、フロントエンドの勉強とゲーム開発の体験を兼ねて作ることを決めました。

推し技術

ブラウザの機能を用いるためのWebGLライブラリ、Babylon.jsを使用しています。 Next.js上に実装しているため、Vercelを用いて簡単にサイト上にデプロイしています。

プロジェクト詳細

Garbage-Collector

説明

GCのない荒れた世界、Rust。普段は厳密な所有権のシステムやライフタイムによってRustceanは平和な開発を享受していた。しかしなぜかそのシステムが壊れてしまい、メモリ空間に大量の残留物が残ってしまう!! そんな緊急事態にあなたたち ガベージコレクタ(GC) は立ち上がる!メモリリーク、だめ、絶対。

採用技術

フロントエンド React.js(Next.js) バックエンド Vercel KV(Next.js) 描画フレームワーク Babylon.js ホスティングサービス Vercel(Cloudflare(URLリダイレクト))

その他 pnpm, node.js, git/GitHub

ゲームルール・操作方法

難易度

画面のリフレッシュレートを切り替えることで難易度選択が可能です。

  • かんたん: 30
  • ふつう: 60
  • ゲキムズ: 120

ゲームルール

GCのあなた達はfree()弾をメモリ残留物に当てることでガベージとなってしまったデータを消去することができます。GCはメモリ管理に長けているので、もちろん当たらなかったfree()弾は空間の端に行けば消去されます。意図的な多重開放などあってはなりません。

メモリ残留物は自らの意志ではなく執念により開放を拒むでしょう。自身のデータを用いて残留物を放ってきます。これに一定回数当たってしまうと予期しない動作を引き起こしてしまいオーバーフローとなってしまい、任務失敗となります。

操作方法

  • 左右移動
    • あなた達はアドレス空間上を左右に横断できます。移動する際には「←」「→」キーを用いて移動しましょう。
  • 中断
    • 任務は確実に成功させなければなりません。もし十分に任務遂行ができないと判断した場合、「P」キーを押すことでポーズ画面に映ることができます。

プレイ画面

image

image

image

注意事項

このゲームはRustの型システムやメモリ管理などに対して親しみを持ってもらうために制作しましたが、このゲームのシステムそのものがRustの型システムをそのまま反映したものではありません。正確な仕様についてはAPI referenceおよびドキュメントサイトを御覧ください。

ライガー

@raiga0310