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


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

модуль слайдера
Модуль слайдера (slider) Предлагаем вашему вниманию сайт под ключ на базе системы megainformatic cms express files + модуль
подробнее...

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

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

модуль 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

megainformatic - дизайн сайта строительной компании УЛЬТРА-СТРОЙ

megainformatic - Тестирование подключения платежной системы

megainformatic - Выпадающее окно регистрации на сайте

megainformatic - Тестирование подключения к платежной системе с использованием скрипта эмулятора

megainformatic - Модуль для регистрации пользователя на сайте

megainformatic - Код для модуля регистрации пользователя на сайте

megainformatic - Быстрый подсчёт ключевых слов в статье

megainformatic - Модуль подсчёта ключевых слов в статье

megainformatic - Онлайн-сервис для подсчёта статистики ключевых слов

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

megainformatic - Логика работы слайдера на javascript

megainformatic - Пишем свою соц. сеть - модуль предложений для webjob

megainformatic - Пишем свою соц. сеть - модуль предложений для webjob - часть реализации для личного кабинета

megainformatic - Пишем свою соц. сеть - Реализация файлового хранилища предложений в csv-файле

megainformatic - Тестирование подключения к платежной системе ЕДИНЫЙ КОШЕЛЕК (w1.ru) с использованием скрипта эмулятора

megainformatic - Пишем свою cms - шаг 1

megainformatic - Пишем свою cms - шаг 2

megainformatic - Пишем свою cms - шаг 3

megainformatic - бесплатная флеш игра freeway fury 2 - разработчик Serius Games

megainformatic - бесплатные флеш игры сторонних разработчиков

megainformatic - Как я осваивал Flash

megainformatic - Список уроков на тему создания flash приложений и игр

megainformatic - Как я осваивал Flash - шаг 2 - Основы создания простейших flash - игр

проект портала Идеи Комфорта

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

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

megainformatic - Использование cron, crontab и планировщика задач

megainformatic - Совместное использование jquery и mootools или других js-фреймворков

megainformatic - Модуль content php performer для megainformatic cms

megainformatic - Пишем компактный слайдер

megainformatic - Что нужно знать для создания сайта ?

megainformatic - Что нужно знать для создания сайта ? Глава 2 - Кодировки и DOCTYPE

megainformatic - Что нужно знать для создания сайта ? Глава 3 - Идём дальше - нанизываем новый код - где объявляются стили css и код javascript

megainformatic - Что нужно знать для создания сайта ? Содержание

megainformatic - Что нужно знать для создания сайта ? css - стили

megainformatic - preg_match или Использование регулярных выражений в php

megainformatic - статьи Тимонина Андрея - Flash. Содержание

megainformatic - статья Тимонина Андрея - Flash. Подготовка к работе.

megainformatic - статья Тимонина Андрея - Flash. Hello world.

megainformatic - статья Тимонина Андрея - Flash. Экспорт SWC библиотеки.

megainformatic - Тимонин Андрей - Несколько слов о себе

megainformatic - статьи Тимонина Андрея - уроки из области веб программирования, создания казуальных игр

megainformatic - статья Тимонина Андрея - Обеспечиваем доступ к объекту из любой точки программы. Singleton

megainformatic - статья Тимонина Андрея - Хронология работы программы. Создаем Лог

подробнее

Вакансии



megainformatic web job предложения о работе, фриланс заказы

megainformatic.ru/webjob

В нашей команде

- сценарист;

- контент-менеджер;

- менеджер проектов;

- дизайнер - photoshop, corel draw, 3ds max;

- программист c++, delphi, андроид;

- веб программист php/js/html/css/mysql;

- музыкант;

- звукорежиссер;

- генератор вредных идей и советов;

Если Вы хотите стать частью нашей команды или присоединиться к разработке одного из проектов - пишите нам !

Это можно сделать несколькими способами:

Оставьте своё сообщение через форму Комментария ниже.

Напишите по одному из наших Контактов.

Можно также оставить сообщение через форму Возник вопрос Нажми.



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

Кто Вы и чем хотите заниматься ?

Какой у вас опыт ?

Примеры реализованных вами проектов ?



Что Вы получите работая с нами.

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

Пополните свои знания и опыт, расширите кругозор.

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

Вы серьезны, целеустремленны, полны сил и готовы к покорению новых вершин ? Тогда нам по пути !



Предложить задачу, проект



megainformatic web job предложения о работе, фриланс заказы

megainformatic.ru/webjob

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

Или оставить сообщение через форму комментариев ниже.

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

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

подробнее

     
 
megainformatic cms e-mailer

Система Управления Вашим Сайтом - megainformatic cms e-mailer

