gohud

ゲームで実際に使う形

← ウィジェット

見慣れたウェブの形を、ゲームがそこに求めるものを軸に作り直したものだ。

GoRewardCalendar — 毎日のログインボーナス

日付ピッカーがゲームで役に立つことは、ほとんどない。カレンダーの形は役に立つ — ログインボーナスだ。 そこで問題になるのは何日目かであって、何月何日かではない。

var attendance := GoRewardCalendar.make(days, claimed_until)
attendance.claimed.connect(func(day: int) -> void: server.claim_day(day))

押せるのは今日のマスだけだ — 押しても何も起きないボタンは、壊れていると読まれる。受け取り済み・今日・ これからの3つは、同時に3つの違いで見分けられる。チェックの記号、強調色の枠、そして暗さだ。

GoRadarGoDonut — ひと目で分かるステータス

var stats := GoRadar.make({"STR": 0.85, "AGI": 0.5, "INT": 0.3, "VIT": 0.7, "LUK": 0.45})
stats.set_compare(with_new_sword)          # 破線の重ね描き

var share := GoDonut.make([{"label": "物理", "value": 620}, {"label": "魔法", "value": 340}])
card.add_child(share.legend())

レーダーの値が 0〜1 なのは、どこを満点とするかがゲームの決めることだからだ — 素の STR 120 を INT 45 の 隣に置けば、嘘の形が描かれる。ドーナツの値は素のままでよく、割り算はこちらでやる。5つを超えた分はまとめ られる。6枚目の扇形は、誰にも読めない糸になるからだ。比較の線は色違いではなく破線で、凡例には 割合が文字で出る。

GoCarousel — バナーとキャラクター選択

banners.set_pages([promo, event, pack])
banners.autoplay_seconds = 5.0             # 既定では動かない

頼まない限り自分では進まないし、5秒が下限だ。3秒ごとに変わるバナーは、読み終える前に文字を持ち去る。 触れるとタイマーは戻り、reduce_motion にすれば自分から進むことは一切ない。点は小さく描かれる が、押せる範囲はタッチの最小寸法を保つ。

GoKbd — 嘘をつかないキー表示

hint.add_child(GoKbd.for_action(&"interact"))   # 実際の割り当てを読む

直接書き込んだ「F を押す」は、プレイヤーが割り当てを変えたあとも F と言い続ける — PC の UI でいちばん よくある嘘だ。for_action()InputMap を読む。その操作がパッドに割り当てられて いれば空を返してウィジェットは隠れる。「なし」もまた1つの嘘だからだ。Android と iOS では自分から隠れる。