Взрыв из прошлого


Всё, что попало в Интернет - остаётся там навечно.

Многие думают, что удалив что-то в Интернете (удалив картинку, текст или забросив какой-то сайт), то это всё пропадёт. Так вот хочу огорчить (или наоборот — обрадовать), всё как раз наоборот — всё, что попадает в Интернет остаётся там навсегда.

Есть отличный ресурс archive.org 

Зайдя на него и введя, как показано ниже, имя сайта, можно посмотреть, как выглядел сайт gamescript.hotbox.ru , к примеру, на 27 октября 2001 года (версия от 2005 года практически ничем не отличается).

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

ВЕСЬ существующий Интернет попросту бэкапился, день за днем, ну или с меньшей частотой.

К чему это  я?

Дело в том, что этот сайт сделал я в 2001 году. И как я был наивен почти четверть века назад… 

Куча проектов, визуальный редактор, транслятор кода, демки, и море идей, которые, эх, так и не были реализованы. Самые интересные разделы — «Битвы роботов» и «Джек-Из-Тени».

«Битвы Роботов»

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

Под спойлером — что за игра и основные принципы.

Тип: Стратегия реального времени

Человечества не стало. Никто точно не уверен, что случилось - людей просто нет и все. Остались мы, Роботы.

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

Наши знания - это то, что действительно важно. Мы добываем их в каждой схватке, исследуем и работаем, работаем, работаем... Убраться с этой проклятой планеты - мечта всей моей жизни, а ведь это почти двести пятьдесят лет. Да, я вечен, могу реконструироваться практически бесконечно. Моя "ахиллесова пята" (странные ассоциации у меня иногда возникают...) - Биомозг. Он не вечен! Это действительно страшит. Сколько мне еще осталось?


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

Что дает применение параллельных вычислений?
Вопрос сложный, так как явного преимущества Вы не увидите. К тому же еще и скорость вычислений упадет (представьте себе, что быстрее - выполнить сто процедур по 1000 шагов, либо одновременно выполнять по шагу из каждой процедуры?) Но, во первых, с ростом производительности компьютеров проблема скорости не становится такой уж важной, и, во вторых, скорость вычислений вообще не скажется на производительности игры (вывод графики, звука), так как вывод графики дискретен и постоянен (кол-во кадров в секунду) и не будет зависеть от процесса вычислений по перемещению объектов! (Почему не будет? Представьте себе, что вычисления выполняются в реальном времени и никогда не прекращаются, но время от времени, определенное количество раз в секунду, они прерываются для того, чтобы вывести объекты на экран. Какая тут может быть задержка, если графика выводится примерно с одной скоростью?).
Поэтому на эту проблему вообще БОЛЬШЕ НЕ БУДЕМ обращать внимания.

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

Типы процессов делятся по запуску:
1. Обычный процесс - выполняет определенное количество тактов (1 и более), после чего выполняется следующий процесс и т.д. и т.д...
Примеры процессов:
а) Отвечающий за перемещение к нужной точке (запускается Навигатором) - нахождение наилучшего пути к точке либо к объекту.
б) Радар - передает данные об окружающих объекта противниках.

2. Дискретный процесс - запускается через определенные промежутки времени. Обычно такие процессы эксклюзивны и полностью выполняют свой код от начала и до конца. Такие процессы жестко привязаны ко времени (количество раз запусков в секунду), и должны быть достаточно малы, что бы успеть выполниться за промежуток между запусками.
Пример:
Процесс (Ходовая), запускаемый через определенные промежутки времени.

Процессы делятся по принадлежности
1. Объектные процессы - процессы, относящиеся к объекту а не к какому либо устройству этого объекта
Создание - запускается при создании объекта
Ходовая - перемещение объекта
Уничтожение - запуск при уничтожении объекта
2. Процессы устройств - процессы, принадлежащие конкретным устройствам

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

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

Параметр запуска
Устройство запускается с некоторой периодичностью (несколько раз в секунду, через определенное кол-во тактов, либо запускается один раз и больше не прекращает работы - AI-процесс). Если в момент запуска устройство еще не закончило работу, устройство продолжает работу.

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

Пример объекта: Танк
Состоит из следующих устройств:

Шасси - управляет перемещением на основании данных о направлении, скорости и возможных препятствий.
Изменение направление
Изменение скорости
Выходные данные
Объект переместился
Объект не смог переместиться из за препятствий на местности
Устройство (шасси) неработоспособно (поломка)
Не хватает энергии для запуска устройства

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

Радар - передает данные об окружающих объекта противниках.
Входные данные
Координаты объекта
Выходные данные - (передаются на ЦУ) : Координаты противников, их уникальные номера, состояние (в процентном отношении - 0-100%), тип противника, время обновления. Данные передаются на ЦУ, где они обновляют информацию о противнике (обновляется база положения объектов). На основе этой базы строится карта вывода объектов на экран, но выводятся на экран только те объекты, которые либо видимы в данный момент объектами, либо обновление о них было совсем недавно.
Кроме того, выходные данные для объекта:
Количество противников в зоне видимости
Условная опасность

Навигатор - нахождение оптимальной траектории к точке либо объекту.
Входные данные
Выбор точки, своего объекта или чужого объекта
Координата (перемещение, защита территории) либо
Идентификатор своего объекта (защита объекта) или
Идентификатор противника (атака противника).
Использовать ли данные Монитора для нахождения оптимальной траектории (о Мониторе - чуть ниже)
Выходные данные
Устройство не работает (поломка)
Устройство готово (ожидает команд)
Устройство находится в режиме выполнения команды.
Устройство не может выполнить расчет до нужной точки:
нет доступа к этой точке (особенности местности)
объект потерян (был уничтожен свой или чужой объект)
Script RPS Development RPG Разработка игр Direct3D OpenGL Использование Создание игр Game RTS Программа Игра DirectX Игры GameScript Create Program Разработка DDraw GS
Программа Script Create Игра RPG Program Development Разработка Создание игр GameScript RTS Разработка игр Использование RPS Game Игры OpenGL DirectX DDraw GS Direct3D
Монитор - устройство, реализованное на аппаратном уровне (на языке разработки) для повышения скорости обработки поступающей информации. На основании баз данных о противниках (база данных объектов, база данных строений) монитор автоматически строит:карту опасности, в которой каждая область имеет коэффициент опасности (в зависимости от положения в ней объектов и строений с огневой мощью)карту приоритетных атак. На ней регистрируется последнее обновление о положении ЦУ противника, основных зданий (заводов) и энергетических установок.
В зависимости от даты последнего обновления, область той или иной карты получает дополнительный вес.
Очень важно получение информации с как можно быстрым обновлением. Это достигается посылкой в области разведчиков.
Навигатор объектов может учитывать данные с карты опасности для нахождения оптимальной траектории.

Процессор - устройство, отвечающее за интеллектуальное поведение объектов, общий обзор местности и на основе этого - выбор тактики и стратегии объекта, запускает т.н. AI-процесс.
Единственный процесс, допускающий редактирование НЕразработчиком, т.е. сторонним оператором. Изменение свойства объектов напрямую (координаты, направления, и т.д.) запрещено. Можно объекту только давать указание поменять направление или скорость, а уж сможет ли объект это сделать - зависит от состояния устройства объекта.
Например, команда:
Событие=ДатьКоманду(Шасси,Скорость,10) пробует поменять текущую скорость до 10.
Команда Событие= ДатьКоманду (ОсновноеОрудие,Выстрел,Да) дает команду выстрелить из основного орудия.

ЦУ (Центр Управления) - обычный объект с более сложной программой. Потеря ЦУ означает поражение стороны.
Задача - анализ информации и выбор нужного решения (стратегии и тактики поведения всех объектов).

Проверка по времени - Запуск Основного процесса Ходовой
Основной процесс Ходовой относится к объекту, а не к какому либо отдельному устройству.
Запускается определенное количество раз в секунду.
В этом процессе происходит перемещение объектов в пространстве.
Процесс для увеличения скорости обработки можно и НУЖНО реализовать аппаратно.