Представляет из себя 4 в 1 - megainformatic cms, e-pro, e-shop и e-mailer. Эти системы позволяют вам управлять сайтом, партнерскими заказами, магазином и организацией e-mail рассылок.

 

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

Система Управления Вашим сайтом - megainformatic cms e-mailer

Эта система объединяет в себе 4 подсистемы:
- megainformatic cms - систему управления сайтом;
- e-pro - систему управления заказами в магазинах партнеров;
- e-shop - систему управления ващим собственным интернет-магазином;
- e-mailer - систему автоматизированных рассылок по базе пользова-
телей.
Таким образом, приобретая данную систему Вы получаете 4 в 1.
Это позволит вам создать собственный сайт - интернет-магазин,
активно использовать партнерские системы и выполнять рассылки
новостей вашему кругу пользователей.

 
     
     
 

Система megainformatic cms e-mailer имеет следующие особенности:

- простая и быстрая установка;

- полностью открытый исходный код на php;

- подробное документирование возможностей;

- удобное управление контентом;

- доступный для понимания код;

- наличие встроенных модулей административной части, контента, поиска, карты сайта, случайной новости, даты и времени, e-pro, e-shop, e-mailer, сменные шаблоны, выпадающее меню;

- наличие подключаемых платежных систем WebMoney, Робокасса, Единый Кошелек, Квитанция сбербанка, QIWI, указание реквизитов для других систем, например yandex.деньги.

 
     
 

Система megainformatic cms e-mailer решает следующие задачи:

- позволяет создать сайт, пополнять, расширять и продвигать его;

- добавить к сайту товары и систему оплаты и обработки заказов, превратив его в интернет-магазин - e-shop;

- осуществлять работу с партнерскими системами других магазинов обрабатывая заказы с помощью системы e-pro;

- организовывать автоматизированное пополнение списков рассылки и выполнять автоматизированные рассылки новостей по базе пользователей вашего сайта;

 
     
 

Если Вы всё еще сомневаетесь остановить ли свой выбор на megainformatic cms e-mailer, тогда рекомендую вам начать с бесплатного решения - megainformatic cms free - это уникальная система, работающая без баз данных и состоящая всего из ОДНОГО!!! исполнимого файла.

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

 
     
  Добро пожаловать в мир электронных знаний !!!  
     
     
     
     
     
     
     
     
подробнее

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



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

Но !

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

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

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

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

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

HashTab

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





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

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

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



Предистория

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



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

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

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

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

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

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

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

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

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

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

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







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

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





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

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

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

демо версия 19.09.2017




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




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

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




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

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

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

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



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



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

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






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

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



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



web money
web money
R247856066494

yandex money
yandex money
41001702554684





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

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

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

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

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





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

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

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

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

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



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

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



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

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

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

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





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

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

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

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

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

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





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

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

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

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

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

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

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

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

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

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

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

подробнее

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

На протяжении предыдущих 4 уроков мы рассмотрели как строится базовый каркас D3D-приложения, узнали некоторые детали разработки игры.

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

 

Начнём с того, что спросим себя: для чего вообще нужны игровые объекты?

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

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

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

 

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

Какие типы объектов бывают?

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

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

Этот процесс является итеративным. Хорошие и проработанные объекты создаются постепенно, по мере совершенствования и улучшения кода игры. Это всё тесно связано с хорошими правилами и хорошим стилем программирования.

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

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

 

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

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

 

Вот пример описания класса объекта игрока взятый из исходного кода игры проекта "Нечто: Необъяснимое".

TPlayerHero = class(TAnimGameCreature)
private
//FAction: TCharActions;
//FAnimationEnded: Boolean;


procedure DoAnimateProc(TimeLapsed: Single; hr: HResult);

//function GetTerrainHigh(x, z: Single): Single;
protected

procedure SetAnimationParam(Value: Integer); override;

function DoRender: HResult; override;
function DoFrameMove: HResult; override;
//function DoFrameMove2(TimeLapsed: Single): HResult; override;

function DoInitDeviceObjects(pd3dDevice: IDirect3DDevice8): HResult; override;
function DoRestoreDeviceObjects: HResult; override;
function DoInvalidateDeviceObjects: HResult; override;
function DoDeleteDeviceObjects: HResult; override;

public

constructor Create;
destructor Destroy; override;


end;

 
Как видим данный класс производится от некоторого базового класса - TAnimGameCreature и имеет целый ряд методов, связанных в основном с использованием анимированной 3D-модели персонажа. Внутренние особенности класса - его свойства реализованы внутри TAnimGameCreature. Посмотрим его описание -
 
TAnimGameCreature = class(TD3D_GDOListItem)
private
FAction: Integer;
FDoAnimate: TAnimateProc;

protected

procedure SetAnimationParam(Value: Integer); virtual;

