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 15:57
Вход Регистрация Забыли пароль ?

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

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

megainformatic - Бесшовные (тайловые) текстуры

megainformatic - Создание изображений огня, воды, неба

megainformatic - Создание текстур горных пород и суши (урок 5)

megainformatic - Рисование персонажей (урок 6)

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

megainformatic - Рельефные изображения

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

megainformatic - Воспроизведение файлов в форматах it, xm, s3m, mod

megainformatic - Воспроизведение файлов в форматах it, xm, s3m, mod - страница 2

megainformatic - Воспроизведение в игре музыки в формате XM

megainformatic - Воспроизведение файлов в формате OGG Vorbis

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

megainformatic - Игра "Веселый Буквоежка" - история создания проекта

megainformatic - Как анимировать паука ?

megainformatic - Уроки Photoshop

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

megainformatic - Купить Уроки Photoshop - Рисуем и Анимируем

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

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

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

megainformatic - Моделируем девушку в 3d используя 3ds max

megainformatic - Уроки Fruity Loops Studio - пишем свою музыку

megainformatic - Уроки Fruity Loops Studio - пишем свою музыку - урок 1 - Быстрый старт

megainformatic - Сброник статей по дизайну и компьютерной графике. Обзор.

megainformatic - Уроки 3d на delphi directx - Вывод Заставки

Добро пожаловать в систему управления сайтом megainformatic cms

подробнее

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

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

Что потом ?

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

если кликать картинку она будет последовательно меняться в размерах от 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] 

подробнее

Как установить новый шаблон в joomla 2.5.4

Недавно столкнулся с парадоксальной проблемой. Установил joomla 2.5.4 и попытался по старинке создать новый шаблон.

То есть -

1) Зашел в папку templates и создал копию папки одного из шаблонов
2) Назвал папку по новому, отредактировал имя шаблона в файле templateDetails.xml
3) Зашел в админку и выбрал просмотр шаблонов - Extensions > Template Manager
4) Даже кликнул пункт Templates на открывшейся странице.

И что бы вы думали ?

Новый шаблон даже не появился в списке.

Иными словами - простым копированием имеющегося шаблона создать новый в joomla 2.5.4 уже нельзя.

Как же быть ?

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

1) Скопировать папку шаблона в папку tmp
2) Установить шаблон из данной папки как расширение

После таких манипуляций шаблон стал доступен из админки.

Конечно разработчикам joomla виднее что лучше для их системы, но на мой взгляд - это лишнее усложнение.

Вообщем буду осваивать joomla 2.5.4 дальше :)))))

Надеюсь вам была полезна эта статья.

подробнее

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

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



read paper in english

Это самый волнующий момент - ведь Ваша будущая игра уже рождается !





Содержание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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







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

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

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

Теперь время, пришло. Итак, начнём по-порядку.

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

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

Если вы откроете папку

SceneEditor\Media\params\

то найдете там файл

params.txt

в нём каждый параметр сопровождает комментарий, вот пример содержимого этого файла.

grid_cell_width=100.0f; //длина ячейки сетки в пикселях
grid_cell_height=100.0f; //ширина ячейки сетки в пикселях
grid_mode=7.0f; //0.0f - не показывать сетку, 1.0f - не используется, >2.0f && <= 7.0f сегментная сетка, >7.0f - полная сетка
grid_color=0xFFA445D5; //цвет линий сетки первая пара цифр FF - от 00 до FF задает полупрозрачность, остальные задают RGB цвет
snap_to_grid=1; //0 - не привязывать объект к опорным точкам сетки по клику, 1 - привязывать
info_text_color=0xFFFFFFFF; //цвет информационных надписей, первая пара цифр FF - от 00 до FF задает полупрозрачность, остальные задают RGB цвет
grid_scroll_speed=50.0f; //скорость скроллинга сетки и игровой сцены
bg_fill_color=0xFFAEAEAE; //цвет для заполнения фона пустой сцены
scene_width_in_cells=20; //размер сцены по ширине - число блоков в ширину
scene_height_in_cells=16; //размер сцены в высоту - число блоков по высоте


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

Следует отметить, что настройки надо задать и сохранить изменения до запуска Scene Editor fge.

