fle game engine - движок для создания игр
fle game engine - движок для создания игр


Balls and holes PC game / Balls and Holes PC игра
Вакансии
Игродельня
Сегодня
25 апреля 2017
19:32
Вход Регистрация Забыли пароль ?

megainformatic - Приключения Кости Коробкина - В гостях у тёти Светы часть 1 - интерактивный комикс
Приключения Кости Коробкина - В гостях у тёти Светы часть 1 - интерактивный комикс (kk_as)
подробнее...

Теги

создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт

Статьи сайта

megainformatic - Веселый Буквоежка - онлайн комикс - страница 14

megainformatic - Веселый Буквоежка - онлайн комикс - страница 15

megainformatic - Веселый Буквоежка - онлайн комикс - страница 16

megainformatic - Веселый Буквоежка - онлайн комикс - страница 17

megainformatic - Веселый Буквоежка - онлайн комикс - страница 18

megainformatic - Веселый Буквоежка - онлайн комикс - страница 19

megainformatic - Веселый Буквоежка - онлайн комикс - страница 20

megainformatic - Веселый Буквоежка - онлайн комикс - страница 21

megainformatic - Веселый Буквоежка - онлайн комикс - страница 22

megainformatic - Веселый Буквоежка - онлайн комикс - страница 23

megainformatic - Эмулятор ZX-Spectrum, БК-0010.01 и их работа в эмуляторе DosBox 0.74

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 1

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 2

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 3

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 4

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 5

megainformatic - первый независимый онлайн-журнал комиксов ККК Костя Коробкин Комикс номер 1 март 2016

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 6

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 7

megainformatic - Эмулятор БК-0010.01 версия 2.6 для Windows 9x/Me/2000/XP автор Юрий Калмыков 2002 год

megainformatic - api получения готового решения для решения различных задач возникающих при создании сайта

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 8

роман Eternity Вечность - автор Синицин Андрей megainformatic

роман Eternity Вечность - автор Синицин Андрей megainformatic - страница 2

роман Eternity Вечность - автор Синицин Андрей megainformatic - страница 3

роман Eternity Вечность - автор Синицин Андрей megainformatic - Windows Sockets 2, ping, Windows SDK 7, чем открыть hxs файл - страница 4

megainformatic - Размещение Вашей рекламы на нашем сайте

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 9

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 10

роман Eternity Вечность - автор Синицин Андрей megainformatic - В чём отличие в применении символов & и * в языке c++ ? также продолжаем изучать Windows Sockets 2 и пример simple - страница 5

megainformatic - Костя Коробкин - В гостях у тёти Светы часть 2 Живые машины (kk as) - онлайн комикс - страница 11

megainformatic - игра Шарики на лифте Серия 1 Разгони Лифт / Balls on Lift Level 1 Run The Lift версия 0.9.2 05.10.2016 / version 0.9.2 05.10.2016

megainformatic - Костя Коробкин - В гостях у тёти Светы часть 2 Живые машины (kk as) - онлайн комикс - страница 12

роман Eternity - страница 6 + решение по анимации закрывающихся дверей лифта

megainformatic - Сообщить об ошибке

Balls on Lift Table of Records / Шарики на лифте Таблица рекордов

megainformatic - Костя Коробкин - В гостях у тёти Светы часть 2 Живые машины (kk as) - онлайн комикс - страница 13

Balls on Lift / Шарики на лифте - Как создать игру - серия уроков - Рисуем шарик / How make the game - series of lessons - draw ball

Balls on Lift / Шарики на лифте - Как создать игру - серия уроков - Содержание / How make the game - series of lessons - Index

Balls on Lift / Шарики на лифте - Как создать игру - серия уроков - Разные шарики / How make the game - series of lessons - Different balls

Balls on Lift / Шарики на лифте - Как создать игру - серия уроков - Анимация прыжков шарика / How make the game - series of lessons - Animation ball jumps

Balls on Lift / Шарики на лифте - Как создать игру - серия уроков - Создание фона заднего плана / How make the game - series of lessons - Creating background for back plane

Balls on Lift / Шарики на лифте - Как создать игру - серия уроков - Вставка созданной графики, звуков и музыки в игру - Inserting created graphics, sounds and music in the game.

