Kilka teoretycznych pytan...

0

A wiec :

  1. Co to jest wlasciwie engine, chodzi mi tu o jakas profesionalna definicje :P. Bo jak dla mnie z tego co rozumiem jest to jakby biblioteka funkcji ktore sluza do wyswietlania grafiki.
  2. Co tak wlasciwie zapewniaja biblioteki OpenGL i DirectX bo tu jakos dziwnie zlewa mi sie definicja z enginem czyli cos nie do konca rozumiem. Bo wiem ze Biblioteki te zawietraja funkcje ktore umozliwiaja wyswietlania grafiki tyle ze ja np. chcialbym napisac wlasne przy uzyciu asemblera, czy warto ?
  3. Czy przy programowaniu gier wystarczy posiadac duza wiedze na temat c++ czy tez moze przydaje sie asembler nie mowie tu o funkcjach odpowiedzialnych za wyswietlanie obrazu ale o wszystkich pozostalych.

Z gory dzieki za odpowiedzi...

0

Tak sie składa że akurat ja jestem na etapie pisania Engina :)
Engine jest to szkielet gry odpowiedzaialny za:
tu kilka przykładów:

  • Wyświetlanie i animacja postaci wyspępujących w grze
  • Sztuczną inteligencje
  • Komunikacje z użytkownikiem
  • Odtwarzanie muzyki i dzwienków
  • a także wiele innch pierdół :-)

Jeśli chodzi o assembler w programowaniu gier mało się przydaje jedynie gdzieś w ok 0,1%. Własne funkcje do rysowania ?? Zapomnij o tym goscie tworzążący OpenGL i DirectX to najlepsi specjalisci w tej dziedzinie oni robią to tak aby działało to jak najszybciej niezależnie od kary graficznej jaką dysponujesz. Jak byś ty chciał napisać własną bibliotekę graficzną to już po 2dniach szlag by cie trafił. I mogło by się okazać że dziła tylko na twoim kompie :-). Ja osobiscie polecam biblioteke OpenGL bo jest ona prosta do zrozumienia i w przeciwienstwie do DirectX przenośna na inne systemy. No to koniec kazania :-)

0

Aha no to jeden problem z glowy, znasz moze jakies dobre strony lub kursy OpenGL-a i DeriectX, z ktorych ty moze sie uczyles ? Oczywiscie PL. Dzieki...

0

Z PL bendzie roblem. Najpierw może angielskie:
Najlepsza strona o OpenGL
nehe.gamedev.net
Różne rzeczy zwionzane z programowaniem gier
www.gamedev.net
Super kursy OpenGL, DirectX
www.gametutorials.com

Polskie:
serwis oswiencony programowaniu gier
warsztat.pac.pl
kursy do OpenGL, DirectX i WinApi
directx.w.interia.pl/
Na tej był kiedyś (teraz chba też jest) plik kursgl <- dobry polski kurs OpenGL'a

Polecam także książke wydawnictwa helion pt. "OpenGL programowanie gier"

A zanim przejdziesz do OpenGL albo DirectX naucz się przynajmniej troszke WinAPI.

Ale chce ci powiedziec że jak zobaczysz składnie DirectX to się przestraszysz :) ponieważ jest oparta na technologi COM. Więc naprawde polecam OpenGL ( Quake2 i Quake3 powstały na OpenGL'u )
a także DOOM III ma na nim śmigać :)

0

Ale chce ci powiedziec że jak zobaczysz składnie DirectX to się przestraszysz :) ponieważ jest oparta na technologi COM.

To sie wydaje straszne tylko na poczatku. Wystarczy troche samozaparcia i da sie to zrozumiec bez problemu. Do tego DX ma sporo wbudowanych przydatnych funkcji, ktore w OGL trzeba programowac samemu. Ot chociazby takie proste operacje jak CrossProduct czy DotProduct. Chyba, ze sie myle co do OGL to mnie wyprostujcie ;)

0

OpenGL to biblioteka grficzna a nie kombajn do robienia gier :) Ale przyznasz chyba że lepiej napisać własną funkcje np DotProduct bo chyba lepiej wiedziec co w kodzie piszczy :)

0

