mieki256's diary



2023/10/22() [n年前の日記]

#1 疑似3D道路その25

随分と日が経ってしまったけれど、 _前回の作業 の続き。HSP 3.6 を使って疑似3D道路が作れないか試しているところ。環境は Windows10 x64 22H2。

コースと言うか、道路のセグメントデータを、疑似乱数で自動生成するようにしてみた。コースを2周したら、またセグメントデータを生成し直して、別コースを走り始めるようにもしてみた。

フレームレートや仮想画面解像度を、.iniファイルから読み込んで設定するようにした。別PCで動かした際、処理落ちしないフレームレートや仮想画面解像度を探して設定し直さないといけなくなるだろうし…。.ini をメモ帳か何かで編集すれば、起動時のデフォルト値を変更できるようになったから、これで最低限のカスタマイズはできるだろう…。

そろそろある程度動くようになってきたので、ウインドウ表示ではなく、フルスクリーン表示をするように変更した。

コースデータの自動生成について :

コースデータと言うか、道路のセグメントデータは、以下の4つの値を並べていくことで生成される。
  • そのセグメントが何個続くかを示すカウント数
  • カーブ量(横方向の曲がり具合)
  • ピッチ量(縦方向の曲がり具合)
  • ビルボードの種類

また、乱数で急カーブが出現したら、そのカーブの直前に、カーブを示す道路標識のビルボードが出るようにもしておいた。

急カーブが出現すると、道路標識ビルボードを示すセグメントが増えるので、最初からセグメントデータの総数を決めておくわけにもいかなくて…。一旦セグメントデータを作ってみてから、全部でいくつになりました、と把握して、その個数分、新たに配列を作ってコピーし直す、という処理になった。そのあたりは、 _昨日の記事にメモ しておいた。

iniファイルの読み込み :

HSPでiniファイルの読み込みをするあたりは、以前使ったソースからコピペして対応。

_mieki256's diary - HSPでiniファイルの読み込み

フルスクリーン表示 :

HSPでフルスクリーン表示をするにはどうしたらいいのかググってみたけど、どうやら bgscr を使うのが一般的なようだなと…。

_OHDL - bgscr

この bgscr を使うと「枠無し」のウインドウを作れる。また、HSPが既に作ったウインドウを「枠無し」で再設定することもできるので、その「枠無し」ウインドウのサイズをデスクトップサイズと同じにすればフルスクリーン表示になるよね、ということらしい。

デスクトップサイズは、ginfo_dispx, ginfo_dispy で取得できる。

_OHDL - ginfo_dispx
_OHDL - ginfo_dispy

HSPは起動時に、ウインドウID=0のウインドウを生成するので、bgscr でウインドウID=0に対してサイズや表示位置を指定すればフルスクリーン表示になる。ということで、ソースの該当部分は以下のようになった。

    if FULLSCR_ENABLE {
        ; fullscreen
        screen_w = ginfo_dispx
        screen_h = ginfo_dispy
        bgscr 0, screen_w, screen_h, , 0, 0
        gsel 0
        cls 4
    } else {
        ; windows display
        ; get windows size
        screen 0, SCR_W, SCR_H, 0
        gsel 0
        screen_w = ginfo_winx
        screen_h = ginfo_winy
        cls 4
    }

ソース :

現状のソースは以下。

_road11.hsp
_road11.ini
_trees.png
_bg_2560x1440.jpg

以上、1 日分です。

過去ログ表示

Prev - 2023/10 - Next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project