amethyst / amethyst/rustrogueliketutorial

4.3: BSP is ... not a BSP?

オープン
#156 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Rust
スター
970
フォーク
166
PR マージ指標
30日以内にマージされた PR はありません

説明

(Still) having an awesome time following along the tutorial, thank you so much for writing it!

Section 4.3 got me confused. For context: I've heard of BSP before, but never implemented one / looked at it very closely.

The first thing that confused me was that the "B" in BSP stands for "binary", but the algorithm in the tutorial seems to subdivide each region into 4 parts, so this would be more like ... quaternary? Given that confusion, I did some quick searching and read http://www.roguebasin.com/index.php?title=Basic_BSP_Dungeon_generation. Based on that, there seem to be (at least) two major differences between the algorithm in 4.3 and BSP as described on roguebasin:

* Dividing each region into 2 vs 4 subregions
* The roguebasin description uses the tree of regions to generate corridors: it connects sister regions. The algorithm in the tutorial "just" directly connects rooms in an almost-arbitrary order. One notable difference is that the roguebasin approach allows connections between corridors, not just rooms (effectively creating junctions in corridors), providing a slightly more organic feel.

I'm pretty new to procedural generation, so first, a question: do I just have a too-narrow idea of what BSP *is*? If not, it may be good to note how exactly the algorithm given deviates from "canonical" BSP. And second: I've directly implemented the roguebasin flavor of BSP at https://github.com/abesto/rktrl/blob/f923a14d1f00216f807768c43c402fa5e11d91b4/src/mapgen/bsp_dungeon.rs within the framework set up by the previous chapters. If useful, feel free to use / share.

![bsp](https://user-images.githubusercontent.com/59982/103484981-da97ce80-4dea-11eb-9a15-1cb40692d148.gif)

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。