Если ДА (время наступило), запускается цикл последовательной проверки только существующих объектов:
Объект1.Ходовая
Объект2. Ходовая
Объект3. Ходовая
ОбъектN. Ходовая
Иначе Если НЕТ
Для каждого объекта выполняется несколько (определенных заранее, от 1 и более) тактов выполняемой программы для каждого из устройства.
Если Статус Объекта= Создается Выполняется процесс Создание
Иначе Если Статус Объекта= Уничтожается Выполняется процесс Уничтожение
Иначе Если Статус Объекта=Существует (Объект существует), выполняется:
Далее проверяются и выполняются все запущенные процессы ( свойство Выполнение=1 процесса) каждого из устройства объекта
КонецЕсли
конецЕсли

Свойства устройства - свойства, принадлежащие только данному устройству.
Входы устройства
У любого устройства есть ограниченное количество входов (допустим, 128), т.н. поток.
Главный вход - указание выполнить команду
Значения:
0 - нет команды на выполнение
1,2,3,4,5….- номер команды на выполнение
Остальные входы (в данном случае - 127) - для указания параметров команды.
Тут нужно сразу понять, что для каждого процесса может быть свой, независимый от других процессов, поток данных.

Входы устройства недоступны для изменения как обычные свойства. Для записи входных данных:
=ДатьКоманду(Устройство,Команда,Параметр1,Параметр2…ПараметрN)

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

Если нужно дать новую команду, а прежняя еще не выполнена, старую команду надо сбросить.
Команда ЗавершитьРаботу(Устройство,Команда) завершает выполнение процесса (если он существовал), выставляет адрес процесса на начальный, свойство Активность процесса=0. Такую команду можно подать из-вне (из процессов другого устройства) так и из текущего процесса. НЕ РЕКОМЕНДУЕТСЯ вручную, не командой ЗавершитьРаботу (т.е. изменением свойств) прекращать работу процесса!

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

Команда УзнатьСвойство(Устройство,Свойство) возвращает значение свойства нужного устройства
Команда УзнатьСвойствоОбъекта(Свойство) возвращает значение свойства объекта
Команда УзнатьСвойствоУстройства(Свойство) возвращает значение свойства текущего устройства

Если предполагается, что устройство будет выполнять несколько операций одновременно, его нужно мысленно разбить на несколько функциональных частей, каждая часть которого будет управляться отдельным процессом.
Пример - устройство Шасси.
Что предполагается делать этим устройством? Предполагается, что будут изменение скорости и направления.
Изменение скорости -> Изменение скорости до нужного значения
У двигателя есть максимальная скорость (с учетом местности), которую невозможно превысить. Кроме того, нельзя увеличить за такт больше, чем на некоторое количество, т.е. она увеличивается постепенно.
Изменение направления ->Выбор нужного направления
Объект разворачивается так же не мгновенно, с какой-то определенной скоростью.
Итого, у устройства Шасси может быть одновременно максимально запущено два процесса:
Изменение скорости и изменение направления

Пример - устройство ОсновноеОрудие
Функциональные действия:
Наведение орудия на цель -> Анализ цели (тип) и наведение на цель
Может быть несколько типов наведения (на ближайшего, на слабейшего, на опаснейшего, защита территории, защита объекта, атака противника и т.д.) Сам процесс наведения не мгновенен.
Перезарядка и выстрел -> перезарядка орудия, если не устраивает тип снаряда или не заряжено и выстрел по цели.
Можно зарядить снаряд, оптимально поражающий цель. Сам процесс зарядки не мгновенен.
Итого, у устройства ОсновноеОрудие может быть одновременно максимально запущено два процесса:
Наведение на цель и Перезарядка/Выстрел
RTS RPG GS Игра Игры DDraw Разработка игр Development Game Создание игр Program GameScript Script Разработка Использование Программа OpenGL RPS Create Direct3D DirectX
RPG Создание игр Create Script Разработка игр Direct3D OpenGL RTS Game GameScript Игра Разработка DirectX RPS Program Игры Использование Программа Development GS DDraw
Самая главная особенность проекта "Битвы Роботов" - возможность создания и редактирования сторонним человеком алгоритма поведения для любого объекта непосредственно в самой игре - ведь, согласитесь, это может стать прорывом в играх! Мне самому надоел т.н. "искусственный интеллект", которым блещет чуть ли не каждая игра. Почувствуй себя создателем! Нужно дать простор для творчества, в пределах отведенных границ, конечно (редактировать можно будет только алгоритм поведения объекта - AI-процесс). Кроме того, эта возможность - хороший маркетинговый ход, который подхлестнет интерес к игре не только отдельных людей, но и целые организации (создание улучшенных алгоритмов процессов, причем не только AI-процессов). Идея игры постоянно витает в Интернете, но, к сожалению, все пытаются реализовать ее старыми методами и понятиями, излишне нагружая ее какими-то отдельными свойствами для каждого объекта (что практически лишает возможности дальнейших изменений и дополнений), хотя все можно сделать гораздо проще, или, наоборот, все излишне упрощено.
ВНИМАНИЕ!!!!
Если Вас заинтересовала данная технология, можете обратиться по адресу igankrСОБАКАfront.ru за подробностями (способы организации переменных, процессов, использование объектного кода, создание программ с использованием GS, оптимизация программ на GS и интерпретатора команд, написание сценария для игр, и т.д. и т.п.)
Для реализации проекта ну очень требуются художники, 3D-моделлеры, а также все, кто имеет более-менее хороший опыт работы с DirectX.
Ведь только в группе заинтересованных единомышленников, когда каждый занимается именно тем, в чем разбирается, можно реализовать практически любой проект (допустим, я не очень хорошо разбираюсь в выводе графики на экран, т.е. какие функции и процедуры нужно применять, но, тем не менее, я, например, понимаю, что для вывода 2D объектов нужны спрайты определенного размера, координаты вывода на экран и т.д., для 3D объектов - 3D-модель, координаты в пространстве и т.д. и т.п.). В проекте я мог бы заняться разработкой движка (в части скриптового языка управления объектами) и его практической реализацией (в той же части, т.е. не затрагивая темы, какие вообще объекты 2D или 3D будут выводиться или того же интерфейса!). Причем раз опробовав данную технологию, можно дальше ее и не менять (по языку и объектной реализации), применяя для создания любой игры!OpenGL Разработка Игра Разработка игр Development GameScript Script Создание игр Использование RPG DirectX DDraw Direct3D Program Game RPS Программа RTS Игры GS Create
DDraw Разработка игр GS Программа Игра DirectX RPS Direct3D Создание игр GameScript RTS Script Использование Create RPG Игры Game OpenGL Development Program Разработка
Что дает применение GS-технологии?

1. Гибкость в написании программы. Игру может написать как разработчик, так и любой пользователь, на уровне гэймера, тем более что написание хорошей программы для управления объектом - залог победы в игре. Интеллектуальный объект будет иметь неоспоримое преймущество над просто железным ящиком с орудием. И тем более, что в программе предусматривается интерактивное, в процессе игры, изменение кода. Игрок непосредственно, сразу, видит, что дало то или иное изменение. Простой объектный язык с минимумом логических конструкций будет подталкивать к изменению программы - на, попробуй. В тоже время, несложно будет (лично для меня уже нет ничего невозможного) написать упрощенный интерпретатор бейсика или С (круто?), переводящий программу в объектный код. Еще раз повторю, что написать такой интерпретатор будет совсем несложно.Написание дополнительных (не входящих в состав игры) программ для объектов - маркетинговый ход, позволяющий повысить интерес к игре.

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

