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


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

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

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

сайт megainformatic - Архив Новостей

сайт megainformatic - Ваши Отзывы

сайт megainformatic - Автор

сайт megainformatic - Каталог Статей

сайт megainformatic - Добавить Ваш Сайт

сайт megainformatic - Технология

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

сайт megainformatic - Работа с базами данных MySQL

сайт megainformatic - Говорящий Комикс Веселый Буквоежка

сайт megainformatic - Добавляем созданный счетчик на все страницы Вашего Сайта

сайт megainformatic - СССР - Создаем Сайт Своими Руками - Экспорт/импорт данных из баз данных MySQL

megainformatic - СССР - Создаем Сайт Своими руками - Введение в php

megainformatic - СССР - Создаем Сайт Своими Руками - Выводим дату и время в формате RU

сайт megainformatic - уроки php

megainformatic - Уроки 3ds max

megainformatic - КАК СОЗДАТЬ СВОЮ ИГРУ - Веселый Буквоежка Ваше Визуальное Шоу / Fun Letter Eater You Visual Show

megainformatic - Формы оплаты заказа

megainformatic - оплата через систему QIWI - выбор продукта

megainformatic - КАК СОЗДАТЬ СВОЮ ИГРУ - Набор разработчика игр - Нечто: Необъяснимое - в плену желаний

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

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

megainformatic - Как создать игру ? - Программируем сами - Содержание

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 - Как создать игру - Веселый Единственный Буквоежка - движение и анимация героя

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

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

подробнее

     
     
 
МОДЕЛИРОВАНИЕ НА УРОВНЕ МНОГОУГОЛЬНИКОВ
 
[Все уроки 3ds max] [Галерея моделей] [далее]
 

Создание модели книжного шкафа

Нам необходимо смоделировать представленный объект, затем применить к нему материал – дерево.

 
каркасный вид модели книжного шкафа сплошной вид
 

Создайте бокс:

Create Panel > Standard primitives > Box

В окне параметров задайте следующие размеры:

Length = 2,8m; Width = 0,8m; Height = 2,6m;

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

Length Segs = 4; Width Segs = 3; Height Segs = 3;

 

Приступим к процессу видоизменения. Преобразуйте объект в editable poly:

Modify Panel > object name (Box) > щелчок правой кнопкой мышипо 1 пунктуокнастека > Convert To Editable Poly.

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

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

Если вы щелкали вне объекта, то снова выберите объект (щелчком по нему).

Клавишей [F4] включите режим отображения граней (edged faces).

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

В окне стека разверните узел у пункта Editable poly и выберите подпункт Polygon.

Удерживая нажатой клавишу [Ctrl] выделите две грани в центре.

 
выделенные грани
 

Попробуем «вдавить» эти грани внутрь объекта, чтобы сформировать будущее пространство полки.

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

В появившемся диалоговом окне задайте: Extrusion Height = -0,7m; Затем OK.

 
грани после вдавливания
 

Расширение размеров пространства полки

Перейдите в окно Top viewport и увеличьте, переместите вид если требуется. На панели Modify раскройте узел Editable poly и выберите уровень суб-объекта Vertex (вершины).

Используя выделение мышью в окне Top viewport выделите средние верхние четыре вершины. При этом будут выделены все видимые и не видимые вершины объекта в данной зоне.

 
выделение двенадцати вершин
 
Удерживая нажатой [Ctrl] выделите аналогично 12 вершин другой стороны.
 
выделение второго набора из 12 вершин с другой стороны
 
Используя Select and Uniform Scale сместите вершины по координатной оси Y. В окне Perspective viewport вы увидите результат вашей работы.
 
раздвижка вершин масштабированием для достижения эффекта тонких стенок
 
Вдавите верхние две грани для получения пространства верхней полки.
 
получение верхней полки
 

Создание 4-х ножек

