Autor Wątek: Jednostka klasą?  (Przeczytany 6285 razy)

Offline zarius

  • Użytkownik

# Czerwiec 30, 2007, 02:40:02
Ja bym zrobil podobnie jak ktos tutaj napisal (chyba Krzysiek K. albo Reg ;p) ze masz jedna klase CUnit czy tam CTroop bez roznicy ;p i tam ew. rozne parametry typu m_CanAttackFlying m_CanAttackGround etc tak samo jak zasieg szybkosc ataku etc i to wszystko zapisywac w plikach, np INI albo XML.

W ten sposob gra bedzie latwo rozszerzalna :P

Offline Mr. Spam

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

Offline spax

  • Użytkownik

# Czerwiec 30, 2007, 12:02:05
@zarius

Dobrze napisałeś ale na daleką metę to chyba IMHO odpada. Bo co kiedy mamy jednostki latające, pływające, przekopujące się przez ziemie... Tutaj trzeba wyraźnego rozklasowania. A atrybuty oczywiście takie same dla wszystkich.

Chodzi mi o to, że mamy obiekt CUnit z wieloma atrybutami (nawet nadmiarowymi) i klasy z niej dziedziczące: CFlyUnit CSwimUnit CDigUnit które odpowiednio te atrybuty wykorzystują. Coś takiego można wtedy bardzo łatwo opisać w ini/xml.

<Units>
 <my_ship>
  <class>CSwimUnit</class>
  <energy>123</energy>
  <cost>123</cost>
  <speed>234</speed>
  <param>23</param>
 </my_ship>
</Units>

pozdrawiam.

Offline Goliatus

  • Użytkownik
    • Warsztat - tworzenie gier

# Czerwiec 30, 2007, 13:38:02
Cytuj
W ten sposob gra bedzie latwo rozszerzalna
raczej źle zaprojektowana lub niezaprojektowana. Moim zdaniem jeśli ktoś robi klasycznego RTSa to powinien wiedzieć jakie będą jednostki, do czego będą służyly, jakie będą zależności, a kod powinien być skrojony na miarę. Zwłaszcza jeśli gra ma być klonem AoE, bo AoE wyróżnia się tym, że jednostki są tam dokładnie zaprojektowane i przemyślane(zasada kamień papier nożyce).

Jeśli już koniecznie ktoś chce mieć skrypty czy coś w tym stylu to proponuję napisać generator kodu.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Czerwiec 30, 2007, 14:49:55
Goliatus: Niby skąd ma wiedzieć dokładnie, jakie będą jednostki? Na początek można jedynie strzelać w ciemno, a efekty będzie się dało ocenić dopiero jak już będzie pierwszy prototyp. Moim zdaniem nie da się zaprojektować porządnej rozgrywki bez testowania jej*, więc trzeba się przygotować na wprowadzanie poprawek, łącznie z całkowitymi zmianami właściwości jednostek i dodawaniem nowych jednostek. W takiej sytuacji, jeżeli koder chce mieć względny spokój, musi zakodować to tak, żeby designerzy i osoby odpowiedzialne za gameplay nie męczyły go co chwilę by przetestować nowe pomysły na poprawki (patrz post Riddlemastera). W tym przypadku generator kodu byłby równie niewygodny. :)


* Za potwierdzenie tego może służyć fakt, że Blizzard dopracowywał parametry jednostek w patchach na długo po wypuszczeniu StarCrafta.

Offline counterClockWise

  • Użytkownik

# Czerwiec 30, 2007, 15:18:12
Ale już w wersji release i tak trzeba będzie zrezygnować z tych plików *.ini czy xml-ów, nie?
Bo gdyby tak dać wszystkim graczom możliwość zmiany parametrów jednostek to tak jak opublikować cheaty razem z grą. Zabiłoby to rozgrywkę moim zdaniem - tzn. dobrym pomysłem jest zmiana parametrów w swoich scenariuszach, ale lepiej żeby te dostępne razem z grą i w kampanii były ustalone i niezmienialne.

