サルでもできるスロゲー開発

■ このスレッドは過去ログ倉庫に格納されています
2006/05/09(火) 12:12:09ID:xv32xIQn
スロットゲーム制作の総合スレです。

以前はスロットサロン板でやっていました。

・・・・過去ログ・・・・
サルスレ用保管庫(仮)
ttp://rerebo.hp.infoseek.co.jp/

・・・・資料サイト・・・・
サル部屋
ttp://www.deepgreen.jp/~saru/

・・・・関連リンク・・・・
フリーソフトの面白いスロゲーを紹介しる 機能してないまとめページ
ttp://pachihell.at.infoseek.co.jp/suroge/index.html
2006/05/29(月) 01:34:59ID:4JncQT1h
つまらない事なんですが暇な方がいらっしゃれば聞いてください
一般に確率論では分母が大きくなる、小さくなるにかかわらず
確率が同じであれば分散はもちろん確率も等しくなりますよね。
たとえば300/900と1/3では当然確率は両者とも1/3で分散も変わらないはずです。
プログラムでも同じことが言えるのですか?
今日大当たりの乱数についてテストしてみたのですが
同じ1/200でも1/200と328/65536ではどう考えても後者の方が確率に近似して
前者の方が確率よりも低い確率で出るような気がします。
これは私が勝手な妄想してるだけなんですかね?
プログラム上の特質(乱数に弱い?)なのですか?

ながながと長文すいません。
109某作者
垢版 |
2006/05/29(月) 02:16:12ID:KfyOoN0T
>>107
いや、ROMって無いで何か書こうよww

>>108
確率が収束する為には
試行回数≒無限、ってのが基本になります。
局所的に見ればムチャクチャ発散したりしなかったり
とかって事は良くある事です。
あまり(・ε・)キニシナイ!!

ついでに
HSPでの乱数生成ロジックがどうなってるのか知りませんが
ソフトウェア乱数には基本的に循環性があります。
無い奴もありますが…
ので、乱数=乱れた数字
というふうには考えないほうが良いとです。
僕的には、乱数=適当な数字
って考えてます。

まぁ、分かりやすく言うとあれだ



 気 の せ い



2006/05/29(月) 02:50:48ID:KzhutP8H
>>108
まず、1/200 < 328/65536 です。

充分多量のサンプルでテストしたなら、結果を信じるしかないでしょう。
「その」プログラムの特質と。


ついでに。
プログラムだけで「本当の乱数」を作ることはできません。
プログラムというものは、予め書かれている通りに動作するものだから。
というか「本当の乱数」は数学上定義されていません。定義できません。
「でたらめな列」という概念の方が先にあるから、でたらめである必要充分条件を限定できない。

適当なところで妥協するしかないですよ。
2006/05/29(月) 03:06:10ID:4JncQT1h
深夜にレスありがとうございます。
テスト量が足りなかったのかもしれないし、気のせいかもしれません。
乱数についてもよく分かりました。
とりあえず寝てる間に軽くデータとってそれからどうするか考えることにします。
つまらない質問に答えていただきありがとうございました。
2006/05/29(月) 04:31:07ID:OA9A5OL/
>>111
過去スレでも話題にあがり現にHSP用DLLを数人の職人さんが採用している「メルセンヌ・ツイスタ」
が乱数生成には良いようです。

ttp://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/mt.html

良い点の抜粋

.従来の様々な生成法の欠点を考慮して設計されています。
.プログラムはCで実装されていて、このホームページからダウンロードできます。
.従来にない長周期, 高次元均等分布を持ちます。
 (周期が2^19937-1で、623次元超立方体の中に 均等に分布することが証明されています。)
.生成速度がかなり速い。(処理系にもよりますが、
 パイプライン処理やキャッシュメモリのあるシステムでは、
 Cの標準ライブラリのrand()より高速なこともあります。なお、
 開発当時にはcokus版はrand()より4倍程度高速でしたが、
 その後ANSI-Cのrand()がLCG法からlagged-fibonacciに変更されたこともあり、
 2002年現在randとMTの速度差はあまりありません。)
