Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Silnik gry itp etc

Ostatnio zmodyfikowano 2013-03-01 18:38
Autor Wiadomość
zimenk
Temat założony przez niniejszego użytkownika
Silnik gry itp etc
» 2013-02-27 21:38:25
Witam

W Przyszłości chciałbym programować / robić / tworzyć | gry ( dodam że mam 15 lat więc jeszcze mam nieco czasu :D )
( no potrzebna wiedza c++ , direct3D lub openGl ( + nauka shaderów ) + jakiś program graficzny ( blender , 3dsMax )
Przechodząc do konkretów mam dużo pytań i dużą pustkę na ów tema a mianowicie zadam nieco kilka pytań

1. Czy mógłby ktoś opisać co to jest ten silnik gry ? ponieważ nie ma tego jakoś wytłumaczonego a ja rozumiem to tak że np w tym silniku są wszystkie różne modele graficzne np ( przyk. crysis ) ma nano-wizje np animacja strzelania , zmiany broni itp ? tak  za cholerę nie mogę tego zrozumieć ? ( silnik to cała gra ? no nwm )

2.Co trzeba umieć żeby móc umieć napisać swój silnik ?( no że np c++ bardzo dobrze , tą bibliotekę graficzną na tym poziomie , to z matematyki / fizyki  itp. etc. )

3.Jakieś porady i wszystko co każdy wie na temat tworzenia gier proszę aby mi to wszystko wytłumaczył.
No np. jeżeli chodzi o naukę direct 3D to po polsku może 3 strony z czego 6 tutów ? ( Wiem że angielski jest wymagany , dla tego teraz będę się go uczył ( kurs :D ) )

Proszę o pomoc i porady.
P-77254
pekfos
» 2013-02-27 21:49:05
1. rada: kurs. Skoro nie rozumiesz organizacji kodu, to zgaduję, że nie masz pojęcia o programowaniu.
» KursyKurs C++ kurs

2. rada: google..
Bez tak elementarnej umiejętności, jak wyszukiwanie informacji, możesz zapomnieć o robieniu czegokolwiek.
http://pl.wikipedia.org/wiki/Silnik_gry

Jakieś porady i wszystko co każdy wie na temat tworzenia gier proszę aby mi to wszystko wytłumaczył.
Twoja "pustka" tyle nie pomieści.
P-77256
Chlorek
» 2013-02-27 21:57:17
Pisanie gier to bardzo dużo pracy, sam uczę się pisania pod tym kątem od 2 lat (a samego C++ już 5 lat) i po kilku miesiącach (7 miesiącach) nie widać dużych postępów mimo masakrycznie dużej ilości kodu.
Co do poytań:

1. Silnik gry to jest właściwie gra, jednak można by to nazwać grą bez plików, jest to program który może zostać wykorzystany w wielu różnych grach z drobnymi zmianami w kodzie, a używając innych plików (modeli, tekstur, skryptów). Czyli wszystkie rzeczy typu poruszanie się, kolizje, obsługa dźwięku, grafiki, wszystko to co ma gra. Nie wiem jak to prościej wytłumaczyć. W każdym razie pisząc silnik pisze się grę ;>

2. Jakiś język jak np. C++ to podstawa. Ponad to C++ jest bardzo dobry to pisania tego typu rzeczy (gier). Dzięki wielkiemu wyborowi bibliotek i temu, że jest to w dużej części programowanie obiektowe można napisać coś na prawdę ciekawego. A raczej powiedziałbym wszystko co tylko się chce (i potrafi ;) ). Przy pisaniu własnego silnika gry "od zera" z pewnością potrzebne są znajomość matematyki (może nie takiej jakiej się uczysz w szkole, ale obliczenia to podstawa), a także i fizyki jeśli twoja gra ma mieć jakiś rozbudowany system kolizji i fizyki. Generalnie wszystko się przydaje z tego co wymieniłem, pisząc grę czy też jakikolwiek inny program.

3. Bez angielskiego nie zajedziesz daleko. Niemal wszystkie problemy jakie możesz spotkać podczas programowania oraz dokumentacje dużych bibliotek są w języku angielskim. Czasem można znaleźć tutorial po polsku ale z pewnością nie będzie to wyczerpujący artykuł uwzględniający cały temat. Dlatego angielski to podstawa.
Jeśli chodzi o to jakie rady ci dać, po pierwsze to na pewno nie pisanie od początku gier i uczenia się ich pisania (nawet platformówek 2D). Nawet prosta gra 2D nie jest w zasadzie taka prosta i trzeba mieć dobry zasób wiedzy na temat C++, by dać sobie radę z takim projektem. Na początek po prostu trzeba uczyć się programowania w C++, gdy poczujesz, że potrafisz już pisać wszystko to co chcesz (w moim przypadku trwało to jakieś 3 lata intensywnej nauki, ale z przerwami przez pierwsze 2 lata ;p), wtedy możesz zabrać się za pisanie jakiś nieco bardziej złożonych rzeczy jakimi są gry, gdyż napisanie silnika gry wymaga całej wiedzy jaką masz w głowie na temat języka, a i to może być mało.
Tak od siebie mogę jeszcze powiedzieć, że nie ma sensu pisania całego silnika od zera, gdyż jest to co najmniej ciężkie (obsługa poruszających się modeli to jest to na czym poległem pisząc swój pierwszy silnik). Dlatego dobrze jest skorzystać z może nie tyle co gotowego silnika, co z nazwijmy to biblioteki pomocnej przy pisaniu gier, dla przykładu mogę podać Irrlicht.
P-77259
SeaMonster131
» 2013-02-27 21:58:26
1. Silnik gry odpowiada za wyświetlanie grafiki, odtwarzanie dźwięku, fizykę itd.. Zmiana broni, animacja strzelania, to już jest gra.

