Warsztat.GDCompo!ProjektyMediaArtykułyQ&AForumOferty pracyPobieranie

Opisz napotkaną sytuację, a redakcja niezwłocznie znajdzie rozwiązanie!

wyślij anuluj

Chcę napisać grę. Jak to zrobić?

Tekst został importowany z Warsztatowych artykułów. Jego oryginalnym autorem jest naleth. Jeżeli został importowany poprawnie, usuń ten szablon!

Artykuł dla osób, które chcą napisać grę, ale nie mieli jeszcze styczności z tym działem programowania albo w ogóle z programowaniem.

Wstęp

Ten artykuł jest przeznaczony dla wszystkich, którzy chcą napisać grę, ale nie wiedzą od czego zacząć - gdzie szukać informacji, czego się uczyć, czego potrzeba. Ten artykuł nie wyjaśnia krok po kroku, jak napisać grę - jest to zadanie bardzo skomplikowane i przede wszystkim składające się z bardzo wieli mniejszych problemów. Opisanie ich wszystkich w jednym miejscu jest niemożliwe choćby z tego powodu, iż taktyki się często zmieniają, ponadto programowanie gier to także proces twórczy - jak już się pozna odpowiednie środki, trzeba wymyślać dużo rzeczy samemu. Ten artykuł opisuje, jak poznawać środki do tego potrzebne.

Tekst jest podzielony w ten sposób, aby mogły z niego skorzystać osoby na różnych poziomach zaawansowania - wystarczy odnaleźć tytuł akapitu przystający do naszych umiejętności, i zacząć czytanie właśnie od niego :).

Pierwsza i podstawowa rzecz niezależnie od poziomu zaawansowania - wyszukiwanie informacji. Powinieneś umieć znajdować odpowiedzi na różne pytania i rozwiązywać problemy samemu, tylko w ostateczności zadawać pytania na forum. Pomocne są w tym celu wyszukiwarki internetowe takie jak google. Praktyczny przykład: jeśli nie wiesz, co oznacza jakieś słowo z tego artykułu, wpisz je na www.google.pl. Takim słowem może być np. skrót API, który pojawi się w kolejnym akapicie, a który nie zostanie wyjaśniony w tym artykule. Przypominam jednocześnie, co napisałem w pierwszym akapicie wstępu - napisanie gry to proces bardzo skomplikowany, dlatego informacje o poszczególnych problemach znajdują się w różnych artykułach na różnych stronach, a je wszystkie można znajdować właśnie przez google :). Jednocześnie chcę wyjaśnić, iż jeśli piszę o czymś, po czym nie podaję, na jakiej stronie można znaleźć o tym dodatkowe informacje, to znaczy, iż bez problemu można znaleźć to właśnie przez google. Ja chcę tylko podać, czego należy szukać.

