Zobrazují se příspěvky se štítkemgrafika. Zobrazit všechny příspěvky
Zobrazují se příspěvky se štítkemgrafika. Zobrazit všechny příspěvky

úterý 14. září 2010

Nejočekávanější grafické pecky

Internetový magazín NOW Gamer, který se stále ještě nezařadil do seznamu SONY hate sajt oficiálně spravovaným JOEm, dnes vydal zajímavý článek o nejlépe graficky vypadajících peckách blízké budoucnosti. Jak to dopadlo pro SONY a absolutně nejvýkonnější, top notch, cutting-edge, state-of-the-art konzoli PS3 ?

Absolutní MEGA pecka Killzone 3, jejíž tvůrci posílili tým věnující se grafické stránce na úkor týmu věnujícího se nadávkám (sorry lidi, ale F*CK a SH*T už uslyšíme jen 2 v každé větě, kde sou ty časy druhého dílu, ach jo), který nyní tvoří 89 procent všech lidí věnujících se vývoji hry (včetně uklízeček a personálu kantýny personálu) to neuhrála ani na bramborovou medaili, ale obsadila ubohé sedmé místo. Na druhou stranu furt je to lepší než Gears of war 3 na desátém místě, jejíž hlavní designer, Cliffy "teenage DJ" Blezinski v rozhovoru pro prestižní japonský magazín Sadó Masó Hentai Sumó Koničiva prohásil, že pravděpodobně kvůli výsledku spáchá harakiri a jen shání meč od Hatori Hanza, aby se mohl zapíchnout ve velkém stylu (na letošní Tokio Game Show).

Dalším zklamáním je The Last Gurdian, který uhrál jen páté místo. Důvodem je pravděpodobně to, že na TLG pracuje stejný tým jako na hře Eye Pet a peří na příšerce snímají přes kamerku SONY Eye, takže výsledné textury jsou horší než u ICO prohraném přes emulátor ZX Spectra. Na druhou stranu to vše zvládají v 60fps a nativním rozlišení (nativně roztáhlém ve Photoshopu) 720p, což neumí každý !

Situaci tak zahraňuje Gran Turismo 5, které po deseti letech vývoje zaujalo místo na bedně, i když pravda dosáhlo jen na bronz. Nicméně Kazunori Yamauchi na výsledek reagoval slovy, že když je deset let vývoje dostalo na bronzovou pozici, proč by je dalších pět let nemohlo dostat na zlatou a že má spoustu nápadů, které ještě do hry dodělat. Koneckonců proč s vydáním pospíchat, za pět let může Polyphony digital vydat GT5 rovnou na PS4 a hráči nebudou muset čekat na další díl série na PS4 dalších deset až patnáct let. V souvislosti s plánovaným odkladem se chystá vydání GT5 Epilogue, který nabídne obsah z cca rok starého dema doplněného o 10 aut a dvě tratě za cenu 50 USD. Počet předobjenávek již dosáhl dvou milionů kusů a stále roste.

Pro úplnost doplníme, že i když celá SONY by měla za základě výsledků spáchat harakiri, není to nic proti výsledkům Microsoftu. V celé desítce totiž nemají JEDINOU ! exkluzivní hru a tak se jasně ukazuje, že vývoj dopředu táhne PC, ze kterého jsou downgradované verze portovány na PS3 a X360. Hanba !

Zdroj: NOW Gamer

čtvrtek 19. února 2009

Kurz programování (1. část)

Hry upadají. Dnešní hry (třeba Left 4 dead nebo Crysis) vypadají daleko hůř než hry staré desítky let (třeba božský Serious Sam), na jejich spuštění potřebujete 1000x silnější hardware, na PC musíte kupovat novou grafickou kartu každých 14 dní a stejně vám ty nový hrůzy na plný detaily, aspoň v 720p a aspoň na 30 fps nepojedou.

