Большой Воронежский Форум
Страница 3 из 13
< 123 456789 > Последняя »
» Программирование>Создание игры!!!(кто хочет помочь все сюда!!!)
Inkvizitor 19:35 14.12.2007

Сообщение от DeniSS1:
Значит так:проект не загнулся, идея ещё жива, причём развивается - нашёл готовую программу, инициализирующую OpenGL и WINAPY. Теперь вопрос: что ДЛЯ НАЧАЛА будем делать?

Для начала надо всем собраться кто реально этим хочет заняться...и распределить "роли" [Ответ]
DeniSS1 20:04 14.12.2007
Т.е. какую игру мы будем делать? [Ответ]
The_God 20:06 14.12.2007
игру про меня

готов сфоткаться для текстуры [Ответ]
DeniSS1 12:28 15.12.2007
The_God, фотка лица, как я понимаю, у нас уже есть... :-)
Не, я серьёзно. [Ответ]
Inkvizitor 13:35 15.12.2007
А какие есть предложения? [Ответ]
DeniSS1 13:54 15.12.2007
Inkvizitor, ну, допустим, 2d-файтинг. Или 3D-шашки (можно осматривать с разных сторон). Или такой вариант: сначала игрок отрабатывает стрельбу в тире, а по прохождении обучения его направляют на войну. И он выполняет функции снайпера, пулемётчика, артилериста... Вообщем, всё то, что можно делать, не сходя с места (упростим проверку столкновений). Пример игры такого типа - Alien Versus, вроде так называется. [Ответ]
The_God 14:42 15.12.2007
а 2д шашки почему бы не сделать ?
куда реальнее чем шутер с парализованным главным героем. [Ответ]
DeniSS1 15:00 15.12.2007
The_God, можно замутить! Поможешь с интеллектом? [Ответ]
AIM-9M 18:40 15.12.2007
«Здраствуйте. Я, Кирилл. Хотел бы чтобы вы сделали игру, 3Д-экшон суть такова… Пользователь может играть лесными эльфами, охраной дворца и злодеем. И если пользователь играет эльфами то эльфы в лесу, домики деревяные набигают солдаты дворца и злодеи. Можно грабить корованы…» [Ответ]
Inkvizitor 18:47 15.12.2007
AIM-9M, я просто плакаю...от смеха. Спасиб! [Ответ]
xxx-men 22:31 15.12.2007
короче я начну..... никто не против???
1)на чем пишем? естественно на с++, если делать супер-мега-3д-экшен-рпг-онлайн, вся документация для с++.
2)что пишем??? пофиГ, пока будим писать придумаем


//движок игры
class theWorld{
void* map[5000][5000]// пригодица
public:
void moveall(){
/*
здесь воспаленный мозг програмера будет вырожен в буквАх
*/
};};
//граф двигло
class super3D{
void renderAll(){
printf("hello world(c)/n");//в дальнейшем эту строчку необходимо заменить, на
//функцию вывода фотографии форумца The_God
};};
// главная функция
int main{
theWorld a;
super3D b;
while(true){
a.moveall();
b.renderAll();
};
return 0;
};
//это была пред-демо-версия


ну вот и все, осталось пАчуть дополнить, но играть и так можно
осталось определица, а че собственно пишем?, а то дальше я даже не знаю че можно кодить [Ответ]
The_God 22:53 15.12.2007
я тоже хочу к вам, я тоже програмить хочу

void moveall()
{
_for (x=0; x<5000; ++x )
__for (y=0; y<5000; ++y )
___if ( player.type() == wood_elf_type )
____static_cast< anybody* >( map[x][y] )->fuck_at( player );
} [Ответ]
xxx-men 23:05 15.12.2007
The_God, не компилица бле......
выдает:
player.type() нету у нас такова класа , с таким методом
wood_elf_typе делай enum
static_cast< anybody* >( map[x][y] )->fuck_at( player ); тута и я хер че понял
короче берем тебя в команду

кстати, у нас же есть сюжет:

Сообщение от AIM-9M:
«Здраствуйте. Я, Кирилл. Хотел бы чтобы вы сделали игру, 3Д-экшон суть такова… Пользователь может играть лесными эльфами, охраной дворца и злодеем. И если пользователь играет эльфами то эльфы в лесу, домики деревяные набигают солдаты дворца и злодеи. Можно грабить корованы…»

[Ответ]
DeniSS1 11:52 16.12.2007
xxx-men, я что-то не понял. Нахрена нам класс Super3D, если у нас 2D шахматы? Вот мой вариант движка:

#include <windows.h>
#include <GL/gl.h> // Наша OpenGL библиотека
#include <GL/glu.h> // Библиотека утилит OpenGL
#include <GL/glaux.h> // И еще одна, с ее помощью можно рисовать стандартрые обьекты(сферы, кубы, и др.)

#pragma comment (lib, "OpenGL32.lib")

static GLint resW = 640, resH = 480; // Размер окна
bool isFullscr = false; // Полноэкранный режим (по умолчанию - нет)
BOOL keys[256]; // Массив для процедуры обработки клавиатуры
HGLRC hGLRC; // Контекст рендеринга OpenGL
HDC hDC; // Контекст устройства Windows

GLvoid InitGL() // Вызвать после создания окна GL
{
GLfloat white_light[] = {1.0, 1.0, 1.0, 1.0};
glShadeModel (GL_SMOOTH); // Метод закраски: СГЛАЖЕНЫЙ
glEnable (GL_DEPTH_TEST); // Включаем тест глубины
// ВКЛ. АВТОМАТИЧЕСКИЙ ПЕРЕСЧЕТ НОРМАЛЕЙ
glEnable (GL_AUTO_NORMAL);
glEnable (GL_NORMALIZE);
}


void reshape(int width,int height)
{
glViewport(0,0,width,height); // Устанавливаем размер порта просмотра
glMatrixMode( GL_PROJECTION ); // Переключаемся на матрицу проэкции
glLoadIdentity(); // Сбрасываем матрицу проэкции путем установки еденичной матрицы
gluPerspective (50.0, (GLfloat)width/(GLfloat)height, 1.0, 100.0); // настраиваем нашу камеру
glMatrixMode( GL_MODELVIEW ); // Переключаемся на матрицу модели-вида
glLoadIdentity(); // Сбрасываем матрицу модели-вида путем установки еденичной матрицы
}


void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Очищаем буфера
glLoadIdentity(); // Грузим нулевую матрицу
glPushMatrix();
glTranslatef(0, -2, -15);
glBegin(GL_QUADS);
// Здесь рисуем доску и клетки!
glEnd();
glPopMatrix();
glFlush(); // Досрочное завершение рисования (ф-я необязательна)
}


LRESULT CALLBACK WindowFunc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
RECT Screen;

GLuint PixelFormat;
static PIXELFORMATDESCRIPTOR pfd=
{
sizeof(PIXELFORMATDESCRIPTOR), //Размер структуры
1, // Номер версии
PFD_DRAW_TO_WINDOW | // Рисовать будем в окно
PFD_SUPPORT_OPENGL | // Установим поддержку OpenGL
PFD_DOUBLEBUFFER, // Выберем двойной буфер
PFD_TYPE_RGBA, // Режим цветности - RGBA
32, // Выберем 32 битную глубину цвета
0, 0, 0, 0, 0, 0, // Игнорирование цветовых битов
0, // Нет буфера прозрачности
0, // Игнорируем сдвиговый бит
0,//---------------------// Нет буфера аккумуляции
1, 1, 1, 1, // Биты аккумуляции игнорируются
32, // 32 битный Z-буфер (буфер глубины)
0, // Нет буфера траффарета
0, // Нет вспомогательных буферов
PFD_MAIN_PLANE, // Рисовать в главный слой рисования
0, // Резерв
0, 0, 0 // Маски слоя игнорируются
};

