.
| |
Нохчи | Дата: Пятница, 22 Июня 2012, 10:30 | Сообщение # 21 |
заслуженный участник
Сейчас нет на сайте
| Quote (mobipak) А вот знание DirectX никогда не пригодится, если знаешь Unity3D Пригодится. Тут где-то проскакивала тема о шейдерах для юнити.
Многие вопросы по Windows отпадут, если посмотреть тут
|
|
| |
Zahidylin_Marat | Дата: Пятница, 22 Июня 2012, 16:04 | Сообщение # 22 |
участник
Сейчас нет на сайте
| Quote (FSO) а какую примерно игру хочешь? Не сложную, на несколько уровней. Варианты: 1. Бегать стрелять в человечков(монстров) имея при этом навык стрельбы, который можно улучшать. Можно шуточно сделать - пушка стреляет помидорами. 2. Сделать карту, на которой будет разбросан ресурс (серебро) и нужно все его собрать, при этом доступны разные улучшения, после которых увеличиваться скорость сборки. 3. Бродилку, где нужно исследовать какое-то место и найти все предметы. 4. Куча других вариантов есть.Добавлено (22.06.2012, 16:04) ---------------------------------------------
Quote (FSO) Вот вам обычная игра созданая на Visual Basic без всяких движков - Типа NFS Не плохо
|
|
| |
FSO | Дата: Пятница, 22 Июня 2012, 17:06 | Сообщение # 23 |
почетный гость
Сейчас нет на сайте
| Zahidylin_Marat, 2D игру или 3D? Ты же понимаешь, что 3D это не шуточное дело и его сделать за месяц невозможно. Я думаю если делать игры, то с толком, хорошую игру, в которую будешь играть не ты один и делать до конца
GCup.ru ? Не, не слышал!
|
|
| |
Zahidylin_Marat | Дата: Пятница, 22 Июня 2012, 17:33 | Сообщение # 24 |
участник
Сейчас нет на сайте
| Quote (FSO) 2D игру или 3D? Зависит от того, кто захочет делать. Если умеет кто-то делать 3Д модели - почему бы и не сделать 3Д игру. Но тут нужно суметь спрограммировать. 2Д проще, и по этому больше склоняюсь в эту сторону. Взять например 2д конструктор Game maker.
Quote (FSO) Ты же понимаешь, что 3D это не шуточное дело и его сделать за месяц невозможно. Если честно, я не знаю насколько 2Д сложнее делать чем 3Д. Но то, что современные игры делаются по многу лет и большой командой профессионалов - я наслышан.
Quote (FSO) Я думаю если делать игры, то с толком, хорошую игру, в которую будешь играть не ты один и делать до конца Полностью согласен. Когда я говорю "простенькую игру" я не имею ввиду "левую и не интересную игру". Просто говорю, что это будет не GTA 6, а не большая по обьему, но интересная игра. Вообще, это все разговоры и напоминают они мне вот что: человек решил нарисовать что-то очень классное, но никогда не держал кисточку до этого, и вот сидит он и обсуждает, как он будет рисовать, что это будет шедевр и так далее, но когда начинает рисовать - получаются кривые, неуклюжие мазки - опыта веть нету. По этому я предлагаю новичкам просто брать и делать вместе - набираться опыта (самому ведь абсолютно нету стимула делать).
|
|
| |
Sleek | Дата: Пятница, 22 Июня 2012, 17:41 | Сообщение # 25 |
был не раз
Сейчас нет на сайте
| Хорошо говорить об этом... Создай тему с подобным opensource проектом с открытым исходным кодом для всех. Так, я считаю, будет довольно интересно работать. Если эта тема открыта, я бы хотел набраться опыта работая над ним и помочь другим в этом деле. Но для этого недостаточно только желания. Как я уже говорил создай тему, выложи исходники, и люди сами подключатся к работе.
|
|
| |
Zahidylin_Marat | Дата: Пятница, 22 Июня 2012, 19:34 | Сообщение # 26 |
участник
Сейчас нет на сайте
| Quote (Sleek) Создай тему с подобным opensource проектом с открытым исходным кодом для всех. Ты думаешь этой темы не достаточно? Тут начинать что-то делать не стоит?
Quote (Sleek) Если эта тема открыта Не понял что это значит.Добавлено (22.06.2012, 19:34) --------------------------------------------- Мне просто не интересно просматривать неделями видео и в пустую учить что-то, а хочется сразу это применять и видеть в игре.
|
|
| |
FSO | Дата: Пятница, 22 Июня 2012, 21:00 | Сообщение # 27 |
почетный гость
Сейчас нет на сайте
| Quote (Zahidylin_Marat) Зависит от того, кто захочет делать
Каждому легче создать 2D. Для большего уровня нужен большой опыт.
Quote (Zahidylin_Marat) Взять например 2д конструктор Game maker. Уже не раз пишу, но на КОНСТРУКТОРАХ хорошей игры не напишешь. Так сказать - эффекта "Ух ты" не будет вообще. лучше всего изучить общий ЯП и программировать игру на языке. Я раньше так делал, и выходила не плохо. У меня мой друг на Game Maker учился игры тряпать и где-то через пол года пересел на изучения ЯП в надежде, что потратил время в пустую. Без обид.
Quote (Zahidylin_Marat) Если честно, я не знаю насколько 2Д сложнее делать чем 3Д
Ууу... Скажу тебе так: Сделать 2D игру, это как накачать хороший пресс, 3D это накачать всего себя. 2D игры легче создавать.
Quote (Sleek) Полностью согласен. Когда я говорю "простенькую игру" я не имею ввиду "левую и не интересную игру".
Согласен. Я бы присоединился к проекту. Можно попробовать, но для этого нужно все детально обговорить. Если твое предложение в силе, то давай обсудим.
GCup.ru ? Не, не слышал!
|
|
| |
Sleek | Дата: Пятница, 22 Июня 2012, 21:52 | Сообщение # 28 |
был не раз
Сейчас нет на сайте
| Quote (Zahidylin_Marat) Не понял... Имел ввиду совместное создание игр и прочих проектов, недаром слово тема выделил.
Что бы что-то применить нужно это что-то знать, в таком деле не обойтись без обучения и самосовершенствования, постоянно нужно что-то изучать, искать.
Так что пора тебе начать или тема так и будет лежать на дельней полке.
|
|
| |
Zahidylin_Marat | Дата: Суббота, 23 Июня 2012, 08:36 | Сообщение # 29 |
участник
Сейчас нет на сайте
| Quote (Sleek) Так что пора тебе начать Имеешь ввиду создать отдельную тему и назвать ее "Совместное создание игры с открытым исходным кодом"?
|
|
| |
danielskachkov | Дата: Суббота, 23 Июня 2012, 08:45 | Сообщение # 30 |
постоянный участник
Сейчас нет на сайте
| Quote (Zahidylin_Marat) Имеешь ввиду создать отдельную тему и назвать ее "Совместное создание игры с открытым исходным кодом"? Имеется ввиду, что надо не ждать компаньонов, а самому браться за дело, тогда и компаньоны появятся.
Из-за преступной халатности работников Эрмитажа картина Казимира Малевича "Черный квадрат" два месяца провисела вверх ногами.
|
|
| |
ant0N | Дата: Суббота, 23 Июня 2012, 09:16 | Сообщение # 31 |
постоянный участник
Сейчас нет на сайте
| Quote (Eraser) Если программист хороший, то си бэйсик уделает вдоль и поперек... Молчал бы лучше... извиняюсь за флуд, но просто не могу пройти мимо таких высказываний... Eraser, что за детские выкрики??? если ты это говоришь, значит ты должен уметь программировать как на бэйсике так и на С++, но обычно сценаристы и гейм-дизайнеры ничего не смыслят в программировании (если ты не из этих - докажи).. и вообще ни к чему спорить какой язык круче, какой мощнее, у кого больше.... Если выбрать хороший движок, то не важно на каком языке писать
Blender 3D, Godot Engine, LUA
|
|
| | |
ant0N | Дата: Суббота, 23 Июня 2012, 09:32 | Сообщение # 33 |
постоянный участник
Сейчас нет на сайте
| Quote (mobipak) А вот знание DirectX никогда не пригодится, если знаешь Unity3D
знание DirectX никогда не помешает, тем более ТС не говорил что что будет делать на этом движке или если знаешь юнити, то автоматически знаешь DirectX? сомневаюсь
Добавлено (23.06.2012, 09:32) --------------------------------------------- Quote (LunarPixel) ant0N, как раз таки геймдизайнер должен смыслить, не владеть этим в совершенстве, конечно, но все же смыслить... согласен с тобой конечно... Но в любом случае знания гейм-дизайнера будут недостаточны для таких высказываний
Blender 3D, Godot Engine, LUA
Сообщение отредактировал ant0N - Суббота, 23 Июня 2012, 09:33 |
|
| |
Zahidylin_Marat | Дата: Суббота, 23 Июня 2012, 09:33 | Сообщение # 34 |
участник
Сейчас нет на сайте
| Ну я уже и начал. Я и еще один человек хотим попробовать что-то сделать на Директе9, хотя кажется, что сейчас посыпется критика, типа: зачем Директ - он веть очень низкоуровневый и сложный.
Вот сделал окно, и клавишами можно двигаться (если выдает ошибку об отсутствии библиотеки - скорее всего директ нужно обновить). http://rghost.ru/38822807
|
|
| |
ant0N | Дата: Суббота, 23 Июня 2012, 09:38 | Сообщение # 35 |
постоянный участник
Сейчас нет на сайте
| Zahidylin_Marat, если сможешь изучить DirectX, то любой двиг изучить тебе будет легко... И даже сможешь написать свой... Но это очень сложно, да ты и сам знаешь.. Добавлено (23.06.2012, 09:38) --------------------------------------------- библиотеки вместе с примерами выкладывай, а то не запускается
Blender 3D, Godot Engine, LUA
|
|
| |
Zahidylin_Marat | Дата: Суббота, 23 Июня 2012, 09:44 | Сообщение # 36 |
участник
Сейчас нет на сайте
| Предупреждаю - тут полный бардак. Я раньше работал с директом, но потом оставил. А вчера предложил человек вспомнить, вот я и собрал на скорую руку по кускам из интернета базовое преложение. А какую ошибку выдает? Может это по тому, что я дал Отладочную сборку вместо релизной?
Code
// в этом файле лежат все функции WinAPI #include <windows.h>
// подключаем заголовочный файл DirectX 9 SDK #include <d3d9.h> #include <d3dx9.h> #include <dinput.h>
#pragma comment(lib, "dinput8.lib") #pragma comment(lib, "dxguid.lib") // Для работы с mesh #include <d3dx9mesh.h> #include <math.h>
#pragma comment(lib, "d3d9.lib") #pragma comment(lib, "d3dx9.lib")
char buffer[256]; // Буфер. Хранит состояние клавиатуры. LPDIRECT3D9 pDirect3D = NULL; LPDIRECT3DDEVICE9 pDirect3DDevice = NULL;
// Указатель на Mesh LPD3DXMESH pMesh = NULL; // Указател на буфер mesh-а LPD3DXBUFFER pMeshBuffer = NULL; // Указатель на буфер материалов D3DMATERIAL9 *pMeshMaterial = NULL; // Указатель на буфер текстур LPDIRECT3DTEXTURE9 *pMeshTexture = NULL; // Количество материала и текстур DWORD dwNumber = 0;
DWORD OneTick = 0;
HINSTANCE hInstance;
IDirectInput8* di; // объект DirectInput IDirectInputDevice8* didev; // устройство DirectInput
float dx = 0; float dy = 0; float dz = -100;
// Функция обработки сообщений - прототип LRESULT CALLBACK MainWinProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam); // Функция инициализации Direct3D - прототип HRESULT InitDirect3D(HWND hwnd); // Функция рендеринга Direct3D - прототип void RenderingDirect3D(void); // Функция освобождения захваченных ресурсов - прототип void DeleteDirect3D(void); // Функция инициализации объекта (буфера и индексов вершин) - прототип HRESULT InitMesh(void); // Установка матриц преобоазования - прототип void Matrix(void); // Рисует созданную mesh - прототип void DrawMyMesh(void);
// Функция которая является входной точкой приложения int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) {
WNDCLASSEX windowsclass; HWND hwnd; MSG msg; hInstance = hInst;
windowsclass.cbSize = sizeof(WNDCLASSEX); windowsclass.style = CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW; windowsclass.lpfnWndProc = MainWinProc; windowsclass.cbClsExtra = 0; windowsclass.cbWndExtra = 0; windowsclass.hInstance = hInst; windowsclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); windowsclass.hCursor = LoadCursor(NULL, IDC_ARROW); windowsclass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH); windowsclass.lpszMenuName = NULL; windowsclass.lpszClassName = "WINDOWSCLASS"; windowsclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if (!RegisterClassEx(&windowsclass)) return 0;
hwnd = CreateWindowEx(NULL, "WINDOWSCLASS", "Загрузка Х-файла с вращением", WS_OVERLAPPEDWINDOW| WS_VISIBLE, 0, 0, 770, 500, NULL, NULL, hInst, NULL); if (!hwnd) return 0;
if (SUCCEEDED(InitDirect3D(hwnd))) { if (SUCCEEDED(InitMesh())) { ShowWindow(hwnd, SW_SHOWDEFAULT); UpdateWindow(hwnd);
ZeroMemory(&msg, sizeof(msg)); while (msg.message != WM_QUIT) { if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } else RenderingDirect3D(); } } }
return (int)msg.wParam; } // Функция обработки сообщений LRESULT CALLBACK MainWinProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { switch (msg) { // События Создания объектов case WM_CREATE: break;
//Обработка сообщений от элементов управления case WM_COMMAND: break;
//WM_PAINT - для рисования case WM_PAINT: break;
// WM_DESTROY - для закрытия окна case WM_DESTROY: DeleteDirect3D(); PostQuitMessage(0); break; } return (DefWindowProc(hwnd, msg, wparam, lparam)); } // Функция инициализации Direct3D HRESULT InitDirect3D(HWND hwnd) { if (NULL == (pDirect3D = Direct3DCreate9(D3D_SDK_VERSION))) return E_FAIL;
D3DDISPLAYMODE Display; if (FAILED(pDirect3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &Display))) return E_FAIL;
D3DPRESENT_PARAMETERS Direct3DParameter; ZeroMemory(&Direct3DParameter, sizeof(Direct3DParameter)); Direct3DParameter.Windowed = true; Direct3DParameter.SwapEffect = D3DSWAPEFFECT_DISCARD; Direct3DParameter.BackBufferFormat = Display.Format; // Включаем z-буфер Direct3DParameter.EnableAutoDepthStencil = TRUE; // Формат поверхности z-буфера Direct3DParameter.AutoDepthStencilFormat = D3DFMT_D16;
if (FAILED(pDirect3D -> CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &Direct3DParameter, &pDirect3DDevice))) return E_FAIL; pDirect3DDevice->SetRenderState(D3DRS_LIGHTING, false); // Включаем z-буфер pDirect3DDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
DirectInput8Create(hInstance, // экземпляр приложения DIRECTINPUT_VERSION, // версия DirectInput IID_IDirectInput8, // глобальный идентификатор (COM) (void**)&di, // адрес указателя объекта DirectInput NULL);
di->CreateDevice(GUID_SysKeyboard, // устройство ввода с клавиатуры &didev, // адрес указателя на устройство NULL);
didev->SetDataFormat(&c_dfDIKeyboard); didev->SetCooperativeLevel(hwnd,DISCL_FOREGROUND | DISCL_NONEXCLUSIVE); didev->Acquire();
return S_OK; } // Функция рендеринга Direct3D void RenderingDirect3D(void) { if (pDirect3DDevice == NULL) return; // Очистка z-буфера pDirect3DDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(172, 221, 101), 1.0f, 0);
pDirect3DDevice->BeginScene();
didev->GetDeviceState(sizeof(buffer),buffer);
if (buffer[DIK_RIGHT] & 0x80) dx+=1; if (buffer[DIK_LEFT] & 0x80) dx-=1; if (buffer[DIK_UP] & 0x80) dz+=1; if (buffer[DIK_DOWN] & 0x80) dz-=1; Matrix(); DrawMyMesh(); pDirect3DDevice->EndScene();
pDirect3DDevice->Present(NULL, NULL, NULL, NULL); } // Функция освобождения захваченных ресурсов void DeleteDirect3D(void) { if (pDirect3DDevice != NULL) pDirect3DDevice->Release(); if (pDirect3D != NULL) pDirect3D->Release(); if (pMeshMaterial != NULL) delete [] pMeshMaterial; if (pMeshTexture) { for(DWORD i = 0; i < dwNumber; i++) { if (pMeshTexture[i]) pMeshTexture[i]->Release(); } delete [] pMeshTexture; } if (pMesh != NULL) pMesh->Release(); } // Функция инициализации объекта (буфера и индексов вершин) HRESULT InitMesh(void) { if (FAILED(D3DXLoadMeshFromX("Tiger.x", D3DXMESH_SYSTEMMEM, pDirect3DDevice, NULL, &pMeshBuffer, NULL, &dwNumber, &pMesh))) return E_FAIL;
// Извлекаем свойства материала и названия{имена} структуры D3DXMATERIAL *D3DXMeshMaterial = (D3DXMATERIAL *)pMeshBuffer->GetBufferPointer(); pMeshMaterial = new D3DMATERIAL9[dwNumber]; pMeshTexture = new LPDIRECT3DTEXTURE9[dwNumber]; for (DWORD i = 0; i < dwNumber; i++) { // Копируем материал pMeshMaterial[i] = D3DXMeshMaterial[i].MatD3D; // Установить окружающего свет pMeshMaterial[i].Ambient = pMeshMaterial[i].Diffuse; // Загружаем текстуру if ( FAILED(D3DXCreateTextureFromFile(pDirect3DDevice, D3DXMeshMaterial[i].pTextureFilename, &pMeshTexture[i]))) pMeshTexture[i] = NULL; } // Уничтожаем буфер материала pMeshBuffer->Release();
return S_OK; } // Рисует созданную mesh void DrawMyMesh(void) { for (DWORD i = 0; i < dwNumber; i++) { // Устанавливаем материал и текстуру pDirect3DDevice->SetMaterial(&pMeshMaterial[i]); pDirect3DDevice->SetTexture(0, pMeshTexture[i]); // Рисуем Меш pMesh->DrawSubset(i); } } // Установка матриц преобоазования void Matrix(void) { // Матрица вида D3DXMATRIX MatrixView; //матрица проекции D3DXMATRIX MatrixProjection; D3DXMATRIX MatrixWorld; D3DXMATRIX MatrixTranslation; D3DXMATRIX MatrixRotation;
float BeginAngle; float rps; UINT iTime; float fAngle;
BeginAngle = D3DX_PI/4.0f; rps = 0.5f; iTime = GetTickCount();
if(!OneTick) OneTick = iTime; fAngle = BeginAngle + (iTime - OneTick) * (D3DX_PI * 2.0f * rps / 1000.0f); // поворот тигра
D3DXMatrixRotationY(&MatrixRotation, 20); D3DXMatrixTranslation(&MatrixTranslation, dx, dy, dz); // положение тигра D3DXMatrixMultiply(&MatrixWorld, &MatrixRotation, &MatrixTranslation); pDirect3DDevice->SetTransform(D3DTS_WORLD, &MatrixWorld);
// Изменяем видовую матрицу D3DXMatrixLookAtLH(&MatrixView, // полученная в итоге видовая матрица &D3DXVECTOR3(0.0f, 0.0f, 10.0f), // точка, из которой смотрим &D3DXVECTOR3(0.0f, 0.0f, 0.0f), // куда смотрим &D3DXVECTOR3(0.0f, 1.0f, 0.0f)); // направление верха // Устанавливаем видовую матрицу pDirect3DDevice->SetTransform(D3DTS_VIEW, &MatrixView); // Изменяем матрицу проекции D3DXMatrixPerspectiveFovLH(&MatrixProjection, // полученная итоговая матрица проекции D3DX_PI/4, // поле зрения в направлении оси Y в радианах 1.54f, // соотношения сторон экрана 770/500=1.54 10.0f, // передний план отсечения сцены 200.0f); // задний план отсечения сцены // Устанавливаем матрицу проекции pDirect3DDevice->SetTransform(D3DTS_PROJECTION, &MatrixProjection); }
|
|
| |
ant0N | Дата: Суббота, 23 Июня 2012, 09:49 | Сообщение # 37 |
постоянный участник
Сейчас нет на сайте
| да просто не может найти библиотеку MSVCP100D.dll
Blender 3D, Godot Engine, LUA
|
|
| |
Zahidylin_Marat | Дата: Суббота, 23 Июня 2012, 09:51 | Сообщение # 38 |
участник
Сейчас нет на сайте
| Вот релизная сборка - надеюсь запуститься: http://rghost.ru/38822876
|
|
| |
ant0N | Дата: Суббота, 23 Июня 2012, 10:06 | Сообщение # 39 |
постоянный участник
Сейчас нет на сайте
| работает! для простенькой игры ты выбрал совсем не простенький инструмент
Blender 3D, Godot Engine, LUA
|
|
| |
Zahidylin_Marat | Дата: Суббота, 23 Июня 2012, 10:09 | Сообщение # 40 |
участник
Сейчас нет на сайте
| Всегда приятно такое слышать
Quote (ant0N) для простенькой игры ты выбрал совсем не простенький инструмент biggrin Это точно. Мне предложили и я согласисля попробовать. Но это не окончательное решение. А на чем бы ты предложил делать?
|
|
| |
|