-
Postów
3 205 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
4
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez Ranmus
-
Może już niedługo, kto wie: Osobiście uważam, że i tak to nie ma sensu, bo języka skryptowego nie da się przetłumaczyć, więc wszelkie zasoby muszą się nazywać po angielsku. To już lepiej wziąść się za helpa (ja od jakiegoś czasu tłumaczę pewien kawałek). update: Pozostaje nam uzbroić się w cierpliwość.
-
gm irlicht (ważne)
Ranmus odpowiedział(a) na nexciek temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Hmm... http://www.thunderstorm.com.br/modules/news/ Zarejestruj się na tej stronie (potrzebne by dostać się do działu download) i ściągnij gmirrlicht, może jest tam i przykład. Xception, pierwotny twórca gmirrlicht, wywalił wszystkie dodatki do gm'a ze swojej strony. -
Właściwości silnika multiplayer...
Ranmus odpowiedział(a) na Quetzacotl temat w Pytania początkujących
Klocki są do standardowego silnika MP. -
Właściwości silnika multiplayer...
Ranmus odpowiedział(a) na Quetzacotl temat w Pytania początkujących
http://gmsock.nintendo-paradiset.com/ Wbudowany multiplayer w GM jest wolny bo korzysta z bezpiecznego trybu TCP/IP, który sam kontroluje i synchronizuje pakiety. GMSOCK natomiast działa w trybie UDP, działa o wiele szybciej, ale o synchronizację trzeba zadbać samemu. Możesz jeszcze przy pomocy GMSOCK skorzystać z darmowego serwera. Poszukaj tematu o GMproxy. Leży on sobie w stanach, więc ping rzędu 200. Ewentualnie możesz ściągnąć jego źródło i u siebie postawić gmproxy. Zalety tego sposobu, to przede wszystkim nie trzeba mieć zewnętrznego ip (tylko serwer), zautomatyzowane i przesyłanie danych! Tutaj masz nawet gotowe skrypty do obsługi gmproxy: http://gmsock.nintendo-paradiset.com/viewtopic.php?t=130 -
Strict to standard właściwy, Transitional to standard przejściowy, który ma mniej zakazanych tagów. Tego drugiego używają użytkownicy powoli przechodzący na nowy standard ale nie mogący się pogodzić z niektórymi restrykcjami, dzięki czemu łatwiej jest dostosować aktualną stronę. Ogólnie powinno się dążyć do Strict. W tej chwili nie potrafię ci wymienić co jest zabronione i jakie są dokładne różnie, bo najlepsza polska strona o xhtml padła (czytaj ktoś zakosił im alias). Może tutaj będzie coś na ten temat: http://webdiary.vel.pl/index.php?module=su...page&pageid=288 Ja tam używam do budowania strony w zasadzie tylko takich tagów: div, span, img, a, br, script, p, hx, form i jej pochodne, natomiast tabele i listy bardzo rzadko, reszty nie tykam. :)
-
Na wstępie chciałbym powiedzieć, że jak już chcesz się bawić w standard xhtml, to nie transitional lecz strict, który jest najbardziej porządanym typem. Transitional jest to przejściowy/pośredni standard nie aż tak restrykcyjny. Natomiast frameset to to samo co strict ale z dopuszczeniem ramek. 1) Nie wiem, ale ramki to tylko w frameset. Tabele nie są zabronione nigdzie jednak nie zaleca się ich do budowania kształtu strony (od tego są warstwy). 2) Tak, obie formy, wystarczy zajrzeć w źródło gmclan. 3) To samo rozszerzenie. Rodzaj dokumentu i standardu jest odczytywany z pierwszego wymaganego taga o nazwie doctype.
-
Twój pomysł jest z całą pewnością do wykonania, ale nie załatwi się go od tak hop siup paroma linijkami kodu. Żeby to miało ogólnie jakiś sens, to trzeba napisać solidne podstawy (nie licząc jakiegoś badziewnego efektu). Dlatego też napisałem ci, że ze zrobieniem nie mam aktualnie czasu, gdyby to był bardzo mały prosty skrypcik, to już bym ci go zrobił. :)
-
http://directory.google.com/Top/Computers/...ming/Languages/ A to tylko wierzchołek góry lodowej. Czemu jest ich aż tyle? Bo programiści eksperci nierzadko samemu piszą dla siebie środowisko pracy, a potem go publikują światy. Jest wiele szkół programowania, do wyboru do koloru. :) ps. HTML'e, XML'e itd. nie są językami programowania.
-
Dziwne, poniewaz nie jest to udokumentowane w helpie, ale dziala. Znaczy sie nie w takim przypadku jak fino napisal, ale zadeklarowanie poprzez przedrostek local, a potem odwolanie sie do niej z tego samego skryptu nie powoduje bledu nieznanej zmiennej. To tak jakby local.zmienna dzialala tak samo jak var. Moze fino nie wie o co chodzi z tym var, wiec juz tlumacze: global.zmienna = 0; //zasieg globalny zmienna = 0; //zasieg lokalny var zmienna; //zasieg lokalny dla danego okna skryptu. zmienna = 0; Ostatni sposob deklaracji poprzez slowo var powoduje, ze zmienna bedzie widziana tylko dla tego skryptu a nie calego obiektu, przydaje sie np. przy tworzeniu zmiennych uzywanych w pętlach np. i j k ... a nie chcemy by obiekt przechowywal te zmienne caly czas. Beda one usuwane po zakonczeniu uzycia skryptu. Ale najczesciej sie je uzywa w skryptach uzywanych jako funkcje, wtedy tym sposobem nie dopuszczamy nowo zadeklarowych zmiennych w funkcj do wycieku do obiektu, ktory odwolal sie do tego skryptu - funkcji.
-
Jest, algorytmy sprawdzajace pozycje i takie tam, ale ja nie mam czasu ostatnio na ich pisanie :( Ja bym to zrobil na zasadzie petli, sprawdzajac zalozmy ze jak jest np szukana pozycja po prawej, to petla sprawdza zasieg obszaru itd.
-
To ja dodam swoje odpowiedzi: 1) i 2) Wszystkie gry maja najwyzej parumegowe exeki + dll'e. To zasoby tyle zajmują. Ten 1 MB podstawowego silnika nie gwarantuje, ze gra bedzie sie rozrastala w strasznym tempie. 3) Dlle mozna zrobic w darmowych kompilatorach, ale po co sie tak wysilac? Wystarczy znalezc jakas biblioteke, dll z odpowiednia licencja, ktora zezwala na komercyjne uzycie. np. irrlicht, audiere (zamiast sxms -> fmod) itd. 4) Wszystko zalezy od jakosci i nic poza tym. Przeciez nie musisz pisac w czym zostala stworzona gra. 5) Tak jest, GM swietnie sie nadaje do malych gier za dodawanych do jakichs zestawow czy pisemek. Wysokobudzetowki odpadaja.
-
Ja go oblukam dokładniej w połowie lutego jesli nie zapomne, ale wydaje mi sie, ze projekt juz nierozwijany, po pierwsze: spojrzcie na date, po drugie miala byc jakas wersja advanced z garbage collectorem, a jej nie ma. Poza tym spojrzcie w katalogi. Myslalem, ze oni sami jakis nowy kompilator napisali, a tam siedzi zwykly mingw (c++). :) Ogolnie dreammaker moze mi sie przydac do tworzenia ide programow.
-
Krótko mówiąc zmienne globalne definiujemy za pomocą przedrostka global., natomiast zmienne lokalne nie mają żadnego prefixu. Gdzie ty znalazłeś to "local." jako przedrostek?
-
No nie wiem, moze sprobuje w jakims wolnym czasie od nauki, bo nastepne 2 tygodnie to u mnie na studiach istny horror.
-
Zgaduje, robione w Pivocie?
-
Hehe, ale wymyśliłeś Pietrus. :) Przecież w silniku irrlicht mozna wybrac drivery: software, opengl, directx.
-
Zasięgu zmiennych globalnych nie nalezy mylic z przechodzeniem przez plansze. Zmienna globalna mozemy przykladowo zadeklarowac tak: global.amunicja = 100 Zmiennymi globalnymi operujemy jak zmiennymi zwyklymi z tym, ze ma ona przedrostek .global Taka zmienna jest widoczna dla wszystkich obiektow. Tylko jest jedno ale, jesli umiescisz to w create obiektu, ktory powtarza sie w kazdej planszy, to na jej poczatku zawsze amunicja sie bedzie resetowala do 100, wiec trzeba to przeniesc do innego eventa, np game_start. Mozna tez zostawic skrypt w create obiektu, ale jemu zaznaczyc takze opcje "persistent". Powoduje ona, ze obiekt nie jest niszczony po zakonczeniu planszy, tylko przechodzi do kolejnej. Mozliwosci jest duzo.
-
Można także wejść na oficjalne forum GM'a i poszukać odpowiedników takiej gry 3D. Widziałem jakieś tam projekty strzelanek, jedna była chyba o desancie na Normandie?!
-
Już wiem na podstawie jakiej gry jest krol i powiem, ze jest za podobna. Zmien grafike.
-
Otwieranie pliku
Ranmus odpowiedział(a) na cozajeden temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Tymon, przeczytaj regulamin. Nie odświeżamy starych tematów, a ten jest sprzed pół roku. -
Sadam, ty chyba źle zrozumiałeś, jemu chodziło o to, że demo może mieć maksymalnie 30 MB w takim sensie, że więcej nie może zajmować, a poniżej 30 MB nie uda im się zejść. Muzyka i grafika naprawdę szybko powiększają rozmiar. Poza tym dobrze wiedzieć, że Quetzacotl umie modelować. W razie czego wiadomo do kogo się zgłosić z ofertą współpracy. :) Co do samej gry, to w GM zrobią ją spokojnie, o grafikę się nie martwcie, silnik irrlicht jest jednym z najlepszych na swiecie jesli chodzi o darmowki. Klopot upatruje wlasnie w algorytmice nie zwiazanej z grafika. GM jest stanowczo za wolny. Odnajdowanie drogi na pustej planszy 2048x1536 (kratka 32x32) przy pomocy algorytmu A* zajmowalo pare sekund na moim athlonie xp 1700. Ba, nawet porownujac interpreter GM'a z innym interpreterem o nazwie gamemonkey wypada slabo. Alg. fibonacci z nie pamietam jakimi argumentami zajmowal GM'owi 10 sek, w gamemonkey zaledwie 0.3 sekundy. Teraz pomyslcie sobie jak szybko by to dzialalo w c++. Ogolnie przepustowosc interpretera z tego co pamietam w GM wynosila paredziesiat tysiecy wyrazen na sekunde, w c++ wynosi pare milionow. Mowie wam, bez przeniesienia czesci rzeczy do dll'a gra bedzie wolna. Poza tym nie wiemy w jaki pulap sprzetowy gra jest wycelowana.
-
Wątpie by GM udźwignął algorytmy AI tej gry, część trzeba będzie przerzucić do dll'a.
-
No właśnie. Game Maker sprawdza pokolei step wszystkich obiektow, wiec jesli obiekt reka jest mlodszy od obiektu hero, to GM najpierw w reka odczyta pozycje obiektu hero, a potem obiektowi hero zmieni pozycje. Dlatego tez jest wlasnie event end step. :)
-
Długość paska nie jest zależna od HP tylko od szerokości sprite'a obiektu nadrzędnego. Wystarczy w obj_energia w event draw: en_w = ( nadobiekt.energia / nadobiekt.energia_maks ) * nadobiekt.sprite_width - 1; zamienić na: en_w = ( nadobiekt.energia / nadobiekt.energia_maks ) * tutaj_liczba_w_postaci_szerokosci - 1; Chodziło o uzyskanie efektu tak jak w niektórych rts'ach, że szerokość paska jest zależna od szerokości obiektu. :) A co do id to jest tak: Aby odwołać się do jakiegoś obiektu, wystarczy podać jego nazwe, np: gracz.x Jeśli chcemy odwołać się do obiektu z którym kolidujemy, to tylko w event colision mozna uzyc: other.x other.speed Jesli chcemy odwolac sie do samego siebie to uzywamy: x lub self.x Jesli chcemy odwolac sie do wszystkich obiektow: with ( all ) instance_destroy(); To są słowa specjalne, po których identyfikujemy dane obiekty. Niestety, jesli uzywamy paru obiektow tego samego typu, to odwolanie sie za pomoca nazwy w przypadku checi pobrania jakiejs zmiennej spowoduje uzyskanie zmiennej od najmlodszego obiektu danego typu. Kazdy obiekt natomiast w momencie tworzenia dostaje wlasny id. Jest to unikatowy numer (widac go np. przy wstawianiu obiektow w edytorze plansz). Ten unikatowy numer sluzy jako alternatywna nazwa. Zamiast pisac: gracz.x mozemy zapisac np: 1000049.x Albo trzymac numer id danego obiektu w postaci zmiennej i uzywac: zmienna.x instance_create(...) wlasnie zwraca numer id tworzonego obiektu. W przykladzie dziala to na takiej zasadzie, ze podczas wywolania skryptu tworzy sie nowa zmienna: obiekt_energia. Jesli klikniemy na drzewo, to skrypt sprawdza czy ta zmienna nie rowna sie 0 (czy jest tam id jakiegos obiektu) jesli tak, to uaktualnia tylko temu obiektowi licznik, jesli nie, to tworzy nowy obiekt i zwraca do tej zmiennej jego id. Nastepnie drzewko tworzy temu obiektowi nowa zmienna z wlasnym id. Dzieki temu te obiekty maja zapisane swoje id. Energia id drzewka, drzewko id energii. Teraz mozna wprowadzic relacje, czyli np. w przypadku energii mozna sobie pobierac pozycje i inne zmienne konkretnego drzewka. Przy smierci paska energii, odwoluje sie on do "swojego" drzewka zerujac mu obiekt_energia. Dzieki temu drzewko znowu wie, ze nie ma przypisanego zadnego paska.
-
Dodałem już na stronę. Spójrz na najnowsze zasoby na stronie głównej. W razie pytań wal śmiało. :)