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


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

megainformatic - Что нужно знать для создания сайта ? ASC II Коды символов
Что нужно знать для создания сайта ? ASC II Коды символов [к содержанию] .spc { border-collapse: collapse; } .odd { background-color: whiteSmoke; } .spc td, .tbord { border: 1px solid silver; font-family: Tahoma, Courier, monospace; font-size: 11px; color: #646464; } .spc td, .tb
подробнее...

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

megainformatic - Эмулятор ZX-Spectrum, БК-0010.01 и их работа в эмуляторе DosBox 0.74

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

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

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

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

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

megainformatic - первый независимый онлайн-журнал комиксов ККК Костя Коробкин Комикс номер 1 март 2016

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

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

megainformatic - Эмулятор БК-0010.01 версия 2.6 для Windows 9x/Me/2000/XP автор Юрий Калмыков 2002 год

megainformatic - api получения готового решения для решения различных задач возникающих при создании сайта

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

роман Eternity Вечность - автор Синицин Андрей megainformatic

роман Eternity Вечность - автор Синицин Андрей megainformatic - страница 2

роман Eternity Вечность - автор Синицин Андрей megainformatic - страница 3

роман Eternity Вечность - автор Синицин Андрей megainformatic - Windows Sockets 2, ping, Windows SDK 7, чем открыть hxs файл - страница 4

megainformatic - Размещение Вашей рекламы на нашем сайте

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

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

роман Eternity Вечность - автор Синицин Андрей megainformatic - В чём отличие в применении символов & и * в языке c++ ? также продолжаем изучать Windows Sockets 2 и пример simple - страница 5

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

megainformatic - игра Шарики на лифте Серия 1 Разгони Лифт / Balls on Lift Level 1 Run The Lift версия 0.9.2 05.10.2016 / version 0.9.2 05.10.2016

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

роман Eternity - страница 6 + решение по анимации закрывающихся дверей лифта

megainformatic - Сообщить об ошибке

Balls on Lift Table of Records / Шарики на лифте Таблица рекордов

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

Balls on Lift / Шарики на лифте - Как создать игру - серия уроков - Рисуем шарик / How make the game - series of lessons - draw ball

Balls on Lift / Шарики на лифте - Как создать игру - серия уроков - Содержание / How make the game - series of lessons - Index

Balls on Lift / Шарики на лифте - Как создать игру - серия уроков - Разные шарики / How make the game - series of lessons - Different balls

Balls on Lift / Шарики на лифте - Как создать игру - серия уроков - Анимация прыжков шарика / How make the game - series of lessons - Animation ball jumps

Balls on Lift / Шарики на лифте - Как создать игру - серия уроков - Создание фона заднего плана / How make the game - series of lessons - Creating background for back plane

Balls on Lift / Шарики на лифте - Как создать игру - серия уроков - Вставка созданной графики, звуков и музыки в игру - Inserting created graphics, sounds and music in the game.

Balls on Lift / Шарики на лифте + Как создать игру - бесплатная игра + комплект уроков о том, как создавать контент для игры - спрайты, фоны, звуки, музыку, и вставить его в игру - How to create a game - free game + package of lessons on how to create content for the game - sprites, backgrounds, sounds, music, and insert it into the game

Balls on Lift / Шарики на лифте + Как создать игру - бесплатная игра + комплект уроков о том, как создавать контент для игры - спрайты, фоны, звуки, музыку, и вставить его в игру - How to create a game - free game + package of lessons on how to create content for the game - sprites, backgrounds, sounds, music, and insert it into the game

Развитие проекта fle game engine

Бинарная философия / Binary Philosofy

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

Вакансии

Коллекция php скриптов

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

megainformatic - Приключения Кости Коробкина - В гостях у тёти Светы часть 1 - интерактивный комикс

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс

fle game generator - fle генератор игр - fly snow 3d падающий снег - расширяемый генератор визуальных образов, с музыкой mp3, ogg и генерацией игр

fle game generator - fle генератор игр - fly snow 3d падающий снег - расширяемый генератор визуальных образов, с музыкой mp3, ogg и генерацией игр

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

megainformatic Создание и размещение видео баннера mp4

megainformatic Использование баннер-ротатора

megainformatic fle game engine Simple game / Пример простой игры

megainformatic fle game engine Simple game / Пример простой игры - страница 1 - Спрайты

Creating game on fle game engine - Draw Line - This can be helpful/ Создание игры на fle game engine - Рисование линий - Это может пригодиться.

Платная подписка на fle game engine

megainformatic Создание игры на fle game engine - Simple game - страница 2 - Объекты / Пример простой игры

megainformatic Создание игры на fle game engine - Simple game - страница 3 - Объекты / Пример простой игры

Платная подписка на fle game engine

подробнее

НОВОГОДНЕЕ ОБРАЩЕНИЕ СОЗДАТЕЛЯ Мега Информатик К ЖИТЕЛЯМ ПЛАНЕТЫ интернет.

Уважаемые жители сообщества интернет !

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

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

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

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

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

От ВСЕЙ ДУШИ ПОЗДРАВЛЯЮ ВАС С НАСТУПАЮЩИМ НОВЫМ ГОДОМ !

ЖЕЛАЮ ВАМ КРЕПКОГО ЗДОРОВЬЯ, МИРА И ПРОЦВЕТАНИЯ !

СПАСИБО ЗА ВНИМАНИЕ.

С НОВЫМ 2013 годом ! Мира, любви, согласия. С ув., megainformatic

А теперь немного о новинках и более ранних но уже проверенных продуктах сайта Мега Информатик -

[галерея рисованных девушек]

Более подробно о методиках рисования Вы можете узнать из уроков Photoshop -

серия продуктов - Уроки Photoshop

Уроки Photoshop free (Свободно распространяемые)
бесплатно
уроки photoshop
100 руб.
уроки photoshop - чудеса !
100 руб.
уроки photoshop -  рисуем и анимируем
250 руб.


Другие продукты

Новинки !!! - модуль падающий снег

приятная и позитивная mp3 музыка

мои давние музыкальные работы

подробнее

     
     
     
 
Основы 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);

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

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

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


