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


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

megainformatic - Костя Коробкин - В гостях у тёти Светы часть 2 Живые машины (kk as) - онлайн комикс - страница 16
Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 16 Онлайн-комикс Костя Коробкин - В гостях у тёти Светы - интерактивный комикс (kk as). - Ну ладно, уже звонок я побежала !
подробнее...

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

megainformatic - уроки Photoshop free

megainformatic cms express

megainformatic cms express

megainformatic cms express

megainformatic cms express files

megainformatic - Методы создания растровых изображений в Adobe Photoshop

megainformatic - Создание фотореалистичной текстуры травы

megainformatic - Рабочее пространство Adobe Photoshop

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

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

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

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

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

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

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

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

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

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

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

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

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

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

megainformatic - Уроки Photoshop

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ЛЕТО

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

megainformatic cms admin

megainformatic cms admin

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

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

megainformatic cms seo

megainformatic cms admin

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

megainformatic cms stat kit

megainformatic cms seo

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

подробнее

Развитие сайта - временная капсула


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

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

Поэтому расскажу о своем.


В далеком 2006 году я начал делать свой первый сайт.

Тогда еще на бесплатном хостинге и без поддержки динамического
наполнения - т. е. на голом html, который я толком то еще
и не знал.

Для создания применял конструктор html страниц - dream weaver.

Уже не помню какая там версия была, то ли 3, то ли 5.

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

С тех давних пор конечно многое изменилось.

Я освоил html / css / php / mysql / js.

Но знаний никогда не бывает достаточно.

Сейчас уже появляются новые технологии, новые инструменты.

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

Желательно уметь верстать его адаптивно, мобильно.

Мало создать сайт, требуется развернуть для него качественный
сервер, а для этого конечно - научиться разворачивать
и настраивать сервера.

Одним словом жизнь не стоит на месте.

Поэтому знания приходится постоянно пополнять и расширять.

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

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

И это не так уж плохо. Иначе бы один человек мог сосредоточить
в своих руках все ключевые технологии.

Но нет, такого не происходит, и думаю не произойдет никогда.

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

Особенно игр.

Не секрет, что каждый мечтает создать свою игру.

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

Поскольку игр очень много, то интерес к ним обесценивается.

Это как взять и продавать алмазы по дешевке.

Если алмазы стоят недешево и купить их не так легко, то
они и ценятся выше.

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

Сейчас же масса второсортных проектов. Просто потому что
возможностей создать их - море, но вот возможности довести
начатое до конца хватает не у всех.

Когда проект начат, энтузиазм угасает и начинается рутина,
то моментально пропадает к нему интерес.

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

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

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

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

Почему ?

Оправданий можно найти миллион. Но все оправдания - оправданны.
Уж простите за тавтологию.

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

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

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

Любой проект конечно же делаешь в первую очередь для себя.
Чтобы узнать что-то новое и открыть уже известное.

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

Итак, я подошел к теме - что такое развитие сайта ?

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

САЙТ СВОЙ ИЛИ НЕ СВОЙ

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

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

С одной стороны это гораздо легче, чем пытаться создать
свой сайт с нуля.

Но то что легко дается, легко и уходит.

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

Основная цель любой соц. сети - это общение между пользователями.

Я человек не слишком общительный, поэтому особого увлечения
социальными сетями не испытывал.

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

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

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

И все это можно найти на просторах сети. Это могут быть
как социальные сети, так и какие-то самостоятельные проекты.



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


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

Целей этих чаще всего несколько и некоторые из них совсем не
очевидны даже их создателю.


Что же это за слова, по которым можно найти искомое ?

Их никто не знает. Потому что как и сайт, интернет это живая,
динамичная система.

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




подробнее

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

В качестве основы мы возьмем исходный код шаблона стартового приложения Delphi DirectX 8.1 (или сокращенной D3D-приложения), который мы создали в предыдущем уроке

Но помните, что для его компиляции Вам нужна и сама библиотека Delphi DirectX 8.1 (папка с общим кодом)

или исходный код игры "Ну, Погоди!" с включенной обновленной библиотекой Delphi DirectX 8.1 (поддержка русских букв, 2D анимация и некоторые другие возможности).

 

Несколько важных замечаний.

Особенности создания и обработки пунктов меню Опции > Подсказка; Опции > Показ FPS

 
Также мы рассмотрим здесь как выводится изображение текстуры в рабочую область окна D3D-приложения, т.е. как появляется и формируется картинка представляющая экран игры Ну, Погоди!
 

Самым простым по реализации является пункт меню Выход (Exit). Вот реализованный код его обработчика -

procedure TMainForm.ExitGameMenuClick(Sender: TObject);
begin

Close;
end;

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

 