Если же Вы хотите изменить их когда редактор Scene Editor fge уже запущен - тогда Вам нужно сохранить результат текущей работы и закрыть программу. После внести изменения в файл params.txt и запустить Scene Editor снова.

Только после этого сделанные настройки вступят в силу.

Создание новой сцены во fle game engine - в редакторе сцен Scene Editor 1.0.2 - сцена готова - шарик в яме

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

Не буду вас больше томить ожиданием, приступим !

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

Такой код уже есть в составе fle game engine и мы просто возьмем его "КАК ЕСТЬ".

Код моего проекта, я условно буду называть simple game.

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

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

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

1) Нам нужно загрузить созданную сцену в наше приложение и показать на экране.

2) Загрузить и отобразить спрайт шарика - поскольку он не является частью сцены и будет работать от неё отдельно.

3) Научиться управлять перемещением сцены - чтобы она двигалась при перемещениях мыши.

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

5) Также надо будет выводить набранный игроком игровой счёт за успешные попадания шарика в ямы.

6) Добавить звуки - звук успешного попадания шарика в яму и звук промаха.

7) Добавить фоновую mp3 музыку.

8) Возможно у вас возникнут какие-то еще дополнительные вопросы, которые придется решить.





Для создания нашего приложения мы будем использовать среду разработки Microsoft Visual Studio 2005.

Для нормальной компиляции и сборки примеров Вам также потребуется DirectX SDK Aug 2008.



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


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

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

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





Начнём с более простых вопросов.

2) Загрузить и отобразить спрайт шарика - поскольку он не является частью сцены и будет работать от неё отдельно

и отобразить его на экране.

Предположим, что наш проект находится в папке

simple_game\

Тогда внутри папки

simple_game\Media\textures\



Создадим подпапку simple_game, а внутри неё ball -

simple_game\Media\textures\simple_game\ball\

И разместим внутри неё файл

simple_game\Media\textures\simple_game\ball\jump.tga

Т. е. наш прыгающий шарик

прыгающий шарик



Чтобы приложение simple game могло загрузить данный спрайт, а также показать его анимированным - прыгающим, Вам нужно создать внутри папки

simple_game\Media\textures\simple_game\ball\



файл

simple_game\Media\textures\simple_game\ball\tex_list.txt



И занести в него такую строку -

ball\jump.tga; -0.7f; 0.1f; 0.909f; 0.5f; 0.5f; 64; 128; 0; 0; 4; 8.0f; 14.0f;



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

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

По этому поводу мною написаны уроки - Как анимировать паука, Анимируем волка из мультфильма.

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





После того, как создали файл

simple_game\Media\textures\simple_game\ball\tex_list.txt

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



В модуль

simple_game\start\start.cpp



После строки

#include "DXUTsettingsdlg.h"



Добавляем новый код

#include "game_sprite.h"



А после строки

double g_fLastAnimTime = 0.0;





Такой код

CGameSprite g_AI_Ball_Sprite; //переменная, где будет храниться объект для работы со спрайтом нашего шарика



Далее Вам нужно сделать поиск по коду модуля start.cpp и найти строки содержащие

g_Splash



После каждой найденной строки вставить свою - похожую строчку кода -

1)
g_Splash.Restore(); //это то, что вы нашли
g_AI_Ball_Sprite.Restore(); //это то, что вы должны добавить


2)
g_Splash.Free(); //это то, что вы нашли
g_AI_Ball_Sprite.Free(); //это то, что вы должны добавить


3)
g_Splash.Invalidate(); //это то, что вы нашли
g_AI_Ball_Sprite.Invalidate(); //это то, что вы должны добавить


4)
g_Splash.Anim(); //это то, что вы нашли
g_AI_Ball_Sprite.Anim(); //это то, что вы должны добавить


5)
g_Splash.Draw(); //это то, что вы нашли
g_AI_Ball_Sprite.Draw(); //это то, что вы должны добавить


6)
g_Splash.Load(); //это то, что вы нашли
g_AI_Ball_Sprite.Load(); //это то, что вы должны добавить


7)
g_Splash.NextSplash(); //это то, что вы нашли
g_AI_Ball_Sprite.NextSprite(); //это то, что вы должны добавить


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



Далее компилируем приложение.