Основные преимущества GS при создании любой программы:
1.Разработчик сам пишет интерпретатор, тем самым он может оптимизировать всю программу в целом.
2.Разработчик сам определяет, какие ему нужны методы и события, и может сам, в зависимости от сценария, создавать в интерпретаторе новые .
3.Скрипт, точнее числовой объектный код, выносится за пределы основной программы в виде массива кодов, вследствие чего он не принимает участия в компиляции программы.
4.Числовой объектный код создается транслятором - отдельной программой, переводящей скрипт в оъектный код, которая учитывает все ссылки, адреса, методы и позволяет выявить большинство грубых ошибок.
5.Параллельные процессы - для одного объекта может быть одновременно запущено несколько методов, использующие, тем не менее, одни и те же свойства, переменные, методы (СПМ).
6.GS пишется на естественном языке. Не требуется знание языка интерпретатора.
7.GS - расширяемый язык. Дело разработчика, какие функции и какие операторы объектного кода должны присутствовать. GS - абстрактный язык. Можно полностью отвлечься от конкретной реализации функции или объектного кода. Например, объект должен найти минимальное расстояние до другого объекта, расположенного на некоторой пересеченной местности. Можно, конечно, реализовать это при помощи GS, вычисляя расстояние между объектами, проверяя путь на наличие препятствий и т.д. Но есть другой вариант: Вы объявляете в GS функцию РасстояниеДоОбъекта:
Функция РасстояниеДоОбъекта, КодФункции, МинимальноеКоличествоПараметров, МаксимальноеКоличествоОператорови используете ее в сценарии в виде, например:
Расстояние=РасстояниеДоОбъекта(НужныйОбъект).
Транслятор переведет текст сценария в объектный код (первым параметром задав код функции, далее кол-во переменных, переменная назначения, и список параметров), а уже дело интерпретатора, каким образом обработать его. Все необходимые для исполнения функции параметры будут находиться, перед исполнениием функции, в особом массиве - массиве переменных программы (ПП).
Я уверен, что средствами языка разработки будет гораздо проще реализовать эту функцию, чем в самом GS, и, тем более, скорость вычисления будет много выше. Вообще, можно дать полезный совет: все, что трудоемко, длительно обрабатывается, повторяется очень часто - объявлять как функцию (если есть параметры), либо как объектный код (без параметров), т.е. перекладывать обработку на интерпретатор.
8.Так как интерпретатор написан в том же модуле, что и основная программа, не будет никаких проблем при вызове процедуры для исполнения объектного кода объекта, поэтому процедуру интерпретатора можно применять вместе с другими модулями, библиотеками и т.д.
9.Даже люди, не являющиеся программистами, могут с легкостью написать сценарий, с помощью которого можно полностью управлять программой,но для этого программисты должны написать каркас игры, в котором реализуется все это. И как раз эти возможности можно предусмотреть только для конкретной игры.
10.Объектная модель.Достаточно полностью описать базовый класс, и на основе него, изменяя некоторые свойства и методы, можно определять новые классы, которые наследуют свойства родителя по умолчанию. Другими словами, изменяя какое-то свойство родительского класса, все дочерние классы изменят это свойство, если для них свойство установлено "по умолчанию" (не определено какое-либо свое).
11.Переносимость.Нет никакой разницы, на каком языке или на каком виде компьютера написан интерпретатор, главное, чтобы он поддерживал предложенную объектную модель и правильно исполнял объектный код.
12. Не приходится бесконечно компилировать основную программу.
13. Разработчик (после того, как интерпретатор создан) концентрируется только на сценарии игры, т.е. занимается игрой в чистом виде, без необходимости влезать в сам интерпретатор. Тем не менее, даже в процессе написания GS может понадобиться добавить операторы для оптимизации кода.
14. Появляется возможность кооперативной разработки GS - для этого достаточно объединить несколько сценариев, разработанных разными людьми, в один.
15. Оптимизируется отладка GS, вследствие чего очень сложно заставить компьютер повиснуть.
16. Легкость изменения сценария, создания новых уровней, добавления спецэффектов.
Script DDraw Программа Разработка Разработка игр Development OpenGL Game GameScript RPG GS Игра Direct3D Create RPS DirectX Создание игр Использование RTS Игры Program
Script Development DirectX RTS Игра OpenGL Create Использование GS Программа Program Создание игр Game Разработка игр RPS DDraw Разработка RPG GameScript Direct3D Игры
Как я уже говорил ООП (объектно-ориентированное программирование) многие понимают по разному. Что предлагаю я?

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

Что управляет запуском этой программы? Что вообще управляет объектом?

Киньте объект в любую точку и пускай он сам решает, БЕЗ ПОМОЩИ КАКОЙ ЛИБО ЦЕНТРАЛЬНОЙ ПРОГРАММЫ, как ему жить.
Но, позвольте, мне могут возразить, разве не таким способом реализованы, допустим, все стратегические игры (там тоже действуют объекты, они думают, выполняют действия и т.д.)?
НЕТ. В принципе, выполняется одна централизованная программа, последовательно обходящая все объекты и выполняющая те или иные методы в зависимости от свойств объектов.
Подумать только, мы ушли (вместе с созданием ООП) от последовательного программирования, и все же это программирование - все равно последовательное. Конечно, это скрыто, завуалировано от нас , и все таки это так оно и есть.
Конечно, для человека удобнее программировать последовательно.
И все же...
Я иду по улице, стараясь обходить лужи, ямы и незакрытые люки (1 процесс), выбирая ближайший путь к месту работы (2), одновременно разговариваю с приятелем (причем веду вполне осмысленный разговор) - 3 процесс, и, наконец, пью пиво -4 процесс (интересно заметить что процесс номер 3 очень сильно влияет на три предыдущих процесса... Все зависит от марки пива, то есть его крепости, и количества выпитого).
Вот так популярно можно объяснить, что такое процесс, что такое свойства процесса (это я насчет крепости и литража) и что такое параллельные процессы вообще.

Берем пример из любой стратегической игры (RTS).
Есть объект, который должен прийти из точки 1 в точку 2 по ближайшему маршруту.
Одновременно он стреляет по приближающимся противникам.
Как Вы думаете, это действительно происходит одновременно?
На самом деле объект выполняет ОДНУ программу, но, в зависимости от свойств, может выполнять те или иные действия: переместиться на плоскости, выстрелить, зарядить орудие, и т.д и все равно это будет последовательное выполнение команд.
Что предлагаю я?
Объект запускает следующие параллельные процессы:
1. Определение наилучшей траектории от точки 1 до точки 2.
2. Процесс перемещения от точки 1 до точки 2. (Почему этого нельзя сделать в первом процессе? Да потому что наилучшая траектория может перестать быть таковой в какой то момент времени!)
3. Процесс определения в видимости объекта вражеских объектов.
4. Процесс выбора цели, наилучшего оружия в зависимости от данных процесса 3, наведение и выстрел.
Итого, мы имеем 4 параллельных (причем отнюдь НЕ НЕзависимых) процесса, которые, могут выполняться даже в один момент времени.
Как Вам такая организация объекта? Не правда-ли, все очень просто и, к тому же, все под контролем?
Что дальше? Каким образом реализовать данную технологию?
Есть два варианта:
1. Каждый процесс - заранее откомпилированный exe-модуль, со своими параметрами.
Вопрос, только, выдержит ли система такое, если объектов будет много (умножаем на max количество возможных процессов для одного объекта) + как отслеживать связи процессов между собой, удаление объектов, уничтожение ненужных процессов и т.д. и т.п. Вобщем, это не выход, следовательно:
2. Каждый процесс - программа на каком-либо языке, позволяющем прервать выполнение программы без какого либо ущерба для нее, а потом продолжить дальше плюс набор свойств для этого процесса.
И такой язык существует!
GS, GameScript, GenerationScript - в общем, называйте как хотите, просто мне нравится сочетание этих двух букв (GS).
Если честно, различные части программы могут быть написаны на разных языках, т.е. не только на GS. Главное, чтобы они были переведены соответствующим транслятором в части (файлы) ОДНОГО формата - объектный код (кстати, неплохо бы сделать трансляторы с языков C++, Visual Basic и Delphi. Если кого-то это заинтересовало, обращайтесь...).
Далее этот код должен быть прочитан специализированной программой-интерпретатором.
Теперь, (держитесь за стулья) представьте, что данная программа, обходя все запущенные процессы, выполняет по ОДНОМУ объектному коду каждого процесса!

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

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

Основы:
При создании объекта создается т.н. AI-процесс, который, собственно, и управляет действиями объекта. Он отвечает также за связь с Центром Управления, так как сигналы будут идти через него (ЦУ), независимо от того, управляются ли объекты человеком (игроком) или машиной. AI-процесс должен существовать все время, пока существует объект, так как в противном случае объект будет просто стоять на месте, не реагируя на сигналы из вне. Правда, тут есть исключение - при варианте, когда входные данные обрабатываются СПЕЦИАЛЬНЫМ процессом, который через некоторые интервалы времени проверяет входные сигналы. В этом случае, при подаче команды, AI-процесс снова можно будет запустить.

