For marker class you can use just “Actor” as parent.
Making array is bit tricky:
first make variable of type you want to hold in array, or have any pin that has result of this type.
drag out connector from that type (reference to “marker_BP” or vector/translation, in your case)
then type in “make” there should be make array node, place it, it should assume type as array of things you connected to it.
That was for manually making array.
But for you would be better to build it by blueprint execution:
Add new variable to blueprint either vector/translation or “marker_BP_C”. Adding vector array is easy, make vector variable, then click that 9 yellow squares next to it to turn variable into array.
For storing “marker_BP” references: in new variable dropdown type write “_C” it will bring list of classes, purple names are references to class “virtual” objects, blue names there are references to spawned/allocated objects of that class.
When you have array of variables you want, You need to store values in it.
type “array” in list of bp nodes in right panel. It should bring various nodes for arrays. You can use “insert” “add” there. Just set “expand size” checkbox in node.
Same way for getting values out of array, type array there and you should see get node.
PS. arrays are one dimensional, to make it 2d you need to calculate index from row,col values.
Best way of storing custom data type is to make custom Blueprint that has variables you need to store,
Then spawn those blueprints in level and add references/pointers to them in array.