ria pc game

История создания проекта. Начало. Рассказывает автор (т. е. я сам). Шел 2009 год, я уже в своем понимании более-менее что-то научился делать. Были выпушены игры road 2 city, donuts 3d (пример игры основанный на примере из directx sdk 8 и переделанный на delphi), ну погоди ! Был начат новый проект, который я назвал Нечто: Необъяснимое. Постепенно создавая его я понял, что опыта и знаний пока не хватит и выпустил более простой его вариант - бесплатную игру Нечто: Необъяснимое - в плену желаний. Этот проект можно скачать megainformatic.ru/?page=93 megainformatic.ru/?page=146 После этого я начал создавать новый проект, который назвал Веселый Буквоежка. Название было условным, содержание планировалось как квест и аркадные игры. Проект оказался достаточно большим и его развитие происходит даже сейчас, правда в рамках уже совсем другой игры - ria pc game. Так как же возникла идея ria pc game и что послужило началом ? Началом можно считать серию комиксов о Косте Коробкине которую я начал в 2014 году. Было выпущено 5 комиксов. 6ой пока закончен примерно на 10-15%. А в 2016 году я начал делать игру Шарики на Лифте, затем проект превратился в Шарики и Ямки, а немного позже получил название Шар Бумага Карандаш. Соответственно англоязычные названия: Balls on Lift, Balls and Holes, Pencil Paper and the Ball. Проект был посвящен необычным аркадным играм про Шарики. Но я понял что им чего-то нехватает. Нехватает какой-то истории, так я соединил Комиксы о Косте Коробкине, еще пригласил в гости Дэйва из игры Растения против Зомби. И все закрутилось. Однако все-равно не хватало еще 1 элемента, а именно девушки. Я подумал: какую бы историю я хотел поведать миру ? И понял - есть одна такая история ! Так возникла концепция игры ria pc game, главную героиню которой зовут Риа. Риа - это девушка в возрасте примерно 16 лет. Жизненные обстоятельства сложились так, что ей пришлось переехать в чужой город. Здесь она будет продолжать учебу в университете. И здесь у неё есть только один близкий человек, который может её поддержать - это тетя Кейси, дальняя родственница мамы Риа. История создания проекта. Я разработчик игры Синицин Андрей Сергеевич, сообщаю Вам, что создаю игру единолично. Никто кроме меня не работает над игрой. Все что вы увидите и услышите в игре - создано мной. Невероятно, что проект такого масштаба можно поднять в одиночку ! Вы еще сомневаетесь ? Тогда скачайте и убедитесь сами. Я создаю игру с 2009 года. В 2006 я только начинал учиться это делать. Много проектов было сделано за это время. Но они были небольшие и не ставили цель что-то на этом заработать. Как и данный проект. Я не ставлю цели заработать много денег ! Но вы можете помочь мне в этом деле - пожертвовав деньги - совсем немного денег - Вы станете частью этой игры. Есть много способов это сделать - один из них - просто поддержать проект своим, пусть небольшим, но вкладом. Как делаю это я - каждый день, каждый час. Я думаю о проекте. Двигаюсь вперед. Вношу какие-то новые элементы. Продвигаю. Вообщем если Вы узнали о ria pc game. Это не случайно ! Пожалуйста расскажите о игре всем кого знаете, тем кто заинтересуется. Я буду вам очень благодарен ! А теперь начнем. В далеком 2006 году я ничего не знал и не умел. Да у меня даже не было доступа в интернет ! Нет конечно какие-то знания были, все началось даже не в 2006, а в далеком 1992 году - когда я получил свой первый компьютер - Электроника БК-0010.01. Вы можете воочию увидеть какие на нем были игры. Я написал статью на эту тему на своем сайте - http://megainformatic.ru/?page=477 Эмулятор БК-0010.01. Также есть отдельная статья посвященная компьютеру ZX Spectrum - http://megainformatic.ru/?page=468. Все дело в том, что у моих друзей - Сергея и Дмитрия были такие компьютеры. О них и о играх рассказано и показано в статьях. В игры даже можно поиграть. Для этого вам даже не нужен эмулятор - играть можно прямо на сайте - вот пример одной из игр для zx spectrum - http://megainformatic.ru/webinformatic/?page=411 это игра rex. История создания проекта #2 Итак, в далеком 1992 году у меня появился мой первый компьютер Электроника БК-0010.01 И почти сразу же я заинтересовался темой создания игр. А что это были за времена ! Ни о какой специальной литературе не могло быть и речи. Информацию собирал буквально по крупицам. Посчастливилось узнать в одном журнале (по-моему он назывался Информатика и Образование) о некой фирме КИ-ЧПМ которая предлагала заказать различные игры и системные программы для БК. Кстати журнал я получил от учителя по информатике, точнее физике, информатика - это была его доп. учебная нагрузка. Это было уже немного позднее - в 1995 году. Я тогда учился в 9 классе. И кстати ездил на олимпиаду по информатике, хотя информатику у нас должны были начать вести только с 10 класса ! Один раз даже мне разрешили самому провести небольшой урок перед старшеклассниками. А еще на олимпиаде, кстати она проходила в городе Боровск, я купил в магазине книжку Фигурнова IBM PC. Друзья говорили мне: зачем она тебе ? Ты IBM PC никогда не купишь. Но все-таки спустя всего несколько лет - а именно в 1998 году ! Я приобрел свой первый IBM PC - 286. Он уже тогда не был таким дорогим, потому что популярностью пользовали более новые машины - 386, 486 и Pentium. Они конечно были безумно дороги, но 286 - очень дешево, потому что все апгрейдились на новое. Вот так мне посчастливилось после БК сразу перейти на IBM PC. Но это было не так просто как Вы можете подумать. В 1997 году по нелепой случайности моя БКшка сломалась. Так что почти год я сидел вообще без компьютера ! Можете себе представить каково это для человека, который буквально бредил информатикой. Одним словом, пройдя через неимоверные трудности, сомнения и догадки - я все же стал обладателем своего первого IBM PC совместимого ПК. Итак, это было в далеком 1998 году, т. е. 20 лет назад. Вот когда можно начинать отсчет истории создания игры ria pc game. Прошло 20 лет ... История создания игры # 3 Прошло 20 лет ... Что изменилось за прошедшее время ? Все или ничего. С одной стороны - я научился очень многому. С другой я по прежнему остался ищущим чего-то нового, в чем-то несовершенным, и конечно самим собой. Говорят что человек не меняется. Он остается тем, кем родился изначально. Меняется только его отношение к этому миру. Наверное это так. Я думаю что жизненный опыт только прибавляет сомнений. Почему дети так наивны ? И близки к этому миру ? Потому что они не знают о нем совершенно ничего. А я знаю. Но это по большому счету не преимущество, а скорее ... именно то, что я и говорил - больше сомнений ! Так что - все что происходит с нами в этой жизни - не случайно. Но что будет завтра - мы не знаем. Мы можем изменить что-то. Но какой получится результат - снова не знаем. Это и плохо и хорошо. Нам не дано понять почему все так происходит. Нам кажется что мы многое знаем о этом мире, а на самом-то деле многое знают о нем только те, кто только родился. По мере взросления человек все больше теряет эту способность. Так будем как дети ! Чисты и наивны. А жизненный опыт - пожалуйста, пусть он не мешает нам делать правильный выбор на этом пути. Мне кажется все то, что я делаю, я уже когда-то и где-то делал. Может это память о прошлых жизнях (реинкарнация), а может просто дежавю. В любом случае - я не уверен, правильно ли поступаю. Но на самом деле даже слабость может оказаться силой ! Вот так. Трудно предугадать что и как и чем обернется. И уж тем более ничего, абсолютно ничего нельзя знать заранее. История создания игры #4 А что же было в далеком 1998 году ? Был IBM PC 286. 1 Mb оперативной памяти. 256 Kb видеокарта. 40 Mb жесткий диск. Флоппи дисковод для 1,44 Mb дискет. Мышка. Сначала старый ч/б монитор от БКшки, а затем приобрел новый цветной. Но это тоже произошло не так гладко. Все дело в том, что кабель подключения к монитору был соединен с ним ненадежно. В итоге в один прекрасный день видеокарта сгорела, поэтому, и наверное это к счастью, бабушка дала мне деньги на новый, цветной. Я тогда еще не знал, что видеокарта сгорела. Её тоже пришлось заменить. Одним словом я погрузился в мир настоящих компьютеров. БКшка конечно тоже была настоящей, но это был первый шаг. ZX-Spectrumы у моих друзей - тоже как ориентир того, что крутые и интересные игры можно делать и на не очень мощном железе. Было бы желание и как говорится светлая голова и не кривые руки. :) Так вот, я постепенно начал осваивать IBM PC. Искал программы. Литературу. Доступа в интернет тогда еще не было. Да и модема собственно тоже. Однако чуть позднее - где-то в 1999 году, я приобрел звуковую карту. Вообще первое о чем я тогда бредил - создание компьютерной музыки. На БКшке как понимаете, это было нереально. А вот на IBM. Короче говоря все получилось, благодаря еще одному моему другу, я нашел программку SADT2 и при помощи неё стал делать музыку. Да забыл сказать, в 1994 году я переехал в другой город. Совсем как Риа. Героиня моей игры. Правда в отличие от Риа, я переехал не один, а со всей своей семьей. И переехал не в чужой город, а в свой родной, откуда происходят мои корни. Родился я совсем в другом городе. Как нибудь расскажу об этом, это отдельная история. А пока несколько слов о моем увлечении музыкой. В игре ria pc game Вы найдете музыку которую я делаю сам. Я пишу музыку с 1999 года. В игре конечно присутствуют самые последние треки, которые я делал совсем недавно или буквально в прошлом году. Надеюсь они вам понравятся. История создания игры #5 Итак, все начиналось с музыки. Но конечно же попытки делать музыку я предпринимал еще на БКшке. Там музыка получалась очень примитивной. Но какие-то звуки извлечь можно было. Я даже написал несколько программ в машинных кодах. Одна из них виртуальный эквалайзер, а другая синтезатор для генерации звуков ударных и басов. С переходом на IBM PC все изменилось в лучшую сторону. Но конечно не сразу. Сначала был информационный голод. Программ достать было неоткуда. Литературу тоже с трудом. Доступа в интернет не было. Но постепенно все менялось в лучшую сторону. Я находил нужные программы, литературу, апгрейдил свой ПК. Так были 486SX, потом Pentium. На дворе шел 2000 год. В 2002 году мне попалась в руки книжка посвященная программированию в c++ builder 3. Я стал её изучать, а также основы программирования на delphi. Может показаться странным как я изучал delphi читая книгу по c++. По сути изучал сразу 2 этих языка, т. е. объектный паскаль и c. Помогало (немного) наличие в delphi - help, программа переводчик, а также примеры из книжки. Вот такие были нелегкие, но интересные времена ! История создания игры #6 Теперь отмотаем временную ленту далеко вперед. Примерно на 2016 год. Я хочу рассказать о том, как зарождался этот проект. Сначала были Шарики на Лифте - Balls on Lift - http://megainformatic.ru/?page=489 Идей конечно было много, но реализовать все и сразу трудно. Для начала была создана вот такая простенькая игра. Далее я решил добавить в неё новый уровень, но так, чтобы он не был похож на предыдущий. Дело в том, что в Шариках на лифте Вы должны разгонять лифт. Для этого вам нужно добавлять на лифт шарики или убирать их. Скорость зависит от того, какие у вас на лифте шарики. Есть те которые ускорят лифт, а есть - нет. Вот и нужно угадать. А на втором уровне возник целый ряд идей. Одна из них - о похождениях шарика, который попадает в ямки. Сначала игра была реализована как simple game. Кстати, Вы даже можете начать учиться создавать свой собственный проект игры - на примере simple game. Об этом рассказано в серии статей посвященных созданию простого примера игры. 1 статья повествует о том, что такое спрайты. http://megainformatic.ru/?page=517 История развития проекта #7 Снова 1999 год. Я активно изучаю основы программирования по тем источникам, которые нахожу. Ищу программы, игры. И самое главное достижение - нашел программу SADT2 в которой можно было создавать полифоническую музыку на 9 каналов. + был даже 2 операторных FM синтезатор для синтеза звуков инструментов. По сравнению с БКшкой это был огромный прорыв. Итак, я пишу свои первые музыкальные композиции. Я решил не быть голословным и показать одно из видео, которое мы записали с моей дочерью Дашей. Там рассказано о программах для создания музыки. В том числе вы воочию увидите и услышите о SADT2, и как она звучит. А все музыкальные треки которые я в ней написал можно скачать единым архивом на сайте. Запустить программу SADT2 из под Windows можно через эмулятор DOSBox. Так что если захочется можно и самому делать музыку и сохранять. Эмулятор DOSBox работает нативно. Послушать примеры музыкальных треков можно прямо из браузера - http://megainformatic.ru/?page=329 https://www.youtube.com/watch?v=KUwr5LZkw80 История развития проекта #8 Шло время. Я находил свое успокоение в музыке. И так приблизился 2002 год. В этого году я начал изучение системы delphi. Дело двигалось мал-помалу. Параллельно я не прекращал заниматься музыкальным творчеством и другими аспектами создания игр. В частности учился компьютерной графике, дизайну. В 2006 году все накопленные знания вылились в проект road2city. Это была первая игра. Она включает 10 уровней. Скачать можно не только саму игру, но и её исходный код. http://megainformatic.ru/?page=54 История развития проекта #9 Закончив работу в 2006 году над игрой road2city http://megainformatic.ru/?page=54 Я пришел к выводу: библиотека, на основе которой я делал игру имеет ряд существенных ограничений и главное из них: ты не можешь делать все что захочешь, пока не расширишь библиотеку. Опыта по расширению той самой библиотеки - delphiX / UnDelphiX к сожалению не было. И я пошел иным путем - сразу стал осваивать нативное программирование под DirectX 8. Тоже на delphi. delphiX был рассчитан на использование directx 7. Работа с 3d там была невнятной. В DX8 все было как-то более понятно и четко, но на первых порах конечно намного сложнее. Учитывая то, что начал делать игру road2city в 2002 году, а завершил в 2006 - представляете какой это кропотливый труд. Но конечно разработка шла не фуллтайм. Иногда я мог уделать делам всего 1 час в день, а иногда и совсем нет. К тому же сюда входило все - изучение программирования на delphi и специальной литературы которую удавалось найти (её к сожалению было очень и очень мало). Придумывание концепций и сюжета. Рисование графики и спрайтов (что я тоже поначалу не умел, а значит тоже приходилось учиться). Ну и конечно озвучка - создание звуков и музыки. В этом у меня уже был больший опыт т. к. для IBM PC я начал делать музыку в 1998 году - сначала на бэйсике, а в 1999 с появлением у меня звуковой карты - уже в специальных программах - SADT2, Impulse Tracker, и др. о которых я рассказывал в предыдущем посте, в видеообзоре посвященной этой теме. Таким образом 2006 - 2007 год у меня ушел на изучение delphi 7 + directx 8. Очень помогли заголовочные файлы созданные Алексеем Барковым - это был проект clootie.ru Проект уже не действует с 2009 года, но сайт как видите остался. Так что заголовочные файлы directx 8 api переведенные Алексеем в формат для языка delphi, то бишь переписанные на нем, позволили создавать приложения изначально ориентированные на c++ в системе delphi. Первый проект который я смог создать в августе 2006 года - пример игры Donuts 3D. Саму её и полный исходный код можно найти тут - http://megainformatic.ru/?page=51 Это был по-сути пример игры взятый из directx 8.1 sdk, но полностью переписанный на delphi, что далось мне не так легко. Учитывая что в сети тогда кроме вышеупомянутого сайта, информации о создании игры на этой платформе - directx 8 delphi 7 не было вообще. Поэтому все делал своими силами и путем многих и долгих проб, ошибок и экспериментов. Наконец когда все получилось я понял: первый кирпичик заложен и можно делать уже что-то свое. Так я создал первую свою игру полностью на своем движке с использованием directx 8 api и системы delphi 7. Эмулятор игры Электроника ИМ-02 Ну, Погоди ! http://megainformatic.ru/?page=49 На работу ушло около 2 месяцев. Но игра получилась даже лучше, чем я ожидал. Помимо оригинальной игры в ней было много нового: 5 уровней сложности помимо режимов игра А и игра Б. Можно было делать паузу. Можно было даже сохранить игровой процесс, а в дальнейшем выключить игру, включить через какое-то время снова, загрузить и продолжить игру с того места, где остановились. Ну и конечно главный сюрприз - это мультфильм - он будет показан если трижды набрать по 999 очков. Поскольку индикатор очков в оригинальной игре Электроника ИМ-02 Ну, Погоди ! отображает счет только от 0 до 999, то старший 4 разряд не отображается. Так что к концу 2006 года по сути родился новый движок - fle game engine. Но я конечно еще не помышлял тогда о собственном движке, да и названия такого еще не было. Но я не остановился на достигнутом. Я понял что делать игру на delphi каждый раз переводя весь код c++ на паскаль не совсем удобно и главное требует в 2-3 раза больше усилий и времени. Это нерационально. Поэтому я наконец перешел на c++. Но это было конечно не так быстро и не сразу. Только лишь в 2009 году. Сначала я сделал еще 2 проекта на delphi directx 8. Это были игры Нечто: Необъяснимое и Нечто: Необъяснимое - в плену желаний. проект Нечто: Необъяснимое закончен не был. http://megainformatic.ru/?page=233 А вот Нечто: Необъяснимое - в плену желаний, включающую 12 уровней я сделал и она распространялась по сети бесплатно. Если интересно можете скачать самую свежую версию этой игры - http://megainformatic.ru/?page=93 В 2009 году я все-таки перешел на c++. К тому времени уже появился directX 9. И первым шагом была переделка игры Эмулятор Электроника ИМ-02 Ну, Погоди ! на c++. Снова все получилось. На разработку ушло уже меньше времени. Т. к. ничего придумывать уже было не нужно - а просто переводить созданный на delphi код обратно на c++. Внешне c++ версия игры Эмулятор Электроника ИМ-02 Ну, Погоди ! практически ничем не отличалась. Но код уже был написан на c++ для directx 9 api. Далее родился еще один долгий и серьезный проект который условно был назван Веселый Буквоежка. http://megainformatic.ru/?page=12 И он является основной движка fle game engine. Аббревиатура fle - это от первых букв англоязычного названия этой игры Funny Letter Eater Т. е. fle или Веселый Поедатель Букв (Веселый Буквоежка). Параллельно я потом еще выпустил несколько приложений, который позволяют всем желающим начать создавать свои визуальные шоу (приложения для показа презентаций и комиксов), а также были созданы все необходимые инструменты чтобы создавать свои игры. Это тоже может сделать любой. О движке fle game engine рассказано тут - http://megainformatic.ru/?page=503 ... 17.04.2018 Лучшая игра созданная в 2005 году - fahrenheit или indigo prophesy. Её успех так и не превзойден. На примере этой игры в частности, да и на примерах других игр в целом видно, что создание игры - любой игры - это стремление к недостижимому. Даже если вдруг игра и станет популярной и любимой многими - это ненадолго. Это не нефтяное месторождение и не золотая жила, которая может приносить доход постоянно. Финансовый успех продлится недолго, большая его часть будет нематериальной. Уважение, почет, возможность что-то делать еще в ожидании такого же успеха. Но успех повторить невозможно. Даже разработчики игры fahrenheit не смогли. Так что помимо недостижимости успеха в создании игры есть еще одно - это его неповторимость. Нельзя повторить успех даже своей собственной успешной игры. Значит не стоит идти вперед ? Ведь все равно чаще всего Вы не добьетесь ничего. Большая часть игр или не будет никогда доделана до конца, либо будет никому неизвестной. Просто потому что во все игры переиграть невозможно. Да и не нужно. Ведь во многом они похожи. А игрок всегда интересуется чем-то уникальным, необычным, интересным. Неповторимым. Тем, чего еще нигде и никогда не было. Тем что он еще не слышал и не видел. Посмотрим на это глазами игрока. Разработка игры: это интересное занятие и результат неважен. Важен процесс. Вовлеченность в него. Постоянное вдохновление тем, что же будет дальше ? Получится ли у вас ? Сможете ли дойти до конца ? И что будет в итоге ? Чем сложнее и больше проект - тем интереснее. Создание игры - это большая игра. И опыт который вы получите при этом уникален. И главное неповторим. О нем можно рассказать, им можно поделиться. Но опять же, как и в случае с успешной игрой - им сложно воспользоваться. Потому что рецепта успеха не существует. Поэтому ответ - если тебе интересно создание игр, если оно вдохновляет тебя - не нужно думать только о мнимом успехе. Ты живешь здесь и сейчас ! Успех ничто. Возможно он придет. Возможно и нет. А жить нужно здесь и сейчас. И на самом деле успех (будущий) или неуспех (тоже в будущем) не влияет никак на твое СЕЙЧАС ! Ты живешь тем что есть сейчас. Развиваешь это. Тебе интересно. Увлекательно. Так что не надо думать о том, что будет потом и главное ставить это во главу угла. Финансовый успех важен - но возможно его не будет. Намного важнее не потерять интереса к разработке своей игры. Не забросить её. Такое случалось и не раз. А если чувствуешь что теряешь - попытаться найти новую струю, новый поток, новые мысли и идеи. Все это коренится в тебе самом ! Не живи лишь ожиданием успеха, который тебе не нужен и который никогда не придет. Важнее то кто ты здесь и сейчас и то, что ты в данный момент из себя представляешь и что делаешь. Важнее интерес, который у тебя есть сейчас и желание двигаться вперед. Важнее движение, а не результат, потому что результат придется ждать и ждать. Возможно он мало кого удовлетворит и даже самого тебя ! Возможно никто не похвалит и не удостоит внимания твое творение. И даже никто о нем никогда не узнает. Все это возможно и более чем вероятно, потому что вокруг тысячи, миллионы игр ! Но посмотри на себя. Ты неповторим. Ты уникален. Делай то что тебе интересно, а не то что нужно, важно или наверное принесет прибыль. Чувствуй свой поток. Найди свою колею ! Двигайся собственным путем ! За свою жизнь я видел много разных игр. Больших и маленьких. Чудных и глупых. Скучных и интересных. Но главная их черта - все они были разными ! И каждая удивляла чем-то своим. Уникальным. Пусть даже и не очень интересным. Поэтому усвой одну простую истину: ты делаешь игру - свою игру - в первую очередь для себя и ради себя самого ! Не полагайся на то, что она будет успешной и кому-то интересной. Суть игры не в размахе. Секрет успеха не в раскрученности. Игры это искусство, которое пробуждает в нас что-то особенное. Или чаще всего не пробуждает. А просто проходит мимо. И ответ тут один - значит мы этого чего-то особенного просто не уловили. Просто не заметили. Ведь не может быть такого, что каждый автор делал свою игру абы как и только ради карьеры, денег и успеха ! Нет. Так не бывает. И карьера, деньги и успех - никогда не могут быть и стать первичными. Особенно для разработчика игр. Потому что успех в игровой индустрии не равен финансовому успеху. Успех игры не равен доходу который получит тот кто её делал. Большая часть успеха лишь кажется. Да и неважно игроку успешна игра сама по себе или нет. Намного важнее - интересна ли вам лично она ? И если да - вы играете в неё или создаете несмотря ни на что. Несмотря на неуспешность, несмотря на то, что пока игрой, вашей игрой мало кто интересуется кроме вас самих. Но успех обязательно придет ! Нужно просто верить в это, но главное не делать его своим идолом. Вашим идолом должна быть только сама игра и интерес продолжать её. 5.05.2018 публикуем обзор пользователя: gult - Итак, перед вами игра ria pc game. ria pc game Я играю в игры очень редко, но если уж понравится игра, то обязательно поиграю в неё не один раз. На этот раз я наткнулся на эту игру. Вообще визуальные новеллы - довольно скучное занятие. Но не данная игра ! Что интересное бросилось в глаза ? Игра в игре. В телефоне главной героини - Риа - есть игра про шарик. Шарик нужно ловить в ямку и от этого настроение героини может повыситься. ria pc game Намек на современную увлеченность телефонами ? Когда ты едешь в маршрутке или на метро - многие уткнулись в свои планшеты/смартфоны и что-то там читают/делают/слушают/играют/общаются. Одним словом необычно ! Второй момент - в этой телефонной игре, тоже разворачивается какой-то свой сюжет. Так что, если продолжить играть, можно узнать и больше. Но не буду описывать подробно, т. к. наверняка интереснее будет увидеть все своими глазами. Чужое мнение - мое - только лишь чужое мнение. Итак, я поднял настроение героини дважды и двинулся из аэропорта. В игре нужно будет выполнять и какие-то небольшие действия наподобие звонка по телефону. Поскольку это все же визуальная новелла - будет и много текстов, но не слишком. Сюжет развивается довольно динамично и не даст вам заскучать. ria pc game Дело в том, что наша главная героиня - девушка по имени Риа. И она приехала, точнее прилетела самолетом, в другой город к своей тете. Случается так, что тетя не сразу смогла её встретить, и с этого момента с Рией начинаются приключения. Она оказывается в привокзальном кафе и знакомится со странным молодым человеком. Повествование переключится на него и некоторое время Вы будете играть за этого персонажа. Вы узнаете что с ним происходит что-то странное, и даже увидите некие откровенные эротичные фантазии. ria pc game Но потом все стихнет и мы снова окажемся на грешной земле. Разговор с Риа не совсем клеится. Молодому человеку девушка понравилась, но заинтересовать её своей персоной он так и не смог. Увы. И тут пришла тетя ! Далее Риа с тетей едут домой, а молодой человек пытается их догнать. Но снова увы. Риа с тетей едут домой и беседуют в машине. Также будет отдельная мини игра, в которой нужно будет немножко поуправлять машиной. ria pc game Управление несложное - только влево/вправо. Ехать и ждать пока мы не доберемся до нужного места. Наконец тетя и Риа приезжают домой и вот тут продолжаются странные вещи ! ria pc game Риа немного больше узнает о своей тете и о её жизни. Также вас ждет небольшой эротический сюрприз. Еще в телефоне Риа появится новое странное приложение - блокнот ! В него можно вводить слова и эти слова будут материализовывать для вас самое необычное - какие-то действия ! Да это просто, можно сказать волшебная палочка ! Риа еще не до конца осознала, что у неё в руках. Но мы то с вами знаем !!! Насколько я понял проект еще не завершен и разработка игры продолжается. Но мне игра приглянулась. Хочется пожелать удачи её автору, тем более он создает игру в одиночку. ria pc game Это как вы сами понимаете - непростое занятие. Кстати движок у игры тоже свой собственный, авторский. Насколько я понял, этот проект и его автор - движется не в мэйнстриме. Он идет каким-то своим, необычным, я бы сказал, путем. Ну что ж, с вами был я, gult и надеюсь эта игра вам понравится. В свою очередь обязательно буду ждать продолжения развития проекта и развития истории. от автора игры (megainformatic): СПАСИБО ВАМ уважаемый, gult, за столь необычный и интересный обзор моей игры !
подробнее