Mam świetny pomysł na SUPER grę, ale NIC nie umiem :(. Od czego zacząć ? Czy ktoś mógłby mi pomóc w jej napisaniu?

Niestety muszę ostudzić twój zapał :(. Bardziej skomplikowane gry tworzy się latami i to w profesjonalnych zespołach po kilkanaście/kilkadziesiąt osób. Jeśli nic nie umiesz, to nauka programowania to kolejne kilka lat. Jednak spokojnie - większość osób, które się tym interesują zaczynała od marzenia o jakiejś super grze, a teraz potrafią bardzo dużo właśnie dzięki samozaparciu i chęci ciągłego pogłębiania wiedzy. Na początek powinieneś się nauczyć programowania, następnie API systemu operacyjnego, później API jakiegoś systemu graficznego. Oczywiście to wszystko jest w uproszczeniu - możesz uczyć się kilku rzeczy na raz: po poznaniu podstaw programowania zgłębiać tajniki systemu operacyjnego, po poznaniu podstaw API systemu zacząć uczyć się API systemu graficznego.

Jeśli chodzi o pomoc w napisaniu gry, to na początku jest mało prawdopodobne, abyś takową znalazł wśród obcych ludzi, np. na forum. Aby ktoś się dołączył do projektu, musisz pokazać, iż coś potrafisz, najlepiej prezentując swoje dotychczasowe projekty. Po prostu ludzie nie chcą ryzykować, iż sami poświęcą dużo czasu na coś, co nigdy nie zostanie ukończone, w dodatku nie z ich winy. Dlatego najlepiej zacząć od projektów pisanych w pojedynkę - dużo się nauczysz na swoich błędach, a ponadto będziesz miał co zaprezentować reszcie świata :). Swój świetny pomysł będziesz musiał niestety odłożyć na później i wrócić do niego, jak już będziesz potrafił dużo fajnych rzeczy. Możesz też zebrać zespół wśród znajomych - jeśli macie wspólny pomysł, będziecie mogli się nad nim ciągle zastanawiać i dopracowywać nawet, jeśli na początku nie będziecie pracowali właśnie nad nim. Ponadto w takim przypadku cały zespół ma motywację do dalszej nauki, no i jeśli jesteście przyjaciółmi, to macie do siebie zaufanie, czyli np. jesteście pewni, iż ktoś w środku prac się nie zniechęci i nie porzuci projektu( choć tak po prawdzie to niestety tego nigdy nie można być pewnym :().

Jednocześnie pragnę podkreślić, iż wszelkie posty typu "mam super pomysł na grę, ale ja nie umiem programować. Czy ktoś mógłby napisać grę na podstawie tego pomysłu??" (nazywane krótko postami typu "napiszcie mi grę") są dość ostro traktowane - jak to ktoś ładnie kiedyś powiedział, przeciętny programista ma w życiu więcej pomysłów na grę, niż jest w stanie zrealizować. Nie okłamujmy się - ludzie się dołączają do projektów, jeśli widzą w tym jakiś interes :), choćby taki, iż projekt będzie ukończony. Szansa na zrealizowanie pomysłu przez kogoś innego istnieje tylko w jednym przypadku(ale szansa nadal jest mała) - jeśli stworzysz obszernego, szczegółowego design doc'a, a pomysł jest faktycznie dobrze zapowiadający się. Design doc to po prostu opis, jakie są założenia gry, jaka jest fabuła, jakie misje, jakie postacie, jednostki, itd., itd. Design doc prostej gry to kilkadziesiąt stron, design doc gry RPG to kilkaset/kilka tysięcy stron.

Słyszałem o różnych programach do łatwego tworzenia gier. Czy powinienem z nich skorzystać?

Programy tego typu, nazywane click'ami, bo tworzy się w nich właśnie za pomocą pojedynczych kliknięć, nie są zbyt uniwersalne. Jest bardzo mało prawdopodobne, abyś mógł w takim programie napisać swoją wymarzoną grę. Dużo większą wadą jest jednak to, iż jeśli nawet opanujesz do perfekcji dany program, to nie masz możliwości napisania czegoś, czego jego twórca nie przewidział albo po prostu nie chciało mu się zaimplementować. Pełną swobodę daje ci tylko kompilator, znajomość jakiegoś języka programowania oraz odpowiednich API. Oprócz tego masa samozaparcia i chęci ciągłej nauki :). Z tych powodów programy tego typu nie będą opisywane w tym artykule.

Wiem już, iż zrobienie gry nie jest łatwe. Chcę się nauczyć programowania. Tylko jak ?

Programowanie to dwie podstawowe rzeczy - znajomość jakiegoś języka programowania oraz techniki i algorytmy, jakie można zastosować, aby programowanie było przyjemniejsze i aby nie wymyślać koła po raz drugi. Na początek oczywiście trzeba poznać podstawy języka.

Język programowania - jaki wybrać i skąd się uczyć?

Tutaj się zaczyna problem - jaki język wybrać, a odpowiedź wcale nie jest oczywista. W tej chwili jest 5 podstawowych języków programowania(powtarzam - podstawowych, to znaczy w tej chwili najczęściej wykorzystywanych, nie oznacza to, iż są jedyne, bo języków programowania jest tysiące, ani też nie oznacza, iż są najlepsze, bo pojęcie to jest dość subiektywne): C, C++, C#, Delphi, Java (kolejność alfabetyczna, aby żaden zagorzały zwolennik jakiegoś z tych języków nie miał wątpliwości :P). Java oraz C# służą to szybkiego pisania aplikacji internetowych oraz szybkiego pisania GUI. Nie są one jednak powszechnie stosowane w grach, gdyż są to tzw. języki interpretowane - podczas działania programu muszą być wykonane dodatkowe czynności, co nieco spowalnia aplikację. Nie jest to uciążliwe w zastosowaniach, dla jakich te języki zostały stworzone, ale w programowaniu gier takie spowolnienie może okazać się znaczące. Zostaje C, C++, Delphi. Na świecie najczęściej wykorzystywanymi językami w zastosowaniach komercyjnych są C oraz C++, ale niektórzy twierdzą, iż nauka Delphi jest łatwiejsza i od niego właśnie należy zacząć swą przygodę z programowaniem. Trudno jest mi to ocenić, bo ja się od razu zacząłem uczyć C++, Delphi nie znam(nie jestem pod tym względem jakimś wyjątkiem). Najlepiej by było, abyś się zaczął uczyć C++ (o czym za chwilę), a jeśli uznasz, iż jest to dla ciebie za trudne, to możesz się zastanowić nad nauką Delphi.

Wybór pomiędzy C a C++ jest nieco bardziej subtelny, gdyż C++ powstał na podstawie C, jednak techniki programowania w obu językach są zupełnie inne. Dla mnie całkowicie naturalnym jest programowanie obiektowe znane z C++, ale znajdzie się bardzo wiele osób, dla których naturalne jest programowanie strukturalne znane z C. Ponieważ jednak C to w dużej mierze podzbiór języka C++, jest też w tej chwili masa książek o C++, IMHO najlepszym wyborem będzie właśnie C++, a w razie problemów przerzucenie się na Delphi, o czym wspomniałem w poprzednim akapicie.

Jeśli już wybrałeś, czego się nauczysz( albo rzuciłeś monetą ;)), pozostaje kwestia, skąd można się tego nauczyć. Podstawy najlepiej poznawać z książek, później można pogłębiać wiedzę na podstawie artykułów z Internetu. Najczęściej polecane książki do nauki C++ to "Symfonia C++" oraz "Pasja C++", mnie jest trudno je ocenić, gdyż z żadnej z nich się nie uczyłem, a z tych, z których się uczyłem nie polecam :P. Dość specyficznym zjawiskiem jest też megatutoral Xion'a(w tej chwili dostępny pod adresem http://regedit.warsztat.gd/warsztat/tutorials.php), który dość dogłębnie opisuje język C++ oraz kilka innych zagadnień, w dodatku jest kompletnie za darmo :).