Balls on Lift / Шарики на лифте + Как создать игру - бесплатная игра + комплект уроков о том, как создавать контент для игры - спрайты, фоны, звуки, музыку, и вставить его в игру - How to create a game - free game + package of lessons on how to create content for the game - sprites, backgrounds, sounds, music, and insert it into the game

Balls on Lift / Шарики на лифте + Как создать игру - бесплатная игра + комплект уроков о том, как создавать контент для игры - спрайты, фоны, звуки, музыку, и вставить его в игру - How to create a game - free game + package of lessons on how to create content for the game - sprites, backgrounds, sounds, music, and insert it into the game

Развитие проекта fle game engine

Бинарная философия / Binary Philosofy

megainformatic - Костя Коробкин - В гостях у тёти Светы часть 2 Живые машины (kk as) - онлайн комикс - страница 14

Вакансии

Коллекция php скриптов

megainformatic - Костя Коробкин - В гостях у тёти Светы часть 2 Живые машины (kk as) - онлайн комикс - страница 15

megainformatic - Приключения Кости Коробкина - В гостях у тёти Светы часть 1 - интерактивный комикс

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс

fle game generator - fle генератор игр - fly snow 3d падающий снег - расширяемый генератор визуальных образов, с музыкой mp3, ogg и генерацией игр

fle game generator - fle генератор игр - fly snow 3d падающий снег - расширяемый генератор визуальных образов, с музыкой mp3, ogg и генерацией игр

megainformatic - Костя Коробкин - В гостях у тёти Светы часть 2 Живые машины (kk as) - онлайн комикс - страница 16

     
  Веселый Буквоежка - игра  
     
 

Как создать игру ? - Программируем сами.

Рассмотрение программирования игр под DirectX 9c на C++ с использованием среды разработки MSVS 2005 или выше.

 
     
  [содержание] [назад] [страница 3] [далее]  
     
  Введение в 2d-игры - D3DApp - Внедряем простейшее d3d-приложение  
     
  В предыдущем уроке Мы с Вами создали простейшую игровую оболочку, которая выполняет запуск игры или показ веб-страничек <Купить> или <Еще игр>, подразумевая приобретение полной версии игры или показ других проектов.  
     
  Я надеюсь, что Вы нашли ответ на все свои вопросы, а предложенный метод решения у Вас привел к положительному результату. Если вопросы еще остались - советую практиковаться или задавать вопросы на нашем форуме и по e-mail (см. внизу данной страницы)  
     
  В данном уроке, как я и обещал, мы приступим к созданию основы будущей нашей игры Веселый Буквоежка. По сути игра уже готова - Вам полностью доступен для покупки ПОЛНЫЙ ИСХОДНЫЙ КОД игры ВЕСЕЛЫЙ БУКВОЕЖКА за символическую плату - 200 рублей.  
     
 
 
     
 

Данный и последующий уроки позволят Вам понять смысл работы исходного кода игры Веселый Буквоежка, предоставят дополнительные сведения не только как модифицировать этот код, но и создать на основе него нечто своё, а в дальнейшем полученные знания позволят Вам создать любой игровой проект.

Как я уже упоминал, сейчас мы займемся рассмотрением реализации функции StartD3DApp.

 
     
  Здесь и далее я буду подразумевать, что наш проект называется Fle, если не указано иное. В соответствии с этим условием будут называться и многие связанные с проектом файлы. Вы вольны назвать собственный проект как угодно - учитывайте только, что вместо Fle нужно подставлять имя Вашего собственного проекта.  
     
  Пока что наше приложение обходилось без использования DirectX-кода. Теперь мы рассмотрим как внедрить код DirectX.  
     
 

1) Откройте настройки проекта - Project > Fle Properties и в разделе

Configuration Properties > C/C++ > General

в поле Additional Include Directories

пропишите пути к следующим папкам -

 

 
     
  ..\..\..\..\..\Include\;
common\DXUT\Core;
common\DXUT\Optional;
common;
common\DMusic;
game_common;
fmod4_api\inc;
fmod4_api\src;
common\DSound
 
     
  заметьте, что здесь указаны относительные пути, т. е. папка Include представляет папку с заголовочными файлами из DirectX SDK и расположена на пять папок выше относительно текущей папки проекта Fle. Остальные папки должны находиться внутри папки проекта Fle. Их содержимое находится в ПОЛНОМ ИСХОДНОМ КОДЕ игры Веселый Единственный Буквоежка, который Вы можете приобрести.  
     
 

