         
         return fragmentLines.joined(separator: "\n")
     }
-    
+
     func render() {
         version = areaMap.version
         
         mapsByPlane.removeAll()
         
-        let fillCharacter: Character = "."
         let verticalPassage = "\(fillCharacter)|\(fillCharacter)"
 
         for (plane, range) in areaMap.rangesByPlane {


        return fragment(near: room, playerRoom: playerRoom, width: width, height: height)
    }
    
    public func fragment(near room: Room, playerRoom: Room? = nil, width: Int, height: Int) -> String {
        if version == nil || version != areaMap.version {
            render()
        }
        
        guard let roomCenter = renderedRoomCentersByRoom[room] else { return "" }
        guard let map = mapsByPlane[roomCenter.plane] else { return "" }
        guard map.count > 0 && map[0].count > 0 else { return "" }
        
        let topLeftHalf = AreaMapPosition(width / 2, height / 2, 0)
        let bottomRightHalf = AreaMapPosition(width, height, 0) - topLeftHalf

        let from = upperBound(roomCenter - topLeftHalf, AreaMapPosition(0, 0, roomCenter.plane))
        let to = lowerBound(roomCenter + bottomRightHalf, AreaMapPosition(map[0].count, map.count, roomCenter.plane))
        
        var fragmentLines = [String]()

        let playerRoomCenter = playerRoom != nil
            ? renderedRoomCentersByRoom[playerRoom!]
            : nil
        for y in from.y..<to.y {
            var line = ""
            line.reserveCapacity(to.x - from.x)
            line += String(map[y][from.x..<to.x])

            if let playerRoomCenter = playerRoomCenter, playerRoomCenter.y == y {
                let leftBracketPosition = playerRoomCenter.x - roomWidth / 2

    let roomHeight = 1
    let roomSpacingWidth = 1
    let roomSpacingHeight = 1
    let fillCharacter: Character = "."

    init(areaMap: AreaMap) {
        self.areaMap = areaMap