.メモリ効率が良い。
 (32ビット以上のマシン用に設計されたmt19937.cは、
 624ワードのワーキングメモリを消費するだけです。1ワードは32ビット長とします
2006/05/29(月) 09:58:15ID:drHVnh1h
>>112
こいつを空読み含めてぶん回せば問題ないかな?

そもそものスロ実機での機械乱数と称するものは
基本的にカウンタを速度でぶん回しているだけだし。

あ、開発の方は止まってます。
生存報告だけ。
2006/05/29(月) 14:26:30ID:J0jHrkkS
HSP用の乱数生成プラグインは、サルスレ保管庫にも置いてあるexrand.dllで問題ないでしょう。
ttp://rerebo.hp.infoseek.co.jp/
HSP3.xはわからないけどHSP2.6xの標準乱数命令は見るからに偏ってしまって使えないものでした。
なので、>>108はHSPの標準乱数命令を使っているのだったら気のせいじゃない。
標準乱数命令は>>108の言うとおり、分母の数値が小さいと明らかに偏ってしまう特性がある。
詳しい中身は知らないけど、素直に上記のexrand使ってればいいんじゃない?

>>113
>そもそものスロ実機での機械乱数と称するものは
>基本的にカウンタを速度でぶん回しているだけだし。

今はそうみたいね。
少し前はソフトウェア乱数だったのに。
さらに前は今と同じくカウンタ。
時代は繰り返すのね(?)
2006/05/30(火) 19:56:58ID:YNgVa+4s
おお…懐かしい先輩方の名前がちらほら・・・

ところでどなたかHSP3.xで制作されているかたいらっしゃいませんか?
開発を始めてからexrand.dllが使えないことを知ったので今苦戦しています。
今は32768からさらに2分の1抽選することでプレミアなどを抽選しているのですが、
どなたかexrand.dllに変わる便利なものを知ってる方いらっしゃったら教えてください。
2006/05/30(火) 20:06:54ID:+QFf4eIj
>>115
FreeBasicで作成したMTwisterのDLLサンプルですが使えたら使ってね。

ttp://fortunehill.ld.infoseek.co.jp/sample/mtrnd.lzh
2006/05/31(水) 00:48:30ID:hqZGeUNb
>>115



乱数?
メインループが一つしかないので
ぶんまわってるcntを使って
少し小細工して使用してます。

偏り?少しはあったほうが面白いので(・ε・)キニシナイ!!
確率は実機と同様にしてますよ、エェ。

プレミア?未実(ry
118名前は開発中のものです。
垢版 |
2006/05/31(水) 01:54:09ID:fad2VUoo
>>115
HSP3.xでも使えるでしょ
2006/05/31(水) 02:46:46ID:5Zf5Y0Rz
>>115
これ、使えないんですか?
私最新版のHSPですが使えてます。
2006/06/01(木) 13:35:04ID:mHdztjoj
保っ守
2006/06/01(木) 13:36:18ID:mHdztjoj
鳥間違えたw

も一回保守。
ネタ、ないっすなぁ。
122名前は開発中のものです。
垢版 |
2006/06/03(土) 06:04:38ID:4QipbY9p
エヴァ作りたいなーと思ってますが
プログラミングも何もやった事がない。。。
リールの作り方もわからない、そんな俺はどうしたらよいですか
2006/06/03(土) 06:06:33ID:4QipbY9p
sage忘れ。。。逝こう
2006/06/03(土) 18:07:33ID:4QipbY9p
過去スレ一通り読んできたんですが、
リールの絵って縦に20コマ作ったbmpを3列作ればいいんでしょうか?
2006/06/03(土) 18:37:42ID:ESfHcsVB
このスレ始めてみる日曜プログラマだが
>>124
プログラムの方法なんて人それぞれだが、
2Dで作るなら、普通はチェリー等の絵を単独で用意して(一つの画像にまとめてかまわないけど)
列毎のパターンは別で用意する。"13552245621231311245"とかな。例えばの話。
そんで、実際縦に3つ並ぶスロットなら窓に表示される最大のマスは4マスなわけだ、分かるだろ?
そして時間軸の変数をtとか用意して、スタートボタンが押されたら増やしていく。このtによって窓にどのパターンが縦のどの座標に表示されるか計算して出す。
この位の計算をどうやっているか考えられないと、プログラムを舐め過ぎと言われても仕方ない。
2006/06/03(土) 19:02:12ID:X1Qp6tgS
過去スレでは
演出等でフラッシュを使う場合は>>125が適している
ってな感じの結論になってたきがするよ。
自分は>>124の方法でやってます。
こちらでやるなら最低で21コマ+3コマの24コマ
停止時に3コマ+上下を少し表示するなら25コマ分必要になると思います。
2006/06/03(土) 23:48:02ID:4QipbY9p
>>125 >>126
ご丁寧にありがとうございます
もっと調べたり人に聞いたりして整理してみます
ご指導どうも
2006/06/04(日) 01:19:46ID:snJYKP/F
引っ越し祝い
http://www.42ch.net/UploaderSmall/source/1149351096.zip
2006/06/04(日) 01:59:41ID:b2gLFEVV
>>128
すげーな。
130名前は開発中のものです。
垢版 |
2006/06/04(日) 02:02:23ID:FE3xZ/7J
すげー・・・
2006/06/04(日) 22:53:29ID:wmdad/fB
>>128
タックスヘブンな某国に引越しオメ、落ち着いたら住所教えてくださYO。
2006/06/05(月) 00:44:35ID:9yN6wPxC
>>129-130
過去スレで一度はネタになってる事しか実装されてない気がする

とりあえず今気になってる点
フラッシュは3リール×5コマ分必要なのか?
回転中はバックライトも回すべきか?

>>131
サルスレの引越し祝いね
お祝い返しはスロゲー希望
2006/06/05(月) 00:55:48ID:pWHxIErM
そうなのか・・・
リール制御に移ってたけどリールの方見直すかな。
2006/06/05(月) 00:57:13ID:0yaVgViq
>>132
それよりDirectDrawを使うか使わないかが問題で
ブラックボックスに徹するならもっと細分化した機能が必要ジャマイカ。
2006/06/05(月) 04:44:42ID:pWHxIErM
質問させていただきます。
>>80
遅い命令を常時描画していると当然カクカクなります。
特にmesとかはよく使われるけど遅い命令です。

と書かれていますが
await 0とsleepを併用したとして最小でも正確に1ms
具体的に画面に表示するような処理以外については
あまり気にしなくても大丈夫なんでしょうか?
四則演算や条件判断、変数へを代入等の内部処理を
大量に使用することによっても処理は重くなりますよね?
リールの回転をスムーズにするためには上記の部分の
改善も必要になってくるということですか?
2006/06/05(月) 08:38:35ID:bJH2bG2m
>>135
()とかインクリメントとかビットシフトとかif swichとか、正確に言えば速度の違いは出てくるけど、
基本的には今の(ここ5年くらい。10年くらいかも)PC性能ならぶっちゃけ変わらない。
少なくとも体感は出来ない。
でも、描画関係は速度に直結するから、描画関係は気をつけるべき。
特にmesやlineなど、Win32APIから呼び出すやつ。
リアルタイムにlineで描画しつつ、ウィンドウをアクティブにするかしないかだけでも速度が違うのが感じられるくらいやばい。
2006/06/05(月) 09:26:02ID:s7RtA7wB
>>135
リールの回転をスムーズにする事と
遅い命令で画面がカクカクするのは
基本的な原因が違う希ガス。

遅い命令を多用すると
目に見えて実行速度が落ちます。
重ねて、画面のチラツキが酷くなります。
まぁ、チラツキはある程度抑制出来ますが。

一方、リールの回転をスムーズにする為には
高速に描画することも重要ですが
回転のアルゴリズムを最適化することの方が
重要だったりします。
ちなみに、自分の公開しているソフトでは
前Verと現Verでは回転のアルゴリズムを変えていますが
目に見えて差が出ていますw

昔、PCが非力だった頃は、演算命令一つとっても
いかに早く処理させるかが重要でした(乗算を加算に置き換えたり)が
現在のPCの能力からすると、>>136さんの言うとおり
ほぼ関係ありません。

まぁ、一回は重い命令を使ってみて
その重さを体感するといい勉強になると思います。
2006/06/05(月) 10:08:00ID:pWHxIErM
朝からありがとうございます。
少し気にしすぎました。
描画関係には細心の注意を払って書いていますので
それ以外はそこまで神経質にならないようにしていくことにします
2006/06/05(月) 17:39:48ID:fqtbA1RT
スロゲー作るのがゴールならいいんだけど
これからも他のジャンルのプルグラムをするつもりなら
細部までこだわった方が勉強になるよ
2006/06/05(月) 18:56:34ID:bJH2bG2m
>>138
ここで自分のアルゴリズムを提示してみるのもアリだと思うよ。
失礼だけど今の段階では今までにも出尽くした方法だとは思うけど、欠点を指摘してもらえるかもしれない。

>>139
そりゃそうだけど、他のゲームを作るにしても、一度最後まで作り上げる事の方が何倍も重要な希ガス。
いちいち拘って立ち止まってたんじゃモチベーションが保てないしね。
仕事ならともかく。
2006/06/05(月) 22:41:36ID:9yN6wPxC
>>134
DirectDrawは気が進まない、けどWaitForVerticalBlankしたい。
ボタンやランプ等の小物は管理しても、液晶みたい物はコールバックにしたい
正直言って先の事は考えてなかったり

とりあえずはマニュアルとフラッシュエディターを形にしてから出直して来ます
2006/06/05(月) 23:28:07ID:ZvYrYWMK
>>141
「WaitForVerticalBlank」=リフレッシュレートの解決策だね。

気長にまってる。
143名前は開発中のものです。
垢版 |
2006/06/11(日) 21:45:58ID:BauVRQQF
age
144名前は開発中のものです。
垢版 |
2006/06/14(水) 20:09:51ID:7cBI5rb3
age
145名前は開発中のものです。
垢版 |
2006/06/15(木) 01:53:54ID:UMtW15y3
終わったな!
2006/06/15(木) 01:59:57ID:c7TFPtpF
いやー作ってたんだけどね・・・
自分はHSPからCに移そうと思って一時中断してるっぽ。
みんな水面下でやってるっしょ。
147名前は開発中のものです。
垢版 |
2006/06/15(木) 03:12:39ID:MgFV+z7D
報告は自分のHPでしますし
これといって書く事もないし。
2006/06/15(木) 18:25:21ID:QRgoY15a
>>146->>147 この板不要なのねw
2006/06/16(金) 10:45:55ID:GDUUih2t
>>148
技術的な討論をする場だと思ってますが
それじゃ駄目なんですかね。

出尽くした感はありますが…orz
2006/06/16(金) 11:31:09ID:01ORdlqZ
簡単に報告してくれたほうがスレのためでは?
151名前は開発中のものです。
垢版 |
2006/06/16(金) 12:13:24ID:1Z7QYwBB
一応ROMってるけどなんだかんだ みんなここをチェックしるのねw
2006/06/16(金) 16:01:09ID:PpEZpxhN
このスレで開発中の神たちのHPまとめてくれ
153128
垢版 |
2006/06/19(月) 23:55:25ID:fslaQWq3
|-`).。oO(デナオシテクルカ…)
2006/06/21(水) 11:46:40ID:UIo81owR
全く知識もなく初心者なんですが、どんくらいでできますか?
ジョジョのスロット作りたくて・・・
2006/06/21(水) 12:00:48ID:JUjceCNa
まずは練炭を用意します
2006/06/21(水) 21:46:39ID:OOTmi97O
>>154
まったくのプログラム初心者?
俺はMSX BASICから始めて16年かかったよ
2006/06/21(水) 21:50:48ID:LS7jphc7
>>154
人それぞれだと思うけど、HSPいじりながら過去スレ全部読んで見てから考えれば?
あとはどの程度のギミックをつけるかだけど、単純なものなら過去スレだけで作れるかと。
全く初心者なのに過去スレ読破できないって言うんなら…シラネ
2006/06/21(水) 22:00:16ID:LS7jphc7
今たまたまHSPからメール来てたのを見たけど、
HSP3.0に同梱されてるhspda.asはMTを使った乱数プラグインみたいだね。
もしかしたらもうexrandはいらないかもね。
2006/06/21(水) 22:07:58ID:oSRINCZ0
>>154
初心者云々より、やる気の問題じゃないかな?

http://pc8.2ch.net/test/read.cgi/gamedev/1149170703/
2006/06/22(木) 17:48:50ID:bF97wSvn
>>153 ま〜だ〜出直せんのか?
2006/06/24(土) 23:16:15ID:qzn3Ih99
ttp://www.geocities.jp/anachronism128/

結局、リール以外のオブジェクトに手を出すのも辞め。
実際にスロゲ作り始めれば、問題点とか見えてくるんだろうけど…
2006/06/25(日) 00:02:52ID:cFuMZaRQ
>>161
乙です。 次はリール制御お願いします。
2006/06/25(日) 03:26:09ID:Sc49IklD
>>161
すげ乙
これでしばらく遊べそうだ
ちなみになんでこんなに滑らかに回るの?
出来ればコツとかヒントを下さい
2006/06/25(日) 20:08:27ID:kepLtV3I
>>162
テーブル方式のプログラム自体は簡単。
大変なのは押し順別、停止位置別、テーブル選択用テーブルの作成。
これはスロゲー作者固有の仕事で、ツールがないよりマシって程度。
下手するとテーブル選択用のプログラムを自分で書いた方が楽かもしれない。

コントロール制御を簡単にする構想はある。

>>163
a フレームレート = リフレッシュレートにする
b 出来るだけ高フレームレートにする
の2択(サンプルのデフォはb)
165名前は開発中のものです。
垢版 |
2006/06/26(月) 01:05:58ID:YDjoKuJT
>>154
俺もCを大学で習った程度の知識しかなかったけど
1日でリール回転→ストップまではいけたよ
まあそっから頓挫してるわけだけど…
2006/06/26(月) 07:44:53ID:hZHpMcL3
>>162
停止時に4コマ先まで検出して候補を搾り出して止まらせるってのはどう?(ハズレ時)
その際、何コマ滑らせるかは任意の振り分けでランダム。
ハズレ時は振り分け0だけどBR成立時には振り分けると所謂リーチ目を表現できる。
まあこれも既出だけど。

>>164
aはむずそうだなあ。
bも出来るだけそうしようとしてるんだけど、128さんのものと比べ物にならない…。
”見た目上滑らかに見える表現”にも興味が出来てきたんだけど、そのような事はしてますか?
例えば、市販のPSゲームを一時停止させてみた所、滑らかに見えるスロゲは、回転中にわざと絵柄を上下にブレさせてました。
そのような”見た目上”に関わる事はしていますか?
(128さんのものは回転中にSSを撮ってみましたが、ブレは見られませんでしたが…)
2006/06/26(月) 22:29:49ID:J+kWTF/U
久々に開発再開しようかなw
この前実践でクソ負けしてからあんま触ってないや。

ところで聞きたいんだけど、リールを24コマ(25コマ)分用意して
滑らす方法以外の方法でやるときはリールの枠を15個
(通常の停止場所9箇所分と上下切れてるコマ6箇所)
それぞれで動くようにすればいいの?
2006/06/27(火) 02:18:48ID:0w5IahCR
>>167
その質問で開発再開って…
完成してないのバレバレ…
2006/06/27(火) 09:23:14ID:wgYvchmg
>>168
ドコに完成って書いてあったの?w

あの変な質問じゃわけわからんツッコミがあっても仕方ないのか。
170 ◆SAKURA7br2
垢版 |
2006/06/27(火) 18:51:51ID:7KP7+OWK
>>166
>”見た目上”に関わる事はしていますか?
164さんじゃないけど、俺はそうしてますよ〜
リフレッシュレートが有限である以上
プログラム的な解決法は限界がありますので。
171名前は開発中のものです。
垢版 |
2006/06/27(火) 19:28:57ID:YEuNALOl
HSPでループ作るとどうがんばってもFPS64くらいまでしか行かないんだけどオレ何か勘違いしてる?
もちろんそのループは画像コピーとかも全て削除した最小のループで。
2006/06/28(水) 03:51:13ID:UG/xOO/K
>>171
repeat〜loop間で特に重い処理をさせずに
そのフレームレートだったら
少しおかしい。

と思うなぁ。
173名前は開発中のものです。
垢版 |
2006/06/28(水) 14:12:18ID:YqU4hbxl
#include"dsoundex.as"
repeat

timer
newtime=stat

if (newtime-oldtime)>=1000{
FPS=count
count=0
oldtime=newtime
}
count++

redraw 2
color:boxf
color 255:pos 0,0:mes FPS
redraw 1

await 1
loop
//端数は考慮してないけど何か間違っていますか?
//リフレッシュレートは75ヘルツにしてFPS64くらいです。
2006/06/28(水) 16:07:47ID:wEa4EuOu
>>173
毎ループで塗り潰し+FPS書き込みという処理を行っている
この処理がFPSをそこまで下げるのに充分な重い処理になってるんじゃない?
2006/06/28(水) 19:53:29ID:URvNOOYq
>>166
>停止時に4コマ先まで検出して候補を搾り出して止まらせるってのはどう?(ハズレ時)
問題なのはテーブル方式なので…。

>そのような”見た目上”に関わる事はしていますか?
何もしてもません。
が、リフレッシュレートとの兼ね合いや、計算精度の問題でブレは発生します。

>>171>>173
間違ってないから安心汁
await 0 時のFPSを>>172>>174に教えてあげましょう。
2006/06/28(水) 20:41:53ID:YqU4hbxl
await 0だと188〜194くらいですけど、それだとCPUが100%になっちゃうんですよね…。
これはもうHSPでは高FPSは出せないのかな…。
(HSPDXFIXなどのDirectXプラグインを使ってもダメでした。)

ちなみに>>128のものはFPSいくつでしょうか?
CPUは50%くらいですね。
2006/06/28(水) 20:43:57ID:YqU4hbxl
//あ、ちなみにboxfやredrawやmesの重そうな命令を削除しました。
//整数値ですので誤差出まくりですが、多分>>173の検証結果を証明するには充分だと思います。
#include"dsoundex.as"
repeat 1000

timer
newtime=stat

if (newtime-oldtime)>=1000{
FPS+=count
tmp++
count=0
oldtime=newtime
}
count++

await 1
loop
FPS=FPS/tmp
pos 0,0:mes FPS
stop
2006/06/29(木) 00:52:25ID:rSYQ2fTC
ちゃんと読んだら172は関係なかった。スマソ

>>176
期待してたより低めでしたが、171からの流れで重要なのはawait 1で
15ms以上の時間を消費してるって事です。

#include "kernel32.as"
#include "winmm.as"
timeGetTime
start = stat
repeat 64
await 1// await 0: Sleep 1でも同じ
loop
timeGetTime
mes (stat - start) + "ms"
stop

これが64msにならないのは、HSP特有の問題ではなく主にOS(2000/XP)の問題です。
解決策のヒントぐらいは現行スレにもあるのでこれ以上触れませんが、
176さんの環境では改善されてもSleep 1 = 約2msが限度かもしれません。

>ちなみに>>128のものはFPSいくつでしょうか?
描画にかかる時間が無視出来るほど短ければ1000FPSに近づきますが、
CPU使用率50%との事なので500FPS位だと思われます。
2006/06/29(木) 18:41:48ID:gKXowyvI
>>178
>await 1// await 0: Sleep 1でも同じ
同じではない。
2006/06/29(木) 20:59:00ID:rSYQ2fTC
>>179
了解
2000/XPは同じ
98/Meは環境次第

まだ間違ってるようなら解説お願いします。

>>178
>CPU使用率50%との事なので500FPS位だと思われます。
これも間違ってるっぽい。
2006/06/29(木) 23:59:40ID:2Pe/GwNT
やっとリールが回転するアルゴリズムができそう。
まったりいくか。。
2006/06/30(金) 17:19:38ID:thoMCxMh
>>180
自分で
await 1 → 15ms以上
sleep 1 → 約2ms程度
って書いてるしょ。
await 0が13ms以上消費しない限り一緒にはならないが
そんな大量に消費するわけがなく…
183171
垢版 |
2006/06/30(金) 17:29:27ID:Pm3k/UyB
>>178
await 1とsleep 1では1000
await 0では16でした。
sleep 1でもawait 0でもタスクが奪われて固まります…。
そして結果からもawait 1以下の待ち時間にはなっていないようです…。

>await 1で 15ms以上の時間を消費してるって事です。

そうですよね。。
むしろawait特有の問題=HSP特有なのではないでしょうか?
>>128は何で作っているのですか?

HSP3ではllmodが使えないので(代わりはあると思いますが)HSP2.61限定ですが、
await
prm=1
dllproc "Sleep",prm,1,D_KERNEL
このようにsleepの精度を1にしてみたところで結果は同じ(精度1msになっていない?)でした。。
2006/06/30(金) 18:03:01ID:bTpONalA
>>183
>むしろawait特有の問題=HSP特有なのではないでしょうか?

これはOSの問題
OSが最小で計れる時間を決めてるんだから
だからそれを、変える必要がある

hsp timeBeginPeriod

これで検索してみ、モジュールとかも出てくると思うよ
2006/06/30(金) 19:00:01ID:bTpONalA
あれ?違ったかな
timeBeginPeriod 1
に、してもawait(kernel32.dllのSleepは変わる)の精度は変わらないからawaitの問題になるのか?
awaitの時間計測は別の所みてるのかな・・・
2006/06/30(金) 22:49:30ID:V7NzpIZQ
>>182
171が>>77を見つけて改善できたとしてもSleep 1が2msかもって話ね。
普通await 0が13msなんて発想する前に、Sleep 1を疑うと思うけど。

>>183
>HSP3ではllmodが使えないので(代わりはあると思いますが)
DLL呼び出しが結構楽になりました。
WINAPIは標準で付いてくるkernel32.as等に定義済みなので、
includeするだけです。相変わらず面倒なケースもいろいろありますが…

>>185
awaitのソースの一部
tick = GetTickCount();
if ( code_exec_await( tick ) != RUNMODE_RUN ) {
MsgWaitForMultipleObjects(0, NULL, FALSE, hspctx->waittick - tick, QS_ALLINPUT );

MsgWaitForMultipleObjectsはtimeBeginPeriodで精度UPするけど、
モード切替するcode_exec_await(ブラックボックス)の中の人がGetTickCount使ってれば
内部で無意味にawait 1のループ突入の予感(主に2000/XP)
2006/06/30(金) 22:54:09ID:V7NzpIZQ
tickそのまま使ってるだろうし、それだけでアウトか…
2006/06/30(金) 23:25:27ID:bTpONalA
>>186
>モード切替するcode_exec_await(ブラックボックス)の中の人がGetTickCount使ってれば
なるほど、ありがとう

って、事はSetSystemTimeAdjustment で変えられるかもしれないって事か・・・
(色々面倒そうだからtimeBeginPeriod 1でSleep使うな・・・)
2006/07/02(日) 18:59:15ID:zZgi7xov
HSP3.0での関数について質問なんですが
戻り値がある関数は#defcfunc
戻り値がない関数(命令と呼ぶ?)#deffunc
ですよね?

下のほうで戻り値を持たないような関数を作る場合どうするか
分からないのですがどう作ればいいのですか?
2006/07/02(日) 23:34:43ID:QDKFSGN9
意味わかんねーな
戻り値のない命令?

あんたの言う戻り値って何?
パラーメータとして渡した変数の内容が変わらない事?
もっと具体的に、その”戻り値を持たないような関数”の例でも挙げてくれ
2006/07/02(日) 23:53:06ID:mWtsIw7s
hspdxfixは内部でtimeBeginPeriod 1してるからincludeするだけでSleepの精度は上がる。
でも、es_syncでウエイト調整出来るからSleep不要じゃん。
ウインドウモードで多少カクカクしても、フルスクリーンモードを用意しておけば
おつりが来ると思う。

>>189
戻り値のない関数だから、戻り値を省いてreturnすればOK

2006/07/03(月) 04:20:16ID:VtdJ3oFD
>>191
Sleepha不要でもawaitは必要なのですよ。
await 1以上でタスクをOSに渡してあげないといけないってところがHSPの縛りでして…。
2006/07/03(月) 05:03:22ID:VtdJ3oFD
失礼。
フルスクリーン時にはawait要らないのですね。
ウィンドウモードではes_syncでV-BLANKを待たないからawait 1以上が必要なのですね。
2006/07/03(月) 11:59:59ID:XHBbBngn
>>193
素人考えなんですが、
ウィンドウモードでもes_syncでウェイト時間を指定してやれば(例 es_sync 16)、
await 0でもいいような気がするんですが、ダメなんでしょうか?
2006/07/03(月) 13:09:41ID:eHDSvjpr
>193
await 0でもタスクはOS_に移るよ
画面モード、es_syncは一切関係ない
hgsyncは1以上でタスクを渡す
0にした場合awaitが必要

マウスの座標を収得してみれば分かるよ
await 0でも収得できるから
2006/07/03(月) 22:14:29ID:VtdJ3oFD
>>194
FPSは同じになりますがCPU使用率は大幅に違う模様。
FPS:await 1=es_sync 15
CPU:await 1<<<es_sync 15

>>195
await 0でもタスクは移るみたいですね。
ヘルプにはウィンドウモード時にはawaitを入れろとかいてあるけど、
フルスクリーン時にも入れないとALT+TABが効かなくなる…。

CPUを抑えて高FPSにならないものか・・・。
2006/07/05(水) 22:59:05ID:8IkJlQcA
>>196
#include "kernel32.as"
#include "winmm.as"
;timeBeginPeriod 1 : onexit *exit_proc;
dim liFrequency,2
dim liCounter,2
lpFrequency = varptr(liFrequency) : QueryPerformanceFrequency lpFrequency
lpCounter = varptr(liCounter) : QueryPerformanceCounter lpCounter
mspc = 1000.0 / liFrequency(0) : Prev = liCounter(0)
repeat
QueryPerformanceCounter lpCounter : LoopCount++
if (liCounter(0) - Prev >= liFrequency(0)) {
loopAverage = mspc * (liCounter(0) - Prev) / LoopCount
DrawAverage = mspc * DrawSum / LoopCount
Prev = liCounter(0) : LoopCount = 0 : DrawSum = 0
}
redraw 0 : color 255,255,255
repeat 5;負荷
boxf
loop
if LoopAverage != 0 {
color 0,0,0 : pos 0,0
mes "描画処理 "+DrawAverage+"ms ループ "+LoopAverage+"ms"
mes "計算上のCPU使用率"+(DrawAverage * 100 / LoopAverage)+"%"
}
redraw 1 : BeforeDraw = liCounter(0)
QueryPerformanceCounter lpCounter : DrawSum += liCounter(0) - BeforeDraw
await 15; timeBeginPeriod有りでawait値を減らすとタスクマネージャ上の負荷が....
loop
*exit_proc
timeEndPeriod 1 : end
198名前は開発中のものです。
垢版 |
2006/07/07(金) 21:28:37ID:Y6buM6TL
【道具】 ゴト師御用達3 【器械】
http://news18.2ch.net/test/read.cgi/slot/1152267279/l50
199名前は開発中のものです。
垢版 |
2006/07/12(水) 15:27:20ID:KcsP+KuE
保守しなくちゃ
200名前は開発中のものです。
垢版 |
2006/07/12(水) 16:59:37ID:34v7j4rf
>>199
何のために?みんな個々のHPでやるから必要無いって言ってたよ!自然消滅をまて。
201名前は開発中のものです。
垢版 |
2006/07/13(木) 12:32:46ID:5k0RNyG0
みんなってだれだよwww
中二かよwwww
自然消滅を待てってwwwwww言いながら保守おつ
202名前は開発中のものです。
垢版 |
2006/07/13(木) 17:27:19ID:uU75Z/EE
>>200
そのHP一覧をくれ
203名前は開発中のものです。
垢版 |
2006/07/18(火) 03:28:44ID:IhxVL1dU
age
204名前は開発中のものです。
垢版 |
2006/07/18(火) 16:55:54ID:uvLRY7JY
ageだけかよ
2006/07/18(火) 22:51:23ID:IdG/173v
sage
2006/07/20(木) 09:54:54ID:kckLxdvk
設定やら図柄やらを外部ファイルで記述できる
スロットエンジンとかあれば盛り上がるんだろうけど…。
2006/07/20(木) 12:03:47ID:H1HC1TSM
>>206
それ、意外と流行らない
制御のアルゴリズム次第で流行るかもだけど
■ このスレッドは過去ログ倉庫に格納されています