Если ошибок не возникло, хорошо. Если есть - читаем что за ошибки, разбираемся и исправляем.



Запускаем наше приложение - это исполнимый файл -

simple_game\simple_game\start.exe



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

Первый старт вашей будущей игры созданной на fle game engine - пробуем вывести game sprite для прыгающего шарика

Приложение работает, ошибок нет. Но нет и никакого шарика на экране.

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

Если же никаких идей по этому поводу у Вас нет, то еще раз настоятельно рекомендую ознакомиться с утилитой Coords2D и особенно почитать файл readme.txt приложенный к ней, позапускать утилиту и разобраться как с её помощью выводятся на экране спрайты, основываясь на заданных для них, в файле tex_list.txt параметрах.

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

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

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

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

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

подробнее

     
  Другие уроки можно посмотреть в разделе Статьи  
     
 

Краеугольная особенность работы Web-form на примере смены состояния checkbox.

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

 
     
 

В предыдущем уроке - Использование checkbox мы познакомились с простым элементом управления для установки состояний вида Да/Нет

Однако как оказалось нужно учитывать не только особенности работы самих элементов управления web-страницами представленных тегом <input>, но и web форм - <form>.

 
     
 

В данном уроке мы рассмотрим следующие особенности:

- как работают веб-формы;

- как читать/сохранять данные веб-форм в файл;

- как читать/сохранять данные веб-форм в базу данных;

 
     
 

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

Вот пример кода на php для реализации этой цели (файл называется checkbox4.php)

 
     
 

<HTML>
<HEAD>
<TITLE>Отслеживаем состояние checkbox'a в файле</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
</HEAD>
<BODY>

<div style="width: 990px; margin: 0 auto; background: #777777;">
<div style="width: 900px; margin: 0 auto; background: #aaaaaa;">

<?php

/* Особенность работы checkbox'а

если чекбокс установлен - при отправке данных формы передается его значение value
если чекбокс не установлен - при отправке данных формы не передается ничего !!!

читаем/сохраняем состояние checkbox'а из файла

*/

//первым делом объявляем константу - имя файла где будем хранить состояние checkbox

//обратите внимание - нужно вручную создать папку data т. к. функция fopen с параметром w не умеет //создавать сразу и папку и вложенный в неё файл !!!
define (CHECKBOX_STATE_FILENAME, 'data/checkbox_state.txt');

//эта функция у нас читает состояние чекбокса из файла и возвращает значение $state
function read_state()
{
$state = 0;

if ( file_exists(CHECKBOX_STATE_FILENAME) )
{

$handler = fopen(CHECKBOX_STATE_FILENAME, "r");
$state = fread($handler, filesize(CHECKBOX_STATE_FILENAME));
fclose($handler);

}

return $state;
}

//эта функция - запишет состояние $state чекбокса в файл, если файла нет - он будет создан

//обратите внимание еще раз !!! папку data вы должны предварительно создать сами иначе код не будет //работать корректно !!!

//т. к. функция fopen с параметром w не умеет создавать сразу и папку и вложенный в неё файл !!!

function write_state($state)
{
//$state = 0;

$handler = fopen(CHECKBOX_STATE_FILENAME, "w");
fwrite($handler, $state);
fclose($handler);


//return $state;
}

//Эта функция нужна нам чтобы вывести фразу - Флажок установлен (сброшен)
function show_flag_state($state)
{
$state_phrase = $state ? "установлен" : "сброшен";
echo "Флажок был ".$state_phrase." <br>";
}

//читаем состояние флажка в переменную $published
$published = read_state();
//для атрибута checked задаем пустую строку
$checked = '';

//если флажок установлен
if ( $published )
{

//задаем атрибут checked
$checked = 'checked = "checked"';

}

//эта переменная нужна просто для указания части имени для checkbox'а
$num = 1;

//если была нажата кнопка Сохранить в веб форме

