m97 Opublikowano 25 Czerwca 2012 Udostępnij Opublikowano 25 Czerwca 2012 Witam, od dłuższego czasu robię sandboxową grę i po drodze napotkałem na problemy, których nie potrafię rozwiązać. Są one głównie związane z optymalizacją. Oto one: 1. Oświetlenie, najprościej byłoby rysować półprzezroczysty czarny prostokąt na grafice bloczka, jednak funkcje draw są powolne. 2. Zapis mapy, Pomimo, że na zapisanie jednego bloczka wystarcza mi jeden bajt w przyszłości mapy będą zawierały do 100 000 000 bloczków. Wielkość mapy będzie wynosiła wtedy około 100 megabajtów. Czy można zapisywać mapę jakoś tak, żeby zajmowała mniej miejsca? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 25 Czerwca 2012 Udostępnij Opublikowano 25 Czerwca 2012 Co do dwójki to możesz spróbować generowania proceduralnego mapy. Będziesz miał tyle bloczków ile tylko zechcesz. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
m97 Opublikowano 25 Czerwca 2012 Autor Udostępnij Opublikowano 25 Czerwca 2012 Prosty generator terenu mam. W 2 chodzi, że zapisanie takiej ilości bloczków pochłonie mnóstwo miejsca na dysku, ponieważ każdy bloczek zajmuje 1 bajt miejsca. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 25 Czerwca 2012 Udostępnij Opublikowano 25 Czerwca 2012 Powtórzę. Nie zapisuj bloczków tylko generuj je proceduralnie. Na bierząco. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 25 Czerwca 2012 Udostępnij Opublikowano 25 Czerwca 2012 Co do jedynki użyj surface'a, jak zrobisz to dobrze to nie stracisz fps'ów. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 26 Czerwca 2012 Udostępnij Opublikowano 26 Czerwca 2012 i nie rób bloczków jako obiektów, to cie zabije. Będziesz zapychał pamiętać górą niepotrzebnych zmiennych Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
m97 Opublikowano 26 Czerwca 2012 Autor Udostępnij Opublikowano 26 Czerwca 2012 Czyli czym ma być bloczek? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 26 Czerwca 2012 Udostępnij Opublikowano 26 Czerwca 2012 Przechowuj gdzie jest dany bloczek w tablicy 2D bądz w ds_grid i na podstawie tablicy/ds_grid rysuj sprity Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
m97 Opublikowano 26 Czerwca 2012 Autor Udostępnij Opublikowano 26 Czerwca 2012 A co z kolizjami , z graczem i bloczkami obdarzonymi grawitacją? Czy gracz też nie ma być obiektem? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 26 Czerwca 2012 Udostępnij Opublikowano 26 Czerwca 2012 Bloczki z grawitacją? GML if(mapa[xbloczka,ybloczka + 1]=0 //0 to puste miejsce { mapa[xbloczka,ybloczka]=0; mapa[xbloczka,ybloczka+1]=2;//uznajmy ze 2 to id tego bloczka } A kolizje to jak masz ruch gracza GML //w lewo if(mapa[xgracz - 1, ygracz]=0) //gdzie xgracz i ygracz to wspolrzedne na mapie(wiesz o co chodzi) { mapa[xgracz,ygracz]=0; mapa[xgracz-1,ygracz]=10;//10 to id gracza } Kombinuj :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 26 Czerwca 2012 Udostępnij Opublikowano 26 Czerwca 2012 Tylko gmowa tablica ma ograniczenie do 32000 elementów(chyba) wię nie zmieści w niej mln bloczków Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
m97 Opublikowano 26 Czerwca 2012 Autor Udostępnij Opublikowano 26 Czerwca 2012 Tablice tak, ale czy gridy też? Co do twojego kodu spadania taki bloczek nie będzie płynnie się przemieszczał tylko przeskakiwał na pozycję 32 piksele niżej. Niektóre bloczki muszą przechowywać niektóre wartości. Na przykład piasek prędkość. A skrzynia zawarte w niej przedmioty. Co więc zrobić z takimi obiektami? Rośliny mają alarmy, które pozwalają im rosnąć, jeśli przestaną być obiektami jak sprawić aby nadal rosły? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 26 Czerwca 2012 Udostępnij Opublikowano 26 Czerwca 2012 E tam sranie w banie, zrób to na obiektach i dezaktywuj niewidoczne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
m97 Opublikowano 26 Czerwca 2012 Autor Udostępnij Opublikowano 26 Czerwca 2012 Tak zrobiłem, ale dezaktywacja przestaje pomagać przy 31000 obiektów. One nadal istnieją w grze chociaż są dezaktywowane co spowalnia grę. Czyli w końcu lepiej robić na obiektach czy nie? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 26 Czerwca 2012 Udostępnij Opublikowano 26 Czerwca 2012 To może usuwaj obiekty i jak gracz zbliży się na odpowiednią odległość to je wczytuj z pliku i twórz. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
m97 Opublikowano 26 Czerwca 2012 Autor Udostępnij Opublikowano 26 Czerwca 2012 Zacząłem już tak robić, ale mam problem. Dlaczego ten kod nie działa: GML a = f_bin_open("domyślny_świat\pozycja_gracza.dat",1); Kiedy wczytywałem z tego samego folderu gdzie była gra wszystko działało, ale kiedy umieściłem plik w folderze i podałem jego nazwę przestało działać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 26 Czerwca 2012 Udostępnij Opublikowano 26 Czerwca 2012 Zacząłem już tak robić, ale mam problem. Dlaczego ten kod nie działa: GML a = f_bin_open("domyślny_świat\pozycja_gracza.dat",1); Kiedy wczytywałem z tego samego folderu gdzie była gra wszystko działało, ale kiedy umieściłem plik w folderze i podałem jego nazwę przestało działać. Może wywal polskie znaki i/lub zmień \ na /. 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ę