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


Balls and holes PC game / Balls and Holes PC игра
Вакансии
Игродельня
Сегодня
21 марта 2019 14:52
Вход Регистрация Забыли пароль ?

megainformatic - Приключения Кости Коробкина - Как я провел лето - интерактивный комикс
Приключения Кости Коробкина - Как я провел лето - интерактивный комикс (akk hiss)
подробнее...

Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт
Статьи сайта
megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 3

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 4

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 5

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 6

Система управления сайтом - megainformatic cms e-shop

Система управления сайтом - megainformatic cms e-shop

Система управления сайтом - megainformatic cms e-shop

megainformatic - Уроки 3ds max - Введение в 3ds max

megainformatic - ГАЛЕРЕЯ 3D-моделей

megainformatic - СОЗДАНИЕ МАКЕТА ПОМЕЩЕНИЯ

megainformatic - Создание макета помещения - этап 2

megainformatic - МОДЕЛИРОВАНИЕ НА УРОВНЕ МНОГОУГОЛЬНИКОВ

megainformatic - СОЗДАНИЕ ПРЕДМЕТОВ ОБСТАНОВКИ ПОМЕЩЕНИЯ

megainformatic - Моделирование обстановки помещения

megainformatic - Создание модели автомобиля

megainformatic - Создание текстурной развертки для модели автомобиля

megainformatic - Создание анимации вращающихся колес автомобиля

megainformatic - игра Нечто: Необъяснимое и в плену желаний

megainformatic - Основы 3D-анимации, экспорт скелетной анимации

megainformatic - Подготовка модели к использованию скелетной анимации

megainformatic - Продолжаем Создание скелета для данной модели

megainformatic - Построение ирерархических связей между объектами и основы 3d анимирования

megainformatic - Особенности экспорта моделей и анимации экспортером kWXPort080719 из 3ds max 2009 

megainformatic - Создание модели броневика (Хэд)

megainformatic cms e-mailer

megainformatic cms e-mailer

megainformatic cms e-mailer

Бесплатная Система Управления Вашим Сайтом - megainformatic cms free

megainformatic - Путешествие в мир 3d

megainformatic - Путешествие в мир 3d - страница 2

megainformatic - Путешествие в мир 3d - страница 3

megainformatic - Путешествие в мир 3d - страница 4

megainformatic - Путешествие в мир 3d - страница 5

megainformatic - Путешествие в мир 3d - страница 6

megainformatic - Создание модели броневика (Хэд) - Анимация вращения колес

megainformatic cms express files

megainformatic cms express files

megainformatic cms express files

megainformatic - Уроки Photoshop - Чудеса

megainformatic cms express files - Развертывание сайта на Вашем хостинге

megainformatic - Настольная игра "Веселый Буквоежка"

megainformatic - Уроки delphi directx 8.1

megainformatic - Уроки delphi directx 8.1 - Урок 1 - Введение в Delphi DirectX 8.1. Создание шаблона стартового приложения.

megainformatic - Уроки delphi directx 8.1 - Урок 1 - Введение в Delphi DirectX 8.1. Создание шаблона стартового приложения. Страница 2

megainformatic - Урок 2 Создаем и обрабатываем команды меню.

megainformatic - Урок 2 Создаем и обрабатываем команды меню. Страница 2

megainformatic - Урок 3 Оконный и полноэкранный режимы работы D3D-приложения. Управление игрой средствами DirectInput8

megainformatic - Урок 3 Оконный и полноэкранный режимы работы D3D-приложения. Управление игрой средствами DirectInput8 - Страница 2

megainformatic - Урок 3 Оконный и полноэкранный режимы работы D3D-приложения. Управление игрой средствами DirectInput8 - Страница 3

megainformatic - Урок 4 Построение класса приложения

megainformatic - Урок 4 Построение класса приложения - Страница 2

megainformatic - Урок 5 Построение классов игровых объектов и других необходимых классов

