Zaloguj się, aby móc dodać artykuł

Kategorie artykułów
Logowanie


Zapamietaj mnie
Facebook
05.02
05.02.2013 10:32 unix89
Jak zrobić grę? - Projektowanie
Część I - Wymagania
Część II - Planowanie

O czym ta część poradnika?
W poprzedniej części zwróciłem uwagę na to, że zanim zaczniemy kodować grę należy rozpisać wszystkie założenia gry na kartce, żeby w późniejszym etapie nie zapomnieć o czymś co kiedyś wymyśliliśmy. Ta część będzie kontynuacją poprzedniej, z tą różnicą, że zamiast zastanawiać się nad tym co ma się znaleźć w grze(zakładamy, że to wypisaliśmy sobie w poprzedniej części) skupimy się nad projektem technicznym naszej gry.
Projektowanie gry
Przyszedł czas na powiedzenie sobie w jakiej technologii ma powstać nasza gra. Do wyboru mamy m.in. ASP.NET, PHP, Jave. W czym piszemy najprościej zdecydować po naszych, lub naszego zespołu umiejętnościach. Gdy już wybierzemy najlepszą dla nas technologię pojawi się pytanie o edytor, w którym będziemy pisali, wybieramy powiedzmy...Notatnik A tak na poważnie to każdy z nas ma swoje środowisko, w którym mu się najlepiej pisze. Ja osobiście korzystam z Eclipse do Javy i PHP(ma specjalne rozszerzenie do PHP), Zend Studio do PHP i Visual Studio do APS.NET’a.
Oczywiście powyższe technologie powiedzmy są głównymi, w których wykonamy grę, ale nie wolno też zapominać o javascripcie i ostatnio popularnej bibliotece JQuery, w której będziemy mogli zrobić różne “wodotryski” w naszej grze, poczynając, np. od walidatora pól formularza, po ciekawie wyświetloną galerię, itp. Warto też w niektórych przypadkach wykorzystać Ajaxa, do przyśpieszenia działania gry, np. ładując jedynie część strony z danymi, a cały szablon z tłem, menu, itd. pozostawiać bez odświeżania.
Co powinniśmy wiedzieć
Niezależnie od tego jaką technologię wybraliśmy i tego z jakiego edytora skorzystamy są rzeczy, które każdy projektant aplikacji internetowej, a taką właśnie będzie gra, którą chcemy stworzyć. Do takich rzeczy należy wiedza na temat sieci Internet, architektury klient-serwer, aby wiedzieć co się dzieje w tle, gdy w w przeglądarce użytkownik wpisuje adres URL, czy pojawia mu się strona internetowa. Jako twórcy takiej aplikacji musimy przewidzieć różne zachowania tego użytkownika, te irracjonalne, jak również te, które będą miały na celu zrobienie bałaganu na naszej stronie. Zanim zatem zabierzemy się za kod powinniśmy zapoznać się z różnymi możliwościami ataków na naszą stronę począwszy od ataku DDOS, a skończywszy na SQL INJECTION.
Projekt bazy danych
Na podstawie założeń zrobionych w części planowania powinniśmy teraz założyć strukturę bazy danych. Pierwszą tabelą, którą proponuję utworzyć to tabela z danymi logowania użytkowników. W tej tabeli możemy uwzględnić również poziom uprawnień użytkownika, gdy planujemy udostępnić zarządzanie grą z panelu administratora innym użytkownikom. Parametry postaci, cechy jej charakter opłaca się wyjąć do osobnej tabeli, gdyż pozwoli nam to na umożliwienie gry jednemu użytkownikowi posiadania kilku osobnych postaci na jednym koncie. Zapotrzebowanie na inne tabele ciężko jest określić pisząc teoretycznie, bo zależą od tematyki tworzonej przez nas gry. Jeszcze jedną rzeczą, o której warto wspomnieć przy bazach danych to normalizacja i stworzenie naszej bazy w 3 postaci normalnej.
Algorytmy
Mając plan naszej gry (zrobiliśmy go w części poprzedniej) powinniśmy rozpisać sobie kilka algorytmów, aby nie zajmować sobie rozmyślaniem nad nimi podczas kodowania. W zależności od tematyki gry będą nam potrzebne różne algorytmy, a teoretycznie rozważymy walkę. W której powinniśmy wziąć pod uwagę większość z cech postaci, a nie np. tylko atak i obronę, bo w tym przypadku gra stanie się zbyt czytelna i nudna. W algorytmie walki dobrym pomysłem jest również uwzględnienie czynnika losowego. Im algorytm będzie trudniejszy do rozpracowania tym gra będzie bardziej nieprzewidywalna. Należy również zwrócić uwagę na takie zbalansowanie walki, aby nie działy się rzeczy nielogiczne, dajmy na to osoba ze znikomą umiejętnością ataku pokona kogoś kto ma super obronę. Korzyści ze zwycięstwa/ straty związane z porażką też powinny być zależne od różnicy między walczącymi, np. za walkę z dużo słabszym zysk powinien być znikomy. Kolejnym ważnym mechanizmem gry jest rynek, który będąc źle zaprojektowanym może zniszczyć radość z gry, bo co to za frajda z grania, gdy po tygodniu będziemy mieli postać uzbrojoną po zęby? Wymienione rzeczy na pierwszy rzut oka wydają się proste bo co to za sztuka napisać wzór na atak, czy obronę i ustalić odpowiednio duże ceny na przedmioty? W praktyce nie jest to takie kolorowe, gdyż zmiennych w takich wzorach powinno być odpowiednio dużo i musimy pamiętać o uwzględnieniu rożnych układów tych zmiennych, czyli jak już powyżej napisałem odpowiednim zbalansowaniu tych wzorów.
Na zakończenie
Ta część, wraz z poprzednim planowaniem powinna nam zająć najwięcej czasu. Część osób zapewne stwierdzi, że po co tyle rozpisywać oni zaczynają pisać od razu i wszystko będą planowali na bieżąco. Oczywiście tak się też da, ale gdy będziemy pisali na podstawie dobrego projektu to ograniczymy sobie bałagan w kodzie i sprawimy, że późniejsze poprawki będą zajmowały zdecydowanie mniej czasu.
Następna część (wkrótce)
Kodowanie gry
 
