пятница, 20 августа 2010 г.

Doom жив!

На этой неделе решил стряхнуть пыль с Doom'а и попробовать поиграть на уровнях, сделанных поклонниками этой игры. Поскольку уровни обычно распространяются в виде PWAD файлов, то есть Patch WAD, то им требуется основной WAD-файл - IWAD, Id software WAD. Я достал с полки компакт-диск с четырьмя официальными частями игры и собрал все WAD-файлы в одном каталоге:

  1. Ultimate Doom - doom.wad,

  2. Doom 2: Hell On Earth - doom2.wad,

  3. Final Doom: TNT Evilution - tnt.wad,

  4. Final Doom: Plutonia Experiment - plutonia.wad.


Далее, можете воспользоваться моей заметкой Музыка в PrBoom для настройки одного из современных портов Doom'а, одной из основных целей которого является достижение максимальной совместимости с оригинальной игрой. Достигнутая совместимость настолько высокая, что в порте PrBoom можно даже просматривать старые демо-записи из оригинальной игры, при том что демо-записи представляют собой поток записей с информацией о нажатых на клавиатуре клавишах. То есть малейшее несоответствие в поведении игрового мира приведёт к тому, что в демо-записи игрок будет невпопад идти, тыкаться в стенки, стрелять в пустоту и уворачиваться от невидимых монстров до тех пор, пока игрока не убьют.

Затем, я скачал на сайте iddqd.ru несколько wad-файлов:

  1. 1 Monster Megawad - 1monster.wad

  2. 10 sectors contest - 10sector.wad

  3. 1024 and 2 sectors - 2sectors.wad

  4. Grid 32 - grid32.wad


Эти 4 WAD-файла были сделаны в промежутке от 2000 до 2008 года - то есть сравнительно недавно. Люди до сих пор продолжают делать карты для Doom. Вот, например, на страничке с уровнями, сделанными неким Shadowman'ом можно найти уровни, датированные аж 21 июля 2010 года.

Конечно, много воды утекло с тех пор, когда существовал оригинальный Doom. Многие карты делаются в расчёте на современные порты Doom'а. Но, есть и классические карты, которые будут работать и в оригинальном Doom в DOS. Есть чуть менее классические, выполненные в так называемом формате Limit Removing - это карты, в которых используются только возможности исходного, оригинального Doom, но не обращается внимание на технические ограничения старого движка: карты иногда достигают огромных размеров, с большим количеством использованных текстур, что старый движок Doom не потянул бы.

Есть и независимые реализации движков Doom, например ZDoom. Они не преследуют цель достижения максимальной совместимости, а в большей мере рассчитаны на достижение максимальной гибкости и фичастости. Например, в них возможны многоэтажные уровни, прозрачные поверхности, скриптовое управление уровнем и т.д.

Люди даже продолжают рисовать монстров, оружие, наборы текстур, элементы обстановки, предметы.

18 августа 2010 года вышло очередное обновление редактора уровней Doom - Doom Builder. Что характерно, редактор написан для Windows с использованием .NET, позволяет редактировать уровне в режиме трёхмерного просмотра.

В 2005 году музыканты-энтузиасты записали два альбома ремиксов музыки из Doom: The Dark Side of Phobos. Музыка не является ремиксами в полном смысле слова: музыка творчески переосмыслена, аранжирована и исполнена на "настоящих" инструментах. Естественно, это не MIDI-файлы, пропущенные через сэмплер, это настоящая музыка, которую приятно слушать и вне игры. Альбомы доступны для бесплатного скачивания на самом сайте проекта в виде torrent-файла.

Существуют проекты по созданию трёхмерных моделей монстров, по рисованию текстур более высокого разрешения. Есть конверсия уровней Doom на движок Doom 3: Classic Doom 3, музыка перезаписана музыкантами в студии, на "настоящих" инструментах.

В общем, Doom жив как никогда. Удивительно, в этом году 10 декабря Doom'у исполнится уже 17 лет, но он всё никак не может покинуть сердца фанатов. В том числе моё сердце. Периодически мне хочется снова поиграть в эту игру, иногда хочется закончить свой WAD-файл с недоделанными уровнями, которые я делал ещё лет пять-шесть назад в до ужаса кривом DOS-редакторе WadEd. Doom продолжает жить.

среда, 11 августа 2010 г.

Поиск простых чисел

Откопал из закромов свою программу на Си для поиска простых чисел по алгоритму решета Эратосфена:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const int MAX_NUMBER =1048576;
const unsigned long masks[32]={0x80000000,0x40000000,0x20000000,0x10000000,
0x08000000,0x04000000,0x02000000,0x01000000,
0x00800000,0x00400000,0x00200000,0x00100000,
0x00080000,0x00040000,0x00020000,0x00010000,
0x00008000,0x00004000,0x00002000,0x00001000,
0x00000800,0x00000400,0x00000200,0x00000100,
0x00000080,0x00000040,0x00000020,0x00000010,
0x00000008,0x00000004,0x00000002,0x00000001};
inline unsigned long getBit(unsigned long *ptr,unsigned long bit)
{
return ptr[bit>>5]&masks[bit&0x1f];
}
inline void setBit(unsigned long *ptr,unsigned long bit)
{
ptr[bit>>5]|=masks[bit&0x1f];
}
inline void resetBit(unsigned long *ptr,unsigned long bit)
{
ptr[bit>>5]&=~masks[bit&0x1f];
}
void main(void)
{
unsigned long maxNum=MAX_NUMBER;
unsigned long *ptr=(unsigned long *)malloc(maxNum/8);
if (ptr==NULL)
{
fprintf(stderr,"Can't get memory for buffer.\n");
return;
}
memset(ptr,0xff,maxNum/8);
for(unsigned long i=2;i<maxNum;i++)
if (getBit(ptr,i)!=0)
{
fprintf(stdout,"%ld\r",i);
fprintf(stderr,"%ld\r",i);
for(unsigned long j=2*i;j<maxNum;j+=i)
resetBit(ptr,j);
}
free(ptr);
}

Судя по отметке времени на файле, программа была написана 28 октября 2002 года. Ищет простые числа от 1 до 1048576. На хранение всего "решета" отводится 128 килобайт памяти. Для поиска чисел до миллиарда потребуется 128 мегабайт.

вторник, 10 августа 2010 г.

Национализация рубля

Национализация рубля - очень советую ознакомиться. Просто и понятно о том, почему России выгоднее продавать нефть за рубли. Кстати, похожая идея была озвучена в фильме "Бесценный доллар 2" (тоже советую посмотреть оба фильма).