Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: "profesionalne" stworzenie większej gry.
Forum PHP.pl > Inne > Hydepark
Adi32
Meritum to 3 pytania zawarte w podtytule.

Od jakiegoś czasu w wolnych chwilach robię proste gierki w JS.
Czasami jak mi się nudzi lubię pograć w jakąś strategie.

Niestety żadna z gier w jakie grałem nie była "idealna", zawsze czegoś brakuje, zawsze mam wrażenie, że zrobiłbym coś lepiej itd...

Rozplanowałem punktowo gierkę którą chciałbym zrobić. Ciężko opisać jaka miałaby być ale byłoby to coś podobnego co "Master of The Secret Sea" (online, dobrze zaczęta, szybko się nudzi) jednak o wiele bardziej rozwinięte. Większy świat, więcej możliwości itp.

Zdaje sobie sprawę, że aby nauczyć się robić cokolwiek w tym kierunku potrzeba wiele czasu.

Kiedyś w podobny sposób postanowiłem nauczyć się PHP, aby zrobić sobie stronę i teraz pracuje w tym fachu także myślę, że jakieś szanse mam.

1. Jak jest lepiej (łatwiej, szybciej itp.) robić taką grę pod przeglądarkę, czy pod windows?
2. W jakiej technologii?
3. Do tej pory wszystko co robiłem polegało na tym, że ruszamy elementem na stronie i coś tam robimy. A teraz chodzi o coś takiego gdzie element jest na środku a otoczenie się rusza... To jest dla mnie jak na razie największą zagadką...
!*!
1. szybciej jest w tym w czym czujesz się mocniejszy
2. patrz wyżej, choć jeśli wybierzesz w przeglądarce, to oczywiste że HTML5 i tagi z niego, canvas, audio, video, websockets (lub ajax long polly).
3. musisz stworzyć tzw. strefę buforową czyli zakładając najprymitywniejszy wariant:

  1. <div id="world">
  2. <div id="buffor">
  3. <div id="player">player</div>
  4. </div>
  5. </div>


#world - wiadomo, generowana mapa, drzewa, krzaki, morze i inne pierdoły
#buffor - to właśnie osobny sektor w którym znajduje się gracz, poruszasz i/lub tylko nim we wszystkich kierunkach, obliczając to na podstawie rozmiarów #world. Taka strefa może pełnić też i nawet powinna inne założenia, jak ukrywanie tego czego nie widać (po co zajmować pamięć przeglądarki), możesz stworzyć w nim efekt FoW(fog of war) i wiele innych... takich stref może być więcej, w zależności od rozbudowania...
#palyer - nic innego jak postać w grze, z reguły sprite poruszający się wedle kierunku jaki obraliśmy, zawiera animacje i jest statyczny (choć nie musi, bo może przesuwać się względem bufora np. gdy skończy się mapa, aby przejść do końca planszy.
Adi32
!*! byłem pewien, że jeżeli zabierzesz głos w tym temacie to napiszesz "nie ma sensu", a tu miłe zaskoczenie smile.gif
Wydaje mi się, że wybiorę przeglądarkę. Na pewno będzie to dla mnie łatwiejsze.

Jednak dalej - nie wiem nic o profesjonalnym stworzeniu czegoś takiego, inaczej mówiąc byłbym w stanie zrobić w JS ale nie miałoby to nic wspólnego z profesjonalizmem.
Dzięki za info o strefie buforowej, wiele mi to rozjaśnia jednak nie wiem nic o zastosowaniu tego...
!*!
I jeszcze jedna rzecz, musisz się zastanowić jak to napisać ,tzn. chodzi mi o to jak chcesz stworzyć świat gry, jakim sposobem.
Kiedyś szukałem podobnych rzeczy, znalazłem http://jgen.googlecode.com/svn/branches/ma...itor/index.html jednak było to tak ubogie i nie działało w każdej przeglądarce, a autor porzucił prace, więc napisałem własny silnik z edytorem który pozwala mi tworzyć gry podobne do warcrafta2, openttd czy fallout2 jednak z braku czasu i większej ilości gotówki zbyt wolno powstaje chociażby demo wink.gif
Akurat w tym przypadku wybrałem tworzenie map tradycyjne na div, img... canvas do tego typu rzeczy mimo iż "nowszy" jest zbyt powolny przy dużych ilościach, używam go tylko do efektów np. ognia, dymu czy wody.

Wspomniana strefa buforowa... może to Ci naświetli http://gamequeryjs.com/documentation/first...utorial-step-1/ chodzi o to że świat gry jest głównym pojemnikiem, gracz przed monitorem widzi tylko bufor, cała reszta jest nieaktywna, z chwilą poruszania się, elementy się zmieniają na widoczne (tu musisz też zaplanować system kolizji).
Adi32
Strona z tutorialem strefy buforowej to chyba to czego szukałem. Będzie na pewno bardzo przydatna.