if ( $_POST['save'] )
{

//выставляем переменную $state в 1 или 0 в зависимости от установленности $_POST['published-'.$num]
$state = isset($_POST['published-'.$num]) ? 1 : 0;

//сохраняем значение флажка в файл
write_state($state);

//выводим фразу о том, что произошло
show_flag_state($state);

//выводим ссылку для возврата на страницу
echo "<br><a href='checkbox4.php'>вернуться</a>";
}
else {

//если страница была только что открыта (или обновлена) без нажатия кнопки Сохранить в форме

//выводим нашу веб-форму дав ей имя save_changes

//страницу обработчик - указываем саму себя - checkbox4.php

//метод отправки данных формы - ПОСТ
echo "<form name='save_changes' action = 'checkbox4.php' method = 'POST'>";

//выводим чекбокс
echo "<input type=\"checkbox\" ".$checked." name=\"published-".$num."\" value=\"".$published."\">";

//выводим кнопку Сохранить изменения
echo "<input type = 'submit' value = 'Сохранить изменения' name='save'>

//закрываем форму закрывающим тегом
</form>";
}


?>
</div>
</div>

</BODY>
</HTML>

 
     
 

Это чудо работает таким образом - если зададим состояние чекбокса и нажмём кнопку <Сохранить изменения>, то фраза Флажок установлен или сброшен - будет показывать состояние чекбокса.

Само состояние чекбокса будет браться из файла data/checkbox_state.txt

В файл будет заноситься 1 или 0 в зависимости от установленности (сброшенности) чекбокса.

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

Работающий пример на php смотрите тут - checkbox4.php

ВОТ и ВСЁ на сегодня. Ждите новых уроков.

 
     
  Другие уроки можно посмотреть в разделе Статьи  
     
     
  Исходный код примера игры Donuts3D из DirectX SDK 8.1 на Delphi 6-7  
     
 
Скачиваний : 14
 
     
 

Исходный код примера игры Donuts3D из DirectX SDK 8.1 на Delphi 6-7

===============================================
Donuts3D (версия 13.07.2007)
===============================================
автор конверсии на Delphi 6-7: Синицин А.С.
дата публикации: 15.07.2007

Введение

Вашему вниманию предлагается исходный код примера игры Donuts3D взятый из DirectX SDK 8.1 (написан на C++) и конвертированный на Delphi 6-7 с использованием библиотеки с ОБЩИМ КОДОМ.

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

Системные требования

- Наличие среды Delphi 6, 7 или выше для компиляции исходного кода, наличие среды MSVS 7, 2003 или выше для редактирования и компиляции ресурсного файла *.res;

- Операционная система Windows 98SE/2000/XP sp2 или выше с установленным DirectX 8.1 или выше;

- минимум ПК уровня Pentium II с тактовой частотой 300 МНz или выше, RAM 32 Mb и выше, 4-8 Mb Video RAM и выше, DirectX-совместимая звуковая карта, мышь.

- Рекомендуется наличие DirectX SDK 8.1 или выше (для изучения DirectX);

- Терпение, старание и желание создавать компьютерные игры.

Особенности примера

Особенности кода

- Программный код на Delphi 6-7, WinAPI без использования VCL, загрузка формы из файла-ресурсов *.res сгенерированного в MSVS 7, 2003 и выше.

- для компиляции необходима библиотека с ОБЩИМ КОДОМ на Delphi 6-7 (содержит заголовки Direct3D8.pas, D3DX8, DirectInput8, DirectSound8, DirectMusic8, D3D Utils, SXModPlayer2 и т.д.);

Особенности игры

- управление от клавиатуры, мыши (DX8_DIUtil8.pas);

- 3D-камера с 3мя видами: со стороны, от третьего лица, от первого лица;

- воспроизведение звуков (DMUtil.pas);

- загрузка медиа-файлов из внешних файлов/из ресурсов внутри EXE-файла;

- анимация 2D спрайтов, представление их в сцене в виде 3D-объектов (за счет billboarding);

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

Исходный код содержит:

- Демонстрацию того, как конвертировать исходники C++ из DX SDK на Delphi;

- Шаблон того, как начать создание собственного игрового проекта Delphi DirectX 8.1;

- Реализацию и заголовочные файлы на объектном Паскале (библиотека с ОБЩИМ КОДОМ).

 
     
 

Путеводитель по исходному коду

Вступление

Кого-то из нас мучают вопросы: Можно ли научиться создавать компьютерные игры? Можно ли писать их не на C++, а каком-то другом языке?

