Skip to content

Maps zh TW

Shiraishi_AKi edited this page Oct 6, 2026 · 1 revision

Map ๅœฐๅœ–็ณป็ตฑ

English | ็น้ซ”ไธญๆ–‡ | ๆ—ฅๆœฌ่ชž | ํ•œ๊ตญ์–ด

BIT8_CLI ๆไพ›ไปฅ Tile ็‚บๅŸบ็คŽ็š„ Map ็ณป็ตฑ๏ผŒ็”จไพ†ๅปบ็ซ‹ 2D ้Šๆˆฒไธ–็•Œใ€‚

Map ไฝฟ็”จๅทฒ่จปๅ†Š็š„ Asset ID๏ผŒๆ”ฏๆด่ชฟๆ•ดๅœฐๅœ–ๅฐบๅฏธ๏ผŒไนŸๅฏไปฅๅŒ…ๅซ Node ่ˆ‡ Cameraใ€‚

ๆœฌๆŒ‡ๅ—ไป‹็ดน BIT8_CLI 0.1.0 ็š„ Map ็ณป็ตฑใ€‚

1. Map ๆฆ‚่ฆฝ

BIT8_CLI ไฝฟ็”จๅ›บๅฎš็š„ Tile ๅฐบๅฏธ๏ผš

8 ร— 8 ๅƒ็ด 

้ ่จญ Map ๅฐบๅฏธ็‚บ๏ผš

64 ร— 64 Tiles

Map ็š„ๅฏฌๅบฆ่ˆ‡้ซ˜ๅบฆๅฏไปฅ่จญๅฎš็‚บ๏ผš

1 ่‡ณ 256 Tiles

Map Cell ็š„ๆœ€ๅคง็ธฝๆ•ธ็‚บ๏ผš

65,536

Map ๅฐบๅฏธ่ˆ‡้Šๆˆฒ็š„ 64ร—64 framebuffer ไบ’็›ธ็จ็ซ‹ใ€‚

ๅ› ๆญค๏ผŒMap ๅฏไปฅๆฏ”ๅฏฆ้š›้กฏ็คบ็š„้Šๆˆฒ็•ซ้ขๅคงๅพˆๅคšใ€‚

2. Map ๆช”ๆกˆ

BIT8_CLI ไฝฟ็”จไปฅไธ‹ๅ‰ฏๆช”ๅๅ„ฒๅญ˜ Map๏ผš

.b8map

ไพ‹ๅฆ‚๏ผš

world.b8map

Map ๆช”ๆกˆๅŒ…ๅซ Tile ่ณ‡ๆ–™๏ผŒไนŸๅฏไปฅๅฎš็พฉ Node ่ˆ‡ Cameraใ€‚

ๅฐˆๆกˆ็ตๆง‹ๅฏ่ƒฝๅฆ‚ไธ‹๏ผš

my-bit8-game/
โ”œโ”€โ”€ main.b8
โ”œโ”€โ”€ bit8.assets.toml
โ”œโ”€โ”€ world.b8map
โ””โ”€โ”€ assets/
    โ””โ”€โ”€ terrain (A).png

้€™ๆ˜ฏ็คบๆ„ๆ€ง็š„ๅฐˆๆกˆ็ตๆง‹ใ€‚

3. Map ๅบงๆจ™

Map ไฝฟ็”จ Tile ๅบงๆจ™ใ€‚

ๆฏๅ€‹ Map Cell ไปฃ่กจ้Šๆˆฒไธ–็•Œไธญ็š„ 8ร—8 ๅƒ็ด ๅ€ๅŸŸใ€‚

ไพ‹ๅฆ‚๏ผš

Tile (0, 0) โ†’ ไธ–็•Œๅƒ็ด  (0, 0)

Tile (1, 0) โ†’ ไธ–็•Œๅƒ็ด  (8, 0)

Tile (2, 0) โ†’ ไธ–็•Œๅƒ็ด  (16, 0)

Tile (0, 1) โ†’ ไธ–็•Œๅƒ็ด  (0, 8)

Tile ๅบงๆจ™่ฝ‰ๆ›ๆˆๅƒ็ด ๅบงๆจ™็š„ๅ…ฌๅผ๏ผš

pixel_x = tile_x ร— 8
pixel_y = tile_y ร— 8

ไพ‹ๅฆ‚๏ผŒTile (5, 3) ๅฐๆ‡‰ไธ–็•Œๅƒ็ด ๅบงๆจ™ (40, 24)ใ€‚

4. Map Cell

ๆฏๅ€‹ Map Cell ้ƒฝๅฏไปฅๅผ•็”จๅทฒ่จปๅ†Š็š„ Tileใ€‚

ไพ‹ๅฆ‚๏ผš

A1
A2
A3

้€™ไบ›่ญ˜ๅˆฅ็ขผๅฐๆ‡‰ๅˆฐ๏ผš

bit8.assets.toml

ไธญๅทฒ่จปๅ†Š็š„ Tilesheetใ€‚