Cytat
I jeszcze jedna rzecz, musisz się zastanowić jak to napisać ,tzn. chodzi mi o to jak chcesz stworzyć świat gry, jakim sposobem.


A jakie są?

Dodam, że gra nie będzie polegała tylko na poruszania się.
Będzie system walki (chyba podobny jak w grze którą wymieniłem bo nie mam innego pomysłu)
System handlowania, który będzie zakładał różne waluty (różne porty w różnych pseudokrajach przyjmujące różne waluty i różne przeliczniki)
i inne
!*!
Cytat(Adi32 @ 3.09.2012, 15:58:02 ) *
A jakie są?

Tak jak napisałem, albo robisz to na div/img albo w canvas. Chyba że cała mapa byłaby jednym wielkim obrazkiem, co też nie byłoby złe, pod warunkiem że mapa byłaby bardzo mała, bo po co czekać aż załaduje się jeden wielki obrazek, jak można podzielić go na setki mniejszych (tzw. tiles) i załadują się tym sposobem szybciej.

Zaplanuj pierw całą mechanikę, to jak gra ma działać, chyba że skorzystasz z gotowego silnika. Handel, walka, życie to dodatki które i tak piszesz w fazie końcowej, całej produkcji... pierw potrzebny jest dobry silnik który to obsłuży.
Adi32
Jeden wielki obrazek definitywnie odpada.

Nie wiem czy elementy miałyby być rozłożone losowo czy na stałe, chyba bardziej na stałe ale chciałbym mieć coś w rodzaju bazy danych elementów.
W bazie zawierałyby się pozycje x y miasta, tak samo chyba wysp?

Silnik miałby być taki, aby łatwo było dodawać nowe rzeczy. Jest taki gotowy?
!*!
Trudno o dobry gotowiec, szczególnie że jak piszesz coś rozbudowanego to z gotowca i tak wywalisz/przepiszesz/dopiszesz 98% rzeczy... Popatrz na jGen, masz tam przykłady działania (przejdź na stronę główną, bo podałem link do edytora tylko), napisz do autora, może robi coś nowego, ogólnie facet bardzo dobrze to zaplanował, podpatrz kod bo mechanizm sprite czy trzymania wszystkich obiektów jest dobrze pomyślany.

Jak zdecydujesz się na budowę map przy pomocy właśnie kafli, to masz wiele możliwości, od generowania bezpośrednio dokumentów html (co z czasem może być kłopotliwe), do plików XML które generują właśnie widok html, który wrzucasz w cache... Baza elementów? Tzn? chodzi o edytor? Tu nie plątałbym w to nawet bazy danych, tylko zwykły odczyt plików z katalogu, w końcu na mapie i tak nie będzie to niczym innym tylko divem/ z tłem czy samym obrazem.

Pozycja miasta x i y też możesz rozwiązać różnie... ja używam określenia w PX, jest wygodniejsze od umieszczania pozycji konkretnego elementu i chyba nawet szybsze.
bim2
Obejrzyj sobie http://www.youtube.com/watch?v=iZ5ky19IqC0

Grą narazie zastopowana, bo to wydaje się proste. Kod silnika gry po stronie przeglądarki przepisywałem z 3 razy. Oparte całośc na obrazkach + kafelkach. Licze odleglosc klikniecie od miejsca gdzie gracz stoi i wiem w co kliknąłeś. Ogólnie masakra. Jest multi tak że widać innych graczy ale działa to jak działa. Duże problemy z wydajnością. Ja to robiłęm 3 lata a i tak dużo zostało do zrobienia.

Odradzam zabawy w takie coś ;d
!*!
Cytat(bim2 @ 7.09.2012, 00:19:25 ) *
Licze odleglosc klikniecie od miejsca gdzie gracz stoi i wiem w co kliknąłeś.



Klikasz czy poruszasz strzałkami? Jak to rozwiązałeś, napisałeś własny algorytm A czy coś bardziej prostszego?
bim2
I to i to.
Algorytm już pokazywałem tutaj na forum.
http://hernas.pl/art/5-SearchWay/

Prosta sprawa ten algorytm i wydajny niezależnie od wielkości mapy.

Gra jest uruchomiona.
Rejestracja: http://epicknight.com/Epicknight-registerForm/
Logowanie: http://epicknight.com/Epicknight-loginForm/
Adi32
3 lata mówisz? Ale nie siedziałeś nad tym non stop?
Jaki miałeś poziom wiedzy kiedy zaczynałeś tworzyć grę?
Na pewno nauczyłeś się czegoś ciekawego w trakcie tworzenia gierki?

bim2
No nie cały czas. Po szkole sobie kodziłem powoli i w wakacje. Dużo nauki Javascript i Html smile.gif Od strony serwera to nie za dużo. Poznanie algorytmów, obliczeń itd. Dużo pomogło w rozwoju wyobraźni i potem nie miałem problemów w szkole z czymkolwiek z matmy tongue.gif