megainformatic - Урок 5 Построение классов игровых объектов и других необходимых классов - Страница 2

megainformatic - Урок 6 Игровая логика

megainformatic - Заметки по joomla - JFolder::create: Path not in open_basedir paths. Что это?

megainformatic cms express files - Добавление статей на сайт под управлением megainfromatic cms express files

подробнее

Новогодняя дискотека 2013 на megainformatic точка ru

Ведущий: cj andy;

dj andy 1998 - 2002

ВНИМАНИЕ! При прослушивании композиций после нажатия вами кнопки воспроизведения может возникать небольшая задержка в несколько секунд, связанная с загрузкой файла композиции в Ваш браузер. Поэтому просто наберитесь терпения и немножко подождите. Сразу же после этого Вы услышите музыку :)


  Вступление - Дорогие друзья, Мы начинаем нашу новогоднюю вечеринку 2013. Ура !!! 31 декабря 2012  
     
     
 
 
     
     
     
     
  Композиция фри-стайлинг версия от 6 января 2013  
     
     
 
 
     
     
     
     
  Новогодняя - Новый год стучится в двери, он уже на полпути, в сказку, в чудо все мы верим, вместе нам вперед идти! 31 декабря 2011  
     
     
 
 
     
     
     
     
  kristmas - рождество - 4:02 - 8 января 2001 г - композиция посвященная рождеству (electro house)  
     
     
 
 
     
     
     
     
  Different Reality - Scooter  
     
     
 
 
     
     
     
     
  Стремление (aspiring) - 3:34 - 14 декабря 2012 electro :) Стремление вперед ... А вообще я щас заметил, что aspiring - это же аспирин :))) Таблетка аспирина так сказать :))) Но вообще композиция получилась немного "тяжелая" и "перегруженная", и всё же надеюсь вам она понравится.  
     
     
 
 
     
     
     
     
  Герои наших дискотек - Белый, Марат и Ник из фильма Даже Не думай. Марат встречает Машу на Дискотеке, 2002 г. Веселимся под их музыку !!!  
     
     
 
 
     
     
     
     
  Кшиштоф Радомски, Above the Zenith  
     
     
 
 
     
     
     
     
  Веселая мелодия из м/ф Планета 51, 2009 г.  
     
     
 
 
     
     
     
     
  Марк Вера - Композиция на тему игры Laser Squad  
     
     
 
 
     
     
     
     
  Морозное утро (Frosty morning) - 2:35 - 3-5 февраля 2012  
     
     
 
 
     
     
     
     
  Песенка Сильвера - Лучше быть одноногим, чем быть ... одиноким из м/ф Остров Сокровищ, 1988 г.  
     
     
 
 
     
     
     
     




другие композиции

подробнее

Моё портфолио выполненных проектов сайтов и приложений



посмотреть портфолио в виде списка

для просмотра изображений в увеличенном виде кликните по одному из них.


адаптация шаблона для сайта про незамерзающую жидкость
разработка сайта под ключ http://m-dacha.ru/
дизайн шаблона, верстка интеграция
различные доработки функционала и контента http://smokoff.ru
контент-менеджмент mospf.ru
перенос сайта с самописной cms на joomla - http://my-english.org/
верстка http://bomond.by/
доработки функционала http://lider-in.ru/
сайт под ключ - http://continentalsingles.com
подключение системы рассылки megainformatic cms emailer - http://allcarport.ru/
внедрение карусели - http://www.flexyheat.ru/
http://blagoustroy.ru/ (редизайн и верстка)
http://odevaembebikov.ru/ (верстка, доработка функционала)
http://hino-samara.ru/ (доработка функционала, контент-менеджмент)
http://lr-zp.ru/ (подключение Робокассы)
доработки функционала http://imidzh-studiya.com/
http://technopro-3000.ru/ (сайт под ключ)
http://el-kalyan.ru/ (сайт под ключ)
http://petline.ru/ (верстка, интеграция в движок)
http://casino-zodiac.org/ (подключение платежной системы free-kassa.ru, интеграция в движок сайта, редизайн, верстка, мелкие доработки)
http://iwo-tech.ru/ (доработки, контент-менеджмент)
http://minilance.ru/ (подключение платежной системы РОБОКАССА)
http://kosmetologvmoskve.ru/ (исправлена ошибка в верстке вывода комментариев)
http://megainformatic.ru/webprojects/groupon/ (сайт коллективных покупок с нуля под ключ на базе megainformatic cms)
http://jado74.ru/ (сайт под ключ)
http://megainformatic.ru/webprojects_cms/ekstm/ (сайт под ключ)
подробнее

   
  [Пример игры Donuts3D]  
     
 
