Ma Carmak je car
Uglavnom mislim da ima jos dinamita u njemu i da ga nebi trebali olako shvacat konkuretni.
Evo, baš promatram malo forum, i svuda se spama, ruši, flejma, locka... Pa evo došao na ideju da u naš mirni kutak postavimo agoru. Možda ste čuli što je agora iz Stare Grčke. To je bio glavni trg gdje su Grci se okupljali da bi se raspravljali o različitim temama, opuštali se bla bla. E ovdje bi mogli baciti pokoju novu vijest iz gaming industrije, možda i popričati i neku foru baciti, sve u granicama zdravog foruma.
Evo, pošto sam ja otvorio, bacimo se na Carmacka, njegov id tech 5, po vama, hoće li on biti sposoban konkurirati na tržištu svojoj daleko komercijaliziranoj braći, CryENGINEu 2 i UE3ici. Ako već niste čuli za novi engine u id tech liniji, nije baš i neko čudo jer većinu informacija id software skriva od očiju javnosti. Evo što sam ja okupio:
Carmackova prezenatcija - video JuBiTo
Malo informacija na wikipediji
Inače, po meni, definitivno će imati veće poštovanje od mnogih game developera pošto idu na OpenGL koji Carmack gura od samog početka i pokazuje da nije ništa slabiji od njegove DirectX 10 braće, a usto i nije zaključan na windows.
Gdje je nestao mozak
gdje se skriva on
iz vagona pameti
na tračnice ispao...
da .. gledao sam taj video .. impresivno
The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
<3 <3 <3 <3 <3 <3 <3
ŠIRI SA MNOM LJUBAV Cherry!
Ja se definitivno slažem da ima dinamita, no malo mi je problematično što kasni za svojim zlim blizancima. No, valjda će ga fino optimizirati i sve oboriti s nogu. Baš me zanima što će burek reći na temuIzvorno postao ReiKo
Gdje je nestao mozak
gdje se skriva on
iz vagona pameti
na tračnice ispao...
Odlično,poprilično impresivno.
Najbolje od svega šta je to OpenGL, a ne
"napiši-3-kilometra-koda-za-jedan-prozor-directX".
Možda ću napisat koji tutorial za OGL,ko zna...
Izvorno postao Fenrir
Pa nije baš tri kilometra:Izvorno postao Plexihack
Code:// osnovni header fileove koji su nam potrebni #include <windows.h> #include <windowsx.h> #include <d3d9.h> #define SCREEN_WIDTH 1680 #define SCREEN_HEIGHT 1050 #define KEY_DOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0) #define KEY_UP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1) // uključi Direct3D biblioteku u projekt #pragma comment (lib, "d3d9.lib") // globalne deklaracije LPDIRECT3D9 d3d; // pointer prema našem D3D sučelju LPDIRECT3DDEVICE9 d3ddev; // pointer prema klasi uređaja LPDIRECT3DVERTEXBUFFER9 t_buffer = NULL; // vertex buffer yay. //prototip funkcija vezanih uz Direct3D void initD3D(HWND hWnd); // sets up and initializes Direct3D void render_frame(void); //renderira jedan frejm/sliku/render void cleanD3D(void); // Čisti nered koji smo napravili void init_graphics(void); // inicijalizira grafiku struct CUSTOMVERTEX {FLOAT X, Y, Z, RHW; DWORD COLOR;}; #define CUSTOMFVF (D3DFVF_XYZRHW | D3DFVF_DIFFUSE) //prototip WindowProc funkcije (sjećate se, ona koja rukuje sa porukama) LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); // ulazna točka u svaku windows aplikaciju int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // "ručica za prozor", ispuni se funkcijom HWND hWnd; // struktura prozora WNDCLASSEX wc; // očisti strukturu prozora ZeroMemory(&wc, sizeof(WNDCLASSEX)); // ajmo popuniti članove ove strukture wc.cbSize = sizeof(WNDCLASSEX); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = (WNDPROC)WindowProc; wc.hInstance = hInstance; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.lpszClassName = L"WindowClass1"; // registriraj klasu koristeći informacije date wc-u RegisterClassEx(&wc); // napravi prozor i koristi rezultat kao ručicu (hWnd) hWnd = CreateWindowEx(NULL, L"WindowClass1", // Ime windows klase L"PCPlay Ucionica", // Naziv prozora WS_EX_TOPMOST | WS_POPUP, // stil prozora 0, 0, // početne koordinate, fullscreen == stavit na (0,0) SCREEN_WIDTH, SCREEN_HEIGHT, // širina i visina zaslona NULL, // nema roditeljskog prozora NULL, // ne koristimo izbornik hInstance, // ručica aplikacije (remember) NULL); // ne koristi se sa više prozora // napokon ju prikaži: ShowWindow(hWnd, nCmdShow); // inicijalizacija D3Da initD3D(hWnd); // ulaz u glavni loop // ova struktura sadrži predivne poruke koje nam Windows šalje MSG msg; // primijetite kako ovo zapravo stvara infinite loop while(TRUE) { // Provjeri za porukice u event queueu... Kako glupa riječ ^^ if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { // Ako je poruka jednaka WM_QUIT, break out! if (msg.message == WM_QUIT) break; // Standarno procesiranje kroz WindowProc funkciju TranslateMessage(&msg); DispatchMessage(&msg); } //pozivamo funkciju da renderira unutar loopa render_frame(); // provjeri za escape key if(KEY_DOWN(VK_ESCAPE)) PostMessage(hWnd, WM_DESTROY, 0, 0); } //kada izađe iz loopa, zatvori Direct3D uređaj i direct3D cleanD3D(); // vrati ovaj dio WM_QUITa Windowsu return msg.wParam; } // ova funkcija rukuje sa svim porukama koje naša aplikacija prima // dakle, poštar :) LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { // traži određenu akciju koja treba biti provedena pri dobivanju poruke switch(message) { // ovo se pročita kada korisnik pritisne crveni X case WM_DESTROY: { // zatvori aplikaciju PostQuitMessage(0); return 0; } break; } // rukuj sa svakom porukom koju WindowProc nije procesirao osobno return DefWindowProc (hWnd, message, wParam, lParam); } // ova funkcija priprema Direct3D za korištenje void initD3D(HWND hWnd) { d3d = Direct3DCreate9(D3D_SDK_VERSION); // create the Direct3D interface D3DPRESENT_PARAMETERS d3dpp; // stvaramo strukturu koja će sadržavate neke parametre, kul, zar ne? ZeroMemory(&d3dpp, sizeof(d3dpp)); // počisti istu za korištenje d3dpp.Windowed = FALSE; // program je zasad prozor d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; // odbaci stare slike d3dpp.hDeviceWindow = hWnd; // odredi koji će prozor D3D koristiti d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8; // postavi back buffer na 32 bitni mode. d3dpp.BackBufferWidth = SCREEN_WIDTH; // postavi back buffer na određenu širinu d3dpp.BackBufferHeight = SCREEN_HEIGHT; // postavi back buffer na određenu visinu // sada stvori uređaj na bazi svih podataka gore. d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &d3ddev); init_graphics(); return; } // inicijalizira grafiku općenito, 3d modeli n crap void init_graphics(void) { //napravi tri vertex koristeći CUSTOMVERTEX strukturu CUSTOMVERTEX t_vert[]S= { { 320.0f, 50.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(0, 0, 255), }, { 520.0f, 400.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(0, 255, 0), }, { 120.0f, 400.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(255, 0, 0), }, }; // napravi vertex i spremi pokazivač u t_buffer, koji je kreiran globalno d3ddev->CreateVertexBuffer(3*sizeof(CUSTOMVERTEX), 0, CUSTOMFVF, D3DPOOL_MANAGED, &t_buffer, NULL); VOID* pVoid; // prazni pokazivač t_buffer->Lock(0, 0, (void**)&pVoid, 0); // zaključaj vertex buffer memcpy(pVoid, t_vert, sizeof(t_vert)); // kopiraj vertexe u zaključani buffer t_buffer->Unlock(); // otključaj vertex buffer return; } // ovu funkciju koristimo da renderiramo jedan frame void render_frame(void) { // pozadinu oboji u crno. d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); d3ddev->BeginScene(); // započinje 3D scenu // postavi Flexible Vertex Format d3ddev->SetFVF(CUSTOMFVF); // odaberi vertex buffer koji treba prikazati d3ddev->SetStreamSource(0, t_buffer, 0, sizeof(CUSTOMVERTEX)); // kopiraj vertex buffer u back buffer d3ddev->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1); d3ddev->EndScene(); // završava 3D scenu d3ddev->Present(NULL, NULL, NULL, NULL); // prikazuje renderiranu "scenu" return; } // ova funkcija čisti nered za nama void cleanD3D(void) { t_buffer->Release(); // oslobodi vertex buffer d3ddev->Release(); // oslobodi D3D grafički uređaj d3d->Release(); // oslobodi Direct3D return; }
Gdje je nestao mozak
gdje se skriva on
iz vagona pameti
na tračnice ispao...
ne,2 i po je
ali ipak je puuuuuno duže u odnosu na OpenGL(ako se koristi GLUT):
#include <gl/glut.h>
bool fullscreen = false;
bool init()
{
return true;
}
void display()
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitWindowPosition(50, 50);
glutInitWindowSize(500, 500);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
glutCreateWindow("OMG KAKO PUNO!!!111ONEONEONE");
glutDisplayFunc(display);
if (!init())
return 1;
glutMainLoop();
return 0;
}
Izvorno postao Fenrir
bitno da XNA ima manje od svih
upravo završavam svoju igru u xna-u
The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
<3 <3 <3 <3 <3 <3 <3
ŠIRI SA MNOM LJUBAV Cherry!
Ne zaboravi pokazatiIzvorno postao Luka
inache,ovdje ima najmanje lockanih tema na svim (stalnim) podforumima i većina ih je lokana na zahtjev.
Izvorno postao Fenrir
Ono prikazuje trokut heheh Ali također ti nudi više kontrole nad nekim low level stvarima koje OpenGL nasreću isto može ali nisu esencijalne pri kreiranju jednostanvijih stvari. Je l'Izvorno postao ReiKo
Gdje je nestao mozak
gdje se skriva on
iz vagona pameti
na tračnice ispao...
Kod za trokut ima 4 linije višeIzvorno postao RayDX
Izvorno postao Fenrir
Uglavnom, kôd se može uvelike olakšati, ja sam ubacio dosta opreza da stalno radi te hrpetinu komentara. bez toga bi se prepolovioIzvorno postao ReiKo
Gdje je nestao mozak
gdje se skriva on
iz vagona pameti
na tračnice ispao...
Ajde da oživim ovu temu...
Se isplati čitati Game Programming Series knjige?
Malo su mi :S
btw,još 5 postova do 500
Izvorno postao Fenrir
http://www.gamedev.netSima hrpetinu reviewa GD related knjiga i članaka
Gdje je nestao mozak
gdje se skriva on
iz vagona pameti
na tračnice ispao...
Evo sad mi je burek dao ime jednog topica na gamedevu... Hhahaha...
HHAHAHAHAHAHAH
Neki lik od 13 godina radio kao custom OS, game konzolu baziranu na starim PC dijelovima te igre za istu... Hahahha, ukočio sam se od smijanja.
Gdje je nestao mozak
gdje se skriva on
iz vagona pameti
na tračnice ispao...
heh lol ..Izvorno postao RayDX
The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
<3 <3 <3 <3 <3 <3 <3
ŠIRI SA MNOM LJUBAV Cherry!
Bwahahahaha...ja sam sa 13 (prije godinu dana) mislio raditi OS...za 3 godine
Izvorno postao Fenrir
Today, Suicidal Interactive Entertainment bought out FullThrottle MultiMedia. The CEO of FTMM, fullthrottle, is now CEO of SIE, of course is not CEO/Founder like tylor2bcool.
Order in power:
tylor2bcool
fullthrottle
Some people have shown concern that the Crystal Tiger won't be able to keep up with it's next-gen cousins. As the hardware designer, I can tell you that this is not the case. The Crystal Tiger is one of the strongest consumer devices available (besides the PS3). With a quad-core, dual threaded CPU that runs at a minimum of 2.48 GHz, this is just below the Xbox360. However,Swhen we overclock our CPU to 4.5 GHzS( with little to no heat increase due to our efficient cores and cooling), we're running at the same speed as the PS3.
Suicidal Interactive Entertainment indeed.
The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
<3 <3 <3 <3 <3 <3 <3
ŠIRI SA MNOM LJUBAV Cherry!
---> DirectX tutorial is being produced as we speak... Standby
Gdje je nestao mozak
gdje se skriva on
iz vagona pameti
na tračnice ispao...
heh .. baš sam se danas sjetio ove teme
The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
<3 <3 <3 <3 <3 <3 <3
ŠIRI SA MNOM LJUBAV Cherry!
Crkao sam... Ali se isplatilo
Gdje je nestao mozak
gdje se skriva on
iz vagona pameti
na tračnice ispao...
Malo pitanjce, koliko bi vas interesirao HLSL tutorial? (High Level Shader Language)
Gdje je nestao mozak
gdje se skriva on
iz vagona pameti
na tračnice ispao...
mene biIzvorno postao RayDX
The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
<3 <3 <3 <3 <3 <3 <3
ŠIRI SA MNOM LJUBAV Cherry!