Autor Wątek: [PC] Arpago  (Przeczytany 537 razy)

Offline Paszq

  • Użytkownik

  • +3
# Lipiec 24, 2018, 15:45:31
Cześć!

Jestem nowy na tym forum, nazywam się Paweł, a zakładanie konta trwało jedynie 2 miesiące :D Chciałbym podzielić się informacjami na temat projektu, nad którym pracuję od ponad dwóch lat - Arpago.

Co to takiego?

Jest to bardzo lekki, zręcznościowy RPG, którego akcja dzieje się w kreskówkowym świecie fantasy, a wizualnie zaczerpnąłem w wielu aspektach z wczesnego 3D - okolice PSX/N64/PC ~1997. Do marca tego roku pracowałem nad grą samemu, tworząc wszystko "grywalne" prawie od zera - design, kod, modele, animacje, tekstury, efekty, dodatkowe shadery. Od paru miesięcy wspiera mnie Adam, który zajmuje się częścią audio - SFX oraz muzyka. Wykorzystujemy silnik Unity, pracujemy w swoim wolnym czasie z zasadniczo zerowym budżetem.

Akcja jest obserwowana jest z góry, kamerę można obracać dookoła postaci, a do sterowania wykorzystać klawiaturę i mysz, lub gamepad. Gracz ma możliwość wybrania jednej z 3 grywalnych ras - Ludzi, Lisiego Ludu, lub Troglodytów, oraz jednej z 5 klas postaci - Wojownika, Strażnika, Strzelca, Przywoływacza, lub Maga Bitwnego. Świat gry jest w dużym stopniu otwarty, jednak skonstruowany w taki sposób, aby gracz nie czuł się kompletnie zagubiony i przytłoczony. Prawie wszystkie główne funkcjonalności gry ("szkielet") są ukończone - walka, ekwipunek, czary, zadania, dźwięki otoczenia, muzyka w tle, minimapa, NPC, mechanika i AI wrogów, dialogi, interfejs, split-screen - jedyny feature pod znakiem zapytania to online, jednak ze względu na ograniczone zasoby jest to raczej dalszy plan. Pozostaje jedynie dalej wypełniać grę contentem :)

Wzorowałem się na wielu innych grach, w celu stworzenia mieszanki tego co dobre z każdej z nich :slight_smile: Główna inspiracja to Egoboo - mały darmowy roguelite z okolic 1999, z którego “ściągnąłem” perspektywę kamery, odrobinę styl graficzny, dynamikę walki w pewnym stopniu. Dungeon Siege stanowił odniesienie w kwestii budowy świata, otwartości mapy (w trybie multiplayer), oraz systemu zdobywania czarów. Z gry MMO Tibia zapożyczyłem balans stworzeń, oraz otwartość i atmosferę świata gry pełnego nieznanych niebezpieczeństw. Innymi grami, których znajomość umożliwiła mi usprawnienie pomysłu, to np. Gothic 1 i 2, które według mnie pokazały jak powinny wyglądać obozowiska i miasta, a także Dark Souls, gdzie poszczególne krainy łączyły się ze sobą w perfekcyjny sposób, a porażka nie oznaczała reloadu save’a tylko miała aktualne konsekwencje bez wyciągania gracza z gry.

Filmy, gify, screeny

Menu, intro, tutorial gameplay
https://www.youtube.com/watch?v=IUPHLEcA9_Q

Walka maga z cyklopem (bez dźwięku)
https://www.youtube.com/watch?v=qg-2m0Wk0K0

Walka Rangera z Hellspawnem (bez dźwięku)
https://www.youtube.com/watch?v=VjJCmCp7ruw

Eksploracja miasta (bez dźwięku)
https://www.youtube.com/watch?v=eScEmisAypo

Gif - krajobraz wiejski ;)
https://gfycat.com/FrankThirstyFinnishspitz

Gif - rozmowa z NPC
https://twitter.com/ArpagoGame/status/1021517654430044167

