func NewMap(a Area) *Map {
	m := make([][]*unsafe.Pointer, a.height)
	for y := uint8(0); y < a.height; y++ {
		m[y] = make([]*unsafe.Pointer, a.width)
		for x := uint8(0); x < a.width; x++ {
			var emptyFieldPointer = unsafe.Pointer(uintptr(0))
			m[y][x] = &emptyFieldPointer
		}
	}
	return &Map{
		fields: m,
		area:   a,
	}
}
NewMap creates and returns a new empty Map with area a
package engine
import (
	"fmt"
	"sync/atomic"
	"unsafe"
)
func storeContainer(p *unsafe.Pointer, container *Container) bool {
	return atomic.CompareAndSwapPointer(p, unsafe.Pointer(uintptr(0)), unsafe.Pointer(container))
}
func emptyContainer(p *unsafe.Pointer, container *Container) bool {
	return atomic.CompareAndSwapPointer(p, unsafe.Pointer(container), unsafe.Pointer(uintptr(0)))
}
func empty(p *unsafe.Pointer) {
	atomic.SwapPointer(p, unsafe.Pointer(uintptr(0)))
}
func fieldIsEmpty(p unsafe.Pointer) bool {
	return uintptr(p) == uintptr(0)
}
type Map struct {
	fields [][]*unsafe.Pointer
	area   Area
}