Autor Wątek: Logika - skrypt czy C++?  (Przeczytany 2912 razy)

Offline Kurak

  • Użytkownik

# Luty 14, 2010, 21:32:27
Myślisz, że całe levele ustawia się na sztywno w kodzie? Nie trzeba tego poprawiać tysiąc razy? :P
Ale co to ma wspólnego z logiką gameplayu? Na każdym levelu zasady gry są inne? Bo ja widzę wszędzie ograniczony zestaw działań i zasad które są podczepione pod te setki i tysiące obiektów które mają jakieś proste skrypty - nie definiują zasad tylko zachowanie obiektów. To są już dane, ja mówię o kodzie. Taka sama odpowiedź na poniższy cytat - tutaj wygląda to na mylenie dwóch jednak rozłącznych rzeczy. To pewnie dlatego że w większości gier zasady są strasznie prymitywne :)

Cytuj
Nie chodzi o same zasady, ale ilość elementów, zależności. I faktu, że w czasie tworzenia gry zmieniasz wszystko setki razy. Prosta kolejka czynności: podnieś przedmiot, dodaj do ekwipunku, zaktualizuj parametry postaci. To robi krótki skrypt. No chyba, że jesteś prorokiem i w czasie pisania silnika znasz dokładną listę wszystkich przedmiotów w grze wraz z ich wpływem na wszystko ;)
Powtórzę: co mają wspólnego przedmioty w grze z jej zasadami?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Esidar

  • Użytkownik

# Luty 15, 2010, 01:28:48
Na każdym levelu zasady gry są inne?
Na levelu A masz 4 dźwignie do 4 drzwi. W jaki sposób połączysz która dźwignia, otwiera które drzwi ? A może dźwignia nie otwiera drzwi tylko powoduje wypłynięcie wody ? A może powoduje zapalenie świateł ? W jaki sposób zdefiniujesz działanie pojedynczej dźwigni ? Czasami dźwignie są połączone w grupę i trzeba je otwierać w odpowiedniej kolejności.
Najprościej: dajesz dostęp z poziomu skryptu do funkcji "OpenDoor", "TurnOnLight", "PlaySound". A ktoś kto robi level odpala je w dowolnej kolejności z dowolnymi parametrami i tworzy w ten sposób logikę levelu.

Cytuj
Powtórzę: co mają wspólnego przedmioty w grze z jej zasadami?
Drzwi można otworzyć gdy gracz ma przedmiot XXX.YYY w ekwipunku, gdy trzyma w ręku przedmiot YYXXZZ, gdy włożył przedmiot XYXY do punktu AABB, a przedmiot YZYZ do punktu BBAA.

Zasady są na sztywno zakodowane: Użyj przedmiotu, Czy trzymasz w reku, Czy masz przedmiot w ekwipunku. Ale kombinacji przedmiotów i ich wykorzystań jest już bardzo dużo i zmieniają się z levelu na level.

Skrypty to niekoniecznie najwygodniejszy sposób definiowania logiki, ale na pewno dość szybki do zaimplementowania.

Offline Kurak

  • Użytkownik

# Luty 15, 2010, 16:55:48
Na każdym levelu zasady gry są inne?
Na levelu A masz 4 dźwignie do 4 drzwi. W jaki sposób połączysz która dźwignia, otwiera które drzwi ? A może dźwignia nie otwiera drzwi tylko powoduje wypłynięcie wody ? A może powoduje zapalenie świateł ? W jaki sposób zdefiniujesz działanie pojedynczej dźwigni ? Czasami dźwignie są połączone w grupę i trzeba je otwierać w odpowiedniej kolejności.
Najprościej: dajesz dostęp z poziomu skryptu do funkcji "OpenDoor", "TurnOnLight", "PlaySound". A ktoś kto robi level odpala je w dowolnej kolejności z dowolnymi parametrami i tworzy w ten sposób logikę levelu.

Cytuj
Powtórzę: co mają wspólnego przedmioty w grze z jej zasadami?
Drzwi można otworzyć gdy gracz ma przedmiot XXX.YYY w ekwipunku, gdy trzyma w ręku przedmiot YYXXZZ, gdy włożył przedmiot XYXY do punktu AABB, a przedmiot YZYZ do punktu BBAA.

