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


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

megainformatic - Мульти анимация
подробнее...

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

megainformatic - Создание эскиза и макета страницы сайта

megainformatic - Верстка созданного макета

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

megainformatic - Основы добавления контента на сайт, управления и поддержки сайта

megainformatic - Проверка работы сайта, установка на хостинг

megainformatic - Основы продвижения созданного сайта

megainformatic - Создание шаблонов

megainformatic - Создание интернет-магазина

megainformatic - Музыкальные миры - композиция Морозное утро - 10 версий

ЛЕТО

megainformatic - Нечто Необъяснимое - пре релиз

megainformatic cms admin

megainformatic cms admin

megainformatic - Основы создания 3d игр - проект Тайны Морских Глубин

megainformatic - уроки delphi directx 8.1 3d - Основы Вращений и Управления камерой

megainformatic cms seo

megainformatic cms admin

megainformatic - Моделируем девушку в 3d - Подготовка 2d-эскиза тела человека

megainformatic cms stat kit

megainformatic cms seo

megainformatic - Теория и практика 3d игр - О Кватернионах

megainformatic - Теория и практика 3d игр - Основы теории векторов

megainformatic - Теория и практика 3d игр - Важные замечания

megainformatic - Моделируем девушку в 3d используя 3ds max - Подготовка к моделированию ноги - готовим ширму

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

megainformatic - Моделируем девушку в 3d используя 3ds max - Улучшаем созданную модель женской ножки

megainformatic cms stat kit

megainformatic - Подводная лодка и подводный мир

megainformatic - megainformatic cms - Форма для смены шаблонов сайта - модуль template selector

megainformatic cms social

megainformatic cms social Руководство пользователя

megainformatic - megainformatic cms - Форма для смены шаблонов сайта - модуль template selector

модуль слайдера

ТЗ на сайт коллективных покупок

модуль slider

megainformatic cms seo

Поддержка сайтом нескольких языков - модуль multi lang

Поддержка сайтом нескольких языков - модуль multi lang

megainformatic - Моделируем девушку в 3d используя 3ds max - другие статьи сборника статей - обзор

установка нового шаблона в joomla 2.5.4

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

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

megainformatic - ТЗ на сайт по аналогии rys-stroi.ru

megainformatic cms groupon

подробнее

     
  Игра: Дорога в Город (freeware)  
  игра Дорога в Город  
  Жанр: автоаркада  
     
  Версия: 18.10.2006  
     
  игра Дорога в Город - заставка  
  игра Дорога в Город - игровой процесс  
  игра Дорога в Город - таблица рекордов  
     
 

Новое время, идет продвижение энергоресурса нового поколения КОР, Вы - в центре событий, выступаете в роли Андреаса - сборщика и распространителя КОРа. Вам придется собирать ресурс - АЙТ, накапливать средства и выполнять различные задания: скоростная езда с лавированием в потоке машин со сбором айта на время, перевозка сотрудников лабораторий, поиск секретных лабораторий противника, покупка технологий и многое другое.

Основа игры - движение на автомобиле. (На скриншоте желтая машина - игрок). Но не все так просто - нужно следить за уровнем повреждений и запасом топлива, вовремя ремонтироваться и заправляться. На все это нужны средства - КОР-КРЕДИТЫ. АЙТ, который Вы будете собирать и сдавать и принесет Вам искомые средства. Будте осторожны на дороге, не сбивайте пешеходов!

 
     
 

В игре 10 игровых миссий. Суть игры: двигайтесь вперед быстро или медленно, лавируйте уворачиваясь от препятствий или вовремя останавливайтесь - возможна резкая остановка (клавиша - СТРЕЛКА ВВЕРХ).

Действие развивается по нарастающей - сначала простой сбор АЙТА и сдача в лаборатории с получением КОР-КРЕДИТОВ, затем скоростной сбор АЙТА (на время), перевозка сотрудников (СОИСКАТЕЛЕЙ) и многое другое. По ходу игры Ваш автомобиль постепенно улучшает свои характеристики в плане сбора АЙТА и увеличения максимальной скорости движения...

 
     
 

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

