Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Хочу написать игру лоде-рунер(с редактором карт)на движке DelphiX [Delphi, delphiX, Windows]


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

Jus ©   (2004-09-21 06:10:00) 

Я вот хочу написать игру лоде-рунер (с редактором карт) на движке DelphiX.
Разрешение 800х600

Там каждый спрайт 32х32.

Карта 800х512, т.е. максимальное кол-во спрайтов на карте 400шт.

Я в Form1.Create вывожу эти спрайты по массиву.
(пример без массива):

procedure TForm1.FormCreate(Sender: TObject);
begin
TLestnica.Create(SE.Engine); // лестница
...и т д
end;

и FPSпадает до 0:((

в DXTimere у меня

procedure TForm1.DXTimerTimer(Sender: TObject; LagCount: Integer);
begin
IF not DXDraw.CanDraw Then exit;
DXDraw.Surface.Fill(0);
DXSpriteEngine.Move(1000 div 60);
DXSpriteEngine.Dead;
DXSpriteEngine.Draw;
With DXDraw.Surface.Canvas Do
   Begin
     Brush.Style := bsClear;
     Font.Color := clWhite;
     Font.Size := 8;
     Textout(10, 10, 'FPS: ' + inttostr(DXTimer.FrameRate));
     Release;
   end;
DXDraw.Flip;
end;


1)Может для некоторых объектов которые нужно один раз вывести на экран отдельный DXSpriteEngine сделать, например
DXSpriteEngine 2,  и не выводить в таймер DXSpriteEngine 2.Draw, а вывести при создании формы после создания всех объектов которые нужно вывести 1 раз?или так неполучится?:(

2)Или как оно делается правильно, ведь кроме лестниц и других объектов будут ещё и всякие монстры, которых надо "отображать" в таймере и FPS упадёт снова?

3)Как повысить FPS?!


Jus   (2004-10-13 07:17:00) [1]

Вчера интернет-карточка кончилась, сёдня купил новую, в кредит не могу, т.к. за телефон уже всё оплатил и 8-ку отключил, т.к. съезжаю.
Писал вчера, но не успел отправить:

> ASoft   (12.10.04 07:31) [135]
> Тайловый или цельный, наверное.

Тайловый 64х64
> либо сюжетное оформление: темные стены, факелы, паутина
> в углах, какие-то надписи на стенах:)...

В типе игры по компании можно на моих картах, сюжетные спец.фоны цельные, точно! :)

> ASoft   (11.10.04 11:59) [129]
> >Незнаю как, писал в этой ветке в [39],никто мне не ответил.[124]
> Я как-то взялся делать менюху выбора управления для двух
> игроков, взял делфийИкский DXInput,попотрошил маленько,
> взял от модуля нужное, поковыряйся, мож получится

Ну до меню и настроек ещё не дошёл, т.к. это дело сейчас не столь важное, надо сначало сделать всё чтоб работало, а потом можно.
> Кстати в оригинальном Lode Runnere были фичи: добавить жизнь(и),
> перескочить уровень, рестарт уровня. Комбинации соответственно:
> Shift+M, Shift+L, Shift+R, Shift+A (Abort level)

А у меня не будет думаю, а зачем, ведь не интересно играть так.
> NikeOLD ©   (11.10.04 11:10) [126]
>
> > Jus   (10.10.04 16:33) [121]
> >
> > > NikeOLD ©   (10.10.04 11:02) [120]
> > > Наворотил!.... ;)
> >
> > Непонял?)
>
> Тут и понимать нечего: много отличий от оригинала (но мало
> нового в самом жанре). Если доведешь все до логического
> конца - молодец, если нет - поделись с народом графикой,
> чтоб не зря старания твои пропали. (Последнее не обязательно,
> но на твое усмотрение).

Ну конечно поделюсь если не буду доделовать, но я думаю что не поделюсь, потому что доделаю:)

>
> П7   (12.10.04 10:18) [137]
> Играю сейчас - прикольно!!! Так держать!!! Графику улучшай
> и будет рулез!!!

А что с графикой? где улучшить?)


ASoft   (2004-10-12 12:03:00) [2]

>Факелы можно сделать горящими ;)
Само-собой


П7   (2004-10-12 10:18:00) [3]

Играю сейчас - прикольно!!! Так держать!!! Графику улучшай и будет рулез!!!


NikeOLD   (2004-10-12 09:30:00) [4]

