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


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

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

Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт
Статьи сайта
megainformatic - Уроки Photoshop - Рисуем и Анимируем на AllSoft.ru

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

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

megainformatic - Темы для WordPress

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

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

скачать megainformatic cms

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

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

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

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

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

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

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

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

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

megainformatic - Выгрузка файла на сайт

megainformatic - выпадающее меню на html и css

megainformatic - Использование checkbox

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

Технологии WEB

Технологии WEB - AJAX-запросы

Часто Задаваемые Вопросы

Продукты

Проблемы с кодировками при отображении страниц

игра Нечто: Необъяснимое Нить Накала - "в плену желаний"

Система Автоматизации Доставки Электронных Заказов megainformatic cms e-pro

megainformatic cms e-pro Автоматизация Обработки Уведомлений о Заказах по партнерским программам

megainformatic cms e-pro Автоматизация Обработки Уведомлений о Заказах по партнерским программам

webinformatic: Музыкальная страничка трэкера

megainformatic - Создание музыки и звука

webinformatic: Создание музыки и звука: урок 2

megainformatic - Создание музыки и звука: урок 3 - настройка Impulse Tracker для работы в WinXP

megainformatic - Создание музыки и звука: урок 4 - Введение в Mod Plug Tracker

megainformatic - Создание музыки и звука: урок 5 - Первая композиция в Mod Plug Tracker

megainformatic - Создание музыки в Impulse Tracker 2.14 - урок 6 - Ввод Нот

megainformatic - Создание музыки в Impulse Tracker 2.14 Первая мелодия

megainformatic - Создание музыки в Impulse Tracker 2.14 Настройка параметров сэмплов

megainformatic - Создание музыки и звука: теория и практика создания трэкерской музыки

megainformatic - Инструкция по оплате услуг средствами WebMoney

Основы работы в Microsoft Visual Studio 2008 и DirectX 9 (DX SDK Aug 2008)

Введение в программирование игр на С++ для платформы DirectX 9 - Первый старт

Введение в программирование игр на С++ для платформы DirectX 9 - Меняем иконку приложения

Введение в программирование игр на С++ для платформы DirectX 9 Добавляем другую модель

Введение в программирование игр на С++ для платформы DirectX 9 Программирование игр в directx. Hello, World!

Введение в программирование игр на С++ для платформы DirectX 9 Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008

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

Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008 - Урок 1 Основные операторы языка C++ (часть 2)

Урок 2 Написание Win32-приложений. Обзор стартового кода Win32-приложения. Добавление ресурса текстовая строка

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

Урок 4 Создание Win32-приложений. Стандартные диалоги. Изучение сопутствующих конструкций языка. Консольные Win32-приложения. Указатели. Ссылочный тип. Массивы.

Урок 4 часть 2 Win32. Диалог выбора цвета, смена цвета фона окна приложения

Написание приложения DirectX9c + MFC в среде MSVS 2005

megainformatic - Создание компьютерных игр на основе DirectX в среде Delphi 6, 7

megainformatic - Создание компьютерных игр на основе DirectX в среде Delphi 6, 7 - Почему избраны DX8 и Delphi ?

megainformatic - Основы IDirectMusic8 в среде Delphi6-7

подробнее

Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - Глава 1 - Обычный день

По просьбам наших читателей начинаем публикацию новой серии - Иван Денисов и крутые хакеры. Сегодня читайте роман - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА.

[содержание]

