プログラマ向けゲームを作る技術
黒曜(@kokuyouwind)
$ whoami
-
黒曜
-
@kokuyouwind
-
株式会社Misoca
-
Rails/SREエンジニア
技術書典
技術書典
Programming Party
Programming Party
-
カードを使ってプログラム仕様を決定し、プログラミングするゲーム
-
毎回違う仕様が生成される
-
設計力・瞬発力・仕様の読解力
-
-
相互レビューして良いコードに投票
-
コミュニケーションゲームの側面
-
あるリポジトリからの脱出
あるリポジトリからの脱出
-
GitHubを使った脱出ゲーム(Web謎)
-
コマンドラインでコマンドを打って
謎解きをすすめる-
「歴史を書き換えて謎を解く」体験
-
-
エンジニアの知識を使った謎解き
-
原作ものの謎解きに似た文脈共有
-
プログラマ向けゲームをどうやって作るか?
(技術の話はほとんどない)
ゲーミングできそうなテーマを見つける
ゲーミングできそうなテーマ
-
FizzBuzzはいろんなアレンジが加えられる
-
割り切れる条件に使う数を変える
-
出力する文字列を変える
-
条件の種類を増やす
-
入力値を負の値に拡張する
-
etc...
-
ゲーミングできそうなテーマ
-
ゲーム自体のルールが変わっていくことをゲームにしたら面白そう?
-
e.g. : ルール追加大富豪
-
-
単純な基本仕様に追加仕様が積み重なる
-
Programming Party
-
ゲーミングできそうなテーマ
-
Gitの「歴史改変」自体がゲームっぽい
-
コミットを組み替えて正しい歴史にする
-
「間違った歴史に閉じ込められる」のは
脱出ゲームの設定にありそう
-
-
GitHubでWeb謎が配布できそう
-
あるリポジトリからの脱出
-
プレイヤー層を想定する
プレイヤー層を想定する
-
どういった層をターゲットにするか
-
そもそもニッチなので、絞りすぎると
誰にも遊んでもらえない -
ターゲットを広くするほど
使えるネタに制約がかかる
-
-
言語を絞らず初級者想定くらいが無難?
小さな課題で肉付けする
小さな課題で肉付けする
-
適切な難易度の小さな課題を作る
-
小さな成功体験による動機づけ
-
知識を活かせると楽しい
-
-
いろいろなネタを使う
-
中高レベルの数学、パズル
-
エンジニアの基礎知識
-
小さな課題で肉付けする
小さな課題で肉付けする
マクロヒープモックフラグ
コンパイラマージクロージャ
クイックテクノロジーアセンブラ
インタプリタバブルクラス
整列の次を読め
小さな課題で肉付けする
マクロヒープモックフラグ
コンパイラマージクロージャ
クイックテクノロジーアセンブラ
インタプリタバブルクラス
整列の次を読め
小さな課題で肉付けする
ちょっとした技術の話
ちょっとした技術の話
-
「正答」を入れたときだけ出力を得られる
-
謎解きではよくあるやつ
-
単なる暗号化・復号化でよさそう
-
-
複数の「正答」に別の出力を出したい
-
同じ謎を複数回解くのもよくある
-
どうやる?
-
ちょっとした技術の話
$ cat key
invalid
$ ./run.sh
error: invalid key
$ echo 'key1' > key
$ ./run.sh
これは正しいkeyです
$ echo 'key2' > key
$ ./run.sh
これは別の正しいkeyです
ちょっとした技術の話
#!/bin/sh
cd `dirname $0`
file=$(md5sum key | cut -c 1)
openssl aes-256-cbc -d -in data/$file \
-pass file:key
ちょっとした技術の話
組み合わせでちょっと変わったことができる
(シェル芸感)
まとめ
-
身近なものをテーマにして掘り下げる
-
想定層に合った小さな課題で肉付けする
-
ニッチなゲーム考えるのも楽しいよ
-
Programming Party Replay Book頒布中
-
BOOTHで売ってます(宣伝)
-
プログラマ向けゲームを作る技術
By 黒曜
プログラマ向けゲームを作る技術
もくテク Misoca 秋のLT大会
- 2,248