Когда игрок приказывает объекту двигаться туда-то, на самом деле он только дает команду об этом. Объект обрабатывает ее (AI-процессом, или другим способом), и выполняет, запуская необходимые аппараты, и, через них, устройства. Кстати, ОЧЕНЬ рекомендуется запускать устройства через команды аппарату, т.е. не напрямую.

Нужно теперь объяснить, что такое аппарат и устройство.
В примере с пивом (выше) удобно разбить человека на несколько функциональных частей (хотя я не разбираюсь в анатомии...)
I. Мозг.
II. Ходовая часть (т.е. ноги и руки).
Итого, два аппарата.
I.Мозг состоит из следующих устройств:
1.Устройство AI-процесса - разговор с приятелем.
2.Устройство навигации - путь на работу
II.Ходовая часть
3.Правая рука - пью пиво, стараясь не разливать его на одежду
Левая рука - не занята
4.Ноги (Правая+Левая) - я иду ими
Сразу хочу заметить, в человеке все не так. Но именно такое разбитие позволяет в значительной мере упростить управление объектом (т.е. не только человеком).
Можно заметить, что тут чего-то не хватает.
Тут многого не хватает, например устройства обзора (попросту, глаз).
Вопрос в том, нужно ли выделять глаза в отдельный аппарат или устройство. Обзор вполне можно совместить с устройством навигации, так как именно на основании обзора местности можно будет найти кратчайший путь к точке назначения.

Выводы
Разрабатывая объект, нужно учитывать следующие рекомендации при создании аппаратов и устройств:
1.В аппарате одновременно могут работать несколько РАЗЛИЧНЫХ устройств, т.е. например, не может быть двух устройств навигации, или например, я не могу пить с одной руки одновременно две бутылки пива (можно это сделать двумя разными руками).
2.В аппарате могут работать несколько устройств, но в один момент времени можно запустить только одно устройство. Пример:
Я дал команду двигаться к нужной точке и выпить пива с бутылки. Допустим, команда двигаться была дана чуть раньше (ну НЕ МОГУТ они даться одновременно, физически не могут!).
Аппарат (ходовая часть) запустил устройство ноги, и, пока он запускал это устройство, т.е. обрабатывал команду запуска перемещения, команда ВЫПИТЬ ПИВА временно блокировалась.
Как только команда перемещения обработается (именно команда, а не выполнение ее, этим будет заниматься устройство НОГИ), аппарат обработает команду ВЫПИТЬ ПИВА.
3.Удобно группировать устройства в одном аппарате, если устройства обращаются к одним свойствам.

Пора отойти от общих примеров, описанных ранее к чему-нибудь конкретному: к созданию стратегической игры, а именно к RTS "Битвы роботов". Почему выбрана этот проект? Главное это то, что для объектов придется писать программы поведения, а роботы для этого подходят идеально.

Еще. Хотелось бы на время вернуться к теме написания программ на GS.
При создании игры для реализации проекта создается движок, включающий в себя интерфейс программы, подпрограмму вывода графики на экран и подпрограмму управления объектами.
Интерфейс игр различен, это бессопрно, так как и модули вывода объектов на экран (ну, например, это может быть 2D или 3D графика). Остается разобраться с третьей частью движка - управление объектами. Как известно, кратчайшее расстояние между двумя точками - это прямая.
Мне кажется, что нужно создать такую универсальную программу, которая с незначительными переделками подошла бы к созданию любой игры.
Подумать только, унификация, которая не шла бы во вред самой игре. Еще раз повторюсь, я не подталкиваю к программированию на GS, можно создать удобные трансляторы с любого языка, главное - это общий объектный код, который можно будет обработать интерпретатором движка.
Создание такого интерпретатора - совсем несложная задача (пример открытого кода интерпретатора есть на сайте, так же, как и сам интерпретатор). Плюсы такого способа - Вы программируете на том языке, который Вам нравится, УНИВЕРСАЛЬНЫЙ (для этого языка) транслятор переводит программу в объектный код и Вы используете его в своей игре.

Вернемся к "Битве роботов".

Управление игрой ведется через Центр Управления (ЦУ), одним из объектов, который либо выполняет СПЕЦИАЛЬНУЮ AI-программу, разработанную для ЦУ (если противник-ЭВМ), либо выполняет приказания игрока-человека (хотя игрок может дать управление и ЭВМ, в этом случае действительно получаем схватку между роботами).
ЦУ может обратиться к любому своему объекту и дать указание сделать то или что-то.
То, что была отдана команда, не означает немедленного ее выполнения - все зависит от AI-объекта. Если Вы хотите простые автоматы (причем высокоскоростные), это Ваше дело, но можно наделить объект частицей искуственного разума, и объект обработав Вашу команду, примет наилучшее решение. Может быть, в ущерб времени, но все же выигрыш будет колоссальный. Ну, например, выбранные объекты САМИ могут сгруппироваться для лучшей атаки, или вызвать поддержку других объектов (если у них есть такие полномочия), не выделенных Вами. Или, если для атаки не хватает сил, объект может дать запрос на создание нужного типа объекта на заводе.
Проиграв несколько в скорости, Вы выиграете в тактике.
Как я уже проговорился, можно дать объекту те или иные полномочия. С большей должностью объект может принимать более самостоятельные действия. Главное - не запутаться в служебной лестнице.

Слотная организация объекта.
Любой объект может состоять максимум из 16 аппаратов, причем каждый из аппаратов может состоять максимум из 16 устройств.
Многие слоты уже заняты по умолчанию.Это:
Центральный Процессор (ЦП)
Отвечает за:
AI-процесс, т.е. искуственный разум
Устройство навигации

Ходовая часть (Ходовая)
Отвечает за:
Изменение направления
Изменение скорости

Аппарат управления оружием (УпОр)
Отвечает за:
Наведение на цель
Выбор лучшего оружия
Выстрел
Игры Direct3D RPG Script Program Программа RPS Разработка DDraw Разработка игр GameScript Создание игр Использование OpenGL Game GS Development RTS Create Игра DirectX

«Джек-Из-Тени»

Меня в свое время зацепила книга Роджера Желязны «Джек из Тени» (другой перевод «Валет Теней»). Как же книга идеально подходила под одиночную игру в реальном времени, где смерть Главного Героя — всего лишь неудачное завершение предыдущей попытки.

До Скайрима 2011 года оставалось 10 лет...

Под спойлером — о проекте игры.

При попытке воровства графской реликвии, схвачен с поличным известный вор, по кличке Джек-из-тени. На следующий день его ожидает справедливое наказание – смертная казнь. Для отпущения грехов к Джеку приходит священник, отец Георгий, но вместо положенного, он объясняет Джеку устройство Мира.
Когда-то мир был огробен: громадные материки, миллиарды людей. Но вдруг что-то произошло, ураганы, пожары, наводнения, болезни, войны, новые существа и борьба с ними. Целые континенты уходили под воду или рождались новые. Неизвестные доселе Силы начали борьбу за планету. Хаос правил несколько столетий. И вот, когда остался лишь один материк, боги прислушались к мольбам, и остановили схватку между Силами. Был создан Щит, огромная машина в центре Земли, которая держит под контролем все проявления Сил из-вне. Но, одновременно, для контроля за всеми живыми существами, была заведена Книга Судеб, что бы никто не смог разрушить Щит в дальнейшем, и в будущем что бы Хаос никогда бы не повторился.
Это было спасением, но теперь никто из живущих не был властен над собой.
Оказывается, Джек не виноват в том, что делал, какие поступки совершал, так как это была его Судьба. Священник предлагает Джеку обмануть Судьбу и при помощи специального разработанного напитка (отец Георгий еще и алхимик!) возродиться после смерти. Но в этом случае Джек не только становится Вернувшимся (так называют тех людей, которые после смерти возрождаются в сточных канавах Глайва), но так как его возрождение не прописано в Книге Судеб, Джек статовится мессией, и своими действиями сможет и обязан уничтожить Книгу!
На этом этапе Джек может отказаться от напитка и благополучно погибнуть на плахе на следующий день (чем не поворот сценария?).
После приема напитка, священник объясняет, что после возрождения Джек обязан как можно скорее найти ближайший монастырь Ордена Судьбы, в котором, кстати, и состоит отец Георгий, а уже далее – либо найти самого отца Георгия, либо получить дальнейшие указания в монастыре.
Отец Георгий не обманул.

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