Configuration Properties > Linker > General

в поле Additional Library Directories

..\..\..\..\..\Lib\x86;

fmod4_api\lib

 
     
 

Configuration Properties > Linker > Input

в поле Additional Dependencies

для конфигурации Debug

dxerr.lib dxguid.lib d3dx9d.lib d3d9.lib comctl32.lib dsound.lib shlwapi.lib dinput8.lib winmm.lib fmodexL_vc.lib

для конфигурации Release

dxerr.lib dxguid.lib d3dx9.lib d3d9.lib comctl32.lib winmm.lib dsound.lib shlwapi.lib dinput8.lib fmodex_vc.lib

 
     
  Сохраните эти изменения используя кнопку Save All на стандартной панели инструментов.  
     
  2) Вам постепенно будут требоваться для работы те или иные файлы из ПОЛНОГО ИСХОДНОГО КОДА игры Веселый Единственный Буквоежка, поэтому подумайте о его приобретении, либо Вам придется создавать собственные аналоги, правда зато Вы сможете сделать это совершенно бесплатно.  
     
  Для начала попробуем внедрить в наше приложение код, аналогичный уроку Самый первый шаг, т. е. при нажатии кнопки <Играть> в окне нашей игровой оболочки будет выполняться создание окна и заполнение его рабочей области одним цветом средствами DirectX, а далее мы будем постепенно наращивать этот потенциал.  
     
 

В файле Fle.h добавляем следующие строки кода -

#include <d3d9.h>
#include <d3dx9.h>

//название приложения
#define GameAppName L"Веселый Буквоежка"

INT StartD3DApp();

 

 
     
 

В файле Fle.сpp -

#include "DXUT.h"
#include "SDKmisc.h"

void RenderText();
void InitD3DApp();
void FreeD3DApp();

В методе BOOL CFleApp::InitInstance()

после строки

CWinApp::InitInstance();

изменить -

SetRegistryKey(_T("Fle game"));

код после строк -

CFleDlg dlg;
m_pMainWnd = &dlg;

изменить на -

InitD3DApp();

INT_PTR nResponse = dlg.DoModal();

FreeD3DApp();

return FALSE;

создать реализацию для следующих функций -

 
     
  void InitD3DApp()
{

GetModuleFileName(NULL, AppRootDir, AppRootDirSize);
PathRemoveFileSpec(AppRootDir);

}

void FreeD3DApp()
{

}

void RenderText()
{

// Вспомогательный объект хранит расположение текста и цвет,
// он вызывает метод pFont->DrawText( m_pSprite, strMsg, -1, &rc, DT_NOCLIP, m_clr );
// Если передан NULL в качестве m_pSprite, он будет работать, однако
// метод pFont->DrawText() не будет обработан совместно с методом вывода. Обработка // дополнительных вызовов снижает производительность.

CDXUTTextHelper txtHelper( g_pFont, g_pTextSprite, 10 );

// вывод статистики
txtHelper.Begin();


txtHelper.SetInsertionPos( 4, 0 );
txtHelper.SetForegroundColor( 0xFF0000FF );
txtHelper.DrawTextLine( DXUTGetFrameStats( true ) );

txtHelper.End();
}

 
     
 

//--------------------------------------------------------------------------------------

// Отклонение любых D3D9 устройств не подтвержденных приложением возвратом

// значения false
//--------------------------------------------------------------------------------------

bool CALLBACK IsD3D9DeviceAcceptable( D3DCAPS9* pCaps, D3DFORMAT AdapterFormat, D3DFORMAT BackBufferFormat,
bool bWindowed, void* pUserContext )
{
// обычно исключаем устройства не поддерживающие alpha blending
IDirect3D9* pD3D = DXUTGetD3D9Object();
if( FAILED( pD3D->CheckDeviceFormat( pCaps->AdapterOrdinal, pCaps->DeviceType,
AdapterFormat, D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING,
D3DRTYPE_TEXTURE, BackBufferFormat ) ) )
return false;

// требуется поддержка текстур формата A8R8G8B8
if( FAILED( pD3D->CheckDeviceFormat( pCaps->AdapterOrdinal, pCaps->DeviceType,
AdapterFormat, 0,
D3DRTYPE_TEXTURE, D3DFMT_A8R8G8B8 ) ) )
return false;

return true;
}

 
     
  //--------------------------------------------------------------------------------------