В окне Perspective viewport переверните шкаф так, чтобы было видно его дно. Используя панель модификации и уровень Polygon выделите 4-ре крайних прямоугольника по периметру дна. Используя кнопку Extrude и кнопку параметров (рядом с ней) – в группе Edit Polygons – выдавите ножки на 0,1m.

 
выдавливание ножек
 

Теперь коснемся понятия рендеринга или отрисовки. Отрисовка (Рендеринг) созданной модели – это растеризация трехмерного изображения в виде плоского.

Выберите пункт меню Rendering > Render.

В открывшемся окне Render Scene в группе Output size щелкните по кнопке 640х480

 
размер выходного изображения при растеризации
 

Нажмите кнопку Render в самом низу окна.

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

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

Под материалами в Max подразумеваются плоские изображения (называемые также текстурами) наносимые (или проецируемые) на поверхность созданных объектов.

Применим к нашей модели шкафа материал wood (дерево).

Вызовите редактор материалов – клавиша M или Rendering> Material Editor

В окне образцов щелкните любой пустой слот.

По умолчанию все слоты имеют shader Blinn.

Понятие шейдера (shader) включает следующее – это специальный алгоритм (или набор алгоритмов) моделирующий поведение материала для придания большей реалистичности. Шейдеры моделируют отражение, приломление, поглощение света.

Тип шейдера можно менять в окне параметров – группа Shader Basic Parameters. Каждый из типов шейдеров имеет свой уникальный набор параметров, хотя конечно есть и нечто общее.

Названия шейдеров обычно представляют или имена авторов или свойства и поведение и т.д.: Blinn, Anizotropic, Metal и другие.

Для моделирования поведения большинства простых материалов подходит именно шейдер Blinn, который применяется наиболее часто. Другие шейдеры больше подходят для специфических материалов – Anizotropic и Metal – для анизотропных веществ, т.е. кристаллов, металлов – материалов в которых свойства среды зависят от направления.

В качестве краски (цвета), который можно использовать для заполнения объекта можно использовать растровое изображение (текстуру):

В группе Blinn Basic Parameters есть три пункта:

Ambient – окружающий свет

Diffuse – рассеянный свет

Specular – отраженный свет.

 
редактор материалов и рассеянный свет
 

Нажмите пустую кнопку напротив пункта Diffuse – и мы используем в качестве рассеянного света материала текстуру.

В появившемся окне Material/Map Browser выберите рисунок wood. Двойной щелчек приведет к автовыбору.

 
выбор материала wood
 
Будет открыто окно параметров проекций (Map) – здесь пока ничего не будем менять, а просто выберем в верхнем выпадающем списке самый первый пункт – имя создаваемого материала.
 
переход на уровень параметров материала в целом
 

Мы снова попадем в окно свойств этого материала. Переименуйте материал назвав, например wood_01. Если материал имеет несколько проекций (Maps), то их тоже можно переименовывать давая другие названия. Все изменения будут сохранены вместе с вашим файлом сцены.

Применим созданный материал к нашему объекту – шкафу – щелкните слот материала и перетаскивайте его на объект в окне Perspective viewport. Если никаких изменений не произошло, то нажмите кнопку Show map in viewport в окне редактора материалов.

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

Закройте редактор материалов и попробуйте произвести рендеринг вашей сцены.

 

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

Поправим дело: вызовите редактор материалов и доберитесь в нем до параметров проекции с рисунком дерева (wood). В группе Coordinates можно управлять наложением рисунка на объект, а именно:

Offset – производить смещение на указанное число единиц по данной координатной оси;

Tiling – организовывать цикличное (повторяющееся) заполнение образцом указанное количество раз. Это нам и требуется – попробуйте изменять значения и сравнивать изменения проводя Рендеринг.

Angle – позволяет поворачивать образец на некоторый угол. Попробуйте повернуть по координате Y на 90 градусов.

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

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

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

Используя Modify panel > Editable Poly > Polygons выберите две прямоугольных грани в нижней части шкафа.

 
окончательный вариант модели книжного шкафа
 

