Marmot Opublikowano 18 Marca 2006 Opublikowano 18 Marca 2006 Witam! Tak sobie pomyślałem z 10 minut temu, że zrobię coś dla sceny. No i zrobiłem. Jest to przykład x) . https://gmclan.org/up24_11_powtorki.html Pokazuje on, jak łatwo można zrobić powtórki. Nie zrobiłem tu rozbudowanego przykładu, jest tylko odtwarzanie i zapis w jednym pliku, ale sądzę, że jak się pobawicie nad nim to całkiem fajne rzeczy mogą wyjść (np. zmiana kamer w 3D, jak w FIFA). Kod może nie jest najlepszy (nie bijcie mnie xD ), ale trochę już nie robiłem w GM i jakoś zamierzałem wrócić. Zachęcam do ściągania i komentarzy. EDIT: W information przykładu zapomniałem napisać, to napiszę: nagrywanie wyłącza się R, a odtwarzanie wyłącza się P. Jeżeli się nie wyłączy nagrywania, to nie można włączyć odtwarzania i wicewersa.
Jakim Opublikowano 18 Marca 2006 Opublikowano 18 Marca 2006 Fajne, ale: zapisywanie/odczytywanie z pliku *.ini może być nieoptymalne, co grozi spowolnieniem gry ;). Tak poza tym to dobrze, nawet bardzo :). Teraz patrzę, to mnie mdli, jak widzę inne eventy niż CREATE, STEP, DRAW i inne akcje niż EXECUTE A PIECE OF CODE :D.
Marmot Opublikowano 18 Marca 2006 Autor Opublikowano 18 Marca 2006 Teraz patrzę, to mnie mdli, jak widzę inne eventy niż CREATE, STEP, DRAW i inne akcje niż EXECUTE A PIECE OF CODE . Stare przyzwyczajenia xD . Ale przykład powinien być jak najprostszy :) . Jak dam wszystko do stepa to nie każdy początkujący się połapie, chociaż i tak trochę namieszałem w tym przykładzie :P .
Jeremiah Opublikowano 19 Marca 2006 Opublikowano 19 Marca 2006 Powiem krótko: przykład niezły, wręcz genialny. Na pewno się komuś przyda.
Nicolas Opublikowano 19 Marca 2006 Opublikowano 19 Marca 2006 O_o To może być dość trudne do użycia w jakiejś nieco bardziej rozbudowanej grze gdzie trzeba uwzględnić więcej obiektów (szczególnie, gdy jest parę takich samych i trzeba by się ID bawić). I nawet jeżeli przez to wsyzstko przebrniemy(z zapisem wszystkiego od pozycji, przez irection po sprita( o ile sie zmienia) i gdy uznamy, ze szybkosc odczytu nam nie przeszkadza) to pozostaje rozmiar pliku ini, ale czy w ogóle istnieje jakiś lepszy sposób? Mimo tego ten do większości prostych gierek powinien wystarczyć....
adam014 Opublikowano 19 Marca 2006 Opublikowano 19 Marca 2006 Spoko przykład może przyda sie dla kogoś do gry piłkarskiej. :thumbsup:
Marmot Opublikowano 19 Marca 2006 Autor Opublikowano 19 Marca 2006 Więc chcę rozwiać wszelkie wątpliwości: dodanie zmiennych do kolejnych objektów, oraz direction nie powinno być trudne, aczkolwiek powiększy rozmiar pliku powtórek. Obecnie szukam jakiegoś algorytmu którym mógłbym "spakować" jakoś ten plik, żeby nie był taki potężny. Zgodzę się z Nicolasem też - przykład jest dobry do prostych gier. Jest narazie poprostu za mało wydajny na bardziej rozbudowane gry, ale narazie tyle musi wam starczyć :] , chyba, że sami coś napiszecie ;p .
Nicolas Opublikowano 19 Marca 2006 Opublikowano 19 Marca 2006 Ja jestem baaardzo leniwy i poprostu czekam, aż ktoś zrobi coś w stylu, że my podajemy jakie obiekty mają byc brane pod uwagę, a reszta to automat^^, ale to raczej mało realne... A co do dodawania obiektów to mógłbyś napisać mi np. sposób, jak zrobić na jakieś 5 obiektów takie samego typu? Nie chodzi mi o kod tylko, jakiś sposób na rozpoznanie, który obiekt po ID itd, bo jedyne co mogę wymyślić to, że każdy obiekt wysyłał by swoją pozycję + id tylko, jak zrobić, żeby wiedzieć jaka pozycja do jakiego ID jest :blink:?
Marmot Opublikowano 19 Marca 2006 Autor Opublikowano 19 Marca 2006 Po co ID? Można przypisać nazwę dla każdego objektu i powiedzmy będzie wysyłana zmienna postac2x, a potem dajemy postac.x=floor(postac2x) . Chyba wiesz co mam na myśli.
Hanjuso Opublikowano 19 Marca 2006 Opublikowano 19 Marca 2006 Ja rzucilem sam sobie wyzwanie i przerobilem ten przyklad, zrobilem z niego 'automat' wystarczy w zmiennej ustalic czy obiekt ma byc zapisywany i wlaczyc, mozna stawiac wiele takich samych obiektow, zapisywane jest id. Dodatkowo x i y sa zapisywane jako jedna zmienna. Wiec Marmocie jezeli pozwolisz, to go opublikuje :)
Nicolas Opublikowano 19 Marca 2006 Opublikowano 19 Marca 2006 Hmm... No tak, ale problem obiętości nadal pozostaje i zastanawia mnie jedna rzecz... Skoro przy odczycie dajesz floor(), to przy zapisie też można dać i odrazu pare bajtów mniej. Taka tam mała propozycja...
Marmot Opublikowano 19 Marca 2006 Autor Opublikowano 19 Marca 2006 Próbowałem, ale GM zawsze zapisuje real w takiej postaci. Mogę spróbować zapisać jako string, ale nie jestem pewien czy będzie działać :/ .
tomalas Opublikowano 19 Marca 2006 Opublikowano 19 Marca 2006 Hmm o co chodzi wam z objętością mi 5sek. powtórka zajmuje 15kb to jest dużo ? Powiedzmy ,że dojdzie jeszcze 50 obejktów to 750kb to według mnie nie jest dużo.
Marmot Opublikowano 19 Marca 2006 Autor Opublikowano 19 Marca 2006 Zawsze można dodać algorytm kompresujący. Ja obecnie szukam takowego i wtedy rozbuduję ten przykład trochę :) . PS. Jak chcesz to daj tutaj ten przykład Hanjuso :) . Wszelkie poprawki są mile widziane.
Hanjuso Opublikowano 19 Marca 2006 Opublikowano 19 Marca 2006 >link< Jest jeden problem, jak najpierw nagram np 100 klatek, potem na nowo bede nagrywac i nagram 50 a nastepnie odtworze to idzie pierwsze 50 klatek z tego nowego nagrania a potem konczy sie 50 klatek z pierwszego nagrania. Nie bardzo wiem jak temu zapobiec Juz sobie z tym poradzilem
Administratorzy gnysek Opublikowano 20 Marca 2006 Administratorzy Opublikowano 20 Marca 2006 No teraz przykład jest ciekawszy :P Teraz wiem czmu w tekkenie pokazywali tylko ostatnie 3 sekundy walki - konsola nie miała tyle pamieci :P
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ę