// Модифицировать настройки d3d device до его создания - true
//--------------------------------------------------------------------------------------

bool CALLBACK ModifyDeviceSettings( DXUTDeviceSettings* pDeviceSettings, void* pUserContext )
{
return true;
}
 
     
  //--------------------------------------------------------------------------------------
// создавайте здесь любые D3D9 ресурсы, которые будут существовать до выполнения // // сброса устройства (D3DPOOL_MANAGED)
// и не привязанные к размерам буфера заднего плана
//--------------------------------------------------------------------------------------

HRESULT CALLBACK OnD3D9CreateDevice( IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc,
void* pUserContext )
{
HRESULT hr;

V_RETURN( D3DXCreateFont( DXUTGetD3D9Device(), 12, 0, 0, 1, FALSE, DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE,
L"MS Sans Serif ", &g_pFont ) );

return S_OK;
}

 
     
  //--------------------------------------------------------------------------------------
// Создавайте здесь любые D3D9 ресурсы которые не существуют во время сброса // // // устройства (D3DPOOL_DEFAULT)
// или привязанные к размеру буфера заднего плана
//--------------------------------------------------------------------------------------

HRESULT CALLBACK OnD3D9ResetDevice( IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc,
void* pUserContext )
{
HRESULT hr;

if( g_pFont )
V_RETURN( g_pFont->OnResetDevice() );

V_RETURN( D3DXCreateSprite( pd3dDevice, &g_pTextSprite ) );

// reset the timer

return S_OK;
}

 
     
  //--------------------------------------------------------------------------------------
// Обработка изменений сцены. Вызывается в соответствии с тем какой D3D API // // // // // используется
//--------------------------------------------------------------------------------------

void CALLBACK OnFrameMove( double fTime, float fElapsedTime, void* pUserContext )
{

}
 
 
     
  //--------------------------------------------------------------------------------------
// Вывод сцены с использованием устройства D3D9
//--------------------------------------------------------------------------------------

void CALLBACK OnD3D9FrameRender( IDirect3DDevice9* pd3dDevice, double fTime, float fElapsedTime, void* pUserContext )
{
HRESULT hr;


// очистка места вывода и z-буфера
V( pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, g_dwClearColor,
1.0f, 0 ) );

// вывод сцены
if( SUCCEEDED( pd3dDevice->BeginScene() ) )
{

RenderText();

V( pd3dDevice->EndScene() );
}
}

 
     
 

//--------------------------------------------------------------------------------------
// обработка сообщений направленных нашему приложению
//--------------------------------------------------------------------------------------

LRESULT CALLBACK MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam,
bool* pbNoFurtherProcessing, void* pUserContext )
{

// тут пока ничего не нужно

return 0;
}

 
     
  //--------------------------------------------------------------------------------------
// Освобождение D3D9 ресурсов созданных в методе OnD3D9ResetDevice
//--------------------------------------------------------------------------------------

void CALLBACK OnD3D9LostDevice( void* pUserContext )
{

if( g_pFont )
g_pFont->OnLostDevice();

SAFE_RELEASE( g_pTextSprite );
}

 
     
  //--------------------------------------------------------------------------------------
// Освобождение D3D9 ресурсов созданных в методе OnD3D9CreateDevice
//--------------------------------------------------------------------------------------

void CALLBACK OnD3D9DestroyDevice( void* pUserContext )
{

SAFE_RELEASE( g_pFont );


}

 
     
  //--------------------------------------------------------------------------------------
// Инициализировать всё и перейти в цикл отрисовки
//--------------------------------------------------------------------------------------