Используя кнопку Extrude вдавите дверки на значение (Amount = -0,1m).

Создание ручек

Создайте маленький цилиндр (Cylinder) или конус (Cone) (0,01 х 0,06). Выровняйте расположение ручки, примените материал, создайте вторую ручку.

Между ручками создайте планку (используйте бокс нужных размеров).

В итоге у Вас должно получиться что-то наподобие приведенного на рисунке.

 

 
     
     
  [Все уроки 3ds max] [Галерея моделей] [далее]  
подробнее

     
  [к содержанию] [назад] [далее]  
     
 

Рисование фона (урок 6 часть 2)

 

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

1.      Усвоив содержание первой части данного урока Вы уже можете самостоятельно создать облако. Для градиентной заливки используйте Fountain Fill.

2.      Световой блик в нижней части облака – это фигура повторяющая по форме низ облака, белого цвета и с применением инструмента Полупрозрачность (Interactive Transparency Tool).

 

3.      Небо – это прямоугольник на заднем плане, не имеющий обводки, с градиентной заливкой.

4.      Капельки дождя, падающие из облака: создайте эллипс, создайте треугольник используя Polygon Tool и количество вершин - 3

 

разместите треугольник как показано на рисунке

 

выделите обе фигуры, обведя вокруг них мышью (для выделения лучше использовать инструмент Pick tool) и сплавьте их в единое целое.

 

Выберите инструмент Shape и выделив лишние узлы (с нажатой клавишей Shift) удалите их клавишей [Delete].

Поверните каплю: для этого выберите объект, он станет выделен. Щелкните в центре объекта (по крестику).

Появятся маркеры вращения/искажения. Используя их поверните объект.

 

Создайте для капли обводку голубого цвета, тощиной 1 pt и градиентную заливку линейного типа, в требуемом направлении, с требуемыми цветами: пока объект является текущим (выбранным) выберите в окне свойств объекта вкладку Outline (обводка). Замечание: если это окно не отображается или вы скрыли его – выберите пункт Window > Dockers > Properties

На вкладке задайте требуемые параметры – width (толщину) и color (цвет) обводки.

Для выполнения градиентной заливки откройте вкладку Заливка (Fill) и выберите режим градиентной заливки (Fountain fill)

 

Для изменения параметров градиента: задайте требуемый вид и цвета. Нажав кнопку Edit вы сможете задать и ряд дополнительных параметров, в частности: Angle – угол вращения и Mid-point – срединную точку, задающую баланс цветов градиента

 

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

 

Равнина на рисунке – это прямоугольник, без обводки, с текстурной заливкой из группы Samples 9 > Above the Storm. Вам останется только задать в параметрах текстуры подходящие цвета.

Не забудьте пометить равнину на задний план – правая кнопка мыши в центре объекта>Order>To Back, иначе она закроет персонажа.

 

Создание объектов произвольной формы: горы, река, камень поднятый над головой – для этого можно использовать инструменты Freehand и Shape. Причем Freehand используйте для создания прототипа объекта.

 

Обратите внимание, объект должен быть замкнут, т.е. начальная и конечная точки должны встретиться! В противном случае объект не заливается.

Для автозамыкания контура используйте кнопку Auto-Close curve на панели свойств

Shape – используйте для видоизменения формы объекта – за счет перемещения существующих узлов, их добавления/удаления, изменения типа отрезков между узлами (кривая/прямая).

 

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

 

Надпись создается инструментом Text

Текст может быть двух видов: Artistic (художественный) и Paragraph (форматированный). Первый создается посредством простого щелчка и набором с клавиатуры, при этом доступны для изменения все стандартные свойства векторного объекта – масштаб, заливка, обводка и т.п. Второй создается путем рисования курсором мыши рамки и служит для набора блоков форматированного текста. Такой текстовый блок уже не является векторным объектом, поэтому для него доступны только свойства обычные для форматированного текста (шрифт, размер, цвет и т.п.).