Парсинг сайтов - введение



[уроки php]  [регулярные выражения] 



Что такое парсинг сайтов и для чего он нужен ?

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

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

Типичный пример парсера - это парсер какого-либо форума или интернет-магазина.

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



Как выполнить парсинг сайта используя php ?

Кликнув по ссылке -

Пример 1

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

Вот какой php код при этом используется -

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Simple site parser by megainformatic</title>
</head>
<body>

<?php


/* на данной странице используются и некоторые html-теги чтобы не было нарушений кодировки */

/* для начала нужно определить сайт, который мы будем парсить - сайт донор */

$site_donor_url = 'http://doska.obninsk.ru/'; /* данный сайт взят без какой-либо цели практически наугад просто для примера */

/* далее выполняем загрузку страницы с этого сайта в переменную скрипта */

/* сделать это можно самыми различными способами, самый простой - через открытие файла */

$site_page_strings_array = file($site_donor_url);

/* получив данные с сайта пока просто выведем их */

echo '<pre>';
var_dump($site_page_strings_array);
echo '</pre>';

?>
</body>
</html>



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

И сразу же обратим внимание на 2 нюанса, которые очень часто сбивают с толку, особенно если Вы впервые осваиваете php и технологию парсинга сайтов.



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

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

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

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

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

2) Сайт-донор не открывается через скрипт парсера.

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

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

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

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

