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


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

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

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

megainformatic - Основы DirectInput8 в среде Delphi 7

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

megainformatic - Плагин для 3DS MAX из DX9 SDK

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2)

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 2

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 3

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 4

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 5

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 6

Система управления сайтом - megainformatic cms e-shop

Система управления сайтом - megainformatic cms e-shop

Система управления сайтом - megainformatic cms e-shop

megainformatic - Уроки 3ds max - Введение в 3ds max

megainformatic - ГАЛЕРЕЯ 3D-моделей

megainformatic - СОЗДАНИЕ МАКЕТА ПОМЕЩЕНИЯ

megainformatic - Создание макета помещения - этап 2

megainformatic - МОДЕЛИРОВАНИЕ НА УРОВНЕ МНОГОУГОЛЬНИКОВ

megainformatic - СОЗДАНИЕ ПРЕДМЕТОВ ОБСТАНОВКИ ПОМЕЩЕНИЯ

подробнее

Пишем слайдер на javascript с нуля

Доброго Вам времени суток, странник интернета !!!

Я давно хотел рассказать о том, как можно создать свой слайдер используя javascript - технологию.

Вы скажете - слайдеров уже готовых в интернете - МОРЕ.

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

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

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

Итак, рассмотрим какой html-код требуется для отображения слайдера и что должен делать с этим кодом javascript, чтобы этот код превратился в слайдер.

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

<div id="gl_slider" style="text-align: center;">

<div id="gl_slider_container">

<div class="timedSlideshow jdSlideshow" id="mySlideshow" style="display: block; "><a class="global" href="">

<div class="slideElement" style="position: absolute; left: 0px; top: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; background-image: url('.$slider_dir.'/images/banner/05.gif); visibility: hidden; opacity: 0; background-position: 50% 50%; "></div>

<div class="slideElement" style="position: absolute; left: 0px; top: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; background-image: url('.$slider_dir.'/images/banner/fl_lessons.jpg); visibility: hidden; opacity: 0; background-position: 50% 50%; "></div>

<div class="loadingElement" style="display: none; "></div><div style="visibility: visible; opacity: 0.7; height: 40px; " class="slideInfoZone"><h2>продукты сайта</h2><p>все продукты нашего сайта</p></div></a> </div> <script type="text/javascript">

countArticle = 0;

var mySlideData = new Array();

mySlideData[countArticle++] = new Array(

'modules/slider/images/banner/05.gif',

'http://localhost/megainformatic_ru/?page=40&banner',

'Уроки Photoshop',

'Если Вы хотите изучить профессиональные методы работы в Adobe Photoshop'

);

mySlideData[countArticle++] = new Array(

'modules/slider/images/banner/ph_draw_and_anim.jpg',

'http://localhost/megainformatic_ru/?page=66&banner',

'Уроки Photoshop - Рисуем и анимируем',

'учимся рисовать и анимировать в photoshop'

);

</script>

<script type="text/javascript">

function startSlideshow() {

var slideshow = new timedSlideShow($('mySlideshow'), mySlideData);

}

addLoadEvent(startSlideshow);

</script>

</div>

</div>

Исходя из этого кода можно сделать такой вывод - в блоке div с id mySlideshow размещаются все картинки слайд-шоу в виде блоков div класса slideElement.

Как можно заметить все они имеют атрибут visibility: hidden;
Т. е. скрытый - поэтому они не отображаются.

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

Как видите в теории это достаточно просто.

Посмотрим что имеет место в скрипте фактически.

Сначала выполняются некоторые подготовительные операции -

countArticle = 0;

var mySlideData = new Array();

mySlideData[countArticle++] = new Array(

'modules/slider/images/banner/05.gif',

'http://localhost/megainformatic_ru/?page=40&banner',

'Уроки Photoshop',

'Если Вы хотите изучить профессиональные методы работы в Adobe Photoshop'

);

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

Адрес изображения

Ссылка для перехода по клику на данное изображение

А также некоторые пояснительные надписи

Затем происходит следующее -