W procesie developerskim to dobry pomysł, ale i tak wypadałoby potem rozwiązać to inaczej :)
« Ostatnia zmiana: Czerwiec 30, 2007, 15:19:50 wysłana przez counterClockWise »

Offline Kurak

  • Użytkownik

# Czerwiec 30, 2007, 15:23:14
Ale już w wersji release i tak trzeba będzie zrezygnować z tych plików *.ini czy xml-ów, nie?
Bo gdyby tak dać wszystkim graczom możliwość zmiany parametrów jednostek to tak jak opublikować cheaty razem z grą. Zabiłoby to rozgrywkę moim zdaniem - tzn. dobrym pomysłem jest zmiana parametrów w swoich scenariuszach, ale lepiej żeby te dostępne razem z grą i w kampanii były ustalone i niezmienialne.

W procesie developerskim to dobry pomysł, ale i tak wypadałoby potem rozwiązać to inaczej :)
A co złego w udostępnianiu takiej wersji graczom? Możliwość zmodyfikowania gry działa tylko na jej korzyść - wydłuża jej życie :)

I czy na pewno zabiłoby to rozgrywkę? Nie sądzę - tak, jak niektórzy używają cheatów, lepiej się dzięki temu bawiąc, tak ktoś może zmodyfikować jakiś parametr, który ułatwi jakiś element gry, i to będzie dla gracza lepsze :)
« Ostatnia zmiana: Czerwiec 30, 2007, 15:24:53 wysłana przez Kurak »

Offline Liosan

  • Redaktor

# Czerwiec 30, 2007, 15:36:53
Cytuj
W ten sposob gra bedzie latwo rozszerzalna
raczej źle zaprojektowana lub niezaprojektowana...

Nie zgadzam sie z całością i z każdym stwierdzeniem z osobna :) nawet ADOM (pisany ponoc z generatora kodu) nie wpisuje się w to co mowisz. Snake może być tak napisany, ale w dzisiejszych czasach ludzie oddzielają logikę od danych i nie chce mi sie argumentowac czemu :)

A co złego w udostępnianiu takiej wersji graczom? Możliwość zmodyfikowania gry działa tylko na jej korzyść - wydłuża jej życie :)

I czy na pewno zabiłoby to rozgrywkę? Nie sądzę - tak, jak niektórzy używają cheatów, lepiej się dzięki temu bawiąc, tak ktoś może zmodyfikować jakiś parametr, który ułatwi jakiś element gry, i to będzie dla gracza lepsze :)

Zgadzam sie :) Po pierwsze, kto będzie chciał cheatować to i tak będzie. Po drugie, możesz całość spakować do jakiejś zaszyfrowanego zipa (blizzard, introversion etc...). Po trzecie, w rozgrywce sieciowej możesz porównywać wersje plików, żeby uniemożliwić zajście rozbieżności. I już.

Liosan

Offline Kurak

  • Użytkownik

# Czerwiec 30, 2007, 15:37:48
A wlasnie niekoniecznie. Taki Space Hack, wszystie ustawienia sa zapisane w golych plikach tekstowych wraz z opisami. Nie moglem sie powstrzymac, zeby sobie postaci nie podrasowac i gre ukonczylem zdecydowanie za szybko. Mozliwosc swobodnej edycji owszem, ale tylko tak jak counterClockWise mowi, czyli we wlasnych scenariuszach. Zasady oryginalnej kampanii powinny byc niezmienialne.
To zależy oczywiście od konkretnej gry i od podejścia gracza :) Niektórych interesuje granie z określonym poziomem trudności, a niektórzy wyżej cenią sobie np. fabułę czy też lubią widoki na różnych poziomach :)

Offline zarius

  • Użytkownik

# Czerwiec 30, 2007, 15:56:20
Zle zaprojektowane ? Bredzisz.

Za przyklad mozna wziasc gre total annihilation, gra dawala tylko chyba dwa tryby rozgrywki a stala sie bardzo popularna bo byla tak latwo modyfikowalna ze na jej bazie praktycznie powstalo kilka zupelnie innych gier-modow wlasnie dzieki mozliwosci edycji prawie wszystkiego.