็ฉบ็™ฝ Map Cell ไฝฟ็”จ๏ผš

--

่กจ็คบใ€‚

็ฐกๅŒ–็š„ Map ๅฏ่ƒฝ้•ท้€™ๆจฃ๏ผš

A1 A1 A1 A1 A1
A1 -- -- -- A1
A1 -- A2 -- A1
A1 -- -- -- A1
A1 A1 A1 A1 A1

้€™ๅชๆ˜ฏ Map Cell ็š„ๆฆ‚ๅฟต็คบๆ„๏ผŒไธๆ˜ฏๅฎŒๆ•ด็š„ .b8map ๆช”ๆกˆๆ ผๅผใ€‚

5. ็นช่ฃฝ Map

ไฝฟ็”จ map() ็นช่ฃฝ็›ฎๅ‰็š„ Mapใ€‚

func draw()
    cls(0)
    map()
end

้€™ๆœƒๆธ…้™ค framebuffer๏ผŒไธฆ็นช่ฃฝ Mapใ€‚

ๅฏฆ้š›ๅฏ่ฆ‹็ฏ„ๅœๅ–ๆฑบๆ–ผ framebuffer ่ˆ‡็›ฎๅ‰ๅ•Ÿ็”จ็š„ Cameraใ€‚

ๅฎŒๆ•ดๅƒๆ•ธ็ดฐ็ฏ€ๆ‡‰ไปฅๅฐๆ‡‰็‰ˆๆœฌ็š„ BIT8_CLI ๅŽŸๅง‹็ขผ็‚บๆบ–ใ€‚

6. ่ฎ€ๅ– Map Cell

BIT8_CLI ๆไพ›๏ผš

mget(...)

้€™ๅ€‹ API ๅฏไปฅ่ฎ€ๅ– Runtime Map ไธญ็š„ Tile ๅ€ผใ€‚

Map ๆ“ไฝœไฝฟ็”จ Tile ๅบงๆจ™๏ผŒ่€Œไธๆ˜ฏๅƒ็ด ๅบงๆจ™ใ€‚

7. ไฟฎๆ”น Map Cell

BIT8_CLI ๆไพ›๏ผš

mset(...)

้€™ๅ€‹ API ๅฏไปฅไฟฎๆ”น Runtime Map ไธญ็š„ Tile ๅ€ผใ€‚

Runtime Map ไฟฎๆ”นๆœƒๅฝฑ้ŸฟๆญฃๅœจๅŸท่กŒ็š„้Šๆˆฒ็‹€ๆ…‹ใ€‚

้€™่ˆ‡้€้Ž Editor ๅฐ‡ไฟฎๆ”นๅ„ฒๅญ˜ๅ›žๅŽŸๅง‹ .b8map ๆช”ๆกˆไธๅŒใ€‚

8. Map Workspace

BIT8_CLI ็š„ VS Code Extension ๅ…งๅปบ Map Workspaceใ€‚

Map Workspace ๆไพ›่ฆ–่ฆบๅŒ–็š„ๅœฐๅœ–็ทจ่ผฏๅทฅๅ…ทใ€‚

ๅŒ…ๅซ๏ผš

  • Map ็•ซๅธƒ
  • Tile ้ธๆ“‡
  • Tile ็นช่ฃฝ
  • Map Cell ๆชข่ฆ–
  • ็ธฎๆ”พๆŽงๅˆถ
  • Node ้ธๆ“‡่ˆ‡็ทจ่ผฏ
  • Camera ่ฆ–่ฆบๅŒ–
  • ๅฑฌๆ€งๆชข่ฆ–

Map Workspace ไฝฟ็”จ่ˆ‡ Runtime ็›ธๅŒ็š„ๅบ•ๅฑคๅฐˆๆกˆ่ณ‡ๆ–™ใ€‚

Editor ไป‹้ขๆœฌ่บซไธๆ˜ฏ Map ่กŒ็‚บ็š„ๆœ€็ต‚ๅฎš็พฉไพ†ๆบใ€‚

9. Map ไธญ็š„ Node

Map ๅฏไปฅๅŒ…ๅซ Nodeใ€‚

Node ๅฏไปฅๅฎš็พฉ๏ผš

  • ็ฉฉๅฎš็š„ Node ID
  • ๅ็จฑ
  • ไฝ็ฝฎ
  • ๅ•Ÿ็”จ็‹€ๆ…‹
  • Script ๅƒ็…ง
  • ้ธ็”จ็š„ Sprite ๅƒ็…ง
  • ้ธ็”จ็š„ Collider

Node ๆ˜ฏ้Šๆˆฒไธ–็•Œ็ตๆง‹็š„ไธ€้ƒจๅˆ†ใ€‚

Node Script ๅฏไปฅๅœจ Runtime ๅŸท่กŒๆœŸ้–“ๆŽงๅˆถๅ…ถ่กŒ็‚บใ€‚

ไพ‹ๅฆ‚๏ผš

