Квака на Silverlight? Да!
В начале октября в сети появилась видюшка, в которой можно было увидеть некий 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), записать видео игрушки со своего компьютера и взять интервью у автора.
Из интервью, в частности, можно узнать следующее:
- Идея портирования 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!