При создании и реализации пунктов меню Опции > Подсказка; Опции > Показ FPS нужно учесть следующую особенность.

Для данных пунктов меню нужно установить свойство Checked в true во время их создания.

Для обработки данных пунктов меню применяется следующий обработчик:

procedure TMainForm.ShowFPSOptionItemClick(Sender: TObject);
begin
ShowFPSOptionItem.Checked := not ShowFPSOptionItem.Checked;

if g_d3dApp <> nil then
g_d3dApp.m_bShowFPSOn := ShowFPSOptionItem.Checked;
end;

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

Вторая строка проверяет наличие объекта d3d-приложения и устанавливает его свойство отвечающее за показ FPS в заданный режим.

Опции > Подсказка реализуется аналогично.

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

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

Следовательно, загрузка необходимых ресурсов должна осуществляться не в цикле отрисовки (Render3DEnvironment), а до него. Это происходит внутри метода FormShow > InitD3DApp.

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

 

В нашем случае игра достаточно проста, поэтому все ресурсы будут загружаться лишь однажды - во время старта приложения и происходить это будет внутри FormShow > InitD3DApp > g_d3dApp.Create_ > OneTimeSceneInit > CreateDisplayObjects

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

В коде игры "Ну, Погоди!" это сделано еще более изящным образом: приложение переходит в состояние инициализации asBeginInit и в этом состоянии внутри метода FrameMove происходит вызов методов -

LoadGameTextures;
RestoreGameTextures;

и сразу же переход в состояние
m_dwAppState := asInit;

Это Вы можете сами увидеть в исходном коде игры "Ну, Погоди!".

 

Суть работы при этом сводится к следующему (попробуйте выполнить поиск фразы asBeginInit с начала исходного файла Main.pas в проекте игры "Ну, Погоди!")

Первое найденное - перечисляемый тип TAppStates

Второе - метод constructor TD3DGameApp.Create; - т.е. начальным состоянием во время старта приложения является именно это (asBeginInit)

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

Четвертое место где будет найдено asBeginInit - уже упомянутый выше метод FrameMove.

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

 

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

Для этого Вам нужно скопировать папку Media из дистрибутива полной версии игры "Ну, Погоди!" и разместить ее внутри папки Вашего текущего проекта (где расположен exe-файл, создаваемый проектом при его компиляции).

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

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

LoadGameTextures;
RestoreGameTextures;

DrawGameView;

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

 
Если же Вы немного затрудняетесь в этом, то рассмотрим, что нужно сделать.
 

Рассмотрим сначала простейший случай. Вам нужно загрузить текстуру

back.jpg

из папки Media\textures\

В объект класса TD3DImage2D, а затем использовать методы данного объекта для отображения в окне D3D внутри метода Render > DrawGameView > DrawGameScene > DrawGameElement

Как это реализовано в реальном коде игры "Ну, Погоди!" Вы можете увидеть сами.

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

В секции интерфейса объявляем константу с именем файла текстуры

interface

{...}

conts

BackTex = 'Media\textures\back.jpg';

В описание класса TD3DGameApp добавляем поле для объекта TD3DImage2D (данный класс реализован в модуле D3DGUI.pas, который присутствует ТОЛЬКО в исходном коде игры "Ну, Погоди!". В общедоступном архиве библиотеки Delphi DirectX 8.1 этого модуля нет!)

предварительно нужно указать ссылку к папке содержащей данный модуль в опциях проекта, а затем подключить его в пункте uses секции interface

uses

{...}, D3DGUI;

backImage: TD3DImage2D;

и описание методов

procedure LoadGameTextures;
procedure RestoreGameTextures;

procedure InvalidateGameTextures;
procedure FreeGameTextures;

procedure DrawGameScene;

В секции реализации добавляем код для этих методов

implementation

{...}

procedure TD3DGameApp.LoadGameTextures;
var
hr: HResult;
begin
backImage := TD3DImage2D.Create(g_d3dApp.m_d3dfmtTexture);
if backImage = nil then begin
CleanUpAndDisplayError(GAME_ERR_NOTEXTURES);
PostMessage( m_hWndMain, WM_CLOSE, 0, 0 );
Exit;
end;

hr := backImage.InitDeviceObjects(m_pd3dDevice,
backTex);
if Failed(hr) then begin
CleanUpAndDisplayError(GAME_ERR_NOTEXTURES);
PostMessage( m_hWndMain, WM_CLOSE, 0, 0 );
Exit;
end;
end;

procedure TD3DGameApp.RestoreGameTextures;
begin
if backImage <> nil then
backImage.RestoreDeviceObjects;

end;

procedure TD3DGameApp.InvalidateGameTextures;
begin
if backImage <> nil then
backImage.InvalidateDeviceObjects;
end;