Для запуска плеера используется специальный пункт меню программы: Options > RunModPlug

 
     
  СИСТЕМНЫЕ ТРЕБОВАНИЯ: DirectX 7 и выше; Pentium 100MHz и выше; 32Mb RAM; 2Mb Video RAM; DirectX-совместимая звуковая карта, 21 Mb пространства на жестком диске.  
     
 

скачать игру - самораспаковывающийся архив 8,7 Mb

[downloads:19]
скачать игру - самораспаковывающийся архив 8,7 Mb

пароль к архиву: bj4r-vn35-guhj-gv85-4jfg

 
     
 
[downloads:2] открытый полный исходный код игры - архив WinRar 3.3 - 237Kb
 
     
  игра Дорога в Город - описание игры  
  игра Дорога в Город - Mod Plug Player  
     
 

Открытый проект Дорога в Город (Road To City)

===============================================
Открытый код игры Дорога В Город (версия 18.10.2006)
===============================================
автор: Синицин А.С.
дата публикации: 30.03.2007

Введение

Вашему вниманию предлагается исходный код игры на Delphi 7 с использованием библиотек DelphiX 1.07 (by Jaro Benes) или UnDelphiX под Delphi 7. О том где взять эти библиотеки см. ниже!

Игра создавалась около года, это первый игровой (пока некоммерческий) проект автора.
Для компиляции требуется библиотека DelphiX или UnDelphiX c кодом, адаптированным для среды Delphi7.
Исходный код игры также написан в Delphi7, в других версиях не тестировалось,
так что будьте готовы к модификациям кода, если используете другую версию
Delphi.

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

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

- пример создания 2D-игры на Delphi в DelphiX для DirectX7;

- игра содержит 10 уровней.

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

- воспроизведение звуков; для музыки используется внешний плеер ModPlug Player;

- при помощи инструментов редактирования DelphiX можно посмотреть графическую реализацию графики и анимации - содержимое файлов *.dxg;

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

Планы развития проекта:

- Создание редактора карт;

- Разумное поведение других авто на дороге;

- Миди-музыка;

- Реализация начальной заставки, игрового меню;

- Развитие игры;

- Учет времени shareware-версии.

 
     
 

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

Основной код приложения реализован в классе TMainForm, остальные типы - производные от TImageSprite и служат для управления игровыми спрайтами - в игре они статичные и анимированные. Тип TGamePaused служит для вывода картинки "Game Paused" во время паузы в игре (по F3); Тип TScrollBackground представляет прокручиваемый фон (трава). Дорога выводится динамически. Класс игрока - TPlayerSprite.

Для лучшего понимания работы приложения Road2City необходимо представлять порядок вызова методов класса TMainForm. Он следующий:

{методы design time} - при помещении новых компонентов DelphiX на форму приложения добавляется соотвествующий код (автоматически). Однако для нормальной работы компонентов во время runtime необходимо правильно их настроить. Главный компонент вашего приложения, занимающий всю площадь формы - это TDXDraw. Он отвечает за отрисовку графики и инкапсулирует соотвествующие методы DirectX 7. Что значит инкапсулирует? Это значит, что в его составе есть соотвествующие описания методов, а мы их вызываем и используем для своих целей. Некоторые из них вызываются автоматически за счет компонентной природы (TDXDraw происходит от TComponent).

Для любой игры на DelphiX Вам потребуются следующие компоненты на форме -

TDXDraw, TDXTimer, TDXSpriteEngine, TDXImageList, TDXInput, TDXSound, TDXWaveList и , возможно, некоторые другие (которые Вы найдете в обновленных библиотеках DelphiX).

Ядром библиотеки DelphiX является DirectX, поэтому особо не удивляйтесь величию DelphiX. Он только служит оболочкой, описывающей обращение к методам DirectX, а также выполняет некоторые дополнительные (но весьма рутинные) операции типа создания списка изображений, его загрузки, вывода спрайтов.

TDXTimer - используется для периодического вызова определенных методов, главным образом метода TDXDraw.Flip без которого просто ничего не появится на экране. TDXDraw.Flip вызывает показ сформированного в буферной памяти кадра игры в предоставленной ему области (окне приложения или на всем экране - в полноэкранном режиме). Установите необходимый интервал времени (свойство Interval), лучше просто - 0 (самый быстрый интервал !)

