> Мне вот интересно - как вы делаете уровни? Они же длиннющие. Всё сразу грузите или генерируте постоянно?
У меня прямо в коде это сделано
procedure Load;
begin
Game.Map.AddEntry(Tree(-128, 180-128)); // 0
Game.Map.AddEntry(HighTree(KP1+250-64, 270-128)); // KP1
Game.Map.AddEntry(Tree(KP1+100-64, 350-128)); // 1 левое
Game.Map.AddEntry(LowTree(KP2+90, 320-128)); // KP2
<...>
Game.Map.AddEntry(TEntrySave.Create(Game.Map, KP2+400, 40, 'saved01'));
Game.Map.AddEntry(TEntrySave.Create(Game.Map, KP3+1000-128, -128, 'saved01'));
Game.Map.AddEntry(TEntryJump2Pattern.Create(Game.Map, 'epic', Rect(Vec2f(KP3, -1000), Vec2f(KP3+300, 200)), 162));
Game.Map.AddEntry(TEntryRespawnRect.Create('respG', Vec2f(KP3+1500, -36),
Vec2f(-15, 0),
20, 1));
Game.Map.AddEntry(TEntryTag.Create(Game.Map, 'respGtag',
Rect(Vec2f(KP3+300, -400), Vec2f(KP3+600, 0)),
'respG'));
Game.Map.AddEntry(TEntryMusic.Create('DATA\music\boss0.xm',
Rect(Vec2f(KP3+1010, -1000),
Vec2f(10000, 1000))));
Game.Map.AddEntry(TEntryBossDoj.Create(Game.Map, 'boss',
Rect(Vec2f(KP3+1500, -500),
Vec2f(KP3+1500, -500))));
Game.Map.AddEntry(TEntryTag.Create(Game.Map, 'bosstag',
Rect(Vec2f(KP3+1010, -1000),
Vec2f(10000, 1000)),
'boss'));
Game.Map.AddBlock(Block1(KP2+300, 20, KP2+600, 520)); // 2 самый высокий
Game.Map.AddBlock(Block1(KP2+500, 220, KP2+550, 260)); // 2 зацеп
Game.Map.AddBlock(Block1(KP1+100, 270, KP1+400, 520)); // 1 на заднем
Game.Map.AddBlock(Block1(KP1+600, 270, KP1+900, 520)); // 1 дальний
AddWeapon(KP1+860, 270-10, TShotGun);
AddWeapon(KP3-30, 350, TShotGun);
AddWeapon(KP4-150, 320, TSimpleWeapon);
Game.Map.AddBlock(Block1(KP2+90, 320, KP2+380, 520)); // 2 самый левый
Game.Map.AddBlock(Lift (KP3, 280, KP3+4*64, 280+1.5*64, Vec2f(KP3, 40))); // 3 лифт
Game.Map.AddBlock(Block1(KP3-60, 370, KP3, 450)); // 3 лифтовый зацеп
Game.Map.AddBlock(Block1(0, 450, 10000, 520)); // земля
Game.Map.AddBlock(Block1(KP1, 350, KP1+200, 520)); // 1 левый
Game.Map.AddBlock(Block1(KP2+320, 400, KP2+640, 520));
Game.Map.AddBlock(Block1(-640, 180, 0, 520));
Game.Map.AddBlock(Block1(250, 400, 350, 460));
//Game.Map.AddBlock(Block1(KP3+300, -250, KP3+1000, -80));
Game.Map.AddBlock(Block1(KP3+300, 0, KP3+1000, 520));
Game.Map.AddBlock(Block1(KP4-300, 340, KP4, 550)); // 4 лифтовый зацеп
Game.Map.AddBlock(Block1(KP4+300, -300, KP4+600, 550)); // 4 стена
Game.Map.AddBlock(Lift (KP4, 280, KP4+4*64, 280+1.5*64, Vec2f(KP4, -140)));
Game.Map.AddEntry(TEntryTexture.Create(Game.Map, 'DATA\textures\Lab.bit', Rect(Vec2f(KP3+500, 20), Vec2f(KP3+500+256, 20+256)), bmAlpha, Vec4f(0.8, 0.4, 0.0, 1.0)));
end;
Итак, у меня почти готов первый уровень - осталось только доработать поведение босса. И я принимаюсь за второй. Звуки/музыка давно подобраны, OnOff вот-вот дорисует последние спрайты.
Скриншотов в этот раз не публикую - не хочу ломать интригу.
ДА, и еще: у меня без приседаний игру не пройти :D Т.е. это не тупо формальное действие, как я чувствую у многих, а важная геймплейная фишка.
редакция от Doj, 07.06.2009 03:18 |