Red End

Tworzysz grę i chcesz się poszczycić postępami lub zasięgnąć opinii o niej? Pisz śmiało
Awatar użytkownika
lukaszfito
Posty: 140
Rejestracja: 28 gru 2013, 1:37
Lokalizacja: Gdańsk
Kontaktowanie:

Red End

Postautor: lukaszfito » 28 gru 2013, 16:06

Witam wszystkich, od jakiegoś czasu samodzielnie pracuję nad grą przygodową FPP "Red End" (z otwartym światem rozgrywki) w postapokaliptycznym świecie gdzie Słońce zamieniło się w czerwonego olbrzyma. Został mi ostatni etap - tworzenie całej masy modeli, tekstów i dźwięków, które będę musiał ustawić na mapie gry, która ma powierzchnię 21,96 km2 8-) . Zachęcam do zainteresowania się projektem, gdyż moim zdaniem gra łamie kilka błędnych stereotypów dotyczących Blendera i Pythona - tworzenie wielkich (pełnoprawnych) gier jest możliwe w tym środowisku.

NOWY teaser gry: http://youtu.be/MM_ExhCPyR8 :!:
(stary teaser: http://youtu.be/kiMlqhdyck8)

Fabuła:
Gra zabiera nas do nieokreślonej przyszłości, gdzie Ziemia została spalona w piekielnym świetle czerwonego olbrzyma - naszego Słońca. Gracz pojawia się w zrujnowanym budynku, jest zdezorientowany a jego jedynym towarzyszem okazuje się głos ze słuchawki. Według tego co mówi głos, celem gracza jest dostanie się do tajnego archiwum, lecz nie wiadomo czego ma tam szukać. Misja nie wygląda na skomplikowaną, lecz wystawienie się choćby na chwilę na działanie promieni słonecznych skutkuje usmażeniem żywcem :x lub przynajmniej udarem i utratą pamięci :shock: . Od pierwszych chwil główną misją gracza staje się desperacka walka o własne życie. Cała sytuacja staje się jeszcze bardziej zagadkowa, gdy gracz odbiera tajemniczą transmisję, która może wszystko zmienić...

NOWA GALERIA: http://lukaszdomski.wordpress.com/2014/05/25/calkiem-nowy-red-end/
(stara galeria: http://lukaszdomski.wordpress.com/2014/02/17/red-end-galeria-i-nowy-shader/)

Engine:
Opisze tutaj systemy zawarte w grze - trochę ich jest. Grubo ponad 95% skryptów jest gotowych, więc nie wymieniam tutaj co będzie mieć gra, tylko co już w niej jest :D

  • System LoD (Level of detail) - zaawansowany system (nie publikowany wcześniej) pozwalający na kontrolę dziesiątek tysięcy obiektów w Internecie znalazłem kilka systemów, a najlepszy ledwo wytrzymywał tysiąc obiektów (na moim siedmioletnim sprzęcie :oops: ), dlatego stworzyłem własny LoD oparty na Pythonie, omijając przy tym wiele systemów Blendera, które spowalniały cały proces podmiany obiektów.
  • Zaimplementowane drobniejsze systemy do LoD - mój system LoD jest tak wydajny, że umieściłem w nim wiele systemów gry (podnoszenie i używanie przedmiotów lub obiektów, wspomaganie odtwarzania dźwięków i doboru siatki kolizji, dynamiczne tworzenie świateł - by ominąć błąd predefiniowania shaderów światła).
  • Spalenie w Słońcu - wykrywanie czy gracz jest na słońcu (lub w cieniu) działa z dokładnością od punktowej do jednego metra, gra zachęca nas do szybkiego przemieszczania się między budynkami (żeby nie spalić się w słońcu), dlatego większość niedokładności nawet nie zauważymy (a wszystkie z nich działają na korzyść gracza i dodają mu trochę zbawiennego cienia 8-) )
  • Śmierć - gra daje nam kilka sposobów na pozbycie się naszego cennego życia, z których nie powinniśmy korzystać (spalenie w słońcu, śmierć głodowa, rozładowanie baterii naszego ochronnego kombinezonu) planuje dodać jeszcze kilka sposobów.
  • Brak ekranów wczytywania - jedyny ekran wczytywania pokazuje się przy pierwszym wczytaniu gry, gdy następnym razem wczytamy grę (z poziomu działającej rozgrywki) program wczyta ją z prędkością otwierania zdjęcia z wakacji (gdybym dodał jakiś ekran wczytywania, to gra wczytywałaby się 2x dłużej :shock: bo program musiałby wczytać jeszcze ten obrazek z napisem "wczytywanie" :P ).
  • Dynamiczny otwarty świat - przy użyciu komendy LibLoad() stworzyłem system wczytywania obszarów dzięki czemu nie czekamy aż właduje się jakaś lokacja (wnętrze budynku lub "kolejny poziom gry"), jest tylko jedna WIELKA piaskownica (starte w pył miasto), podobnie jak w większych produkcjach (np. Skyrim) poza terenem wczytanym widać całą dostępną mapę w szczątkowej jakości (widać najważniejsze budynki i miejsca, do których możemy się dostać i je zwiedzić).
  • Animacja tekstur - na początku system LoD sterował całą animacją (teraz tylko ją wspomaga) piszę tutaj o animacji tylko dlatego, by zwrócić uwagę na komendy Blendera, które operują na teksturach, część z nich obarczona jest błędem i powodują wyciek pamięci (bitmapy klonują lub powiększają się nieustannie zwiększając zużycie pamięci RAM), pozbyłem się tego problemu w grze i luncherze (którego napisałem w C++ na OpenGLu - wiele osób zapomina o tym tworząc mały programik taki jak luncher).
  • Opcje gry - gra zawiera chyba wszystkie ważniejsze opcje takie jak jasność, rozdzielczość, pełny ekran, antyaliasing, ustawienia przycisków klawiatury, czułość myszy, zmianę głośności, zmianę języka (obecnie tylko polski - z polskimi głosami) w grze można włączyć także efekt głębi pola i ustawić opcje odległości renderowania obszaru gry, najważniejszą opcją jest jednak tzw. "obciążenie", które definiuje czy gra ma wykorzystywać głównie procesor, kartę graficzną czy rozłożyć obciążenie po równo (odpowiednie ustawienie opcji do posiadanego sprzętu może jeszcze poprawić działanie systemu LoD :D ).

Pozostało do zrobienia:
Mam już przygotowany skrypt instalatora, luncher (do którego trzeba dodać opcje jakości tekstur i zmianę języka), jednak najpierw trzeba dopracować teksty i je przetłumaczyć, nagrać dialogi, stworzyć modele wielu obiektów i poustawiać je na planszy. Ważnym elementem gry jest pojazd, którym będziemy przemieszczać się między dalszymi lokacjami (długotrwałe i monotonne bieganie oraz ukrywanie się przed słońcem mogłoby skutecznie zniechęcić graczy do eksploracji - mapa jest po prostu ogromniasta), muszę oskryptować poruszanie, sterowanie i zapisywanie tego obiektu :? . Zostało też parę statystyk do oskryptowania (po śmierci graczowi pokazuje się ekran statystyk - gdzie dowiadujemy się od czego zginęliśmy, ile razy pożywaliśmy się, użyliśmy obiektów, znaleźliśmy przedmiotów, przemierzyliśmy kilometrów, czasu spędziliśmy w grze oraz to ile fabuły i "znajdziek" udało nam się odkryć).

Beta / Demo:
Najpierw wypuszczę małą betę (zawierającą początek gry bez fabuły), potem będzie demo, które będzie dłuższe i będzie zawierało już wszystkie systemy gry, większy obszar rozgrywki i fabułę.

Podsumowanko:
Aż mnie korci, żeby napisać gorącego tutka o LoDach zaawansowanych :shock: . Ale co nagle to po diable - trzeba przygotować jakieś przykładowe skrypty i/lub projekty. Jak znajdę czas na takie przedsięwzięcie to możecie na mnie liczyć! Jeśli macie jakieś pytania, z chęcią odpowiem. Ale ja też mam do Was pytanie - Co sądzicie o projekcie? :)
Ostatnio zmieniony 25 maja 2014, 10:41 przez lukaszfito, łącznie zmieniany 2 razy.

