Tworzenie gier - jak się je tworzy? Od czego zacząć?

Tworzenie gier - jak się je tworzy? Od czego zacząć?
MD
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 8 lat
  • Postów:280
0

Od nie dawna uczę się programować trochę w javie, trochę w c++. Na razie wszystko idzie łatwo, bez większych problemów.
Jednego nie mogę pojąć jak się tworzy gry tzn. nie chodzi tu o to jak tworzyć jakieś silniki do gier, biblioteki bo to pewnie materiał na książkę.
Szukałem w google, czytałem i nadal nie rozumiem tego procesu do końca, więc mam parę pytań:

W jaki sposób można napisać grę tzn. wiem, że są biblioteki graficzne jak i silniki do gier. Od czego powinienem zacząć ?
Czym różni się pisanie gier na przykład używając allegro,open gl a silniku np. unity 3D ?
Czy z biblioteką graficzną Open GL ES jestem w stanie napisać dobrą grę pod Androida (bo to mnie bardziej interesuje/jeśli ktoś się na tym zna) na miarę gier Rovio znanych z min. Angry Birds (oczywiście w późniejszym etapie nauki Open GL ES) czy może powinienem użyć jakiegoś silnika do gier ?

Główny problem polega na tym, że chcę zacząć pisać gry pod androida, a nie wiem od czego zacząć.
Dotąd napisałem prostą grę za pomocą biblioteki allegro i poruszający się button na androidzie za pomocą innych buttonów, lecz z tą wiedzą daleko nie zajdę. Chce zacząć pisać proste gry za pomocą popularnych bibliotek albo silników, a żeby pisać później w nich coś lepszego.

Przepraszam jeszcze, że moje wypowiedzi mogą być nie spójne i "zagmatwane", lecz problem jaki posiadam jeśli chodzi o pisanie gier jest trudny do opisania. Pewnie będę miał jeszcze jakieś pytania, więc je później dopiszę.

flowCRANE
Temat wątku powinien w sposób sensowny i w miarę wyczerpujący opisywać Twój problem;
Patryk27
@Furious: co tak ostatnio moderatorzy korzystają z tego pogrubienia? :P
flowCRANE
Żeby nie zlewały się z pozostałymi komentarzami; Inaczej to mało kto widzi, że moderator/administrator o coś upomina i dalej samowolka :C
madmike
Ha, żeby upominany widział, że to moderator go upomina i grzecznie tym samym prosi o coś, a nie jakiś tam np. Patryk007, któremu zachciało się podokuczać początkującemu :]
K5
  • Rejestracja:około 12 lat
  • Ostatnio:około 7 lat
  • Lokalizacja:Tutaj,obok
  • Postów:759
0

W jaki sposób można napisać grę tzn. wiem, że są biblioteki graficzne jak i silniki do gier. Od czego powinienem zacząć ?
Moim zdaniem od biblioteki graficznej.

Czym różni się pisanie gier na przykład używając allegro,open gl a silniku np. unity 3D ?
Alegro to prosta biblioteka do grafiki a OpenGL to zbiór funkcji rysujących w przestrzeni trójwymiarowej.
A silnik ma funkcje wczytujące modele, obrazy, tekstury, operuje na macierzach, posiada kolizje i proste AI obudowane w GUI.

Czy z biblioteką graficzną Open GL ES jestem w stanie napisać dobrą grę pod Androida (bo to mnie bardziej interesuje/jeśli ktoś się na tym zna) na miarę gier Rovio znanych z min. Angry Birds (oczywiście w późniejszym etapie nauki Open GL ES) czy może powinienem użyć jakiegoś silnika do gier ?
Moim zdaniem użyj OpenGL ES.

Główny problem polega na tym, że chcę zacząć pisać gry pod androida, a nie wiem od czego zacząć.
Dotąd napisałem prostą grę za pomocą biblioteki allegro i poruszający się button na androidzie za pomocą innych buttonów, lecz z tą wiedzą daleko nie zajdę. Chce zacząć pisać proste gry za pomocą popularnych bibliotek albo silników, a żeby pisać później w nich coś lepszego.
Zacznij od biblioteki graficznej - OpenGL ES.


Jeśli mój post jest dowodem mojej niekompetencji, to trudno, ale po to pytam, żeby się czegoś dowiedzieć.
edytowany 2x, ostatnio: kacper546
MD
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 8 lat
  • Postów:280
1

Wielkie dzięki pomogło, wezmę się za OpenGL ES, tylko jeszcze jedno. Czy mogę czytać artykuły/kursy/książki o OpenGL i potem bez większych problemów przerzucić się na OpenGL ES tzn. Czy jest to dokładnie to samo (składnia itp.) i tylko różni się to tym, iż OpenGL ES jest stworzony z myślą o androidzie, a OpenGL o aplikacjach na windowsa. Są to dokładnie te same "zbiory funkcji rysujących w przestrzeni trójwymiarowej" ?

