$30 off During Our Annual Pro Sale. View Details »

テンションも揚げてこう! Ebitengine開発

lapis2411
September 23, 2023

テンションも揚げてこう! Ebitengine開発

https://gocon.connpass.com/event/292391/
の登壇資料です。

lapis2411

September 23, 2023
Tweet

Other Decks in Technology

Transcript

  1. テンションも揚げてこう!
    Ebitengine開発

    View Slide

  2. 自己紹介 藤原健(lapis2411)
    ・大学時代
    - DXライブラリ(C++)を使ったゲーム開発
    ・社会人
    - 車載組込開発(3年)
    - 機械設計&検査ソフト開発(2年)
    - ブラウザゲームバックエンド(1年)
    ・趣味
    - ボードゲーム
    Splendor 1000戦
    アルナックが好き
    Dice × Dice Politicsという
    ボドゲを製作

    View Slide

  3. ゲーム開発してテンションが上がることといえば?
    イケてるイラスト?
    めちゃ面白い企画?
    いい音楽?
    最高のチームメンバー?

    View Slide

  4. ゲーム開発してテンションが上がることといえば?
    もちろんこれもテンション上がるけど
    ゲームパッド使えたらゲームしてる感がでて
    テンションが上がらないですか?

    View Slide

  5. ゲーム開発してテンションが上がることといえば?
    それEbitenengineなら簡単にできます!

    View Slide

  6. 実装サンプル

    View Slide

  7. コード実装の説明
    func (g *GamepadInput) Update() {
    if inpututil.IsGamepadButtonJustPressed(0, ebiten.GamepadButton0) {
    // Aボタンが押された時の処理
    }
    if ebiten.IsGamepadButtonPressed(0, ebiten.GamepadButton1) {
    // Bボタンが押されている時の処理
    }
    if inpututil.IsGamepadButtonJustPressed(0, ebiten.GamepadButton7) {
    //startボタン押下時の処理
    }
    // 左コントロールスティックの入力量を取得
    av := ebiten.GamepadAxisValue(0, 0)
    g.axisValue = 0
    // デフォルトで微妙に倒れるので最小感度を設定
    if av < -0.3 || av > 0.3 {
    // 最小感度以上スティックが倒れた時の処理
    }
    }
    type GamepadInput struct {
    jump bool
    fastDrop bool
    axisValue float64
    pause bool
    }

    View Slide

  8. コード実装の説明
    func IsGamepadButtonJustPressed(id ebiten.GamepadID, button ebiten.GamepadButton) bool
    func IsGamepadButtonJustReleased(id ebiten.GamepadID, button ebiten.GamepadButton) bool
    ゲームパッドのボタン入力監視
    IsGamepadButtonJustPressed
    → 現在のTickでボタンが押下されたかどうか
    IsGamepadButtonJustReleased
    → 現在のTickでボタンが解放されたかどうか
    ボタンの状態が変わった瞬間のみ動作させたい
    →メニューの決定、ジャンプ
    inpututil パッケージ

    View Slide

  9. コード実装の説明
    func IsGamepadButtonPressed(id GamepadID, button GamepadButton) bool
    ゲームパッドのボタン入力監視
    IsGamepadButtonPressed
    → 現在ボタンが押下されたかどうか
    (その瞬間の状態がどうか)
    ボタンが押されている間(もしくは放されている間)動作させたい
    →ホバリング(ボタンが押されている間は少しずつ上昇、とか
    )
    サンプルではBボタンが押されている間落下速度の上限が上がる
    ebiten パッケージ

    View Slide

  10. コード実装の説明
    func GamepadAxisValue(id GamepadID, axis int) float64
    ゲームパッドのスティック入力監視
    GamepadAxisValue
    → スティックの倒し具合を-1.0~1.0の間で返す
    axis 0:左スティックX軸方向 1: 左スティックY軸方向
    スティックの倒し具合に応じて何かしらの処理をしたい
    → 移動、メニューセレクト
    ebiten パッケージ

    View Slide

  11. まとめ
    ● Ebitengine では関数呼び出しで簡単にゲームパッド入力が受け取れる
    ● 今回はサンプルで動けばいいやの実装なので、
    ゲームパッドが複数入力された場合にどうするか、
    抜き差しされた場合にどうするか、みたいな部分は別途考慮が必要
    → 公式のサンプル見たほうが早い
    https://ebitengine.org/ja/examples/gamepad.html
    ● PCゲームとしてのリリースを考えるなら入力周りの設計は工夫が必要
    ● 一応今回のコードは以下で公開してます
    https://github.com/lapis2411/ebitengine-game

    View Slide

  12. まとめ
    テンションも揚げ揚げでゲーム開発しよう!

    View Slide