Gif - walka z wilkiem
https://twitter.com/ArpagoGame/status/1019687825242017803

Gif - walka na bagnie
https://twitter.com/ArpagoGame/status/1010275593324322816

Krajobraz - wodospad
https://i.imgur.com/BMiQ4k9.jpg

Krajobraz - most z osady
https://i.imgur.com/d8lsh1h.jpg

Gif - Wyspa, na której rozgrywa się pierwszy akt gry
https://twitter.com/ArpagoGame/status/1007000939293806594

Grywalne rasy w Arpago
http://i.imgur.com/Xc07Ejy.png

Podsumowanie

Ok, myślę, że na pierwszy post wystarczy, postaram się wrzucać aktualizacje w miarę regularnie, jednak różnie bywa - jest to dosyć czasochłonne, więc dodatkowo przepraszam że ktoś mógł przeczytać bardzo podobny tekst już gdzieś indziej. Swoją drogą, to forum chyba nie widziało remontu od 2003 :P wrzuciłem wszystko w formie linków, żeby chociaż w miarę sensownie post się prezentował :)

Więcej informacji można znaleźć na stronie projektu, która jest jednocześnie DevBlogiem - http://arpago.eu
...na Twitterze - https://twitter.com/ArpagoGame
...oraz poprzez napisanie pod tym postem :D bardzo chętnie odpowiem!

Dzięki i pozdrawiam :)

Offline Mr. Spam

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

Offline Paszq

  • Użytkownik

  • +3
# Sierpień 31, 2018, 11:21:35
Postępy w ostatnim miesiącu może są mniej efektowne wizualnie, ale bardzo ważne z punktu widzenia prędkości tworzenia contentu :)

https://i.imgur.com/Ikk0apN.png

Gromada usprawnień w kwestii rozmawiania z NPCami - m.in.:

- nowy interfejs,
- nowa czcionka,
- dostosowywanie wielkości chmurek do zawartości,
- generowanie componentów dialogów z pliku tekstowego
- generowanie componentów questów z pliku tekstowego

Proces implementacji dialogów i questów jest teraz dla mnie 10x łatwiejszy, i wygląda tak:

1. Używam szablonu w Excelu gdzie buduję dialog NPC
https://i.imgur.com/2wPIbMA.png

2. Przetwarzam w/w dane na odczytywalne przez mój skrypt

3. Zapisuję otrzymaną treść do pliku tekstowego
https://i.imgur.com/CkCRZ6J.png

4. Dodaję .txt do projektu i umieszczam jako Text Asset w skrypcie NPC
https://i.imgur.com/o7NPxC3.png
https://i.imgur.com/koNffcM.png

5. W podobny sposób projektuję quest w Excelu
https://i.imgur.com/U3mD5rN.png

6. Przerabiam na .txt

7. Na każdy quest przypada 1 plik, więc dodaję go do arraya ze wszystkimi questami
https://i.imgur.com/i02oGZH.png

Poza tym mam gotowy ogólny zarys pierwszego aktu, rozpisany na quest chainy, planuję 2 możliwe podejścia do wydostania się z wyspy - skorzystanie z pomocy NPC lub na własną rękę.

Do gry na tę chwilę nie planuję dodawać żadnego GPS, żadnej strzałeczki która pokazuje gdzie iść, żadnych tego typu rzeczy. Preferuję podejście podobne do np. Morrowinda albo Gothica - NPC będzie opowiadał gdzie co jest, którędy tam dotrzeć, punkty szczególne po drodze. Większość informacji odnośnie aktualnego stanu questa będzie dostępna w Quest Journalu, który jest widoczny na screenshocie. Chcę, aby gracz musiał samemu poznawać świat a nie ślepo podążać do kolejnego objective’a.

Offline szczypiorofix

  • Użytkownik