max_execution_time = 60

В самом скрипте для этого можно использовать функцию - set_time_limit()

Но следует учесть что скрипт не должен работать в БЕЗОПАСНОМ РЕЖИМЕ safe_mode. Есть и другой момент - в php начиная с версии 5.4.0 возможность использования БЕЗОПАСНОГО РЕЖИМА признана устаревшей.

Так что как видите всё более чем запутанно и должно решаться в каждом конкретном случае.

Чтобы выполнение скрипта не зависело от времени обращения и ожиданию отклика от сайта донора можно использовать сокеты. Для этого в php есть функция fsockopen. И я уже рассматривал работу с ней в статье - Работа с сокетами fsockopen из php

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

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

Для работы php через proxy нужно:

Для Unix систем необходимо собрать PHP с опцией --with-curl[=DIR], где DIR - имя директории, содержащей поддиректории lib и include. Директория "include" должна содержать поддиректорию "curl" с файлами easy.h и curl.h. Директория "lib" должна содержать файл libcurl.a.

Для Windows систем необходимо установить PHP с поддержкой данного модуля, а потом скопировать файлы libeay32.dll и ssleay32.dll из директории DLL Win32 дистрибутива PHP в директорию SYSTEM (Нпример C:\WINNT\SYSTEM32 или C:\WINDOWS\SYSTEM).