Komentarze
03.07.2013 14:28

krokodile1
Oczywiście że tak, serwer należy sobie kupić
 
11.06.2013 14:32

zosiak1989
Bardzo przydatne informacje
 
10.06.2013 20:06

HRMinecraft
Acha. I chyba zrobię grę z płyty. Mam już pomysł.
 
10.06.2013 15:17

Drikam
Cytat Zamieszczone przez HRMinecraft Zobacz posta
Z niecierpliwością czekam na kolejną część. I mam pytanie. Czy stworzenie gry online z serwerami jest płatne ?
Każdą grę trzeba jakoś otrzymać. Samo tworzenie gry niekoniecznie wiąże się z nakładem finansowym, jednak prędzej czy później będzie trzeba najpierw wydać trochę kasy, żeby zacząć zarabiać.
 
10.06.2013 14:29

HRMinecraft
Z niecierpliwością czekam na kolejną część. I mam pytanie. Czy stworzenie gry online z serwerami jest płatne ?
 
11.02.2013 01:35

Sachem
Tak dosyć chaotycznie rzeczywiście. W tej części tak jak kolega wyżej zauważył powinieneś głównie pisać o odpowiednim zbilansowaniu gry, a wspominasz o tym na końcu artykułu. Dodatkowo dodam, że graczowi powinniśmy wyznaczać na bieżąco jakieś cele, aby go przy grze zatrzymać.
 
07.02.2013 14:02

adamsky
Jeśli chodzi o skomplikowanie wzorów, czy też uwzględnienie w nich większej ilości zmiennych to też jest zależne od tego do kogo gra ma być kierowana. Jeśli gra ma być dla zwykłego "klikacza" to zgadzam się, że proste wystarczą. Natomiast jeśli chcemy utworzyć sojusze, współpracującą społeczność w grze to wtedy przyda się więcej opcji do obliczania podczas planowania ataków, itp. Też nie chodzi mi o jakieś kosmiczne wyliczenia, ale coś więcej niż "uszkodzenia=atak-obrona".
Moim zdaniem jest dokładnie na odwrót. Tam gdzie masz sojusze, współpracę, wojny między wieloma graczami tam wystarczą proste i przejrzyste wzory. Komplikacja w takich grach jest budowana na działaniach graczy i relacjach między nimi. Nie ma potrzeby tego dodatkowo komplikować. Chodzi o to żeby gracze walczyli ze sobą a nie z matematyczną wizją projektanta.