Kompilatory i środowiska programowania

Aby zamienić tekst zapisany w jakimś języku programowania na coś zrozumiałego dla komputera potrzebny jest tzw. kompilator. Dodatkowo, aby programowanie było przyjemniejsze, bardzo przydatne jest tzw. środowisko programowania. Istnieją różne wersje kompilatorów w zależności od wybranego języka programowania, platformy, systemu operacyjnego. Dla systemu Windows oraz języka C++ są między innymi MS Visual C++, Borland C++, MinGW(wersja GNU GCC C++ dla Windows'a), dla systemu Linux i języka C++ najpopularniejszy jest GNU GCC C++. Wszystkie te kompilatory można ściągnąć za darmo z internetu i wykorzystywać je legalnie do tworzenia komercyjnych programów.

Z kompilatorem często bywa powiązane konkretne środowisko programowania, np. MS Visual Studio wykorzystuje kompilator Visual C++, Borland C++ Builder oraz Borland XBuilder wykorzystują, co oczywiste, kompilator Borland'a. Należy zaznaczyć, że XBuilder jest środowiskiem zarówno pod Windows'a jak i Linux'a, może też wykorzystywać inne kompilatory – GNU GCC oraz kompilator Microsoft'u.

Wszystkie wymienione powyżej środowiska są płatne do zastosowań komercyjnych, do zastosowań niekomercyjnych można ściągną odpowiednie wersje środowisk borland'a ze strony internetowej tej firmy. W tej chwili istnieje też możliwość ściągnięcia z internetu(za darmo i legalnie) Visual Studio Express Edition, które można wykorzystywać zarówno do pisania niekomercyjnych jak i komercyjnych aplikacji. Obraz płytki można ściągnąć ze strony Microsoft'u.

Oprócz tego istnieje masa środowisk darmowych, przystosowanych przede wszystkim do kompilatora GNU. Przez długi czas najpopularniejszy pod Windows'a był Dev C++, w tej chwili obiecującym i dynamicznie rozwijającym się projektem jest środowisko programowania Code::Blocks.

Pod linuksa istnieje kilka darmowych środowisk, np. wspomniany już Code::Blocks, Anjuta, KDevelop.

Algorytmy

Jak już wspomniałem, oprócz języka musisz znać też podstawowe algorytmy. Jest o nich dość dużo książek, przykłady w nich są podawane w konkretnym języku programowania lub pseudokodzie. Nieznajomość danego języka nie powinna jednak stanowić większego problemu – wykorzystywane są tylko jego podstawowe własności, więc już po paru przykładach powinniśmy móc z powodzeniem odczytywać zapisany kod, większość języków programowania jest na tym podstawowym poziomie do siebie podobna. Często polecane pozycje to:

  • "Algorytmy w C++" - Robert Sedgewich ;
  • "Wprowadzenie do algorytmów " - Thomas H. Cormen (ta jest dość trudna) ;
  • "C++. Algorytmy i struktury danych" - Adam Drozdek (choć ta polecana jest główne przeze mnie ;) ) ;

Jak już będziesz umiał programować powinieneś sam przejrzeć kilka książek i zobaczyć, która ci najbardziej odpowiada. Książka może opisywać wszystkie algorytmy świata, ale jeśli autor pisze językiem dla ciebie niezrozumiałym, na nic ci się nie przyda :).

Wzorce projektowe i nie tylko

W programowaniu często trzeba rozwiązywać problemy związane z samą organizacją kodu, trzeba też znać popularne zastosowania składni oferowanej przez dany język. Tak jak w przypadku algorytmów, bez sensu jest wynajdywać koło po raz kolejny, dlatego powstało wiele książek traktujących o tych problemach.

Jedną z pozycji, które warto znać praktycznie niezależnie od języka, w którym się programuje, to bardzo znane "Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku", w Polsce wydane przez wydawnictwo WNT.