Что такое libcurl Libcurl – это библиотека функций, которая позволяет взаимодействовать движок php с удалёнными серверами, по различным протоколам. Пример получения контента с удалённой страницы через PROXY:

<?php
//создаём функцию
function get_proxy($url, $proxy) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');
curl_setopt($ch, CURLOPT_PROXY, "$proxy");
$ss=curl_exec($ch);
curl_close($ch);
return $ss;
}

//вызываем функцию
$proxy = '112.25.12.37:80';
$content = get_proxy('http://300kbit.ru/',$proxy);
echo $content;
?>

Идём дальше.

Обработка данных полученных с сайта-донора т. е. непосредственно парсинг сайта на php.

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

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

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

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

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

Попробуем создать что-то подобное.

Создайте изображение 256х256 пиксель, с прозрачным фоном.

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

Выделите внутреннее пространство волшебной палочкой.

Создайте новый слой.

Определите два цвета: желтый – для цвета переднего плана и красный – для фона.

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

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

Теперь используя инструменты Осветление и Затемнение и нужные размер, форму и параметры кисти придайте пламени более реалистичный вид. Рисуйте как бы клубы линий-переходов.

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

Используя инструмент ластик с нужными параметрами (Flow и Opacity) сделайте, чтобы пламя было по краям и немного изнутри слегка прозрачным или полупрозрачным.