Соверщенно верно подвижный фон зачастую мешает и призван играть именно роль отвлекающего фактора в экшенах. Здесь же фон лучше всего тайловый неподвижный. Желательно не очень броский, т.е. темных тонов, чтобы не отвлекал внимание.
Фон, ASoft, все же необходим для хорошейигры. Игра без фона в настоящий момент не очень конкурентноспособна и смотрится, как поделка, а не как игра. Сюжетное оформление полностью поддерживаю, ибо фонв виде цветочков или морских волн будет крайне неуместен.
Кстати, у все того же незабвенного "Алавара" в упомянутом мной Gold Sprinter'e фон как раз соответсвующий.

Для таких игроков, как ASoft, можно предусмотреть отключение фона в настройках.

Факелы можно сделать горящими ;)


ASoft   (2004-10-12 07:31:00) [5]

Тайловый или цельный, наверное. Но если бы я делал, то фон оставил либо черный, либо сюжетное оформление: темные стены, факелы, паутина в углах, какие-то надписи на стенах:)...


Jus   (2004-10-12 06:12:00) [6]

Фон есть движущийся, только я его убрал{закоментировал}, т.к. он отвлекает.
фоны, типа:
черепки летят наверх, кресты вниз;
снежинки падают, за ними маленькие падают помедленнее;
...
Мешает фон. Какой надо?


Jus   (2004-10-12 06:06:00) [7]


> Zeeqfred   (11.10.04 12:41) [130]

Эээ ты, урод, ты кто такой? Встретить бы тебя и посмотреть кто кого шатать будет.


cyborg   (2004-10-11 14:44:00) [8]


>  [131] NikeOLD ©   (11.10.04 14:14)

Осень.


NikeOLD   (2004-10-11 14:14:00) [9]


> Zeeqfred   (11.10.04 12:41) [130]

Ты че хамишь? Форумом ошибся?


Zeeqfred   (2004-10-11 12:41:00) [10]

Суки Я вас всех шатал в рот!!!


ASoft   (2004-10-11 11:59:00) [11]

>Незнаю как, писал в этой ветке в [39],никто мне не ответил.[124]
Я как-то взялся делать менюху выбора управления для двух игроков, взял делфийИкский DXInput,попотрошил маленько, взял от модуля нужное, поковыряйся, мож получится


ASoft   (2004-10-11 11:53:00) [12]

>Фон же для таких игр стал стандартом де-факто с тех пор, когда >появились хорошие видюхи. Так что фон необходим (тайловый, >разумеется), даже несколько разновидностей.[127]
Кому как... Мне дык на черном нравится


NikeOLD   (2004-10-11 11:16:00) [13]


> ASoft   (11.10.04 04:04) [123]

Герой не мелкий. Для сравнения могу порекомендовать игру GoldSprinter на сайте Алавара. Это клон оригинального Lode Runner'a, причем не очень сильно отличающийся. Наш Jus задумал посильнее игру.
Фон же для таких игр стал стандартом де-факто с тех пор, когда появились хорошие видюхи. Так что фон необходим (тайловый, разумеется), даже несколько разновидностей.

Кстати в оригинальном Lode Runnere были фичи: добавить жизнь(и), перескочить уровень, рестарт уровня. Комбинации соответственно: Shift+M, Shift+L, Shift+R, Shift+A (Abort level)


NikeOLD   (2004-10-11 11:10:00) [14]


> Jus   (10.10.04 16:33) [121]
>
> > NikeOLD ©   (10.10.04 11:02) [120]
> > Наворотил!.... ;)
>
> Непонял?)

Тут и понимать нечего: много отличий от оригинала (но мало нового в самом жанре). Если доведешь все до логического конца - молодец, если нет - поделись с народом графикой, чтоб не зря старания твои пропали. (Последнее не обязательно, но на твое усмотрение).


Jus   (2004-10-11 06:49:00) [15]


>
> Falcon(TFsoft) ©   (10.10.04 22:21) [122]

Пусть будет всё пока на одной большой карте 1024х768, ведь это моя первая игра, и мне пока сложно такое сделать(камеру).


Jus   (2004-10-11 06:47:00) [16]

> ASoft   (11.10.04 04:04) [123]
> Jus, демка хороша, на Celeron 1,7 видео встренное (32) FPS-16.
> Фон, я думаю, не нужен. В свое время мне нравился дендевский
> Runer, а у тебя довольно похоже получается, даже лучше.

Приятно слышать.

> Ну уж очень мелк герой.

Так и задуманно.

> Дальше, наверное ты еще не доделал, но всякие там жизни,
> патроны и прочие бонусы, Ранер должен жрать автоматически,
> находя на них. А так молодец, продолжай в том же духе.

Ещё до жизней и потронов не добрался.

> Менюха-то будет?

Будет само мобой, выбор профиля, тип игры( Компания(по картам по сценарию для двоих и одного *собранные предметы переходят на следующий уровень,...*); Выбор карты(для двоих и одного); Захват флага/дедматч(мочить друг друга, и захватывать территорию или как лучьше собирать по флагу и тащить домой)).

