投稿記事

無料プランの記事 (168)

Heliodor 2021/06/12 21:02

やりたい放題やりたい

ウ〇娘とか全然興味なかったんですが、ブルマーで走っている動画を観て俄然興味が湧いてきました。ヘリオドールです(挨拶)。

今回はプログラム話……のようでそうでもないような、ちょっとプログラム話です。




触手をちまちまと配置するのが面倒になって結局マップエディタでそういう機能を作ったのですが、一旦作り始めると色々なことをマップエディタでやりたくなるんですよね。


例えばゲームやりながら編集できたりするとすごく便利ですよね。
特に体力ゲージなんかの配置微調整とか。……マップエディタとは。


で、ひとつ思い出したことがあるのですが、その昔Smalltalk(マイナーなプログラム言語)を利用した Squeak という不穏な名前のアプリがありました。
それを実行すると仮想デスクトップが開いて、その環境の中でゲームしたりプログラムを実行したりできるのですが……。


ワリとやりたい放題できるんですよ。


どのくらいやりたい放題できるかというと、仮想デスクトップ内に適当なウィンドウがあるとして、そのウィンドウにはタイトルとかボタンとかリストとかが並んでいるんですが、そいうったウィンドウコントロールを選択して別の場所に移動したり、回転したりできるんですよ。

……ちょっと何を言っているか分からないですよね。
検索してみたら意外と最近(と言っても一年前ぐらい)にも更新されていたので、せっかくだからダウンロードしてきました。
https://squeak.org/downloads/

このリストから Windows 向けのファイルをダウンロードしてみます。ZIPを解凍してこの中にある squeak.exe を実行するとこんな画面が出ます。まさに仮想デスクトップですね。

で、このウィンドウ上でマウス中央ボタンをクリックすると、ウィンドウを取り囲むようにメニューが出てきます。

この右上にある茶色のボタンが「移動」ボタンです。このボタンをドラッグすると、ウィンドウも一緒に動きます。


さてここからが本題なのですが、この「気になるものの上で中央クリックしてメニューを出し、適当にいじくりまわす」ってのはウィンドウ以外のあらゆるものに対してできるんですよ。

もう一度ウィンドウを中央クリックしてメニューを出し、その状態でさらに中央クリックすると、どんどん内側にあるオブジェクトを選択していくことができます。



例えばウィンドウの右上に[+]ボタンがありますよね、最大化ボタンです。
このボタンの上で中央クリックを繰り返すと、そのうちこのボタンの周りにメニューが出てきます。

この状態で、茶色の移動ボタンをドラッグしてください。なんと[+]ボタンが移動するんですよ!!!
ただ、そのままだとボタンはウィンドウのタイトルバー領域から出ていかないですよね。
そこで、上部中央の黒いメニューボタン(野球のフィールドみたいなヤツ)を使います。
これはピックアップボタンと言って、オブジェクトを取り出すことができるやつです。

このピックアップボタンをドラッグすると、[+]ボタンがウィンドウの外に出ていくんですねえ。

しかもこの状態でもちゃんと[+]ボタンは最大化ボタンとして機能するんです。
同様にして、ウィンドウ右側にあるテキストの領域を選ぶと……。


取り出して回転させて…とかもできるんですよ。
ちなみにこの状態でちゃんとテキスト編集できます。

カオスやな……。


こんな感じでウィンドウもテキストもボタンも右クリックメニューもシステムメニューも全部リアルタイムで編集できるんですよ。もちろんその状態でもちゃんと機能します。



無駄に長くなったので無理矢理シメに持っていきますと、これぐらいやりたい放題のエディタをいつか作りたいですよね。そしてリアルタイムに配置デザイン。
……だいたい失敗するパターンですが。



おまけ

なんか検索してたらこんなの見つけました
https://www.nicovideo.jp/watch/sm9861469

Squeak の真面目な使い方はこっちで
http://www.src-j.com/books/pdf/203_pt.pdf








更に関係無いおまけ


3080Tiに続き3070Tiが発売になりましたね。
3080Tiは20万円前後とか相変わらずスゲェ値段ですが、なんと3070Tiは初動から10万円前後……安い!





んなわけあるか!!

RTX系は動作検証用に欲しいことは欲しいんですが……無理ですってこんな高いグラボ。







フォロワー特典は、冒頭の背景が実際に動いているところチラ見せです。

フォロワー以上限定無料

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

無料

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

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

Heliodor 2021/06/07 00:09

あまり参考にならないドット絵の描き方

ちょっと寝る前に作業するかなー、と雑務をしていたら無意識にコーヒー淹れて飲んでました。バッチリ目が冴えてきましたよ。そろそろ寝たいんですが……ヘリオドールです!(挨拶)



突発参考にならないシリーズです。

なんとなく後回しにしていた前回の告知画面の、主人公バージョンの絵です。


このジャージ着てる絵です。



今回は大き目の絵なので大雑把に下描きをします。