Отмасштабируйте изображение уменьшив в 4 раза, т.е. задав новые размеры – 64х64.

Произведите цветокоррекцию, используя Изображение > Регулировки > Тон/Насыщенность, сделав пламя более насыщенным и ярким.

Используя те же пункты, но подпункт Уровни измените баланс освещенности – сместив точку белого в изображении на значение примерно 110-130.

Сохраните полученный результат в личную папку.

Поэкспериментируйте с изменением вида имеющегося пламени:

Изменение Яркости/Контраста

Изменение цветового баланса

Изменение уровней освещенности (Уровни)

Изменение цвета – вид облака – Тон/Насыщенность

Рисование воды

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

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

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

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

Замечание: попробуйте менять не только размеры, но и форму кистей в инструментах Dodge, Burn, Eraser, Clone, Smudge. Попробуйте также использовать инструменты Sharpen, Blur, Sponge.

Рисование воды по стадиям:

Стадия 1 – выделенные при помощи лассо области заливались различными цветами при помощи градиентной заливки (радиальной и линейной).

Стадия 2 – после применения инструментов Smudge (Палец) и Sponge (Губка). Губка работала в режиме насыщения (Saturate).

Стадия 3 – после применения инструментов Dodge (Осветление) и Burn (Затемнение). Затемнение производилось большими размашистыми штрихами, группа воздействия на цвет – Shadows (Тени).