[далее

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

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

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

Иван расположился в помещении, которое мы именуем офисом, а Степан - гостиной.

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

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

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

Раздался звонок и вслед за Степаном я отправился в офис.

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

- Где же кола ? - спросил он.
- На кухне, Иван Степаныч. Нижний ящик справа.
- Она охлажденная ?
- Да, достаточно охлажденная.
- Принеси. Захвати также 2 стакана.

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

Степан принёс напиток.

Денисов погрузился в поглощение своей порции газировки и дальнейшее составление узоров.

- Иван Степаныч, могу ли я поинтересоваться, чем это Вы заняты ?

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

- Я имел в виду, то что Вы сейчас делаете - это какой-то новый проект ?

- Да, Ты прав Энди, это как раз один из тех перспективных проектов, которым мы займёмся в ближайшем будущем.

- Ок. Понял, тогда не буду отвлекать. Но у меня есть к вам вопрос по-другому поводу.

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

Это был Уваров, пришедший с небольшой просьбой.

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

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

Увидев Уварова, Иван спросил:

- Приветствую, Уваров, я вам сколько-то еще должен ?

Уваров приблизился.

- Добрый день, Иван Степанович. Я был бы счастлив, если бы за вами числился какой-нибудь долг. И вообще, если бы кто-нибудь был бы мне должен. Ах! Какое это удовольствие получать деньги.

- Не хотите ли выпить колы ?

- Нет, благодарю.

Петр Уваров прошел мимо кресла и остановился около Ивана, потом произнес:

- Я рискнул прийти просить вас сделать мне одолжение...

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

Иван всегда подавлял Уварова своей наблюдательностью и своим умением рассуждать.

- Никто так не нуждается в займе, как я, - продолжал Петр, - но я пришел не за этим.

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

Тут я не выдержал и вставил:

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

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

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

- Хорошо, попросите её войти, - сказал Иван.

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

- Марианна Малакян, Иван Степанович, - представил её Уваров.

Она улыбнулась, показав белые ровные зубы.

- Мария Малакян, - поправила она.

У неё был грудной голос низкого тона.

- А не Тикин ли Малакян ? - спросил Иван.

- Нет, я не замужем.

- У вас какие-то неприятности ?

- Да, Иван Степанович. Петр говорил, что вы могли бы помочь мне.

- Расскажите мне, в чем дело ?

- Хорошо, Иван Степанович. Это касается моего брата Кочара. Он уехал.

- Уехал ? Извините Мария, но я не занимаюсь поиском людей, моя профессия совсем иного рода.

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

- Ок.

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

- Я в этом уверена.

- Хорошо, мне нужны факты - прошу вас рассказать всё, что знаете, и поподробнее. Приступай, Энди.

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

Эта женщина хорошо владела собой и толково, в нескольких словах передала суть дела.

Она была администратором кафе в районе Берсеневской набережной и там же неподалеку жила.

Её брат, Кочар Малакян, старше её на два года, жил неподалеку от Моховой.

По специальности он был программист высокой квалификации.

Он работал в течение многих лет в одной крупной ИТ-компании.

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

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

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

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

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

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

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

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

- Это было позавчера ? - уточнил я.

Уваров достал свой электронный ежедневник и проверил.

- Совершенно верно, в понедельник, двадцатого декабря.

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

- Уваров, сегодня среда, двадцать второе декабря.

- Ну так что же ?

- Это было в понедельник ? - обратился он к Марии.

- Да, Иван Степанович. Конечно в понедельник. Это мой выходной день.

- Так, значит в понедельник, 21 декабря, - прошептал он себе под нос. - Я очень сожалею, Мария Малакян, но не могу вам дать дельный совет. Рекомендую вам обратиться в милицию.

- Я уже обращалась, Иван Степанович. Они ответили мне, что он давно улетел в Армению и, видимо, прихватил с собой и мои деньги.

- А может быть, это так и есть ?

- О нет, Иван Степанович. Я лучше знаю своего брата, чем они. Он никогда бы так не поступил.

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

- Они не могли мне этого сказать, Иван Степанович, так как все рейсы в эти дни были отменены из-за плохой погоды. Да они и не собирались что-либо расследовать или узнавать. Они просто заявили, что он улетел в Армению, и этим ограничились.

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

- Но где же тогда находится его тело ?

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

- Я в это не верю, Иван Степанович. И кроме того, был же еще один телефонный звонок ...

- Вы ничего не сказали мне о телефонном звонке.

Она улыбнулась и ответила:
- Я просто не успела рассказать вам об этом. Около семи часов вечера кто-то позвонил ему, он был как раз на лестичной клетке и курил, а соседка по квартире слышала его разговор.

Кочар был очень разгневан и говорил, что согласен встретиться в семь часов тридцать минут. Вы можете помочь мне, Иван Степанович, я умоляю вас об этом. Прожив столько лет в России, я научилась сдержанности и спокойствию, но не забывайте, Иван Степанович, что я армянка ! Я должна отыскать своего брата, живого или мертвого, и отомстить тому, кто причинил ему зло. Вы должны помочь мне, Иван Степанович ! Я смогу оплатить все расходы. Кроме того, я лучший друг вашего друга Уварова.

- У меня нет друзей, - ответил Иван. - Скажите, а сколько у вас имеется денег ?

- О ! У меня сто пятьдесят тысяч рублей и даже немного больше.

- Какую сумму вы согласны потратить ?

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

Иван кивнул в знак согласия.

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

Мария Малакян встала, поблагодарила Ивана и вышла из комнаты вместе со мной и Уваровым.

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

подробнее

Game craft - моделируем scv - часть 2

[все уроки game craft]  [моделируем scv]

В ходе наших уроков у Вас может получиться такая модель робота SCV.

Модель робота scv как в Starcraft 2

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

Создадим Box 32x32x32 и количеством сегментов 2х4х4 как показано на рисунке ниже. Обязательно отметьте галочкой пункт Generate Mapping Coords. Он отвечает за генерацию текстурных координат, чтобы в дальнейшем на созданную модель можно было нанести изображение текстуры. При этом модель уже будет не серая и безликая, а более яркая и понятная.

Модель робота scv как в Starcraft 2 - создаем Box

Теперь преобразуем наш Box в Editable Poly - кликнув в панели модификаций правой кнопкой и выбрав пункт Editable Poly. Процесс моделирования чем-то напоминает лепку из пластилина. Заготовкой является Box, а Editable Poly позволит работать с отдельными вершинами и гранями модели - перемещать, вращать и видоизменять их, выдавливать, вдавливать, позволяя придать модели практически любую желаемую форму.

Модель робота scv как в Starcraft 2 - Editable poly

Однако обратите внимание на уровень детализации модели - она будет являться несколько грубоватой, поскольку представляет так называемый Low-poly вариант. Это низкополигональная модель пригодная для вставки в игровое или мультимедийное приложение. Поскольку в игре у вас может быть сотня и больше экземпляров такой модели, а также помимо неё и многих других - то представляете, что общее количество вершин и полигонов представленных в 3d-сцене будет очень большим. Именно поэтому задача низкополигональной модели - добиться с одной стороны желаемого сходства с некоторым объектом (роботом SCV), а с другой - чтобы количество вершин и полигонов у модели было минимально возможным.

Выдавим кабину SCV робота, в которой сидит оператор. Откроем группу Editable Ploy нажав +. Выберем Polygon. Нажав и удерживая клавишу [Ctrl] кликнем нужные грани как показано на рисунке ниже.

Модель робота scv как в Starcraft 2 - Выдавим кабину SCV робота, в которой сидит оператор.

Выполним выдавливание и скос выбранных граней, используя кнопку Bevel в группе Edit Polygons. Первым движением мыши вы определяете расстояние на которое вдавливается/выдавливается выбранный полигон, а после клика мышью - размер скоса. Последний клик фиксирует модификацию. Действие можно отменить [Ctrl] + [Z] или кнопкой отмены (Undo) на панели инструментов.

Модель робота scv как в Starcraft 2 - Выдавим кабину SCV робота, в которой сидит оператор.

Если воспользоваться маленькой кнопкой Settings расположенной чуть правее кнопки Bevel - можно ввести точные значения для модификации - расстояние для вдавливания/выдавливания и размер скоса.

Модель робота scv как в Starcraft 2 - Выдавим кабину SCV робота, в которой сидит оператор.

Нажмём Cancel, чтобы не применять вторую модификацию Bevel. Теперь будем работать с отдельными вершинами. В окне модификаций в группе Editable Poly теперь выберем Vertex. Затем будем выделять нужные вершины и перемещать их, чтобы придать кабине нужную форму.

Модель робота scv как в Starcraft 2 - Выдавим кабину SCV робота, в которой сидит оператор.

Для того, чтобы выделять несколько вершин нажмите и удерживайте нажатой клавишу [Ctrl]. Иногда Вам может потребоваться проверить не выделили ли Вы случайно вершины на другой стороне модели. Для этого можно включить каркасный вид отображения модели. Клавишей [F3]. Вернуть вид к нормальному можно повторным нажатием [F3]. Если заметили случайно выбранную ненужную вершину - удерживая [Alt] кликаем по ней чтобы снять выделение. Кстати выделять вершины можно не только путём клика мышью левой кнопкой, но и рисуя область выделения (с нажатой левой кнопкой мыши) - тогда все вершины попавшие в выделенную область будут выделены.

Модель робота scv как в Starcraft 2 - Выдавим кабину SCV робота, в которой сидит оператор.

Очень полезная опция - Ignore Backfacing - позволит запретить выделение вершин на задней стороне модели когда вы выделяете целую область и не хотите чтобы вершины на обратной стороне модели выделялись. Итак при помощи инструмента Select And Move нам осталось переместить выбранные вершины вниз по оси Z.

Модель робота scv как в Starcraft 2 - Выдавим кабину SCV робота, в которой сидит оператор.

Применив серию перемещений и масштабирований добьёмся, чтобы кабина выглядела вот так.

Модель робота scv как в Starcraft 2 - Выдавим кабину SCV робота, в которой сидит оператор. Модель робота scv как в Starcraft 2 - Выдавим кабину SCV робота, в которой сидит оператор.

Выдавливаем ноги робота.

Модель робота scv как в Starcraft 2 - Выдавливаем ноги робота.

Корректируем кабину если требуется. И продолжаем выдавливать ноги.

Модель робота scv как в Starcraft 2 - Выдавливаем ноги робота.

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

Модель робота scv как в Starcraft 2 - Поэтому выделяем вершины в месте

Выдавливаем ступни, которые имеют колесную тягу и робот может катится не перемещая ног. Большой детализации не требуется, поэтому колеса не моделируем. Как видно из рисунка - нужно сначала выдавить грани вниз, затем выделив 2D-привязку вершин выполнить Cut (нарезку граней), небольшую коррекцию вершин и снова выдавливание.

Модель робота scv как в Starcraft 2 - Ступни робота.

Теперь выдавливаем боковые энерго-реакторы (блоки передней части с лампами). Сначала выдавливаем при помощи Bevel - придав суживающийся скос. Затем выделив грани только на левой стороне поворачиваем их на угол -20. Затем аналогично на правой - на 20. Затем снова Bevel. Потом опять корректируем поочередно левую и правую стороны. И снова последовательно выдавливаем и делаем скос.

Модель робота scv как в Starcraft 2 - выдавливаем боковые энерго-реакторы.

Модель робота scv как в Starcraft 2 - выдавливаем боковые энерго-реакторы.

Выдавим вентиляционные отдушины в верхней части модели.

Модель робота scv как в Starcraft 2 - вентиляционные отдушины в верхней части модели.

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

Модель робота scv как в Starcraft 2 - вентиляционные отдушины в верхней части модели.

Башенку расположенную по-середине выдавливаем аналогично.

Модель робота scv как в Starcraft 2 - вентиляционные отдушины в верхней части модели.

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

Модель робота scv как в Starcraft 2 - с вентиляционными башенками закончено, переходим к выдавливанию рук.

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

Модель робота scv как в Starcraft 2 - моделирование рук.

Далее мы закончим моделирование рук SCV и перейдём к завершающей части - моделированию элементов задней части робота SCV.

[все уроки game craft]  [моделируем scv]  Моделируем робота SCV шаг 2 часть 3

подробнее

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

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

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

[downloads:17]

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

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

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

 

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Some2DImage: TD3DImage2D;

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


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


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


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

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


Some2DImage.RestoreDeviceObjects;

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

Some2DImage.InvalidateDeviceObjects;

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

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

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

Some2DImage.ColorKey := $00000000;

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

SomeFilename := Some2DImage.TexFilename;


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

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

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

 

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

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

 

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 8

Онлайн-комикс Костя Коробкин - В гостях у тёти Светы - интерактивный комикс (kk as).

- Ну вот мы и дома. Неплохой вид, правда ?

- Супер ! Я и не знал что у Вас так красиво.

Костя Коробкин - В гостях у тёти Светы (- интерактивный комикс (kk as) - онлайн комикс - страница 8

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

[страница 1][страница 2] [страница 3] [страница 4] [страница 5] [страница 6] [страница 7]  [страница 8] [страница 9] 

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



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

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

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

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



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


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