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


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

Описание продукта megainformatic cms social
megainformatic cms social
подробнее...

Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт
Статьи сайта
megainformatic - Как создать игру ? - Программируем сами - Самый первый шаг - страница 3

megainformatic - Как создать игру ? - Программируем сами - Изучаем и модифицируем пример CreateDevice

megainformatic - Как создать игру ? - Программируем сами - пример CreateDevice страница 2

megainformatic - Как создать игру ? - Программируем сами - пример CreateDevice страница 3

megainformatic - Как создать игру - Vertices - Вершины - страница 1

megainformatic - Как создать игру - пример Matrices

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

megainformatic - Уроки Photoshop - Чудеса - Коллаж от нуля

megainformatic - Уроки Photoshop - Чудеса - Коллаж от нуля - страница 2

megainformatic - Уроки Photoshop - Чудеса - Коллаж от нуля - страница 3

megainformatic - Уроки Photoshop - Чудеса - Коллаж от нуля - страница 4

megainformatic - Купить Уроки Photoshop - Чудеса

megainformatic - Уроки Photoshop

megainformatic - Уроки Photoshop - Рисуем волка из мультфильма

megainformatic - Уроки Photoshop - Рисуем волка из мультфильма стр 2

megainformatic - Уроки Photoshop - Рисуем волка из мультфильма стр 3

megainformatic - Уроки Photoshop - Рисуем волка из мультфильма стр 4

megainformatic - Уроки Photoshop - Анимируем волка из мультфильма

megainformatic - Уроки Photoshop - Анимируем волка из мультфильма стр 2

megainformatic - Уроки Photoshop - Анимируем волка из мультфильма стр 3

megainformatic - Уроки Photoshop - Анимируем волка из мультфильма стр 4

megainformatic - Эмулятор игры Ну, Погоди!

megainformatic - Оплата заказа через Сбербанк

megainformatic - Пример игры с исходным кодом Donuts3D

megainformatic - Как создать игру ВЕСЕЛЫЙ БУКВОЕЖКА - программируем сами

megainformatic - Как создать игру ВЕСЕЛЫЙ БУКВОЕЖКА - создаем игровую оболочку

megainformatic - Открытый Полный Исходный код игры Дорога в Город

megainformatic - Как создать игру - Веселый Единственный Буквоежка - программируем основу будущей игры

megainformatic - Как создать игру - Веселый Единственный Буквоежка - выводим заставку

megainformatic - Как создать игру - Веселый Единственный Буквоежка - игровое меню

megainformatic - Как создать игру - Веселый Единственный Буквоежка - движение и анимация героя

Как Создать игру ВЕБ - Веселый Единственный Буквоежка - Программируем сами

Как Создать игру ВЕБ - Веселый Единственный Буквоежка - Программируем сами

megainformatic - Примеры моих работ

megainformatic - Музыкальные темы

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

megainformatic - Купить Уроки Photoshop - Чудеса

megainformatic - Онлайн Обучение, Репетитор

megainformatic - Уроки Photoshop - Рисуем и Анимируем

megainformatic - Уроки Photoshop - Рисуем и Анимируем - Урок 1 - Старт

megainformatic - Уроки Photoshop - Рисуем и Анимируем на AllSoft.ru

megainformatic - DirectX 9c - Изучаем пример MultAnimation

megainformatic - megainformatic cms Система Управления Контентом

megainformatic - Темы для WordPress

megainformatic - Что нужно для создания собственного сайта ?

megainformatic - Макет дизайна Вашего сайта

скачать megainformatic cms

megainformatic - Итоги 2010 года

megainformatic - Что нужно для создания собственного сайта ?

megainformatic - как создать инсталлятор для собственной cms

megainformatic - Новости - страница 2

Нововведения в megainformatic cms

Web Администрирование

Уроки Верстки

Система автоматизированной е-майл рассылки

Система автоматизированной е-майл рассылки

подробнее

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

представляем Веселый Буквоежка - онлайн комикс.

Бабуля, а ты ничего не забыла ?!

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