Elastycznosc to kwestia wyboru, jesli chcesz tworzyc projekt scisle zamkniety w swojej formule to taka gra po jej ukonczeniu ew. po kilku dniach stanie sie po prostu nudna no chyba ze naprawde bedzie w niej cos rewolucyjnego, a o to dzis dosyc trudno.

Ogolnie chodzi mi o sposob w jaki ja to bym zrobil zeby gra byla na tyle elastyczna ze pozniejsze wydawanie latek sprowadzalo by sie do podeslania kilku plikow z nowymi jednostkami etc a nie zaraz polowy gry wlacznie z plikiem exe.

Poza tym jak to ktos ladnie ostatnio na forum napisal, troche to przeksztalce (orginalnie bylo o pamieci ;p)

Co jest drozsze ? Pozniejsza modyfikacja, dodawanie i ew. przeprojektowywanie kodu aby dodac nowe rzeczy bo powstal bajzel > kilka tysiecy ( ;) ) dodanie kilku plikow tekstowych przez designera i skopiowane do odpowiedniego folderu - bezcenne ;p

Offline Goliatus

  • Użytkownik
    • Warsztat - tworzenie gier

# Czerwiec 30, 2007, 15:59:13
Współczynniki, wygląd - to oczywiście może być modyfikowalne nawet na żywo. Natomiast jeśli ktoś nie wie jakie w jego grze będą klasy jednostek to jest to znak, że za wcześnie zabrał się za kodzenie.

Skoro to ma byc klon AoE to powinna być zasada papier kamień nożyce, czyli kawaleria > artyleria > piechota > kawaleria itd. Czyli już wiadomo, że będą trzy klasy jednostek(piechota, kawaleria i artyleria). Rodzaj piechoty A od typu B będzie się różnił parametrami typu zasięg, odporność i wyglądem. Czyli również opracować listę parametrów oraz zależności jakie między nimi występują.

Nie oznacza to, że trzeba tworzyć trzy klasy w kodzie. Klasa może być jedna, łatwiej będzie zawrzeć w niej te podstawowe zależności. Tylko to wszystko trzeba wiedzieć wcześniej, a nie dorabiać na etapie kodzenia. Twórcy AoE od początku wiedzieli, że każda jednostka to:
- zasięg
- odporność na ataki w walce wręcz i dystansowe
- siła ataku wręcz i ataku na dystans
- szybkość ataku wręcz i na dystans
- rozrzut
- szybkość
i coś tam jeszcze

Wszystko sprowadza się do zrobienia takiej podstawowej konstelacji parametrów, które później decydują o kształcie całej gry. Taką listę można wypracować nie inaczej jak wyobrażając sobie większość możliwych jednostek w grze, grupowane ich w klasy, rozbijanie na parametry, a następnie znajdowani części wspólnych w tych parametrach.

Czym się różni strzelec od armaty? Armata jest wolniejsza i ma większy rozrzut :)

zarius: Można zrobić RTSa, ale można też zrobic silnik do RTSa, a następnie RTSa an tym silniku. Ty proponujesz to drugie. Ja twierdzę, że to pierwsze trwa krócej.
« Ostatnia zmiana: Czerwiec 30, 2007, 16:29:37 wysłana przez Goliatus »

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Czerwiec 30, 2007, 17:11:54
Cytuj
Ale już w wersji release i tak trzeba będzie zrezygnować z tych plików *.ini czy xml-ów, nie?
Spakować ZIP'em na hasło i zmienić rozszerzenie na DAT. ;)