Основы работы в Microsoft Visual Studio 2008 и DirectX 9 (DX SDK Aug 2008)
 
     
 

Данный набор уроков является введением в программирование игр на C++ для DirectX 9

Вам нужно иметь установленную среду Microsoft Visual Studio 2005 или 2008 (можно триал),

и DirectX SDK 9 версии, или лучше самой последней - DirectX SDK August 2008.

 
     
 

Введение в программирование игр на С++ для платформы DirectX 9. Первый старт - описывается как настроить примеры из DX SDK Aug 2008 для корректной сборки в MSVS 2008

 
     
  Меняем иконку приложения - описывается как создать для приложения большую 48х48 полноцветную (24 бит) иконку  
       
  Добавляем другую модель - как изменить код для использования другой модели, особенности экспорта моделей из 3ds max 7, 3ds max 2009  
       
  Программирование игр в directx, написание самого первого приложения на C++ Hello, World! - пишем самое самое первое приложение на C++    
       
  Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008 - пишем первое приложение с использованием Windows Forms - простейший калькулятор. Пример позволит сделать следующий шаг в изучении MSVS 2008 и основ программирования .NET Framework. Вы увидите, что работа с Windows Forms чем-то напоминает работу в Delphi 7 с тем лишь отличием, что вместо delphi применяется C++  
       
  Урок 1 Основные операторы языка C++ - использование основных операторов языка: метки, выражения, пустой оператор, логические скобки, ветвления, циклы, передача управления    
       
  Урок 1 Основные операторы языка C++ (часть 2) - объявление переменных, обработка исключений    
       
  Урок 2 Написание Win32-приложений. Обзор стартового кода Win32-приложения. Добавление ресурса текстовая строка - несколько слов о структуре стартового Win32-приложения и принципов его работы, методы создания ресурсов приложения на примере добавления ресурса "строка текста".    
       
  Урок 3 Создание Win32-приложений. Создание меню и простых диалоговых окон - кратко описывается как создать меню, простой диалог и где посмотреть код для их использования    
       
  Урок 4 Создание Win32-приложений. Стандартные диалоги. Изучение сопутствующих конструкций языка. Консольные Win32-приложения. Указатели. Ссылочный тип. Массивы - информация о разделах справочной системы посвященных стандартным (общим) диалогам, комментарии примеров работы с указателями (pointer), ссылками (reference) и массивами    
       
 

Урок 4 часть 2 Win32. Диалог выбора цвета, смена цвета фона окна приложения - показан код, для смены цвета фона окна приложения путем выбора цвета из диалога выбора цвета (Color Dialog)

   
       
  Урок 5 Написание приложения DirectX9c + MFC в среде MSVS 2005 - предложен простейший способ совместного использования DirectX9c WinAPI и MFC. Не это ли нужно тому кто пишет свои игры для directx, а именно - всё богатство классов MFC под рукой ! Урок 5 Написание приложения DirectX9c + MFC в среде MSVS 2005  
подробнее

     
 

Видео урок посвященный созданию игры Ну, Погоди ! - рождение игры часть 3.

