---
title: "init(fromGridStartingAt:width:height:diagonalsAllowed:nodeClass:)"
framework: gameplaykit
role: symbol
role_heading: Initializer
path: "gameplaykit/gkgridgraph/init(fromgridstartingat:width:height:diagonalsallowed:nodeclass:)"
---

# init(fromGridStartingAt:width:height:diagonalsAllowed:nodeClass:)

Initializes a graph that describes an integer grid with the specified dimensions, using the specified node class.

## Declaration

```swift
init(fromGridStartingAt position: vector_int2, width: Int32, height: Int32, diagonalsAllowed: Bool, nodeClass: AnyClass)
```

## Parameters

- `position`: The lowest x- and y-coordinates to appear in the grid.
- `width`: The number of possible x-coordinates in the grid.
- `height`: The number of possible y-coordinates in the grid.
- `diagonalsAllowed`: doc://com.apple.documentation/documentation/Swift/true to connect nodes in the grid to their diagonal neighbors; doc://com.apple.documentation/documentation/Swift/false to connect nodes only to their horizontal and vertical neighbors.
- `nodeClass`: The doc://com.apple.gameplaykit/documentation/GameplayKit/GKGridGraphNode subclass to use for nodes in the graph.

## Return Value

Return Value A new grid graph.

## Discussion

Discussion Use the nodeClass parameter to create a graph using a custom subclass of GKGridGraphNode. For example, your custom node class might override the cost(to:) method so that some nodes are more costly than others to travel through. Pathfinding in such a graph would favor indirect routes when a direct route has a higher cost. All connections created through this method are bidirectional. For more information, see GameplayKit Programming Guide.

## See Also

### Creating a Graph

- [init(fromGridStartingAt:width:height:diagonalsAllowed:)](gameplaykit/gkgridgraph/init(fromgridstartingat:width:height:diagonalsallowed:).md)