Oprócz tego należałoby umieć wykorzystać poznany język w nieco bardziej zaawansowany sposób, poznać jego specyfikę i najlepsze drogi do rozwiązania pewnych typowych problemów. W przypadku języka C++ warto poznać jego bibliotekę standardową odziedziczoną po C, bibliotekę STL, IOStreams oraz niestandardową, ale coraz popularniejszą bibliotekę boost. Ponadto dobrze jest zapoznać się z książkami traktujących o często pojawiających się problemach, z którymi mogą się spotkać programiści. Przykładami takich książek są:

  • Wyjątkowy język C++. 40 nowych łamigłówek, zadań programistycznych i rozwiązań, Herb Sutter, wyd. Helion
  • C++. 50 efektywnych sposobów na udoskonalenie Twoich programów, Scott Meyers, wyd. Helion
  • STL w praktyce. 50 sposobów efektywnego wykorzystania, Scott Meyers, wyd. Helion

Oczywiście to są tylko przykładowe pozycje, traktujące w dodatku konkretnie o C++. Jak będziesz lepiej znał język programowania, który wybrałeś, to powinieneś sam poszukać książek odpowiednich do swojego poziomu.

Jest wiele gotowych silników do gier. Czy powinienem z nich skorzystać? Czy są jakieś darmowe? Co muszę umieć, aby móc się nimi posługiwać?

Aby móc się posłużyć gotowym silnikiem, musisz przede wszystkim umieć programować. Mając gotowy engine prostą grę stworzyć jest bardzo łatwo, jednak coś bardziej skomplikowanego nadal wymaga dużo pacy, a przede wszystkim doświadczenia. Nie zapominaj też, iż jeśli nie znasz się np. na programowaniu grafiki, to samodzielne dodanie jakiejś właściwości do silnika graficznego stanie się niemożliwe. Z tych powodów powinieneś IMHO opanować chociaż podstawy wszystkich podsystemów, i dopiero wtedy zastanowić się nad wyborem jakiegoś gotowego silnika. Podczas nauki np. API graficznego może się jednak okazać, iż najbardziej cię pasjonuje właśnie pisanie silników, więc problem wyboru gotowego engin'u naturalnie zniknie.

Jeśli chodzi o sam wybór silnika, to na http://www.devmaster.net/engines/ jest opis i wykaz dużej ilości silników, również darmowych. Można poczytać o możliwościach, wysłuchać opinii innych, wybrać ten, który się podoba :).

Fajne to programowanie, ale jak wyświetlić coś na ekranie?

Jeśli chcesz wyświetlić na ekranie coś więcej, niż konsola systemowa, musisz znać API swojego systemu operacyjnego(albo bibliotekę obudowującą to API). W programowaniu gier oprócz API samego systemu należy też znać coś do szybkiego wyświetlania grafiki.

W przypadku grafiki 2D oraz systemu Windows można zastosować DirectDraw, jednak API to nie jest już rozwijane, dlatego też nie jest polecane. Jeśli zależy nam na przenośnej bibliotece, to można się zainteresować SDL lub Allegro, które mają moduły odpowiedzialne za grafikę 2D.

Do wyświetlania grafiki 3D służą Direct3D(w nowszych wersjach zwany DirectGraphics) stosowany w systemie Windows, oraz konkurujący z Direct3D OpenGL stosowany w wielu systemach, m.in. Windows oraz Linux. Należy zaznaczyć, iż biblioteki przeznaczone do wyświetlania grafiki 3D mogą być również stosowane do wyświetlania grafiki 2D, w dodatku na nowszych kartach graficznych może to się okazać wydajniejsze niż stosowanie DirectDraw.

Poznawanie API systemu operacyjnego

Nawet, jeśli chcesz do wyświetlania grafiki stosować OpenGL, Direct3D, czy DirectDraw, musisz w jakiś sposób połączyć te biblioteki ze swoim systemem operacyjnym. Jest to dość często proste i opisane w książkach o wspomnianych bibliotekach, jednak dobrze jest czasami lepiej znać swój system. W przypadku Windows'a najobszerniejszym i najaktualniejszym źródłem wiedzy jest MSDN library ( http://msdn.microsoft.com/library/ ) - spis funkcji systemu operacyjnego wraz z opisem ich działania. Do bardziej usystematyzowanej nauki powszechnie polecana jest książka "Programowanie Windows" Charles'a Petzold'a, wydawnictwa Microsoft Press.

Nie trzeba znać API systemu operacyjnego, można znać API jakiejś biblioteki, która wyręczy nas w pewnych czynnościach. Najpopularniejsze biblioteki "obudowujące" system(zarówno Windows jak i Linux) i napisane specjalnie na potrzeby gier to allegro, allegroGL, SDL. Oprócz tego istnieją też biblioteki ogólnego przeznaczenia, które w większym stopniu umożliwiają komunikację z systemem, są odpowiednio bardziej rozbudowane, jednocześnie jednak nie są ściśle nakierowane na tworzenie gier, co czasem może sprawiać problem. Biblioteką taką jest np. wxWidgets(przeznaczona zarówno dla Windows jak i Linux).

Chcę się uczyć API do grafiki 3D. Jaką bibliotekę wybrać i skąd się uczyć?

