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


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

megainformatic - Как создать игру ? - Программируем сами - Самый первый шаг
        Как
подробнее...

Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт
Статьи сайта
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

megainformatic - Урок 7 2D-анимация

megainformatic - Урок 8 Загрузка/Сохранение текущей игры, режим паузы, режимы часов/будильника, запуск браузера Internet Explorer для показа сайта разработчика и других интернет-ресурсов

megainformatic - Урок 9 Тестирование и отладка приложения

megainformatic - Мои Музыкальные Миры

megainformatic - уроки Photoshop free

megainformatic cms express

megainformatic cms express

megainformatic cms express

megainformatic cms express files

megainformatic - Методы создания растровых изображений в Adobe Photoshop

megainformatic - Создание фотореалистичной текстуры травы

megainformatic - Рабочее пространство Adobe Photoshop

подробнее

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

Данный раздел я решил посвятить темам далеким от создания игр или сайтов :)))

Кому это интересно ?

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

Однажды я задался вопросом - Что такое ЭНЕРГЕТИЧЕСКИЙ КОКОН ?

подробнее

     
     
     
 
Основы 3D-программирования DirectX8.1 в Delphi 6-7: теоретические и практические основы создания игр.
 
Вывод Заставки
 
Продолжаем серию уроков, посвященных разработке Delphi DirectX игры. В данном уроке показано как вывести 2D-изображение на поверхность 3D-сцены. Дополнительно показан один из способов "затухания" экрана для эффектного вывода фирменной заставки.
 
[Все уроки]
 
Урок построен в форме упражнений. В упражнениях даются примеры модификаций исходного кода и краткое описание того, что при этом наблюдается и как это объясняется. Выполняя упражнения Вы лучше вникнете в суть проблемы.
   
ПОСТАНОВКА ЗАДАЧИ: Требуется организовать вывод 2D-изображения (текстуры) в 3-х мерной сцене. В чём суть проблемы? Суть в том, что при программировании Direct3D для вывода 2D-изображений отсутствуют специальные методы. Как это организовать - решаем вместе.
 

Для выполнения упражнений Вам понадобится:

- архив с исходным кодом; (588 Кб)

[downloads:17]

- архив с ОБЩИМ КОДОМ; (772 Кб)

Архив с исходным кодом содержит пример решения поставленной задачи, архив с общим кодом - содержит дополнительный общий код необходимый при разработке Delphi DirectX 8.1 - приложений.
 

Для начала откомпилируйте пример и запустите приложение. Убедитесь, что всё работает. (Если нет, то читайте файлы readme.txt приложенные к архивам)

 

Нормально работающий пример (см. файл game_gui.exe внутри архива game_gui.rar

[downloads:17] ) должен давать следующий результат: создание нормального Windows-окна, постепенное проявление на экране заставки, выдерживание ее некоторое время, затухание, вывод некототорой 3D-сцены (поверхность суши). Выход из приложения - [Escape].

 

Рассмотрим содержание примера с исходным кодом (game_gui.dpr).

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

 
Класс приложения - TD3DGameApp. Название класса чисто условное и его легко изменить в своих приложениях. Если Вы заглянете в исходный код (файл Main.pas проекта game_gui.dpr), то увидите что данный класс производится от TD3DAbstractApp. Основа данного класса приложения - из Donuts3D с небольшими изменениями.
 

Лучше уяснить структуру и функционирование данного класса можно рассмотрев пример Donuts3D. В контексте данного урока важны следующие опорные моменты:

SplashGameGUI: TD3DImage2D; //внутри класса объявлено следующее поле

В методе TD3DGameApp.DrawScreenSplash помимо прочего вызывается метод -

SplashGameGUI.DrawScaled(-1.05, 0.55, 0.9, 1.34, 1.34, DrawD3DImage2D_Filtered, Alpha);

Это и есть вывод заставки на экран.

 
Как видим, для вывода 2D-изображения в 3D-сцене используется класс TD3DImage2D. Реализация этого класса находится в модуле D3DGUI.pas. Этот модуль и этот класс могут послужить Вам примером того, как разработать новые классы для выполнения необходимых действий по подготовке игрового процесса. Ссылка на D3DGUI добавлена в uses модуля Main.pas
 