Awatar użytkownika
maniek
Administrator
Posty: 725
Rejestracja: 18 lip 2012, 11:03

Re: Red End

Postautor: maniek » 28 gru 2013, 16:16

Jedno ogólne "Wow" ;) I to jest wszystko w BGE?? Szacunek dla Ciebie za wkład pracy związanej z tworzeniem tej gry jak i zamysłu. A pomysł naprawdę świetny ;) No i demko by się przydało, żeby zobaczyć jak to chodzi i jak wygląda..

Co do LoD... Jeśli napisałeś własny system LoD i jest bardzo wydajny, to nie krepuj się z pisaniem tutoriala, bo taki materiał będzie na wagę złota ;)

Co do zmiany języka.. masz jakiś skrypt ładujący teksty?? Ja coś kiedyś wymyśliłem apropo projektu "Engine" także służę wsparciem jak coś ;)
Nowy serwis z fajnymi, imprezowymi, niedrogimi koszulkami - http://fajne-imprezowe-koszulki.cupsell.pl

Awatar użytkownika
lukaszfito
Posty: 140
Rejestracja: 28 gru 2013, 1:37
Lokalizacja: Gdańsk
Kontaktowanie:

Re: Red End

Postautor: lukaszfito » 28 gru 2013, 17:45

Tak maniek, wszystko w BGE - oczywiście pomijając tekstury z GIMPa i luncher w C++, jedyne czego nie udało mi się zrobić to dynamicznej zmiany antyaliasingu w grze, dlatego ta opcja pojawiła się jedynie w luncherze. Wiele ominąłem opisując stworzony Engine: renderowanie czterech warstw obrazu na sobie (HUD, Gra, Daleki teren, Niebo), systemy dopasowania prędkości animacji i poruszania się postaci do prędkości odświeżania obrazu, albo właśnie system wczytywania tekstu z plików - bo to takie tam drobnostki :roll: .

