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


Balls and holes PC game / Balls and Holes PC игра
Вакансии
Игродельня
Сегодня
23 февраля 2019 17:49
Вход Регистрация Забыли пароль ?

megainformatic - Костя Коробкин Компания Зергов онлайн комикс читать
Костя Коробкин - Компания Зергов (kk kz) - онлайн комикс - страница 1 Онлайн-комикс Костя Коробкин - Компания Зергов - интерактивный комикс (kk kz). Все начиналось как обычно. Мы въехали в город.
подробнее...

Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт
Статьи сайта
megainformatic - Что нужно знать для создания сайта ? css - стили

megainformatic - preg_match или Использование регулярных выражений в php

megainformatic - статьи Тимонина Андрея - Flash. Содержание

megainformatic - статья Тимонина Андрея - Flash. Подготовка к работе.

megainformatic - статья Тимонина Андрея - Flash. Hello world.

megainformatic - статья Тимонина Андрея - Flash. Экспорт SWC библиотеки.

megainformatic - Тимонин Андрей - Несколько слов о себе

megainformatic - статьи Тимонина Андрея - уроки из области веб программирования, создания казуальных игр

megainformatic - статья Тимонина Андрея - Обеспечиваем доступ к объекту из любой точки программы. Singleton

megainformatic - статья Тимонина Андрея - Хронология работы программы. Создаем Лог

megainformatic - статья Тимонина Андрея - Поиск файлов. Получаем список файлов каталога.

megainformatic - статья Тимонина Андрея - Исключения. Создаем класс обработки исключений.

megainformatic - статья Тимонина Андрея - States. Создаем менеджер состояний игры.

megainformatic - статья Тимонина Андрея - Регистрация. Часть 1. Создаем страничку регистрации на сайте.

megainformatic - статья Тимонина Андрея - Регистрация. Часть 2. Создаем обработчик, и заносим информацию о пользователе в Б.Д.

megainformatic - статья Тимонина Андрея - Таймер. Выводим время игры.

megainformatic - статья Тимонина Андрея - DirectX9. Создаем основной класс обработки графики.

megainformatic - статья Тимонина Андрея - DirectX9. Создаем первое приложение.

megainformatic - Что нужно знать для создания сайта ? float - использование в css - стилях

megainformatic - Уроки Fruity Loops Studio (FL Studio) - урок 2 - пишем свою композицию COLD

megainformatic - Уроки Fruity Loops Studio (FL Studio) - урок 3 - экспериментируем с композицией COLD

megainformatic - Что нужно знать для создания сайта ? Стандартные шрифты для сайта

megainformatic - Что нужно знать для создания сайта ? ASC II Коды символов

megainformatic - Уроки Fruity Loops Studio (FL Studio) - урок 4 - пишем первый вариант композиции COLD

megainformatic - Популяризация Современных Научных Знаний и Размышления на околонаучные темы. СОДЕРЖАНИЕ

megainformatic - Популяризация Современных Научных Знаний и Размышления на околонаучные темы. Энергетический кокон

megainformatic - Модуль галерей для любой cms

megainformatic - Портфолио выполненных проектов сайтов и приложений

megainformatic - Мои Музыкальные Миры - страница 2

megainformatic - megainformatic cms rs

megainformatic - модуль Падающий снег

megainformatic - проект Open Shop

megainformatic - Рисуем красивую девушку всего за 6 шагов

megainformatic - Галерея красивых рисованных девушек

megainformatic - НОВОГОДНЕЕ ОБРАЩЕНИЕ СОЗДАТЕЛЯ webinformatic К ЖИТЕЛЯМ ПЛАНЕТЫ интернет

megainformatic - Отзывы оставленные пользователями как впечатление о проделанной работе или что-либо понравившееся на сайте

megainformatic - Уроки css - атрибут position

megainformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - СОДЕРЖАНИЕ

megainformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - Глава 1 - Обычный день

megainformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - Глава 2 - Начало (begin)

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

megainformatic - Программируем на C++ с использованием MFC

megainformatic - Программируем на C++ с использованием MFC - Создание MFC приложения

megainformatic - Программируем на C++ с использованием MFC - Создание MFC приложения - hello, world !

megainformatic - Как создать игру ? - Пишем игровой движок с нуля

megainformatic - Как создать игру ? - Пишем игровой движок с нуля - Вступление