> Как решил вопрос с управлением (настройкой) для 2-х игроков?
> С ув.ASoft

Незнаю как, писал в этой ветке в [39],никто мне не ответил.


ASoft   (2004-10-11 04:04:00) [17]

Jus, демка хороша, на Celeron 1,7 видео встренное (32) FPS-16. Фон, я думаю, не нужен. В свое время мне нравился дендевский Runer, а у тебя довольно похоже получается, даже лучше. Ну уж очень мелк герой. Дальше, наверное ты еще не доделал, но всякие там жизни, патроны и прочие бонусы, Ранер должен жрать автоматически, находя на них. А так молодец, продолжай в том же духе. Менюха-то будет? Как решил вопрос с управлением (настройкой) для 2-х игроков?
С ув.ASoft


Falcon(TFsoft)   (2004-10-10 22:21:00) [18]

Да, если делать мультиплеер типа хот-сиатс (тоесть несколько чел за одной клавиатурой) то конечно же выгоднее сделать всё на одном экране.

Но если всё же вернутся к варианту 800*600, и не менять размеры игрового поля, то я могу помочь с камерой (опишу ниже). В принцепе можно сделать и разделение экрана - путём создание нескольких DXView и соединение , тоесть согласование через сетевую игру, тоесь через компонент DXLan(или как он там называется).

Правдо это возьмёт на себя много человеко-часов :(

Ну а про камеру, опишу свой юнит, который реализован в той игре, которую я тебе присылал BubbleGum. Он позволяет реализовать плавное движение камеры за объектом.


unit TCamera_Unit;

interface
Uses
  SysUtils;

Type
 TCamera = class
   MoveDirX   : ShortInt;//переменные отвечающие за направление
   MoveDirY   : ShortInt;
   procedure DoMove;
   Constructor Create;
end;

implementation
{Это для получения глобальных переменых типа:
Map in Main_Unit and
Player in TPlayer_Unit  соответсвенно}
Uses
  Main_Unit, TPlayer_Unit;

//Обнуляем значение направлений
Constructor TCamera.Create;
begin
  Self.MoveDirX := 0;
  Self.MoveDirY := 0;
end;

// главная процедура движения камеры
procedure TCamera.DoMove;
var
  LBord, BBord   : Real;{ЛеваяГраница и ПраваяГраница карты}
  dx, dy         : Real;//перемещение
begin
 LBord := (LevelCols)*32;//кол-во колонок на ширину каждой
// у тебя будет LevelRows=32/LevelCols=20 соответсвенно
 BBord := (LevelRows)*32;
//минимальная скорость по умолчанию:
 dx := 32*1.5;
 dy := 32*1.5;
//pl.x , pl.y - координаты игрока
 with MFrm.DXEngine do
   begin
     if (Pl.X > Engine.Width/2) and (Pl.X + Engine.Width/2 < LBord) then  //Значит не вызываем ошибку выхода за экран
       begin
           if (abs(Pl.X + Engine.X-Engine.Width/2)> dx) and (MoveDirX<=1) then
//камере можно двигатся впарво за целью - за player
                 MoveDirX:=1;
           if (abs(Pl.X + Engine.X-Engine.Width/2)< 16) and (MoveDirX=1)then
//камере можно двигатся влево за целью - за player
              begin
                 MoveDirX:=0;
              end;
       end
     else
       begin//тут перечислены случаи, когда камере нельзя двигатся
           if (Engine.x>=0)  then
              MoveDirX:=0
           else
              if (Engine.x - Engine.Width< -LBord) then
                 MoveDirX:=0;
       end;

     if (Pl.Y > Engine.Height/2) and (Pl.Y + Engine.Height/2 < BBord) then
       begin
           MoveDirY := 1;

       end;
//собственно  само перемещение камеры, которой является Engine.X, Engine.У
    Case MoveDirX of
     1 : Engine.X := Engine.X - (Pl.X +Engine.X-Engine.Width/2)/dx;
     2 : Engine.X := Engine.X - dx;
    end;

    Case MoveDirY of
     1 : Engine.Y := Engine.Height/2 - (Pl.y-Engine.Y+Engine.Height/2)/2;
    end;

   end;
end;

end.


Код возможно не является идеальным, но всё же позволяет двигатся плавно за целью.

С ув. Falcon


Jus   (2004-10-10 16:33:00) [19]


> NikeOLD ©   (10.10.04 11:02) [120]
> Наворотил!.... ;)

Непонял?)


NikeOLD   (2004-10-10 11:02:00) [20]

Наворотил!.... ;)


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

Наверх

Титульная страница Поиск, карта сайта Написать письмо