TDXSpriteEngine - отвечает за анимацию, т.е. последовательный вызов метода Move для каждого из принадлежащих ему спрайтов. Свойство TDXSpriteEngine.DXDraw должно содержать ссылку на компонент TDXDraw, иначе не будет анимации!

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

TDXInput - ввод от клавиатуры, мышки, джойстика и других устройств ввода. Здесь ничего указывать не требуется, можете только изменить значения клавиш для виртуальных IsButton1-32. Это делается двойным щелчком по компоненту.

TDXSound, TDXWaveList - используются для вывода звуков. TDXSound - интерфейс IDirectSound7, а TDXWaveList, то же, что и TDXImageList, но для списка звуков. Следовательно свойство TDXImageList.DXSound должно содержать ссылку на TDXSound.

{методы runtime} - рассмотрим что происходит при исполнении нашего приложения.

методы TMainForm.FormCreate, FormDestroy, FormClose содержат весь код инициализации, вызываемый при создании/уничтожении формы, закрытии окна приложения. Посмотрев код внутри этих методов Вы увидите что примерно требуется делать при создании/уничтожении окна формы вашей игры.

После того, как форма успешно создана/уничтожена происходит дальнейшая работа/завершение работы приложения. Обратите внимание! Я не случайно указал эти методы в паре Создание/Разрушение. Всегда создавая новый объект сразу же прописывайте и соответствующий код разрушения (Destroy, к-ый вызывается ч/з Free). Большинство ошибок начинающих писателей игр связано именно с тем, что забываем создать/уничтожить требуемые объекты!!!

Итак, если приложение все-таки заработало, что происходит дальше? Т.к. у нас на форме установлен TDXTimer, то дальше всё основывается на периодически вызываемых методах внутри метода TDXTimer.OnTimer

Загляните внутрь него и сами всё увидите!!!

Ладно, вообщем в кратце этого достаточно. Остальное я думаю, сможете постигнуть сами! Если Вы настоящие писатели игр или желаете стать таковыми. В этом Вам помогут всевозможные Help'ы по DelphiX и желательно раздобыть по DirectX SDK!!!, исходники и много много терпения и упорства!

 
     
 

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

http://www.torry.ru/pages.php?id=169

по этим ссылкам вы найдете стартовые странички, с которых можно скачать последние версии компонентов DelphiX и UnDelphiX.

 
     
 

Некоторые замечания по поводу работы с DelphiX (и UnDelphiX, далее просто DelphiX, подразумевая все последние обновления и модификации).

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

Однако вот Вам первое полезное замечание - Если Вы хотите изменить содержимое одного из файлов данных с графикой или звуками - *.dxg или *.dxw поступайте следующим образом:

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

- щелкните по нему правой кнопкой мыши и выберите Open для открытия файла данных, найдите и откройте требуемый файл;

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

- сохраните изменения в файл правым щелчком по компоненту DXImageList или DXSoundList на форме и выбором Save, указав требуемые имя и путь в соответствующем окне диалога;

- закройте проект вашего приложения БЕЗ СОХРАНЕНИЯ ИЗМЕНЕНИЙ!!! Это очень важно! В противном случае будут наблюдаться некие негативные последствия: рост объема исполнимого файла и "торможение" среды Delphi при работе с проектом.

Почему?

Потому что, если сделать это, то файл данных остается внутри соответствующего компонента - DXImageList или DXSoundList и тем самым увеличивает объем исполнимого файла, кроме того "затормаживается работа" среды Delphi при открытии такого проекта, что будет вызывать у Вас искреннее удивление!

Вместо этого сохраняйте содержимое измененного файла *.dxg или *.dxw правым щелчком по компоненту DXImageList или DXSoundList и выбором Save, а измененный проект закрывайте БЕЗ ИЗМЕНЕНИЙ!!! (т.е. не сохраняя).

Таким образом, Вы оставите компонент пустым, это не будет приводить к указанным выше последствиям (росту исполнимого файла и "торможению" Delphi при открытии проекта).

