※これから、このブログと関連リンク上で書き上げたモノは、実は、どこにもその答えが掲載されていなかったモノです。

ここから⇒
scriptprograming-internetscript.亜光速の未来の科学(lumino speed light future science)http://ameblo.jp/kazuya32/entry-10796371324.html日本法令五七桐紋章家(グーグル動画・画像・ブログ検索サイト)
http://kazuyakiryu.seesaa.net/本文はここから
『コンピューター・プログラミング言語の新革命・・・!』
インターネットはカウンタープログラムが必要なのです。
最初に、動画などを選択する為に行なう表示には画像と文字を使いその他のアクセスはしないようにする必要があります。
これらを回避する為には一度目のアクセスでタイミングが少し後ろの適切なタイミングでアクセスするように各PCに催促の支持する必要があるのです。
どちらにしてもアクセス時のデータがきちんと正しく流れてこなければ表示はされないのです。
つまり、何度も無駄にアクセス来るくらいなら最初からアクセスが止まるほうが適切でサーバーの負担も軽くなり表示もアクセスも全体的に速くなるのです。
最初にストーリーミングや表示のデータだけを流せば済むようにカウンタープログラムをロードする仕組みにする必要があるのです。
インターネットはカウンタープログラムが必要なのです。
最初にストーリーミングや表示のデータだけを流せば済むようにカウンタープログラムをロードする仕組みにする必要があるのです。
HTMLやCSSやSCRIPT等にしてもウェブブラウザ等には最初から決まっている表示やフレームやアプリケーション等が装備されている必要があるのです。
その上での話です。
最初に、動画などを選択する為に行なう表示には画像と文字を使いその他のアクセスはしないようにする必要があります。
これらは、最初にストリーミングのデータの受け渡しや準備をしても数多く存在していれば全部のアクセスが無駄なるのです。
なので、動画を視聴するときにストリーミングのアクセスをするストリーミング動画が普通になり数多くの動画が存在している時には良好なのです。
ただし、ストーリーミングのアクセス時のサーバーの受け渡しは最初のタイミングが違う場合が存在するのです。
その最初にアクセスしようよした、その瞬間に、サーバーには多数の複数からのアクセスが存在しています。
そのアクセスは計算により、おおよその、速度の変化の数値が出現しています。
そうでないとアクセスのタイミングが合わなくなります。
このタイミングはサーバーが自身で行なう必要があります。
ただし、アクセスするPC等から細かくアクセスされると速度が大きく低下して遅くなります。
これらを回避する為には一度目のアクセスでタイミングが少し後ろの適切なタイミングでアクセスするように各PCに催促の支持する必要があるのです。
これらはビジネスや商品販売などや料理店などストリーミングのフローキャッシュの流れ図のように同じでしょう。
どちらにしてもアクセス時のデータがきちんと正しく流れてこなければ表示はされないのです。
つまり、何度も無駄にアクセス来るくらいなら最初からアクセスが止まるほうが適切でサーバーの負担も軽くなり表示もアクセスも全体的に速くなるのです。
ただ、このようなプログラミングはアルバイトやパートのような感じの方々には無理であり、それらはグーグルやマイクロソフト等の就職試験や面接などでも気が遣く通りなのです。
(一度は検索などで確かめてみるのも良いでしょう。その時々により異なります。)
スクリプトプログラミング通信コード作成方法
はじめてでもスクリプトを作ろう。HSPのhmm.dllのDirectGraphicについて(掲示板の質問と研鑽と解答?です)
今回自分の組んでいるプログラムで,
http://hsp.tv/make/tool3.htmlページにある
うにたまさんのhmm.dllを使わせていただいて,ゲームつくっています。
(hmm.dllのバージョンは1.42,HSPのバージョンは3.2です。)
今、DG(DirectGraphic)を使って描画しているのですが困っていることがあります。
それはメインループの中でDGDRAWを使う処理がとても重いことです。具体的には
メインループ1回で16ms休む60fpsで描画するとCPU使用率が100パーセントになって
しまうのです。(1ループ16msだと62.5fpsですが、これから便宜的に60fpsとして
話させていただきます)
ちなみにスクリプトの関係のありそうな部分だけ抜き出してみました。
DGGSEL 0
DGRENEWALTIMING 60
*main
await 0
…
gosub *Clear_Screen ;画面クリア
gosub *DRAW_GRAPHIC ;裏画面描画
DGREDRAW ;表画面に描画
goto *main
画面に自分の描画したものは表示はされるのですが、CPUが100パーセントになりっぱなしです。
いろいろ自分で試行錯誤してみたりもして、改善する方法はいくつか見つけました。
・DGRENEWALTIMING をつかわないでawait 16にして、約60fpsをしようとする
→これをやるとたしかにcpuは劇的に改善されて0〜6パーセントほどで動きます。
しかし、awaitの精度が悪く60fpsになりません。
なぜかawaitは自分の環境では0だと0(ms),1〜10だと10(ms),11〜20だと20(ms),…
と段階的に変化していきます。なので16にしても20msになります。
また,別のPCだとawaitは16ごとに変化したりしてあまり安定しないので使えません。
・SAKMISさんの高精度時間管理モジュールを使う
→
http://whss.biz/~sakmis/module.html#tmanage3にある、SAKMISさんのモジュールに
asleep p1 (awaitをasleepにしたようなものです。p1に同じくmsの時間を入れる)があり,
これを使ってみました。16msでCPU使用率は90〜100%,17msで50〜60%,と段階的に下がり
18ms以上ですともうほぼ負荷なしといった状態です。
しかし16で100%いくので60fpsになりません。
・asleep でDGDRAWをサンドイッチする
→今度はいろいろasleepの位置を変化させて見ました。メインの中で最初のasleepは使わず,
asleep 14:DGREDRAW :asleep 2とはさんでやるとかなり改善され、同じ1ループに16msを
とるのでもCPU使用率が20〜30%になりました。
このようにして今、サンドイッチする方法をとっているのですが、何かほかに改善する方法が
ありそうでならないです。
なぜならほかのDirectX使用の2Dのソフトでそれほど負荷なく60fpsでるからです。
自分ではこれ以上改善できませんでしたがほかに何かよい方法がありましたら教えてください。
お願いします。
「ほかのDirectX使用の2Dのソフト」がどの言語を使っているのかわかりませんが
コンパイラで機械語にするのと
中間言語などで直接、変換しながら実行するプログラム言語は
速度自体が違います。
await は
待ち時間なのでその間、空ループさせて、その間OSに処理を渡しているので
自分で作った中のプログラムのコードの量と
命令実行速度と計算速度とCPUやメモリ、GPU等により
その速度が変わります。
waitは一度に渡す分、待ち時間が長く細かい変更は出来ませんが、OSの負担は減ります。
もし速度を上げたいのなら
計算文にしたほうが速くなります。
この場合は判断を分けて並べるよりも効率的になる時があります。
それとプログラム・コードは処理ごとに小さくまとめたものをまとめてわかりやすくしておき
後で変えやすくすればいいでしょう。
簡素なほうが速くなります。
わからなければ、絵でも音でも字でも何でもよいですから紙などに書いてみてください。
(フローチャート、UML図、マインドマップ、ダビンチノート、楽書き、メモ等)
コードはちょっとしたドキュメント等の説明でわかりやすくしてもよいです。
他の方のソースコードを実行して速度と中を確かめてみてもいいでしょう。
ネットならいろいろ手に入りますよ。
手元におけるCD付きでURLからダウンロード可能な書籍などもあります。
これには様々なサンプルと使用法などが載っています。
hmm.dllは環境により不安定な時があるので
他のものか最新のものなどにあるものを使ってみてはどうでしょうか?
ちなみにこのようなプログラミング言語は変数ひと文字で処理が変わることがあります。
HSPも私が使って見たかぎりはその傾向がありました。
普通に使っているかぎりは大丈夫です。
多分、サイト(hsp.tv等)にいくつかエラーが書いてありますよ。
はじめてのものは慣れなく手探りなのでどちらも否定はよくありません。
わからなければ他の方への助言などを見てはどうでしょうか?
……
長文はいけないでしょうが入れておきます。
少し長いですがこれは私のノートパソコンで動いたものです。
この文章の最後まで見て下さい。
/*
DirectGraphicsのサンプルです。
マウスカーソルをの位置で画像を表示します。
ESCで終了します。
SHIFTで画面モードを切り替えます。
SPACEで残像っぽいエフェクトサンプル
*/
;----------------------
;
;----------------------
#include "hmm.as"
#include "winmm.as"
#include "comctl32.as"
#include "hspext.as"
;----------------------
;
;----------------------
#define FULL_SCREEN_MODE 0
#define WINDOW_MODE 1
#define STAR_MAX 256
#define PARAM_MAX 10
#define pos_x 0
#define pos_y 1
#define speed_x 2
#define speed_y 3
#define scale 4
#define angle 5
#define color_r 6
#define color_g 7
#define color_b 8
#define color_a 9
;----------------------
;
;----------------------
*init
title "hmm.dll sample [esc=end][shift=chngscrmode][space=effect]"
randomize
diInit
ScreenMode = 1: gosub *initdg
dim SinTbl, 256: dim CosTbl, 256
repeat 256
emsin SinTbl.cnt, cnt: emcos CosTbl.cnt, cnt
loop
dim Star, STAR_MAX, PARAM_MAX
repeat STAR_MAX
StarNumber = cnt: gosub *setparam
loop
;-------
t=1
input t,50,25
ic=8,16
InitCommonControlsEx varptr(ic)
CreateUpDownControl 0x50800086,0,0,0,0,hwnd,0x10000,hinstance,objinfo_hwnd(0),1000,0,1
hmminit %10000
*main
dgcolor : dgclear; : dgredraw
await t
hmmgetfps fps : title strf("fps: %d", fps)
gosub *keycheck
gosub *draw
gosub *moveparam
dgReDraw ;画面更新
if stat == 0 {
// ALT+TAB、スクリーンセーバー、省電力モードなどで
// 画面更新が失敗したら初期化して画像などを読み込みし直す
// この時にはウィンドウモードにすること
ScreenMode = WINDOW_MODE
gosub *initdg
}
getkey esc, 27 : if esc : end
goto *main
;----------------------
;
;----------------------
*setparam
Star.StarNumber.pos_x = mousex<<8: Star.StarNumber.pos_y = mousey<<8
r = rnd( 256 )
Star.StarNumber.speed_x = CosTbl.r
Star.StarNumber.speed_y = SinTbl.r
Star.StarNumber.scale = rnd( 392 )
Star.StarNumber.angle = rnd( 257 )
Star.StarNumber.color_r = rnd( 128 ): Star.StarNumber.color_r += 128
Star.StarNumber.color_g = rnd( 128 ): Star.StarNumber.color_g += 128
Star.StarNumber.color_b = rnd( 128 ): Star.StarNumber.color_b += 128
Star.StarNumber.color_a = rnd( 128 ): Star.StarNumber.color_a += 128
return
;----------------------
;
;----------------------
*moveparam
repeat STAR_MAX
StarNumber = cnt
;パラメーターの変更
Star.StarNumber.pos_x += Star.StarNumber.speed_x: Star.StarNumber.pos_y += Star.StarNumber.speed_y
Star.StarNumber.color_a --: Star.StarNumber.angle += 4
;パラメーターの初期化判定
x = Star.StarNumber.pos_x>>8: y = Star.StarNumber.pos_y>>8: a = Star.StarNumber.color_a
if ( x < 0 ) || ( x > 640 ) || ( y < 0 ) || ( y > 480 ) || ( a <= 0 ): gosub *setparam
loop
return
;----------------------
;
;----------------------
*draw
dgGsel 0
dgColor 0, 0, 0, 255: dgClear ;画面のクリア
dgGsel 2: dgColor 0, 0, 0, 255: dgClear
/*
;星の描画( ver DGGCOPY )
dgBlendMode 2: dgRect 0, 0, 96, 32
repeat STAR_MAX
StarNumber = cnt
dgScaleAndAngle Star.StarNumber.scale, Star.StarNumber.scale, Star.StarNumber.angle
dgColor Star.StarNumber.color_r, Star.StarNumber.color_g, Star.StarNumber.color_b, Star.StarNumber.color_a
dgPos Star.StarNumber.pos_x>>8, Star.StarNumber.pos_y>>8: dgGcopy 1,5
loop
*/
;星の描画( ver DGDRAWPRIMITIVE )
dgTexture 1: dgBlendMode 2: dgRect 0, 0, 96, 32
repeat STAR_MAX
StarNumber = cnt
dgScaleAndAngle Star.StarNumber.scale, Star.StarNumber.scale, Star.StarNumber.angle
dgColor Star.StarNumber.color_r, Star.StarNumber.color_g, Star.StarNumber.color_b, Star.StarNumber.color_a
dgPos Star.StarNumber.pos_x>>8, Star.StarNumber.pos_y>>8: dgAddPrimitive 5
loop: dgDrawPrimitive
dgBlendMode 2
repeat 128
ca = rnd( 256 ): cb = rnd( 256 ): cg = rnd( 256 )
ex = rnd( 320 ): ey = rnd( 240 )
dgColor ca, cb, cg, 255: dgLine 0, 0, ex, ey
loop
if AfterEffect {
dgGsel 3
dgBlendMode 1: dgColor 255, 255, 255, 16
dgRect 0, 0, 640, 480: dgScaleAndAngle 256, 256, 0
dgPos 0, 0: dgGcopy 2
cpybufid = 3
} else {
cpybufid = 2
}
dgGsel 0
dgBlendMode 0: dgColor 255, 255, 255, 255
dgRect 0, 0, 640, 480: dgScaleAndAngle 256, 256, 0
dgPos 0, 0: dgGcopy cpybufid
dgPos 640-96, 480-16: dgColor 255, 255, 255, 255: dgDrawText "fps="+fps, 96, 16
return
;----------------------
;
;----------------------
*keycheck
diGetKeyState key, 0
diGetMomentKeyState key, 0 //押した瞬間のキーを取得
//サンプルの終了と画面のキャプチャ
hmmBitCheck key, KEY_ESC_BIT
if stat == 1 {
dgBmpSave "bmpsave.bmp"
end //ESCが押されたら終了
}
//画面モードチェンジ
hmmBitCheck key, KEY_SHIFT_BIT
if stat == 1 {
if ScreenMode {
ScreenMode = FULL_SCREEN_MODE
} else {
ScreenMode = WINDOW_MODE
}
gosub *initdg
}
hmmBitCheck key, Key_SPACE_BIT
if stat == 1 : AfterEffect = AfterEffect^1
return
;----------------------
;
;----------------------
*initdg
dgInit: if stat == DG_ERR: dialog "init err": end
dgScreen 640, 480, ScreenMode, 32, 0: if stat == DG_ERR: dialog "screen err": end
dgRenewalTiming 60
//PCの性能にまかせて描画
//dgScreen 640, 480, ScreenMode, 32, 1: if stat == DG_ERR: dialog "screen err": end
//dgRenewalTiming 60
dgBuffer 1, 64, 64: if stat == DG_ERR: dialog "buffer err": end
dgFont "MS ゴシック", 32: if stat == DG_ERR: end
dgGsel 1: dgScaleAndAngle 256, 256, 0: dgClear
dgColor 255, 255, 255, 255: dgPos 0, 0
dgDrawText "HSP", 96, 32: if stat == DG_ERR: end
dgCreatePrimitive STAR_MAX
dgFont "MS ゴシック", 16: if stat == DG_ERR: end
dgBuffer 2, 640, 480: dgBuffer 3, 640, 480
return
この部分が大切です。
#include "hmm.as"
#include "winmm.as"
#include "comctl32.as"
t=1
input t,50,25
ic=8,16
InitCommonControlsEx varptr(ic)
CreateUpDownControl 0x50800086,0,0,0,0,hwnd,0x10000,hinstance,objinfo_hwnd(0),1000,0,1
hmminit %10000
*main
dgcolor : dgclear
await t
hmmgetfps fps : title strf("fps: %d", fps)
gosub *keycheck
gosub *draw
gosub *moveparam
dgReDraw ;画面更新
if stat == 0 {
// ALT+TAB、スクリーンセーバー、省電力モードなどで
// 画面更新が失敗したら初期化して画像などを読み込みし直す
// この時にはウィンドウモードにすること
ScreenMode = WINDOW_MODE
gosub *initdg
}
getkey esc, 27 : if esc : end
goto *main
所々を見て下さい。
ボックスの数値を変えて見て下さい。
fpsが変わると思います。(私のでは0と1で違いました)
タイミング的には、
60分の1秒、1000ms(1sec)÷60fps=約16ms
なので
15と16の辺りが境目になります。
それと機種により速度の変わり目が他にもある場合があります。
「dgReDraw」
これの更新タイミングの位置のずれだけでずれて表示不可能になります。
ちらつきや真っ黒や一部表示不能などです。
これはサンプルを見て実行して変えて比べると分かります。
この他にも理由があります。
hmm.dllなどのサンプルでも示されています。
このようにひとつひとつ研鑽もあります。
スクリプトは貼り付けて即に実行・変換できて便利です。
本当の長文になってしまい、すみませんでした。
……
まあ本人が納得したのなら良いんだが、分かってるのかもしてないけど補足しておきます。
>これだとwaitさせるのがよいことがわかります
waitはawaitと違って単純に指定された時間を待つだけの命令です。
60fpsを目標にしているのならループ一回に掛けられる時間は16msです。
waitで10ms使ってしまったら実際の処理に使える時間は6msしかなくなってしまう。
今の環境で問題なく動いていてもCPU性能の劣るPCで実行したとき、もし処理に8msかかるなら
本来なら余裕で60fpsをだせるのに、実際には処理落ちするという現象が出ます。
……
どうもお久しぶりです。
KKさん、よくよく読ませていただきました。ありがとうございます。
KKさんのコードは処理が早くなりそうな記述があり、節々でいろいろと得るものがありました。
読むのに時間がかかりましたが、これからも役に立つ部分があり吸収させていただきました。
本当にありがとうございました。
名無しさん、わざわざ補足までしていただきありがとうございます。
そうですね、その部分も今回の問題で実感できてた部分でした。
名無しさんの指摘どおりそのようなこともありえるので十分注意していきたいです。
今回はこれで解決できたのでひとまずチェックさせていただきます。
みなさん本当にありがとうございました。
……
これは、「おにたまさんのhmm.dll」のフォルダに入っている、
「サンプル」を一通り見れば分かります。
それにひとつ加えただけのもので動いています。
これを応用すると
よくある性能によって速度やタイミングが変わるものに対応する
性能によって個人個人が調整して動く簡易スクリプトアクションが動きます。
後は中を作り本体の中の動きの部分の速度に関するものを
調整の速度の部分に組み込めば調整可能になります。
ほんの少しのプログラムで動いてしまいます。
後ほんのちょっとでシューティング・ゲームです。
後はアルゴリズムが沢山欲しいでしょう?
例えばA*があればそれを
どこか探索の一部に使い
他の順で前か後には他の
アルゴリズムを使い連鎖で動かして
もっと効率を上げるなどです。
よく考えると意味が分かってきます。
P.S.少し変えて説明してあります。
教えて hmm.dllのDirectGraphicについて - HSP3掲示板 [HSPTVコミュニティ]
http://hsp.tv/play/pforum.php?mode=all&num=28889オリジナルの「スクリプトゲーム」の設定をしてみます。(HSPなどで) 神仙流 役立つ 未来 トータル ライフ
http://kiri-h-nikki.seesaa.net/article/133079869.html「ゲームプログラマになる前に覚えておきたい技術」の紹介です。 神仙流 役立つ 未来 トータル ライフ
http://kiri-h-nikki.seesaa.net/article/132996906.htmlいつまでも便利な「人工知能学事典」の紹介です。 神仙流 役立つ 未来 トータル ライフ
http://kiri-h-nikki.seesaa.net/article/132990981.html書籍を読むのなら目次が大切!!2009年ビジネス書籍売上ランキング! 神仙流 役立つ 未来 トータル ライフ
http://kiri-h-nikki.seesaa.net/article/135125023.html初心者でも大丈夫です。ノートパソコンを性能構成から選びノート&デスクトップ・パソコンとして使用してみましょう。 神仙流 役立つ 未来 トータル ライフ
http://kiri-h-nikki.seesaa.net/article/135306791.htmlフローチャート(flow chart)は流れ図または流れ作業図
- Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%AD%E3%83%BC%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88統一モデリング言語(とういつモデリングげんご、UML; 英: Unified Modeling Language)
- Wikipedia
http://ja.wikipedia.org/wiki/%E7%B5%B1%E4%B8%80%E3%83%A2%E3%83%87%E3%83%AA%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9Eマインドマップ (Mind Map) もしくは
マインドマッピング (Mind Mapping) は図解表現技法の一つ
- Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%A4%E3%83%B3%E3%83%89%E3%83%9E%E3%83%83%E3%83%97ダビンチノート
レオナルド・ダ・ヴィンチ
- Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%AC%E3%82%AA%E3%83%8A%E3%83%AB%E3%83%89%E3%83%BB%E3%83%80%E3%83%BB%E3%83%B4%E3%82%A3%E3%83%B3%E3%83%81レオナルドの多岐に渡る研究は、13,000ページに及ぶノートに、芸術的な図と共に記録されている。
この膨大なノートは、19〜20世紀になって、科学技術の分野での先駆的な研究として注目を集めるようになった。
レオナルドはこれを出版する計画を抱いていたようである。
楽書き
らくがき
落書き(らくが - き・送り仮名が無く「落書」の表記の場合もある)
- Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%89%E3%81%8F%E3%81%8C%E3%81%8D覚書(おぼえがき、メモランダム、メモ、英語:memorandum、memo)
- Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%A2・・・この・・・動画を・・・チェック・・・
クラウドでは駄目で源文法が複雑過ぎるのですが・・・
エンターテイメント...
この方たちは遊びなのでこれらも無視されました。
『クラウドでは駄目で源文法が複雑過ぎるのですが・・・桐生・・・』
「ネットでも有名なグーグルやマイクロソフトやヤフー等々も『皆でまったく同じ様な勘違い』という『大変な間違い』を犯しています。」
他にもインテルやAMDやnVIDIAやソニーや任天堂などでも同じです。
これについては散々と説明しましたがやはり私自身の商品の内容と全ホームペ−ジと全ブログと全コンテンツ等々の程度でさえも存在していないとダメであるようです。
プログラムの文法が単純が複雑に難しいのは変すぎているのです。
私がどう複雑にして、こんがらしても、単純になってしまうのはホームページでも表現したとおりです。
実は実際に作成するにはこのHSPでさえも源の文法規則が複雑なのです。
C++やC言語も簡易で単純が可能な文法規則が複雑なのです。
それで変更不可能になり苦労しているのです。
実際は人の会話と同じでありアルファベットを使ったそれぞれの国の文字が混ざるデータとして使用する世界的に共通で源が単純な文法になるはずです。
これらは、もしも、知っていれば初心者でも内容を知らずに唱えてしまいます。
この内容はコンピューターのプログラムの中の基盤のLSI等は『「順番」にメモリを読み出し』『「論理と単純」計算』で実行しているのです。
それらの『繰り返し』と『「メモリ」読み出しの位置の変更』だけの単純さなのです。
これは最初に『変数やレジスターの「定数」』を代入するか『メモリ位置という「配列の位置」を定めて』おくのです。
この配列の位置は普通に考えれば『変更しない方が「効率的」』に使用可能です。
なぜかは、かなり複雑な人工知能を最終まで組み上げられるのなら判明します。
この未解決問題の真の解答がこれでした。
多重ループに注意なのは配列だからですがクラウド等の大量なデータを扱う現在ならありになります。
「定数」・・・・・・A=B
「配列の位置」・・・F_ABC=(0,1,2,3・・・)
「論理と単純」・・・A=A and B:C=D+E
「順番」・・・・・・GO F_ABC・・・FUNCTION F_ABC()
「メモリ」・・・・・GO F_ABC(A,C)
「効率的」・・・・・CHANGE MACRO F_GHI()=(F_ABC()、F_DEF())
『変数やレジスターの「定数」』・・・・・・・a=b
『メモリ位置という「配列の位置」を定めて』・F_abc=(0,1,2,3・・・)
『「論理と単純」計算』・・・・・・・・・・・a=a AND b:c=d+e
『「順番」にメモリを読み出し』・・・・・・・GO F_abc・・・FUNCTION F_abc()
『「メモリ」読み出しの位置の変更』・・・・・GO F_abc(a,c)
『繰り返し』・・・・・・・・・・・・・・・・LOOP LABEL L_zyx・・・LABEL L_zyx
『変更しない方が「効率的」』・・・・・・・・CHANGE MACRO F_ghi()=(F_abc()、F_def())
『皆でまったく同じ様な勘違い』・・・・・・・CHANGE MOVING F_ghi()=F_abc()*F_def()
『大変な間違い』・・・・・・・・・・・・・・MOVING MACRO F_ghi()=F_abc() and F_def()
『クラウドでは駄目で源文法が複雑過ぎるのですが・・・桐生・・・』・・・FLOW MACRO F_ghi()=STOCK(F_abc() XANDOR F_def())
「ネットでも有名なグーグルやマイクロソフトやヤフー等々も『皆でまったく同じ様な勘違い』という『大変な間違い』を犯しています。」・・・
DYNAMIC F_ghi()=STATIC(F_abc() MATRIX F_def())
『コンピューター・プログラミング言語の新革命・・・!』・・・MACRO F_ghi()=CLOUD(F_abc() DYNAMIC F_def())
A=B
F_ABC=(0,1,2,3・・・)
A=A and B:C=D+E
GO F_ABC・・・FUNCTION F_ABC()
GO F_ABC(A,C)
CHANGE MACRO F_GHI()=(F_ABC()、F_DEF())
・・・・・・・a=b
・・・F_abc=(0,1,2,3・・・)
・・・・・・・a=a AND b:c=d+e
・・・・GO F_abc・・・FUNCTION F_abc()
・・・・GO F_abc(a,c)
・・・・・・LOOP LABEL L_zyx・・・LABEL L_zyx
・・・・CHANGE MACRO F_ghi()=(F_abc()、F_def())
・・・CHANGE MOVING F_ghi()=F_abc()*F_def()
・・・・MOVING MACRO F_ghi()=F_abc() and F_def()
・・・FLOW MACRO F_ghi()=STOCK(F_abc() XANDOR F_def())
・・・・DYNAMIC F_ghi()=STATIC(F_abc() MATRIX F_def())
・・・・・・MACRO F_ghi()=CLOUD(F_abc() DYNAMIC F_def())
「定数」
「配列の位置」
「論理と単純」
「順番」
「メモリ」
「効率的」
『変数やレジスターの「定数」』
『メモリ位置という「配列の位置」を定めて』
『「論理と単純」計算』
『「順番」にメモリを読み出し』
『「メモリ」読み出しの位置の変更』
『繰り返し』
『変更しない方が「効率的」』
『皆でまったく同じ様な勘違い』
『大変な間違い』
『クラウドでは駄目で源文法が複雑過ぎるのですが・・・桐生・・・』
「ネットでも有名なグーグルやマイクロソフトやヤフー等々も『皆でまったく同じ様な勘違い』という『大変な間違い』を犯しています。」
『コンピューター・プログラミング言語の新革命・・・!』
この手のものはパターンは一緒ですので
サイトなどでコードを共有している所が
あればそれを使えばいいのです。
それとスクリプトはC++等のコンパイラとは違い
簡素に出来ているので作り易い反面
スピードと複雑性がなくなります。
コンパイラの場合は、文法等が分かり難く
動的処理などの中身の見え難い
コード自動作成も考えなければならない
時間も必要になります。
そこでAIコード作成が必要なのですが、
これは大手にあると想います。
まだ完全には出来ていないようなので
AIアドベンチャー
の簡単なヒントを言うと
まず、文章データ(ワード)
はきちんとひとつひとつを様々なところで
使えるようにしさらにコンピューターで
文章データパターン(ワード)を解析して
そのデータをもとにしてコンピューターに
手伝ってもらい
自動で文章が作成出来る様にします。
さらに、ストーリーパターンも同じようにして
解析していきそれを同じように
C++等の動的処理に落とすと
出来上がります。
ちなみに、人工知能と物理処理は
知っていた方が時間が掛かりません。
ただ、これはそのものを使うのではなくて
全てをうまく組み合わせて使わないと意味が無いのです。
人工知能システムは全てを
ひとつのアルゴリズムにすることにあります。
それで完全人工知能会話が出来ます。
これらは1990年には完成していいはずなのですが。
私の中では1988年には
AI・RPGとAI・AVGが完成しています。
当時は、プログラムごと頭の中で2Dと3Dのゲームが動いていました。
最新理論が出来上がっています
亜光速の未来の科学
亜光速理論まで書き上がっています
私の独自理論です。
ここだけですよ!!!
すぐに使用可能です。
1973〜1978年には完成しています。
他人にはテレパスでは無理です。過去で不可能でしたから
ただうるさいだけです。夜までうるさかったです。
普通は、個人の場合は簡素に
システムとメニューとデータ設定を考える必要があります。
グラフィックや音楽などは初めは
自分の好きなように作ってしまえばいいのです。
動きだけ何かを参考に出来ればいいです。
スピードが必要なもの以外はいけます。
簡単なAIや物理計算なら
ゲームに組み込んで動かすことも可能です。
思ったよりはそんなには難しくはないはずです。
基本は一緒ですから。
初心者ならこんな感じでいいと思います。
フリーのものはプロのと違い
全て出来る訳ではないので
簡単機能が再現しやすいです。
逆に大企業のものは
簡素にしにくく戦略など
複雑になりやすく
お金が絡むので面倒が入ります。
全ての知やシステムやノウハウなどを
機種やスタッフ間でコンバート可能に
作りプログラムも機種間でコンバート実行可能に
作り上げて活きます。
スクエア・エニックス等の仕組みをみればわかります。
これはどうにでもなります。
昔なら、追う、逃げる、避ける、取る、使う、そこに行く、
追跡と逃避、その位で十分ゲームになりました。
この位は座標位置の計算だけですので簡単です。
それに、文字、音
人工知能(AI)
パターン、ムーブメント、最適経路探索、
行動計画(データ、ルール、プログラム):ルールベース、
関係重要度による移動方向と位置と集団行動:フロッキング、
パラメータやステイタスによる行動パターン:ポテンシャル関数、
そのキャラの行動による
乱数を含めた最適行動パターン:有限状態機械、
上限下限による曖昧処理:ファジー、
複数入力の平行同時アナログ論理計算処理:ニューロ、
源パターンデータによるパートの最適な組み合わせの
ランダム化による・てん:遺伝処理、
ポイントにパラメータを持たせ全体を一回で関係を組み上げる
その時点で将棋ならプロが何となく盤面を見たのと
同じデータが得られます。
それを同時に動かし一つ一つのデータを得る。
今までのデータとルールで状態評価マトリクスを創り出す。
この場合の注意としては
普通、ルールとデータを逆におくということです。
ルールと言うのは経験なのでデータと同じです。
すでにあるデータは実際なのでルールと同じです。
人工知能会話アドベンチャーゲームが出来ないのは
これを中心としたモノが無かったからです。
簡単なものなら、文章をデータベースに入れておき、
ユニットで組み合わせて少なく細かい部分は単語を入れていく。
ユニットで組み合わせて少なく細かい部分は単語を入れていく。
AVG作成ツールで必要なのはこれです。
以外とありません。
もとがあれば自然と出来上がります。
あとは数十万円以上で形態語解析データをもらい(単語・連語・文章語など)
その意味をデータにする地道な作業が足りないのです。
それを走らせ結果をルールにする必要があるのです。
マイクロソフト・グーグル・ポータル(ストリーム)です。
ヒントを書いておきます。
動的処理がある場合はエンコード・デコードのような感じで
ランダムマトリクス解析する必要があります。
LU解析等と最適化等では足りません。
実際はマトリクスは5次元以上の配列を使う必要があります。
次元を超えて縦に斜めに横にいく必要もあります。
アナログ論理素子を使う必要があります。
デジタルでは足りません。
その上でネットワークを作りマトリクスに落とす必要があります。
ルールもデータも無いときは
経験としてデータを溜めた後
それらが最適化されていきルールになっていき
その処理によりデータが出来ていき
入力があり中のアナログ論理素子ネットワークにより
最適構成による回答が出来
出力されてまた帰る
その処理がばらばらに動く
という感じが基本となります。
その上でそれぞれによる最適アルゴリズムを使います。
これでeliza1,2,3,4,5,6,7,8,9,10以上可能となります。
コンピュータープログラムは、
文字という数字を計算し比較して判断した
(繰り返しもあり)(順も飛び戻る)
その積み重ねのまとまとまりをひとつとしていくらでも
ミクロやマクロがある様々な文法や単語がある言語となる。
つまりコンパイラがあればいい、
オートプログラム作成とプログラム解析である。
実際は、計算とプログラムというマクロで
可能となるコンピューター会話がある。(人間会話)
決まった変更点があればクラスとなる。(関数)
変更点がなければテンプレート(マクロ)となる。
様々な言いかたあるがまとまりかたの違いとなっている。
これは、言葉と変わらない。
それを自動で行えばオートプログラミング、つまり動的処理となる。
プログラムは、もとの要素は単純で少なく、
分かりやすくなっているので、
もとが分かれば、
全体に、簡素に出来る。
変数は数字と文字の2つである。
| |
| 16ビット=ニーモック
64ビット〜
プリプロセッサ=ハード
CPU命令
現在のコンピューターは、
2進の位取りで1桁が1bitになる。
20bit=1048576=約104万であり、文字数は足りている。
8bit=1byte
単語なら約1000万=約10,000,000=10M
10M*4=40M(8bit*4=32bit)
40Mbyte
10万×100
100万×10
約33万×約33万
単語=10〜100
10万〜100万=単語数
NOT,AND,OR,+,-,*,/,and,or,not,\,=,<,>,!,==,<=,>=,!=,<<,>>,√
2分木
(アナログ)?
AND 1 (FULL)
OR 0.9〜0.1(未)
0 (NULL)
NOT 1-0.4=0.6
AND&OR
(NOT)( (NOT)? / (NOT)? - (NOT)? / (NOT)? )
-=/
-=*
-=-
-=+
NOT=( )
NOT=NOT
NOT=√
X Y Z h/
−・−・−=−
P V T Z×
円周率=π
R
rad=ラジアン
計算なら
スカラ
ベクトル等
よくある計算式は使う
アナログ論理素子計算
変数とは数字と
それで表す文字等
1種類で全てを表す
条件判断
繰り返し
−ブロック(まとまり)
−−−単数
複数・処理 ラベルもあり
並列
ラベルジャンプ
−サブルーチン・関数・クラス・別・他 のまとまり
変化 ユーザー定義 マクロ命令
アナログ、つまり連続的な物理量
テンプレート
システム変数
つまり数学
それに配列
関数の値は変数にする
文字という数を計算し比較判断
の積み重ねなので
まとまりをひとつとすれば
いくらでも少なくなる変更も決めておけばいい
変更なければライブラリ
変更ヶ所あり
クラスの意味はじつは単純
A=数字
−
B=基準
−セットの数=アナログ
すなわち全ての小数(点)が普通となるため
数字は一の最大数の小数が
普通になる
実際は、数の種類が一つに
この場合は、
位取りは、10進数のままでまとまる。
もよい。なぜなら。
内では同じだからです。
今のはどこにもないオリジナル完全に動く人工知能言語です。
実際の使い方は、エディターにもあります。
まず、まとまりをテンプレートにして
中の関数を変更可能にして使い
それをクラスでオートプログラムメイクを行い
自動で動く解析アルゴリズムとなります
これをつくるのは、私が考えた通りなら
10分で完成する言語です
なぜなら、不思議はありません。
1キーがそのまとまりに対応しており
たった1行で全体のプログラムとなり
パラメータという変更ヶ所の値も1キーで済みます
これも並列に行で通します
中身が分からず見難いということにはなりません。
横にきちんと表示されています。
中もツリーやパラメータやグラフなどで確認できます。
初心者ならまとまりをひとつひとつ確認しながら使う。
上級者なら複数のメインキーを一度に押し直接入力されていきます。
これらがアナログ位置確認知能アルゴリズムによって
間違いがある程度正されていきます。
後が楽になります。
1キーの文字もこのように位置で決めます。
アルゴリズム デザイン アーティファクト インテリジェン です。
A.I.A.I.
完全な人工知能の意味です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
s. v. l. c. c. a. o. f. a. m. a. i. c. c.
A B C D E F G H I J K L M N
A. I. A. I. A. L. N. W. M. C. S. G.
15 16 17 18 19 20 21 22 23 24 25 26
O P Q R S T U V W X Y Z
*説明の方法が違うので参考になります。
プログラミングはゲームに当てはまった数学と物理の組み合わせで決まる。
単語説明
状態=ステイタス
フロー=浮き沈みのあるという意味。
数・字=数字と文字
キャッシュ=一時的に数・字を出し入れする
データ=ゲームに必要な数・字
変数=変わっていく数・字の入れもの
ストック=数・字をしまっておく
プレイヤー=操作する人間
NPC=自動的に動くもの
初心者のプログラム(簡単なプログラムはこのようになっています。)
・初期設定
データ入力(ファイル・値 ロード) 音・絵・モデル・マップ・ステイタス
値設定(ゲーム中身の表示・音・入力の設定) マップ 画面 音 NPC・プレイヤー
・メイン 外部分のプログラム
・サブ
・プレイヤー
操作入力
キャッシュ変数←配列変数にストックされたデータ(ステイタス) NPC プレイヤー
・入力処理
アクションなら動き 座標 Xよこ−←+→ Yたて−↑+↓
入力に対する動きの処理 何か決める 反応 押す はなす ボタン ○●◎
動きの処理で変わったキャッシュ変数をそれぞれの表示や音等の表現の出力命令入力する
ストック配列変数←キャッシュ変数 をストックする 次にそなえる
メインへ
・NPC(背景の障害物もいっしょに考える(基本は同じです))
・キャッシュ変数←配列変数にストックされたデータ(ステイタス)NPC プレイヤー
・適応処理
・アクションなら動き 座標 Xよこ−←+→ Yたて−↑+↓
・NPCとプレイヤーと他のNPCを比べる
距離と時間と速さと敵・味方・中立等の関係の組上げ
・それを座標の位置にかえて表示と音を決めて状態を変数に入れる(キャッシュ)
変わった状態(ステイタス)のキャッシュ変数をそれぞれの表示や音等の表現の出力命令に入力する
ストック配列変数←キャッシュ変数をストックする 次にそなえる
メインへ
・メイン
・プレイヤーの処理へ
・NPCの処理へ
・画面・音・ハード(ソフト)へ…
・音 音は命令出力し(必要時は上記のようにサブで)
・画面 画面はプレイヤーのステイタスによって命令へ出力し(必要なら?へも)
・ハード(ソフト)−通信等です 外部装置へもありです
アルゴリズム・ロジック
会話文章の種類
キャラクターによる違い … ○ @ABCD…状態による違い
単語と組み合わせ 文章をデータをつくっておく 使う時に選ぶ
目的の状態
位置・方向・速度・時間・強弱・会話・目的の照合
キャラクタによる種類をつくる
あとは、キャラクター・背景・風景とBGM・効果音 で表示・表現の動き
地図・迷路はポイントどうしからのラインがあるなら(設定されているなら)
距離と分かれ道を(マス目)
筋を計算しておいて目的とまわりの近くの相手により道を変えていく
一般キャラはライン上をゆらゆらと通って目的につけばよい
ラインの時間(コマ)が計算されていれば時間がとんでもきちんと通っている
時間があう
ポイントでまた考える思考する キャラクタが設定により選ぶ
リーダーの進む方向にそって進んでいく
キャラクタ同士がある決まったエリアにさわらないように前に障害物をよけながら進む
メニュー 移動・攻撃・道具・状態・保存・再生・終了・命令・計画 等のように…
操作入力 道具 アイテム・魔法・使用…
攻撃
避ける
命令…
移動
移動 位置・方向・速度…
会話 時間・強弱・目的…
目的(の照合) 自・他・もの・地図・背景・等…
・アルゴリズム←見えないそれを見えるとして表した構造・組み合わせ。
・ロジック←つながるそれぞれの筋・通り道。1列1行の文章の表現と同様
*見えない見えにくいもの、それが見えて他のつながりが見えればよい。
筋・分岐・並列・同時等
− < 三= :::
筋−つながって見えるものたち
分岐−分かれてつながって見えるものたち
並列−つながらずにともにあるものたち
同時−つながらずに時が同じにあるものたち
これで基を組み立てていきます。
紙に書くと分かりやすい。または、図等のソフト。
絵なら方眼用紙のようなもの(マトリクス)で分かります。
(グラフィック画面がそれです)
音ならたてのゆれがよこの時間になります。
(音程・細かければ高く、上下が大きければ大きい音)と言う意味でいいです。
においも音と同じゆれの圧力とみていいです。光のように見える強さです。(周波数)。
味もにおいと同じ意味です。
体感は上のものに位置(座標)(時間)(空間と距離の連鎖)と
触感の圧力・熱t・振動という原子・分子のマクロ(大きい)位置と時間の変化です。
これをまず マトリクスという配列(2次元のマス目がよい)で表します。
これを上から文字のように順にすると1列の意味です。
何個抜いて飛んだか+(プラス)が幾つかでも法則です。
これをたし算・ひき算・かけ算・わり算・ルート・ベクトル(マトリクスも)にしていきます。
順に合わせたらプログラム(計画)になります。
数字・数の入れもの、 入れものの中の数の移動・コピー、計算。
(数・文字・記号(値)(変数)(命令・式・ )
グラフィック・表示・画面
サウンド・音・効果音
操作・キー・マウス・ジョイスティック・カメラ・タッチ・動き等
通信 他多数… ファイル(外部ストレージ・SSD・(メモリ)*ハードディスク、(等))
文字列・数列 操作. 数列はベクトル・マトリクスの時もある(配列等)
分散=集中 基本公式
a[1]+a[2]+a[3]+a[4]+a[5]=b[1] のような感じのカテゴリー(種 類)分け
分散のほうは決まった固定の標準値も源につくる
集中のほうの値を分散の標準値にしてもよい
これを配列等のマトリクス等にしてもよい
使いどころによっては全体をまたはどこか短略化できる
統計と標本と確率(確定)と同じ理論(論理)です
式を単純に高速に短かくしていきます
*このサイトは外国系の教え方も混じっています。
書籍
「HSPでつくる簡単3D ゲーム」
に載っているサンプルゲームの
スティール・ランナーを改造しました。
AnyWare+制作者:Kazuya.Kiryu
http://awplus.jp/cgi-bin/page/crpay.cgi?symbol=aduHSPの書籍はキャラの動きのアルゴリズムがないので
それがあれば初心者でも作ることが出来ますよ!
サンプルはネットや書籍に沢山あります。
現在は性能や環境も含めてかなり便利なので
初心からでもここまでは出来るはずです。
ちなみに、
これをそのまま他のものにして少し変えつつ
3Dも含め まるごと全て
HSP2.61からHSP3.1にコンバート
してあります。
これはHSP3.2にもなります。
最初から最新ヴァージョンで造れば
標準セットだけで全て可能です。
現在のものはそうなのですが
これはわかりやすいし
このインタプリタはかなり万能に使えます。
あとは、コードエディターを
知らない一般にもワンキーで簡素に
使えるようにするだけです。
プログラムで出来ると言う事はそのままハードにも落とせます。
ハードにあるものはソフトにと落とせます。
理論にあるものはエミュレートで量産に落とせます。
それはシミュレート出来ます。
文字を移して書き込む時等
左ドラッグで文字を選び(左で選び押したままで移動コピーできる)
右クリックでコピーペーストする時に
右クリックをせずに
Ctrl+Z(元に戻す)
Ctrl+X(切り取り)
Ctrl+C(コピー)
Ctrl+V(貼り付け)
Delete(削除)
Ctrl+A(すべて選択)
ショートカットキーを使い速く便利に
ノートパッドやエディターで試してみてください。
他にもいろいろとあり便利です。
ショートカットは覚えると便利です。
OS上の操作だけでも使いやすくなります。
たとえば、Ctrl+何かのキー などの右クリックした時にある
アルファベットだけでも覚えた方がいいです。
ファイル操作がOSの基本です。


動画はモノによっては何も知らずに違法などに訴えると他や関連がオカシクいきますよ!?!
と、たとえば、私が紹介していると動画そのものです?!?
https://picasaweb.google.com/109752001144209568813/20110209?feat=directlinkメルマガ
神仙流で生活に役立つ未来のトータルなライフ
『アイデアプログラミング(バイブル)よく役立つ未来ライフ生活が変わったら…?』
http://kazuya3.web.fc2.com/syouhin/melmaga.html『脳によい役立つ言葉』
http://kazuya3.web.fc2.com/syouhin/syouhin1.html『KK思考法』
http://kazuya3.web.fc2.com/syouhin/syouhin2.html『気流武術詩歌詩訣』
http://kazuya3.web.fc2.com/syouhin/syouhin3.html『私が企業に提出した意見書たち』
http://kazuya3.web.fc2.com/syouhin/syouhin4.html『飲料の秘密!!闇に消えたコカ・コーラ社のトップ3人だけが知っていた魔法のレシピと秘密!広告と経営ノウハウ?』
http://kazuya3.web.fc2.com/syouhin/syouhin6.html『アメリカも開発している科学で石炭が化学変化をおこして石油に変わっていく方法!!』
http://kazuya3.web.fc2.com/syouhin/syouhin8.html『唯物論たちを含んだ推物論の一部「バイブルストーリー」』
http://kazuya3.web.fc2.com/syouhin/syouhin9.html『「そう、それでいい!」 神仙流?不健康だった…が…1日で健康と美容と気功と運動で元気になった。ブラックカードも。』
http://kazuya3.web.fc2.com/syouhin/syouhin12.html『ガンダムシリーズのミノフスキー粒子を科学で紐解いてみる』
http://kazuya3.web.fc2.com/syouhin/syouhin20.html『ラインアート 「亜光速の未来の科学」』
http://kazuya3.web.fc2.com/syouhin/syouhin13.html『超弦理論を応用した自家発電装置』
http://kazuya3.web.fc2.com/syouhin/index1.html『世界の謎の真点に対しての仮説』
http://kazuya3.web.fc2.com/syouhin/index2.html『ビジネステクニックのポイント Buisiness Praise』
http://kazuya3.web.fc2.com/syouhin/index4.html『大昔の宇宙空域による大戦争の痕跡による事実についてとは?…』
http://kazuya3.web.fc2.com/syouhin/index5.html『ホームページ・ブログ・オークション・アフィリエイト販売!!』
http://kazuya3.web.fc2.com/syouhin/index6.html『有害サイトの判断方法は?』
http://kazuya3.web.fc2.com/syouhin/index19.html


世界的?大発見!
「ブログ?『亜光速の未来の科学‐超弦原子‐シリーズ』ここに!」
大発明!新生科学?いつから・・・でしょう・・か・と、 。
「科学現号 空想科学を現実化するために... 2011-02-09 by 桐生和也」