Skocz do zawartości

Snake

Użytkownicy
  • Postów

    1 445
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Snake

  1. Snake

    Tuturial dziedziczenie

    Gdy alokujesz pamięć za pomocą operatora new należy ją zwalniać używając operatora delete. Jak dla mnie to ten sposób konserwacji kodu trzeba by nieco usprawnić. Przede wszystkim pisanie kodu C++ "w stylu GM-a" nie jest zbyt dobrym pomysłem.
  2. W GMAPI w tym momencie zajmuję się interfejsami dla particli, kompatybilnością z GM8 zajmę się pod koniec, jak już wszystko co zaplanowane dodam do biblioteki ;p
  3. No dobra, jest aktualizacja! (v2.0): Features: - Wsparcie dla GM8 - Dodano funkcję thread_wait, służącą do oczekiwania na zakończenie wątku - Dodano możliwość sprawdzenia błędu danego wątku - DLL został napisany od nowa w MASMie - Wydano kod źródłowy (na LGPL) Compatibility issues: - Zmiany w nazwach funkcji (thread_priority, thread_affinity_mask, thread_ideal_processor, thread_num_of_processors) - Usunięto funkcje thread_last_error i thread_is_suspended - Teraz po utworzeniu wątku trzeba zamykać jego uchwyt (za pomocą thread_close). Dzięki temu można przechwycić kod błędu wątków (thread_get_error). Miałem dodać obiekty synchronizacyjne by można było lepiej zarządzać wątkami, ale okazało się, że struktura GM-a się w ogóle do tego nie nadaje, tak więc niestety... :F Download: https://gmclan.org/up541_4_GMThreads2.html (9KB)
  4. http://gm.ultimatepronoun.com/index.php?page=DLLs :F
  5. Dobry arcik. Taka technika powinna koniecznie być stosowana np. w takiej Almorze, gdzie gracz, któremu gra wyciąga mniej FPS ma znacznie utrudnioną rozgrywkę. Ale zamiast current_time lepiej użyć tego ;p
  6. No nie wiem czy zajmie dużo, ja hasło odzyskałem w 1-2 minuty na podstawie szyfrogramu ;p Oczywiście większość i tak nie będzie wiedziała jak to zrobić, ale ci co znają chociażby podstawy kryptoanalizy i odpowiedni soft powinni sobie poradzić ;p Mam nadzieję, że masz zamiar dodać jakiś system wtyczek do PlayGate'a, ażeby umożliwić innym m.in. takie rzeczy jak właśnie ładowanie zaszyfrowanych danych. ;)
  7. W temacie GP od razu ostrzegałem, że nie wszystko jest usuwane z pamięci bo struktura GM to utrudnia. W prawdzie jest to możliwe ale wiąże się to z dużym spadkiem wydajności zabezpieczonej gry - przy odczytywaniu skryptów runner używa jakichś funkcji do operacji na stringach, które wykonują ich kopię w pamięci, przez co mimo tego, że te regiony nie są po ukończeniu operacji używane to nadal pozostaje w nich zawartość skryptów. Jako, że te funkcje są bardzo często używane do różnych celów nie mogę dodać do nich kodu czyszczącego. BTW, jeszcze raz sprawdziłem w jakim stopniu zabezpiecza skrypty to czyszczenie i skuteczność wyniosła 100%, więc jak widać wszystko zależy menadżera pamięci - pewnie za którymś razem miałoby się to szczęście i niektóre skrypty nadawałyby się do odzyskania ;) Jak chcecie chronić się przed odczytywaniem haseł z pamięci to generujcie je dynamicznie na podstawie danych kryjących się w różnych częściach gry + obfuscator i już znakomita większość "hakerów" da sobie spokój. Co do tej biblioteki to radziłbym zmienić metodę szyfrowania, bo na podstawie samego pliku .xvf można łatwo odzyskać hasło. Jak wspomniał PsichiX, przed bardziej zaawansowanymi użytkownikami nie da się tak czy inaczej uchronić, ale większość i tak nie da sobie z tym rady, więc co za problem. Gdyby nie GM, który wymaga, żeby zasoby ładować z osobnych plików to jestem pewien, że biblioteka byłaby znacznie bezpieczniejsza i zapewniała by bezpieczeństwo w 99% przypadków :)
  8. Sprawdzałeś wtyczkę Fruity video player ? ;p
  9. Mam dobrą wiadomość. Udało mi się rozwiązać wszelkie problemy, które uniemożliwiały dodawanie własnych funkcji GML do gry, tak więc można się spodziewać takiej możliwości w następnej wersji GMAPI. :P Dzięki temu wywoływanie funkcji z DLL-a będzie znacznie wydajniejsze, jako że zniknie potrzeba używania external_call do wywołań. Normalna dokumentacja najprawdopodobniej też będzie (w końcu) zrobiona ;p
  10. Jakoś na pewno się da, po wpisach w rejestrze czy cuś, nie sprawdzałem tego. ;p Wolę nie zmuszać ludzi do instalowania jakichś dodatków, jak wystarczy, że skompiluję aplikację/bibliotekę z odpowiednią biblioteką uruchomieniową :P
  11. Raczej to drugie ;p Zuploaduję wersje niewymagającą redistów, żeby inni mogli sprawdzić sobie bez instalowania tej paczki czy też VC++.
  12. Zainstaluj to: http://www.microsoft.com/downloads/details...;displaylang=en i sprawdź czy pójdzie ;p
  13. Mała aktualizacja: - Kilka bugów zostało usuniętych - Wprowadzono kilka małych poprawek do komentarzy - Dodano nowe funkcje do klasy CGMAPI: SetGMFunctionAddress, SetGMFunctionResult, PreserveFunctionData i RestoreFunctionData, które ułatwiają manipulowanie tabelą funkcji z GM (podmienianie funkcji GM na własne) Pobierz wersję v0.5: https://gmclan.org/up541_4_GMAPIv0_5_src.html Przykład pokazujący jak podmienić funkcje z GM na funkcje z DLLa: https://gmclan.org/up541_3_GMFunctionReplacing.html Teraz zajmę się czcionkami, particlami i wbudowanymi "zmiennymi" z GM, żeby można było z DLLa pobrać/zmienić wartość np. room_speed/width/height itd. Potem będzie trzeba to wszystko zrobić kompatybilne z GM8 (jak zdąży wyjść ;p).
  14. Lol, takich podstaw nie znać... lenistwo. Sam byś to szybciej rozwiązał z pomocą Google, dowiadując się czym jest rejestr flag. Anyways... wykonanie takiej operacji zmodyfikuje flagi w następujący sposób: -przeniesienie - 0, wynik zmieści się w 8 bitach/nie przekroczył zakresu liczb bez znaku. -zero - 0, wynik nie jest równy zero. -przepełnienie - 0, wynik nie przekroczył zakresu liczb ze znakiem. -znak - 0, wynik nie jest ujemny. -parzystość - 1, ilość ustawionych bitów w wyniku jest parzysta. -półprzeniesienie - ???... nigdy nie słyszałem o czymś takim jak półprzeniesienie o_O
  15. Może chodzi Ci o string_format ? Tylko, że ta funkcja dodaje spacje a nie "0" gdy liczba ma mniej niż określona ilość miejsc. sekundy = string_replace_all( string_format( current_second, 2, 0 ), ' ', '0' ); takie cuś byś mógł zrobić.
  16. Beware: Hip-hop: Kaliber 44 - Konfrontacje ( http://www.youtube.com/watch?v=8YDq9ASkomE ) Paktofonika - Jestem bogiem ( ) Paktofonika - Chwile ulotne ( http://www.youtube.com/watch?v=8xEN4LSPYIg ) Łona - Rozmowa z cutem ( ) O.S.T.R - O robieniu bitów ( http://www.youtube.com/watch?v=5HHo7ckkHJc ) WWO - Każdy ponad każdym ( http://www.youtube.com/watch?v=_if7AU9bxOY ) Fisz Emade - Imitacje ( http://www.youtube.com/watch?v=8ftapDYj49E ) Fokus - 100 Wersów ( ) Elektroniczna: Gigi D'Agostino - The Riddle ( http://www.youtube.com/watch?v=lrtA69G15zk ) Barthezz - On The Move ( http://www.youtube.com/watch?v=dxmJLj-4f3g ) Base attack - Techno rocker 2007 ( ) Dj Hazel - Weź pigułke ( ) >:D Sunny Inc Ft. Yeal Peles - Loving You ( ) Richard Durand - Sunhump vs. Cassandra Fox - Touch me (Mike Koglin vs Jono Grant remix) ( ) Poważna: Harry Gregson - Williams - Metal Gear Saga ( ) Super Smash Bros. Brawl - Main Theme ( http://www.youtube.com/watch?v=XbtqmAOwfS0 ) Nobuo Uematsu - Terra ( http://www.youtube.com/watch?v=LlhdZQWmteI ) Nobuo Uematsu - Feel my blade ( http://www.youtube.com/watch?v=xxRamLqYba4 ) Nobuo Uematsu - Jesters of the moon ( http://www.youtube.com/watch?v=bxmgjddikwk ) Hitoshi Sakimoto - The Dalmasca Easterland ( http://www.youtube.com/watch?v=I4RKHn-0KU8 ) Clint Mansell - Requiem for a Dream ( http://www.youtube.com/watch?v=KSY4Yi2ypno ) ;O
  17. Do samej biblioteki GMAPI nikt się nie przyczepił, więc raczej do DLL-a korzystającego z niej nikt nie będzie miał zastrzeżeń ;p DLL-e gmLua i Advanced Console korzystają z GMAPI i nikt się nie czepiał.
  18. U mnie na laptopie też ten błąd jest (gfx: Intel GMA 900). Dodam, że w innych przykładach wyskakuje mi błąd mówiący o braku wsparcia dla FBO, więc pewnie to jest przyczyną. A na PC z ATI Radeon HD4870 wszystko działa jak trzeba ;p Ciekaw jestem jaka będzie różnica wydajności gdy już podmienisz cały silnik GM na Xenonowy ;D
  19. W LGM można dodawać masowo stałe z pliku tekstowego o ile dobrze pamiętam ;p
  20. OK, thanks ;p Jeszcze jedno: proponuję przenieść "stałe" z pgHeadera do stałych GM-owych (oszczędzi się na pamięci, globalnie dostępne, kolorowanie w edytorze kodu i w GM8 pokazują się w podpowiedziach) ;)
  21. Osobiście wolałbym żeby można było sobie wyrenderować tekst do tekstury podczas działania gry. Dzięki temu można by zmieniać czcionki na te z systemu użytkownika ;p Póki co w GMAPI nie idzie tak podmienić wywołań, ale jeśli chodzi o DirectXa to można go wyłączyć (tylko kij wie czy to jakichś problemów nie spowoduje). Tak jak powiedziałem na GG, pomogę Ci z tym jak skończę pewien projekt. :) A Xenona dla GM Lite radziłbym odłożyć na później ;p Jeszcze jedno pytanko, jak ma wyglądać tekstura czcionek, wszystko w jednym wierszu od 0 do 255 tak ?
  22. Sprawdzam sobie jak wygląda posługiwanie się Twoim silniczkiem i mam pewien problem. Funkcja pgPhoton z parameterem TEXT zdaje się rysować tekst, jednak wygląda na to, że muszę jakoś wcześniej ustawić teksturę z której moduł będzie korzystał przy rysowaniu. Tak więc trzy pytania: czy da się/jak wyrenderować czcionkę do tekstury? Jak ustawić teksturę, z której będę korzystał przy rysowaniu tekstu ? Jak zmienić parametry rysowania tekstury fonta (standardowo chyba szerokość i wysokość znaku to 32x32, tracking 0 etc.) ? W dokumentacji i przykładzie nic nie znalazłem. (btw, przydała by się szukajka do docsów) Dobry pomysł z tymi odpowiednikami funkcji z GM ;p Myślałeś o tym, żeby skombinować takiego hacka i podmienić funkcje z GM na te Xenonowe ? Dzięki temu wzrosła by wydajność wywoływania, bo nie trzeba by było korzystać ze skryptów i external_call - wszystko odwoływałoby się bezpośrednio do DLL-a. Plus, początkującym byłoby łatwiej bo używało by się tych samych funkcji co dotychczas, łatwiej byłoby włączyć Xenona do gry (nie trzeba by było zmieniać całego kodu) i w code editor pozostały by podpowiedzi argumentów ;p
  23. Refraction mapping najbardziej kozacki ze wszystkich efektów :) PsichiX, co do bump mappingu to zrób coś bardziej w takim stylu: http://gmc.yoyogames.com/index.php?showtopic=295502 :P
  24. Snake

    Słownictwo

    Hm... z tego, co wiem, w programowaniu termin "instancja" jako synonim terminu "egzemplarz" jest poprawny.
×
×
  • Dodaj nową pozycję...