megainformatic - Как создать игру ? - Пишем игровой движок с нуля - Общая структура будущего игрового движка

Разное

megainformatic - Как создать игру ? - Пишем игровой движок с нуля - DXUTMainLoop - цикл работы DirectX-приложения

megainformatic - Варианты макетов Психолог 911

megainformatic - Шаблоны для сайтов - что это и какие они бывают ?

megainformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - Глава 3 - Кто он ? (who is ?)

megainformatic - Мои Музыкальные Миры - готовая музыка mp3 - новинки 2013 года

megainformatic - Теория и практика хакерских атак - самозащита от нападения

megainformatic - Теория и практика хакерских атак - самозащита от нападения - Способы подмены реального IP

megainformatic - Fruity Loops Studio 9 - Как синтезировать свои сэмплы - изучаем возможности плагина Sytrus

подробнее

Fahrenheit - Фаренгейт - игра для PC 2006 год

2006 год, разработчик Quantic Dream, локализация Акелла,
игра для PC в жанре квест, приключение, экшн, фильм.

Fahrenheit - Фаренгейт - игра для PC 2006 год

Fahrenheit - Фаренгейт - игра для PC 2006 год

Трейлер

 


подробнее

Советы копирайтеру - как не обмануть и не быть обманутым.



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

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

Первое простое правило - никогда не выдавайте чужих текстов за свои и не выставляйте их в портфолио.

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

Второе правило - если Вы сомневаетесь в заказчике - никогда не давайте ему полный текст в виде готового текстового файла или файла другого формата из которого легко можно скопировать текст.

Вместо этого - берете из текста несколько небольших отрывков и делаете скриншот.

Да да, всё так просто.

Заказчик уже не сможет скопировать текст из картинки, а набирать его вручную, понятно, не будет.

Однако он может взять программу распознавания текстов - и попробовать распознать текст на картинке.

Но даже в этом случае есть способ как защититься.

Кратко покажу как это делается.

Берем программу Photoshop или любую другую в которой Вы привыкли работать с изображениями.

Копируем части текста, которые мы хотели бы показать заказчику.

Вставляем в Photoshop.

вставляем текст в изображение

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

Это делается тоже достаточно просто.

В первую очередь делаем буквы прозрачными и лишь обведенными по контуру, сначала черным цветом, а позже - белым.

делаем буквы прозрачными и лишь обведенными по контуру

На задний план добавляем шум. Я еще добавил цветной шум, перекрещивающиеся полосы и вот что у меня получилось.

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

Да, такой текст уже даже человек поймёт с трудом, что уж говорить о программе.

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

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

Успехов вам !

подробнее

     
 

Видео урок посвященный созданию игры Ну, Погоди ! - рождение игры часть 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] [далее] [к содержанию]
 
 
 
 
     
     
     
     
     
подробнее

Game craft - игровая камера в d3d9 - приложении

[все уроки game craft]  [моделируем scv]  [моделируем scv шаг 1 часть 2] [моделируем scv шаг 2 часть 3] [Прорисовка текстуры робота SCV шаг 5]  [экспорт робота scv в формат x]  отображение scv модели в формате x в d3d9-приложении 

В данном уроке Мы рассмотрим самую важную часть - работу с 3d-камерой, т. к. без игровой камеры нет и понятия игрового приложения, камера в любой игре присутствует всегда - даже в 2d-играх. Только там она неподвижна. Мы же рассмотрим разумеется все возможные способы работы с динамической игровой камерой, чтобы она позволяла обозревать мир нашей игры с любых точек зрения.

В 3d-пространстве справедливы 3 вида трансформаций - перемещения, вращения и масштабирования. Для игровой камеры актуальны только перемещение и вращение. Масштабирование не имеет смысла - т. к. камера это не игровая модель, а по-сути взгляд пользователя с экрана в пространство игрового мира.

Напомню, что в игровом d3d9-приложении ось X представляет горизонталь экрана, Y - вертикаль, а Z - уходит в глубину экрана.