func update()
    self.x = self.x + 1
end

่ฉณ็ดฐ่ณ‡่จŠ่ซ‹้–ฑ่ฎ€ Nodeใ€‚

10. Map ไธญ็š„ Camera

Map ๅฏไปฅๅŒ…ๅซ Camera Nodeใ€‚

Camera ๆฑบๅฎš้Šๆˆฒไธ–็•Œไธญๅ“ชๅ€‹ๅ€ๅŸŸๆœƒ้กฏ็คบๅœจ็•ซ้ขไธŠใ€‚

BIT8_CLI ไฝฟ็”จ 64ร—64 Viewportใ€‚

Camera ๅบงๆจ™ไปฃ่กจ Viewport ็š„ไธญๅฟƒใ€‚

ๆ”ฏๆดไธ–็•Œๅบงๆจ™็š„็นชๅœ–ๆ“ไฝœๆœƒไพ็…ง็›ฎๅ‰ๅ•Ÿ็”จ็š„ Camera ้€ฒ่กŒ่ฝ‰ๆ›ใ€‚

่€Œ่žขๅน•ๅบงๆจ™็นชๅœ–ๆ“ไฝœ๏ผŒไพ‹ๅฆ‚๏ผš

cls(0)
pix(32, 32, 7)

ไป็„ถไฝฟ็”จ่žขๅน•ๅบงๆจ™ใ€‚

่ฉณ็ดฐ่ณ‡่จŠ่ซ‹้–ฑ่ฎ€ Cameraใ€‚

11. Solid Tile ่ˆ‡ Collision

ๅทฒ่จปๅ†Š็š„ Tile ๅฏไปฅ่จญๅฎš็‚บ Solidใ€‚

ไพ‹ๅฆ‚๏ผš

solid = [6]

ไปฃ่กจๅฐๆ‡‰ Tilesheet ็š„็ฌฌๅ…ญๅ€‹ Tile ่ขซๆจ™่จ˜็‚บ Solidใ€‚

Solid Tile ๅœจ็ขฐๆ’žๅˆคๅฎšไธญไฝ”ๆ“šๅฎŒๆ•ด็š„ 8ร—8 ๅƒ็ด ๅ€ๅŸŸใ€‚

Node ๅฏไปฅ้€้Ž๏ผš

self:collide(dx, dy)
self:move(dx, dy)

่ˆ‡ Solid Tile ้€ฒ่กŒ็ขฐๆ’žๅˆคๅฎšใ€‚

่ฉณ็ดฐ่ณ‡่จŠ่ซ‹้–ฑ่ฎ€ Collisionใ€‚

12. Map ๅฐบๅฏธ่ˆ‡ๆ•ˆ่ƒฝ

ๆœ€ๅคงๆ”ฏๆด Map ๅฐบๅฏธ๏ผš

256 ร— 256 Tiles

ๆœ€ๅคง Cell ๆ•ธ้‡๏ผš

65,536 Cells

Map ไธ้œ€่ฆ้™ๅˆถๅœจ 64ร—64 framebuffer ๅ…งใ€‚

็›ฎๅ‰่ฆ–่ง’ๅชๆœƒ้กฏ็คบไธ–็•Œ็š„ไธ€้ƒจๅˆ†ใ€‚

่จญ่จˆๅคงๅž‹ Map ๆ™‚๏ผŒไปๆ‡‰่€ƒๆ…ฎ้Šๆˆฒ็š„็นช่ฃฝ่ˆ‡ๅŸท่กŒ้œ€ๆฑ‚ใ€‚

13. ็›ฎๅ‰้™ๅˆถ

BIT8_CLI 0.1.0 ๆไพ›ไปฅ Tile ็‚บๅŸบ็คŽ็š„ Map ็ณป็ตฑใ€‚

ไปฅไธ‹ๅŠŸ่ƒฝๅฐšไธๅฑฌๆ–ผๅทฒ็ขบ็ซ‹็š„ 0.1.0 Map ็ณป็ตฑ๏ผš

  • ๅคšๅ€‹็จ็ซ‹ Map Layer
  • ็›ดๆŽฅๆ”พ็ฝฎๅคงๅž‹่ƒŒๆ™ฏๅœ–็‰‡ไฝœ็‚บไธ–็•Œ็‰ฉไปถ
  • ๅฎŒๆ•ด็‰ฉ็†ๅผ•ๆ“Ž

้€™ไบ›ๅŠŸ่ƒฝๅฏไปฅๅœจๆœชไพ†็‰ˆๆœฌไธญ็นผ็บŒๆŽข็ดขใ€‚

ไธ‹ไธ€ๆญฅ

็นผ็บŒ้–ฑ่ฎ€๏ผš

Node

็›ธ้—œๆ–‡ไปถ๏ผš

Map ๅฎš็พฉไธ–็•Œ๏ผŒNode ็‚บไธ–็•Œๅธถไพ†่กŒ็‚บใ€‚

Clone this wiki locally