Обновленные версии DelphiX к тому же содержат специальные инструменты (DXGEdit, DXWEdit) для изменения содержимого файлов *.dxg или *.dxw, поэтому также можете использовать и их!

Загрузка файлов данных *.dxg или *.dxw в соответствующие компоненты будет производиться Вами на стадии runtime (т.е. во время нормальной работы приложения). Как это делается показано в исходном коде!

Желаю Вам приятной работы по освоению DelphiX !!!

 
     
 

Как работать с исходным кодом?
===============================================

Внимание!!! Здесь описано как использовать исходный код игры с библиотеками
UnDelphiX и DelphiX 1.07a (by Jaro Benes).

Для использования кода и нормальной компиляции необходима установка
одной из этих библиотек!!!

Содержание -

Как заставить код работать под DelphiX (by Jaro Benes).
Как заставить код работать под UnDelphiX;


***********************************************
Как заставить код работать под DelphiX (by Jaro Benes).
===============================================

- установить библиотеку;

- в опциях среды Delphi указать путь к DelphiX\Source:
Tools -> Environment Options -> Library -> Library path -> ... -> используя диалог найти Delphix\Source ->
Add
Теперь в проекте ссылку на DelphiX\Source можно не указывать.

- открыть проект Road2City.dpr
попробовать откомпилировать.

> Если сообщения об отсутствии *.dcu, то
добавить в путь поиска проекта ссылку на Source DelphiX

> Сообщение об отсутствии DirectDraw.dcu
в разделе interface секции uses вместо DirectDraw задать DirectX

uses
..., DirectX;


компилируем.


Как заставить код работать под UnDelphiX;
===============================================

Установить библиотеку -

пример установки UnDelphiX:

запустить соответствующий вашей версии Delphi файл с расширением dpk -
например для Delphi 7 это файл (из папки Source) - DelphiX_for7.dpk

нажать кнопки Compile, затем Install

сохранить изменения в проект.

в пути поиска используемого проекта или среды Delphi добавить ссылки на папку Source
с кодом DelphiX -
Project > Options > Directories/Conditionals > ... > ... Add > [DelphiXpath]\Source > OK
, где [DelphiXpath] - путь к папке, куда вы скопировали библиотеку DelphiX

библиотека установлена!

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

Теперь как работать с исходным кодом проекта Road2City :


- Запускаем файл проекта - двойным щелчком по Road2City.dpr

получаем сообщение об ошибке -
Error reading SpriteEngine.Items: Property Items does not exist.
Ignore the error and continue? ...

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

Метод устранения - нажимаем кнопочку Ignore и ничего страшного не произойдет!


------------------------------
Замечания:

22/03/2007
Как настроить среду Delphi, чтобы при использовании
комбинации Ctrl + LMouseButton (команда Find Declaration контекстного меню редактора кода)
осуществлялся переход на описания методов и типов, по которым производился щелчек?

30/03/2007

ответ:
Если на названии какого-либо типа или модуля не срабатывает команда Find Declaration,
то в этом модуле имеются ошибки (Errors), предупреждения (Warnings).

 
     
подробнее

     
     
  Путешествие в мир 3d  
     
  [содержание] [назад] [страница 2] [далее]  
     
 
 
В данном уроке - Путешествие в мир 3d мы попробуем создать небольшую сцену, включающую земной холмистый рельеф, небесный фон, деревья, траву, участок железной дороги и товарный вагон В данном уроке - Путешествие в мир 3d мы попробуем создать небольшую сцену, включающую земной холмистый рельеф, небесный фон, деревья, траву, участок железной дороги и товарный вагон - щелкнув по изображению можно загрузить полномасштабный вариант
 
Для нашей работы мы будем использовать 3ds max 7.0 и photoshop cs2, если у Вас версии выше или ниже - ничего страшного. Никаких особых изменений Вы скорее всего не обнаружите, ну а уж если обнаружите - пишите вопрос мне или на форум
 
 
Сохраняем на всякий случай свою работу - File > Save As и задаем имя и нужную папку. Теперь запускаем Photoshop и рисуем текстуру для земной поверхности, я рекомендую внутри папки, куда Вы сохранили только что рабочую модель сцены, создать подпапку, назвать textures, а внутри создавать подпапки - grass, ground, ground surface и т.д. и в них сохранять текстуры травы, земли, земной поверхности и т.д.
 
 
щелкните изображение земной поверхности для загрузки текстуры 2048х2048 пиксель
щелкните изображение земной поверхности для загрузки текстуры 2048х2048 пиксель
 