Cytuj
A wlasnie niekoniecznie. Taki Space Hack, wszystie ustawienia sa zapisane w golych plikach tekstowych wraz z opisami. Nie moglem sie powstrzymac, zeby sobie postaci nie podrasowac i gre ukonczylem zdecydowanie za szybko.
To już zależy od mentalności gracza. Ja zawsze staram się przechodzić grę przynajmniej na normalu i bez cheatów, chyba ze chcę się tylko z gra pobawić (np. w Doom 2 skaczemy do jakiegoś poziomu, włączamy nieśmiertelnośc, dajemy sobie wszystkie bronie i jazda). Cheaty przydają się, jeżeli gra jest zbyt trudna albo zbyt wkurzająca (np. Alien Shootera TE nie mogłem przejść, a po włączeniu cheatów zrobiło się całkiem fajnie). :)

Cytuj
Współczynniki, wygląd - to oczywiście może być modyfikowalne nawet na żywo. Natomiast jeśli ktoś nie wie jakie w jego grze będą klasy jednostek to jest to znak, że za wcześnie zabrał się za kodzenie.
Jak juz pisałem: a skąd ma wiedzieć, czy dana kombinacja jednostek się sprawdzi? Gameplayu tak łatwo nie przewidzisz.

Offline Goliatus

  • Użytkownik
    • Warsztat - tworzenie gier

# Czerwiec 30, 2007, 17:23:16
Musi wiedzieć co chce zrobić, na czym ma polegać jego gierka. Rodzaje jednostek to nie jest detal, który można chwilowo zaniedbać.

Offline Charibo

  • Redaktor

# Czerwiec 30, 2007, 18:06:14
Wyobraz sobie, ze jakis game designer albo tester przychodzi do ciebie i mowi ci, ze 5 pikinierow na rozwalenie jednej machiny oblezniczej to za malo i gra jest za latwa. Co wtedy robisz? Zmieniasz parametr w skrypcie (prawdopodobnie w jakims edytorze po to specjalnie napisanym) czy wartosc zmiennej i przez kilkadziesiat minut rekompilujesz gre? A jesli po zmnianie parametrow nadal cos bedzie nie tak? Co jesli trzeba dodac nowa jednostke ktora wymyslil sobie designer i nadal ja testowac?

Offline Esidar

  • Użytkownik

# Czerwiec 30, 2007, 18:27:44
Musi wiedzieć co chce zrobić, na czym ma polegać jego gierka. Rodzaje jednostek to nie jest detal, który można chwilowo zaniedbać.

Każdy zaczyna robić grę mając jakiś pomysł. Stwierdzenie "coś jak AoE" jest zupełnie wystarczające żeby zacząć robić grę. Pod koniec projektu i tak z pomysłu zostaną tylko strzępy. Wystarczy przeczytać postmortem z robienia AoE II. http://www.gamasutra.com/features/20000307/pritchard_01.htm . Mieli dokładnie taki sam pomysł: Zrobimy coś jak AoE I. To będzie zwykły sequel. Zdąrzymy w rok na bank.... Ostatecznie zajeło im to 2 lata. W połowie projektu zorientowali się, że ich pierwotne założenia są równie bez sensu jak lokata.

Cytuj
Twórcy AoE od początku wiedzieli, że każda jednostka to:
Poczytaj więc postmortem o AoE II o tym co wiedzą developerzy na początku a co wychodzi na końcu.

Nie da się niczego z góry dobrze zaplanować i elastyczność i łatwość wprowadzania zmian, ma tutaj kluczowe znaczenie.

Cytując pewien mało znany film: "Welcome to the real world." :)


Natomiast co do konstrukcji klas. Najlepsze rozwiązanie to numer 3 :)

Offline Goliatus

  • Użytkownik
    • Warsztat - tworzenie gier

# Czerwiec 30, 2007, 18:33:14
Charibo: Przecież napisałem, że wartości parametrów mogą być dynamiczne. To jednak nia zmienia faktu, że musisz mieć mniej lub bardziej dokładną wizję rozgrywki. Musisz wiedzieć czy będzie coś takiego jak artyleria albo kawaleria, albo że nie będzie w grze UFO.

Esidar: pograj sobie w AoE3, w przypadku tej gry nie ma mowy o przypadkowości. Jest dokładnie tak jak napisałem: kamień papier nożyce.