function startSlideshow() {

var slideshow = new timedSlideShow($('mySlideshow'), mySlideData);

}

addLoadEvent(startSlideshow);

Т. е. внутри обработчика функции startSlideshow создается экземпляр класса timedSlideShow и ему передаются параметры -

id блока набора элементов слайдера

и массив описаний к этим элементам.

Далее данная функция добавляется в обработчик события onLoad для загрузчика onLoad страницы.

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

В нашем случае таким приложением как раз является скрипт слайдера.

То что мы рассматривали выше - это так называемая подготовительная часть работы, которая описывает html код слайдера вместе с его содержимым (набором картинок), а также вызов метода для создания яваскрипт-объекта слайдера.

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

На самом деле их всего 3:

<script src="<?php echo $slider_dir; ?>/inc/mootools.release.83.js" type="text/javascript"></script>

<script src="<?php echo $slider_dir; ?>/inc/timed.slideshow.js" type="text/javascript"></script>

<link rel="stylesheet" href="<?php echo $slider_dir; ?>/inc/jd.slideshow.css" type="text/css" media="screen">

файл mootools.release.83.js - представляет из себя подключенную, используемую слайдером библиотеку mootools.

файл timed.slideshow.js - содержит собственно логику работы слайдера.

ну и наконец файл jd.slideshow.css - это собственно описание элементов внешнего вида слайдера.

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

Нам с вами остается собственно кратко познакомиться с логикой работы слайдера (т. е. прокомментировать код, описанный в файле timed.slideshow.js).

Этим Мы с вами займёмся в следующей статье - логика работы слайдера на javascript
подробнее

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

Основы 3D-анимации, экспорт скелетной анимации

дата публикации: 9.10.2007

Цели и задачи статьи: показать способы создания анимации в 3Ds Max 7.0 или выше (можно использовать и ранние версии, но с оговорками указанными ниже) и использования ее в Delphi DirectX - играх.

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

- Наличие среды Delphi 6, 7 или выше для компиляции исходного кода, наличие 3Ds Max 7.0 или выше для создания моделей и анимаций;

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

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

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

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

Введение

Наверное нет смысла объяснять что игра без анимации - это всё равно что паровоз без колес. В современных играх применяется 2D и 3D анимация. И если 2D анимация у Вас не вызывает особых вопросов значит Вы готовы к изучению основ 3D анимации.

В DirectX SDK Вы найдете примеры реализации различных видов анимации - от 2D до 3D. 2D анимация и способ ее реализации показан в примере игры из DirectX SDK 8.1 адаптированной автором на Delphi 6-7 - Donuts3D. Ее можно с успехом применять для анимированных текстур (например вода, небо, лава и т.п.) и 2D-объектов используемых в 3D-сцене. Всё что требуется для создания 2D-анимации - это набор кадров и их последовательное отображение.

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

пример 2D-анимации - шагающий человечек

Ситуация с 3D-анимацией несколько иная. В 3D анимации учавствует уже не плоское изображение (хотя может учавствовать и оно), а трехмерная модель состоящая из некоторого количества объектов - вершин, граней, примитивов. Также как и в случае с 2D анимацией - мы имеем модель находящуюся в разных состояниях во времени. Эти состояния - кадры (frames). Анимацию можно производить непрерывно и постепенно меняя состояние нужного объекта в каждом кадре, а можно и ограничиться так называемыми ключевыми кадрами (keyframes).

пример 3D анимации - шагающий RoBoo

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

Итак, любая анимация 3D модели - это трансформация (смещение, вращение, масштабирование - Translate, Rotate, Scale) суб-объектов модели (вершин, граней, примитивов). Условно можно выделить следующие виды анимации -

- вершинная (или морфинг) - анимируются трансформации отдельных вершин.

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