Создадим текстуры травы, земли и земной поверхности
 
трава - создаем изображение 512х512 пиксель и рисуем траву -
 
трава - создаем изображение 512х512 пиксель и рисуем траву - представленные варианты изображены кистью с последующей обработкой Осветлителем/Затемнителем и цветокоррекцией при помощи Уровней и Тон/Насыщенность
 
При помощи Кисти и разных оттенков зеленого изображаем куст травы
 
При помощи Кисти и разных оттенков зеленого изображаем куст травы
 
 
При помощи дублирования слоёв (контекстное меню панели слоёв > Дублировать слой), и трансформаций (Edit > Transform > Scale) - наращиваем густоту листьев, там же найдете горизонтальное отражение - Flip horizontal
 
 
Осветляем, затемняем, выполняем цветокоррекцию (для склеивания слоев используйте - Layer > Merge Layers и выделенные слои будут склеены в один) -
 
 
 
 
рисуем землю -
 
 
рисуем несколько комочков земли
 
 
клонируем, дублируем, масштабируем
 
 
секрет объема кроется в слое 2 - он был размыт при помощи Фильтр > Размытие > Размытие в движении - для наглядности в левом верхнем квадранте показан результат смешения всех слоев, справа вверху - три нижележащих слоя, слева внизу слой придающий объем и основа в правом нижнем
 
Наконец, используя 2 созданные текстуры - активно применяя инструмент Клон-Штамп создаем земную поверхность
щелкните изображение земной поверхности для загрузки текстуры 2048х2048 пиксель
 
в следующем уроке - накладываем созданную текстуру на модель земной поверхности в 3ds max
 
[содержание] [назад] [страница 2] [далее]
 
 
подробнее

     
 

Видео урок посвященный созданию игры Ну, Погоди ! - рождение игры часть 3.

Покажет Вам простейшую элементарную игру и особенности её создания в delphi 7 на directx 8.1 api.

 
     
 
Урок 3 Оконный и полноэкранный режимы работы D3D-приложения. Управление игрой средствами DirectInput8
 
О том, что потребуется для данного урока читайте в основном разделе - уроки delphi directx 8.1
 
Далее у читателя подразумевается наличие базовых знаний языка Delphi.
 
[назад] [страница 1] [далее] [к содержанию]
 
 
 

Оконный и полноэкранный режимы работы имеются во всех современных играх написанных и в OpenGL и в DirectX.

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

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

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

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

Размер рабочей области окна D3D в оконном режиме определяется размерами того окна, чей обработчик (Handle) задан при передаче параметров во время создания объекта IDirect3DDevice8

В этом легко убедиться заглянув в код методов TD3DGameApp.Create_ и TD3DGameApp.CreateDisplayObjects

 
Поэтому далее мы рассмотрим лишь код и особенности, которые необходимо учитывать при включении полноэкранного режима D3D-приложения и при переключениях между полноэкранным/оконным режимами.
 
Если взять в качестве основы проект, который мы создали в предыдущем уроке, то вот код, который необходимо добавить в модуль главной формы (MainForm) этого проекта для переключения приложения в полноэкранный режим.
 

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

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

О том, как создать и использовать такое меню описано в статье - Создание игрового меню

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

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

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

в пункт uses секции interface нужно подключить модуль DX8_DIUtil8.pas из библиотеки Delphi DirectX 8.1

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

const

ChangeWindowModeKey = isButton1; //константа isButton1 определена в модуле DX8_DIUtil8.pas

в описании класса D3D-приложения (класс TD3DGameApp в нашем случае) добавить поле

m_DXInput: TDXInput; //управление игрой через DirectInput

Также в описании класса нужно добавить несколько новых методов -