2. Bardzo dużo. Jeszcze sam silnik graficzny da się ogarnąć w parę miesięcy (jeżeli ma być dobry, czas licz w latach), ale jeżeli chcesz napisać sam cały silnik... Sam sobie odpowiedź.
P-77261
zimenk
Temat założony przez niniejszego użytkownika
» 2013-02-27 21:58:31
Uczę się z Symfoni C++ , a ów link co podałeś nie raz go widziałem ja chciałbym żeby ktoś prościej go wytłumaczył.
Więc proszę ze mnie nie robić jakiegoś "kolejnego dzieciaka który chciałby sam w 1 miesiąc stworzyć drugiego crysis'a 3" Ja wyraźnie napisałem że nwm czy tak to rozumieć ( no silnik gry ) a tu już spina o to że nie umiem szukać...

"Twoja "pustka" tyle nie pomieści."

-No może trochę to przesadnie przekazałem ale myślałem że będziecie wiedzieć o co kaman :)

Edit#################

Resumując co muszę umieć ?
- C++
- Direct3D / OpenGl
- Matematyka ( tylko co dokładnie z tej matematyki ? )
- Fizyka ( to co @up , nawet rozumiem tą fizykę i nie jest aż taka zła aczkolwiek chciałbym wiedzieć co dokładnie )
- Blender / 3DsMax
- J. Angielski
- i co jeszcze musiałbym umieć ? no np o tych shaderach ( żeby ich się nauczyć pisać do poprawienia jakości gry ) i wszystko czego nie wymieniłem a co będzie mi niezbędne ( szczegóły etc )
P-77262
RazzorFlame
» 2013-02-27 22:25:01
Zimenk, jak zwykle wielkie ambicje :) Co oczywiście nie jest złem, ale muszę cię zniechęcić. Życie jest okrutne a w programowaniu żeby coś osiągnąć (w tych czasach) trzeba kilku/kilkunastu lat wysiłku. Mówiąc (pisząc) osiągnąć chodzi o to, że gry i aplikacje, w ogóle cała technologia w dzisiejszych czasach stoi na poziomie maksymalnym. Dla przykładu 3 lata temu kupowałem kompa (na tamte czasy dość dobry: 1GB ram, ~1.7GHZ procek itd) Teraz jak widze na powiedzmy allegro są komputery ~50x lepsze, i nie przesadzam a o graniu w lepsze gry typu Gothic 3 lub GTA 4 moge zapomnieć ;(. No a tak o to co pytałeś:
-Jeśli chcesz podstawową grę:
Gre da się stworzyć nawet na poziomie podstawowym w danym języku. Jeśli programowałeś albo jesteś troche wtajemniczony to wystarczy umieć pętle, tworzenie zmiennych i funkcje. Do tego troszeczke czasu na nauczenie wybranej biblioteki (co naprawde zazwyczaj nie jest trudne). Całość wymieniona wyżej zajmie Ci około tygodnia. Tylko powiem Ci tak: Dajmy na to że umiesz tyle ile napisałem powyżej. Kod gry Ping-Pong zajmie ci gdzieś 1000-5000 linii kodu. Kiedy umiesz pisać na poziomie bardzo wysokim zajmie ci to najwyżej 500 linijek. To jest właśnie to. Tu nie widać bardzo dużej różnicy (może sie wydaje ale to mało) ale tu raczej łatwiej by było liczyć w procentach bo nie chodzi nam często o Ping-Ponga. Dajmy na to że gierka MMO ma 100000 linii kodu. Jest bardzo umiejętnie pisana przez bardzo wykwalifikowanych programistów. Teraz zabiera się za to początkujący programista (no niech będzie da rade). Jego kod zajmie kilkanaście razy więcej linii. Powiedzmy że początkujący pisać będzie tak:
C/C++
BITMAPA postac_obrazek;
int postac_x, postac_y, postac_w, postac_h;
int postac_maxhp, postac_maxmp, postac_hp, postac_mp;
Bardziej wykwalifikowany programista posłuży się obiektowością i zrobi to tak:
C/C++
CPlayer postac;
//aby dostac sie do np. pozycji x lub y teraz mozna to zrobic np tak:
//postac.x lub postac.h
Jeśli nie programowałeś to tego nie zrozumiesz, ale zapewniam Cię że dużo to daje.
Teraz znowu wróćmy do tematu. Aby stworzyć coś typu mario wg. mnie wystarczy tak:
-Znajomość w języku programowania duża/bardzo duża (np. C++ do OOP (Obiect Oriented programming))
-Znajomość narzędzia wspomagającego pisanie (np. biblioteka graficzna) na poziomie dużym/bardzo dużym
-Znajomość matematyki dobra (ew. trygonometria)
-Brak "słomianego zapału"
-Duże chęci
-(w przypadku C++) znajomość biblioteki standardowej "STL" w stopniu średnim/dobrym
Jeśli chcesz zaawansowaną grę (3D lub lepsze gry 2D)
-Znajomość języka programowania bardzo duża/doskonała (np. większa część C++)
-Znajomość narzędzia wspomagającego (np. biblioteka, silniki) na poziomie bardzo dużym/doskonałym (raczej doskonały)
-Znajomość matematyki bardzo dobra (tutaj MUSI być trygonometria i inne rzeczy)
-Baaardzo duże chęci
-(w przypadku C++) znajomość biblioteki standardowej "STL" w stopniu dobrym/bardzo dobrym
I NAJWAŻNIEJSZE bardzo duży "staż" w programowaniu. Trzeba napisac ogółem bardzo wiele kodu żeby w praktyce sobie dać radę!
TO WSZYSTKO JEST OFC. WG. MNIE!
Napisałem to wszystko (wymagania etc.) głównie dla tych co chcą z łatwością pisać (chociaż dla zaawansowanych gier to i tak niezbyt dużo da).

WoW to chyba mój najdłuższy post.

Podsumowując (i dodając kilka rzeczy) zalecałbym zrobić tak:
- Czytać kursy/książki o np. C++ (lub innym języku) aż osiągnie się bardzo wysoki poziom
- Krok następny. Zacząć pisać gry 2D i różne algorytmy (chodzi aby poćwiczyć logiczne myślenie (co naprawde później uświadamiamy sobie że czasami jest trudne) i matematyke w C++)
- Krok następny. Zacząć pisać, pisać i jeszcze raz pisać trudniejsze zadania.
- Krok następny. Zacząć pisać gry 3D cały czas ucząc się C++.

Te wszystkie porady UP. dotyczyły ogółem gier a nie silników ale silnik często używany jest nie jako silnik graficzny lub fizyczny tylko jako kod odpowiadający za mechanizmy danej gry, który tylko do niej jest potrzebny.
P-77270
Chlorek
» 2013-02-27 22:26:46
Nie chcę ci gasić zapału, ale to jest nie do przebrnięcia dla Ciebie jeszcze przez długi czas. Poucz się C++, a dokladniej to się naucz i wtedy jak będziesz już go dobrze umiał to zastanowisz się czy chce Ci się w to wszystko wchodzić. Nie masz teraz jakiegoś odczucia, czym tak na prawdę jest całe to pisanie gry, nawet podejrzewam, że nie wiesz na ile rozbudowany może być zwykły program, dlatego po prostu sprawdź najpierw z czym to się je zanim przejdziesz to takich rzeczy.
P-77272
RazzorFlame
» 2013-02-27 22:36:08
Napisałem następnego posta żeby oddzielić to co pisałem wcześniej od tego bo to troche coś innego. Też mnie ciekawiło np. czym różni się silnik od biblioteki. @SeaMonster131 zależy o jakim silniku rozmawiamy. Czy to jest silnik graficzny lub fizyczny to nie jest ściśle związane z grą. Znajduje się tam różne wykorzystanie funkcji z biblioteki graficznej i ułatwienia. Mogą się znajdować TextureManager lub/i SoundManager / CollisionManager / FileManager / Script manager (to już raczej w silniku gry)
Ale silnik gry jako taki to nie to co napisałem wyżej. To są funkcje/klasy i inne elementy języka ściśle związane z jedną jedyną grą. Weźmy taki silnik gry Gothic. Wykorzystywany był na początku w wersji I i II ale w trójce już nie albo zaszły dużo większe zmiany. Jeśli popatrzysz na silnik graficzny a silnik gry to widać np. taką różnicę:
Silnik Graficzny:
C/C++
template < class mObiectType >
class MyObiectManager
{
    Obrazek tekstura;
public:
    void WczytajTeksture( std::string );
    //reszta funkcji
   
};
Patrząc na silnik gry można zauważyć:
C/C++
class gameObiectClass
    : public MyObiectManager < typObiektu >
{
    ListaAnimacji mAnimList;
    Effect mObiectEffect;
public:
    void WyswietlNaOknie( MojeOkno & );
    void OdtworzAnimacje( int );
    void ZatrzymajAnimacje();
    void DodajEfektGraficzny( EffectType & );
    void SprawdzWejscie( InputReceiver & );
};
Tu są bardziej związane rzeczy z grą niż z grafiką/fizyką i innymi dodatkami.
P-77275
« 1 » 2 3 4
  Strona 1 z 4 Następna strona