Zasady są na sztywno zakodowane: Użyj przedmiotu, Czy trzymasz w reku, Czy masz przedmiot w ekwipunku. Ale kombinacji przedmiotów i ich wykorzystań jest już bardzo dużo i zmieniają się z levelu na level.

Skrypty to niekoniecznie najwygodniejszy sposób definiowania logiki, ale na pewno dość szybki do zaimplementowania.

No to tylko potwierdzasz to o czym pisałem :) IMO logika gry to nie jest 'dźwignia na levelu 10 otwiera wrota a na levelu 20 to samo robi płyta chodnikowa a dźwignia jest bronią' tylko 'sa przedmioty otwierajace wrota i sa bronie i działają tak i tak uzywajac takich parametrow', w niektórych grach w ogóle nie ma "przedmiotów" a warstwa gameplayu to dużo kodu :) Kwestia nazewnictwa.

O to mi chodziło z grami cRPG które mają proste zasady (niektóre wprost bazują na prymitywnych systemach do gier papierowych) ale dużo treści która jest w jakiś sposób aktywna.

Offline Khaine

  • Użytkownik

# Luty 15, 2010, 17:28:53
Cytuj
niektóre wprost bazują na prymitywnych systemach do gier papierowych
na przykład które?

Offline ShadowDancer

  • Moderator

# Luty 15, 2010, 19:57:49
Cytuj
niektóre wprost bazują na prymitywnych systemach do gier papierowych

Systemy w 99% gier papierowych są bardziej zaawansowane niż w większości gier rpg razem wziętych.

Offline Esidar

  • Użytkownik

# Luty 15, 2010, 21:12:42
IMO logika gry to nie jest 'dźwignia na levelu 10 otwiera wrota a na levelu 20 to samo robi płyta chodnikowa a dźwignia jest bronią' tylko 'sa przedmioty otwierajace wrota i sa bronie i działają tak i tak uzywajac takich parametrow', w niektórych grach w ogóle nie ma "przedmiotów" a warstwa gameplayu to dużo kodu :) Kwestia nazewnictwa.
No fajnie, ale nie zmienia to faktu że to najczęściej za pomocą skryptów tworzy się logikę levelu. I również za pomocą skryptów definiuje się przedmioty które coś robią (np. otwierają drzwi) bo włożenie tego w kod c++ gdy jednocześnie używasz skryptów, mija się z celem. Jeżeli ktoś chce użyć skryptów to powinien mieć w c++ możliwie najmniejszy poziom abstrakcji bez definiowania co i do czego służy.

Offline Kurak

  • Użytkownik

# Luty 15, 2010, 21:40:53
IMO logika gry to nie jest 'dźwignia na levelu 10 otwiera wrota a na levelu 20 to samo robi płyta chodnikowa a dźwignia jest bronią' tylko 'sa przedmioty otwierajace wrota i sa bronie i działają tak i tak uzywajac takich parametrow', w niektórych grach w ogóle nie ma "przedmiotów" a warstwa gameplayu to dużo kodu :) Kwestia nazewnictwa.
No fajnie, ale nie zmienia to faktu że to najczęściej za pomocą skryptów tworzy się logikę levelu. I również za pomocą skryptów definiuje się przedmioty które coś robią (np. otwierają drzwi) bo włożenie tego w kod c++ gdy jednocześnie używasz skryptów, mija się z celem. Jeżeli ktoś chce użyć skryptów to powinien mieć w c++ możliwie najmniejszy poziom abstrakcji bez definiowania co i do czego służy.
Eee no i ja tego nie kwestionuję to dosyć oczywiste :) Programista i tak nie będzie klepał skryptów otwierających drzwi (to byłoby chyba zbyt kosztowne...) więc uznałem że pytanie dotyczy własnie tej warstwy niezwiązanej bezpośrednio z obiektami na levelu. Szczegółowych zasad kontroli terenu czy balansowania zaopatrzenia się nie wklepuje w skrypty przecież. Są różne gry - w oczojebnych AAA tytułach większość rozgrywki to bardzo proste ogólne zasady i to co definiują przedmioty na levelu, w takim HoI takich przedmiotów czy leveli nie ma. Ale to nisza. No ale ja się nie znam, nawet jakbym miał coś więcej do powiedzenia to nie będe z tobą dyskutował z tego prostego względu że widziałem kod bardzo niewielu popularnych gier (choć pewnie i tak więcej niż część ludzi co się na tym forum wypowiadają jak wyrocznie :)) więc nieszczególnie do takiej dyskusji mam prawo.

