Компьютер-Информ || Архив || Рубрики || Поиск || Подписка || Работа || О "КИ" || Карта
Виктор Ашик,
v_ashik@eureca.ru
Мне всегда нравилось программировать. Это увлекательное занятие приносит ни с чем не сравнимое удовольствие, особенно при достижении намеченной цели, при получении работающего решения, созданного своими руками. Фредерик Брукс в своей, ставшей классической, работе Мифический человеко-месяц объясняет это удовольствие и сравнивает его, в частности, с отражением восторга Господа, творящего мир, восторга, проявляющегося в индивидуальности и новизне каждого листочка и каждой снежинки (СПб.: Символ-плюс, 2001, с. 18). Фирма Microsoft сделала всем людям, получающим удовольствие от программирования, необыкновенный подарок: игру Terrarium, которая позволяет каждому, кто умеет программировать, снова и снова испытывать этот восторг творчества, создавая не просто работающий код, но модели живых существ, насекомых.
Terrarium представляет из себя демонстрационное приложение новой среды выполнения .NET Framework, которое является средой обитания для программных моделей живых существ. Обитатели этой среды взаимодействуют друг с другом, вступая в конкурентную борьбу за выживание. Приложение может работать в одном из двух режимов: террариума и экосистемы. В режиме террариума система полностью автономна и не требует подключения к Интернет. В режиме экосистемы приложение регистрируется на игровом сервере и узнает от него о существовании других систем, на которых выполняется Terrarium, и получает возможность обмениваться с ними экземплярами существ.
Обмен осуществляется посредством специального объекта телепортера, который передвигается по случайным направлениям внутри игрового поля и перебрасывает встреченные на пути существа между игровыми пространствами систем. Так образуется распределенная сеть игровых пространств, составляющих экосистему, и конкуренция между существами ведется уже не только в пределах замкнутого игрового пространства, но в целой экосистеме. Сервер периодически получает от подключенных к сети систем статистическую информацию и составляет сводную таблицу по всей экосистеме, где отражается текущее количество экземпляров каждого вида и количество событий, которые привели к изменению численности данного вида: смертей по различным причинам, рождений и ошибок.
Технически, обитатель террариума является библиотекой в формате dll, которая содержит класс, унаследованный от Animal, и реализует методы этого класса, определяющие поведение моделируемого существа. Таким образом, приложение Terrarium демонстрирует возможность безопасного, управляемого выполнения программного кода в среде .NET Framework. Телепортация существ выполняется прямым взаимодействием между системами по протоколу TCP, порт 50000. Таким образом, для участия в экосистеме необходимо иметь реальный IP-адрес и прямой доступ в Интернет, или настроить на Интернет-шлюзе проецирование TCP-порта 50000 шлюза на TCP-порт 50000 компьютера с приложением Terrarium и включить в настройках Terrarium режим работы через NAT. Но играть можно и вовсе без подключения к Интернет, для этого достаточно установить в локальной сети собственный игровой сервер.
Несмотря на то, что игра предназначена для программистов, а не для обычных любителей компьютерных игр, у приложения Terrarium красивый графический интерфейс, который работает через DirectX и отображает состояние игрового поля в виде пустыни, по которой бегают насекомые, соревнуясь друг с другом в поисках пищи, нападая и защищаясь, убегая и догоняя друг друга.
Таким образом, приложение Terrarium демонстрирует следующие возможности новой платформы для приложений .NET Framework:
управляемое выполнение постороннего программного кода;
удаленный (через сеть) вызов Web-служб по протоколу SOAP;
передача данных по сети;
доступ к стандартным библиотекам графики (DirectX).
И, что самое главное, Terrarium побуждает программистов всего мира к освоению программирования под .NET Framework.
Как играть в Terrarium? Нужен компьютер с операционной системой Windows одной
из следующих версий:
Windows 98.
Windows ME.
Windows NT Service Pack 6, DirectX 7.
Windows 2000.
Windows XP.
На эту систему нужно установить.NET Framework SDK (доступен бесплатно с http://msdn.microsoft.com)
или Visual Studio .NET (приобретается по подписке MSDN или по стандартным каналам
распространения программных продуктов Microsoft). Необходимые минимальные возможности
программирования: не обязательно устанавливать ни средства доступа к данным
MSDAC, ни Internet Information Services. Единственное исключение для установки
Visual Studio .NET потребуется Internet Explorer 6, для SDK достаточно версии
5.01. Затем устанавливается сам Terrarium запуском setup.exe со страницы http://www.gotdotnet.com/terrarium/download/download.aspx.
Если у вас уже установлен Windows Installer версии 2.0 (версия msi.dll не младше
2.0), то можно загружать сразу Terrarium17.msi.
Интерфейс программы Terrarium достаточно детально объясняется на сайтах http://www.gotdotnet.com/terrarium/
и http://www.gotdotnet.ru.
Первое создание, которое вам потребуется для работы в режиме террариума, это растение, написать которое не сложнее чем Hello world (Листинг 1).
using System;
using System.IO;
[assembly: AuthorInformationAttribute(`Victor Ashik`, `v_ashik@eureca.ru`)]
// FIXME: Информация об авторе
// Название класса существа
[assembly: OrganismClass(`Food1`)]
// Энергетическая емкость существа
[MaximumEnergyPoints(10)]
// Размер взрослой особи
[MatureSize(26)]
// Радиус разброса семян растения
[SeedSpreadDistanceAttribute(100)]
public class Food1 : Plant {
public override void SerializePlant(MemoryStream m) {
}
public override void DeserializePlant(MemoryStream m) {
}}
Синтаксис C#, использованный здесь (вы также можете использовать синтаксис Visual Basic .NET или JScript .NET), сходен с синтаксисом Java, необычным является использование квадратных скобок для задания значений атрибутов. При описании создания, не являющегося растением, мы должны распределить 100 единиц по атрибутам, определяющим характеристики моделируемого вида: MaximumEnergyPoints, EatingSpeedPoints, AttackDamagePoints, DefendDamagePoints,MaximumSpeedPoints, CamouflagePoints и EyesightPoints. Также для животных нужно установить атрибут хищника CarnivoreAttribute в логическое значение true или false.
Как получить из листинга библиотеку dll, пригодную для заселения в террариум, подробно написано на странице http://www.gotdotnet.com/terrarium/docs/QuickStart/default.aspx. Здесь приведем краткие алгоритмы:
Visual Studio .NET:
создать новый проект типа C# Class Library;
заменить в листинге Class1.cs весь текст на приведенный в Листинге 1;
добавить в ссылки проекта System.Drawing и organismbase.dll из каталога
с Terrarium;
собрать проект командой Build Solution.
.NET Framework SDK:
создать файл Food1.cs c текстом из Листингa 1 в каталоге с organismbase.dll;
выполнить команду:
csc /t:library /debug+ /out:Food1.dll/r:System.dll, System.Drawing.dll,OrganismBase. dll Food1.cs.
Полученный файл существа готов к введению в Terrarium, что можно сделать, нажав
на кнопку Introduce Animal, затем кнопку Browse и выбрав Food1.dll. Файл
Food1.dll не должен находиться в одном каталоге с terrarium.exe. В террариуме
должны появиться 10 экземпляров вашего растения, которые по достижении зрелого
возраста начнут размножаться.
Следующий этап создание травоядного животного. За основу проще всего взять
готовый шаблон: http://www.gotdotnet.
com/terrarium/docs/QuickStart/CustomizedTemplate.aspx и модифицировать его.
Внимание! Трюк: библиотеки с программным кодом существ содержат не двоичные команды процессора, а команды виртуальной среды выполнения Intermediate Language (IL) и все названия методов, а если вы компилировали с отладочной информацией, как предложено выше, то и все названия переменных. Это позволяет, как минимум, анализировать логику работы вашего (или не вашего) кода с помощью стандартногодизассемблера ildasm.exe, который входит в состав SDK. Кроме того, уже есть действующие декомпиляторы IL, выдающие вполне читаемый листинг на исходном (!) языке .NET, например, C#. Один из таких декомпиляторов доступен в демонстрационном режиме на сайте http://www.remotesoft.com/salamander/ и позволяет декомпилировать чужих зверушек и не только их.
Защититься от декомпиляции можно, для этого нужно запутать последовательность команд IL, найти можно даже бесплатные версии, искать по ключевым словам IL obfuscator: http://www.google.com.ru/search? q=IL+obfuscator. Еще один совет о том, как отлаживать код созданий. Простейший способ состоит в добавлении в листинг вызовов WriteTrace, которая может выводить от одного до четырех своих аргументов в окно трассировки выбранного создания.
Возможно также выполнять и отладку по шагам, если у вас есть Visual Studio
.NET, для этого нужно в свойствах проекта указать, что вы собираете отладочную
версию в каталог, где находятся библиотеки уже введенных в террариум животных.
Затем нужно запустить, ввести ваше существо в террариум, подключиться к процессу
Terrarium.exe для отладки и расставить точки останова в интересующих вас участках
кода.
Рубрики || Работа
|| Услуги || Поиск
|| Архив || Дни
рождения
О "КИ" || График
выхода || Карта сайта || Подписка
Рассылка анонсов газеты по электронной почте
Сайт газеты "Компьютер-Информ" является зарегистрированным электронным СМИ.
Свидетельство Эл 77-4461 от 2 апреля 2001 г.
Перепечатка материалов
без письменного согласия редакции запрещена.
При использовании материалов газеты в Интернет гиперссылка обязательна.
Телефон редакции (812) 718-6666, 718-6555.
Адрес: 196084, СПб, ул.Заставская, д.23, БЦ "Авиатор", 3-й этаж, офис 307
e-mail: editor@ci.ru
Для пресс-релизов и новостей news@ci.ru