Полупрозрачность надписи – см. шаг 2.

 

Тени создаются искусственно или с использованием инструмента Interactive Drop Shadow

 

Инструмент Drop Shadow (падающая тень) позволяет создавать тени от объектов по форме их силуэта. Для этого надо с выбранным инструментом нажать в нужной части объекта (например в центре) и удерживая левую кнопку мыши протянуть в нужном направлении.

Искусственные тени – это фигуры нужной формы, закрашенные черным с применением полупрозрачности Transparency.

 

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

 
     
  [к содержанию] [назад] [далее]  
     
     
подробнее

     
     
  Добро пожаловать в систему управления сайтом megainformatic cms !  
     
  [к содержанию] [назад] [далее]  
     
 

3) Добавление модулей обеспечивающих минимально необходимый функционал

 
     
 

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

Для редактирования кода можно воспользоваться обычной программой Блокнот, но мой Вам совет - обзавестить хорошим html-css-php редактором, например Dream Weaver CS 5 или выше.

 
     
  Итак, по аналогии с тем, что у вас есть в папке megainformatic (вы можете просто зайти в эту папку, куда Вы установили megainformatic cms, и посмотреть код файла index.php) нужно добавить как минимум два блока кода  
     
  изначально у вас есть index.html, вот с таким кодом  
     
 

<html>
<head>
<title>Мой персональный сайт</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link rel="stylesheet" href="css/style.css" type="text/css" />
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

<table align="center" id="container" width="600" height="480" border="0" cellpadding="0" cellspacing="0">
<tr>
<td background="images/header.jpg" width="600" height="76"><div id="header">Мой персональный сайт</div></td>
</tr>
<tr>
<td background="images/index_02.jpg" width="600" height="39"><div id="menu"><a href="#">Главная</a> <a href="#">Статьи</a> <a href="#">Проекты</a> <a href="#">Контакты</a></div></td>
</tr>
<tr>
<!--background="images/index_03.jpg"-->
<td bgcolor="#ececec" width="600" height="320"><div id="content">
<p>Добро пожаловать на мой персональный сайт !!! Здесь Вы найдете много полезной информации, новостей, событий. Вы сможете реализовать свои планы и укрепить свой бизнес.</p>
<p>Что нужно для создания своего сайта ? Главное - желание. Всё остальное - можно постепенно и планомерно освоить.</p>
<p>Сколько времени потребуется на создание сайта ? Простейший сайт можно создать за пару дней. Хороший, полнофункциональный сайт создается дни, месяцы и даже годы.</p>
<p>Но вы наверное в курсе, что интернет устроен таким образом, что стоит вам только подумать и окажется, что нужное Вам уже давно есть и лежит, ожидая пока Вы возьметесь за его изучение и освоение.</p>
<p>Так вперед ! И смелей за дело.</p>
<p>Вы сами творец своих идей и их воплощения.</p>
</div></td>
</tr>
<tr>
<td background="images/index_04.jpg" width="600" height="45"><div id="footer">(c) Мой персональный сайт 2010-2011</div></td>
</tr>
</table>

</body>
</html>

 
     
  Вам остается пересохранить файл как index.php и внести в него следующий php-код (выделен зеленым цветом)  
     
 

<html>
<head>
<?php
include "config.php";

global $pageid;
$pageid= $_GET['page'];
global $pagetitle;
$pagetitle = "Мой персональный сайт - Новости";
global $pagecontent;
$pagecontent = "papers/home.txt";

if ($pageid != NULL)
{

if ($rc = mysql_connect($dbhost, $dbuser, $dbpassw))
{
mysql_select_db($dbsite);
$table = "papers";

$sql = "SELECT * FROM $table WHERE pageid = '$pageid'";
$s = mysql_query($sql);

$a = mysql_fetch_array($s);
$pagetitle = $a[pagetitle];
$pagecontent = $a[pagefile];


if ($pagetitle == "" )
{
$pageid = 1;
$pagetitle = "Мой персональный сайт - Новости";
$pagecontent = "papers/home.txt";
}

mysql_free_result($s);

}


}

