Nubosabuk Opublikowano 17 Listopada 2011 Udostępnij Opublikowano 17 Listopada 2011 w mojej grze (https://forum.gmclan.org/index.php?showtopic=27269 ) mam mnóstwo obiektów- jest kilkadziesiąt tysięcy obiektów gwiazd, każda z nich zawiera dane na temat samej gwiazdy jak i tablice z danymi na temat planet krążących wokół niej. Za każdym razem gdy odwiedzany jest układ planetarny, obiekt gwiazda generuje układ planet na podstawie tych danych. Póki co, są one w większości statyczne, lecz wprowadzając interakcje z planetą- wydobycie surowców, budowanie infrastruktury itp będę pewnie potrzebował wydajniejszego systemu zarządzania danymi, bo chyba bez sensu za każdym razem ładować do obiektu gwiazdy setki różnych informacji- przy tysiącach gwiazd zapchał bym pamięć lub za wolno by to działało. Jak się zabrać do zrobienia ogromnej bazy danych w pliku? tak jak grid jest dwuwymiarową tablicą to chyba potrzebował bym więcej wymiarów, ze względu na zagnieżdżenie danych (gwiazda->planeta->info o planecie-> i może coś jeszcze dalej). Co radzicie? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 17 Listopada 2011 Administratorzy Udostępnij Opublikowano 17 Listopada 2011 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.*/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nubosabuk Opublikowano 17 Listopada 2011 Autor Udostępnij Opublikowano 17 Listopada 2011 dzięki za obszerną odpowiedź. pokombinuję :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się