switch(message)
{
// сообщение WM_CREATE приходит
// один раз при создании окна
case WM_CREATE:
hDC = GetDC(hWnd); // Получить контекст устройства для окна

PixelFormat = ChoosePixelFormat(hDC, &pfd);// Найти ближайшее совпадение для нашего формата пикселов
if (!PixelFormat) // Если неудалось то...
{
// Выводим сообщение об ошибке
MessageBox (0, "Не удается найти подходящий PixelFormat!",
"Error", MB_OK | MB_ICONERROR);
SendMessage(hWnd, WM_DESTROY, wParam, lParam);// Это сообщение говорит, что программа должна завершится
break; //Предотвращение повтора кода
}

SetPixelFormat (hDC, PixelFormat, &pfd); // Теперь нкжно установить наш формата пикселов
if (!SetPixelFormat (hDC, PixelFormat, &pfd)) // Если неудалось то...
{
// Выводим сообщение об ошибке
MessageBox (0, "Не удается установить PixelFormat!",
"Ошибка!!!", MB_OK | MB_ICONERROR);
// Уничтожаем окно!
SendMessage(hWnd, WM_DESTROY, wParam, lParam);
break;
}


hGLRC = wglCreateContext (hDC); //Захватывает Контекст Рендеринга и сохраняет его в переменной hGLRC
if (!hGLRC) // Захватить не удалось...
{
// Выводим сообщение об ошибке
MessageBox (0, "Не удается создать контекст рендеринга OpenGL!",
"Ошибка!!!", MB_OK | MB_ICONERROR);
// Уничтожаем окно!
SendMessage(hWnd, WM_DESTROY, wParam, lParam);
break;
}

wglMakeCurrent(hDC, hGLRC); // делаем его текущим
if (!wglMakeCurrent(hDC, hGLRC))
{
MessageBox (0, "Не удается активировать контекст рендеринга GLRC!",
"Ошибка!!!", MB_OK | MB_ICONERROR);
// Уничтожаем окно!
SendMessage(hWnd, WM_DESTROY, wParam, lParam);
break;
}
// Все... окошко создано...
InitGL (); // Инициализируем наш GL
break;

// это сообщение приходит при уничтожении окна
case WM_DESTROY: //Уничтожает окно
case WM_CLOSE: //-|-|-|-|-|-|-
ChangeDisplaySettings (NULL, 0);//Восстанавливает первоначальное разрешение
if(hDC) wglMakeCurrent(hDC, NULL); // Освобождаем контекст рендеринга...
if(hGLRC) wglDeleteContext(hGLRC); // ...и удаляем его
if(hWnd) ReleaseDC(hWnd, hDC); // Рвем с ним всякие связи.
PostQuitMessage(0); // Убиваем окно!
break;

case WM_SIZE:
GetClientRect (hWnd, &Screen);//Создает область рисования и возвращает высоту и ширину окна
reshape(Screen.right, Screen.bottom );
break;

case WM_SYSKEYDOWN:
case WM_KEYDOWN: //Если клавиша нажата то...
keys[wParam] = TRUE; //В масив keys[key number] заносится TRUE
break;

case WM_SYSKEYUP:
case WM_KEYUP: //Если клавиша отпущена то...
keys[wParam] = FALSE; //В масив keys[key number] заносится FALSE
break;

default: // Реакция на все осталные сообщения ОС...
return DefWindowProc(hWnd,message,wParam,lParam); // ...по умолчанию
}
// если гдето чтото не так...
return 0; // ...возвращаем ошибку
}


int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInst,
LPSTR str,int nWinMode)
{
MSG msg;//Структура сообщения Windows
WNDCLASS wc; //Структура класса Windows для установки типа окна
HWND hWnd;//Сохранение дескриптора окна

wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; // Стиль нашего окна
wc.lpfnWndProc = WindowFunc; // Определяем ф-цию ответственную за обработку сообщений ОС
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = NULL; // иконка нашего окошка (по умолчанию)
wc.hCursor = LoadCursor (NULL, IDC_ARROW); // Курсор который будет отображаться при наведении на наше окошко (стрелка)
wc.hbrBackground = NULL;
wc.lpszMenuName = NULL;
wc.lpszClassName = "OpenGLWinClass"; // Определяем название класса окна


if (!RegisterClass(&wc)) // Если класс зарегистрировать не удалось...
{
MessageBox(0, "Ошибка при регистрации класса окна!","Ошибка!!!", MB_OK | MB_ICONERROR);
return FALSE;
}


if(isFullscr) // Если режим полноэкранный - создаем окно с соответствующими параметрами
{
// создаем окно
hWnd = CreateWindow(
"OpenGLWinClass", // название класса окна
"УРОК 01 >OpenGL is COOL", // Заголовок окна
WS_POPUP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, // Стиль (вид) окна
0, 0,
resW, resH, // Размеры окна
NULL, NULL, hInstance, NULL);
}
else // Иначе утанавливаем наше окошко, его вид и свойства
{
// создаем окно
hWnd = CreateWindow(
"OpenGLWinClass", // название класса окна
"УРОК 01 >OpenGL is COOL", // Заголовок окна
WS_OVERLAPPEDWINDOW | WS_SYSMENU | WS_MINIMIZEBOX | WS_VISIBLE | WS_SIZEBOX, // Стиль (вид) окна
0, 0,
resW, resH, // Размеры окна
NULL, NULL, hInstance, NULL);
}


if (!hWnd) // если создать окно не удалось
{
MessageBox(0, "Ошибка при создании окна!","Ошибка!!!",
MB_OK | MB_ICONERROR);
return FALSE;
}



if(isFullscr)
{
DEVMODE dmScreenSettings; // Режим работы устройства (видяхи)
memset (&dmScreenSettings, 0, sizeof(DEVMODE));// Очистка для хранения установок
dmScreenSettings.dmSize = sizeof(DEVMODE); // Размер структуры Devmode
dmScreenSettings.dmPelsWidth = resW; // Ширина экрана
dmScreenSettings.dmPelsHeight = resH; // Высота экрана
dmScreenSettings.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;// Режим Пиксела
ChangeDisplaySettings (&dmScreenSettings, CDS_FULLSCREEN);// Переключение в полный экран
}
//else ChangeDisplaySettings (&dmScreenSettings, CDS_GLOBAL);

ShowWindow(hWnd,nWinMode); // Показать окно
UpdateWindow(hWnd); // Обновить окно
SetFocus(hWnd); // Сделать окно активным


while (1)
{
// Обработка всех сообщений
while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
if (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
else return TRUE;
}

display(); // Нарисовать сцену
SwapBuffers(hDC); // Переключить буфер экрана

if (keys[VK_ESCAPE]) SendMessage(hWnd, WM_CLOSE, 0, 0);// Если ESC - выйти

}
}