echo "<TITLE>$pagetitle</TITLE>";
?>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link rel="stylesheet" href="css/style.css" type="text/css" />
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

<table align="center" id="container" width="600" height="480" border="0" cellpadding="0" cellspacing="0">
<tr>
<td background="images/header.jpg" width="600" height="76"><div id="header">Мой персональный сайт</div></td>
</tr>
<tr>
<td background="images/index_02.jpg" width="600" height="39"><div id="menu"><a href="#">Главная</a> <a href="#">Статьи</a> <a href="#">Проекты</a> <a href="#">Контакты</a></div></td>
</tr>
<tr>
<!--background="images/index_03.jpg"-->
<td bgcolor="#ececec" width="600" height="320"><div id="content">
<?php

$content = file($pagecontent);

foreach( $content as $line )
{
$j++;
echo $line;
}

?>

</div></td>
</tr>
<tr>
<td background="images/index_04.jpg" width="600" height="45"><div id="footer">(c) Мой персональный сайт 2010-2011</div></td>
</tr>
</table>

</body>
</html>

 

 
     
  Данный код превратит Ваш одностраничный сайт в многостраничный. Т. е. страница index.php будет брать из базы данных имена файлов контента и открывать эти файлы, выводя их содержимое в браузер. И вы получите именно то, что нужно - имея в наличии лишь одну страницу и множество файлов контента => многостраничный сайт.  
     
  [к содержанию] [назад] далее мы разберем как происходит обращение к разным страницам вашего сайта и как создается контент для этих страниц  
     
     
подробнее

     
  [Назад] [Все уроки] [Далее]  
     
 

9/06/2008 Воспроизведение в игре музыки в формате XM.

Для воспроизведения используется компонент MiniFMOD 1.78

[downloads:14]

переписанный на Delphi. Успешно используется в примере игры XTropper - http://XProger.mirgames.ru (автор XProger).

 

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

В модуле XTropper.dpr -

uses {...} MiniFMOD in 'MiniFMOD\MiniFMOD.pas',

l_sound,

между операторами begin и end. -

snd_Init;

Game_Init;

внутри цикла "прокачки" сообщений -

Game_Update;

snd_Update;

 

function WndProc -

Case message of
WM_QUERYENDSESSION, WM_CLOSE:
begin
{...}
snd_deInit;

{...}

if inMenu then
Menu_Message(message, wParam, lParam);

 

 

Старт воспроизведения музыки - в модуле XTropper.dpr -

между begin и end.

Game_Update -

в модуле l_game.pas -

Game_Update -

XMStop

XMPlay

{...}

Game_Init > MenuInt

 

Процедуры GameStart и GameFree -

в модуле l_menu.pas -

Menu_Init, MenuLoad

{...}

procedure Menu_Message -

Game_Start;

 

Обобщим полученную информацию -

Исходный код для работы с MiniFMOD находится в папке MiniFMOD

в этой папке находятся

MiniFMOD.obj - по всей видимости скомпилированный в MSVS файл библиотеки работы с minifmod

MiniFMOD.pas - интерфейсы для использования данной библиотеки

Так и есть в комментариях к файлу MiniFMOD.pas приведено следующее -