// Input functions
procedure SetDefaultDefKeys;
procedure CreateInputObjects;
procedure DestroyInputObjects;
procedure UpdateInput;

 

Далее в секции implementation нужно реализовать код данных методов -

procedure TD3DGameApp.SetDefaultDefKeys;
begin
FCustomKeyAssign := DefineDefaultKeys;
//процедуру DefineDefaultKeys нужно определить как локальную для модуля //главной формы Вашего проекта
end;

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

function DefineDefaultKeys: TKeyAssignList;

а в секции реализации как

function DefineDefaultKeys: TKeyAssignList;
begin
FillChar(Result, SizeOf(Result), 0);

AssignKey(Result, ChangeWindowModeKey, [Ord('W'), VK_F6]); //к данному действию привязываются клавиши W и F6

end;

далее реализуем код оставшихся методов

procedure TD3DGameApp.CreateInputObjects;
begin
SetDefaultDefKeys;
m_DXInput := TDXInput.Create(Self);
end;

procedure TD3DGameApp.DestroyInputObjects;
begin
FreeAndNil(m_DXInput);
end;

procedure TD3DGameApp.UpdateInput;
var
CurrentState: TUserInput;
begin
if not Assigned(m_DXInput) then Exit;

m_DXInput.Update;

if ChangeWindowModeKey in m_DXInput.States then {выполнить нужное действие};

end;

вызов метода CreateInputObjects нужно добавить внутри TD3DGameApp.OneTimeSceneInit

вызов метода DestroyInputObjects нужно добавить внутри TD3DGameApp.FinalCleanup или другом методе освобождения ресурсов, который вызывается из FormDestroy

вызов метода UpdateInput, в котором осуществляется обновление состояния устройств DirectInput и вызов методов обработки тех или иных действий пользователя нужно добавить внутри метода TD3DGameApp.FrameMove

 
Итак, переключение полноэкранного/оконного режимов D3D-приложения будет происходит по действию ChangeWindowModeKey. Данное действие будет вызываться клавишами [W] или [F6]. Можете использовать другие клавиши, если хотите.
 

Остается в строке кода

if ChangeWindowModeKey in m_DXInput.States then {выполнить нужное действие};

комментарий {выполнить нужное действие}

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

Таким методом является следующий -

procedure TOptionsMenu.AcceptOptions;
var
ScreenSizeMetric: TScreenSizeMetric;
begin
if g_d3dApp = nil then Exit;
ScreenSizeMetric := GetScreenSize;
if (not g_d3dApp.m_bFullScreen = Windowed) and
(g_d3dApp.m_dwScreenWidth = ScreenSizeMetric.Width) then Exit;

g_d3dApp.SwitchDisplayModes(not Windowed, ScreenSizeMetric.Width,
ScreenSizeMetric.Height);
end;

В данном случае такой метод реализован как метод объекта меню TOptionsMenu и вызывается при подтверждении смены заданных настроек приложения. В данном случае настройки достаточно просты. Проверяется заданное в настройках разрешение экрана и если произошла смена режима оконный/полноэкранный или изменилось заданное разрешение будет вызван метод SwitchDisplayModes объекта g_d3dApp, который является экземпляром класса TD3DGameApp.

В простейшем случае можно рассмотреть реализацию переключений между оконным режимом приложения и полноэкранным режимом с разрешением например 800x600 пикселей и максимальной частотой покадровой развертки поддерживаемой монитором (100 Hz или выше).

Предварительно добавьте данный метод в описание класса TD3DGameApp

function SwitchDisplayModes(bFullScreen: Boolean;
dwWidth, dwHeight: Cardinal): HRESULT;

Затем реализуйте его в коде следующим образом -

function TD3DGameApp.SwitchDisplayModes(bFullScreen: Boolean;
dwWidth, dwHeight: Cardinal): HRESULT;
var
hr: HResult;
begin
if not m_bIsActive or not m_bDisplayReady then begin
result := S_OK;
Exit;
end;

// Check to see if a change was actually requested
if bFullScreen then
begin
if ((m_dwScreenWidth = dwWidth) and (m_dwScreenHeight = dwHeight)) and
(m_bFullScreen = bFullScreen ) then
begin
result := S_OK;
Exit;
end;
end
else
begin
if not m_bFullScreen then begin
result := S_OK;
Exit;
end;
end;