Признаюсь, движок писал не полностю, нашёл программу, выводящую 3D шар, удалил освещение, сам шар, добавил glPushMatrix();
glTranslatef(0, -2, -15);
glBegin(GL_QUADS);
// Здесь рисуем доску и клетки!
glEnd();
glPopMatrix();
Пока всё! [Ответ]
xxx-men 17:12 16.12.2007
ууу, многа букваф, неасилил но скорее всего все верно
надо было про эльфАв делать, а ты шашки..............
[Ответ]
The_God 18:00 16.12.2007
нужно сделать так, чтобы когда шашка пробирается в дамки могла грабить караваны.

это важно. [Ответ]
DeniSS1 19:23 16.12.2007
Блин, я серёзно! Кто знает, как можно в OpenGL нарисовать фигуры? [Ответ]
p51x 23:01 16.12.2007
например, так:
glBegin(GL_TRIANGLES);
glColor3f(1.0f,0.0f,0.0f); // Красный цвет
glVertex3f( 0.0f, 1.0f, 0.0f); // Вверх
glColor3f(0.0f,1.0f,0.0f); // Зеленный цвет
glVertex3f(-1.0f,-1.0f, 0.0f); // Слева снизу
glColor3f(0.0f,0.0f,1.0f); // Синий цвет
glVertex3f( 1.0f,-1.0f, 0.0f); // Справа снизу
glEnd(); [Ответ]
Kerish 14:07 17.12.2007
Только не загубите идею про эльфов, злодеев и охрану дворца [Ответ]
xxx-men 16:20 17.12.2007
если с делфями дружиш, то могу подкинуть классную надстройку на OGl
может исходник даже найду, ды и к С++ заголовки кажеца были
вот пример(1-9;wasd;+ мышка): DEN.rar

могу для директХ примерчик накатать если надо, ток sdk ставить нада будет(на торенте есть)

Сообщение от Kerish:
Только не загубите идею про эльфов, злодеев и охрану дворца

канешна епть

злодеи грузят эльфов, охрана дворца собирает бабосы с злодеев, а эльфы грабят караваны? так?
Изображения
[Ответ]
sshsecurity 19:12 17.12.2007

Сообщение от :
HDC hDC; // Контекст устройства Windows