Nie wiem, jaką bibliotekę masz wybrać, a jeśli ktoś twierdzi, że wie, to kłamie ;). Sprawa jest oczywista, jeśli chcesz pisać aplikacje przenośne pomiędzy różnymi systemami albo działającą na systemie innym, niż Windows - musisz wybrać OpenGL. Wiele osób chce jednak pisać po prostu tylko dla systemów Microsoft'u, no i wtedy się zaczyna problem :). Często toczą się wojny na temat tego, która biblioteka jest lepsza, ale prowadzą one donikąd, bo obie biblioteki mają takie same możliwości. Wszystkie gry spod znaku ID( czyli quake'i, doom'y) powstały z wykorzystaniem OpenGL(nie licząc pierwszego doom'a i pierwszych wersji pierwszego quake'a, które miały własny system renderujący, ale wtedy nie było jeszcze akceleratorów 3D, więc należy je pominąć w tych rozważaniach). W Direct3D powstał np. Unreal, jak i wiele innych gier, jeśli chodzi o komercyjne produkcje to dużo więcej powstało właśnie w Direct3D niż w OpenGL. Za nauką Direct3D przemawia zgromadzenie wszystkich informacji na jego temat w jednym miejscu oraz IMHO lepsze książki dostępne na polskim rynku. Direct3D ma jednak pewną wadę - jeśli wyjdzie nowsza jego wersja(pojawia się średnio raz na rok), która umożliwia wykorzystanie wszystkich dostępnych technik z najnowszych kart graficznych, nie możemy z nich korzystać, dopóki nie wprowadzimy zmian w kodzie już napisanym, pomimo tego, iż nie korzysta on z tych nowych technik. W programowaniu amatorskim jest to dość znaczny problem, bo nie mamy ludzi od "czarnej roboty", którzy by mozolnie zmieniali już napisane rzeczy.

Wybór konkretnego API pozostawiam Tobie, mogę tylko wymienić miejsca, z których można się o nich uczyć:

Direct3D:

  • Pomoc zawarta w DirectX SDK, w której jest spis wszystkich funkcji, ich opis, przykłady aplikacji, tutoriale
  • Książka "DirectX. Rendering w czasie rzeczywistym", Kelly Dempski, wyd. Helion
  • Książka "Programowanie gier w Direct X", Mason McCuskey, wyd. Mikom

OpenGL:

  • Informacje zawarte na stronach "http://www.opengl.org/" oraz "http://www.sgi.com/products/software/opengl/";
  • Książka "OpenGL. Księga eksperta. Wydanie III"(ważne: wydanie nie wcześniejsze, niż III), Richard S. Wright Jr., Benjamin Lipchak, wyd. Helion
  • Książka "OpenGL. Programowanie gier", Dave Stale, wyd. Helion

Czy muszę znać jeszcze jakieś API oprócz API graficznego oraz podstaw API systemu operacyjnego?

To zależy od gry jaką piszesz, ale może ci być jeszcze potrzebna wiedza, jak odtwarzać muzykę/dźwięki, oraz jak napisać multiplayer w grze.

Do programowania sieci można zastosować DirectPlay w systemach Microsoft'u, ale jest to mocno nie zalecane, bo Microsoft stwierdził, iż w komponencie tym są błędy, ponadto nie zamierza go dalej rozwijać, więc błędy nie zostaną usunięte. Zalecaną metodą jest stosowanie socket'ów, bardzo dobry artykuł to "Beej's Guide to Network Programming" ( http://www.ecst.csuchico.edu/~beej/guide/net/ ), który można także znaleźć w sieci po polsku.

Do odtwarzania dźwięku jest wiele bibliotek. Pod Windows'em może to być Direct Sound lub Direct Music, jeśli chodzi o wieloplatformowe biblioteki, to jest ich dość dużo - OpenAL, Bass, FMOD, i wiele innych. Wszystkie one są darmowe, z wyjątkiem FMOD'a, za którą trzeba płacić w zastosowaniach komercyjnych, do zastosowań amatorskich jest darmowa. Jest to jednocześnie najpopularniejsza z bibliotek.

A jeśli już umiem programować i znam wszystkie API które są mi potrzebne, czy coś jeszcze muszę potrafić?

Pocieszę cię - przed tobą już tylko 3/4 drogi :). Sama znajomość danego API czy języka to bardzo mało, podstawą jest umiejętnie wykorzystać tą wiedzę. Nie ma książki w stylu "jak napisać wypasioną grę od A do Z", gdzie wszystko byłoby opisane krok po kroku. Jak już wspomniałem na początku, programowanie gier to zlepek wielu dziedzin, i właśnie w tym miejscu doświadczenie w samodzielnym zdobywanie wiedzy będzie bezcenne. Trzeba czytać artykuły o efektach graficznych, organizacji kodu, sposobach zaimplementowania rdzenia silnika. Ponadto przeglądać kody źródłowe darmowych silników, aby zobaczyć konstrukcję złożonych i działających aplikacji. Nie należy też zapominać o dziedzinach niezwiązanych bezpośrednio z tworzeniem gier: fizyka, matematyka - prawie na pewno będziesz musiał się podszkolić w pewnych działach tych nauk.