// Invalidate the old display objects
m_bDisplayReady := FALSE;
InvalidateDisplayObjects;

// Set up the new presentation paramters
if bFullScreen then
begin
m_d3dpp.Windowed := FALSE;
m_d3dpp.hDeviceWindow := m_hWndMain;
m_dwScreenWidth := dwWidth;
m_d3dpp.BackBufferWidth := dwWidth;
m_dwScreenHeight := dwHeight;
m_d3dpp.BackBufferHeight := dwHeight;
m_d3dpp.BackBufferFormat := m_d3dfmtFullscreen;
end
else
begin
m_d3dpp.Windowed := TRUE;
m_d3dpp.hDeviceWindow := 0;
m_d3dpp.BackBufferWidth := 0;
m_d3dpp.BackBufferHeight := 0;

m_dwScreenWidth := dwWidth;
m_dwScreenHeight := dwHeight;

m_d3dpp.BackBufferFormat := m_DesktopMode.Format;
end;

// Reset the device
hr := m_pd3dDevice.Reset( m_d3dpp );
if SUCCEEDED(hr) then
begin
m_bFullScreen := bFullScreen;
hr := RestoreDisplayObjects;
if SUCCEEDED(hr) then
begin
m_bDisplayReady := TRUE;
result := S_OK;
Exit;
end;
end;

// If we get here, a fatal error occurred
PostMessage( m_hWndMain, WM_CLOSE, 0, 0 );
result := E_FAIL;
end;

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

Заметьте, что внутри данного метода каждый раз при переключении между полноэкранным/оконным режимами или при смене разрешения полноэкранного режима происходит инвалидация InvalidateDisplayObjects всех зависимых от Direct3DDevice ресурсов, вызывается метод сброса устройства Direct3DDevice, а затем происходит восстановление ресурсов RestoreDisplayObjects

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

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

 
Для лучшего понимания этих важных моментов, Вам обязательно нужно познакомиться с исходным кодом игры [Пример игры Donuts3D], а также со статьями и исходниками посвященными работе над проектом Нечто: Необъяснимое
 
В качестве практики предлагаю Вам внедрить вышеописанные технологии в код проекта своего D3D-приложения посвященного практической работе над данным уроком.
 
[назад] [страница 1] [далее] [к содержанию]
 
 
 
 
     
     
     
     
     
подробнее

Проект портала

Идеи Комфорта

Примерное ТЗ

задача по ТЗ заметки
     
1. Механизмы регистрации на сайте:

- Свободная по однократной ссылке

- По реферальной ссылке

- Другой вариант

Необходимо выбрать приемлемый или приемлемые вариант(ы)

1. Личный кабинет:

Примерный набор ролей -

- ВЛАДЕЛЕЦ, ОН ЖЕ СУПЕРАДМИН

- МОДЕРАТОР

- ЗАРЕГИСТРИРОВАННЫЙ

- ГОСТЬ

- Какие роли необходимы ?



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