procedure TD3DGameApp.FreeGameTextures;
begin
SAFE_DELETE(backImage);
end;

procedure TD3DGameApp.DrawGameScene;
begin
if backImage <> nil then
backImage.Draw2(0, 0, 0, 0.83, 1,
DrawD3DImage2D_Filtered, 255);
end;

 

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

FrameMove -

function TD3DGameApp.FrameMove: HRESULT;
begin
case m_dwAppState of
asBeginInit: begin
LoadGameTextures;
RestoreGameTextures;
m_dwAppState := asInit;
end;
asInit: m_dwAppState := asEndInit;
asEndInit: m_dwAppState := asReady;

asReady: {UpdateInput};
asGame: {FrameMoveGameScene};
end;

result := S_OK;
end;

и Render > DrawGameView -

procedure TD3DGameApp.DrawGameView;
const
FillColor = $FF58B327;
begin
if not Assigned(m_pd3dDevice) then Exit;

// Begin the scene
if SUCCEEDED(m_pd3dDevice.BeginScene) then
begin
// Erase the screen
m_pd3dDevice.Clear( 0, nil, D3DCLEAR_TARGET or D3DCLEAR_ZBUFFER,
FillColor, 1.0, 0 );

DrawGameScene;


//CountFPS;
// End the scene
m_pd3dDevice.EndScene;
end;


end;

Не забудьте про правильное освобождение созданных ресурсов! - внутри - InvalidateDisplayObjects и DestroyDisplayObjects

function TD3DGameApp.InvalidateDisplayObjects: HRESULT;
begin
result := S_OK;

m_pGameFont.InvalidateDeviceObjects;

InvalidateGameTextures;
end;

function TD3DGameApp.DestroyDisplayObjects: HResult;
begin
FreeGameTextures;

SAFE_DELETE(m_pGameFont);

SAFE_DELETE(m_Camera);

SAFE_RELEASE(m_pd3dDevice);

result := S_OK;
end;

 

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

Если оно выводится не целиком, значит Вам нужно увеличить размеры окна формы -

В инспекторе объектов для формы MainForm задайте размеры

MainForm.Width = 637

MainForm.Height = 432

Заметьте, что размеры заданные в для окна формы в инспекторе объектов имеют приоритет перед размерами рабочей области окна заданными внутри TD3DGameApp.Create. Это связано с тем, что рабочую область окна D3D в оконном режиме определяет окно, чей обработчик (Handle) мы передаем объекту DirectD3Device. Таким объектом у нас является панель RenderWindowPanel. Если Вы задавали для неё в инспекторе объектов свойство Align = alClient, то это как раз и объясняет такое поведение приложения.

Получается, что размеры окна формы MainForm определяют размеры панели RenderWindowPanel, а она в свою очередь и служит рабочей областью для вывода D3D-окна.

 
Если D3D-приложение переключается в полноэкранный режим, то рабочая область окна D3D разворачивается во весь экран, а ее размеры определяются не заданными размерами окна, а разрешением, которое будет использоваться D3D-приложением для полноэкранного режима, т.е. - 640х480, 800х600, 1024х768 пиксель или другое доступное разрешение.
 
В нашем следующем уроке мы рассмотрим работу D3D-приложения в оконном и полноэкранном режиме. Покажем какой код необходимо написать для этого и какие особенности нужно обязательно учитывать. Несмотря на то, что для игры "Ну, Погоди!" полноэкранный режим не предусмотрен, т.к. она этого не требует из-за своих особенностей - эмуляции экрана электронной игры, тема полноэкранного режима и работы в нём является базовой для всех Delphi DirectX игр, т.к. высокая производительность D3D-приложения достигается именно в этом режиме!
 
 
 
[назад] [страница 2] [далее] [к содержанию]
 
     
     
     
подробнее

Сайты живущие вне поисковых систем. Есть ли такие и как их найти ?

Найти их на самом деле можно. Для этого пишем любой пришедший в голову адрес сайта -

happymusic.ru

Такой сайт не найден.



Если повезет и сайт будет найден - вводим его адрес в поисковую систему.

Если ссылок нет - нам повезло ! Мы нашли сайт который есть, но которого нет в поисковой системе.

cosmos.net

Такого сайта нет в google, а в яндексе есть лишь ссылка, но без описания.

Следующий этап - найти сайт который бы был нам полезен или интересен.

Развивая свою мысль таким образом - мы выработаем способ поиска сайтов, существующих вне поисковых систем.

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

Но вдруг найдётся и что-то уникальное, интересное или неизвестное никому ?

подробнее

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

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

Сказка всегда представляется такой

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

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

[страница 1][страница 2] [страница 3] [страница 4] [страница 5] 

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



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

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

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

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



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


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