Systemy w 99% gier papierowych są bardziej zaawansowane niż w większości gier rpg razem wziętych.
Man czytałeś podręcznik do d&d? Najbardziej znany reprezentant gier papierowych (jak na świecie jest to nie wiem ale pewnie podobnie). Nazywanie popularnej wersji 3 (tę znam dobrze) skompliwaną to jest duuuże nadużycie. Kilka tabelek na krzyż i rzucanie d20 no daj spokój ;)


Offline ShadowDancer

  • Moderator

# Luty 15, 2010, 21:44:59
@up, Zacząłem od wersji 4.5 i musiałem książkę ze 3x przeczytać, żeby zakapować wszystko :) Co nie zmienia faktu, że i tak był pewnie "jak na grę" dosyć złożone :)

Offline Kos

  • Użytkownik
    • kos.gd

# Luty 15, 2010, 21:45:28
@up - Huh. Ostatnio jak czytałem podręcznik do AD&D do stwierdziłem, że trzeba być masochistą i/lub umieć zapamiętać 1000 tabelek, żeby chcieć w to grać na papierze. :) Ale mogę być ciut nieobiektywny, bo najlepsze sesje jakie grałem były albo bez systemu i z kościami 'na oko', albo bez kości w ogóle.

Offline Kurak

  • Użytkownik

# Luty 15, 2010, 21:50:00
@up, Zacząłem od wersji 4.5 i musiałem książkę ze 3x przeczytać, żeby zakapować wszystko :) Co nie zmienia faktu, że i tak był pewnie "jak na grę" dosyć złożone :)
W pierwszym systemie w jakim grałem trzeba było napisać program liczący walkę bo policzenie trafienia na papierze zajmowało komus dobrze znającemu zasady dobre kilka minut ;) d&d to niemal wszędzie rzut + modyfikator i porównanie z liczbą.

Offline Rozen

  • Użytkownik
    • Rozen Software

# Luty 15, 2010, 21:51:06
Cytuj
Man czytałeś podręcznik do d&d? Najbardziej znany reprezentant gier papierowych (jak na świecie jest to nie wiem ale pewnie podobnie). Nazywanie popularnej wersji 3 (tę znam dobrze) skompliwaną to jest duuuże nadużycie. Kilka tabelek na krzyż i rzucanie d20 no daj spokój

Taak? A zakodujesz Wish ? A co powiesz o różnych feats, zdolnościach klasowych i innych zasadach, które łatwo opisać jedynie w książce ?
 To nie tylko tabelki ...

Offline bomkallo

  • Użytkownik

# Luty 16, 2010, 03:21:30
Re up: no moze moja odpowiedz nie bedzie tyczyc sie gier graficznych, ale zaleznosci, wish(na swoj sposob:P), zasady klasowe oraz wszystkie zasady jak zroznicowane by nie byly sa do zrobienia na mudach opartych o driver Genesisa(czyli arkadia,vattghern,warlock,barsa...nightal...i jakies podrzedne klony), albo driver accursed-lands'a, a co jest kluczem do tego to wlasnie niestety/stety skrypt, tam na potrzeby gry stworzono obiektowe C(LPC) z rozleglym jak diabli dziedziczeniem i ogromna elastyka no i niestety koszac wydajnosc:P ale co do pisania w czyms takim ma to ta zalete, ze pisze sie przystepnie, ma sie duze pole i wszystko jest odpowiednio odciete, co pozwala rozwijac projekt az zabraknie miejsca na dysku... wiec na opisywanie ksiazki  sklonilbym sie do dobrze zwazonego skryptu:P