Покажет Вам простейшую элементарную игру и особенности её создания в delphi 7 на directx 8.1 api.

 
     
 
Урок 3 Оконный и полноэкранный режимы работы D3D-приложения. Управление игрой средствами DirectInput8
 
О том, что потребуется для данного урока читайте в основном разделе - уроки delphi directx 8.1
 
Далее у читателя подразумевается наличие базовых знаний языка Delphi.
 
[назад] [страница 1] [далее] [к содержанию]
 
 
 

Оконный и полноэкранный режимы работы имеются во всех современных играх написанных и в OpenGL и в DirectX.

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

Оконный режим подходит для небольших, казуальных игр, использующих немного ресурсов и не требующих максимального быстродействия. Однако имейте в виду, что оконный режим - это режим главным образом предназначенный для отладочных целей. Максимально достижимое быстродействие достигается ТОЛЬКО в полноэкранном режиме. Но этот режим не подходит для отладочных целей, т.к. в нём невозможно поймать и отследить все ошибки, кроме того, при некоторых особо фатальных ошибках возврат из этого режима вообще может оказаться невозможным без перезагрузки компьютера.

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

Если Вам ясен весь материал, изложенный в 2х предыдущих уроках, то в общих чертах работа D3D-приложения в оконном режиме Вам тоже должна быть понятна.

Размер рабочей области окна D3D в оконном режиме определяется размерами того окна, чей обработчик (Handle) задан при передаче параметров во время создания объекта IDirect3DDevice8

В этом легко убедиться заглянув в код методов TD3DGameApp.Create_ и TD3DGameApp.CreateDisplayObjects

 
Поэтому далее мы рассмотрим лишь код и особенности, которые необходимо учитывать при включении полноэкранного режима D3D-приложения и при переключениях между полноэкранным/оконным режимами.
 
Если взять в качестве основы проект, который мы создали в предыдущем уроке, то вот код, который необходимо добавить в модуль главной формы (MainForm) этого проекта для переключения приложения в полноэкранный режим.
 

Прежде всего нужно предусмотреть пункт меню или клавиши, которые будут использоваться Вашим D3D-приложением для переключений между оконным/полноэкранными режимами.

В случае оконного режима это может быть обычный пункт меню TMainMenu. В полноэкранном режиме ситуация несколько сложнее - в этом режиме главное меню окна не отображается, именно поэтому для выхода из полноэкранного режима нужно использовать какую-либо клавишу (комбинацию клавиш), причем обрабатываемую средствами DirectInput, можно также использовать игровое меню, реализуемое средствами Direct3D без использования TMainMenu.

О том, как создать и использовать такое меню описано в статье - Создание игрового меню

 
Необходимо кратко познакомиться со средствами управления игрой через интерфейс DirectInput, т.к. это понадобится Вам в дальнейшем и сейчас - для обработки переключений между полноэкранным/оконными режимами.
 

Не вдаваясь в подробности документации по DirectX, которую Вы, надеюсь, найдете и изучите самостоятельно по мере необходимости, DirectInput8 - это более скоростное и эффективное средство опроса устройств ввода - клавиатуры, мыши и других подключаемых устройств (всемозможных джойстиков, рулей и прочего).

Использование DirectInput8 для того, чтобы пользователь мог быстро управлять игрой, а игра быстро реагировать на команды пользователя сводится к следующему -

в пункт uses секции interface нужно подключить модуль DX8_DIUtil8.pas из библиотеки Delphi DirectX 8.1

в этой же секции описать константы, которые будут определять наборы клавиш клавиатуры и мыши задающие те или иные действия игрока в игровом приложении, например

const

ChangeWindowModeKey = isButton1; //константа isButton1 определена в модуле DX8_DIUtil8.pas

в описании класса D3D-приложения (класс TD3DGameApp в нашем случае) добавить поле

m_DXInput: TDXInput; //управление игрой через DirectInput

Также в описании класса нужно добавить несколько новых методов -