Вообще говоря, вывод 2D-изображения в 3D-сцене можно осуществить так, как это делается при выводе 2D-спрайтов (см. Donuts3D). Но тогда обязательно требуется использование камеры (CD3DCamera). Это не составляет никакой проблемы, как раз наоборот, рядом с игровым меню, на заднем плане, может отрисовываться какая-либо анимированная демонстрационная сцена игры, что даже улучшит внешний вид игрового экрана меню. Однако при этом нужно не забывать про то, что методы вывода 2D-изображения методом 2D-спрайтов (технология, известная под названием Billboarding) должны вызываться там же, где используется камера. В противном случае Вы будете ломать голову почему всё написано правильно, а 2D-изображения так и нет в сцене.
 

Обратите внимание на код внутри методов TD3DGameApp.DrawScreenSplash и TD3DGameApp.DrawDisplayList

Оба они содержат вызов метода Draw2DPictures;

Однако результат появляется только в методе TD3DGameApp.DrawDisplayList. Почему?

Именно по указанной причине: в методе TD3DGameApp.DrawScreenSplash нет установки вида из камеры (CD3DCamera.SetViewParams). В методе DrawDisplayList установка вида из камеры происходит в методе UpdateDisplayList, который вызывается из FrameMove. FrameMove вызывается в методе Run до метода Render. А уже Render содержит соответствующий вызов TD3DGameApp.DrawDisplayList.

Если Вам не совсем понятно что к чему, обратитесь к схеме Структура функционирования типового DirectX-приложения, а также к исходному коду.

 
В модуле D3DGUI.pas применяется более изящное решение. Если Вы хоть немного разбирались с Delphi DirectX, то наверное уже задавались вопросом каким образом осуществляется вывод текста. Для этого служит типовой модуль D3DFont.pas (представляющий собой адаптацию D3DFont.h + D3DFont.cpp из DirectX SKD). Там вы найдете класс CD3DFont. Внимательно посмотрев на реализацию методов DrawText и DrawTextScaled Вы найдете ответ на вопрос.
 
В модуле D3DGUI.pas как раз и применяется данное решение, т.е. вывод 2D-изображения осуществляется практически аналогично выводу текста классом CD3DFont. Есть конечно и некоторые отличия, но их Вы найдете в D3DGUI.pas
 
Расскажем теперь о правилах использования класса TD3DImage2D (эти правила касаются использования любых Direct3D8-производных объектов сцены - т.е. всего того, что будет отрисовываться на экране через D3D или помогать этому процессу - моделей, текстур, эффектов (шейдеры) и т.п.).
 

- внутри класса приложения или в виде отдельной переменной объявить поле с данным типом -

Some2DImage: TD3DImage2D;

- в методе создания приложения создать экземпляр класса


Some2DImage := TD3DImage2D.Create(TextureFormat); // TextureFormat = формат
// изображения, например
// D3DFMT_A8R8G8B8


- в методе инициализации 3D-сцены приложения (InitDeviceObjects, CreateDeviceObjects)
вызвать метод инициализации экземпляра класса


Some2DImage.InitDeviceObjects(pd3dDevice, TextureFilename);
// TextureFilename - путь и имя файла текстуры изображения

- в методе RestoreDeviceObjects приложения вызвать метод


Some2DImage.RestoreDeviceObjects;

- в методе InvalidateDeviceObjects приложения

Some2DImage.InvalidateDeviceObjects;

- в методе DestroyDeviceObjects приложения
SAFE_DELETE(Some2DImage);

============================================================

Для задания ключевого (прозрачного) цвета служит свойство
ColorKey (read/write)

Some2DImage.ColorKey := $00000000;

Для хранения имени и пути загруженного файла текстуры свойство-
TexFilename (read only)

SomeFilename := Some2DImage.TexFilename;


В методах отрисовки 3D-сцены приложения используются методы отрисовки 2D-изображения в 3D-сцене

Some2DImage.Draw(x, y, Flags, Alpha);

Some2DImage.Draw(x, y, Flags, Alpha);Some2DImage.Draw(x, y, Flags, Alpha);
// x, y - координаты (в пикселях) на экране; Flags - дополнительные
// опции отрисовки (DrawD3DImage2D_Filtered - задает линейную фильтрацию при выводе)
// Alpha (0..255) - полупрозрачность изображения - от прозрачного (0) до
// полностью непрозрачного (255).

 

Some2DImage.DrawScaled(x, y, z: Single; fXScale, fYScale: Single;
Flags: Cardinal; Alpha: Byte)

// то же, что и предыдущий метод, но x, y, z - не в пикселях, а в координатной системе Viewport (-1..+1). fXScale, fYScale задают масштаб в долях от окна Viewport (1 - во весь Viewport, 0.5 - в 1/2 от Viewport и т.д.). Такая система задания масштаба удобна тем, что не зависит от размеров окна 3D-сцены. Размеры окна в пикселях могут быть любые. Параметры Flags и Alpha - те же, что и в предыдущем методе.

 

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