если кликать картинку она будет последовательно меняться в размерах от 620 до 2048 пиксель.

[страница 1]  [страница 2]  [страница 3]  [страница 4]  [страница 5]  [страница 6]  [страница 7]  [страница 8]  [страница 9]  [страница 10]  [страница 11]  [страница 12]  [страница 13]  [страница 14]  [страница 15]  [страница 16]  [страница 17]  [страница 18]  [страница 19]  [страница 20]  [страница 21]  [страница 22]  [страница 23] 

подробнее

 

Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008

 
     
  Урок 3 Создание Win32-приложений. Создание меню и простых диалоговых окон.  
     
 

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

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

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

 
     
  [назад] [далее] [к содержанию]  
     
  Мы рассматриваем основы программирования на C++ в среде программирования MSVS 2008  
     
  В данном уроке мы рассмотрим как создается меню и простейшие окна диалогов.  
     
  Меню Win32-приложения создается как ресурс. Его создание похоже на создание меню в delphi 7.  
     
 

Для создания меню открываем окно ресурсов Resource View,

щелкаем правой кнопкой по пункту Resource.rc и выбираем Add Resource,

в окне выбора нового ресурса задаем требуемый тип (в нашем случае Menu) и нажимаем кнопку New

 
     
  будет создано окно с ресурсом меню, открытым для редактирования. По аналогии с созданием меню в delphi 7 нужно давать пунктам меню нужные идентификаторы в окне Properties и названия (свойство Caption)  
     
   
     
  Название идентификатора ресурса меню можно изменить щелкнув по ресурсу в окне ресурсов и вызвав окно Properties щелчком по вкладке Properties в правой части окна Visual Studio  
     
   
     
 

Для обработки команд меню в код необходимо внести дополнения

Внутри функции WndProc показан пример обработки пунктов меню About и Exit. По аналогии с этим нужно добавить обработку других пунктов меню.

 
     
  Работа с меню Win32-приложения описана в разделе MSVS 2008 > Help > Contents > Win32 and COM Development > User Interface > Windows User Experience > Windows Management > Windows User Interface > Resources > Menus  
     
 

Обработка нажатий на пункты меню Hints и Show FPS

в методе WndProc нажатия обрабатываются следующим образом -

case IDM_OPTIONS_HINT: {

bShowHelpText = !bShowHelpText;

if (bShowHelpText)
CheckMenuItem(GetMenu(hWnd), IDM_OPTIONS_HINT, MF_CHECKED);
else
CheckMenuItem(GetMenu(hWnd), IDM_OPTIONS_HINT, MF_UNCHECKED);

break;
}

case IDM_OPTIONS_SHOWFPS: {

m_bShowFPSOn = !m_bShowFPSOn;

if (m_bShowFPSOn)
CheckMenuItem(GetMenu(hWnd), IDM_OPTIONS_SHOWFPS, MF_CHECKED);
else
CheckMenuItem(GetMenu(hWnd), IDM_OPTIONS_SHOWFPS, MF_UNCHECKED);

break;
}

Дополнительно была введена функция InitD3DStuff, но пока ее назначение состоит лишь в -

void InitD3DStuff()
{
m_bShowFPSOn = TRUE;
bShowHelpText = TRUE;
}

 
     
 

Сама функция вызывается из InitInstance

В дальнейшем переменные m_bShowFPSOn и bShowHelpText перейдут в поля класса D3D-приложения

 
     
 

Для создания окна приложения с запрещенной кнопкой максимизации окна и неизменными размерами в коде функции InitInstance были внесены следующие изменения -

/*hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, 631, 380, NULL, NULL, hInstance, NULL); */

hWnd = CreateWindow(szWindowClass, szTitle,
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
CW_USEDEFAULT, 0, 631, 380, NULL, NULL, hInstance, NULL);

 
     
 

Разработка окна диалога для управления уровнем сложности

Работа с элементами управления Windows в приложениях Win32 описана в разделе справки -

MSVS 2008 > Help > Contents > Win32 and COM Development > User Interface > Windows User Experience > Windows Shell > Windows Controls > Control Library

 
     
 