// Input functions
procedure SetDefaultDefKeys;
procedure CreateInputObjects;
procedure DestroyInputObjects;
procedure UpdateInput;

 

Далее в секции implementation нужно реализовать код данных методов -

procedure TD3DGameApp.SetDefaultDefKeys;
begin
FCustomKeyAssign := DefineDefaultKeys;
//процедуру DefineDefaultKeys нужно определить как локальную для модуля //главной формы Вашего проекта
end;

в секции интерфейса она записывается как

function DefineDefaultKeys: TKeyAssignList;

а в секции реализации как

function DefineDefaultKeys: TKeyAssignList;
begin
FillChar(Result, SizeOf(Result), 0);

AssignKey(Result, ChangeWindowModeKey, [Ord('W'), VK_F6]); //к данному действию привязываются клавиши W и F6

end;

далее реализуем код оставшихся методов

procedure TD3DGameApp.CreateInputObjects;
begin
SetDefaultDefKeys;
m_DXInput := TDXInput.Create(Self);
end;

procedure TD3DGameApp.DestroyInputObjects;
begin
FreeAndNil(m_DXInput);
end;

procedure TD3DGameApp.UpdateInput;
var
CurrentState: TUserInput;
begin
if not Assigned(m_DXInput) then Exit;

m_DXInput.Update;

if ChangeWindowModeKey in m_DXInput.States then {выполнить нужное действие};

end;

вызов метода CreateInputObjects нужно добавить внутри TD3DGameApp.OneTimeSceneInit

вызов метода DestroyInputObjects нужно добавить внутри TD3DGameApp.FinalCleanup или другом методе освобождения ресурсов, который вызывается из FormDestroy

вызов метода UpdateInput, в котором осуществляется обновление состояния устройств DirectInput и вызов методов обработки тех или иных действий пользователя нужно добавить внутри метода TD3DGameApp.FrameMove

 
Итак, переключение полноэкранного/оконного режимов D3D-приложения будет происходит по действию ChangeWindowModeKey. Данное действие будет вызываться клавишами [W] или [F6]. Можете использовать другие клавиши, если хотите.
 

Остается в строке кода

if ChangeWindowModeKey in m_DXInput.States then {выполнить нужное действие};

комментарий {выполнить нужное действие}

заменить на вызов метода, который бы вызывал фактическое переключение режима приложения из оконного в полноэкранный и обратно.

Таким методом является следующий -

procedure TOptionsMenu.AcceptOptions;
var
ScreenSizeMetric: TScreenSizeMetric;
begin
if g_d3dApp = nil then Exit;
ScreenSizeMetric := GetScreenSize;
if (not g_d3dApp.m_bFullScreen = Windowed) and
(g_d3dApp.m_dwScreenWidth = ScreenSizeMetric.Width) then Exit;

g_d3dApp.SwitchDisplayModes(not Windowed, ScreenSizeMetric.Width,
ScreenSizeMetric.Height);
end;

В данном случае такой метод реализован как метод объекта меню TOptionsMenu и вызывается при подтверждении смены заданных настроек приложения. В данном случае настройки достаточно просты. Проверяется заданное в настройках разрешение экрана и если произошла смена режима оконный/полноэкранный или изменилось заданное разрешение будет вызван метод SwitchDisplayModes объекта g_d3dApp, который является экземпляром класса TD3DGameApp.

В простейшем случае можно рассмотреть реализацию переключений между оконным режимом приложения и полноэкранным режимом с разрешением например 800x600 пикселей и максимальной частотой покадровой развертки поддерживаемой монитором (100 Hz или выше).

Предварительно добавьте данный метод в описание класса TD3DGameApp

function SwitchDisplayModes(bFullScreen: Boolean;
dwWidth, dwHeight: Cardinal): HRESULT;

Затем реализуйте его в коде следующим образом -