Poziom wiedzy taki że tworzyłem sobie już na zlecenie strony. Pracowałem wcześniej na 5gb bazy danych liczbowych więc z optymalizacją mysql nie miałem problemów. Zawsze się czegoś nauczysz więc warto. Jeśli masz chęci i czas.

Ja mam zamiar to dokończyć bo niewiele zostało i sprzedać komuś jako gotowy silnik gry.

Btw. To pociągło mnie do nauki Javy aby stworzyć MapEditora: http://hernas.pl/art/3-EpicknightDev/ Teraz spokojnie jak czegoś potrzebuje na potrzeby swoje to samemu sobie w Javie kodze. ;]
redeemer
Abstrahując od technologii to jeśli chodzi o sam design gry to polecam książkę "Grywalizacja" (org. "Gamification by Design: Implementing Game Mechanics in Web and Mobile Apps"). Podobno dobre też jest "The Art of Game Design: A Book of Lenses", ale jeszcze nie czytałem.
bim2
Design nie jest moją borszką. Plany były większe do tego projektu ale musiał zejśc na bok, a deign był zamówiony. Ale dzięki za polecenie, z chęcia przeczytam smile.gif
!*!
Cytat(bim2 @ 7.09.2012, 19:46:24 ) *
I to i to.
Algorytm już pokazywałem tutaj na forum.
http://hernas.pl/art/5-SearchWay/

Prosta sprawa ten algorytm i wydajny niezależnie od wielkości mapy.

Gra jest uruchomiona.
Rejestracja: http://epicknight.com/Epicknight-registerForm/
Logowanie: http://epicknight.com/Epicknight-loginForm/


Nieźle, nie wyrzucaj tego z serwera tak prędko, jak znajdę czas przyjrzę się bliżej wink.gif
Mi zajęło trochę ogarnięcie jak taki sam algorytm przerzucić na "widok" izometryczny... oraz jak napisać "sprite" który obraca się we wszytkich 8 kierunkach do tego.
prowseed
http://www.ludumdare.com/ - masz do inspiracji ; )
Theqos
Cytat(Adi32 @ 3.09.2012, 15:02:40 ) *
Niestety żadna z gier w jakie grałem nie była "idealna", zawsze czegoś brakuje, zawsze mam wrażenie, że zrobiłbym coś lepiej itd...
(...) jednak o wiele bardziej rozwinięte. Większy świat, więcej możliwości itp.

Nic nie jest idealne tongue.gif Muszę cię zmartwić, ale to co chcesz, czyli większe, bardziej rozwinięte, więcej... itd. to nie jest problem umiejętności tylko czasu i ilości pracy jaki trzeba na to poświęcić. Nawet programowanie to jest tylko wycinek pracy jaki byś musiał w to włożyć. Ja teraz robię dość prostą grę zręcznościową z małym zespołem, zawodowo po 8 godzin dziennie. I siedzimy nad tym już 8 miesięcy, a plan przewiduje, że do końca pozostało jeszcze 2. No i mamy trochę więcej doświadczenia niż przesuwanie elementu po ekranie wink.gif Na pocieszenie powiem, że też tak zaczynałem, chciałem stworzyć lepszą grę niż w tą w którą grałem i najlepiej odrazu super MMO czy RPG wink.gif

Ogólnie moje rady są takie, najpierw odpowiedź sobie na pytanie czy chcesz programować silniki do gier, czy robić gry. Jeżeli interesują cię algorytmy podziału przestrzenii, grafy, poszukiwanie ścieżki, triangulacja, symulacja płynów, AI i inne dziwne algorytmy, implementacje systemu komponentów, eventów, procesów itd. to prawdopodobnie zainteresuje cię tworzenie silnika do gier. Jak chcesz zrobić grę to polecam zacząć na przykład od moddingu, zrób questa do Skyrima i zobacz ile to roboty. Albo wykorzystaj jakiś gotowy silnik np. Unity i stwórz jakąś prostą grę od początku do końca.

Jak chcesz obejrzeć sobie kod (JS) czegoś podobnego do tego co chcesz stworyć http://browserquest.mozilla.org/ https://github.com/mozilla/BrowserQuest

!*!
Cytat
Jak chcesz zrobić grę to polecam zacząć na przykład od moddingu, zrób questa do Skyrima i zobacz ile to roboty.

Albo cokolwiek co jest na silniku od ID'S, np. tech3 (quake3, ET, TCE), tech4 (q4,doom3), lub Source od valve (HL2) dobre edytory map mają te produkcje...

Theqos - co to za zręcznoścówka? Coś pod przeglądarkę, chmura czy natywne?
rzymek01
Warto obejrzeć http://www.youtube.com/watch?v=_RRnyChxijA
Theqos
Cytat(!*! @ 11.09.2012, 18:40:37 ) *
Theqos - co to za zręcznoścówka? Coś pod przeglądarkę, chmura czy natywne?

Natywnie pod iOS.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.