Создание диалоговых окон приложения Win32 похоже на создание форм в Delphi 7. Однако не для всех элементов управления дело обстоит просто. Существует целая группа элементов управления добавление которых не автоматизировано в коде.

Например, если использовать для настройки уровня сложности ползунок Slider Control (TRACKBAR_CLASS), то для инициализации диалога с его использованием требуется вызов функции InitCommonControlsEx. Создание самого элемента управления нужно выполнять в коде приложения.

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

Работа с элементами управления окон описана в разделе MSVS 2008 > Help > Contents > Win32 and COM Development > User Interface > Windows User Experience > Windows Shell > Windows Controls > General Control Information

 
     
  Чтобы не озадачивать себя на первых порах излишними сложностями попробуйте заменить нужный элемент управления каким-либо другим, не требующим введения кода. Например вместо ползунка Slider для задания уровня сложности можно вполне обойтись обычными RadioButtons и они прекрасно справляются с этой задачей.  
     
  Для использования окна диалога, вызываемого в ответ на выбор какого-либо пункта меню достаточно посмотреть код диалогового окна About автоматически создаваемый при создании оконного Win32-приложения и отталкиваясь от него создать свой собственный для нужного пункта меню и диалога.  
     
  в следующем уроке - общие окна диалога, некоторые сопутствующие конструкции языка C++  
     
     
     
     
     
  [назад] [далее] [к содержанию]  
подробнее

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

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



read paper in english

В данном уроке мы проведем своего рода быстрый старт - это введение в создание игр в среде fle game engine.





Содержание

страница 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. Мульти анимация







При создании игровых сцен представленных более чем одним игровым экраном возникает ряд вопросов:

1) Как создать сцену из нескольких игровых экранов ?

2) Как скроллить, т. е. перемещать созданный набор сцен ? Мы его будем называть условно: локацией. Локация это уже несколько сцен представляющих одно логическое целое.

3) Что нужно учитывать в коде при создании игры содержащей локации ?

Цель данной статьи - разъяснить как они решаются во fle game engine.

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







А именно: мы возьмем самый простой случай - игровую локацию составленную всего из 3 игровых экранов. Другими словами она будет включать всего 3 игровых сцены, объединенных в единую локацию.

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

Итак, для выполнения поставленных задач нам понадобится исходный код примера игры simple game.

Сначала мы проделаем следующее:

- из 3х одинаковых сцен создадим локацию;
- загрузим её;
- разберемся с тем, как её можно перемещать.





- из 3х одинаковых сцен создать локацию:

В статье игра "Веселый Буквоежка" - инструменты разработки

Сказано следующее:

Сборщик локаций

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



Вот пример такого файла:

begin6.scn
begin4.scn
begin2.scn
begin0.scn
begin1.scn
begin3.scn
begin5.scn

Исходя из данного файла в локации сцены будут появляться слева - направо в таком порядке: 6-4-2-0-1-3-5

Количество сцен всегда должно быть 2*n+1, где n - число от 0 до бесконечности.

Т. е. 1, 3, 5, 7, 9 и т.д.

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

Следовательно, если Вы всё поняли, берем файл

simple_game\Media\textures\environment\scenes\simple_game\scenes_list.txt

И вместо имеющейся в нём 1 строки -

scene_1.scn

создаем 3 -

scene_2.scn
scene_0.scn
scene_1.scn

файлы

scene_2.scn
scene_0.scn

это просто переименованные копии файла
scene_1.scn

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



- загрузим её:

в исходном коде игры simple game уже ничего менять не нужно, загрузка локации происходит

в модуле start.cpp

строкой кода

m_pGameSceneDataFile->LoadLocation(SimpleGameLocation, SimpleGameScenesPath);



- разберемся с тем, как её можно перемещать:

На самом деле опять-таки, изменений в коде делать не потребуется, всё уже реализовано и прекрасно работает !

Вы это можете увидеть на показанном выше видео.

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

Во-первых нужно в методе

CD3DGameApp::ChangeGameCursorPos

модуля start.cpp

Внести такие небольшие изменения:

if ( cursor_at_window_x < cursor_spr_left_limit )
{
//cursor_at_window_x = cursor_spr_left_limit;
}

if ( cursor_at_window_x > cursor_spr_right_limit )
{
//cursor_at_window_x = cursor_spr_right_limit;
}

Тем самым мы снимаем ограничения на перемещения и они становятся намного заметнее.

Далее, поскольку, если Вы помните, в примере simple game, часть экрана закрыта обложкой и сцена видна только через прорезь в этой обложке, то нужно просто сделать всю обложку прозрачной.

Для этого достаточно в Photoshop или любой другой программе, которая позволяет менять альфа-маску tga изображений, сделать альфа-маску для файла обложки frame_tex_2.tga целиком на всё изображение и полностью прозрачной - т. е. заполнить её черным цветом.

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

Во-вторых, в методе

CD3DGameApp::ChangeGameCursorPos

модуля start.cpp

Нужно сделать еще одно небольшое изменение:

//g_fHorizontalScrollOffset = vPos.x; //было
g_fHorizontalScrollOffset = vPos.x * 2.0f; //так еще нагляднее потому что видны края всей локации при перемещениях мыши.


Ну и конечно, в редакторе Scene Editor можно каждую из сцен сделать индивидуальной.

Например я, добавил по правому краю 2 сцены и по левому 0 сцены - столбик из красных блоков. И в видео показаном выше видно как 2 и 0 сцены соприкасаются друг с другом.

А вот сцена 1 никаких отличий не имеет, поэтому заметить как она из 0 переходит в 1 можно только по похожему расположению ям.

Теперь Вы знаете как делать большие локации в играх на fle game engine !

Небольшое дополнение: в примере simple game управление реализовано от мыши. Но при желании Вы легко можете сделать его и от клавиатуры - т. е. чтобы шарик или игровая сцена были перемещаемы не от перемещений мыши, а, например, по нажатию клавиш стрелок управления курсором влево, вправо, вверх, вниз или a, d, w, s либо каких-то еще клавиш, которые Вам нравятся.

О перемещениях игровой сцены и шарика было рассказано в наших предыдущих статьях (см. Содержание выше статья страница 7 - Перемещения игровой сцены).

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

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

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

А если модули должны как-то между собой взаимодействовать ?

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





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

подробнее

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

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

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

 
     
  [содержание] [назад] [страница 2] [далее]  
     
  Введение в 2d-игры - страница 2 - создание игровой оболочки как у игр от Nevosoft, Alawar и аналогичных  
     
 

Этот простой пример поможет Вам быстрее освоить программирование игр на C++.

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

 
     
  игровая оболочка  
     
 

При закрытии окна нажатием кнопки X в правом верхнем углу приложение завершает работу, а игра так и не будет запущена.

Нажатие кнопок Играть, Купить, Еще игр приводит к каким-либо действиям -

Играть - запускается игра;

Купить - отображается веб-страничка покупки;

Еще игр - отображается веб-страничка других игровых проектов;

 
     
 

Для того, чтобы реализовать такую оболочку потребуется следующее:

1) изображение основного экрана оболочки и 3 изображения кнопок Играть, Купить, Еще игр;

2) файлы в формате html, представляющие страницы Купить и Еще игр;

3) потребуется написать код, реализующий описанные возможности:

- при выборе Играть должна запускаться игра - в нашем примере пока простейший пример DirectX-приложения;

- при выборе других пунктов должны открываться соответствующие веб-странички;

 
     
  Начнём !  
     
  Скачайте указанные ниже 4 изображения на свой компьютер, внутри папки созданного MFC-проекта создайте подпапку Media\shell_window и разместите данные изображения внутри созданной папки  
     
  базовая картинка оболочки  
     
  кнопка играть  
     
  кнопка купить  
     
  кнопка еще игр  
     
 

Теперь переходим к разработке собственно оболочки - в окне Solution Explorer нашего проекта выбираем вкладку Resource View и последовательно открываем узлы

Fle2 > Fle2.rc > Dialog > IDD_FLE2_DIALOG

