@Override
    public String serializeField(Field field) {
        StringBuilder sb = new StringBuilder();
        
        char[][] tableView = Field.getInstance().getTableView();
        int yMax = Field.getInstance().getYBound()+2;
        int xMax = Field.getInstance().getXBound()+2;
        
        char[][] rotatedView = new char[2*yMax-1][2*xMax-1];
        
        int middle = yMax - 1;
        
        for (int i = 0; i < yMax; i++) {
            int rotJ = middle - i;
            for (int k = 0; k <= i; k++, rotJ += 2) {
                rotatedView[i][rotJ] = tableView[i-k][k];
            }
        }
        
        for (int i = yMax - 1; i >= 0; i--) {
            int rotJ = middle + i;
            for (int k = 0; k <= i; k++, rotJ -= 2) {
                rotatedView[-i+2*yMax-2][rotJ] = tableView[yMax-1-(i-k)][yMax-1-k];
            }
        }
        
        for (int i = 0; i < 2*yMax - 1; i++) {
            for (int j = 0; j < 2*xMax - 1; j ++) {
                char charToAdd = rotatedView[i][j] == '\0' ?
                    ' ' : rotatedView[i][j];
                sb.append(charToAdd);
            }
            sb.append('\n');
        }
        return sb.toString();
    }