INT StartD3DApp()
{
// Включить проверку памяти времени выполнения для отладочной конфигурации.

#if defined(DEBUG) | defined(_DEBUG)
_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
#endif

// Настроить функции обратного вызова
DXUTSetCallbackD3D9DeviceAcceptable( IsD3D9DeviceAcceptable );
DXUTSetCallbackD3D9DeviceCreated( OnD3D9CreateDevice );
DXUTSetCallbackD3D9DeviceReset( OnD3D9ResetDevice );
DXUTSetCallbackD3D9FrameRender( OnD3D9FrameRender );
DXUTSetCallbackD3D9DeviceLost( OnD3D9LostDevice );
DXUTSetCallbackD3D9DeviceDestroyed( OnD3D9DestroyDevice );
DXUTSetCallbackDeviceChanging( ModifyDeviceSettings );
DXUTSetCallbackMsgProc( MsgProc );
DXUTSetCallbackFrameMove( OnFrameMove );

// Задачи на будущее: Выполнять любые инициализации уровня приложения здесь

// Инициализировать DXUT и создать желаемое Win32 окно и Direct3D устройство для // // // приложения
DXUTInit( true, true ); // Обрабатывать параметры коммандной строки и показывать окна сообщений
DXUTSetHotkeyHandling( true, false, false ); // обрабатывать горячие клавиши по-умолчанию
DXUTSetCursorSettings( true, true ); // Отображать курсор и ограничивать его границы в полноэкранном режиме

HRESULT hr;
hr = DXUTCreateWindow( GameAppName ); // Создаем окно DirectX-приложения

SetWindowLong( DXUTGetHWND(), GWL_STYLE,
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX); // Указываем // // // // некоторые дополнительные параметры окна - запрет кнопки разворачивания окна во // // весь экран

hr = DXUTCreateDevice( true, 800, 600 ); // создаем d3d-устройство, в оконном режиме, // // рабочая область 800х600 пикселей

// запуск цикла отрисовки
DXUTMainLoop();

// Задачи на будущее: Выполнять любую очистку уровня приложения здесь

return DXUTGetExitCode();

}

 
     
 

Замечу, что код, приведенный здесь не структурирован. Так мне его было проще показать здесь. В реальном своем коде вместо например такого кода -

//--------------------------------------------------------------------------------------
// Освобождение D3D9 ресурсов созданных в методе OnD3D9ResetDevice
//--------------------------------------------------------------------------------------

void CALLBACK OnD3D9LostDevice( void* pUserContext )
{

if( g_pFont )
g_pFont->OnLostDevice();

SAFE_RELEASE( g_pTextSprite );
}

 
     
  Запишите Этот же код в структурированном виде удобном для чтения -  
     
  Этот же код в структурированном виде удобном для чтения должен выглядеть так -  
     
 

После того, как наберете этот код попробуйте выполнить сборку приложения.

Что еще нужно сделать, чтобы устранить ошибки компиляции -

1) Настроить проект для использования заголовочных и библиотечных файлов DirectX - мы это рассматривали еще в самом первом уроке

2) Подключить библиотеку DXUT - по аналогии с тем, как Вы подключали файлы openwebpage.h и .cpp из папки common - см. страницу 2

 

 
     
 

3) Добавить недостающие переменные - записать их в самом начале файла Fle.cpp после строк

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

следующий код -

ID3DXFont* g_pFont = NULL; // шрифт для вывода текста
ID3DXSprite* g_pTextSprite = NULL; // спрайт для обработки вызовов вывода текста
DWORD g_dwClearColor = 0xFF000000; // цвет для заполнения рабочей области окна

 
     
 

4) В файле FleDlg.cpp в методе void CFle2Dlg::OnLButtonUp(UINT nFlags, CPoint point)

строку кода

//StartD3DApp();

исправить на

StartD3DApp();

 
     
  Теперь при нажатии на кнопку <Играть> в окне оболочки, создается окно размером 804х622, заполненное черным и выводящее в левом верхнем углу статистику по FPS.  
     
  при нажатии на кнопку <Играть> в окне оболочки, создается окно размером 804х622, заполненное черным и выводящее в левом верхнем углу статистику по FPS  
     
  Я надеюсь, что Вы разобрались и у Вас всё получилось. Если нет - задавайте вопросы или перепроверьте все свои действия.  
     
  А теперь двинемся дальше - в следующем уроке мы рассмотрим как вывести начальную заставку для Вашей игры.  
     
     
  [содержание] [назад] [страница 3] [далее]  
     
 

Оставленные комментарии



fle game engine - движок для создания игр
fle game engine - движок для создания игр


Something: Unexplained 2 captive of desires / Нечто: Необъяснимое 2 в плену желаний
Костя Коробкин Комикс Коллекционное издание - 6 комиксов, 81 страница, 220 mp3 треков
визиты
сегодня: 1881
всего: 24445
посетители
сегодня: 272
всего: 19526
Время загрузки: 0,1852