Не прётъ .... нада онли ЮНИКС писать ... ((( [Ответ]
DeniSS1 16:00 18.12.2007
sshsecurity, у меня работает. В Microsoft Visual Studio компилировал.
xxx-men, с делфи не дружу, из остальных языков знаю только QBasic и HTML, но вряд ли они здесь пригодятся. По DirectX SDK 9.0 у меня есть целая книга, но он не пашет. Всё установлено, библиотеки подключены, даже компилятор точно такой же - а не пашет! По этому писать будем на OpenGL.
p51x, я говорил про ШАХМАТНЫЕ фигуры. Хотя нет, мы ведь шашки делаем, значит, шашечные. А ткаие, как ты написал, я и сам умею.
[Ответ]
DeniSS1 16:02 18.12.2007
xxx-men, попробовал твой пример: выдаёт ошибку и создаёт следующий лог:
[------0] "eXgine 0.70" log start
[-----17] Input : Keyboard ready
[-----11] Input : Mouse ready
[-----32] Input : Joystick not ready
[------2] Window : Create main window
[------6] OpenGL : init graphics core
[------4] OpenGL : GL_VENDOR : Microsoft Corporation
[------1] OpenGL : GL_RENDERER : GDI Generic
[------1] OpenGL : GL_VERSION : 1.1.0
[------1] OpenGL : MAX_TEX_UNITS : 0
[------1] OpenGL : MAX_TEX_SIZE : 1024
[------2] OpenGL : MAX_ANISOTROPY : 0
[------1] OpenGL : USE_AA_SAMPLES : 0
[------1] OpenGL : Reading extensions
[------1] OpenGL : - WGL_EXT_swap_control : Fail
[------1] OpenGL : - GL_ARB_multitexture : Fail
[------1] OpenGL : - GL_EXT_framebuffer_object : Fail
[------1] OpenGL : - GL_ARB_shading_language : Fail
[------1] OpenGL : - GL_ARB_vertex_buffer_object : Fail
[------3] Texture : Fatal Error "GL_ARB_multitexture"
[----559] Window : Destroy main window
[------1] "eXgine 0.70" log close

Хорошая обработка исключений! (Т.е. ошибок.) [Ответ]
p51x 16:10 18.12.2007
Все работает... что за видео у тебя?
Вот лог:
[------0] "eXgine 0.70" log start
[-----62] Input : Keyboard ready
[-----13] Input : Mouse ready
[-----58] Input : Joystick not ready
[-----20] Window : Create main window
[-----21] OpenGL : init graphics core
[----804] OpenGL : GL_VENDOR : NVIDIA Corporation
[------9] OpenGL : GL_RENDERER : GeForce Go 7400/PCI/SSE2
[-----11] OpenGL : GL_VERSION : 2.0.1
[-----23] OpenGL : MAX_TEX_UNITS : 4
[-----10] OpenGL : MAX_TEX_SIZE : 4096
[-----11] OpenGL : MAX_ANISOTROPY : 16
[-----22] OpenGL : USE_AA_SAMPLES : 0
[-----12] OpenGL : Reading extensions
[-----11] OpenGL : - WGL_EXT_swap_control : Ok
[-----11] OpenGL : - GL_ARB_multitexture : Ok
[-----11] OpenGL : - GL_EXT_framebuffer_object : Ok
[-----58] OpenGL : - GL_ARB_shading_language : Ok
[-----31] OpenGL : - GL_ARB_vertex_buffer_object : Ok
[----186] Texture : Create #2 *Font_FixedSys_0*
[----120] Sound : DirectSound Initialized
[----102] Engine : Main Loop start
[---4902] Engine : Main Loop stop
[-----34] Texture : Unload #2 *Font_FixedSys_0*
[-----36] Window : Destroy main window
[-----31] "eXgine 0.70" log close [Ответ]
p51x 16:13 18.12.2007

Сообщение от DeniSS1:
но он не пашет

по конкретней можно? [Ответ]
DeniSS1 17:16 18.12.2007
p51x, при запуске выдаёт can't initialize [Ответ]
Pengvin 17:57 18.12.2007
дрова не установлены на видюшку

Сообщение от :
[------4] OpenGL : GL_VENDOR : Microsoft Corporation
[------1] OpenGL : GL_RENDERER : GDI Generic

Если знаешь C++, я думаю с C# проблем не возникнет. Можешь попробовать XNA game Studio. Мелкософт постарались, сделали считай, какой-то геймкреатор и даже оптимизировали управляемый код. Только все же дровишки родные на видюшку поставь. [Ответ]
Amur 20:19 19.12.2007
Читал и плакал.
МегареспЭкт xxx-men, The_God и AIM-9M.
Пацаны это гиблое дело. Сам парюсь уже пол года, а анимации, сценариев и шейдеров еще и в помине нет.
Может я конешно и чайник, но я 2-ой месяц бадаюсь только с одним интерфейсом и до сих пор так и не реализовал скроллинг(хотя с точки зрения логики он делается элементарно, но каждая лишняя переменная в классе интерфейса для меня как серпом по...).
И чуствую что проепусь я еще до лета и один хрен это будет не двиг а хлам. И пишу его для для накопленя экспиринса. [Ответ]
DeniSS1 20:26 19.12.2007
Amur, за первые 2 строки - +1! Но мы-то делаем шахматы! Так что всё будет путём. [Ответ]
DeniSS1 20:34 19.12.2007
Есть вопросы: 1) Как сделать текстуру на всё окно? 2) Как установить цвет на всё окно?
Всё - в OpenGL. Трафика нет, помогите. [Ответ]
Страница 3 из 13
< 123 456789 > Последняя »
Вверх