- скелетная (Skinned Mesh) - относительно новый вид анимации (по крайней мере для новичков в 3D-программировании) включает в себя концепцию использования скелета. Суть ее заключается в том, что вся модель снова представляется как единый меш (Mesh). Внутрь меша внедрена другая - более примитивная модель называемая скелетом. Скелет состоит из отдельных примитивов называемых костями (Bones). Каждая вершина привязана к определенной кости (костям). Степень влияния отдельных костей на вершину называется весовым коэффициентом (Weights), представляется числом с плавающей точкой (тип Single) и лежит в диапазоне от 0 до 1. Сумма всех весов костей влияющих на данную вершину должна составлять 1. Кости совершенно не влияющие на данную вершину имеют весовой коэффициент для нее 0, влияющие >0. В Direct3D8 на вершину не должно влиять более 4 костей, а на практике часто встречается влияние только лишь одной кости. Анимируя скелет мы тем самым анимируем и связанные с данными костями вершины.

Все эти виды анимаций применяются в 3D-играх и имеют свои достоинства и недостатки. Морфинг - этой самый простой вид анимации с точки зрения объема необходимых вычислений. Но объем получаемых выходных файлов для анимации морфингом слишком большой. Поэтому для сокращения объема применяют ряд оптимизаций - уменьшение FPS (Frames Per Second) - частоты кадров, уменьшение количества вершин модели и различные способы упаковки информации об анимации, применение межкадровой интерполяции. Объектная анимация более удобна за счет сокращения объема выходных данных, но требует большей работы с моделями и больше вычислений. Скелетная анимация в свою очередь требует еще больше предварительной работы над моделью и еще большего количества вычислений, но объем анимированной модели значительно сокращается. Кроме того, скелетную анимацию можно использовать не только для одной, но и для многих других подобных моделей, что еще больше сокращает объем необходимых медиа-файлов игры.

Примеры анимаций

Анимация методом морфинга показана в DirectX SDK в примере приложения Dolphin. Адаптированное для Delphi приложение представлено в базовых уроках Delphi DirectX.

Примеры объектной и скелетной анимации мы с Вами создадим на протяжении данной статьи.

Создаем анимированные модели

Сначала поговорим о том, в какой формат будем экспортировать анимированную модель из 3Ds Max.

Для экспорта анимаций в произвольный формат можно воспользоваться возможностями MAXScript языка встроенного в 3Ds Max или даже написать собственный плагин. Но для этого Вам понадобится MAX SDK.

Если будем экспортировать в формат X с использованием плагина из DirectX SDK 9.0 - DXExtensionsMax.gup то столкнемся с проблемой того, что объектная анимация экспортируется без проблем (для Direct3D9), а вот скелетная - увы почему-то не поддерживается (даже для Direct3D9!). Для анимации вершин нужно выводить каждый кадр в отдельный файл, а затем все это оптимизировать и упаковывать в один файл с анимированной цепочкой кадров.

Поэтому для экспорта скелетной анимации придется писать свой плагин или экспортер. Можно на первых порах воспользоваться и сторонними экспортерами, например, Я нашел в Интернете экспортер PandaDXExport. Этот экспортер устанавливается точно также как и DXExtensionsMax.gup Но он требует очень аккуратного обращения. К сожалению отсутствует исходник экспортера. Но это уже личное дело его автора, потому что экспортер распространяется бесплатно! Подготовка моделей для экспорта должна вестись очень аккуратно, иначе это приведет к нарушениям в полученной экспортированной модели. Ниже Мы попытаемся разобраться в проблемах экспорта с помощью PandaDXExport и обойти возможные ошибки и сложности.

Для экспериментов с экспортом Вам понадобится следующая модель - roboo (60 Кб). шагающий двуног

Это просто "Шагающий двуног" - бокс с вычлененными при помощи Bevel и Extrude двумя конечностями, с внедренным скелетом из двух конечностей и базовой кости. Также содержатся объекты Dummy как захваты для управления анимированием. О моделировании персонажей будет рассказано в отдельных статьях посвященных урокам по 3Ds Max.

 
Итак, предположим, что Вы уже скачали архив roboo и распаковали например, в папку SkinnedMeshExperim, установили плагин PandaDXExport.
 