Proto jsme se odhodlali k zásadnímu kroku - když už dnešní programátoři jsou takový lamy a umí programovat jen ve Visual Basicu, vychováme si nové programátory, kteří nebudou potřebovat takové ubohé berličky jako je pokročilé IDE, user friendly programovací jazyky jako je Visual Basic nebo Visual C++ (o C# nebo Javě ani nemluvě), ale jako správní programátoři udělají hru v Assembleru. Bez assembleru totiž nedonutíte ani kostku o 8 polygonech aby se hejbala plynule na GeForce 280 !

Protože vás nechceme podceňovat, nebudeme tu jako všichni začínat s takovými banalitami jako je nějaké Hello world. Přejdeme rovnou k věci a to k ošetření vstupu z klávesnice. K tomu použijte tento kód:


program aSimpleWindow;
#include( "win32.hhf" )
#include( "strings.hhf" )
#include( "memory.hhf" )
#include( "args.hhf" )
#include( "conv.hhf" )

static
hInstance: dword;
CommandLine: string;

readonly
ClassName: string := "SimpleWinClass";
AppName: string := "Our First Window";

static GetLastError:procedure; external( "__imp__GetLastError@0" );

procedure WndProc( lParam:dword; wParam:dword; uMsg:uns32; hWnd:dword );
nodisplay;

const
TestString:= "Win32 assembly is great and easy!";

var
hdc: dword;
ps: win.PAINTSTRUCT;

static
kbdChar: char := ' ';

begin WndProc;

if( uMsg = win.WM_DESTROY ) then
win.PostQuitMessage( 0 );

elseif( uMsg = win.WM_CHAR ) then
mov( (type byte wParam ), al );
mov( al, kbdChar );
win.InvalidateRect( hWnd, NULL, true );

elseif( uMsg = win.WM_PAINT ) then
win.BeginPaint( hWnd, ps );
mov( eax, hdc );

win.TextOut
(
hdc,
0,
0,
#{ lea( eax, kbdChar ); push( eax ); }#,
1
);
win.EndPaint( hWnd, ps );

else

win.DefWindowProc( hWnd, uMsg, wParam, lParam );
exit WndProc;

endif;
sub( eax, eax );

end WndProc;

procedure WinMain
(
hInst:dword;
hPrevInst: dword;
CmdLine: string;
CmdShow: dword
); nodisplay;

var
wc: win.WNDCLASSEX;
msg: win.MSG;
hwnd: dword;

begin WinMain;

mov( @size( win.WNDCLASSEX ), wc.cbSize );
mov( win.CS_HREDRAW | win.CS_VREDRAW, wc.style );
mov( &WndProc, wc.lpfnWndProc );
mov( NULL, wc.cbClsExtra );
mov( NULL, wc.cbWndExtra );
mov( hInstance, wc.hInstance );
mov( win.COLOR_WINDOW+1, wc.hbrBackground );
mov( NULL, wc.lpszMenuName );
mov( ClassName, wc.lpszClassName );
win.LoadIcon( NULL, win.IDI_APPLICATION );
mov( eax, wc.hIcon );
mov( eax, wc.hIconSm );
win.LoadCursor( NULL, win.IDC_ARROW );
mov( eax, wc.hCursor );
win.RegisterClassEx( wc );
win.CreateWindowEx
(
NULL,
ClassName,
AppName,
win.WS_OVERLAPPEDWINDOW,
win.CW_USEDEFAULT,
win.CW_USEDEFAULT,
win.CW_USEDEFAULT,
win.CW_USEDEFAULT,
NULL,
NULL,
hInst,
NULL
);
mov( eax, hwnd );

win.ShowWindow( hwnd, win.SW_SHOWNORMAL );
win.UpdateWindow( hwnd );

forever

win.GetMessage( msg, NULL, 0, 0 );
breakif( !eax );
win.TranslateMessage( msg );
win.DispatchMessage( msg );

endfor;
mov( msg.wParam, eax );

end WinMain;

begin aSimpleWindow;

win.GetModuleHandle( NULL );
mov( eax, hInstance );
mov( arg.CmdLn(), CommandLine );
WinMain( hInstance, NULL, CommandLine, win.SW_SHOWDEFAULT );
win.ExitProcess( eax );

end aSimpleWindow;

Jistě jsou vám jasné výhody i nevýhody použití tohoto stylu práce se vstupem z klávesnice. Pochopitelně se nabízí mnoho jiných způsobů (na které si v rámci domácího cvičení přijděte sami).

Abychom zefektivnili a co možná nejvíc zkrátili proces učení (přece jen, nové a výkonné programátory potřebujeme brzy, aby konečně hry zase za něco stály), nastudujte si do příštího týdne vše až do kapitoly o vykreslování polygonů v 3D prostoru a aplikaci více světelných zdrojů (stíny a antialiasing samozřejmě musíte umět také).

V případě dotazů se obracejte přímo na samotného guru JOEa, který samozřejmě programování v Assembleru (jakož i ve všech ostatních jazycích) ovládá nejlépe, jak již sám mnohokrát prohlásil (byl to on, kdo v 5ti letech naprogramoval na mainframu hru PONG, nenechte se mýlit lživými tvrzeními, že to byl někdo jiný).

P.S. Jo a začněte si shánět SDK pro Playstation 3. Budeme ho potřebovat v 5. kapitole. Do té doby se taky naučte jak programovat pro 8 jader současně, bez toho to nemá cenu.