屋根裏

コードを書いたりします

2020年の振り返り ~技術編~

お久しぶりです。今回は今更ながら2020年の振り返り記事になります。

年末年始はCyberpunk 2077にハマっていて書けず、春休みに入ってから暇なときに少しずつ書いていたものの、もう4月になりそうだったので急いで仕上げました。

いっそ2020年"度"にしちゃおうか迷いましたが、来年書く内容が減るのでこのまま出します。

作ったもの

2020年に作って公開したもののまとめです。過去にブログ記事を書いたものは一言程度になってます。

ポートフォリオサイト

作った頃よりは充実してきましたが、もっとコンテンツ量を増やしていきたいですね。

stsmapgen

思いつきで作ったせいで名前がすごく適当です。結構反響があったので、ちゃんとした名前をつけるべきでした。

初めてスターが100になったリポジトリです🌟

Discordで通知するやつ

案外通知したいものがなく、いまだに学科掲示板の更新しか通知していません。

リモコン

今でも毎日使っており、自分が作ったプログラムの中でも一番実用的です。

Astraea

こちらもstsmapgenに続いて100スター到達しました!あるとき急にスターが増えたので誰かが紹介してくれたのかもしれません。


ここからは記事にしていないプログラムたちです。

BIB

SHIBUYA PIXEL ART 2020というコンテストに応募するために作りました。

こちらのページから遊ぶことができます。

f:id:yurkth:20210329195419p:plain

PICO-8という、レトロなゲームが作れる環境を使っています。

渋谷で待ち合わせをしていた宇宙人が間違えて原宿に降り立ってしまったため、渋谷を目指すというストーリーです。原宿に向かうゲームの中身はChromeのアレとほぼ同じになっています。

f:id:yurkth:20210329195435g:plain

コンテストの締め切り1,2週間前に作り始めたこともあって、BGMを作る余裕がなかったのが心残りです。

コンテストでは惜しくも受賞できませんでしたが、もぐらゲームスさんの記事で紹介していただきました。

Braille

インターンの、「外部ライブラリを用いずにC++を使ってCUIのゲームを作る」という課題で作ったゲームです。

f:id:yurkth:20210329195512p:plain

CUIのゲームだと似たり寄ったりのものが多くなってしまうと考え、ビジュアルには気を遣いました。

ドット絵の表現に点字を用いているのが特徴です。コンソール画面でドット絵を表現するには、文字の背景色の指定やSetPixel()などいくつかの方法があります。今回は敢えてCUIらしさを残すために点字(U+2800~U+28FF)を使ってみることにしました。

ゲームの内容はFlappy Birdです。本当はFlappy Birdをベースにしたシューティングゲームにしたかったのですが、時間が足りませんでした。時間配分には気をつけるようにしたいです。

当時作った紹介PDFがあったので貼っておきます(スマホだと少しレイアウトが崩れるかもしれません)。

箱詰めパズル

夏以降は忙しくてなかなかプログラミングができてなかったのですが、授業で箱詰めパズルのプログラムを作っていました。

箱詰めパズルとは、複数の正方形からなるピース(ポリオミノ)を盤面に敷き詰めるパズルゲームです。上の画像は6つの正方形からなるヘキソミノのパズルになっています。

授業で作ったメインの部分は、画像右下にあるボタンから呼び出せるヒント機能です。箱詰めパズルの解を探索して、ヒントを教えてくれます。

解の探索にはバックトラック法を採用しています。Dancing LinksとKnuth's Algorithm Xという手法を使うと、さらにパフォーマンスがよくなりそうなのでこれも近いうちに実装したいです。

まだGitHubでは公開していませんが、Algorithm Xの実装が終わったらあげる予定です。

気になったもの

最近気になった技術とかについてです。

Godot Engine

近年話題になっているオープンソースゲームエンジンです。GitHubgamedevタグがついているリポジトリの中でもトップのスター数となっています。

もともと2Dの開発に強いエンジンでしたが、最近のバージョンでは3Dの機能も続々と実装されているそうです。

なんと昨年のGMTK Jamでは、Unityに次ぐ使用率を記録しました。

実装にはPythonをベースにした独自言語のGDScriptを使えるほか、C++C#もサポートしています。

昔使っていたUnityは2Dの(特にドット絵の)ゲームを作るのが面倒だったので、そのあたりがかなり楽になってそうなGodotは気になっています。

Pixelbox

JavaScriptを使ってレトロなゲームが作れるゲームエンジンです。イメージとしては、BIBに使ったPICO-8をさらに拡張した感じでしょうか。

PICO-8で悩まされた多くの制限をゆるくしつつ、ピクセルパーフェクトな描画やパレットを用いたスプライトなどを扱えるのがすごく良さそうです。

1人で開発を行っているようなので、新機能の追加やバグ修正のペースが遅いかもしれないという点が気になります。

同じようなレトロなゲームを作れる環境(ファンタジーコンソールと呼ばれます)では、NICOquadplay✜も気になっています。

Svelte

最近登場したフロントエンドのフレームワークです。

Vue.jsやReactと比べても、とにかくシンプルに書けそうです。

まだ足りない機能も多いようで、大きいWebアプリを作る場合は向かないかもしれません。

いずれ作ろうと思っているSpratorのWeb版でこのSvelteを使おうか迷っています。

まとめ

2020年の後半は忙しくてあまりプログラミングができませんでしたが、今年は色々作っていきたいです。

いくつかゲームジャムに参加できたらなと思っていますが、卒論の忙しさ次第です。

記事後半のゲーム編はこちら。文章量的にはこっちが本編です。