hehe fajnie za ja wiem <font color="red">w ogóle</span> co to jest to CrossProduct i DotProduct :P. Moze male sprostowanie ? No trzeba sie chyba wziac za czytanie :P

0

na razie nie zaprzontuj sobie tym głowy na to przyjdzie czas :) Dam bendziesz wiedział kiedy

0

Trzeba pamiętac, że DirectX jest biblioteka napisana właśnie na potrzeby tworzenia gier. Ale to nie znaczy, że OpenGL jest gorszy.
Na poczatku może się wydawac, iż łatwiej się pisze wykorzystujac OpenGL, ale jak np. chcesz sobie wyświetlic jakas scenę z pliku, to w DirectX masz możliwośc ładowania .x , a w OpenGL sam sobie musisz napisac jakiegoś loader'a.
Zreszta kto co woli do woli :-). Jedna i druga biblioteka graficzna maja olbrzymie mozliwości.

0

Smith to że samemu sobie załadujesz jakiś model to ogromna satysfakcja :) Wiesz ile dni i nocy sie cieszylem jak zaladowalem modele z Quaka2 ??, bodajze 2 dni :) Jezeli sie ma specyfikacje formatu jakiegos plku to mozna latwo go zaladowac.

0

no wlasnie jak to jest z openGL-em nawet do wczytywania plikow graficznych trzeba pisac specjlane funkcje ? jesli tak to dzie moge znalezc "specyfikacje formatow" ?

0

W necie :) jeśli szukamy np specyfikacj formatu *.tga wpisujemy w wyszukiwarce "tga file format" albo odwiedzamy stronke http://www.wotsit.org/

//lub tę: http://myfileformats.com/
//na przyszlość - używaj tagów <url> - m.M

0

Smith to że samemu sobie załadujesz jakiś model to ogromna satysfakcja :) Wiesz ile dni i nocy sie cieszylem jak zaladowalem modele z Quaka2 ??, bodajze 2 dni :) Jezeli sie ma specyfikacje formatu jakiegos plku to mozna latwo go zaladowac.

Domyślam się że to bardzo cieszy.
Producenci gier wykorzystujacych DirecX tez czesto pisza obsługę własnego formatu plików 3D, chocby dlatego, żeby ktoś nie edytował objektów lub (i) scen 3D. Czasami celowo pisze z obsługa znanego formatu, by użytkownicy danego programu mogli tworzyc nowe modele do tegoz programu.

0

ja tam uważam, że z grafą trzeba sie bawić w OpenGl, a do muzy i interakcji z użytkownikiem DirectX używać :-)

0

hmm... Ja uczę się w tej chwili wykorzystywania bibliotek DirectX i uważam że fajnie to wszystko jest pomyślane. Ci którzy wola C pewnie sięgna po OpenGL, gdzyż DirectX wykorzystuje techniki objektowego programowania.

0

ja tam uważam, że z grafą trzeba sie bawić w OpenGl, a do muzy i interakcji z użytkownikiem DirectX używać :-)

To powiedz to tym, ktorzy tworza gierki :D
Ja uwazam, ze to tylko kwestia przyzwyczajenia programisty. W tym i w tym idzie zrobic porzadna gierke. To tylko kwestia obycia z danym API.
Osobiscie uzywam DirectX i wydaje mi sie prosty i ma sporo rzeczy ulatwiajacych tworzenie scen 3d. Poczatkowo tez bawilem sie OGL ale DX wydal mi sie fajniejszy.
Nie taki DX (i COM :D) straszny jak go maluja.

0

Ale niestety nie jest prawda ze funkcje w OGLu i DX sa napisane idealnie i najszybciej jak sie da! :-( Nawet piszac w c/c++ mozna wyciagnac troche wiecej nie mowiac juz o assembly

0

OpenGL jest debest :) Coraz więcej gier wykożystuje Właśnie OpenGL'a
W nowsze produkty IDSoftware czyli quake , quake2, i quake3 a także przyszły quake4 i DOOM III będą śmigać tylko na OpenGL, co prawda quake1 był pod dosa ale potem zrobili specialną wersje z wykożystaniem OpenGL. Jeśli chodzi o muze i inne pierdoły to popatrzcie:

OpenAL - Odpowiednik DXAudio - Przenośny na wszyskie systemy
OpenML - Coś w stylu DXMedia - Przenośny na wszyskie systemy
OpenGL | EL jest to OpenGL na telefony komórkowe :) niezłe co ??

0

Zaczałęm czytać kurs o OpenGL ze strony http://directx.w.interia.pl/ w pewnym momencie natrafilem na niezrozumialy fragment kodu. Jak sie później dowiedzialem sa to podstawy API czy jak to tam sie zwie i ze musze dobrzez znac API aby dalej czytac kurs GL. No dobra owiedzialem sobie co mi szkodzi, rozpracuje ten API i bedzie spoko. No tak tyle ze kurs o API jest jeszcze bardzoiej zje***y, sory za te wyrazenia ale inaczej nie da sie tego nazwac. "Weźmy pod lupe" np. pierwszy program API z kursu. No dorba wwalam kod Do C++ i wszystko dziarga. Ale gdy dochodze do wytlumaczenia dzialania kodu to załamka. Gośc ktory to opisywal wszystko pomijal i odsylal mnie do jakiego prostytutka help-a. I tak przeczytawszy czesc kursu poswiecona tworzeniu okien pod windowsa, nic nie zrouzmialem. Gosciu chyba myslal ze kazdy kto czyta ten kurs to chyba jakis prostytutka a Einstain jest. Owija w bambuku a nic konkretow. Szczeze te kursy moze byly by dobre gdybym z nich cos rozumial. Oczywiscie znam podstawy C++ ale oto fragmet kursu:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

brrrrrr !, az ciarki przechodza. Nie bede sie tu moze wglebial w drobne szczegoly w roznicach pobieranych typow przez ta funkcje w roznych przykladowych programach, z ktorymi przyjdzie sie nam zmierzyc, zapewniam jednak, ze zawsze chodzi o to samo. A o co chodzi juz wyjasniam:

HINSTANCE hInstance – jest to tzw. uchwyt realizacji ( ???? ). Czym z kolei jest uchwyt ? Uchwyt to po prostu liczba, ktorej uzywa aplikacja do identyfikowania czegos czego moze "dotknac". W naszym wypadku uchwyt przekazywany do tej funkcji identyfikuje nasz program. Nie musimy jednak zawracac sobie tym glowy bo bedziemy z tego bardzo rzadko korzystac.

HINSTANCE hPrevInstance – jest to uchwyt ( juz wiemy co to ) do poprzedniej realizacji programu. W Windows mozemy uruchomic kilka kopii tego samego programu ( o czym moze nie wszyscy wiedza :), sa to wlasnie tzw. realizacje. W starym Windows kazdy nowy program uruchamiany z pliku exe korzystal z zasobow programu, ktory byl zaladowany jako pierwszy, z tego samego exec'a, natomiast w nowym, tym bardziej pokreconym zrezygnowano z tego i ten parametr jest zawsze ustawiany na NULL, wiec nie powinien nas obchodzic w najmniejszym stopniu.

LPSTR lpCmdLine – w koncu cos znajomego. Nic innego jak linia polecen programu. Tu umieszczany jest lancuch znakow, ktory nastepuje zaraz po nazwie naszego programu, np. "aqq.exe". Przewaznie oczywiscie nie wpisujemy zadnych parametrow programu ( zwlaszcza, ze szczegolnie w Windows jest to bardzo utrudnione ), ale mysle, ze o tym parametrze warto pamietac, bo moze sie kiedys przydac.

int nCmdShow – parametr ten mowi naszej aplikacji w jakiej postaci ma zostac uruchomiony nasz program ( dokladniej mowiac jego okno ), czy ma byc zminimalizowane na pasku zadan, czy wypelniac pelny ekran czy jeszcze jakos inaczej.

Nie wiem czy ktos poczatkujacy powinien to zrouzmiec ale to bezsens. Zero konkretow.

Dobra troche ponarzekalem a teraz pytanie. Gdzie moge znaleźć jaki pożadny kurs API, dla kompletnie zielonych w tej sprawie i taki ktory bo dokladnie wyjasnial wszystkie paramety funkcji wyswietlania okien.

0

dobry kurs jest na http://www.winapi.prv.pl/

1 użytkowników online, w tym zalogowanych: 0, gości: 1