Пункт IDD_FLE2_DIALOG щелкаем дважды

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

Нам нужно внести в шаблон окна следующие изменения:

Убрать кнопки OK и Cancel;

Удалить метку с текстом TODO: Place dialogs controls here

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

 
     
 

Теперь нужно будет написать программный код.

Откройте файлы Fle2Dlg.h и Fle2Dlg.cpp

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

Правда если Вы дали классам окна диалога другие имена, исключив слово Dlg, то тогда Вам нужно открыть заголовочный и cpp файлы, которые содержат описание класса окна диалога Вашего приложения - объект окна диалога производится от класса CDialog -

class CFleDlg : public CDialog

 
     
 

В модуль Fle2Dlg.h добавляем следующий код -

// CFle2Dlg dialog
class CFle2Dlg : public CDialog
{
// Construction
public:
CFle2Dlg(CWnd* pParent = NULL); // standard constructor
~CFle2Dlg(); //определяем деструктор объекта CFleDlg

// Dialog Data
enum { IDD = IDD_FLE_DIALOG };

protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support


// Implementation
protected:
HICON m_hIcon;

// Generated message map functions
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()

private:
CImage* pBigImage; //определяем объекты, в которых будут храниться изображения
CImage* pPlayImage; //формирующие внешний вид игровой оболочки
CImage* pBuyImage;
CImage* pOthesImage;

RECT m_rcClientBounds; //размеры рабочей области окна будем хранить здесь
RECT m_rcPlayImage; //аналогично будем хранить размеры изображений
RECT m_rcBuyImage;
RECT m_rcOthesImage;

void InitShell(); //описываем метод инициализации оболочки

bool TargetBtnArea(CPoint* CursorPos, RECT* aBtnArea); //метод попадания указателя мыши в область границ одной из кнопок игровой оболочки

public:
bool bPlayBtnUp; //индикаторы отпускания левой кнопки мыши над данной кнопкой
bool bBuyBtnUp; //игровой оболочки - используются для срабатывания нажатий
bool bOthesBtnUp; //этих кнопок
private:
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);

};

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

#include "stdafx.h"
#include "Fle.h"
#include "FleDlg.h"

#include "openwebpage.h" //подключаем модуль openwebpage.h и .cpp - эти модули выполняют открытие указанной веб-страницы и входят в комплект ПОЛНОГО ИСХОДНОГО КОДА игры ВЕСЕЛЫЙ БУКВОЕЖКА, который Вы можете приобрести всего за 200 рублей

о том, что еще входит в состав комплекта ПОЛНОГО ИСХОДНОГО кода Вы узнаете далее

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

 

#define bi_x 0 //определяем начальные координаты первого из 4х изображений
#define bi_y 0 //которые будут формировать внешний вид нашей игровой оболочки

//определяем имена файлов веб-страниц для кнопок <Еще игр> и <Купить>
#define OthesGamesUrl L"\\WebLinks\\index.htm"
#define BuyGameUrl L"\\WebLinks\\buy_fle.htm"

 


// CFle2Dlg dialog


CFle2Dlg::CFleDlg(CWnd* pParent /*=NULL*/)
: CDialog(CFleDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

pBigImage = NULL; //обнуляем экземпляры объектов класса CImage
pPlayImage = NULL;
//которые мы описали в заголовочном файле
pBuyImage = NULL;
pOthesImage = NULL;

bPlayBtnUp = false; //выставляем индикатор отпускания левой кнопки мыши
bBuyBtnUp = false; //над данной кнопкой игровой оболочки в false
bOthesBtnUp = false;

}

CFle2Dlg::~CFleDlg()
{


delete pBigImage; //при удалении объекта CFleDlg из памяти нужно удалить и эти объекты
delete pPlayImage;
delete pBuyImage;
delete pOthesImage;


}

void CFle2Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CFleDlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
// ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
END_MESSAGE_MAP()


// CFle2Dlg message handlers

BOOL CFle2Dlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon


InitShell();
//выполняем инициализацию нашей игровой оболочки

return TRUE; // return TRUE unless you set the focus to a control
}

// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.

void CFle2Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CPaintDC dc(this); // device context for painting //выводим изображения на поверхности окна нашей игровой оболочки

 

pBigImage->Draw(dc, bi_x, bi_y);

pPlayImage->Draw(dc, m_rcPlayImage.left, m_rcPlayImage.top);

pBuyImage->Draw(dc, m_rcBuyImage.left, m_rcBuyImage.top);

pOthesImage->Draw(dc, m_rcOthesImage.left, m_rcOthesImage.top);

CDialog::OnPaint();

}
}

// The system calls this function to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CFleDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}

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

void CFle2Dlg::InitShell()
{

SetCurrentDirectory(AppRootDir);

pBigImage = new CImage();
pBigImage->Load(L"Media\\shell_window\\fle.jpg");

pPlayImage = new CImage();
pPlayImage->Load(L"Media\\shell_window\\fle_play.jpg");

pBuyImage = new CImage();
pBuyImage->Load(L"Media\\shell_window\\fle_buy.jpg");

pOthesImage = new CImage();
pOthesImage->Load(L"Media\\shell_window\\fle_other_games.jpg");

GetClientRect(&m_rcClientBounds); //получаем размеры рабочей области окна

int y = m_rcClientBounds.bottom - pPlayImage->GetHeight(); //координата y кнопки <Играть>
int x = 0;//координата x
m_rcPlayImage.left = x;
m_rcPlayImage.top = y;
m_rcPlayImage.right = x + pPlayImage->GetWidth();
m_rcPlayImage.bottom = y + pPlayImage->GetHeight();


x = x + pPlayImage->GetWidth(); //координата x для кнопки <Купить>
m_rcBuyImage.left = x;
m_rcBuyImage.top = y;
m_rcBuyImage.right = x + pBuyImage->GetWidth();
m_rcBuyImage.bottom = y + pBuyImage->GetHeight();

x = x + pPlayImage->GetWidth(); //координата x для кнопки <Еще игр>
m_rcOthesImage.left = x;
m_rcOthesImage.top = y;
m_rcOthesImage.right = x + pOthesImage->GetWidth();
m_rcOthesImage.bottom = y + pOthesImage->GetHeight();

}

//данный метод проверяет попадание указателя мыши в область указанной параметром aBtnArea кнопки


bool CFle2Dlg::TargetBtnArea(CPoint* CursorPos, RECT* aBtnArea)
{
if ( CursorPos->x >= aBtnArea->left &&
CursorPos->x <= aBtnArea->right &&
CursorPos->y >= aBtnArea->top &&
CursorPos->y <= aBtnArea->bottom )
return true;
else
return false;
}

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

void CFle2Dlg::OnLButtonUp(UINT nFlags, CPoint point)
{

CPoint pt = point;

bPlayBtnUp = TargetBtnArea(&pt, &m_rcPlayImage);
bBuyBtnUp = TargetBtnArea(&pt, &m_rcBuyImage);
bOthesBtnUp = TargetBtnArea(&pt, &m_rcOthesImage);

 

if ( bPlayBtnUp | bBuyBtnUp | bOthesBtnUp )
{
if ( bBuyBtnUp )
OpenSite(m_hWnd, BuyGameUrl);

if ( bOthesBtnUp )
OpenSite(m_hWnd, OthesGamesUrl);

if ( bPlayBtnUp )
{
EndDialog(IDOK);
StartD3DApp();
}
}

CDialog::OnLButtonUp(nFlags, point);
}

 


 
     
 

Несколько Важных нюансов:

1) Чтобы указанный код правильно работал нужно включить файлы openwebpage.h и openwebpage.cpp в состав Вашего проекта -

в окне Solution Explorer щелкаем правой кнопкой мыши пункт с названием проекта Fle2 и выбираем Add > New Filter

 
     
  включить файлы openwebpage.h и openwebpage.cpp в состав Вашего проекта  
     
 

Созданную группу именуем common, щелкаем по названию правой кнопкой мыши и выбираем Add > Existing Item, указываем на файлы openwebpage.h и openwebpage.cpp