spartanPAGE
OpenGL jest przenośną biblioteką;
Azarien
OpenGL ES to nie jest tak całkiem ta sama biblioteka co OpenGL.
K5
OpenGL ES to okrojona wersja OpenGL.
K5
  • Rejestracja:około 12 lat
  • Ostatnio:około 7 lat
  • Lokalizacja:Tutaj,obok
  • Postów:759
0

Czy mogę czytać artykuły/kursy/książki o OpenGL i potem bez większych problemów przerzucić się na OpenGL ES
OpenGL ES (Embedded Systems) to okrojona wersja OpenGL. Istnieje wiele różnic pomiędzy nimi - na przykład, nie ma glBegin lub glEnd.
Tutaj jest to ogólnie opisane: http://wiki.maemo.org/OpenGL-ES

OpenGL ES jest stworzony z myślą o androidzie, a OpenGL o aplikacjach na windowsa.
OpenGL ES jest zaprojektowany dla urządzeń mobilnych typu telefony komórkowe, palmtopy i konsole do gier, to oficjalne API dla grafiki 3D w systemach Symbian, Android i iOS.
Natomiast OpenGL to specyfikacja uniwersalnego API do generowania grafiki tzn że jest przenośne a nie pisane z myślą "o aplikacjach na windowsa".


Jeśli mój post jest dowodem mojej niekompetencji, to trudno, ale po to pytam, żeby się czegoś dowiedzieć.
edytowany 1x, ostatnio: kacper546
MD
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 8 lat
  • Postów:280
0

Dobra dzięki już wiem co robić, biorę się do roboty mam teraz trochę lektury.

edytowany 1x, ostatnio: MoorfoxD
satirev
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 4 lata
1

Skoro chcesz pisać gry, to może lepiej użyj do tego silnika (nie tylko graficznego) zamiast (na początku) dłubać w OpenGL. W skrócie, chcesz pisać gry, to zamiast pisać api pozwalające stworzyć grę, lepiej poświęcić zapał na pisanie samej gry, nieprawdaż? Później (o ile w między czasie nie zmienisz zdania na temat pisania gier...) i tak będziesz zmuszony sięgnąć do samego OpenGL...ale branie tego na pierwszy ogień wydaje się być dziwnym pomysłem.
Teraz, jaki engine wybrać....mogę polecić Ci tylko 1, z którym miałem kontakt Cocos2d-x. Cocos jest wieloplatformowym silnikiem do gier 2d, pozwala na prostą kompilację pod różne platformy (nie tylko android). Cocos dzieli się bodajże na 2 frameworki: natywny C++-owy i jakiś webowy. Sam cocos zbudowany jest właśnie na OpenGLu. Po więcej informacji odsyłam tutaj: http://www.cocos2d-x.org/

Zobacz pozostały 1 komentarz
satirev
Uczy pisania gier. Pytanie w temacie dotyczy pisania gier, a nie pisania api do pisania gier.
K5
Jak uczy pisania gier? Chyba swoich funkcji.
satirev
? jakich funkcji? Bierzesz api silnika i zamiast klepać swoje implementacje managerów scen, animacji, klas zarządzających obiektami gry implementujesz samą grę. Imo to na początku nauczy kogoś o wiele więcej niż pisanie x-linii kodu tylko po to by wyrenderować sześcian.
Azarien
zgadzam się z @Satirev: nauka OpenGL uczy OpenGL, a nie pisania gier. weźmie OpenGL, napisze obracający się sześcian i mu się odechce. weźmie engine do gier, napisze prostą gierkę, i będzie się miał czym chwalić przynajmniej.
n0name_l
Wtrace swoje 5 grosze: najsmieszniejsze w nauce OGL jest to, ze istnieje 90% prawdopodobienstwo, ze w pracy jako gamedev nigdy go nie wykorzysta :P
n0name_l
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 4 lata
  • Postów:2412
1

Napisanie sensownej rzeczy w OGL (na desktopy) zajmuje kolo roku nauki. Jesli chcesz tworzyc zarzadzanie grafika przez tyle czasu, nie widzac praktycznie zadnych efektow pracy, to okej. Ja jednak polecam jak kolega wyzej zaczac od gotowcow, powoli sie uczac wszystkich tych zawilosci.

MD
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 8 lat
  • Postów:280
0

Rok... no to może zmienię zdanie. Po drugie, też za bardzo nie rozumiem, czemu ma służyć OpenGL po za tworzeniem grafiki trójwymiarowej.
EDIT:
Ale nie wiem czy dobrze rozumiem z powyższych wypowiedzi "OpenGL służy do pisania api" oznacza, że za pomocą OpenGL tworzy się na przykład taki silnik ? Bo chyba dokładnie tej wiedzy mi brakowało. Tzn. Za pomocą OpenGL tworzę wczytywanie tekstur animacje grafikę,renderowanie buffory. Za pomocą jeszcze innych bibliotek audio, sterowanie. I łącze to w silnik ?
Wiem, że to pytanie może być śmieszne/kompletnie mijające się z prawdą, ale muszę zrozumieć do czego to dokładnie służy i może wtedy wybiorę od czego zacznę.