В методе TD3DGameApp.DrawScreenSplash происходит вывод заставки -

SplashGameGUI.DrawScaled(-1.05, 0.55, 0.9, 1.34, 1.34, DrawD3DImage2D_Filtered, Alpha);

Попробуйте в качестве флага указать 0, т.е. -

SplashGameGUI.DrawScaled(-1.05, 0.55, 0.9, 1.34, 1.34, 0, Alpha);

Результатом будет вывод более четкого, но без плавного перехода (antialiasing) по краям изображения.

Замечание: после внесения изменений в код не забывайте перекомпилировать приложение, а уж после запускать и смотреть что получилось!

 

Каким образом реализуется плавное появление, а затем затухание для заставки?

Сначала попробуйте изменить строчку -

SplashGameGUI.DrawScaled(-1.05, 0.55, 0.9, 1.34, 1.34, DrawD3DImage2D_Filtered, Alpha);

вместо Alpha введите 255 -

SplashGameGUI.DrawScaled(-1.05, 0.55, 0.9, 1.34, 1.34, DrawD3DImage2D_Filtered, 255);

указанная особенность вывода заставки пропала. Заставка просто отображается в течении 9 секунд (SplashDelay).

Выше данной строки расположен следующий код -

Period := SplashDelay/3;
Phase := D3DX_PI/2*DXUtil_Timer(TIMER_GETAPPTIME)/Period;

if DXUtil_Timer(TIMER_GETAPPTIME) < Period then
Alpha := 255 - Round(Abs(255*(cos(Phase))));
if (DXUtil_Timer(TIMER_GETAPPTIME) > Period) and (DXUtil_Timer(TIMER_GETAPPTIME) < 2*Period) then
Alpha := 255;
if DXUtil_Timer(TIMER_GETAPPTIME) > 2*Period then
Alpha := 255 - Round(Abs(255*(sin(Phase))));

 
Как вы уже наверное догадались проявление и затухание заставки организовано за счет изменения значения Alpha - полупрозрачности полигона, на котором рисуется текстура заставки.
 
Прокомментируем указанные строки. Все время отображения заставки (SplashDelay) делится на 3 части и называется период. Момент изменения (фаза) вычисляется по указанной формуле.
 
Далее всё еще проще - за промежуток времени меньше, чем Период значение Alpha изменяется по косинусоидальной кривой, т.е. от 0 до 255 (см. формулу).
 
За промежуток времени от Период до 2 Периода значение Alpha остается постоянным. И, наконец, в промежуток времени от 2 Периодов до SplashDelay значение Alpha изменяется по синусоиде - от 255 до 0.
 
Т.к. во время показа заставки никаких полезных действий не производится, то в дальнейшем цикле разработки игрового проекта, можно использовать эту стадию начала работы игры для параллельного выполнения каких-либо полезных, но скрытых от пользователя действий: загрузка игровых моделей, подготовка сцены и т.п.
 

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

Для разработки действительного игрового проекта дополнительно потребуется решение следующих вопросов:

- создание и использование анимированных 2D-изображений для вывода меню и анимированных заставок (это касается расширения возможностей класса TD3DImage2D);

- создание и использование игрового меню;

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

 
[Назад] [Все уроки]
 
     
     
     
     
     
подробнее

megainformatic.ru Синицин А. С. Шарики на лифте - Как создать игру - Вставка созданной графики, звуков и музыки в игру

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

к содержанию

 

 

 

 

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

 

 

 

Это на самом деле непередаваемое ощущение - когда ты не просто нарисовал спрайт или сочинил музыку, но и когда твоё творчество ожило и стало частью игры - почти живого существа, за которым можно наблюдать и с которым можно поиграть !

 

 

 

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

 

 

 

Шарики на лифте - Как создать игру -

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

 

 

 

 

 

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

 

Там я уже наглядно показывал в какой папке размещен фон -

Media\textures\moved_bg\

 

 

 

 

Давайте откроем папку с игрой и внутри неё найдём папку Media. В этой папке лежат все ресурсы используемые игрой.

Ну а теперь Вам остается просто открыть подпапку представленную путём указанным выше, т. е.

Media\textures\moved_bg\

 

 

Шарики на лифте - Как создать игру - Вставляем фон заднего плана в игру

 

 

!!! ВАЖНО !!! Обращаю ваше внимание на то, что все манипуляции со вставкой ресурсов в игру можно выполнять только при выключенной игре. Иначе это приведет к ошибкам. Вновь вставленные ресурсы не будут работать пока игра не будет выключена полностью - т. е. её приложение полностью закрыто, и запущена снова. Поэтому учитывайте этот ВАЖНЫЙ !!! момент.

 

 