Nie jest jednaj tak źle - istnieje seria książek, w których są zebrane artykuły o różnych aspektach programowania gier, w dodatku wszystko przetłumaczone na język polski - seria ta nosi tytuł "perełki programowania gier", w Polsce jest wydane 3 tomy, jednak na zachodzie jest ich już pięć, więc i u nas mogą się pojawić kolejne. Nie zapominaj jednak, iż pomimo ich istnienia, nadal nie obejdzie się bez czytania artykułów w sieci, ksiązki te są bardzo dobre jako wstęp do wielu zagadnień, praktycznie nigdy nie omówiono w nich czegoś dogłębnie.

Nigdy nie należy zapominać o własnej inwencji, o własnych możliwościach. Jest mało prawdopodobne, abyś znalazł kompletny opis rzeczy, którą sobie akurat wymarzyłeś i chcesz mieć we własnej grze. Opisy technik znajdujące się w internecie są bardzo techniczne – pokazują, jak osiągnąć efekt przy pewnych danych wejściowych, nic ponadto. Nie opisują najczęściej, jak połączyć go z innymi technikami, a już na pewno nie opiszą, w jaki sposób najlepiej zaimplementować to w naszym konkretnym silniku, który akurat sobie piszemy. Trzeba się zdać na własne doświadczenie, no i uczyć się na własnych błędach – właśnie dlatego praktycznie nigdy nie zdarza się, aby ktoś doprowadził do końca projekt swojego pierwszego w życiu silnika. Wniosek jest jeden: "Bądź wytrwały, będąc wytrwałym, wzrastaj w siłę" :).

pozdrawiam, naleth.

Tekst dodał:
Adam Sawicki
16.04.2006 09:37

Ostatnia edycja:
Adam Sawicki
16.04.2006 09:37

Kategorie:

Aby edytować tekst, musisz się zalogować.