edytowany 4x, ostatnio: MoorfoxD
n0name_l
OpenGL sluzy jedynie do rysowania po ekranie (no i przeksztalcenia), do niczego wiecej. Obsluge okna, wczytywanie tekstur, dzwiek, kontrole robi sie w czyms innym. Musisz tez pamietac, ze jest roznica miedzy silnikiem grafiki a silnikiem gry. Bo to dwie zupelnie inne rzeczy.
babubabu
  • Rejestracja:około 13 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Łódź
  • Postów:648
0

No mniej więcej tak. Za pomocą OpenGL możesz napisać swój silnik graficzny a później używając tego silnika możesz napisać grę. Przy czym na napisanie dobrego silnika graficznego trochę Ci zejdzie :P (fizyka, efekty cząstek, mgła, wczytywanie tekstur itp).

edytowany 1x, ostatnio: babubabu
satirev
Silnik graficzny != silnik fizyki. Silniki graficzne pisane są w taki sposób by można było prosto dołączyć do niego np. silnik fizyki.
babubabu
a ok mój błąd
satirev
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 4 lata
0

OpenGL to po prostu biblioteka graficzna. Poziom abstrakcji tej biblioteki jest dość niski przez co zbudowanie bardziej złożonej sceny wymaga dużego nakładu w postaci kodu. Jeśli chciałbyś pisać grę bezpośrednio w OpenGL, to musiałbyś zdefiniować sobie pewne api , które wykorzystałbyś pisząc już samą grę. Silnik graficzny udostępnia Tobie już takie api (o wiele bardziej rozbudowane i na pewno bardziej skalowalne).

0

znacza, że za pomocą OpenGL tworzy się na przykład taki silnik

Na silnik składa się wiele elementów, poruszane to było w tym temacie:
Programowanie gier/silników
w pdf (http://www.cse.chalmers.se/edu/year/2012/course/TDA361/Designing%20a%20PC%20Game%20Engine.pdf) masz przykładowy schemat.
W uproszczeniu - OpenGL może być częścią silnika, ale nie musi - może być to równie dobrze DirectX, lub oba te silniki (jeżeli np. chcemy aby silnik był wieloplatformowy).
Również polecam Ci wybór już istniejącego silnika i naukę jego obsługi. Zanim jednak zaczniesz - możesz się wprawić np. w takim XNA (co prawda to już trup, ale na necie jest mnóstwo tutoriali) - małym nakładem możesz napisać prostą grę 2d lub 3d. Poznasz dzięki temu podstawowe pojęcia związane z programowaniem gier. Jak chcesz zajrzyj np. tutaj:
http://channel9.msdn.com/Series/Kurs-tworzenia-gier-w-XNA

MD
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 8 lat
  • Postów:280
0

Ok dzięki teraz już wiem na jakiej zasadzie to działa pobawię się trochę tym silnikiem "Cocos2d-x", bo nadal interesuje mnie tworzenie gier pod androida, jednocześnie będę uczył się o OpenGL lub OpenGL ES

edytowany 1x, ostatnio: MoorfoxD
K5
  • Rejestracja:około 12 lat
  • Ostatnio:około 7 lat
  • Lokalizacja:Tutaj,obok
  • Postów:759
0

OpenGL do rysowania po ekranie i operowania na macierzach.
Do obsługi okna, myszy, klawiatury może być GLUT.
Do ładowania plików graficznych np: DevIL
Do dźwięku OpenAL.

Mówię tu o aplikacjach deskopowych bo nie wiem jak to jest z OpenGL ES.


Jeśli mój post jest dowodem mojej niekompetencji, to trudno, ale po to pytam, żeby się czegoś dowiedzieć.
n0name_l
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 4 lata
  • Postów:2412
1

Jeszcze napomkne, ze jak chcesz zobaczyc jak jest zbudowana gra, w ktora faktycznie ludzie graja (grali w wiekszej liczbie przypadkow), to polecam blog Fabiena: http://fabiensanglard.net/.

Jest tam sporo code reviewow z przedstawieniem architektury danej gry (wszystko w formie milej dla oka ;P).

satirev
Fajne! nie znałem tego ;)
MD
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 8 lat
  • Postów:280
0

Dobra dziękuję wszystkim, widzę ze sporo lektury przede mną. Na pewno skorzystam ze stron, które podaliście, dowiem się może dzięki temu czegoś więcej na temat procesu tworzenia gry.

edytowany 1x, ostatnio: MoorfoxD
babubabu
  • Rejestracja:około 13 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Łódź
  • Postów:648
0

Ja się dołączam do podziękowań bo sam chce stworzyć własną grę. Na razie pracuję nad rozgrzewkowym projektem którego źródła w wersji prepreprealfa 0.0.0.0.0.0.1 można znaleźć na forum.

K5
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)