function TD3DGameApp.SwitchDisplayModes(bFullScreen: Boolean;
dwWidth, dwHeight: Cardinal): HRESULT;
var
hr: HResult;
begin
if not m_bIsActive or not m_bDisplayReady then begin
result := S_OK;
Exit;
end;

// Check to see if a change was actually requested
if bFullScreen then
begin
if ((m_dwScreenWidth = dwWidth) and (m_dwScreenHeight = dwHeight)) and
(m_bFullScreen = bFullScreen ) then
begin
result := S_OK;
Exit;
end;
end
else
begin
if not m_bFullScreen then begin
result := S_OK;
Exit;
end;
end;

// Invalidate the old display objects
m_bDisplayReady := FALSE;
InvalidateDisplayObjects;

// Set up the new presentation paramters
if bFullScreen then
begin
m_d3dpp.Windowed := FALSE;
m_d3dpp.hDeviceWindow := m_hWndMain;
m_dwScreenWidth := dwWidth;
m_d3dpp.BackBufferWidth := dwWidth;
m_dwScreenHeight := dwHeight;
m_d3dpp.BackBufferHeight := dwHeight;
m_d3dpp.BackBufferFormat := m_d3dfmtFullscreen;
end
else
begin
m_d3dpp.Windowed := TRUE;
m_d3dpp.hDeviceWindow := 0;
m_d3dpp.BackBufferWidth := 0;
m_d3dpp.BackBufferHeight := 0;

m_dwScreenWidth := dwWidth;
m_dwScreenHeight := dwHeight;

m_d3dpp.BackBufferFormat := m_DesktopMode.Format;
end;

// Reset the device
hr := m_pd3dDevice.Reset( m_d3dpp );
if SUCCEEDED(hr) then
begin
m_bFullScreen := bFullScreen;
hr := RestoreDisplayObjects;
if SUCCEEDED(hr) then
begin
m_bDisplayReady := TRUE;
result := S_OK;
Exit;
end;
end;

// If we get here, a fatal error occurred
PostMessage( m_hWndMain, WM_CLOSE, 0, 0 );
result := E_FAIL;
end;

Все недостающие поля, описанные в реализации данного метода необходимо добавить в класс TD3DGameApp и инициализировать их в методе конструктора TD3DGameApp.Create и других необходимых методах, где это понадобится.

Заметьте, что внутри данного метода каждый раз при переключении между полноэкранным/оконным режимами или при смене разрешения полноэкранного режима происходит инвалидация InvalidateDisplayObjects всех зависимых от Direct3DDevice ресурсов, вызывается метод сброса устройства Direct3DDevice, а затем происходит восстановление ресурсов RestoreDisplayObjects

Этот момент очень важно учитывать при создании многоуровневых игр, в которых ресурсы для каждого уровня различны и загружаются при разных состояниях приложения. Тогда при переключении режимов инвалидация и восстановление необходимых ресурсов должна происходить в зависимости от заданного состояния приложения, в противном случае Вы получите логические ошибки, ошибки времени выполнения и множество других ошибок!!!

В случае с игрой "Ну, Погоди!" этот момент упущен, т.к. все необходимые ресурсы загружаются, инвалидируются, восстанавливаются и уничтожаются централизованно при старте приложения и его закрытии, а переключение в полноэкранный режим не используется.

 
Для лучшего понимания этих важных моментов, Вам обязательно нужно познакомиться с исходным кодом игры [Пример игры Donuts3D], а также со статьями и исходниками посвященными работе над проектом Нечто: Необъяснимое
 
В качестве практики предлагаю Вам внедрить вышеописанные технологии в код проекта своего D3D-приложения посвященного практической работе над данным уроком.
 
[назад] [страница 1] [далее] [к содержанию]
 
 
 
 
     
     
     
     
     
Содержимое данной страницы доступно только зарегистрированным пользователям.



Пожалуйста войдите на сайт - Вход

или пройдите процедуру регистрации - Регистрация

megainformatic live chat
Начать беседу
X
 

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



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


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