# Edytuj Porównaj Czas Autor Rozmiar
#1 edytuj 16.04.2006 09:37 Adam Sawicki 24.24 KB
Zwykły
Do sprawdzenia
Do akceptacji
  • ~Gosc 03 czerwca 2007 09:02
    Tak Jest i kto tu pisał ze nie da rady zrobić gry.bylem już na tej stronie zaczełem robić od 12.02.2007r. I skończylem dzisiaj wbijcie na moja gre. (: www.dragonfable.com :)
  • ~Inny Gość 07 czerwca 2007 02:21
    Ta DragonFable... skoro zaczełeś w 2007 to jakim cudem ta gra jest w sieci od około 2005 roku??? Ja sam zaczełem ostatnio pisać coś na miarę marnej gry i będę się cieszył jak skończę ją przez 3 miechy...nadmieniam że to ma być tylko MARNA gierka dzięki której chę podszkolić umiejętności... A co do Dragon Fable to wymiękłem jak zobaczyłem takie lamerstwo...
  • ~Xan 14 października 2007 20:09
    cieakwie, ciekawie, gdybym miał coś o tym napisać, to właśnie napisałbym podobnie do Ciebie... najważniejszy ten początek o tym, że niektórzy od tak chcą miec zaraz świetną grę, to żenujące...
  • ~Doom 29 października 2007 15:55
    Fajny opis ale jednak to za trudne jest jak dla mnie nawet nie zabiorę się do roboty bo to jakaś masakra jest jak dla mnie ale opis fajny.Gry jednak robić będę robić kiedy indziej jak będę miał czas.
  • ~niu 09 listopada 2007 09:42
    Hmm. Ja mam troche inne podejscie. Nie chce napisac gierki, ale chce wiedziec jak takie gierki mozna napisac.

    Poza tym. Gdybym juz chcial jakas gierke pisac, to przylaczylbym sie do jakiejs ekipy, ktora potrafi wiecej niz ja. Ano dlatego, zeby sie troche uprofesjonalnic w pisaniu kodu.. hmm nie umiem tego wytlumaczyc :)
  • ~Piter 18 listopada 2007 22:10
    No fajowy txt ja może pozostane przy GM + silniku irlicht GML nie powinien byc trudny jest dobry dla początkującego a i efekty z śilnikiem można dobre osiągnąć. a co do programowania to polecam delphi sam czytam kompedium ale do gier to za daleko...
  • ~slammer 27 listopada 2007 19:10
    Delphi nie jest językiem programowania... jeśli już to Object Pascal :>
  • ~Arik 30 listopada 2007 20:52
    Heh to ja juz poknalem prawie 1/4 czyli jezyk c++, oczywiscie w znaczeniu toretycznym koncze wlasnie kurs Xiona (wyjebichO!!!!!) polecam go kazdemu nawet noobom, potem zostaje jeszcze WinApi D3D (DD nie chce bo 2d chyba nie bede pisac) albo OpenGL (mam dylemat) i sie przylacze do jakies grupy jako pomocnik i to bedzie jako moja praktyka :) oczywiscie sam bede cos pisal i wykorzystywal wszytkie czesci jezyka zeby nie zapomniec to bardzo wazne aby znac wszytko, mozna pominac przestzrale i nie uzyteczne rzeczy z C. dobra ale sie rozgadalem, opis super C++ RLZ!!!!
  • ~Op 04 grudnia 2007 14:42
    Polecam "Synfonie c++ standard" nauczy nawet tych co nie wiedzą co to programowanie ...a i nie zapominajcie my jesteśmy Polakami i to my narazie łojimy nagrody w programowaniu nie Amerykanie czy Japoncy
  • ~hackit 10 grudnia 2007 15:08
    Wszystko fajnie, ale nie rozumiem, czemu autor artykułu tak szybko odrzucił nowoczesne języki programowania jak Java i C#. Można w tym robić bardzo dobre gry, wydajność tych środowisk jest w tej chwili taka sama jak C++, a programuje się o niebo wygodniej.
  • ~lampart 16 grudnia 2007 23:58
    hackit c# i java są wolne ! nie napiszesz w nich np. kolesia w jakiejś przestrzeni tzn napiszesz ale gdy dodasz zmieniające się bitmapy z częstotliwością kilkuset na sekundę to java nie da rady. c# to język do aplikacji sieciowych zwykłych okienkowych itd , zresztą przekonałbyś się sam , napisz coś w javie i c++ (to samo) i sprawdź czas, artykuł spoko , ale droga zależy jak dla kogo ma taką długość, jeśli ktoś się ostro wkręci to i prostą gierkę 3d po roku napisze oczywiście jeśli ma talent. Pozdro
  • ~Dziku 18 grudnia 2007 17:26
    spoko ja od dziś zaczynam zabawę z grafiką i językami.
  • ~no ja xD 07 stycznia 2008 01:22
    Ej a jak tworzyć gry w systemie 3D bo za dobrae to opisane nie jest xD ja jusz zrobiłem 7 ger sam a 26 z ekipom i pisze to do wszystkich to bardzo trudna robota!!np chcieli byscie zrobic prostom gre w 2D (strzelanke)3 poziomy 3 bronie -wiecie ile sie trzeba namęczyć ja jusz zrobiłem pare gier typu mario i diablo w 2D oraz ruzne zręcznosciówki kture som teras nawet na ruznych stronkach ale szło mi cienko więc mówie ostatni raz (TO JEST BARDZO TRUDNE!!!!!!!!!!!!!!!!!)Xd
  • ~Ja :D 01 lutego 2008 17:49
    Hmm...Zależy jak dobrą gre chcesz zrobić... Jeśli nie musi ona być super fajna to powinien wystarczyć program "Game Marker 7.0" Ja w nim zrobiłem fajną gierke =D
  • ~ktos_o_nicku_na_l 03 marca 2008 02:09
    do 3d masz opengl lub directx ale używaj gotowych silników, możesz sciągnąć sobie cały source do VS np. quake 3 arena i spróbować go zmodyfikować to może być dobra zabawa nawet świetna
  • ~pietruszka 07 maja 2008 11:09
    jak zrobic znaczy jak sciongnoc taki program kto mi poda strone z tym programem do roibienia
  • Krzysztof "Zufub" B. (@Zufub) 12 maja 2008 21:50
    rotfl, np. ściągnij DevC++ czy ze strony microsoftu za free wersję 2005... albo ściągnij se RPG-maker'a.... lmao... (najlepsze, że ludzie używający tych maker'ów twierdzą, że uzyskają równie wielkie możliwości, jak programując zwyczajnie xD)
  • ~La demono 25 maja 2008 19:06
    Eee... ja używałem kiedyś Rpg Makera z rok temu obecnie przerzuciłem się na C++,zresztą Rpg Maker się często psuje.
  • ~pomoze ktos 02 czerwca 2008 07:22
    czy moglby mi ktos podac jakies stronki do programowania multiplayera przy uzyciu socketow albo dobre ksiazki co jest o tym w nich zawarte ?
  • ~karolina123 09 czerwca 2008 16:56
    chcę żeby tytuł grzmiał andrzej i natalka
  • ~nowsyx 11 czerwca 2008 21:27
    widac ze jednak wiekszosc co tu wypisuje nie ma wogole pojecia o programowaniu. Wiem ze to temat dla noobow ale nawet noob powinien zdawac sobie sprawe ze najpierw dziesiatki programow a dopiero pozniej gry. Ponadto w Javie napisany byl silnik logiczny chrome wiec jezyk wcale nie tak malo wydajny. W delphi tez dobrze sie pisze (tak w delphi nie Object pascal- okreslenie "pisac w delphi" jest uzywane od paru lat jako prawidlowe)
  • ~patrykzaro 13 czerwca 2008 12:20
    a ja to bede sie staral hoc tu duzo zniechencen bylo to i tak sprobuje bo wiem ze stworzenie czegos nie jest proste no bo przeciesz zeby nikt sie nie staral i niechalo mu by sie robi gier to nikt by nie mial tej przyjemnosci grania :D PS: Polecam C++ tez z niego zaczynam sie uczyc
  • ~granat 14 czerwca 2008 02:21
    Poszukującym darmowej wiedzy polecam też bardzo cenną stronkę: http://wazniak.mimuw.edu.pl/

    Są to materiały do wykładów i ćwiczeń z najlepszych informatycznych uczelni. Po opanowaniu tego materiału Wasz programistyczny skill na pewno wzrośnie kilkadziesiąt razy. Oczywiście najbardziej polecam studiowanie na tych uczelniach i kontakt z profesorami. Jednak dla chcącego nic trudnego i z tym materiałem i bez indeksu w kieszeni można nauczyć się więcej niż niejeden student. Najważniejszy jest zapał i pasja.

    Pozdrawiam i życzę dużo wytrwałości
  • ~jerko92@o2.pl 03 sierpnia 2008 18:41
    zrobiłem pare syfiastych gierek na The Games Factory, przeczytałem mnóstwo tematów dot. tworzenia gier, ale ten poprostu wymiata!!! xD zachecił mnie do nauki i juz ruszam poznawac c++ PS. tGF^^ jak chce sie 2D jest git ale meczy tworzenie grafiki i pojedynczych klatek animacji na paincie:( znacie może jakieś stronki z obiektami do pobrania?? jeśli tak byłbym wdzięczny za zamieszczenie linków tutaj lub wysłanie na maila^^ z góry THX xD
  • ~jerko92@o2.pl 03 sierpnia 2008 18:43
    wytrwałość to podstawa ;-) pozdrawiam all
  • ~Lutek 08 sierpnia 2008 11:34
    niewiem jak miec szybko lv 30 z lv 15
  • ~niu 04 września 2008 22:41
    Ej... A nie lepiej w te gry grac i dac sobie spokoj z ich robieniem? :)) Ide popykac w cos :) A wam zycze powodzenia. Moze kiedys zagram w Wasza gierke :))
  • n1troo (@n1troo) 07 września 2008 20:24
    lepiej paść w boju ! niż uciec w panice !!
  • ~max007 25 października 2008 20:22
    taki artykuł naprawdę dodaje chęci i motywuje do działania
  • ~Daniel 14 listopada 2008 11:02
    No tak programowanie wymaga dużo wysiłku,ale mam pytanko,co z programami typu 3ds Max czy Maya,tworzy się w nich chyba obiekty do gier,czy osoba która potrafi w nich tworzyć wypasione rzeczy może się na coś przydać w zespole tworzącym grę?albo ktoś z dużymi zdolnościami plastycznymi?(tak tylko pytam)
  • ~r54tgddhhbdscvb 17 stycznia 2009 19:01
    kasia mądry super dziękiza potpowiedź
  • ~kasia mądry 17 stycznia 2009 19:02
    super
  • ~zapomniałem nica 19 stycznia 2009 15:10
    no i po roku dopiero zaczołem czytać tą stronę hehe oczywiście jak dla mnie to raczej zwiększyło mój zapał... tyle żo portfel się skurczył
  • ~azpomniałem nica 19 stycznia 2009 15:11
    nio się poddał
  • ~jakie z was nooby 28 stycznia 2009 13:00
    ... Jak tak was czytam, to większość z was to kompletni idioci, albo dzieci, które myślą, że są fajnę. Ooo a ja znam html i napisałem już w nim 300 gier! ... idioci...
  • ~szeryf 02 lutego 2009 14:04
    d u p a
  • ~ziom 15 maja 2009 22:36
    "Ej a jak tworzyć gry w systemie 3D bo za dobrae to opisane nie jest xD ja jusz zrobiłem 7 ger sam a 26 z ekipom i pisze to do wszystkich to bardzo trudna robota!!np chcieli byscie zrobic prostom gre w 2D (strzelanke)3 poziomy 3 bronie -wiecie ile sie trzeba namęczyć ja jusz zrobiłem pare gier typu mario i diablo w 2D oraz ruzne zręcznosciówki kture som teras nawet na ruznych stronkach ale szło mi cienko więc mówie ostatni raz (TO JEST BARDZO TRUDNE!!!!!!!!!!!!!!!!!)Xd " kwa noobie naucz sie pisac po polsku!!!!! bo tego sie nie da czytac !!!!!
  • Radosław Mariowski (@Xandev) 24 sierpnia 2009 20:22
    A ja znam taką książkę: "Jak napisać wypasioną grę od A do Z" :)
  • Napisz komentarz:
    Aby dodać swój komentarz, musisz się zalogować.
Licencja Creative Commons

Warsztat używa plików cookies. | Copyright © 2006-2014 Warsztat · Kontakt · Regulamin i polityka prywatności
build #ff080b4740 (Tue Mar 25 11:39:28 CET 2014)