Ответом служит данный пример. Во-первых, сама идеология DirectX рассчитана на любой язык программирования (любую среду разработки), но так уж исторически сложилось, что основная база написания самого DirectX и DirectX-приложений - это C++ ориентированная среда. Ближайшим средством разработки является конечно же MSVS (Microsoft Visual Studio). Однако существуют и другие среды, например, такие как C++ Builder и Delphi компании Borland.

Замечу сразу, что я, как автор данного примера не буду спорить о том, какая из сред разработки лучше или хуже и чем. Рассмотрение этого вопроса оставляю Вам - читателям этих материалов. Скажу лишь, что для меня ситуация сложилась таким образом, что выбор пал на Delphi. Несомненно знание С++ никоим образом Вам не помешает, а только лишь поможет! Если Вы еще не решили с чего начинать, что смело начинайте с C++ и MSVS! Однако если все-таки, по каким-то причинам, Вам всё же ближе Delphi... Начнём!

Особенности написания кода

Для работы с интерфейсами DirectX Вам понадобятся объявления типов и COM-классов DirectX. К счастью, в Интернет можно найти заголовочные файлы переписанные на Delphi. Кроме того, они служат примером того, как конвертировать C++ заголовки на Delphi. Эта информация и эти навыки Вам тоже рано или поздно понадобятся, особенно если Вы планируете плотно засесть за Delphi DirectX. DirectX постоянно обновляется. После выхода такой, ставшей практически стандартом де-факто платформы как DirectX 8.1 сразу же последовали DirectX9, DirectX9c. На подходе уже DirectX10, который Вы сможете применять в Windows Vista. Поэтому переход на эти платформы потребует от Вас новых конверсий на Delphi. Есть конечно и OpenGL... Но, опять таки, я не являюсь специалистом по OpenGL. За всеми технологиями сразу не угонишься. Кроме того и сама среда Delphi тоже постоянно обновляется - Delphi 9, Delphi 2005 ... Это тоже требует постоянных обновлений кода.

Остановившись пока на чем-то одном, чтобы развивать свои навыки не вширь, а вглубь выберем Delphi 6 - 7 и DirectX 8.1 и возьмем пример игры Donuts3D. Работа с DirectX потребует от Вас, независимо от того, на чем Вы будете писать (на С++ или Delphi), умения писать приложения WinAPI без использования кода подключаемых библиотек, таких как MFC, VCL. Конечно же использование MFC (на С++) или VCL (на Delphi) использовать Вам никто не запрещает, более того, на каком-то этапе Вам это обязательно потребуется как технология или как пример ее реализации. Однако без знания WinAPI двигаться дальше просто не имеет смысла, т.к. DirectX это COM-технология, а использование COM - это WinAPI и ... Delphi. Delphi и VCL тоже построены на принципах COM - т.е. Component Object Model.

Как написать WinAPI

Запускаем Delphi 6-7;

Создаем новый проект -
File > New > Application

Т.к. мы будем писать WinAPI приложение (без использования VCL), то нам необходимо избавиться
от всего лишнего, что было автоматически создано Delphi -
пунктом меню Project > Remove from Project удаляем из проекта модуль Unit1 с формой окна приложения.
В ответ на вопрос Remove ... ? отвечаем Yes.

Теперь нужно открыть модуль файла проекта (по-умолчанию Project1.dpr) и отредактировать его содержимое. Для открытия его нажмите комбинацию Ctrl+F12 и выберите из списка Project1. Этого же
можно добиться выбором пункта меню View > Units.

Сначала сохраним проект в файле под нужным нам именем - File > Save Project As и указываем требуемую папку и имя, в нашем случае, Donuts3D, для файла проекта.

Используя MSVS открываем оригинальный C++ проект и компилируем его для создания скомпилированного файла ресурсов, в нашем случае - donuts.res

Теперь возвращаемся к Delphi

Итак, содержимое файла Donuts3D.dpr нужно отредактировать следующим образом -
---------------------
uses
Windows,
donutsU in 'donutsU.pas';

{$R donuts.res}

var
hPrevInst: LongWord;
begin
hPrevInst := 0;
{$WARN SYMBOL_PLATFORM OFF}
ExitCode := WinMain(HInstance, hPrevInst, CmdLine, CmdShow);
{$WARN SYMBOL_PLATFORM ON}
end.