{
MiniFMOD 1.7 is a free C library from Fairlight
Technologies (http://www.fmod.org) which allows
you to play .XM files. Compiled into a .OBJ,
it is then possible to use it in any language
that supports OMF .OBJ files.

Here is the Delphi header I made for it.

Twis (June 2004).
}

Т.е. это говорит именно о том, что obj-файл это объектный файл библиотеки minifmod 1.7

Следует отметить, что minifmod не гарантирует 100% точности и идентичности звука XM-файла по сравнению скажем с воспроизведением в плеере или трекере. Об этом свидетельствуют заметки в readme содержащиеся в дистрибутиве midifmod178.rar (85 Кб). Однако на первых порах для игры данная библиотека думаю подойдет.

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

 

Продолжим обобщения -

Итак, в папку проекта игры нужно добавить папку MiniFMOD содержащую указанные выше 2 файла.

Далее -

в раздел uses модуля проекта или модуля приложения добавить ссылку на файл MidiFMOD.pas

модуль l_sound ? Суть вопроса: Как происходит воспроизведение музыки при помощи MiniFMOD -

путем вывода результата непосредственно на звуковую карту или же требуется предварительный рендеринг в звуковой буфер DirectSound с последующим выводом полученного через IDirectSound?

Поскольку в модуле l_sound содержится ссылка на MidiFMOD.pas, то скорее всего это 2 вариант, т.е.

при помощи miniFMOD XM файл сначала выводится в выделенный звуковой буфер IDirectSoundBuffer, а затем полученный кусочек уже воспроизводится средствами IDirectSound.

Однако эксперимент с комментированием ссылки на uses MiniFMOD внутри модуля l_sound показывает, что ошибок компиляции не возникает. Следовательно l_sound не использует MiniFMOD и ссылка возможно осталась ошибочно.

Смотрим далее -

 

из-за указанной особенности в uses также нужно добавить использование модуля l_sound.pas написанного XProger

Где-то после создания окна приложения, например в OneTimeSceneInit вызвать процедуры подобные snd_Init и Game_Init.

внутри метода Run -

перед FrameMove или даже внутри FrameMove вызываем процедуры подобные

Game_Update;

snd_Update;

Следует обратить внимание на то, что - в модуле проекта XTropper.dpr между begin и end. -

{...}

while not isQuit do
begin
while PeekMessage(msg, 0, 0, 0, PM_REMOVE) do
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;

if not glActive then
WaitMessage
else
begin
Time := GetTimer;
Time_Delta := Time - Time_Old;

flag := false;
for i := 1 to Time_Delta div 20 do
// будет ли влиять указанная периодичность на качество воспроизведения???
begin
Game_Update;
snd_Update;
flag := true;
end;

if flag = true then
Time_Old := Time - Time_Delta mod 20;
// или это не окажет влияния???
Game_Render;
end;
end;

{...}

 

внутри MsgProc -

при WM_DESTROY -

//WM_QUERYENDSESSION, WM_CLOSE: //в модуле проекта XTropper.dpr закрытие происходит по данным сообщениям

Game_Free;
//внутри данной процедуры происходит освобождение объекта XM-плеера - XMFree.

snd_deInit;

 

Это всё что касается создания, обработки и уничтожения объектов воспроизведения музыки.

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

 
Использование модуля l_sound.pas можно пока оставить без изменений, поскольку он выполняет роль фактического плеера, служит для управления звуком (запуск, стоп, громкость и т.п.) на уровне возможностей IDirectSound. Единственно, что поскольку l_sound.pas ориентирован на работу со старыми интерфейсами из модуля DirectX.pas (версии DirectX 6), то в этом плане возможно потребуется его переделка.
 

Game_Init -

Menu_Init -

XMLoadFromFile('data\music\baits.xm');
XMPlay;

Game_Update -

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

XMPlay //т.е. сначала кусок выводится потом работа продолжается, а затем выполняется останов и снова вывод новой порции в буфер Это предположение, посмотрим что на практике!!!

 

 

Game_Free -

XMStop;
XMFree;

В приложении XTropper воспроизведение музыки управляется через объект меню -

внутри функции обработки сообщений (function WndProc ...) -

Game_Free при сообщениях WM_QUERYENDSESSION, WM_CLOSE, а в конце ее -

if inMenu then
Menu_Message(message, wParam, lParam);

При выборе пункта меню Start - внутри указанной процедуры -

Game_Start;

Game_Start -

XMFree;
XMLoadFromFile('data\music\rave.xm');
XMPlay;

 

Внутри модуля l_menu.pas также есть процедура -

procedure Menu_Load;
begin
XMFree;
XMLoadFromFile('data\music\baits.xm');
XMPlay;
end;

Где и как она вызывается?

Ответ - она вызвается внутри модуля l_input.pas в ответ на нажатие Escape -

procedure KeyOnUp(ID: Byte);
begin
Key[ID] := false;
case ID of
VK_ESCAPE : if not inMenu then
begin
snd_StopAll(0);
Player.ResetKeys;
if Player.Health = 0 then
Menu_Load;
inMenu := true;
end;

end;
end;

 

 

Теперь рассмотрим работу со звуком - использование модуля l_sound.pas в приложении XTropper -

Рассмотрение пока не требуется, т.к. XM воспроизводится без IDirectSound. Однако таким образом не используются все преимущества IDirectSound. В частности отсутствует возможность регулировки громкости музыки.

 

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

Оказалось достаточно даже следующего способа работы:

Создаем 2 метода -

function TD3DGameApp.InitMusic: HResult;
begin
result := S_OK;

XMLoadFromFile('Media\Music\wizard_morning.xm');
XMPlay;
end;

procedure TD3DGameApp.FreeMusic;
begin
XMStop;
XMFree;
end;

 
И вызываем их где-либо, например в конце CreateSoundObjects и DestroySoundObjects. Всё. При старте приложения сразу же включается музыка.
 

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

XMStop;
XMFree;

XMLoadFromFile('Media\Music\wizard_morning.xm');
XMPlay;

 

Возникает воспрос как регулировать громкость мелодии?

Поскольку miniFMOD скорее всего воспроизводит музыку через средства Windows без DirectSound, то теоретически должна быть возможность регулирования громкости за счет доступа к глобальному регулятору громкости системы. Есть ли такая возможность в модуле MMSystem.pas ?

 

Организация проигрывания различных музыкальных тем в разных частях приложения:

При старте приложения должна играть 1 тема,

При выходе в главное меню - другая

При переходе к игровой сцене - тема для нее.

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

При старте игровой сцены должно включаться воспроизведение.

При выходе из игровой сцены воспроизведение должно останавливаться.

При удалении игровой сцены должен очищаться объект проигрывателя XM-мелодии.

Остановка и последующий старт воспроизведения не приводят к моментальному появлению звука. Имеет место некоторая задержка. Это свидетельствует о том, что для моментального включения/отключения мелодии нужно воспользоваться регулировкой громкости.

В модуле MMSystem.pas действительно есть функция - function waveOutSetVolume

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

Можно тажке посмотреть как реализовано управление громкостью в мультимедиа-плеере TMediaPlayer. Это ничего не дает. Там нет таких процедур!!!

Однако читая документацию по waveOutSetVolume, а также просматривая код модулей MMSystem.pas и MiniFMOD.pas обнаруживаем, что

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

2) экспорты некоторых функций - в модуле MiniFMOD.pas являются сходными из аналогичных модуля MMSystem.pas Это еще раз подтверждает, что музыка воспроизводится минуя DirectSound обращаясь напрямую к системным функциям мультимедиа. Это же дает зацепку о способе регулировки звука при помощи указанного метода.