Переименовываем файл back_bg.jpg например в back_bg_.jpg

А на его место вставляем новый фон, и называем его также как был назван переименованный - back_bg.jpg

 

 

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

Т. е. варианты Back_bg.jpg или back_bg.JPG и любые их варриации будут неправильными и приведут к ошибкам при запуске игры !

 

 

Также все буквы должны быть записаны латиницей !!! Если вы например "a" или "c" напишете как русскую, это тоже приведет к ошибке при запуске игры.

 

Шарики на лифте - Как создать игру - Вставляем фон заднего плана в игру

 

 

 

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

 

 

 

На скриншоте ниже видно, как фон заднего плана виден через просветы в фонах переднего и среднего планов.

 

Шарики на лифте - Как создать игру - Вставляем фон заднего плана в игру

 

 

 

Давайте теперь попробуем вставить прыгающий шарик из урока - Анимация прыжков шарика в игру.

 

Закрываем игру нажав кнопку Close (красная кнопка с белым крестиком) справа вверху окна программы или по клавише [Esc], или выбрав пункт меню Game > Quit

 

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

Media\textures\ball\small_jump\

 

 

Обратите внимание !!! В уроке Анимация прыжков шарика мы создавали спрайт размерами 512х512 пиксель, а в игре для этих шариков используются спрайты 256х256. Вы можете сами уменьшить спрайт до нужных размеров в Photoshop - через пункт меню Изображение > Размер Изображения, либо взять готовый спрайт из папки - bol_hmg\lessons\content\anim_ball\work\ дистрибутива комплекта уроков, спрайт называется anim_ball_256.tga

 

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

 

 

Шарики на лифте - Как создать игру - Некорректно выводимый шарик

 

 

Чтобы шарик отобразился корректно даже если спрайт использовать размерами 512x512 или вообще какого-то произвольного размера, есть еще другой способ. Об этом речь пойдёт ниже. А пока давайте завершим начатое.

 

Итак, проделываем аналогичные манипуляции, которые мы делали когда вставляли фон. Т. е.

 

Файл green_ball_small_jump.tga переименовываем в green_ball_small_jump.tga, а на его место вставляем новый и называем green_ball_small_jump.tga т. е. в точь-в точь также как назывался первый вариант зеленого шарика.

 

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

 

 

 

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

 

 

Ниже представлены примеры скриншотов на которых видно и наш вставленный в игру шарик и фон заднего плана.

 

 

Шарики на лифте - Как создать игру - Вставляем фон заднего плана в игру

 

Шарики на лифте - Как создать игру - Вставляем фон заднего плана в игру

 

 

 

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

 

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

 

 

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

 

 

 

Для этого воспользуемся утилитой Coords2D, которую я также упоминал в уроке Анимация прыжков шарика.

 

 

 

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

Шарики на лифте - Как создать игру - Вставляем фон заднего плана в игру

 

 

Обратите внимание, что в файле

bol_hmg\lessons\utils\Coords2D\Media\textures\tex_list.txt

содержимое которого Вы и видите на скриншоте выше,

 

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

Так вот, если смотреть слева-направо, то самый первый шарик - он же первый в списке tex_list.txt

ball\anim_ball_256.tga; -0.4f; -0.17f; 0.8f; 0.32f; 0.32f; 64; 128; 0; 0; 4; 8.0f; 7.5f;

Это наш вставленный шарик, но уменьшенный. Сравните масштабные коэффициенты (которые я отметил красным цветом) с этими же значениями у этого же шарика, но того, который самый крайний справа, т. е. по счёту четвертый.

и в списке tex_list.txt он также 4ый и имеет такие параметры -

ball\anim_ball_256.tga; 0.5f; 0.1f; 0.8f; 0.52f; 0.52f; 64; 128; 0; 0; 4; 8.0f; 7.5f;

 

Теперь Вы поняли в чём дело ? Просто изменились значения масштабных коэффициентов xScale и yScale, поэтому шарик стал меньше. Однако как Вы можете судить по картинке - он не очень хорошего качества (сравните левый крайний шарик и все остальные). Поэтому сжимать спрайты или растягивать крайне нежелательно - чтобы как раз не было таких вот визуальных искажений.

 

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

 

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

 

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

 

Для этого в файле -

bol_hmg\bol\Media\textures\ball\tex_list.txt

 

Вам нужно строчку -