1. "Уйти незамеченным"
Цель: Выбраться из сточных канав незамеченным. Если это удалось - переходим к пункту 2.
В противном случае:
а) либо смерть и снова в канавы.
б) либо выполнение миссий для Хозяина и последующее дезертирство (а может Хозяин отпустит. Как знать...)

Группа миссий «Крещение кровью».
«Казнь».
На помосте выстроены несколько связанных человек. Цель миссии: последовательно казнить всех заложников за определенное время.
«Заложники».
Один из завербованных солдат дезертировал. Цель миссии: прийдя в деревню, захватить всех родственников дезертира и привести их в замок для расправы.
«Наказание»
Жители деревни оказали вооруженное сопротивление. Цель мисии: уничтожить всех жителей деревни.

Группа миссий «На службе».
«Беглец»
Из-под стражи сбежал заключенный. Цель: найти беглеца.
«Разбойники»
На территории Хозяина появились разбойники. Цель: Ворвавшись в заранее указанный дом в деревне, захватить главаря (желательно живым), остальных уничтожить.
«Нечисть»
В деревне появилась нечисть. Цель: последовательно обойти все дома и уничтожить гадов.
«Дары»
В деревне собрали для Хозяина дань. Цель: довезти собранное в Замок.

Группа миссий «Стычки».
«Возврат»
Соседний правитель ввел своих воинов в деревню Хозяина. Цель: выбить врагов из деревни.
«Засада»
На предполагаемом месте перемещения противника организуется засада. Цель: выбрать оптимальное размещение воинов и момент для атаки, чтобы уничтожить превосходящие силы противника.
«Староста»
Организуется атака на вражескую деревню. Цель: уничтожить дом старосты и всех, кто там живет.
«Обоз»
Организуется атака на вражеский обоз. Цель: уничтожить обоз и сопровождающих.
«Нападение Орков»
На деревню напали Орки. Цель – уничтожить напавших.
«Рейд»
Провести карательный рейд по деревням Орков. Цель – уничтожать всех встретившихся Орков.

«Дезертир»
Мисии будут следовать до бесконечности. Нужно выбрать оптимальный момент для побега (где-то после пяти-шести мисиий контроль над Джеком уменьшается) и поытаться сбежать. В случае неудачи – немедленная смерть на месте.

2. "Поиск Отца Георгия"
Цель:Найти священника-раскольника, магистра ордена Судьбы отца Георгия.
Священник постоянно перемещается из города в город, делая непродолжительные остановки (от двух недель до месяца) в монастырях Городов.
Игроку для перемещений из Города в Город нужны деньги.
Деньги можно либо заработать, либо заняться грабежом или воровством.
Миссии:
«Караван»
Организуется караван из Города N в Город M. Цель: обеспечить охрану каравана для доставки грузов, т.е. наняться в охрану и защищать груз в составе отряда от грабителей.
«Почта»
Цель: доставить корреспонденцию в деревню за определенное время.
«Дозор»
Цель: в составе отряда полиции Игрок несет дозор в Городе, отлавливая воров, бандитов и разбойников, причем как днем так и ночью.
«Вор»
Цель: зайти в дом жителя (выбив дверь, если она, конечно, поддастся) и обыскать его.
«Грабитель»
Цель: напасть на жителя и отобрать деньги. Житель не должен выжить.

В миссиях «Вор» и «Грабитель» нужно быть особенно внимательным, что бы не привлекать внимание и не оставлять следов. Иначе на место преступления может прийти ближайший полицейский отряд. А в случае поимки – либо тюрьма, либо смерть.

3. "Путь воина"
Цель:По святому наставлению (протекции) священника, Джек должен поступить на службу одной из воюющей стороны для того, что бы переломить ход войны и своими действиями затронуть судьбы как можно больше жителей материка, и, тем самым, уничтожить Книгу Судеб (она просто не справится с глобальными, не поддающимися логическому объяснению, изменениями).
Предстоит несколько миссий, среди которых:
а) активные миссии - штурмы и оборона укреплений, крепостей в составе отряда, сопровождение обозов
б) "стелс"-миссии - кражи секретных документов, убийства военначальников, доставка почты
Начав простым солдатом, в процессе выполнения миссий Игрок может и обязан постепенно дослужиться до определенного звания и, в конце концов, управлять небольшим отрядом.
Герцог, барон, милорд (или кто то иной), в общем, государь дарует Джеку за его заслуги деньги, Замок и прилегающие земли с деревнями и поселками.
Примеры миссий:
«Открытое сражение» - две армии на открытой местности воюют друг сдругом.
«Захват деревни», «Захват замка», «Захват города» - захват населенных пунктов и креплений.
«Оборона деревни», «Оборона замка», «Оборона города» - Оборона населенных пунктов и укреплений.

4. "Свой дом"
После этого, Джек уходит на побывку, и должен как можно скорее дойти до своего приобретения, СВОЕГО ЗАМКА.
По указанию Джека в Замке строится пантеон его имени. После постройки, в случае гибели Джека, тот будет возрождаться непосредственно в пантеоне (если, конечно, Замок еще будет ему принадлежать).
Только имея Замок, можно набрать СВОЮ армию. Кроме того, Игрок может набрать некоторое количество воинов совершенно без затрат из ближайших монастырей Ордена Судьбы (показав амулет Отца Георгия).
Следует несколько миссий: отражение атак врагов из вне, подавление бунтов (если экомическое управление неудачно, а оно БУДЕТ сначала неудачным - Игрок неопытен).
Кроме того, Игрок может заложить несколько новых поселков, должен организовать экономику, строя ремесленные мастерские в общем - заложить фундамент для своего процветания.
Можно переложить управление экономикой на Управляющего, а самому сосредоточиться только на выполнении поручений (миссий), которые будет давать отец Георгий.
Последняя миссия, которую должен выполнить Джек на этом этапе – уничтожить Щит.
Мотивация для этого: Что бы не делал Джек, какие бы глобальные поступки не совершал, Книга Судеб продолжила свое существование и судьбы людей были всего лишь переписаны заново. Остается последняя возможность уничтожить Книгу – уничтожить Щит, а вместе с ним, являясь его (Щита) порождением, будет уничтожена и Книга Судеб.
Щит находится глубоко под землей. Есть несколько входов в подземелье, причем некоторые из них – тупиковые. Путь к Щиту охраняется избранными Вернувшимися (командиры на каждом уровне) и Гномами, пещерными жителями. Дорога изрезана ловушками и западнями, нужно быть очень внимательным, реагируя на малейшие звуки и движения. В помощь Джеку Отец Георгий определяет практически неограниченный отряд монахов Ордена.
Опускаясь все ниже и ниже к центру Земли, Джек постепенно уничтожает части машины и, наконец, на последнем уровне, выключает головную часть.

5. "Новый мир"
Под напором событий, происходящих вне Книги Судеб, исчезает Щит и Книга Судеб (только после успешного выполнения ряда миссий отца Георгия). Орки, вечные противники Людей, до этого смиренно стоявшие на границе, устремляются Запада, сея смерть, хаос и разрушения. Бывшие враги становятся союзниками и вместе с ними Джек в составе отрядов отражает атаки орков. Игрок постепенно становится все выше в должности, и наконец, становится Верховным Главнокомандующим.
Но даже после успешного выполнения большинства миссий, общая картина ужасна - мир погибает.
Конечно, теперь человек является хозяином самому себе, вот только что из этого, ведь смерть неминуема?