Стадия 4 – после применения Blur и Sharpen (Размытия и Резкости).

 

Стадия 5 – после применения фильтра: Filter > Distort > Ocean Ripple

(Океанская рябь).

Альтернатива стадии 5 – Стадия 5АFilter > Distort > Wave.

Попробуйте также применить эти 2 фильтра последовательно – один за другим. Сравните результаты.

 

Заключительная стадия – масштабирование изображения (уменьшение в 4 раза).

Замечание: если после масштабирования по периметру появляется рамка из более светлоокрашенных пикселей, то избавиться от нее можно следующим образом: отмените масштабирование, проведите новое масштабирование, но с приплюсовкой по 2 пикселя к высоте и ширине (т.е., например, не 64х64, а 66х66). После проведения операции при помощи рамки выделите область 64х64, внутри получившейся пиксельной рамки, так, чтобы последняя в нее не попадала и скопируйте в новое изображение.

Зацикливание текстуры

Если Вы сейчас зададите Вашу воду в качестве шаблона для заливки (Edit > Define pattern), а потом проведете с помощью него пробную заливку тестового изображения (например, 1024х768), то ясно заметите наличие у текстуры резких переходов – швов.

Как создать бесшовную текстуру?

Для зацикливания Вашей текстуры водной поверхности используйте Filter > Other > Offset; укажите нужные размеры (половина ширины и высоты) и пункт Wrap around – заворачивание (т.е. зацикливание, что нам и требуется). Результат приведен на рисунке.

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