waveOutSetVolume требует 2-х параметров:

HWAVEOUT hwo, - обработчик устройства воспроизведения
DWORD dwVolume - громкость - младшее слово - левый канал, старшее - правый.

[далее] - о воспроизведении музыки при помощи библиотеки OggVorbis

 
     
  [Назад] [Все уроки] [Далее]  
     

PSI Siberian Conflict Reincarnation - Сибирский Конфликт Война Миров Реинкарнация



Обновление: создание проекта пока приостановлено, т. к. я занимаюсь другим проектом - ria pc game.

Но !

На просторах интернет нашел первую демо-версию игры.

Игра содержит правда всего 2 уровня, для запуска не требуется диск.

демо версия 14.11.2005
Размер дистрибутива - 412 Mb.

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

CRC32: F427DE57
MD5: D345849F35FEE8B4F145A14EB511BCB7
SHA-1: F30B77FA070DCC30623EA43CC06F240D68FF18C2
Контрольные суммы можно проверить утилитой

HashTab

Утилиту нужно скачать, установить (запустив скачанный exe файл) и после установки
у вас появится новый пункт в контекстном меню свойств файла.
PSI Siberian Conflict - Сибирский Конфликт Война Миров - утилита HashTab проверка контрольных сумм





Когда-то в далеком 2006 году я играл в эту игру.