パパッと塗り潰していきます。
線画が雑過ぎてはみ出まくるので塗り潰しツールは使わず太いペンで適当に塗っていきます。



なんでこんな斜め構図にしたんやろな……?と過去の自分にツッコミを入れつつ下描きを消して細かいところを描き込みます。忘れてた右手も描き足し。

※普通のイラストは好きな角度で描いて変形したり回転したりできるんですが、ドット絵は90度以外の角度で回転するとぐちゃぐちゃになるので、斜めの絵はずっとその角度で描く羽目になります。






右手がなんかイマイチだったので退魔刀を持たせました。




先輩と並べてバランス確認。
身長が違い過ぎてよく分からないけど頭のサイズは大体合ってるのでまあいいか(雑)。





おまけ


それにしてもこの主人公、特徴無さ過ぎてハチマキ無いだけでも誰だか分からなくなりますね。ジム・カスタム?

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

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

Heliodor 2021/05/29 17:30

あやかし紅白戦 進捗確認版2(再掲)

進捗確認版2を調整したバージョンを、有料支援者向けに公開です。

ver0.71→0.80にアップデートされていますが、昨年の進捗確認版2を持っている方は、改めて課金する必要はありません。(当該の記事から今回と同じものをDL出来ます)


最近、過去記事を購入される方がたまにいらっしゃるので、せめて少しでも新しいバージョンを……ということで用意しました。

前回のものから、内部処理やゲームバランスは色々変わっていますが、目新しい追加要素はありません。


最終的には体験版として無料公開される内容のものですので、これだけのために課金はお勧めできません。ホントに。

フォロワー以上限定無料

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

無料

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

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

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

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

Heliodor 2021/05/26 16:41

白昼夢?

ちょっと気合入れて机とか冷蔵庫を動かして大掃除したら筋肉痛ぅぅぅヴォエェェアヴォエェェェ(痛い)、体鈍ってますねヘリオドールです(挨拶)。


今回は一応プログラムの話なのですが、昼間から夢でも見ていたのか?という摩訶不思議な目にあいました。


開発中のあやかし紅白戦なんですが、普段開発に使っているPCとは別のPC(ド〇キノート)で起動テストしてみたところ、何故か起動に失敗してしまいました。
といっても原因はありふれたものでd3dx9_43.dllが見つかりませんというヤツです。

開発PCは色々なものがインストールされまくっていて、逆にド〇キノートはほぼWindows10クリーンインストール状態。
こういう、何かが足りない系のエラーを確認するのに実に便利です。



……いや、でもおかしい。

ライブラリには DirectX SDK 2004 を使っているから d3dx9_43.dll への依存は無いハズなんですが……。


当サークルのゲームでは DirectX9 のライブラリに最新版ではなく 2004 年版の DirectX SDK 2004 october を使っています。
なぜかというと、これが d3dx9_XX という DLL を必要としない最後のバージョンだからです。

これ以降のライブラリを使って開発した場合、実行時に d3dx9_26.dll とか d3dx9_43.dll といった DLL がインストールされている必要が出てくるんです(最後の2桁の数字はバージョンごとに変わる)
これらは Windows 10 に標準でついているわけではないので、この DLL に依存したゲームをする場合は自分で最新版の DirectX ランタイムライブラリをインストールしなければなりません。

試しに「d3dx9_43.dll 見つからない」でググると分かりますが、市販のゲームでも同人ゲームでも、この「d3d9なんちゃらdll がなくてゲームが起動できない」という問題が実に多いんですよ。

そんなわけで避けられるトラブルは避けるべく、これらの DLL が無くてもゲームが動くように敢えて古いバージョンの DirectX9 を使っているわけです。



で、話は最初に戻りますが、そういう事なので d3dx9_43.dll が足りないというエラーはちょっと変なんですよね。

おかしいな?と思いつつも d3dx9_43.dll をコピーして再度ゲームを起動してみると、今度はXinput1_3.dll がありませんというエラーが出てきました。



XInput なんて使ってないぞ……??

XInput というのはゲームパッドなどの入力機器を扱うライブラリで、DirectInput の後継的な存在です。が、あやかし紅白戦ではゲームパッドの処理に Win32API を使っているので XInput に依存するはずはないのです(Win32API が内部で XInput を使っている可能性も無くはないですが……)

念のためライブラリなどの設定を確認して、キャッシュなどをすべて削除し、クリーンビルドしてみたのですが結果は変わらず。
となると、どこかの時点で思いもよらない場所の設定を変えてしまったのか??


こういう時の常套手段は過去のソースコードに戻して動作確認してみることです。こんなときのための GIT ですよ。
というわけで戻しながら確認してみたところ、4月16日のバージョンからおかしくなっていることがわかりました。


だがしかし。

このときの変更内容って、ソースファイルのフォルダを移動したってだけなんですよね。

それまであやかし紅白戦のソースコードは C:\Ayakashi\ay というフォルダに入っていたのですが、この ay というフォルダが冗長なので ay の中身を丸ごと一つ上のフォルダ C:\Ayakashi に移動したんです。