function DoRender: HResult; override;
function DoFrameMove: HResult; override;

function DoInitDeviceObjects(pd3dDevice: IDirect3DDevice8): HResult; override;
function DoRestoreDeviceObjects: HResult; override;
function DoInvalidateDeviceObjects: HResult; override;
function DoDeleteDeviceObjects: HResult; override;

public

Character: TAnimatedMesh;

Pos, Orient: TD3DXVector3;
YAxisAngle: Single;
Delay: Single; //длительность воспроизведения анимации
IdleDelay: Single; //длительность бездействия

CurrentAnimDelay: Single; //временная задержка для воспроизведения текущей анимации
IdleAnimDelay: Single; //временная задержка анимации бездействия

GameScene: TD3D_GDOListItem;

constructor Create;
destructor Destroy; override;

function Animate(TimeLapsed: Single): HResult;

property Action: Integer read FAction write SetAnimationParam;
property DoAnimate: TAnimateProc read FDoAnimate write FDoAnimate;
end;

 

Как видим данный класс происходит от класса TD3D_GDOListItem. Такое наследование связано с тем, что данный объект будет являться элементом списка графических объектов TD3D_GDOList. Помимо этого вы видите ряд полей и свойств описанных в данном классе.

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

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

 
Если взять исходный код игры "Ну, Погоди!", то здесь Вы обнаружите полное отсутствие самостоятельных классов игровых объектов. Игра достаточно проста, поэтому всё, что нужно в качестве игровых объектов удалось описать лишь структурами данных определенных типов. Использования классов производных от TObject или каких-то других не потребовалось.
 

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

Так например,

WolfPos: TTraysNum; //положение волка

определяет текущее положение волка из возможных 4х (см. описание TTraysNum)

GameScore, ShowedGameScore: Integer; //

определяет текущий и отображаемый счет игры

ShtrafGameScore: Single; //счет штрафных очков

показывает количество штрафов, три штрафных очка приводят к завершению игры - проигрышу

Аналогично игровой объект яйцо - также представлен в виде полей класса приложения -

Trays: TEggPos; //позиция яиц на лотке
TraysSet: set of TTraysNum; //номера лотков с которых могут катиться яйца
TraysIndex: TTraysIndex; //индексы номеров лотков
//используются в генераторе новых яиц

 
CreatedEggsNum: Integer; //количество созданных яиц

NewEggTimeCounter: Single; //счетчик появления нового яйца на лотке
NewEggTimeLimit: Single; //предел времени по прошествии которого
//будет создано новое яйцо на лотке

MoveEggTimeCounter, MoveEggTimeLimit: Single; //счетчик и предел
//времени для очередного шага продвижения яиц по лоткам

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

Если вспомнить мой опыт в этой области, то я в своё время начинал изучать Delphi5 в 2002 году, пытаясь создать логическую игру Логика цвета. Естественно, что ни о каком DirectX речи не шло. Это была простая игра-окно с рядом кнопочек. Нужно было угадывать цвета которые задумал компьютер, при этом он давал небольшие логические подсказки на каждом шаге.