Баннеры добавляются через админ-панель СУПЕРАДМИНОМ, отображаются в случайном или заданном порядке.
4. Статус - строка. Что должна отображать ?
5. КОНТЕНТ
6. кнопка «Фото-сборники». куда должна вести ? на личные сборники данного пользователя или другого(других) пользователей. Что собой должен представлять фотосборник ? Обычную фотогалерею как в соц. сетях, либо что-то еще дополнительно ?
7. блок ПОСТОВ. пользователь может добавить в пост ссылку на свой фотоальбом или статью.
8. кнопка РАССКАЗАТЬ ДРУЗЬЯМ. Содержит ссылку на страницу, с которой можно отправить сообщение со ссылкой на указанную страницу.
9. Мне нравиться. Представляет собой средство выражения рейтинга поста.
11. краткое описание поста (если это статья)
12. Читать далее. Содержит ссылку на страницу данного поста.
13. На каждый пост заводится страница как ВК (хотя непонятно нужно ли это) или комментарии сохраняются при каждой фотографии в альбоме. Полагаю, что это нужно, т. к. иначе возникают нерешаемые вопросы: где размещать контент поста, как его хранить и выводить.
14. ПРАВЫЙ СТОЛБЕЦ - рекламный баннер. Добавляется через админ-панель суперадмином, выводится в случайном порядке или по заданным правилам.
15. «Участники клуба». Блок для отображения ТОП лучших по определенным критериям пользователей. Например по количеству оставленных данными пользователями постов.
16. Личное меню. Представляет набор функций, которые может выполнять зарегистрированный пользователь, вошедший на сайт под своим аккаунтом (учётной записью).
17. моя страница - содержит ссылку на заглавную страницу данного пользователя.
18. мои друзья - содержит ссылки на страницы пользователей, являющихся друзьями данного пользователя. Следовательно также возникает необходимость в разработке механизма отношений между пользователями: Друг, Не друг и т. д.
19. мои сообщения. представляет собой механизм системы внутренних сообщений между пользователями сайта. чтобы отправить сообщение нужно открыть страницу нужного пользователя. сообщения оформляются в виде списка, имеются разделы: отправленные, принятые, удаленные.
20. мои фото. содержит механизм для управления личными фотоальбомами и отдельными фотографиями. форматы поддерживаемых файлов фото (jpg, png, gif) ?
21. мое видео. является средством для работы с личными альбомами видео и отдельными видеороликами. форматы поддерживаемого видео ? (mp4, flv)
22. моя музыка. представляет собой альбомы избранных музыкальных файлов. форматы поддерживаемых файлов ? (mp3, ogg)
23. связаться с администратором. возможность отправить прямое сообщение администрации
24. До регистрации на данном месте прописывается текст предлагающий зарегистрироваться и предлагающий правила поведения на портале.
25. Страница дизайнера. Что собой представляет ? Для данной категории пользователей нужна специальная роль ?
26.
27. Статьи. Представляют собой посты данного пользователя.
28. Нуждаюсь в совете. Возможность задать вопрос и получить на него ответ. Для этого необходим специальный раздел, в админ- и фронтальной частях сайта, где пользователь сможет оставить своё сообщение через специальную форму, а другие пользователи смогут на него ответить. Ответы должны быть общедоступны или видны только конкретному пользователю, задавшему вопрос ?
29. Ниже, со временем, появятся ещё кнопки. Проектирование с рассчётом на расширение в будущем.
30. 3 рекламных блока. что содержат ? как управляются и выводятся ?
31. 2. Администратор управляет всем, у него есть помощники контент менеджеры. Администратор назначается владельцем портала. ДЛЯ АДМИНИСТРАТОРА необходима специальная панель управления, недоступная обычным пользователям и доступная в ограниченном виде МОДЕРАТОРАМ.
32. Без регистрации возможности посетителя ограничены, но есть возможность посмотреть главную страницу. При нажатии закрытых кнопок возникает надпись – «Посмотреть полную версию Вы сможете после регистрации». Механизм всплывающего окна или что-либо еще.
33. блок связи с соцсетями. зарезервировать место. какие ссылки должен содержать данный блок ?
34. Предполагается, как то ограничить действия не зарегистрированных на портале лиц: «Посмотреть полную версию вы сможете только после регистрации». ПОКА ПОЛЬЗОВАТЕЛЬ НЕ ВОЙДЁТ В ЛИЧНЫЙ КАБИНЕТ он ограничен правами ГОСТЯ.
35. Предполагается не более 10 фото к одному посту/статье. Ограничение на количество фото. Аналогично нужно сформулировать для видео и музыкальных файлов.
36. Создать кнопку "Вернуться на главную страницу". Где должна располагаться, кому должна быть видна ?
37. Вставить кнопку "Поиск дизайнеров, строителей и отделочников". В какой раздел и с каким функционалом должна вести ?  
38. Ниже кнопок идет три места для рекламных баннеров. Зарезервировать место.  






ЗАДАЧИ НЕЯВНО ОПИСАННЫЕ В ТЗ либо возникшие в ходе решения поставленных в ТЗ задач

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



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

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

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

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



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


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