-----------------------
Где donutsU - это модуль, который нужно добавить командой File > New > Unit и сохранить
под именем donutsU.pas в папке Delphi-проекта Donuts3D

Теперь нужно настроить Ваш проект для использования папки с ОБЩИМ КОДОМ.
Предположим, что папка с ОБЩИМ КОДОМ называется common и находится на 2 уровня
выше, чем папка Donuts3D, т.е. относительные пути из папки Donuts3D к папке с ОБЩИМ КОДОМ
запишутся следующим образом -
..\..\common
..\..\common\Borland_D6-7

Чтобы задать эти пути, как используемые Вашим проектом дайте команду -
Project > Options > Directories/Conditionals > Search Path > ... и добавьте эти пути кнопкой Add.
Если Delphi не подсветит пути серым (как недоступные), значит Вы сделали настройку правильно,
в противном случае - Вы где-то напутали с указанием пути. Можно задать и абсолютные пути,
но они менее универсальны.

Остается сохранить измененные параметры проекта - File > Save All.

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

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

 
     
  Для облегчения понимания функционирования типового DirectX-приложения приведем структурную схему функционирования -  
     
  Структура типового DirectX-приложения  
     
 

Поясним схему. WinMain - это головная процедура, с которой начинается выполнение любой программы. Она может называться как угодно, потому что ее вызов происходит не по имени, а по точке входа в программу, однако, традиционно ее называют WinMain. Данная процедура вызывается в модуле проекта *.dpr (см. исходный код). В свою очередь, процедура WinMain содержит вызовы всех остальных функций - разворачивающих структуру приложения.

Create_ - функция начальной инициализации окна приложения;

OneTimeSceneInit - функция, содержащая вызовы других функций, отвечающих за инициализацию DirectX-объектов приложения - CreateInputObjects (объекты управления приложением через интерфейс IDirectInput), CreateSoundObjects (инициализация звука и музыки, загрузка необходимых файлов), CreateDisplayObjects (инициализация объектов Direct3D-сцены, загрузка необходимых моделей, текстур), ConstructMenus (специфичная для примера Donuts3D функция, отвечающая за инициализацию специфических объектов экранного меню приложения), AsAppState_LoadSplash - это не функция, а тип состояния приложения Donuts3D, который устанавливается по окончании выполнения функции OneTimeSceneInit (специфичный для данного примера).

WndProc - оконная процедура приложения. Она называется процедурой обратного вызова, т.к. вызывается не самим приложением, а операционной системой, которая направляет поток сообщений, предназначенных данному приложению путем вызова этой функции. Из этой процедуры происходит вызов функции обработки сообщений приложения - MsgProc. Процедура WndProc - этот как раз отражение структуры функционирования типового WinAPI-приложения, управляемого потоком сообщений (событий). Как и положено в основу идеологии данной схемы - большую часть времени получает управление операционная система. При возникновении событий, направленных приложению, находящемуся в фокусе, ему направляются сообщения и оно обрабатывает их. Особенностью DirectX-приложений по сравнению с чистыми WinAPI-приложениями, является то, что окончив обработку поступивших сообщений приложение продолжает функционировать в цикле Idle Time (т.е. во время бездействия приложения) - происходит выполнение наиболее ресурсо-емких операций - отрисовка 3D-сцены, все остальное время приложение открыто для принятия сообщений (действий со стороны пользователя). Пример реализации этого вы найдете в функции Run примера Donuts3D.

Run - запуск цикла обработки сообщений. Цикл не завершается пока функционирует приложение.

Во время Idle Time (бездействие - отсутствие действий со стороны пользователя) происходит вызов функций FrameMove и Render отвечающих за формирование анимации и отрисовку готового кадра соответственно. Как это происходит - см. исходный код функция Run.

 
     
  исходный код примера игры + откомпилированный EXE-файл + необходимые мультимедиа-файлы (1,59 Mb)
Скачиваний : 14
 
     
  архив с ОБЩИМ КОДОМ (766 Кб)766 Кб  
     
     
     
     
     
     
     
     
     
     
     
     
     
     
megainformatic live chat
Начать беседу
X
 

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



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


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