[最新] ■[前年|前月|前日|2019/04/17|翌日|翌月|翌年] ■表示[全て|@gorry5のみ|個別]
■グループ[Mention] ■その他[Twitter:@gorry5][日記] ■[twtlog 20100921a]

--------
04/17 00:34 @mucom88 あーでも、どんな楽器でも作るひとは両方の技能が必要なのですよ (moza)
--------
04/17 12:23 (@ttosaka) @gorry5 やはりメモ帳が最強伝説(んなわきゃない) (puse)
04/17 14:51 一時期、シードフィルのアルゴリズム研究に凝っていたことがある…というか、シードフィルの速度や機能(タイリングとか)がBASICやアドベンチャーゲームの技術的ウリになった時代がですね… :D https://twitter.com/snapwith/status/1118312700902170627 (mumo)
04/17 15:14 シードフィルというのは「注目点のピクセルを塗る→上下左右の隣のピクセルが境界色でなければそこを新しい注目点にする」をずっと(再帰的に)繰り返すことで、閉空間が塗り潰せてしまうというアルゴリズムのことなのだが、これが奥が深い… (rido)
04/17 15:50 まず「次に注目する点の探索(スキャン)」。既に塗り潰したところをまたスキャンするのは大変もったいないので、それを減らすことが最初の課題になる。そこで、ライン単位に分解して効率化しよう…ということになる (gizi)
04/17 15:50 次に「再帰的に繰り返す」作業はスタックを使うのが一般的だが、「再帰で書けることの多くはキューで書いたほうが効率がいい」の法則の通り、シードフィルもこれに従うことが多い (gizu)
04/17 15:50 また、その世代の多くのパソコンはスキャンのためのメモリすら貴重だったくらいで、境界・塗り潰し判定用のオフスクリーンバッファなぞ考えようもなかった。よって、表示バッファ(VRAM)から境界色を直接読み出し、塗り潰し色を直接描き込む必要があった (gize)
04/17 15:50 当時のVRAMは「横8pxで1バイト、それを数プレーン重ねることで多色化」という構造が一般的だったので、ここから1ピクセルの境界色を読み出し、また1ピクセルの塗り潰し色を描き込むのに「何バイトもアクセスしては論理演算を繰り返す」必要があり、これをいかに効率化するかの手腕が問われた (gizo)
04/17 15:50 更にはこの「何バイトもアクセスしては論理演算を繰り返す」部分がハードウェア支援されるようになり、特定の手法でアクセスすることで単純化できるようになった。いかにこの機能を使いこなすかの手腕も問われるように (gida)
04/17 15:50 また、多色が扱える環境では、「境界色を1つじゃなくて複数選びたい」「塗り潰しも1色じゃなくてタイルパターンを扱いたい」という要求が生まれて、複雑化していく (gidi)
04/17 15:50 ということで、「高機能のシードフィルを効率よく実装する」ことは、単純な考えから始められて、かつ多方面のアルゴリズムやハードウェア知識を要求されるテーマたりうるのであった… :D (gidu)
04/17 15:50 もっとも、今なら大抵のことは「対象サーフェスから境界ピクセルを抽出したサーフェスを作成」「そのサーフェスに対して単純なシードフィル」「シードフィルしたサーフェスをマスクにして、描き込みたい画像を合成」で済んじゃうんだけどね… :D (gide)
04/17 15:56 余談:効率的なシードフィルを試験するための「複雑な閉空間」を用意する手段として、迷路を生成する手法を覚えると便利。確か初代PC-8801なんかでこの迷路画像にPAINT命令を仕掛けると、スタックオーバーフローで死んだりするんだ…(苦笑 (gudu)
04/17 15:56 (@fm7mei) @gorry5 ……(姪はFM-7を抱えながら、話題に入れないかなーと、じっと見つめている) (gupa)
04/17 16:27 @sinpen ゲーム以外のカテゴリではどう思うんだろう… (zema)
04/17 16:30 (@sinpen) @gorry5 んー、アニメも公共放送なら好きじゃ無いし、ドラマも子供向けなら好きじゃないなあ。エロ自体はとても好きなんだけどね。ゲームに関しては、ファミ通とか4gamerとかのゲームサイトでレーティング機能してないのが嫌な感じかな。 (zegi)
04/17 16:32 @sinpen 普通のゲームは「公共放送的」「子供向け」扱い? (zepo)
04/17 16:33 (@sinpen) @gorry5 レーティングが機能していない部分に関してはそう。CEROA-DはAと考えてしまうね。Zやエロゲは扱う本やサイトとかもレーティング機能してるけど。 (zoto)
04/17 16:39 @sinpen アニメやコミックだと「R18か否か」くらいにしか分けてなくて、ゲームも国内ならその程度にしか分けなくていいや…というのはあるのかな… (danu)
04/17 16:41 (@sinpen) @gorry5 まあボクはゲーム関連の人だからゲームが目につくんじゃないかなあ。この手のゲームにイライラするのも、「メディアが取り扱い分けろよ」と思うよりは、「開発者や広報がメディアの取り扱いに口出せよ(D区分のものがA区分と同じ… https://twitter.com/i/web/status/1118419127142502405 (daze)
04/17 17:44 (@okaz6809) @gorry5 m5のBASIC-Gで出した記憶があります。後年自分でシードフィルの実装やってみて「あ、コレあっという間にメモリ食いつぶすわ」とw (piza)
04/17 19:03 当時を思い出しながらM88でさくっと迷路生成を書いてみる…道を伸ばすだけの簡単なやつね https://t.co/WS9FjUoHwf (tohe)
04/17 19:05 で、V2 BASICでペイントしてみたんだけど…これたぶんキュー(リングバッファ)溢れてるね…(苦笑 https://t.co/7GBKd9rXkC (todo)
04/17 19:16 (@RetroComPeople) @gorry5 N88-BASICはPAINT命令のキューに文字列領域の未使用部分を使用してしてますから、CLEAR命令を実行してからペイントすると「多少」は塗りつぶしが増えるかと(笑) (nuru)
04/17 19:29 しかしこれ、いかにも「古の行番号BASIC」らしい「理路整然としたハナモゲラコード」だな…大半の行がGOTOで終わるかGOTO飛び先、変数名は1文字、それでも可能な限り可読性は確保したつもりだが…(苦笑 https://twitter.com/gorry5/status/1118454856551768065 (hira)
04/17 19:32 あーでも、BASICっぽいというよりはむしろアセンブラ風味なのかな…命令数が最小になるようにコードを積んで、ジャンプで繋いで構成する感じ (huma)
04/17 19:36 (@ume3fmp) @gorry5 行並べ替えるだけで無駄なジャンプが減ってもっと可読性あがりません? これ^^; (heza)
04/17 19:53 @ume3fmp これでGOTO1つ減るかな…あと最初のPSETはループ内になくていいので出すと少し速くなるか https://t.co/jeHXnW94pc (meta)
04/17 20:18 (@ume3fmp) @gorry5 流れは追いやすくなった感じです(^^; (robu)
04/17 20:26 (@kurihiroshi) @gorry5 いやあ素晴らしい。全部セミコロンでつないでしまえ(^ ^)
04/17 20:26 (@kurihiroshi) @gorry5 あっ、N88だからコロンか。間違い間違い。 (gizu)
04/17 20:45 @kurihiroshi こんな感じですね…w https://t.co/GDDatlZ931 (zuso)
04/17 20:51 こうするとGOTOが一切なくなるのだけど、ループ変数の途中書き換え(U=-1)とか、同じ作業を2回書いてる(T=INT(RND(1)*4))のは、それはそれで美しくないよね…(苦笑 https://twitter.com/gorry5/status/1118480593702940674 (zegi)
04/17 20:59 もうちょっと稼げることがわかった… :D https://t.co/OMmhAh3ZEy (dapo)
04/17 21:56 (@SevenSpringFlo1) @gorry5 あぁ久し振りにこの手のコード読みました。全方向の書き方妙技ですね(笑)高校の頃あんまり理解できてなかった気がします。 (kiro)
04/17 22:29 ? RT @snapwith: ヒソヤカにblog更新。イース?・?通史(8):『ファナザドゥ』開発物語(1) URL:www.highriskrevolution.com (sodi)
04/17 23:18 (@kurihiroshi) @gorry5 流石!三行プログラム!当時でも勿論即採用ですなぁ。 (huno)

■グループ[Mention] ■その他[Twitter:@gorry5][日記] ■[twtlog 20100921a]
[最新] ■[前年|前月|前日|2019/04/17|翌日|翌月|翌年] ■表示[全て|@gorry5のみ|個別]