Чуть позднее, когда опыт программирования был мной приобретен и усвоены несколько книг по программированию, я перешел к проекту игры "Дорога в Город". Это было уже в 2003. Толчком к освоению DelphiX и созданию игры "Дорога В город" послужила попытка устроиться в одну небольшую фирму, занимавшуюся разработкой компьютерных игр. Моих знаний конечно же оказалось для этого недостаточно, кроме того, требовалось знание все-таки C++ и DirectX, а не Delphi. Однако такой опыт и требования предъявленные при этом послужили мне своеобразной планкой, к которой я стремился. Прошло некоторое время и игра была воплощена, а я уже стал подумывать над созданием 3D-игр. Так появилась библиотека Delphi DirectX 8.1. Конечно основой этой библиотеки послужили работы Алексея Баркового по конверсии кода и примеров из DirectX SDK на C++ в Delphi (http://www.clootie.ru)

Но Алексей Барковой написал именно SDK для Delphi. В его интересы не входила практическая сторона - попытка создания при помощи этого SDK полноценной игры. Для этого не хватало некоторых исходников, кроме того, не было самого главного - примера игры, который можно было бы переделать на Delphi и который послужил бы основой для создания полноценной игры.

У меня под рукой оказалась Microsoft DirectX SDK 8.1 и там был как раз пример игры Donuts3D. Я поставил перед собой задачу реализовать эту игру на Delphi 7, и эта задача удалась. При этом появилось несколько новых исходников, которые и сформировали библиотеку Delphi DirectX 8.1. Дело пошло дальше и появились проекты "Нечто: Необъяснимое" и "Ну, Погоди!".

 
Чтобы лучше понять и усвоить то, что было извлечено из опыта создания игры (проект "Нечто: Необъяснимое", кстати еще пока не завершен, находится в стадии разработки), я приступил к написанию этих уроков.
 
Советую и Вам, если Вы всерьез решились научиться создавать собственные игры и перевести это дело в дальнейшем в разряд Вашей основной или параллельной работы, вести для себя своеобразные дневники разработки, небольшие уроки и статьи. С одной стороны это позволяет лучше уяснить изучаемый материал, а с другой - это послужит хорошим материалом для тех, кто еще только учится писать свои игры, делает в этом свои первые шаги и не обладает таким опытом, который есть у Вас.
 

Итак, это было небольшое отступление от основной темы нашего урока.

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

 
Теперь мы переходим к практической части нашего урока. В рамках неё мы рассмотрим реализацию реальных игровых классов для использования в проекте "Нечто: Необъяснимое. Нить накала". Будет показано как реализованы 2 микро-игры в мини-игре "в плену желаний" для главы 7.
 
"В плену желаний" - 8,55 Mb-готовый проект CoD (8,55 Mb)
 
Код будет основан на исходном коде игры проекта "Нечто: Необъяснимое". Приложение будет работать в обычном режиме за исключением того, что после выбора пункта меню [новая игра] будет выводится не экран выбора глав, а сразу же титульный экран данной мини-игры.
 

Для использования кнопок меню [начать] и [закончить] и вывода их в нажатом состоянии подойдет класс TD3DImage2D описанный в модуле D3DGUI.pas (его Вы найдете в исходном коде игры "Ну, Погоди!").

Для рассчета относительных координат и масштабных коэффициентов вывода изображений методом TD3DImage2D.DrawScaled воспользуйтесь следующими правилами

относительные координаты экрана x = -1..1, y = 1..3

для разрешения экрана 1024х768

текстура кнопки 512х512, ее пиксельные координаты (относительно левого верхнего угла экрана) -

497, 268

масштабный коэффициент длины (x)

экран 1024/2 = 512 - это масштабный коэффициент 0.5 для длины экрана

[отношение длины к ширине] = 1024 : 768 = 1,33333333...

масштабные коэффициенты вывода текстуры 512х512 -

x_scale = 0.5*1.333333 = 0.66

y_scale = 0.5*1.333333 = 0.66

Относительные координаты вывода -

x, y = -0.02, 1.70

рассчет координат осуществляется исходя из следующих соображений

512, 384 - центр экрана (0, 0)

x = (497-512)/512 = -0.029296875

y = (268+384)/384 = 1.6979166666

 

Удобство относительных координат состоит в том, что они не зависят от разрешения экрана. Попробуйте выполнить те же рассчеты для разрешения 800х600 и получите те же масштабные коэффициенты и те же относительные координаты.

Важно также обратить внимание на то, что для анимированных объектов ТЕКСТУРА ОБЯЗАТЕЛЬНО ДОЛЖНА БЫТЬ КВАДРАТНОЙ, т.е. - 32х32, 64х64, 128х128, 256х256, 512х512, 768х768б 1024х1024, 2048х2048 иначе при выводе анимации будут возникать сдвиги картинки!

Для неанимированных изображений можно использовать и не квадратные изображения текстур, как например title.jpg - это если посмотреть в ресурсы проекта (Media\Textures\captivity) картинка размером 1024х768

 

Я не буду здесь приводить исходный код, Вы можете просто скачать

готовый проект (CoD) (8,55 Mb) или исходный код примера (GameClasses) (1,3 Mb)

[downloads:13]
 

готовый проект (CoD) (8,55 Mb) представляет из себя базовую оболочку игры "Нечто: Необъяснимое" с реализованной мини-игрой "в плену желаний".

исходный код примера (GameClasses)

[downloads:13] предназначен для сборки с использованием библиотеки delphi directx 8.1 включенную в исходный код игры "Ну, Погоди!". Содержит демонстрацию вывода титульной заставки, экранного меню (обработка пунктов меню [начать] и [закончить], игрового курсора

 

Вопросы которые предстоит решить читателю:

Как сделать вывод курсора и пунктов выбранных меню с прозрачным фоном, как это имеет место в готовом проекте (CoD)?

При выходе из полноэкранного режима нажатием [закончить] происходит ошибка, как ее устранить?

 

Если Вы правильно ответите на поставленные вопросы, значит можно считать, что урок Вами усвоен и можно переходить к следующему.

 
[назад] [страница 1] [далее] [к содержанию]
 
Если Вы затрудняетесь с ответом, то можете посмотреть их - ответы на поставленные вопросы
 
     
     
     
     
Содержимое данной страницы доступно только зарегистрированным пользователям.



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

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

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

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



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


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