6. "Прозрение"
После допроса пленных орков выясняется, что они не просто так пришли воевать с людьми. На Западе появились Темные силы, и они гонят орков прочь с их земель. Щита, который сдерживал проявления Сил и который уничтожен Джеком, не существует. Что же делать?
У главного героя возникают сомнения, является ли отец Георгий тем человеком, за которого он себя выдает?
И, словно в подтверждение этому, монастыри Ордена то тут, то там становятся рассадниками тварей Темных сил.
Война между Орками и Людьми прекращается, объявляется перемирие, и объединенная армия под предводительством Игрока вступает в бой с воинами Темных Сил.
Следует несколько миссий. Но даже после их успешного выполнения, становится ясно, что решение должно быть не здесь.
Отряд под управлением Игрока, спускается вниз под землю, для восстановления Щита.
Уничтожая орды нечисти (отряд Джека постепенно восстанавливается новыми людьми и орками с поверхности) Джек постепенно спускается все ниже и ниже, чиня и запуская машины, и наконец включает главную Машину.
Мир спасен!
Игра Create Разработка игр GameScript DDraw OpenGL Direct3D RPS DirectX RPG RTS Разработка Game GS Program Программа Создание игр Использование Script Игры Development
RTS RPS Game Использование Script GS OpenGL Игры GameScript Direct3D Create DirectX Разработка RPG Создание игр Development Программа Игра Разработка игр Program DDraw
Общие положения

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

Игрок не обязан выполнять задания отца Георгия. Допустим, можно задержаться у Хозяина и своими подвигами дослужиться до самого высокого поста – стать Генералом. А далее, как следующий этап развития – поднять мятеж и захватить власть. Еще дальше, уже Правителем, объявить войну соседу и попытаться расширить свои владения. Время от времени, к Джеку будут приходить посланцы отца Георгия, прося и требуя одуматься. В случае согласия, развитие сюжета пойдет по основному варианту.

Если не обращать внимания на отца Георгия (выбрать путь торговца, вольного наемника и т.д.), тот может выбрать для уничтожения Книги другого человека, и, в конце концов, Щит и Книга судеб будут все равно уничтожены, независимо от того, хочет ли этого Игрок или нет. А уже в глобальной войне (с Орками, Темными силами), есть два пути, что бы не погибнуть – это наняться в армию (например, при встрече с целой армией противника ни опыт, ни мастерство не помогут), либо уйти от встречи с армией максимально дальше.

Изначально отец Георгий – посланник Темных Сил, да может быть сам Дьявол, который пытается уничтожить все живое. Но можно принять, что отец Георгий – идеалист, хороший, по своей натуре человек, не знавший, к чему приведет уничтожение Книги Судеб и Щита. В этом случае задача для Джека в некотором роде упрощается, т.к. приходится сражаться только с внешними силами.

По главному сценарию, Орки заключают перемирие с Людьми, а ведь могут и не заключить, что значительно добавит проблем для Джека (вход в подземелье, где находится Щит, контролируется Орками, поэтому придется с боем добираться туда).

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

В независимом (от отца Георгия) сюжете Джек не может значительно повлиять на окружающий мир, в этом случае главное – выжить, используя мастерство, деньги, магические знания и т.д.

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

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

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

Почему не стоит лишний раз попадать в канавы:
У Джека ограниченное количество возрождений, от двух до … и нужно воспользоваться лишь тем, что дано.
С каждым возрождением уменьшается Удача, свойство, позволяющее достичь побед (решений) меньшими затратами (денег, здоровья, времени и т.д.).
После возрождения теряются ВСЕ знания, приобретенные ранее.
По умолчанию при первом возрождении у Джека максимальный уровень Жизни, который всегда можно пополнить, но после каждого последующего этот уровень постепенно снижается и восстановлению не подлежит.

Выполняя миссии, в зависимости от звания( ранга, должности), могут возникнуть различные задачи. Например, если Джек – обычный солдат, его дело – просто убивать противников при атаке. При более высоком звании использовать тактическое управление отрядом, при еще более высоком звании Джек сможет выбирать направление атаки, расставлять отряды в нужном порядке, использовать стратегические приемы и т.д.
В зависимости от мастерства Джека в тактике и стратегии и, самое главное, звания, предлагается несколько вариантов для выполнения миссий. Например, при захвате замка, в зависимости от количества атакующих, предлагается несколько вариантов захвата: атака с одной стороны, атака с нескольких сторон, длительноая осада. Т.е. Джек как бы думает (варианты атак), а уже дело игрока – что выбрать.
При малом опыте могут предлагаться изначально провальные варианты, при большом – либо процент провальных вариантов меньше, либо потери со стороны Игрока будут больше обычного.

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

После возрождения Джек не умеет ничего. Некоторые знания могут достаться Джеку бесплатно - достаточно обратиться к местным жителям при их согласии объяснить все, такие как:
добыча огня, еды, устройство ночлега.
Многие знания можно совершенствовать, занимаясь тренировками, например, можно достигнуть некоторых высот, просто атакуя мечом или дубиной ближайшее дерево во время отдыха.
Абсолютное большинство знаний можно получить за деньги НО при наличии соответствующего образования. Например, нельзя стать Магистром, не умея даже читать, даже за самые большие деньги. Усваиваемость знаний зависит от конкретного игрока. Кому-то для этого потребуется один день, другому – почти неделя.RPS DirectX Использование RPG OpenGL Разработка Direct3D Script GS Game Программа Create Игра Разработка игр DDraw Program RTS Создание игр GameScript Игры Development
OpenGL RPG Script Program RTS Игры Использование Разработка игр RPS Создание игр DDraw Direct3D Игра Программа GS Разработка DirectX Game Create GameScript Development
МИР

География.
Материк протянут с Юга на Север на 1.5 тыс км и на 1.5 тыс. с Востока на Запад. По всей длине с Юга на Север, пролегают Сточные Канавы Глайва, место возрождения Вернувшихся. Канавы являются естественной границей между миром Людей (восточная часть) и Орками (западная часть). Но доступной для перемещения Джека является только восточная часть материка (будем надеяться, пока…) Любая попытка углубиться в земли Орков заканчивается смертью, это могут быть ловушки, западни, неизвестные болезни и т.д. Джек после своей смерти может возродиться в ЛЮБОМ месте сточных канав, по всей их длине.


Климат Материка – с крайнего Юга до крайнего Севера:
Пустыни (прототип – пустыня Сахара) с большими оазисами, умеренные сухие районы (прототип – Ирак с Юга на север), влажные районы (прототипы – экватор Земли, Латинская Америка), умеренные влажные районы Центра (прототипы – Турция с юга на север), умеренная зона в Центре (прототипы – от Абхазии, Аджарии на юге и Центральной Европы на севере) , умеренный арктический климат на Севере (прототип – Скандинавия с юга на север) и далее - малонаселенные районы на крайнем Севере (прототипы – Сибирь и далее Чукотка ).
Климат является естественным продолжением географии – на Юге горы разделяют сухую и влажную часть, и Центр – Север на Севере. Большинство рек текут в районах южной влажной части и умеренной центральной. Весь метерик неравномерно разрезан холмами и равнинами.
Южная влажная часть и умеренная Центральная густо усеяны лесами. Отдельные части также разбросаны на Севере (тайга) и сухих районах Юга.
Время от времени происходят стихийные бедствия: наводнения, засухи, ураганы, снежные и песчаные бури, что приводит к тому, что некоторые населенные пункты могут стать недоступными.

Политическое устройство
Существуют разрозненные Города-государства с прилегающими селами и деревнями. Из-за деревень и сел, точнее их контролем, постоянно идут стычки, так как обладание ими позволяет обеспечить продовольствием жителей Городов.
Некоторые поселения неподвластны никому, в основном из-за малого интереса к ним.
Вдоль сточных канав находится очень мало поселений, так как орки постоянно делают набеги и их уничтожают. В то же время, в непосредственной близости от канав, расположены отдельные Замки, чьи Хозяева (т.н. Бароны, Графы, Герцоги и т.д.) пытаются отлавливать Вернувшихся для своих целей.
Хозяйство
На Севере и Юге расположены громадные запасы полезных ископаемых. В Центре запасы минимальны.
Юг – в основном добыча полезных ископаемых (золото, серебро, драгоценные камни), животноводство и сельское хозяйство (в умеренных зонах - пряности, хлопок).
Центр – в основном сельское хозяйство, очень развито ремесло.
Север – в основном добыча полезных ископаемых (железо, медь), животноводство (в умеренных зонах).Игры Разработка игр DirectX RPS Program Создание игр RTS DDraw Direct3D GS Game Script Create RPG Использование GameScript OpenGL Development Программа Разработка Игра
DDraw Разработка игр Игра Разработка Создание игр Program Create RPG Программа Использование Development Игры RPS Game Script OpenGL DirectX GS GameScript Direct3D RTS
Города, поселения

