ds_list, ds_grid, ds_map - każde z nich tworząc się zwraca referencję, więc można je zagłębiać:
GML
var a;
a = ds_map_create();
ds_map_add(a,'nazwaPlanety','Saturn');
global.planety = ds_map_create();
ds_map_add(global.planety, 'pierwszaPlaneta', a);
//odczyt
var m;
m = ds_map_find_value(global.planety, 'pierwszaPlaneta');
/* w zmiennjej m mamy teraz ds_mapę którą stworzyliśmy wcześniej jako tymczasowe a
warto pamiętać, że pomimo, iż zmienna a była tymczasowa (var), to nie przetrzymywała ona
ds mapy, a jedynie jej id (referencję / wskaźnik) - zatem zmienna zniknęła, ale mapa zostaje w pamięci
- trzeba pamiętać, aby zwalniać niepotrzebne ds_mapy, inaczej prowadzi to do wycieków pamięci */
var nazwa;
nazwa = ds_map_find_value(m, 'nazwaPlanety');
show_message(nazwa); // pokaże: Saturn
/*zamiast stringów nazwaPlanety, dla ułatwienia można uzywać stałych (constans) - wtedy zaoszczędzamy pamieć,
bo zamiast długiego stringa, mamy liczbę, np.:
nazwaPlanety - 1
srednicaPlanety - 2
iloscSatelit - 3
itd.*/