Для этого удобнее в папке с проектом создать подпапку common и поместить оба эти файла туда.

 
     
  2) Будет не очень удобно, если exe файл Вашего проекта будет создаваться среди кучи других файлов. Рекомендую создать внутри папки проекта отдельную подпапку, а сам проект настроить таким образом, чтобы exe-файл попадал туда, т. е.  
     
 

В окне Solution Explorer выбираем пункт с названием нашего проекта - Fle2

выбираем пункты главного меню Project > Properties и в открывшемся окне настроек свойств выбранного проекта (не случайно я указал вначале выбрать Fle2 иначе откроются совсем другие свойства) выбираем пункт

Configuration Properties > General

а в окне справа в поле Output Directory указываем нужную нам подпапку для размещения exe-файла

 
     
  в окне справа в поле Output Directory указываем нужную нам подпапку для размещения exe-файла  
     
  На показанном рисунке настройка выполнена для конфигурации Debug, эту же настройку нужно сделать для конфигурации Release. И не забывайте сохранить изменения в проект - File > Save All либо используя аналогичную кнопку на панели инструментов.  
     
 

3) Откройте файл stdafx.h и добавьте в его конец строку кода -

#include <atlimage.h>

 
     
 

4) Откройте файл Fle2.h (если Ваш проект назывался не Fle2, а например, MyProj, то данный файл будет называться MyProj.h)

добавьте в его конец строки

__declspec(selectany) TCHAR AppRootDir[MAX_PATH] = L""; //рабочая папка приложения
__declspec(selectany) DWORD AppRootDirSize = MAX_PATH;

5) Откройте окно настроек проекта - нужно сначала выбрать в окне Solution Explorer пункт с названием проекта, а затем главное меню - Projects > Properties и

Configuration Properties > C++ > General

в поле Additional Include Directories

добавьте ссылку на папку common, размещенную внутри папки проекта -

common; Аналогичную настройку нужно выполнить для конфигурации Release.

 
     
  добавьте ссылку на папку common, размещенную внутри папки проекта  
     
 

6) При написании кода приведенного выше обратите внимание на имя класса, которое Вы используете

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

 
     
 

7) Метод

void CFle2Dlg::OnLButtonUp(UINT nFlags, CPoint point)

нужно сформировать в форме обработчика события WM_LBUTTONUP для класса CFle2Dlg -

то что Вы написали ранее для этого метода нужно закомментировать, код еще нам пригодится!

Далее В окне Solution Explorer выбираем вкладку Class View, в списке классов находим CFle2Dlg, щелкаем правой кнопкой мыши и выбираем пункт Properties, с правого края откроется новое окно, в котором нужно нажать кнопку Messages, в списке найти событие WM_LBUTTONUP и сформировать для него обработчик выбрав пункт <Add> OnLButtonUp

 
     
  В окне Solution Explorer выбираем вкладку Class View, в списке классов находим CFle2Dlg, щелкаем правой кнопкой мыши и выбираем пункт Properties, с правого края откроется новое окно, в котором нужно нажать кнопку Messages, в списке найти событие WM_LBUTTONUP и сформировать для него обработчик выбрав пункт <Add> OnLButtonUp  
     
  Теперь осталось вставить в обработчик тот самый код, который мы закомментировали.  
     
  8) При компиляции возникнет ошибка из-за отсутствия реализации функции StartD3DApp(); - просто закомментируйте эту строку кода, т. к. мы реализуем эту функцию в дальнейшем - она будет запускать игру.  
     
 

9) Для правильного функционирования кнопок <Купить> и <Еще игр> внутри папки Fle, где создается exe-файл, нужно создать подпапку WebLinks и разместить в ней два файла -

index.htm

buy_fle.htm

 
     
 

Пробуем выполнить сборку - [F7], а exe-файл ищем теперь уже внутри созданной подпапки !!!

При запуске запускается созданная нами оболочка. При нажатии мышью кнопки <Играть> приложение просто завершает работу - мы пока не реализовали запуск игры - будем это делать в дальнейшем. При нажатии на кнопки <Купить> и <Еще игр> должны открываться соответствующие веб-странички из папки WebLinks.