small_jump\green_ball_small_jump.tga; 300.6f; 180.1f; 0.85f; 0.52f; 0.52f; 64; 128; 0; 0; 4; 8.0f; 25.5f;

 

изменить на -

small_jump\green_ball_small_jump.tga; 300.6f; 180.1f; 0.85f; 0.32f; 0.32f; 64; 128; 0; 0; 4; 8.0f; 25.5f;

 

т. е. масштабные коэффициенты - 0.52f; 0.52f;

заменить на 0.32f; 0.32f;

 

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

 

Но зато теперь Вы знаете как изменить масштаб игрового спрайта в игре, и можете поэкспериментировать в утилите Coords2D.

 

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

 

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

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

bol_hmg\bol\Media\sounds\bol_create.wav - это звук создания шарика

bol_hmg\bol\Media\sounds\bol_delete.wav - это звук удаления шарика

 

Файлы должны быть в качестве 16 bit, 44100 Hz, стерео.

Это важно учитывать, иначе игра просто не сможет загрузить и использовать данный звук. Кроме того, звуки не должны быть слишком долгими. Например длина представленных всего 0,5 сек. Слишком длинные звуки приведут к большим задержкам прежде чем Вы кликните и услышите следующий звук.

 

С музыкой дело обстоит еще проще.

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

bol_hmg\bol\Media\sounds\music\

И добавить его имя в список

bol_hmg\bol\Media\sounds\music\music_themes_list.txt

Обратите внимание в данном файле также не должно нигде быть пустых строчек !!!

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

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

bol_hmg\bol\Media\sounds\music\music_themes_list.txt

 

 

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

 

 

 

 

До новых встреч ! Ждите обновлений на сайте - новых игр, уроков и прочих полезных и интересных материалов. Спасибо за проявленное внимание.

 

 





к содержанию

подробнее

Пишем свою соц. сеть - модуль предложений для webjob

Да да, не удивляйтесь. Вы попали именно туда, куда попали.

Эта статья расскажет Вам как написать модуль предложений для своей социальной сети.

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

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

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

А это станет понятно исходя из задач, которые Вы ставите перед своей социальной сетью.

Конечно всегда проще найти готовое решение, но никакое готовое решение не может решить всех задач.

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

Следовательно - наилучший выбор - начинать работу с нуля.

И самое главное - не ошибиться с выбором разработчика проекта.

Сам проект логично разбить на этапы.

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

Итак, перейдём к делу.

Как должны работать предложения (offer) ?

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

Есть пункт меню в ЛИЧНОМ КАБИНЕТЕ -

КОНТЕНТ > Предложения

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

СОЗДАТЬ, ИЗМЕНИТЬ, УДАЛИТЬ.

При Создании НОВОГО предложения оно проходит модерацию (СУПЕРАДМИНОМ или МОДЕРАТОРОМ).
Однако модерацию можно и отключать (но в первом приближении модерация вообще не будет реализована).

После Создания предложения оно попадает на главную страницу сайта и постепенно сдвигается вниз другими
более свежими предложениями.

Предложение имеет следующие явные и скрытые поля:

явные - дата/время публикации
заголовок предложения (не более 150 символов)
текст предложения (не более заданного количества символов)

скрытые
- id автора
- oid предложения - страница на которой размещается предложение.

ИЗМЕНИТЬ
- позволяет изменить выбранное предложение.

УДАЛИТЬ - УДАЛЕНИЕ предложения без возможности восстановления.

После того, как предложение ПУБЛИКУЕТСЯ, то под ним выводится форма вопроса аналогичная странице контактов
пользователя автора данного предложения.

НЕЗАРЕГИСТРИРОВАННЫЕ ПОЛЬЗОВАТЕЛИ могут задать вопрос по данному предложению через форму вопроса.
ЗАРЕГИСТРИРОВАННЫЕ ПОЛЬЗОВАТЕЛИ, войдя на сайт видят аналогичную форму,
но она не содержит поля для указания e-mail.

Структура данных для таблицы offers

offers

содержит поля

1) offer_id - уникальный id
2) offer_title
3) offer_publicate_datetime
4) offer_text
5) offer_author_id
6) offer_state - состояние предложения - published - опубликовано; closed - закрыто; banned - забанено;
7) offer_question_count - количество вопросов заданных через форму данного предложения
поскольку предложения будут удаляться, то более эффективно хранить их не в базе данных, а в файле .csv

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

Это было теоретическое описание того, что требуется для модуля предложений.

В следующих статьях Мы поэтапно рассмотрим какой код потребуется написать для реализации поставленной задачи.

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



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

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

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

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



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


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