投稿記事

2019年 01月の記事 (4)

Heliodor 2019/01/31 20:06

イラスト練習中

最近サボリ気味なやつです。
18禁なので全体図はフォロワー以上で。

フォロワー以上限定無料

まずは無料プランで様子見を。 お気軽にフォローしてみて下さい。

無料

【 500円 】プラン以上限定 支援額:500円

このバックナンバーを購入すると、このプランの2019/01に投稿された限定特典を閲覧できます。 バックナンバーとは?

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

Heliodor 2019/01/28 21:10

ジョイスティック

プログラム話です。


突然ですが、私がゲームを作り始めた頃は右も左も分からなかったので、DirectX の入門書に書いてあった事に忠実に従って入力処理には Direct Input を使っていました。

ところが、とあるゲームを作った時に格闘ゲーム用の本格的なコントローラが認識されないという報告がありました。詳細は忘れてしまったのですが、調べてみたところ Direct Input では使えないゲームコントローラーが一部存在するということでしたので、「Direct Input ではなく Win32 API を使う」というマニアックな設定項目をオプション画面に追加したことがありました。

わざわざ Direct Input と Win32 API の両方で実装したわけですが、プログラム的には Win32 API のジョイスティック関数だけを使うのがシンプルで簡単なんですよね。なぜ Direct Input を使い続けたのかと考えてみたところ、「フォースフィードバックできるから」という、結局全く使う事の無かった機能のために選択した結果だったことを思い出し、次回作からは迷わず Win32 API だけを使うように変更しました。

余談ですが、プログラム的には普通のゲームパッド(ファミコンみたいな単純なものから、アナログスティックつきの豪華なものまで)はすべてジョイスティックコントローラーとして扱います。ファミコンのコントローラーのような明らかにアナログ入力できないものでも、倒したか倒していないかの2通りしかないアナログスティックとして扱います。数あるゲームライブラリでもコントローラからの入力を扱う部分には Joystick と名前がついている場合がほとんどですので、もしプログラマーが「ジョイスティック」とか言っていたらそれは普通にゲームパッドの事だと思ってください。

そんなわけで、プログラム的にはあくまでもガチのジョイスティックを基本にしているので、ゲームコントローラの処理関数とかには必ず「ハットスイッチの向き」を調べるものがあります。しかしハットスイッチなんてフライトシミュレーターで使うような本格的なジョイスティックにしか付いていないマニアックなボタン、ぐらいにしか思っていなかったので、使うことはないだろうと完全に無視してました。少なくとも自分が持っていた安物のゲームコントローラやテストプレイをお願いした人の環境ではそれで問題なかったのです。

で、ヴィータ大脱出をリリースしてからしばらくたった時、プレイステーションのコントローラが使えないという苦情が着ました。よく聞いてみると、PSコントローラーのアナログスティックでは操作できるが十字キーで操作できない、という事でした。その時になって初めて、アナログスティックと十字キーが両方ある場合は十字キーがハットスイッチとして働くという事を知りました。

試しにアナログスティックが付いている割と豪華なゲームパッドを買ってみて初めて気が付いたのですが、十字キーとアナログスティックのどちらががハットスイッチでどちらがアナログ方向キーになるのか、というのはゲームパッド側の設定で変えられるんですね。それがPSのパッドだとハットスイッチ固定になっていたという話で。

なので、ハットスイッチとアナログ軸の入力を両方調べて、絶対値の大きなほうを採用するようにし、一件落着しました。
(入力軸ごとに絶対値の大きなほうを見ているだけなので、例えば十字キーで上を入力し、アナログスティックで右を入力した場合は右上の入力として扱います。キーボードとゲームパッドで同時に操作した場合も同様です)

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

Heliodor 2019/01/15 19:25

近況報告

ぼちぼち作業を進めています。
風邪は良くなったのですが、たまに謎の眩暈(?)が起きたりして油断できません。なんなんだろうこの症状は……。

さて、以前にもちらっと書きましたが、ゲームに使うスクリプト言語には昔から lua を使っています。最初はPythonだったのですが、組み込みに(Cで定義したオブジェクトをクラスとしてPython側から使う手順)手間がかかるのと、ライブラリが結構大きいというか重くてやめてしまいました。何らかのバインダーを使えばよいのでしょうが、そこまでして使うのも……という感じで。luaはすごく軽くて小さくて使いやすいのですが、配列のインデックスが1起算なんですよね……。

そこで目を付けたのが Java Script ですよ。Java Script ならWebでたくさん使われているし、duktape というライブラリを使うと lua と同じ手軽さで導入できるので、以前から気にはしていたんですよね。あと Java Script ならプログラム経験が無い人でも多少はなじみがあると思うので、別の人にも手伝ってもらいやすいかな、と。

少なくともあやかし紅白戦では引き続き Lua を使いますが、その先どうするか、ちょっと迷い中です。



おまけ

https://twitter.com/helio_dor/status/1084156381496627201

正直ブルマーは紺色が最高と思ってましたがピンクも結構イケる気がしてきました。

フォロワー以上限定無料

まずは無料プランで様子見を。 お気軽にフォローしてみて下さい。

無料

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

Heliodor 2019/01/08 18:10

遅くなりましたが、明けましておめでとうございます

正月は風邪を引いてぐったりしておりました。
何だかすごくよく寝た気がします(笑)。

今年こそは新作アクションゲーム『あやかし紅白戦』を完成させられるよう頑張ります。
2019年もヘリオドールをよろしくお願いいたします。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

記事のタグから探す

限定特典から探す

記事を検索