Перемещения камеры актуальны по всем трём осям координат - X, Y и Z. Как правило X и Z - используются чаще - для обозревания пространства игрового мира, а Y - для изменения высоты взгляда на игровой мир. Вращения актуальны вокруг оси X - для изменения угла зрения на игру и вокруг оси Y для вращательного обзора игрового пространства (как бы вращение головой). Вращения вокруг Z практически неактуальны - т. к. вряд ли кто-то захочет видеть игровой мир "лежащим под неестественным углом на боку". Такое может применяться только, например, если игровой персонаж уничтожен - чтобы имитировать его лежачее положение на земле (для камеры от 1 лица - вид из глаз героя).

Кроме того, игровая камера может содержать только самые базовые и совмещенные операции - например когда возможно только перемещение по осям X и Z, чтобы обозревать игровой мир, а для изменения точки зрения на игровой мир применяется комбинация движения вдоль оси Y и вращения вокруг X. Другие трансформации могут быть недоступны или применяться в очень ограниченном виде. Бывают случаи и ситуации, когда игровая камера является статичной и недоступна для управления - особенно когда игра 2D или идёт показ какой-либо анимационной вставки. Другой случай - когда игровая камера анимирована - т. е. перемещается и вращается сама по заранее заданной программе. Этот вариант тоже чаще применяется для демонстрации каких-либо анимационных вставок в игре. Либо в каких-то игровых ситуациях.

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

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

[все уроки game craft]  [моделируем scv]  [Моделируем робота SCV шаг 1 часть 2]  [Моделируем робота SCV шаг 2 часть 3]  [Прорисовка текстуры робота SCV шаг 5]  [экспорт робота scv в формат x]  отображение scv модели в формате x в d3d9-приложении 

Creating game on fle game engine - Simple game / Создание игры на fle game engine - Simple game

9 - Реализуем корректное попадание в ямы и около ям - определяем границы спрайтов ям и спрайта прыгаюшего шарика



read paper in english

Для того, чтобы фиксировать попадание шарика в яму или нет, нужно определить для неё границы.





Содержание

страница 1 - Спрайты

страница 2 - Объекты

страница 3 - Наложение объектов

страница 4 - Код - Настройка параметров Scene Editor fge и написание кода для вывода спрайта шарика в вашем первом игровом приложении

страница 5 - Отображаем прыгающий шарик

страница 6 - Загрузка игровой сцены

страница 7 - Перемещения игровой сцены

страница 8 - Закрываем часть сцены от пустот при помощи черной текстуры с прорезью, ограничиваем перемещение сцены

страница 9 - Реализуем корректное попадание в ямы и около ям - определяем границы спрайтов ям и спрайта прыгаюшего шарика

страница 10 - Проверка столкновений

страница 11 - Игровой счёт, звуки, музыка

урок #2 страница 1 - Создание новых сцен для игры simple game, расширенная версия simple game extended

13. Скроллинг больших локаций

14. использование переменных в игре на c++ directx 9c

15. Мульти анимация







Давайте подумаем, что нужно знать для определения факта попадания шарика в яму ?

Прыгающий шарик в яме или нет ?

Правильно: нужно знать координаты шарика и координаты ямы, а еще лучше определить для них границы - например в виде прямоугольника, как показано на рисунке ниже.

Прыгающий шарик в яме или нет ?

Зная границы шарика и границы ямы мы можем определить - целиком ли попадают границы шарика в границы ямы или нет и в соответствии с этим принять решение: отобразить ли переднюю плашку ямы или нет.

Ну и самое главное конечно - это цель нашей игры: отслеживать успешное попадание шарика в яму или нет. Для этого, как видите, тоже будут нужны границы.

Параллельно нам сразу же придется решить проблему -

4) Реализовать возникновение игровых ситуаций: чтобы шарик начал двигаться и уворачиваться от ям, а также проверку и вывод его попадания в яму и учёт игровых очков.

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

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

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



Для начала нужно реализовать проверку попадания для неподвижного шарика и всего 1 ямы.

Определено попадание шарика в яму

Если шарик попадает в яму - учитываем попадание. В дальнейшем при возникновении данного события будет учитываться игровой счёт и воспроизводиться звук.



Если шарик не попадает в яму - то не выводим плашку ямы.



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

Видим, что шарик свободно перемещается по сцене в отведенных ему границах.

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

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

В игре реализовано воспроизведение mp3 музыки, громкость музыки и порядок воспроизведения треков можно настраивать через специальный файл параметров.

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

Список треков также можно задавать произвольно через специальный файл.

Как реализовать все показанные особенности мы рассмотрим далее.

