Boris Glawe wrote:
>     def field(x, y)
>         if (x >= @dimension || y >= @dimension || x < 0 || y < 0)
>             return nil
>         end
>         @fields[x][y]
>     end

One small improvement (not likely to affect speed much):

      def field(x, y)
          ary = @fields[x]
          ary && ary[y]
      end

This will still return nil in the same out-of-bounds cases.