Работа по созданию игровой оболочки завершена! В следующем нашем уроке Мы реализуем в первом приближении работу кнопки <Играть> - будет запускаться начальное простейшее DirectX-приложение. В последующих уроках будем постепенно наращивать возможности создаваемой игры.

 
     
     
     
  Если у Вас еще остались неразрешенные вопросы - обращайтесь на наш Форум, либо на e-mail автора.  
     
     
     
     
  [содержание] [назад] [страница 2] [далее]  
     

Cradle / Колыбель PC game 2015 история неуспеха

Те кто видел игру Cradle / Колыбель 2015 скажут, что игра
вообще говоря спорная.

cradle игра

cradle игра

cradle игра

Тут нет обычных стандартов. Все нестандартно.

Лично мне эта игра очень понравилась. И я уже
публиковал пост на эту тему.

cradle игра

Но давайте разберемся какова цена успеха.

Заглянем в историю - основной автор игры Илья Толмачев
был арт директором в компании GSC.

В октябре 2010-го Илья основал собственную компанию по разработке игр — Flying Cafe for
Semianimals (рус. «Летающее кафе для полуживотных»). К нему присоединились его коллеги:
Виктор Меркулов, Евгений Литвинов, Роман Малинкин и Павел Михайлов (который через некоторое
время ушёл, но продолжал иногда консультировать). В процессе компании помогали и другие
 сотрудники GSC, например, Людмила Стародуб.

Первой (и единственной) игрой стала Cradle.


Вот как шла разработка игры в 2012 году

Релиз игры несколько раз откладывался и сдвигался по времени.


В итоге игру все-таки выпустили, но её ждал коммерческий провал (если верить этому источнику) -

чуда не произошло

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


Главные просчеты:

зачем был взят движок unigine ?

В статье выше -
разработка игры в 2012 году

упоминается следующее:

На движке Unigine недавно вышел Oil Rush. Как работается с комплектом SDK? Удобен ли он?
Достаточно ли быстр?
— Работается с трудом. Сложности в нехватке инструментария, в основном. Например, функция
поиска пути появилась в движке тогда, когда мы уже расписали историю таким образом, чтобы
все персонажи в ней не перемещались, находились на одном месте всё время. Ида сидит на столе,
поджав под себя ноги, и никогда не покинет его, в частности, потому, что, приобретая движок,
мы учли, что там нет искусственного интеллекта, который мог бы управлять её перемещениями.
И, тем не менее, мы не жалеем о выборе — у Unigine потрясающе «чистый» рендер.
Его картинка ласкает взгляд и этим компенсирует другие недостатки.

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

(напомню на дворе был 2012 год)

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

Можете погуглить если интересно.



Что еще подвело игру - 

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


Поэтому если смотреть в ключе финансового успеха - игра представляет собой огромный провал.

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



В своем предыдущем посте, где я делился впечатлениями об игре,
я упомянул такой вопрос: будет ли продолжение ?

Если бы я был автором, то скорее всего ответил бы - НЕТ !

Почему ? Ну вы сами наверное понимаете почему - основываясь на выводах
из всего вышеизложенного.


Поэтому если кто-то и сделает продолжение, то по всей видимости не те кто выпускал
первую игру.


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

Если игра делается только ради прибыли, то пострадают несомненно юзеры.

И наоборот если игра настоящая ИНДИ, как Cradle, то её ждет финансовый провал.
Игра будет крутейшая с точки зрения проделанной работы и вложенной в неё души.

Я просто нигде еще не видел таких игр как Cradle, правда.

Но увы. Продолжения у неё нет и не будет.

Потому что на этом обычно ставят большую и жирную точку.

А каково ваше мнение на этот счет ?

Знаете ли вы еще игры, которые были бы финансово неуспешны, но 
игрокам очень понравились ?

Поделитесь информацией.

cradle игра

cradle игра

Проследить за обсуждением статьи можно здесь -
Cradle / Колыбель история неуспеха

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

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



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


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