В каждом из Городов выпускается то или иное количество продуктов,необходимое для существования, но в то же время каждый Город имеет свою специализацию.
Города Юга:
Эн-Наджаф – лучшие ткани на материке
Эл-Фаллуджа – огранка драгоценных камней, производство драгоценностей
Киркук – производство вина
Города Севера:
Айкраф – выделка шкур, мехов
Ам Шер – переработка руд (железо, медь)
Толл – центр ремесел по дереву, кости
Города Центра:
Террур - один и в то же время два отдельных и независимых города, Верхний Террур и Нижний _ Террур, расположенные по разным берегам впадающей в океан реки. Города-конкуренты. Город-рынок, город-порт, центр торговли. Удачное расположение делает город самым богатым на материке.
Стоун Хендж – лучшая посуда (глиняная, металлическая, драгоценная)
Стиллинг – самое лучшее оружие делается только здесь
Фейн – переработка сельско-хозяйственной продукции (мука, соления, копчения)
Тибриз – вольный морской город, недоступный по суше.
Города связаны между собой главными дорогами. Вдоль дорог неравномерно расположены селения (села, поселки). От каждого из поселка может отходить несколько второстепенных дорог к деревням, удаленных от главных дорог, и от них еще и т.д.
Вдоль главных дорог равномерно расположены ( или должны быть, были…) таверны и гостиницы (максимум не более тридцати км друг от друга – дневной переход пешим шагом). Вдоль остальных дорог, троп и тропинок наличие таверн не гарантируется.
Деревни могут соединяться между собой отдельными тропами (не дорогами), которые недоступны в период дождей и непогоды.
Города также связаны морскими путями, но пути могут быть временно недоступными (иногда до трех месяцев – сезонно), либо от одного дня до недели (внезапные штормы). Морской путь иногда может быть самым быстрым, но он ВСЕГДА – самый опасный: штормы, пираты, рифы и т.д. Морские пути доступны лишь опытным мореходам, поэтому лучше выбирать его лишь на самый крайний случай. Вообще, мореплавание и кораблестроение неразвито, существуют лишь весельные корабли - легкие траспортники-торговцы и боевые галеры, а мореплавание доступно лишь в прибрежных водах.
Вокруг группы деревень и поселков (особенно удаленных от городов), обычно есть Замок – небольшой городок-крепость, для защиты жителей во время атак. К нему так же могут быть подведены дороги.

Оружие.
Все оружие можно условно поделить на две группы:
Обычное и Стреляющее. Огнестрельного оружия нет (может быть появится потом в дальнейшем?) Как нет и пушек, мортир и других осадных орудий. Для осад используются тараны (под прикрытием атакующие пытаются разбить главные ворота) и механические катапульты. Вообще, можно принять, что прототипом времени является средний век до изобретения пороха.
Личное оружие.
Холодное оружие – разные виды мечей, булав, дубин, ножей, топоров, копий (длина, вес, материал, характерный вид, например, двуручный меч, для использования двумя руками, поражающая способность; нож можно метнуть на близкое расстояние)
Стреляющее – малый арбалет (на сверхмалом расстоянии, на одну стрелу с быстрой перезарядкой), большой арбалет (на малом расстоянии, на одну или две стрелы со средней перезарядкой), малый лук (на сверхмалое до среднего расстояния со сверхбыстрой перезарядкой), и большой лук (от сверхмалого до большого расстояния с быстрой перезарядкой). Каждое оружие имеет свои особенности (длина, вес, материал, характерный вид, поражающая способность), даже одного вида.
Самое универсальное стреляющее оружие – лук. Но одновременно и самое капризное, что ли. При стрельбе нужно учитывать угол наклона, усталость от прицеливания (это же относится и к арбалету, но в меньшей степени) – держа оружие на прицеле, через некоторое время оно начинает плавать в руках, отсюда вывод – хочешь попасть, стреляй почти немедленно; силу и направление ветра (на большом расстоянии).
Арбалет эффективен на сверхмалом и малом расстоянии, но эффективность его снижается при использовании противником лат и кольчуг (железных – дротики их просто не пробивают, бронзовых – снижается поражающая способность). В этом случае нужно прицеливаться в незащищенные места.
Перед тем, как использовать арбалет и лук, лучше всего предварительно пристреляться (конечно, на поле боя времени не будет). Это связано с тем, что на самом деле стрелы и дротики будут попадать не совсем туда, куда расчитываешь – каждое оружие со своей особенностью.
Малый лук пробивает бронзовые латы и кольчуги, большой – любые. Нужно учитывать, что и стрелы (точнее, наконечники) тоже оказывают влияние на эффективность стрельбы.
Средства защиты.
Латы, кольчуги, шлемы, щиты – каждый со своими особенностями.
Использование оружия.
Если в руках ничего нет, режим от первого лица, аналог «Medal of Honor», «Call of Duty» - без указателя центра (крестика, кружка и т.д.)
При использовании обычного оружия (меч, топор) или при неактивном стреляющем (например, в руках есть лук, но игрок просто держит его в руках), или, вообще при наличии предмета в руках: вид сверху, над головой или сбоку -> камера как бы плавает режим от третьего лица – аналог «Prince of Persia». В этом случае больше обзор.
При попытке прицелиться из стреляющего оружия или использовать магию – режим от первого лица. В цетре появляется указатель (аналог - «Medal of Honor», «Call of Duty»). При стрельбе из лука (или арбалета на дальнюю дистанцию), вместо указателя – линия по центру с рисками, т.к.в этом случае дальность зависит от угла поднятия оружия.
Обычное оружие может использоваться в атакующем илизащитном режимах. ,
В атакующем режиме атакуется впереди стоящий объект. Невозможно все время атаковать, нужно делать перерывы, по 2-3 атаки и переходить в защиту, либо отходить (при защите Усталость тоже накапливается, но в меньшей степени).
В защитном режиме на 90% блокируются удары спереди, на 75% по бокам и до 0% - сзади. Так же невозможно все время находиться в защите, лучше отступить назад и отдохнуть.
Сражение – почти аналог «Prince of Persia».
Религия.
Население поклоняется многим богам и силам, и все же главенствующим и самым распространенным, считается Орден Судьбы. Идеология о том, что все прописано заранее, выгодна многим, от правителей городов до простого крестьянина. Это помогает все объяснить и гасит любые смуты. Но в Ордене назревает раскол…
Магия.
За помощью можно обратиться к многочисленным богам или Силам. Для этого у Игрока
а) должна быть Магическая Сила, которая тратится на выполнение заклятия и постепенно восстанавливается за определенное время.
б) должны быть развиты магические способности - нельзя выполнить заклятие большого уровня, не достигнув образования.
в) должны быть в наличии соответствующие магические предметы (дары, аммулеты), но для некоторых заклятий это не обязательно.
г) нужно знать текст заклятия (в спецшколе, случайно увидел и т.д.)
Джеку придется выбирать, какому богу поклоняться или какой из Сил, так как нельзя использовать заклятия разных богов и сил одновременно: либо заклятия будут меньшей силы, либо вообще не будут работать.
Для того, что бы использовать магию, достаточно произнести магическое заклятие, т.е. нужно его знать. Если нужно использовать магию на конкретное существо, нужно явно на него указать - при помощи руки, палочки (естественно, волшебной), крестом, амулетом, Священным оружием и т.п. Использование специального указующего предмета значительно увеличивают мощь заклятий.
Использование магии имеет оборотную сторону. Например, любое заклятие Темных Сил, впускает в Мир какую-либо тварь. Поэтому, колдуны Темных Сил особенно преследуются везде и всегда на государственном уровне, независимо от Правителя.
Использовании магии богов в самом худшем случае может унести жизнь человека, находящегося поблизости. Но, почти всегда, побочные эффекты минимальны: невдалеке может внезапно вырасти дерево, куст, перевернется стол, разобьется окно, ударит молния, загорится дом, у человека, находящегося поблизости, могут вырасти рога или хвост (шутки богов).
Типы воинов.
Типы: легкая пехота, тяжелая пехота, лучники, арбалетчики, легкая кавалерия, тяжелая кавалерия. Каждый из типов может иметь свою специализацию: пикейщики, стреляющая кавалерия, штурмовики и т.д.
Program Create Development Создание игр Игры GameScript RTS RPS Script DDraw DirectX Программа Игра OpenGL Разработка Game Разработка игр Использование RPG GS Direct3D
RPG DirectX Direct3D Использование RTS OpenGL Разработка GameScript Script Игры Создание игр RPS Программа Игра DDraw Game Development Разработка игр Create GS Program
Общие положения

