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

Фантастика? В Silverlight же нет поддержки 3D, возможно, скажите вы… и будете правы. 3D нет. А вот квака есть!

Все еще не можете поверить? Хотя что тут такого? Портировать игрушку на С/С++ под C#, смоделировать 3D графику… и вот вам квака! Это же не JavaScript.

Это .NET!

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

  • Correct BSP support.
  • Texture mapping rendering (with mipmapping and surface cache).
  • Faces rendering (no polygons or triangles yet).
  • Submodels rendering (moving walls, floors and doors).
  • Particles rendering.
  • Simple sprite rendering (no animated sprites yet).
  • Warp effect.
  • Sky and turbulent (water, swamp, lava) rendering.
  • Palette effects.
  • Client/server support (loop network protocol).
  • Demo playback.
  • Very preliminary game engine.
  • Support for shadow effects and lightning effects (torchs, explosions)

    Для Silverlight RC0 ребята привели сравнение производительности по сравнению с бетой:

      Silverlight 2 RC0 Silverlight 2 beta 2
    320 x 240 104 FPS 80 FPS
    640 x 480 47 FPS 30 FPS
    800 x 600 35 FPS 20-25 FPS
    1024 x 768 22 FPS N/A

    (Tested with a PC Intel P4 3.2 Ghz and Internet Explorer 7)

     

    Исходных кодов или готовой игрушки, чтобы поиграться, пока нет. Работа ведется в режиме “если у меня есть свободное время”, поэтому совсем быстрого появления всего этого пока ожидать не приходится.

    Между тем Адаму Кинней (Adam Kinney) удалось связаться с разработчиком Жульеном Фрелат (Julien Frelat), записать видео игрушки со своего компьютера и взять интервью у автора.

     
    QuakeLight Preview

  • Из интервью, в частности, можно узнать следующее:

    • Идея портирования Quake на Silverlight возникла после того, как на конференции Adobe MAX 2007 показали порт игрушки на Flash (через компиляцию  С-кода в байткод Flash Player). В то время Жульен занимался портированием игрушек для Z80 на Java, решил попробовать портировать и на C#/Silverlight – оказалось, что игрушка работает в 2.5 раза быстрее. Ну тут уже и до кваки не далеко!
    • При портировании Жульен сначала автоматически сконвертировал хорошо оптимизированный код на С в классы на C#. При этом не использовались какие-либо 3D-движки. Так как его не очень удовлетворяли существующие проекты для работы с 3D-графикой в Silverlight (Kit3D, Balder – кстати, это еще не значит, что они не подойдут вам в вашем проекте), Жульен переключился на реализацию трационного попиксельного 3D-движка (и использованием scanline-рендеринга и простого z-буфера). Основной задачей было оптимизировать рендеринг битмаппов и их блиттинг.
    • Среди преимуществ Silverlight для разработки Жульен отмечает высокую скорость разработки и отладки в Visual Studio, мощный API (библиотека классов), удобный плагин для установки и отличную производительность.
    • Отдельных вещей все еще не хватает: нет поддержки работы с растрами, нет динамической генерации звука. Но это же только вторая версия!
    • QuakeLight был разработак за три недели -- на выходных, пока Жульен пребывал в качестве сиделки, присматривая периодически за сыном.

    Понятно, что прежде, чем игрушку можно выпускать в пользование, еще много чего нужно сделать. В первую очередь, доработать 3D-движок, добавить звук и возможности мультиплеера. При этом не все зависит от самого Жульена, это тоже понятно. Что-то потребуется и от Ssilverlight.

    Надеюсь, в следующей версии все (или большая часть) необходимое появится.

    Пожелаем Жульену удачи с его проектом! А нам – классных 3D игрушек на Silverlight!