# Sierpień 31, 2018, 12:07:46
Cześć!
Bardzo fajnie to wygląda. Podoba mi się :)
Ciekawi mnie sposób budowania drzewka dialogów (w sensie takim - która opcja dialogowa prowadzi do której części dialogu) i to w jaki sposób przetwarzasz dane z xlsx na dane tekstowe w takiej formie.
Ja w swoim obecnym projekcie (nie jest to Unity) zapisuję dialogi w plikach xml i na 1 NPCa przypada 1 plik, gdzie zapisuję poszczególne części pod danym id, każda część ma pewien zestaw odpowiedzi, który kieruje do innego id części dialogu. Zastanawia mnie jak to wygląda u Ciebie i jak można byłoby wykorzystać np. excela zamiast ręcznego edytowania plików xml ;)
Pozdrawiam

Offline Paszq

  • Użytkownik

  • +1
# Sierpień 31, 2018, 12:40:21
Dzięki!

W Excelu zbudowałem taką tabelkę jaka jest widoczna na screenshocie, a obok niej jest druga już "brzydsza" tabelka która formatuje dane za pomocą funkcji POŁĄCZ.TEKSTY:

https://support.office.com/pl-pl/article/po%C5%81%C4%84cz-teksty-funkcja-357b449a-ec91-49d0-80c3-0e8fc845691c

W nowym Excelu jest ona dostępna od razu, w starszej wersji której używam trzeba wykorzystać makro do łączenia zakresu tekstów z separatorem. Jak będę w domu mogę wrzucić dokładne informacje, ponieważ teraz nie posiadam :)

Co do konstrukcji dialogów... od razu mówię, że nie mam pojęcia czy jest to najbardziej optymalne rozwiązanie, ani czy najłatwiejsze - w każdym razie rozumiem jak to działa i postaram się wytłumaczyć.
Mam 2 arraye obiektów: SayLevelPro i AskLevelPro (jeśli dobrze pamiętam) - jeden trzyma obiekty Say (to co mówi NPC), drugi obiekty Ask (opcje dialogowe gracza).

Obiekty Ask są dosyć proste - zawierają tekst, wskaźnik do którego Say prowadzą, oraz opcjonalne: wymagany Quest+Status ID (jeśli gracz go nie ma, opcja się nie pojawia), zakazany Quest ID (jeśli gracz go ma, to opcja się nie pojawia), wymagany item (jeśli gracz go ma w plecaku to opcja się pojawia).

Obiekty Say są bardziej złożone:
- Tekst - wiadomo
- Say Lines - ilość linijek tekstu, używane do dostosowania rozmiaru chmurki dialogowej
- Ask - array INT-ów - zawiera listę wszystkich możliwych odpowiedzi które mogą się pojawić gdy NPC powie ten Say; przykład: jeśli jest tam [1,3,6,8,9], ale np. Ask numer 8 (kolejność w arrayu) wymaga Quest ID którego gracz nie posiada, to wyświetlą się tylko 1,4,6,9
- Set Quest/Status UID - nadaje graczowi ID questa z danym Statusem
- Set complete - "kończy" quest, dzięki czemu w Journalu oznaczony jest jako Completed i przeniesiony na koniec listy
- Remove/Give Item/Gold - daje/zabiera złoto lub item
- Give exp - wiadomo ;)
- Is trade? - to oznacza że dana odpowiedź jest handlem, więc następuje próba zabrania graczowi kasy/itema, jeżeli gracz nie posiada kasy/przedmiotu to....
- Trade Fail Pointer - ....jest przeniesiony do Say o tym numerze
- Say bye - oznacza że ten say kończy rozmowę i okno dialogu jest zamykane

https://i.imgur.com/o7NPxC3.png

Mam nadzieję, że pomogłem :D
« Ostatnia zmiana: Sierpień 31, 2018, 12:41:56 wysłana przez Paszq »

Offline szczypiorofix

  • Użytkownik

# Wrzesień 01, 2018, 01:23:48
Ok, dzięki :)
Nie do końca rozumiem ale to co wyłapałem podsunęło mi kilka pomysłów jak mam usprawnić swoje dialogi :)