Moim zdaniem z tej części trzeba wybrać parę rzeczy, rozdzielić to pomiędzy "Planowanie" i "Kodowanie", a samą tą część usunąć. Bo o samym projektowaniu tu praktycznie nic nie ma.

EDIT:
tak na szybko, bo mam słabo z czasem dzisiaj:
do Planowania: o wyborze technologii, o zrozumieniu o co chodzi w projektach internetowych
do Kodowania: o edytorach, o zabezpieczeniach, o bazach danych

Reszta w kosmos, bo te rady o wzorach bez dokładniejszego komentarza to mogą wprowadzać w błąd. Zwłaszcza że nie dziwię się jeśli ktoś zielony uzna to za świetny pomysł, bo sam podobnie myślałem jak zaczynałem projektować.
 
07.02.2013 13:36

unix89
Ogólnie cały poradnik miał być zarysem tego, na co trzeba zwrócić uwagę podczas zabierania się do tworzenia projektu i pisania gry. Na szczegóły postaram się zwrócić uwagę jak już napiszę całość, chyba że w międzyczasie ktoś z Was ma ochotę na napisanie

Jeśli chodzi o skomplikowanie wzorów, czy też uwzględnienie w nich większej ilości zmiennych to też jest zależne od tego do kogo gra ma być kierowana. Jeśli gra ma być dla zwykłego "klikacza" to zgadzam się, że proste wystarczą. Natomiast jeśli chcemy utworzyć sojusze, współpracującą społeczność w grze to wtedy przyda się więcej opcji do obliczania podczas planowania ataków, itp. Też nie chodzi mi o jakieś kosmiczne wyliczenia, ale coś więcej niż "uszkodzenia=atak-obrona".

Czynnik losowy? Niby tak, ale wariancję trzeba trzymać w ryzach bo jak ktoś przegra parę razy z rzędu przez czynnik losowy, to się zniechęci.
Ja nie napisałem, że czynnik losowy ma być w granicach 0-100%. Powinien mieć jakiś wpływ na walkę, ale nie powinien jej rozstrzygać. Bardziej do rozstrzygania o wyniku uwzględniałbym różnice pomiędzy graczami, jak to napisałem powyżej.
 
05.02.2013 19:00

MrG
o tym jak skalować tempo rozgrywki, jak używać krzywych do projektowania balansu
najmądrzejsze słowa z całego tematu
 
05.02.2013 17:56

karer
najciekawsze gry i najbardziej wciagajaca opieraja sie na prostych zasadach i dobrym balancingu a nie na skomplikowanych wzorach
 
05.02.2013 17:06

adamsky
Dokładnie.

Zwłaszcza, że jak już coś trochę zahacza o projektowanie, to jest trochę ślisko.
To nie jest do końca prawda że gra jest ciekawa jak wzory są trudne do rozszyfrowania dla gracza i wsparte czynnikiem losowym. To może ewentualnie mieć zastosowanie przy tłuczeniu setek mobów, bo wtedy trzeba wycisnąć z gry jakąkolwiek nieprzewidywalność. Prawda jest taka że gracze lubią wiedzieć czym dysponują i jak się ich działania przekładają na realne możliwości ich postaci czy armii. Zwłaszcza przy PvP jest to istotne. Ukrywanie zależności pod skomplikowanymi wzorami nie zawsze jest pożądane.

Czynnik losowy? Niby tak, ale wariancję trzeba trzymać w ryzach bo jak ktoś przegra parę razy z rzędu przez czynnik losowy, to się zniechęci.

Temat na pewno wymaga dokładniejszego potraktowania, bo takie proste stwierdzenia że losowość jest dobra i skomplikowanie wzorów jest dobre niekoniecznie mają przełożenie na rzeczywistość.


Brakuje elementarnych moim zdaniem rad, jak choćby to że gracz musi otrzymać "nagrodę" w pierwszych minutach, żeby się wciągnął i chciał sięgać po kolejne.
Brakuje o wybieraniu grupy docelowej dla gry, o tym jak skalować tempo rozgrywki, jak używać krzywych do projektowania balansu, itp.
W części o projektowaniu to bym raczej arkusze kalkulacyjne polecał, a nie edytory kodu.
 
05.02.2013 16:20

Breleg
dokladnie - tak na prawde to to daloby sie wcisnac do wymagan a nie projektowania.....
 
05.02.2013 13:14

adamsky
Mało konkretów...