<!--
{
  "documentType" : "article",
  "framework" : "SpriteKit",
  "identifier" : "/documentation/SpriteKit/creating-a-tile-map-programmatically",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Creating a Tile Map Programmatically"
}
-->

# Creating a Tile Map Programmatically

## Overview

The collection of functions you use to create a tile map node programmatically.

> Tip:
> You can create a tile map node much quicker by using Xcode’s SpriteKit Scene Editor.

## Topics

### Creating a Tile Map

[`init(tileSet: SKTileSet, columns: Int, rows: Int, tileSize: CGSize)`](/documentation/SpriteKit/SKTileMapNode/init(tileSet:columns:rows:tileSize:))

Creates and initializes a tile map node using the provided tile set with a specified number of columns and rows.

[`init(tileSet: SKTileSet, columns: Int, rows: Int, tileSize: CGSize, fillWith: SKTileGroup)`](/documentation/SpriteKit/SKTileMapNode/init(tileSet:columns:rows:tileSize:fillWith:))

Creates and initializes a tile map node using the provided tile set with a specified number of columns and rows.

[`init(tileSet: SKTileSet, columns: Int, rows: Int, tileSize: CGSize, tileGroupLayout: [SKTileGroup])`](/documentation/SpriteKit/SKTileMapNode/init(tileSet:columns:rows:tileSize:tileGroupLayout:))

Creates and initializes a tile map node using the provided tile set with a specified number of columns and rows. For a grid set type, the overall size, in points, of the node will be `numberOfColumns * tileSize.width` wide and `numberOfRows * tileSize.height` high.

[`class func tileMapNodes(tileSet: SKTileSet, columns: Int, rows: Int, tileSize: CGSize, from: GKNoiseMap, tileTypeNoiseMapThresholds: [NSNumber]) -> [SKTileMapNode]`](/documentation/SpriteKit/SKTileMapNode/tileMapNodes(tileSet:columns:rows:tileSize:from:tileTypeNoiseMapThresholds:))

Creates a tile map node by allowing a <doc://com.apple.documentation/documentation/GameplayKit/GKNoiseMap> to choose its tiles.

[`+ (instancetype) tileMapNodeWithTileSet:(SKTileSet *) tileSet columns:(NSUInteger) columns rows:(NSUInteger) rows tileSize:(CGSize) tileSize;`](/documentation/SpriteKit/SKTileMapNode/tileMapNodeWithTileSet:columns:rows:tileSize:)

[`+ (instancetype) tileMapNodeWithTileSet:(SKTileSet *) tileSet columns:(NSUInteger) columns rows:(NSUInteger) rows tileSize:(CGSize) tileSize fillWithTileGroup:(SKTileGroup *) tileGroup;`](/documentation/SpriteKit/SKTileMapNode/tileMapNodeWithTileSet:columns:rows:tileSize:fillWithTileGroup:)

[`+ (instancetype) tileMapNodeWithTileSet:(SKTileSet *) tileSet columns:(NSUInteger) columns rows:(NSUInteger) rows tileSize:(CGSize) tileSize tileGroupLayout:(NSArray<SKTileGroup *> *) tileGroupLayout;`](/documentation/SpriteKit/SKTileMapNode/tileMapNodeWithTileSet:columns:rows:tileSize:tileGroupLayout:)

### Defining a Tile Map’s Contents

[`var enableAutomapping: Bool`](/documentation/SpriteKit/SKTileMapNode/enableAutomapping)

When creating a tile map node programmatically, specifies whether the tile map uses automapping behavior like the scene editor.

[`func fill(with: SKTileGroup?)`](/documentation/SpriteKit/SKTileMapNode/fill(with:))

When creating a tile map node programmatically, this function performs a fill operation with the specified tile group.

[`func setTileGroup(SKTileGroup, andTileDefinition: SKTileDefinition, forColumn: Int, row: Int)`](/documentation/SpriteKit/SKTileMapNode/setTileGroup(_:andTileDefinition:forColumn:row:))

Set the tile group and tile definition at the specified tile index.

[`func setTileGroup(SKTileGroup?, forColumn: Int, row: Int)`](/documentation/SpriteKit/SKTileMapNode/setTileGroup(_:forColumn:row:))

Set the tile group at the specified tile index.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)