ソースツリー丸ごとの移動なのでソースコード自体は何も変わっていませんし、インクルードパスも変わっていません(相対パス指定なので)変わったのはプロジェクトファイル内に記述されている、ソースファイルの絶対パスぐらいです。


フォルダを移動する前と後で一体何が違うのか……?
GIT と CMake それに Dependencies を駆使しながら確認してみると、非常に奇妙な結果になりました。


C:\ayakashi\ay にソースコードがある状態でビルドすると d3dx9_43.dll 依存なし、xinput1_3.dll 依存なしの exe になる
(d3dx9_43.dllとxinput1_3.dllが無くても起動する)

C:\ayakashi  にソースコードがある状態でビルドすると d3dx9_43.dll 依存あり、xinput1_3.dll 依存ありの exe になる
(d3dx9_43.dllとxinput1_3.dllが無いとエラーが出て起動しない)



どういうこっちゃ??

ひょっとして ay という名前がピンポイントで特別な意味があるのかと思い C:\ayakashi\ayay にソースコードを置いてみると、
今度は d3dx9_43. dll 依存あり、xinput1_3.dll 依存なしの exe ができました


/(^o^)\



まとめると

C:\ayakashi    d3dx9_43依存あり  xinput1_3依存あり
C:\ayakashi\ay  d3dx9_43依存なし  xinput1_3依存なし
C:\ayakashi\ayay d3dx9_43依存あり  xinput1_3依存なし

ということです。

この段階で原因究明開始から5時間ほど経過していて、もうやる気もゼロです。
ああ、もうムリ……というわけで力尽きて就寝。



そして翌朝―――。

昨日のあのワケ分からない状態は何だったんだ???
と、再びクリーンビルドして試してみたらなんと……

C:\ayakashi    d3dx9_43依存なし  xinput1_3依存あり


はい?

いやいやいやいやいやいや、そんなわけないでしょ。
昨日あれだけ苦労したのに。


そして、どんなにフォルダ移動して試してみても

d3dx9_43依存なし  xinput1_3依存あり

の状態は変わらなかったのです。


……うん、もう忘れよう。きっと夢だったんだ。

とりあえず d3dx9_43 への依存が無くなったのでヨシ!ですよね。

で、なぜ xinput1_3.dllに依存しているのかというところに絞って調べていたのですが、結局デバッグ用に使っている GUI ライブラリ ImGui が内部で XInput の関数を使っていて、

#pragma comment(lib, "xinput") 

という pragma が埋め込まれていたのが原因だった、ということがわかりました。
この行があるから xinput の DLL がリンクされてしまったんですね。ImGUIのゲームパッド関係の機能は全く使っていないので、それらを丸ごと無効化するために

IMGUI_IMPL_WIN32_DISABLE_GAMEPAD

を定義するようにしておいて問題解決です。


……というか、この設定をしていなかったのに「xinput1_3.dll依存なし」になったことがあったけど、あれは一体……一体何だったんだ……。





分かる方がいらっしゃいましたら、是非教えてください。ワリと本気で。

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

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

Heliodor 2021/05/13 18:24

雑談

どうでもいい系の話です。


銀行のカードにヒビが入って今にも割れそうな状態(※一応ATMでは普通に使える)になってしまったので、正直に「今にも割れそうだから」と理由を書いて再発行申請したら係の人が噴き出してました、ヘリオドールです(挨拶)。
ちなみに、ちゃんと新しいカード発行して貰えました。




さて、今回はこれ。


スナック菓子用トングというものを買ってみました。

これを使うとポテトチップとかポップコーンとかを手を汚さずに食べられるという画期的な商品。箸でいいじゃんと思った。じゃあなぜ買ったのか。





せっかく買ったので使ってみる。




すぐに面倒臭くなる。




更に面倒臭くなる。




どうすればいいんだコレ……。


一瞬「焼き肉に使えるかな?」と思ったんですけどプラスチックなので溶けますよね。

キャンプとかに箸の代わりに持っていく……?いや、やっぱり箸でいいな。



本当に何で買ったんだろう……。










ポテトングとは全然関係無いおまけ

よく聞かれる「あやかし紅白戦はいつ完成するんですか?」という質問ですが、正直私にも分かりません。

むしろこっちが知りたいです。



……と思ったら、ツイッターで闇の占い師さんが占って欲しいことを募集していたので占ってもらいました。

https://twitter.com/helio_dor/status/1392433779189239818
https://twitter.com/eroma_amore/status/1392443066829524992

さんかげつ……三か月後!?マジか




女帝……女帝か……。


※特に意味は無い






https://ch.dlsite.com/matome/122438
闇の占い師さんはここで占いしてくれるゾ!

https://twitter.com/eroma_amore/status/1392735511274344448
なんと言うか本当スミマセン。

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

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

1 2 3 4 5 6 7

限定特典から探す

記事のタグから探す

月別アーカイブ

記事を検索