Указатель мыши можно скрывать или показывать по нажатию специальной клавиши.

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



Скачать готовую игру simple game версия 1.0.0 4.01.2017 (без исходного кода).

Исходный код и другие полезные материалы и инструменты Вы получаете при оформлении платной подписки !


Размер: 51,8 Mb



новый современный движок для создания игр на платформе Windows Directx 9c - которая поддерживается большинством ПК.

Подробнее об оформлении подписки на fle game engine





Скачать fle game engine (полный исходный код).

Включает исходный код, полезные материалы и инструменты. Вы можете поддержать проект оформив платную подписку.


Размер: 482 Mb



Контрольные суммы для проверки целостности скачанного архива.

CRC32: 9626C289
MD5: 7537172124F59B49431DA3CE0EE70B97
SHA-1: 951A654AFA932AAD706C090B5A37F37DD53E5920

Контрольные суммы можно проверить утилитой HashTab

После скачивания вы получите самораспаковывающийся архив. Запустите его, чтобы распаковать.

Система написана на c++ под directx 9.

Требования - наличие установленных MSVS 2005 (Microsoft Visual Studio) и DirectX SDK Aug 2008.

Для других версий MSVS и DirectX SDK могут потребоваться модификации кода !

Что включает дистрибутив ?

- Редактор сцен Scene Editor;

- пример игры simple game с полным исходным кодом;

- пошаговое описание создания примера игры simple_game - представляет набор html файлов пригодных для открытия и чтения из любого браузера;

- Coords 2D - утилиту отладки анимаций и подбора экранных координат содержит богатую библиотеку готовых примеров игровых спрайтов;

- полный исходный код fle game engine - позволит вам создать свою собственную игру, а также расширить движок необходимыми возможностями в дальнейшем, никаких ограничений на расширение нет;

- fgg_setup.exe Fly snow 3d - визуальные эффекты падающего снега/дождя и др. красивые эффекты с частицами в 2d/3d;

Скачав дистрибутив fle game engine вы можете приступить к созданию своей игры прямо сейчас !

Чтобы иметь возможность самостоятельно создать свою игру на базе примера simple_game с неограниченными возможностями дальнейшего расширения! - оформите подписку на fle game engine -


Стоимость: 600 руб.

Оформив подписку на fle game engine Вы получаете пример игры simple_game с исходным кодом, и сможете не просто прочитать всё, что описано, но и самостоятельно проделать в собственном приложении с возможностью неограниченного расширения. Также Вы получаете

Самую свежую версию Scene Editor fge 1.0.2 (на текущий момент) с поддержкой большего количества возможностей: сетка, настройки, скроллинг и другие. В бесплатной версии эти возможности не поддерживаются. подробнее о составе платной подписки.





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

Creating game on fle game engine - Simple game / Создание игры на fle game engine - Simple game - попадания шарика в ямки новым способом

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


Creating game on fle game engine - Simple game / Создание игры на fle game engine - Simple game - Предложенный ранее способ оказался не лишенным недостатка

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

Аналогичный эффект происходит когда шарик не целиком попадает в ямку или одновременно в
ямку попадают 2 и более шариков находясь не точно в ней, а на различных расстояниях.

Вообщем все это выглядит не очень естественно.

Новый улучшенный способ, сделан без применения плашек.

Creating game on fle game engine - Simple game / Создание игры на fle game engine - Simple game - попадания шарика в ямки новым способом

Поэтому сколько шариков бы не попадало в ямку одновременно они будут выводиться
визуально естественно.

В чем заключается принцип нового способа ?

Суть его предельно проста:

Каждый спрайт имеет такую характеристику как высота - Height.

Эту высоту мы можем изменить в любой момент. Что собственно и делается.

Sprite->Height = m_iBallSpriteHeight;

Как это происходит ?

Пока шарик не в ямке, его спрайт выводится с обычной высотой Height, на которую
рассчитан данный спрайт.

Но как только момент попадания в ямку зафиксирован, высота меняется на меньшее.
значение, чтобы шарик оказался как бы обрезан снизу, почти на 1/3 или даже
наполовнину.

Визуально, когда при этом под ним еще и находится изображение ямки, это и дает
эффект попадания в неё.

Creating game on fle game engine - Simple game / Создание игры на fle game engine - Simple game - попадания шариков в ямки новым способом

[назад] [далее]



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

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



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


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