Откройте файл roboo_anim_go.max из 3DS Max 7 (или выше) и попробуйте экспортировать его командой File > Export > Panda DirectX (название этого пункта будет зависеть от того, что вы пропишете в конфигурационном файле plugin.ini в папке установленного 3Ds Max).
 
Экспорт скелетной анимации Пандой
 
Когда Вы введете подходящее имя и нажмете кнопку Save (Сохранить) перед Вами появится окно параметров экспорта Панды. Задайте следующие параметры экспорта -
 
 
 
 
 
И нажмите ОК. При этом модель должна благополучно экспортироваться в файл X с именем, которое Вы указали.
 
Для проверки результата экспорта можно воспользоваться утилитой MeshView из DirectX SDK 8.1 или DirectX Viewer из DirectX SDK 9.
 
Кроме того, поскольку целью нашего экспорта является использование анимаций в Delphi DirectX 3D-игре, мы проверим проигрывание экспортированной анимации в приложении SkinnedMesh. (1,6 Mb).
 
Для компиляции и исполнения Вам понадобятся файлы из архива с ОБЩИМ КОДОМ (772 Кб). Замечания по компиляции и исполнению читайте в readme.txt вложенный внутри данного архива!
 

В папке архива SkinnedMesh после распаковки вы найдете папку Media. В ней содержатся три примера анимации - nx4.x, tiny.x и robooPDX.x.

nx4 - подлодка из проекта Тайны Морских Глубин: Операция Тайфун, показана анимация объектов - вращающихся винтов;

tiny.x - оригинал из DirectX SDK 8.1, 9;

robooPDX.x - то, что вы должны получить в процессе экспорта модели из файла roboo_anim_go.max

 

Для проверки данных анимированных моделей откройте файл проекта SkinnedMesh.dpr из среды Delphi, откройте unit SkinnedMeshUnit.pas, в классе CMyD3DApplication найдите реализацию функции InitDeviceObjects найдите строчку кода m_szPath := 'Media\tiny.x';

И задайте другую модель из имеющихся - nx4.x или robooPDX.x

Перекомпилируйте приложение и запустите полученный исполнимый файл. Если получаете ошибку об отсутствии файла D3DX81ab.dll скопируйте этот файл из папки с ОБЩИМ КОДОМ в папку с исполнимым файлом SkinnedMesh.exe и снова запустите приложение SkinnedMesh.exe.

 
пример работающего приложения
 
Roboo экспортировался в Х без проблем. Остановимся теперь на экспорте более сложных, но близких к реальным игровым приложениям примерах моделей.
 
Модели должны быть очень аккуратно подготовлены к экспорту. Что это значит? Это значит что любые огрехи в анимации или моделировании непременно скажутся на качестве выходной модели если вообще не приведут к ее порче. Чтобы продемонстрировать Вам неверный экспорт и ошибки скачайте архив с некорректной моделью - uncorrect_model (115 Кб).
 
Распакуйте архив в какую-нибудь папку и откройте файл human_skeleton_animate_go.max из 3Ds Max. Попробуйте экспортировать в формат X экспортером PandaDXExport.
 
Полученную модель проверьте в приложении SkinnedMesh или утилитами MeshView из DirectX SDK 8.1 или DirectX Viewer из DirectX SDK 9.
 
пример некорректной модели
 
Налицо сразу 3 ошибки - часть головы оторвана и движется вместе с рукой; периодически мелькает нулевая позиция меша - с разведенными в стороны руками; отсутствует текстура.
 
Корни данной некорректной модели лежат в основе ее создания. Чтобы избежать создания таких ошибок рассмотрим процесс подготовки модели и ее скелета более подробно.
 
[далее]
 
     
  [Все уроки 3ds max] [Галерея моделей] [далее]  
     
подробнее

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

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



read paper in english

В данном уроке мы проведем своего рода быстрый старт - это введение в создание игр в среде fle game engine.





Содержание

страница 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. Мульти анимация







При создании игровых сцен представленных более чем одним игровым экраном возникает ряд вопросов:

1) Как создать сцену из нескольких игровых экранов ?

2) Как скроллить, т. е. перемещать созданный набор сцен ? Мы его будем называть условно: локацией. Локация это уже несколько сцен представляющих одно логическое целое.

3) Что нужно учитывать в коде при создании игры содержащей локации ?

Цель данной статьи - разъяснить как они решаются во fle game engine.

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







А именно: мы возьмем самый простой случай - игровую локацию составленную всего из 3 игровых экранов. Другими словами она будет включать всего 3 игровых сцены, объединенных в единую локацию.

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

Итак, для выполнения поставленных задач нам понадобится исходный код примера игры simple game.

Сначала мы проделаем следующее:

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





- из 3х одинаковых сцен создать локацию:

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

Сказано следующее:

Сборщик локаций

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



Вот пример такого файла:

begin6.scn
begin4.scn
begin2.scn
begin0.scn
begin1.scn
begin3.scn
begin5.scn

Исходя из данного файла в локации сцены будут появляться слева - направо в таком порядке: 6-4-2-0-1-3-5

Количество сцен всегда должно быть 2*n+1, где n - число от 0 до бесконечности.

Т. е. 1, 3, 5, 7, 9 и т.д.

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

Следовательно, если Вы всё поняли, берем файл

simple_game\Media\textures\environment\scenes\simple_game\scenes_list.txt

И вместо имеющейся в нём 1 строки -

scene_1.scn

создаем 3 -

scene_2.scn
scene_0.scn
scene_1.scn

файлы

scene_2.scn
scene_0.scn

это просто переименованные копии файла
scene_1.scn

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



- загрузим её:

в исходном коде игры simple game уже ничего менять не нужно, загрузка локации происходит

в модуле start.cpp

строкой кода

m_pGameSceneDataFile->LoadLocation(SimpleGameLocation, SimpleGameScenesPath);



- разберемся с тем, как её можно перемещать:

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

Вы это можете увидеть на показанном выше видео.

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

Во-первых нужно в методе

CD3DGameApp::ChangeGameCursorPos

модуля start.cpp

Внести такие небольшие изменения:

if ( cursor_at_window_x < cursor_spr_left_limit )
{
//cursor_at_window_x = cursor_spr_left_limit;
}

if ( cursor_at_window_x > cursor_spr_right_limit )
{
//cursor_at_window_x = cursor_spr_right_limit;
}

Тем самым мы снимаем ограничения на перемещения и они становятся намного заметнее.

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

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

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

Во-вторых, в методе

CD3DGameApp::ChangeGameCursorPos

модуля start.cpp

Нужно сделать еще одно небольшое изменение:

//g_fHorizontalScrollOffset = vPos.x; //было
g_fHorizontalScrollOffset = vPos.x * 2.0f; //так еще нагляднее потому что видны края всей локации при перемещениях мыши.


Ну и конечно, в редакторе Scene Editor можно каждую из сцен сделать индивидуальной.

Например я, добавил по правому краю 2 сцены и по левому 0 сцены - столбик из красных блоков. И в видео показаном выше видно как 2 и 0 сцены соприкасаются друг с другом.

А вот сцена 1 никаких отличий не имеет, поэтому заметить как она из 0 переходит в 1 можно только по похожему расположению ям.

Теперь Вы знаете как делать большие локации в играх на fle game engine !

Небольшое дополнение: в примере simple game управление реализовано от мыши. Но при желании Вы легко можете сделать его и от клавиатуры - т. е. чтобы шарик или игровая сцена были перемещаемы не от перемещений мыши, а, например, по нажатию клавиш стрелок управления курсором влево, вправо, вверх, вниз или a, d, w, s либо каких-то еще клавиш, которые Вам нравятся.

О перемещениях игровой сцены и шарика было рассказано в наших предыдущих статьях (см. Содержание выше статья страница 7 - Перемещения игровой сцены).

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

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

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

А если модули должны как-то между собой взаимодействовать ?

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





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

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



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

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

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

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



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


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