Метод 1 – использование «засадки» Клоном – При помощи Clone Stamp копируются фрагменты и аккуратно располагаются на перекрестии. Ваша задача – не только скрыть «крест», но и позаботиться об однородности тайла, иначе на новом месте может получиться новый крест из кусочков образцов штампа.

На рисунках приводится:

Слева - неудачный вариант закрытия;

Ниже – более удачный вариант.

 

 

Метод 2 – использование выделения областей при помощи волшебной палочки и их зацикливание на отдельном слое.

Для этого – создайте новый слой и скопируйте на него какую-либо цветовую область. Затем зациклите ее.

Здесь задача заключается в том, чтобы не «переборщить» с выделением области. Если установить параметр Tolerance (обратная чувствительность) так, что выделяется почти всё, то никакого эффекта не будет – всё тот же крест, только уже на новом слое.

Комбинация методов – после проведений тестовых заливок созданными текстурами Ваш результат может оказаться все еще неудовлетворительным. Тогда попробуйте комбинировать 2 этих метода: сначала примените Метод 2, а затем Метод 1 – для нового (верхнего) слоя. В Методе 1 вместо Клон-Штампа попробуйте использовать ластик.

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

Другие методы создания водных текстур

Запустите Corel Draw, создайте изображение 256х256, в нем прямоугольник 256х256. Уберите у него обводку. Залейте прямоугольник какой-либо текстурой – Ocean water, Swimming pool или другой. Экспортируйте созданное изображение в BMP и откройте из Photoshop. Поэкспериментируйте с видоизменением параметров текстуры сначала в Draw (вкладка Object Properties > Заливка > Кнопка Edit). Затем в Photoshop – применяя Изображение > Регулировки > Уровни, или Тон/Насыщенность или другие.

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

Создание анимированной текстуры

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

Чтобы реализовать это в текстуре достаточно создать анимированную текстуру – т.е. содержащую несколько статичных кадров, меняющихся во времени. Затем подобную текстуру можно сохранить в формате анимированный GIF или BMP с вертикальным или горизонтальным расположением кадров. Тогда данная текстура превратится в анимированную.

Все что нам требуется – это создать несколько изображений одной и той же текстуры с немного измененным видом на отдельных слоях. Сохранить полученный файл в PSD. Открыть его из Image Ready, произвести раскадровку и сохранить в GIF. Результат можно просмотреть из стандартной программы просмотра изображений Windows или прямо в Image Ready нажав кнопку Play.

В пакете Corel Graphics Suite 11 для создания анимаций используется программа Corel Rave.

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

Создайте таким образом 8 слоев. Дайте слоям имена 1,2, …, 8.

Используя Filter > Liquify произведите постепенное видоизменение вида слоев.

Скройте все слои кроме 1-го. На панели инструментов нажмите кнопку Jump To Image Ready.

На панели Animation щелкните кнопку Duplicate Current frame столько раз, сколько требуется создать кадров. Но перед этим скройте все слои кроме первого (если Вы еще не делали этого). Установите величину временной задержки кадра (например 0,2 с). В каждом кадре установите отображение только соответствующего слоя.

Сохраните файл под именем swin_anim.PSD,

А затем используя пункт Save Optimized As в формате GIF.

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

Замечание: порядок отображения слоев в ваших кадрах должен циклично меняться. Например у Вас 4 слоя, значит будет 6 кадров:

1-2-3-4-3-2. Так как анимация текстур производится циклично, то будет казаться, что опять происходит возврат к началу (1 кадр со слоем 1).

Файлы в формате GIF хорошо использовать в WEB-публикациях – т.к. Internet Explorer поддерживает анимированные GIF-файлы – убедитесь сами – запустите IE и откройте ваш GIF.

Но иногда, Вам может потребоваться размещение анимации в BMP-файле.

Это делается просто – все кадры размещаются в одном изображении в вертикальном или горизонтальном порядке. При этом ширина или высота исходного изображения увеличивается на ширину(высоту) одного кадра * на число кадров. (см. рисунки).

 

Как выполнить такую раскадровку средствами Photoshop?

Предположим Вы хотите расположить кадры вертикально. Размеры кадра 256х256. Число кадров – 6.

Создайте новое изображение размерами 1536х256.

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

Склейте все слои и сохраните результат в формате BMP.

Создание анимированной текстуры неба

Создайте изображение 256х256.

Залейте фон небесно-голубым цветом.

Дублируйте слой.

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

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

Создайте анимированное движение облаков – для этого на каждом новом слое постепенно сдвигайте изображение вправо и вниз.

Чтобы уходящие за пределы изображения облака появлялись с противоположной стороны:

выделите опустевшее пространство (на сдвигаемом слое).

 

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

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

Аналогично выполняется восстановление того, что сдвигается сверху - вниз.

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

Созданное многослойное изображение анимируйте в Image Ready, сохраните в PSD и GIF, просмотрите результат анимирования.

 

 

 

 
     
  [к содержанию] [назад] [далее]  
     
     
megainformatic live chat
Начать беседу
X
 

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



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


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