Тёмный

【レトロゲーム再現】スーパーファミコンの疑似3D 【ゲーム・プログラミング】【JavaScriptサンプル】 

ヘロンの数学ちゃんねる
Подписаться 46 тыс.
Просмотров 91 тыс.
50% 1

Опубликовано:

 

8 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 117   
@heron-no-suugaku
@heron-no-suugaku 3 года назад
★豆知識★ スーパーファミコンの「画像を切り取る」機能はモード7と呼ばれており、 1枚の画像にだけアフィン変換(並行移動・拡大縮小・回転)をかけられる……という機能です。 アフィン変換だけでは動画のような変換はできませんが、 ラスタースクロールの要領でスキャンラインごとに(横1ラインごとに)異なる変換をかけられるので、工夫すれば動画のような変換もできました。 さらに深く知りたい方は、こちらの動画(英語)を見てみてください。とても良くまとまっています。 ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-3FVN_Ze7bzw.html
@NaotoKumagai_shift
@NaotoKumagai_shift 3 года назад
20年以上前に遊んでたゲームで、ずっと疑似3Dの描画ロジックが疑問だったけど、この動画でしっくり来た
@FIDDLICA
@FIDDLICA 3 года назад
レトロなレースゲームもわりと好きだからこれまで見た中で一番楽しめた。
@subetehakusi
@subetehakusi 3 года назад
うわぁぁぁ、マリオカートこうやって擬似3Dだったんだ!!メチャクチャ納得した!!!! ありがとうございます!!
@chihaEDITTSU1460
@chihaEDITTSU1460 3 года назад
2:12からわかんないーwwww
@kenjiji
@kenjiji 3 года назад
なんだこれwwww 疑似3Dってどうやって作画しているのか意味不明だったけど、こんなかんたんな数式で表せるのか・・・ これはすごい。
@user-gg5vm3mt8f
@user-gg5vm3mt8f 3 года назад
本当にすごい… プログラマーに憧れているんですが、ヘロンさんの動画を見て逆に挫折しそうです…
@heron-no-suugaku
@heron-no-suugaku 3 года назад
これが出来なきゃプログラマーにはなれん!……なんてことは無いので、安心してください😙 今時はこういう計算は、Unityとかが代わりにやってくれます。仕事でこんな計算をする機会はほとんどないです。 じゃあなぜこんな動画を作ったのかというと、単に格好いいからです🤔
@benmuller4527
@benmuller4527 3 года назад
ゲームのプログラマーなら数学知識必須、SEなら文法力
@kouw
@kouw 2 года назад
同じこと思ってる人いてよかった。 仮に理解しても、こんな発想でこんな論理的に行動できないから応用できない。
@ahuron100
@ahuron100 3 года назад
マリカもそうだけどFF6の飛行船乗ったときを思い出した
@_nas5531
@_nas5531 3 года назад
めちゃくちゃ感動しました。 マリオカートとかも複雑に処理していた訳では無いんですね。 擬似的な3Dに変換するロジックを間に挟むだけでゲーム体験がこんなにも変わるなんて感動しました。 ネットの特定班とかは逆に立体から平面に置き換えて住宅を特定してるのかもしれないですね笑
@user-jf5hj9qw6n
@user-jf5hj9qw6n 3 года назад
特定班がその手法を使うこともあるみたいです。地図と対応するグリッド作って三角関数でうんたらかんたら
@me-ken0987
@me-ken0987 3 года назад
正にそうですね↓ ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-9ZgEEkUPL00.html
@surarin01
@surarin01 3 года назад
まさかのリアル特定班の話にまで派生するとは…計算出来るっていうのは本当面白いなぁ。そりゃ特定されるわ…
@user-hh3qq1rl3l
@user-hh3qq1rl3l 3 года назад
すごい、こうやって描画するときれいになるんだ
@user-vo8we1eo5n
@user-vo8we1eo5n 3 года назад
すっごくわかりやすい!!
@user-uo4cx9su3x
@user-uo4cx9su3x 3 года назад
普段Unityで開発してるのですが最近このチャンネルを見つけ勉強させていただいてます。 とても勉強になる動画ばっかりで最高です
@user-uo4cx9su3x
@user-uo4cx9su3x 3 года назад
本当に弟子入りさせていただきたいぐらい… 数学知識とプログラミングはやっぱり繋がるものだとは思いますがどう言ったことを意識して参考になる文献とかを探して居ますか?
@user-uo4cx9su3x
@user-uo4cx9su3x 3 года назад
実際にこういう風に紐付けながら解説されている動画はこのチャンネルでしか見たことないので参考になるサイト等あれば教えていただきたいです。
@heron-no-suugaku
@heron-no-suugaku 3 года назад
お褒めの言葉ありがとうございます^^ 自分もまだまだ勉強中🐣なので師匠にはなれませんが、、 参考文献は、webサイトなら○×つくろードットコムさん marupeke296.com/ youtubeなら、The Coding Trainチャンネル、javidx9チャンネル等ですね。 これらのチャンネルでは数学とプログラミングを紐付けて解説してます。英語ですが必見です。 Unityでの開発応援しています👍
@846k5
@846k5 3 года назад
SFCゲームソフトの開発現場で働いていたので、懐かしく拝見しました。プログラマじゃなく企画屋だったので、数式とかはさっぱりですが。 モード7とかの用語が懐かしすぎる……
@tatsuzaki
@tatsuzaki 3 года назад
こんな擬似的な手法に高低差のあるガイドビームとか加えたパイロットウイングスのプログラミングは見事としか言いようがないですね。
@user-qk5ic1we3h
@user-qk5ic1we3h 3 года назад
こういう風になってたのか! 長年の謎が解けました ありがとうございます
@TheHareruyajapan
@TheHareruyajapan 3 года назад
無駄を省いたかなりうまい教え方だなぁ現役の学生ならかなりスキルアップできそうな内容だなと数学が苦手な俺でも解る。
@user-hb2eu2hf2l
@user-hb2eu2hf2l 3 года назад
すごいプログラマ、カッコいいプログラマって 技術があるのもそうだけど、 どう実装するのかがすぐに思いつく人だよなぁ
@user-xe3xc6nw2p
@user-xe3xc6nw2p 3 года назад
この動画は凄い!!! なんか長いこと謎だった手品のネタバラシを見た気分!!
@ftg_van_kase_gubk1609
@ftg_van_kase_gubk1609 3 года назад
いやめちゃくちゃ面白かったです。
@potakot
@potakot 3 года назад
非線形って聞いたときに指数対数の関数を思い浮かべたけど、それより計算量が少ない双曲線函数のほうが描画が早いか。
@Vithe-Gaming
@Vithe-Gaming 3 года назад
まんまF-ZEROやマリカの描画ですね! ずっとどういう計算か気になってました。色々いじって遊んでみますw あと、いくつか動画を観て、とても為になるので登録しました! 色々参考にさせていただきます。
@ma7814
@ma7814 3 года назад
すごい面白かったです
@Iron_star4
@Iron_star4 3 года назад
素晴らしい解説です。 この考え方を、クセの強かったSFC上にどうやって実装したのかが、すごく気になります!
@user-yn3zu9tt9w
@user-yn3zu9tt9w 3 года назад
ほんとすげえええ
@brain0505
@brain0505 3 года назад
すごい!すごい!! 高校出たけど全然数学わからんw ベクトルって何? スキル120%に無理やり上げて改造してみました;; サンプルプログラムのページに飛び(リスト左上のSketch Files>sketch.jsを表示させる) 16行に let sp=0; を追加 188行の // 視点を回転 if (keyIsDown(68)) this.player.angle += PI/180; // Dキー if (keyIsDown(65)) this.player.angle -= PI/180; // Aキー を以下の ように変更 // 視点を回転 if (keyIsDown(RIGHT_ARROW)) this.player.angle += PI/180; // →キーが押されたら if (keyIsDown(LEFT_ARROW)) this.player.angle -= PI/180; // ←キーが押されたら if (keyIsDown(90)) { // Zキーが押されたら if(sp0) { // 速度が0になるまで sp-=0.01; // 慣性速度の減速値 this.player.pos.x += cos(this.player.angle+PI/4)*sp; this.player.pos.y += sin(this.player.angle+PI/4)*sp; } } if (keyIsDown(88)) { // Xキー if(sp>0) sp-=0.04; // 速度が0になるまで減速 } に変更すると Zキーでアクセル xキーでブレーキ ←→キーでハンドルそうさが出来るよ
@heron-no-suugaku
@heron-no-suugaku 3 года назад
サンプル共有あざます~こういうの待ってました🐤 もっと簡単に共有できる方法も↓から2分間くらいでまとめているので、気が向いたら見てみてください🐤 ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-rdGKg6VbFBo.html
@atirutwattanamongkol8353
@atirutwattanamongkol8353 3 года назад
Despite the video being in Japanese and RU-vid having a very janky subtitle translation, this video is surprisingly very easy to understand.
@toid1088
@toid1088 2 года назад
神動画にであった。ありがとう
@areamania
@areamania 3 года назад
F-ZERO当時衝撃でした、グッジョブ!今後も数理わかりやすくお願いしまーす!! 私の昔の自作ゲームのうち物理&3DっぽいのはBASICで弾道計算&高さで球の大きさ変えたコレかなぁ: ru-vid.com/group/PLzB6S7MaIGGQHEQS3esTUI7NzYSN0C2qr
@lkousin7156
@lkousin7156 3 года назад
全てを理解できたわけではないですが、なるほどと思いました。 名作天地創造の裏世界での、歪んでおるようなマップ表現も、今回のテクニックを応用したものなんだなと思って感動しました。 まるで裏話を聞いているようで、ワクワクしますね。 これからも動画楽しみにしています! ヘロンさんの影響で、数学の勉強を始めましたw
@user-jb6re5mp1f
@user-jb6re5mp1f 3 года назад
1:26 近年のマリオカートはこんな感じにコースがあえて歪んだりしてる
@naochan0207
@naochan0207 3 года назад
なにこれめっちゃ面白い
@shimane-
@shimane- 3 года назад
擬似3Dには気をつけよう!!
@user-rw9dq3op6w
@user-rw9dq3op6w 3 года назад
関数には気をつけよう!
@101goushitu
@101goushitu 3 года назад
45くらいん BGMがゆうさく
@surarin01
@surarin01 3 года назад
直感や閃きでプログラムでゲーム作ってた人間にも分かり易くて凄い動画見つけちゃったな。 数学的にってのがどうにもダメダメで…プログラム動かしてとりあえずこう動くんだよと説明するしかない。 これを見てるとJavaScriptの世界がめっちゃ面白そうだなぁ。
@surarin01
@surarin01 3 года назад
キャラクターの判定とマップを手打ちからエディターで作成読み込みでレースは出来ないまでも…らしい形は作れそう。 こういう凄いの紹介してんだもんなぁ。時代はもう普通一般でも実践的なプログラミングの時代なんだなーと感じる。 ソースも見てみましたが割と記述した事が無くても比較的他の言語のノリで理解出来ますね。 「This」で定義するのとか逆に分かりやすい…寧ろこっちから学校で学んで見たかったな。 VBからC++、Javaの基礎程度まで…動画主に直接師事出来た人は幸せものですな。笑
@surarin01
@surarin01 3 года назад
レースゲームもそうなんですが、疑似3Dの名作といえばフライトシミュレーションの「パイロットウイングス」とか、まんま動画中でもやってたソースの高さだとかの概念加えるだけで出来ちゃうんすね。あのゲームの凄さが今更ながら改めて凄いなと思ってしまいました。 当たり判定式は既存の物でいいけれど描画面で知識が欠落していて…どうやってんだろうと思っていましたが、まさかプログラムを離れて久しく興味を持って開いた動画で答えの一端を知ってしまう事になるとは。 それを教える事が出来る人は本当偉大だなぁ。往年の名作もどきとか作ってみたくなりますよ。
@kimetsu_kids
@kimetsu_kids 3 года назад
天地創造のフィールド、クロノトリガー、聖剣2、FF5いろんなゲームであったね
@from2m488
@from2m488 3 года назад
すげえ
@benmuller4527
@benmuller4527 3 года назад
この話昔任天堂関連の仕事してた時現地の人に聞いたなぁ…
@awsenm
@awsenm 3 года назад
スターフォックスの話かと思ったら違ったww
@user-wb1ne8vr9d
@user-wb1ne8vr9d 3 года назад
すみません、とても分かりにくいなというのが正直な感想です。 たぶん「画面上の任意のピクセルに対応するマップ上の座標をどうやって求めるか?」の話をしているはずなので素直に(x, y)の式で書いた方が分かりやすかったんじゃないでしょうか? h, vはマップ上の任意の点SをLとRで表現するための値だったはずなのにf(v)なんて関数が出てくるから非常に混乱します。少なくとも私はvって一体何だったっけ?ってなりました。最初に書いた通り画面上のピクセルに対応するマップ上の座標を求める変換式を考えているのだから、これ本来はyの関数f(y)と表現すべきだったんじゃないでしょうか?
@HINOKI_open-air
@HINOKI_open-air 2 года назад
この動画のテーマは 「2Dのマップデータ(上画面)を3Dっぽく表示する(下画面)にはどーすりゃええの?」 やる事ぁ一緒でも論理が逆だからf(v)の変換が唐突に感じるんやろ あと、(h,v)はhorizontial(水平)とvartical(垂直)で媒介変数のデファクトスタンダードやで
@GoToHome_Campaign
@GoToHome_Campaign 3 года назад
やっぱプログラムに数学は必要なんだよなぁ
@keepbryan6697
@keepbryan6697 3 года назад
いい講座ありがとうございます。だけど文系である私としては公式が難しいですわ…
@nonameavailableatm
@nonameavailableatm 3 года назад
理解できなくてもなるほどと思えれば十分
@paseri9697
@paseri9697 Год назад
製図で投影するのと似たような感じかな
@yakyuyone
@yakyuyone Год назад
結論 : プログラマーは神
@user-bv9yy2yr9p
@user-bv9yy2yr9p 3 года назад
視点の高さをLとして f(v)=L•tan(vπ/2) みたいな
@user-bv9yy2yr9p
@user-bv9yy2yr9p 3 года назад
これだと視点から真下まで見えてる事になるので視線の水平から-45度より下を切り落とさないといけないからtanの位相を45度分変えて、変数vは45度より先の部分の値を返すようにしたいから f(v)=L・tan(vπ/4+π/4)=L・tan{(v+1)π/4} が正しいな そう考えると1/xとtan(x)は割といい近似だしnの値が視点の高さになるのも納得
@macbookpro3098
@macbookpro3098 3 года назад
f-zero好きやで 生み出してくれた感謝は任天堂にはあるけど見捨てたのは死ぬまで許せないわ
@noname-zs1eq
@noname-zs1eq 3 года назад
任天堂「恨むのなら出来の良い弟(マリカー)を恨むんだな…」
@user-ly9vg7bp6l
@user-ly9vg7bp6l 3 года назад
俺が任天堂に入社して復活させるから待っとけよ~
@user-vd4ew9fg8l
@user-vd4ew9fg8l 3 года назад
美しい数字だ。
@KamenRingo
@KamenRingo 3 года назад
このやり方をスーファミ発売前に完成させてるからすごいよな… まあ終盤はポリゴンも出てくるんだけど 何言ってるかわかんねぇけど(高3文系脳の理系クラス)
@user-zo8qn7qc7m
@user-zo8qn7qc7m 3 года назад
ゆうさくのbgm
@typer9048
@typer9048 3 года назад
わかったけどね
@user-zy4fd9no3x
@user-zy4fd9no3x 3 года назад
高さ変えるのは面倒くさそうだなぁと思ったら簡単だった
@furan8477
@furan8477 3 года назад
It would be so nice to have English subtitles :( so bad I don't speak Japanese!
@yakyuyone
@yakyuyone 3 года назад
プログラマーになりたいけど数学が無理だから オワタ
@user-xc2bs7wy5l
@user-xc2bs7wy5l 2 года назад
出だしから「へえ~~~~~」なんだよなあ すごい
@TranquilFlames_EU
@TranquilFlames_EU 3 года назад
双曲線でいいのか、、、、まじか、、、
@user-tw7zz8br6q
@user-tw7zz8br6q 3 года назад
遠近感の部分よりも、1:00からこの機能の内容がわからない。 視点に対して、予めマップを持つの?
@user-ig6tb8cr5v
@user-ig6tb8cr5v 3 года назад
数学って役に立つんだなぁ
@user-vd4ew9fg8l
@user-vd4ew9fg8l 3 года назад
そう言う遊び心を学ぶキミは 天才だよ(≧▽≦)
@tatsuya-games
@tatsuya-games 3 года назад
はじめまして! 質問なのですが、マップに色を付けるにはどうしたら良いでしょうか…?
@heron-no-suugaku
@heron-no-suugaku 3 года назад
. // 下画面を描画 noStroke(); fill(255); // すべてのピクセルに対し…… for(let p2=320; p2
@tatsuya-games
@tatsuya-games 3 года назад
@@heron-no-suugaku そうなんですね! ありがとうございます!
@user-ws6om9wy1g
@user-ws6om9wy1g 3 года назад
面積が長さの2乗に反比例するからf(v)も-2乗になるかなと思ったけど、-1なことには何か理由があるのか?
@user-lp7nm2nm2y
@user-lp7nm2nm2y 3 года назад
視点を動かすところの説明が欲しいかな。 描画する範囲が決まってから上下画面のピクセルを対応づけると思いますが。 そもそもどうやって描画する範囲が決まるのでしょう?
@Geek-zl6bs
@Geek-zl6bs 3 года назад
本人ではなく、横からすみません。 視点の回転は、見ている方向ベクトルを回転させるだけで出来ます。 cos(コサイン), sin(サイン)の式を使います。 視点の位置が原点にない場合は、原点で回転させたベクトルに対して視点の位置ベクトル(x,y)をそれぞれ加算します。 ちなみに描画する範囲は、動画の2:10あたりの左のベクトルLと右のベクトルRの範囲で決まります。
@doltzmagokoro5708
@doltzmagokoro5708 3 года назад
イイ! すごくイイ!
@namamono891
@namamono891 3 года назад
モードセブンとか思い出したw
@yosi1989
@yosi1989 3 года назад
Mode7の説明かぁ
@大掃除
@大掃除 3 года назад
でもこの技術ってマリオカートとスタフォとエフゼロぐらいでしか使われてないよね
@un_chi
@un_chi 3 года назад
パイロットウイングス🥺
@大掃除
@大掃除 3 года назад
@@un_chi あれSFCからあったんか64からだと思ってたわ
@gwingggg5
@gwingggg5 3 года назад
この技術、思い出してみると色々なソフトに使われてますね ファイナルファンタジーや聖剣伝説など、帆船や飛空艇移動する際などワールドマップを斜め上から見下ろす視点や SFC最初期の傑作「アクトレイザー」で空から地上へグルグル回転しながら降下するシーンにも使われているのではないかと
@大掃除
@大掃除 3 года назад
@@gwingggg5 なんかffにこれ使われてるシーンがあった気がする
@enikaita_mochi
@enikaita_mochi 3 года назад
数学って何に使うの?ってよく聞きますけど、プログラミングやる上では必須科目だと思います。(最低限数学Cまで学習すべきかなぁと)
@user-gk7ox3nz6v
@user-gk7ox3nz6v 3 года назад
弟子入り志願します。
@yossy114
@yossy114 3 года назад
エフゼロやん!
@user-rv4nr6kt8p
@user-rv4nr6kt8p 3 года назад
聖剣伝説2,3のマップこういう感じか、誰かドット聖剣5作って
@edalogo7605
@edalogo7605 3 года назад
ナニイッテンノカワカンネ
@CIVIZARD
@CIVIZARD 3 года назад
うん、何を言ってるのかさっぱりわからん! なんで俺はこの動画をみてるんだろう・・・
@donmisosoup5622
@donmisosoup5622 3 года назад
いつからプログラミングを始めたんですか?
@heron-no-suugaku
@heron-no-suugaku 3 года назад
小学生の頃ですね。ひまわりという言語を最初に触り、そこからHSPやUnityへ移行しつつゲームをよく作っていました。 ですからプログラミング歴十数年!wと言いたいのですが……数学が全くできなかったので、プログラムもゲームの出来も見るに耐えないものでした。 そんな状況がつい1年前まで続いていたので、正直その十数年は無かったようなものです。実質プログラミング歴1年ですね。 見方を変えれば、数学さえできればプログラミングは1年程度でここまで上達するとも言えます。😎
@donmisosoup5622
@donmisosoup5622 3 года назад
@@heron-no-suugaku 挨拶も無い無礼な私の質問に対して素早く丁寧にお返事をくださり、ありがとうございます。 私は、3週間前にプログラミングを始めてその面白さを知り、つい一昨日Javaで「日本語を英訳させるクイズをランダムで出題するアプリ」を作り終えた、22歳の男です。 何か新しい気づきを得ることができないかとRU-vidを見ていたところ、あなたを知りました。 ゲーム「Call of Duty」歴9年の僕にとって、馴染みのあるFPSの作成を通して数学の重要性を教えてくれるあなたは、とてもありがたい存在です。これからも良質な動画投稿をよろしくお願いします。
@surarin01
@surarin01 3 года назад
@@heron-no-suugaku マジかぁ…笑 遍歴が面白いなぁ。数学が分かると弾幕STGとかの弾幕デザインとか出来るのが分かってるけど全然私も数学はダメだった。 そんな所から初めてこの動画の内容までとなると本当凄いなぁ。
@101goushitu
@101goushitu 3 года назад
BGMなに?
@tolkichi2000
@tolkichi2000 3 года назад
いや、プログラムに数学がー。とか、仕様/設計決まってないとコード組めません。と等しい技術レベルな気がするのですが…( ̄ー ̄)
@unknown-mq3qc
@unknown-mq3qc 3 года назад
BGMがきたない
@ゆっくりかずいとん
@ゆっくりかずいとん 3 года назад
小学生の僕にはベクトルとかわかりません。もっとわかりやすいようにしてください
@514yjsnpi
@514yjsnpi 3 года назад
BGM…
@mishirom
@mishirom 3 года назад
はじめまして。JavaScript勉強させて頂いております。 とてもわかりやすく感動しております^^素晴らしい。 サンプルファイルについてお尋ねします。 オフライン学習用にサンプルファイルをダウンロード、 実行すると、Loading...のまま動作しないサンプルがあります。 以下、動作OK、NGリストです。 解決方法はございますか?お教え頂けたら幸いです。 ◆動作環境 Windows10 Home ブラウザ:Google Chrome バージョン: 87.0.4280.141 長文失礼しました。。 ---------------------動作OK--------------------- 01. 高校数学とJavaScriptだけ。FPSの作り方 #1【ゲームプログラミング】【ゲーム開発】 retrofps_part1 02. 高校数学とJavaScriptだけ。FPSの作り方 #2 三角関数で歪み補正【ゲームプログラミング】【ゲーム開発】 retrofps_part2 03. 高校数学とJavaScriptだけ。FPSの作り方 #3 剰余(mod)の使い方【ゲームプログラミング】【ゲーム開発】 retrofps_part3 (X)04. 元ゲーム会社のプログラマー、テトリス何分で作れる?【JavaScriptプログラミング】 tetris 05. 自機狙い弾でわかる、ベクトルと逆正接【ゲーム・プログラミング講座】【JavaScriptサンプル】 StgSniper 06. レトロゲームっぽい画面を作る 【ゲーム・プログラミング講座】【JavaScriptサンプル】 IsoTile ---------------------動作NG--------------------- (X)07. 【インストール不要】JavaScript + p5.js まるわかり講座、前編。【ゲーム・プログラミング】【初心者向け入門】 blockbreak_part1 (X)08. 【インストール不要】JavaScript + p5.js まるわかり講座、後編。【ゲーム・プログラミング】【初心者向け入門】 blockbreak_part2_classified blockbreak_part2_final blockbreak_part2_reflection (X)09. 「元に戻す」のしくみ 【ゲーム・プログラミング】【JavaScriptサンプル】 sokoban (X)10. 【レトロゲーム再現】スーパーファミコンの疑似3D 【ゲーム・プログラミング】【JavaScriptサンプル】 retrokart (X)11. ハッカーなら会社救える説 【プログラミング実況】【JavaScript】 mine (X)12. JavaScript + p5.js まるわかり講座、補足編。 blockbreak_part3 (X)13. 高校数学でマンデルブロ集合を描いてみた 【プログラミング実況解説】 mandelbrot (X)14. トルネコや風来のシレンができるまで 【ハイテンポ・プログラミング】 rogue
@heron-no-suugaku
@heron-no-suugaku 3 года назад
検証ありがとうございます。こちらでも再現しますね。 セキュリティ上の理由で、JavaScriptは基本的に、ファイルを開いただけでは実行できないようになっているのですが 古いバージョンのp5.jsはたまたま動いてしまうようです。 見た感じ、動作OKのものは古いバージョンを使っていますね。 解決策は、いわゆる「ローカルサーバー」を立てることです。 Google Chromeを使っているなら、↓を導入するのが一番簡単です。 サンプルファイルの入っているフォルダを指定して、出てきたリンクをクリックするだけで遊べるはずです。 chrome.google.com/webstore/detail/web-server-for-chrome/ofhbbkphhbklhfoeikjpcbhemlocgigb?hl=ja
@mishirom
@mishirom 3 года назад
こんばんは。ローカルで動作しました!!! 早々にお返事頂きありがとうございます。 なるほど~ローカルサーバーを立てて実行なのですね! この辺は全く未知の世界ですが、まずは、プログラミンから勉強します。 今後とも、どうぞ、よろしくお願いします^^
@m.mishima9485
@m.mishima9485 3 года назад
難しく考えすぎ ラスタ毎にスクロール位置と回転・拡縮パラメータ変更しているだけ ラスタはPALで240本程なので、計算済のパラメータを240個ほど持っておけば済みます。1ラスタ毎に毎回計算する必要はありません。スクロール位置だけ加算すればOKです。
@HINOKI_open-air
@HINOKI_open-air 2 года назад
この動画の趣旨って擬似2D変換の数学を学ぶ事だから貴方の言う「計算済みのパラメータ240個用意する」フレーム毎処理までしか語っとらんのでは? ってかファミコンってラスター毎の割り込み処理してたんか。なんか画面グニャりそう
@m.mishima9485
@m.mishima9485 2 года назад
@@HINOKI_open-air この頃のCPUでは掛け算割り算が非常に遅く、数学的な計算をしていては何もできなくなります。掛け算割り算は加減算に展開するか、事前に計算した近似値で代替することになります。実際の画面を見てみれば、かなりいいかげんな計算をして歪んだ映像になっていることが見て取れますが、それでもゲームとして成立しています。現在の一般的なPCの数万分の1未満の計算能力しか無いことを考慮しなければなりません。 任天堂系は、ゼロスプライト割込みをラスタ割込みとして利用します。特定のスプライトが描画される際に割込みがかかり、割込み処理内でスプライトの位置を変更することで再割込みを発生させます。 セガ系はラスタ毎に位置情報を読み込むモードを持っていて、VRAMの一部を割り当ててラスタテーブルにします。
@HINOKI_open-air
@HINOKI_open-air 2 года назад
@@m.mishima9485 >数学的処理に時間かかり過ぎる それってつまりこの動画みたいな『任意位置、任意方向の描画』は端っから無理でやってないという理解であってるでしょうか? カメラの軌道を固定して、コース情報を事前処理で縦に長いスクロールに落とし込んでる、みたいな感じでしょうか?
@m.mishima9485
@m.mishima9485 2 года назад
@@HINOKI_open-air 最も基本になるのはDDAというアルゴリズムです。ラスタ描画ハードでは、全てを水平線に分割する必要があるので、DDAを元に始点位置などを求めます。 DDA自体が、数学の式展開により求められる方法だという解釈もありますが、コンピュータ上における数学は実数のみで、無限の概念や虚数などは存在できません。 微積の概念から無限を取り去った場合、deltaはどのようになるでしょうか? それがコンピュータ上における数学となり、考え方となります。
@user-dh8uz4to9m
@user-dh8uz4to9m 3 года назад
GeoGebraは商用利用駄目な。
@user-up4hs3cj5v
@user-up4hs3cj5v 3 года назад
わけわかめ
@hehehe5jp
@hehehe5jp 3 года назад
うーん。わからん
@hoge1853
@hoge1853 2 года назад
ゆゆうたみたいな喋り方やな
Далее
How to (not) code a Reversi
5:35
Просмотров 182 тыс.
Нарвался на сотрудника ФСБ⚡️
01:00
Non-Euclidean Worlds Engine
5:15
Просмотров 11 млн
How I Made a 3D Platformer in 2D Game Engine
21:23
Просмотров 484 тыс.
Collision detection - Coding for Beginners
16:18
Просмотров 82 тыс.
The Most Impressive Scratch Projects
11:00
Просмотров 4,9 млн
Can AI code Flappy Bird? Watch ChatGPT try
7:26
Просмотров 9 млн
Roguelike dungeon - Coding Commentary
8:32
Просмотров 55 тыс.
Нарвался на сотрудника ФСБ⚡️
01:00