Is multi dimensional arrays still not a thing?

If you want it exposed as a UPROPERTY, then no it’s not supported (and it probably won’t ever be).

However there’s not really much need for it - since with some fairly straightforward accessor operations you can treat a 1D array as a multidimensional array anyway, and it’s considerably faster than using multi-dimensional arrays. Here’s an example from some code I used quite often.



    /* Get the Index in a 1D array when treating it as 2D */
    FORCEINLINE static int32 Get2DArray_Index(const int32 Column, const int32 Row, const int32 NumRows)
    {
        return Row + Column * NumRows;
    }


    /* Get the Column and Row from the Index of a 1D Array treated as 2D.*/
    FORCEINLINE static void Get2DArray_ColumnAndRow(int32& OutColumn, int32& OutRow, const int32 NumRows, const int32 InIndex)
    {
#if !(UE_BUILD_SHIPPING)
        checkfSlow(NumRows > 0, TEXT("UST_SGStatics::Get2DArray_ColumnAndRow() - Divide By Zero!"));
        checkfSlow(InIndex >= 0, TEXT("UST_SGStatics::Get2DArray_ColumnAndRow() - Invalid Index!"));
#endif

        OutColumn = InIndex % NumRows;
        OutRow = InIndex / NumRows;
    }


Note that Arrays also have more complex and often costly replication, since the number of elements in the array is also sent, even if the array is empty.