Давненько хотелось поиграть снова, но увы игра не работает на
Win 7 / 8 / 10.

PSI Siberian Conflict - Сибирский Конфликт Война Миров



Предистория

Игра повествует нам о противостоянии Советских войск и Пришельцев.



Действие разворачивается в 1961 (2-ом или даже 3-ем) годах.

Это альтернативная история о событиях произошедших много лет спустя
после падения в 1908 году на Землю Тунгусского Метеора.

Все знают, а точнее ничего толком не знает никто, о том, что случилось
там в действительности.

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

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

На другом железе и в другой ОС версия игры, которую Вы можете найти в сети, не пойдет.

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

Поэтому я уже приступил к созданию решения.

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

Ну и конечно если Вы хотите просто поиграть в эту игру.

Вы можете узнавать последние новости здесь.







Итак, что уже сделано:

утилита для просмотра 3d моделей игры (модели текстурированы) в отличие от варианта,
если посмотреть их стандартной утилитой из DirectX 9 SDK.





PSI Siberian Conflict Reincarnation - Сибирский Конфликт Война Миров Реинкарнация

Данный дистрибутив можно представлять как no cd. Т. е. программа не имеет никакой защиты.
Но учитывайте, что игровой движок полностью переписан с нуля, так что 100% соответствие
оригиналу не является самоцелью.

Однако по мере возможности и необходимости это будет соблюдаться.

демо версия 19.09.2017




размер: 56,5 Mb
файл в виде sfx самораспаковывающегося архива.




История разработки:

(номера версий означают просто их порядок, а не привычный тип v. 1.00, v. 2.0 и т. п.,
лучше поясняет это дата версии).




Что сделано: начато создание игровой оболочки. Самой игры пока естественно нет. Вместо этого
есть небольшой уровень из игры Ball and Holes.

1 версия: 18.09.2017 (с нее началась разработка)
Чтобы поиграть в Balls and Holes нажмите клавишу [U].

2 версия: 19.09.2017
Реализован выбор языка EN / RU, экран главного меню.
Поиграть в Balls and Holes уже можно выбрав пункт меню Campaign / Кампания.
Клавиша [U] поэтому уже не применяется.

Работает пункт меню Exit.
Реализован вывод игрового курсора.



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



Контрольные суммы для проверки целостности скачанного файла (для версии 19.09.2017).

CRC32: 96DA1972
MD5: 04942CB59EBF653F92C1BC8E4581FA84
SHA-1: 71C0052F8E74FE127B128A590DC87C23808E39FD






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

Если Вы хотите и можете материально поддержать проект.



Можно отправить пожертвования на вебмани или яндекс.деньги кошелек.



web money
web money
R247856066494

yandex money
yandex money
41001702554684





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

Игра будет распространяться полностью как freeware, потому что создается на полном энтузиазме, поэтому у проекта
нет никакого финансирования, кроме самофинансирования автором (и вашей поддержки).

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

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

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





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

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

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

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

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



Будет ли игра в steam ?

Нет. Она распространяется как freeware без DRM.



Какой у игры движок ?

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

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

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





Чем я могу помочь ?

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

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

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

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

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





Почему и чем может быть интересен проект ?

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

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

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

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

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

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

Никакие деньги и финансы не могут служить источником вдохновения и желания создать что-то.

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

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

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

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

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



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


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