Главная » 2D графика » Создание карты в игре методом спрайтов

RSS

Создание карты в игре методом спрайтов

Не нравитсяНравится   Рейтинг +6

Хранить спрайты можно не только в BMP, но и в TImageList. При этом появляется множество удобств:

  1. Можно спрайты не вытягивать в линейку, а рисовать на прямоугольнике – допустим 640×480. При загрузке достаточно указать размер спрайта, а ImageList сам их разобьет.
  2. Удобно добиваться прозрачности. Это может понадобится для спрайтов не квадратной формы – ромб. Они пригодятся для изометрии.
  3. Скорость вывода на экран потрясающая. Смотрите пример.

Итак, что я переписал в TFlur : коструктор и Draw

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
constructor TFlur.Create(ConstMapX,MapY,SpriteW,SpriteH:integer;ResFileName:String);
// MapX,MapY - размер карты в спрайтах
// SpriteW,SpriteH - размер спрайта
// ResFileNama - путь к BMP
var
  Resource:Tbitmap; // BMP с ресурсами
begin
  Resource:=Tbitmap.Create; // Грузим ресурсы из ResFileName
  Resource.LoadFromFile(ResFileName);
  ImageList:=TImageList.CreateSize(SpriteW,SpriteH); // Создаем лист под спрайты
  ImageList.DrawingStyle :=dsNormal; // Устанавливаем параметры
  ImageList.Masked := False;
  ImageList.Add(Resource,Resource);
  ....
end;

И изменения в TFlur.Draw :

1
2
3
4
5
6
7
8
9
....
for J:=SourceRect.Top to SourceRect.Top+SourceRect.Bottom do
begin
  TableIndex:=(Table.Items[Width*J+I]);
  ImageList.Draw(DestCanvas,dx+X,dy+Y,TableIndex^);
  Inc(dy,32);
end;
Inc(dx,32);
....

При компиляции использовал компонент THeadedTimer ( инсталируйте его из директории THeadedTimer, как установить компоненты Вы надеюсь знаете ). Этот компонент аналог стандартного TTimer, но использованы потоки – высокая скорость работы. И последнее – если вы будете совместно использовать Flur и спрайты то копируйте все в БУФЕР. Т.е. карту в буфер, спрайты и курсор в буфер, буфер на экран. Тут исходник.

Если есть у кого ссылки на ресурсы с графикой от игр ( лучше стратегий и RPG ) или вообще текстуры, но текстуры к ИГРАМ, а не web ( формат BMP, DIB, PSD) то прошу присылать ссылки. Кто напишет что что-нибудь дельное используя эти методы обязательно размещу. Если ВЫ знаете другие методы построения карт в играх прошу присылать идеи.

Страницы : 1 2 3 4 5