Форма материка, расположение Городов (а так же их количество) , Замков, поселений, дорог – в каждой игре уникально. Названия поселений и замков тоже может быть уникальным ( либо предварительно созданный готовый список, либо создающийся автоматически из слогов и их комбинации).

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

При возрождении Джек не знает магических заклятий (предполагается, что он их забыл), т.е. произнося заклятие из прошлой жизни, никаких действий не происходит.
Текст заклятий – предложение из случайного набора слогов в определенной последовательности. Чем мощнее заклятие, тем длиннее предложение (или может быть – даже предложениЯ).
Обучаться магии можно в специальных школах или у встреченных колдунов (при их согласии). Можно держать колдуна рядом с собой (нанять его), и пользоваться заклятиями, даже не зная их.

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

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

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

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

У Джека развит такой дар, как внутренний голос (что-то типа шизофрении - шутка), который может отговаривать не делать «того», не ходить «туда», или наоборот – и сделать, и пойти. В большинстве случаев прислушиваться к нему надо, т.к. многих ошибок и неудач можно будет избежать. Например, подходя к дому, внутренний голос может сообщить, что дом какой-то странный. Или, например, что идти на Север в такую погоду – верная смерть. И т.д.

Что такое миссия?
В общем случае - это задача, которую нужно решить за определенное время.
Например Джек нанялся в охрану каравана, который должен доставить груз из Города в Город.
Задачи:
а) не отходить от далеко от последней повозки каравана на всем пути до точки прихода – договор могут расторгнуть.
б) охранять караван от разбойников – если Джек трусливо прячется, даже не делая попытки сражаться, его, в худшем случае, могут и жизни лишить.
Game DirectX Игра Создание игр GameScript Программа Create Разработка игр Direct3D Development DDraw Script Разработка RPG GS RPS Игры Program Использование OpenGL RTS

Ну и самое интересное...

«Рассказ на тему»

Не знаю, является ли переделка своего же рассказа плагиатом? 

Как Вам (ниже) своеобразная версия параллельных миров? Если что — готовая идея для сценария фильма в стиле «Роуд-муви» :), где главный герой, одновременно находясь в разных мирах, последовательно идёт к своей цели.

Выложил как версию от 2001 года, так и переделанную — на текущий момент.

Может, выложенное кого-то подтолкнет к чему-то?

Дорога на Юг

«... Солнце встает на востоке и заходит на западе. Ученые утверждают, что на самом деле это Земля крутится вокруг Солнца. Египтяне в древности утверждали, что Солнце - это колесница бога Ра, на которой тот путешествует по небу. А что если ВСЕ ОДНОВРЕМЕННО ПРАВЫ?»

Что произошло? Наверное,  я единственный,  кто помнит,  что было В САМОМ НАЧАЛЕ. 

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

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

Очнулся через мгновение в каком-то странном, доисторическом камзоле, рядом с телом этого алхимика. Тут в комнату влетает солдат Зонерхейма и  криком "Чародея убили!" получает болт между глаз из моего арбалета. Я проделал это, как будто всю жизнь пользовался таким оружием...

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

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

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

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

Федерация Южного Креста - моя основная цель. Там я смогу отсидеть, пока крейсеры Империи рыщут в поисках диверсанта,  уничтоживших их центр исследований.

Центр? Зонерхейм? О боги, я в открытом космосе, привычно управляю космическим кораблем!

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

Я. Должен. Быть. В Далласе.

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

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

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

Но сейчас не время для размышлений о технологиях. Сигнал тревоги. На экране радара появился космический крейсер Империи. Я ждал этого момента, как ждет своей смерти приговоренный к высшей мере. Мое сердце замерло, но разум продолжал работать. Самое главное сейчас — уйти под защиту гравитационного поля ближайшей планеты. Если мне удастся это сделать, локаторы крейсера потеряют меня из виду, и вместо моего корабля они увидят лишь темное пятно на фоне космоса. Я знал, как они поступят. Они всегда поступают одинаково. Крейсер подойдет ближе, чтобы разобраться, что это за аномалия, а я буду ждать, пока он появится в перекрестье моего прицела. 

Я не могу сказать, что у меня плохая реакция, но когда крейсер появился из-за скалы, я на мгновение замешкался. Это было величественное зрелище — огромный корабль, воплощение мощи и технологий Империи. Мне, честное слово, было жаль уничтожать такую красоту, творение человеческой мысли. Но я взял себя в руки. Шнур затлел, и мой корабль вздрогнул от выстрела. Дым от разом выстреливших орудий закрыл весь обзор, но я все же разглядел через пелену парусник Его Величества - вода лилась через огромную дыру в его борту, заливая палубу водой и кровью мундир. Он был еще жив, но его судьба была предрешена, старуха с косой уже стояла у его носа. 

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

Но почему именно я? Почему я оказался в этой ситуации? 

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

Но я не хочу умирать. 

Поэтому я должен продолжать ехать на Юг.  Там, в глубинах космоса, за пределами влияния Империи, я могу найти спасение. Там я смогу уйти от слуг лорда Зонерхейма, от звездных кораблей Империи, от конкистадоров Его Величества, от полиции штата. На Юге, где законы теряют свою силу, я смогу начать все заново. Или, по крайней мере, попытаться.

Идти на Юг

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

Сигнал тревоги. Космический крейсер Империи.

Я ждал его, как ждет своей смерти приговоренный к высшей мере. Самое главное - уйти под защиту гравитационного поля ближайшей планеты. Тогда локаторы крейсера вместо моего корабля увидят какое-то темное пятно. И я знаю, как он скорее всего поступит - так же, как и всегда. Он подойдет посмотреть, что это за чудеса, а я буду ждать, пока он появится в перекрестьи прицела.
Не сказал бы, что я не обладаю реакцией, но когда он появился из за скалы, я на мгновение замешкался. Мне, честное слово, было жаль уничтожать такую красоту, творение человеческой мысли, но я взял себя в руки. Шнур затлел и...

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

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

Да, я потому и ушел от полиции, что рядом, в лаборатории, взорвалась какая-то аппаратура. Заказ был выполнен, но что-то произошло... Меня перенесло в какой-то другой мир, потом - в следующий, в другой, еще один и дальше по кругу.
Время и пространство ополчились на меня... Везде одно и тоже. В каждом из миров я кого-то убил, и везде меня преследуют. Только смерть может вернуть все обратно... Но я не хочу умирать. Поэтому я должен идти на Юг. Там я могу спастись от слуг Лорда Зонерхейма... звездных кораблей Империи...конкистадоров Его Величества...полиции штата

 

Теги к статье

Интересное Взрыв из прошлого

Поделиться статьёй и ссылки

Комментарии

 

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

    Для авторизации - кликните ЗДЕСЬ

    Трудности перевода

    Что тут сказать... Можно отлично выучить английский и ВСЁ РАВНО не понять - ЧТО ИМЕЛОСЬ В ВИДУ.

    Винни-Пух поёт на разных языках

    Песенка Винни-Пуха на аварском, осетинском, даргинском, кумыкском, лакском, лезгинском, татарском, английском, немецком, русском языках.