Widzę, że nie ma takiego tutka o LoDach, więc na pewno by się przydał, już wcześniej chciałem napisać coś takiego, ale mieliście wyłączoną rejestracje a informacje o użytkownikach zablokowane dla gości, więc nawet maila do nikogo z forum napisać nie mogłem :cry: - całe szczęście sytuacja się odmieniła :D .

Co do tekstów, mam już system wczytujący (z parametrem języka), system miksujący z uniwersalnymi zdaniami (by zaoszczędzić miejsce i przyśpieszyć wczytywanie), system losujący opis klikniętego obiektu i jeszcze zapisy oraz odczyt konfiguracji / zapisu gry.

CacholaPL

Re: Red End

Postautor: CacholaPL » 28 gru 2013, 22:58

Mam pytanie ten "launcher C++" służy do skryptowania w BGE językiem C++, powiesz skąd takie coś pobrać, ale chociaż "zrobić", bo C++ znam lepiej od pythona

Awatar użytkownika
maniek
Administrator
Posty: 725
Rejestracja: 18 lip 2012, 11:03

Re: Red End

Postautor: maniek » 28 gru 2013, 23:44

Nie.. Launcher to taki odpalacz exe'ka tylko, że w nim możesz wstępnie skonfigurować rozdziałkę, antyalising itp. To osobne okno które pojawia się przed odpaleniem gry BGE, no i ono jest napisane w C++
Nowy serwis z fajnymi, imprezowymi, niedrogimi koszulkami - http://fajne-imprezowe-koszulki.cupsell.pl

CacholaPL

Re: Red End

Postautor: CacholaPL » 29 gru 2013, 17:29

Ahh...teraz rozumiem, launcher został napisany w C++ :D

Awatar użytkownika
maniek
Administrator
Posty: 725
Rejestracja: 18 lip 2012, 11:03

Re: Red End

Postautor: maniek » 29 gru 2013, 21:41

No chyba, że się diametralnie mylę ;) Ale to powinien definitywnie wyjaśnić lukaszfito ;)
Nowy serwis z fajnymi, imprezowymi, niedrogimi koszulkami - http://fajne-imprezowe-koszulki.cupsell.pl

Awatar użytkownika
lukaszfito
Posty: 140
Rejestracja: 28 gru 2013, 1:37
Lokalizacja: Gdańsk
Kontaktowanie:

Re: Red End

Postautor: lukaszfito » 29 gru 2013, 23:41

Już, już tłumaczę.. rzeczywiście luncher jest tylko małym okienkiem z przyciskiem "Graj", gra obejdzie się bez niego i bez niego działa. Cała gra jest napisana w Pythonie wewnątrz Blendera - nie posiada zewnętrznych skryptów, kompilatorów czy innych zewnętrznych systemów. Prawdopodobnie to co napisałem o luncherze (czyli, że jest w OpenGLu) wprowadziło Cię CacholaPL w błąd. Lunchera mogłem napisać w WinApi, na początku tak zrobiłem (ale był brzydki). Pytanie, dlaczego tworzyć luncher jeśli gra bez niego działa w stu procentach? To bardzo proste ;) - dzięki temu moja gra ma własną ikonkę i nie muszę się zastanawiać jak ją zmienić w pliku .exe wygenerowanym przez Blendera (i czy jest to legalne). Poza tym wiele pełnoprawnych gier ma lunchera (np. przytoczony wcześniej Skyrim) - oni chyba też mają problem z ikonkami :oops: .

CacholaPL

Re: Red End

Postautor: CacholaPL » 30 gru 2013, 0:21

Mój błąd, czasami zanim przeczytać 2 razy to od razu się pytam. Co do ikonki, zawsze można poszperać w skryptach, albo utworzyć skrót i zmienić ikonę. A ten launcher, to pisałeś w C++ tak ? A mógłbym wiedzieć w jakiej bibliotece, bo zgaduję, że albo w Qt Creator albo wxWidgets

Awatar użytkownika
maniek
Administrator
Posty: 725
Rejestracja: 18 lip 2012, 11:03

Re: Red End

Postautor: maniek » 30 gru 2013, 0:43

lukaszfito kiedy wydasz demko?? Jestem bardzo ciekaw Twoich rozwiązań i systemów, o których pisałeś ;)
Nowy serwis z fajnymi, imprezowymi, niedrogimi koszulkami - http://fajne-imprezowe-koszulki.cupsell.pl


Wróć do „Gry w trakcie realizacji”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości