Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

Хочу написать игру лоде-рунер(с редактором карт)на движке DelphiX   Найти похожие ветки 

 
Jus   (2004-09-21 06:10) [0]

Я вот хочу написать игру лоде-рунер (с редактором карт) на движке 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 сделать, например
DXSpriteEngine2,  и не выводить в таймер DXSpriteEngine2.Draw, а вывести при создании формы после создания всех объектов которые нужно вывести 1 раз?или так неполучится?:(

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

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


 
Jus   (2004-09-21 06:14) [1]

"Отображаться"(DXSpriteEngine.Draw;) должны в таймере все объекты постоянно, на сколько я знаю, но как сделать чтоб и объекты были все и FPS в норме?(


 
NikeOLD ©   (2004-09-21 07:22) [2]

А методы спрайта DoMove ты перегрузил? И не забудь про inherited.

Кстати, когда соберешся продавать свое творение не забудь про авторские отчисления владельцам зарегистрированной марки Lode-Runner, если патент уже не закончился. :) Это будет дорого.


 
Jus   (2004-09-21 07:41) [3]


> Кстати, когда соберешся продавать свое творение не забудь
> про авторские отчисления владельцам зарегистрированной марки
> Lode-Runner, если патент уже не закончился. :) Это будет
> дорого.
:)
Я назову Lode-Runer по другому


 
Jus   (2004-09-21 07:44) [4]


> А методы спрайта DoMove ты перегрузил? И не забудь про inherited.

что значит перегрузка в методах DoMove? там ничего особенного.
про inherited не забыл


 
Jus   (2004-09-21 08:02) [5]

Щас проверил. На экране 400 объектов. FPS=1;

На моей машине
Pentium4C/2600, 512Ram, geForce4 128mb.


 
cyborg ©   (2004-09-21 08:25) [6]

Тыт надо хитро делать, два варианта:
Обновлять только те места, где картинка изменялась, либо создать одну большую поверхность, куда нарисовать уровень, и при изменении какого-то участка, перерисовать только этот участок. А на экран выводить эту большую поверхность. В танчиках я так сделал, работает быстро, как вы убедились в той ветке. Если прямо перерисовывать всю карту, будет слишком медленно, в танчиках это 900 клеток земли нужно было бы рисовать каждый кадр, плюс ещё лес сверху.


 
OSG   (2004-09-21 08:27) [7]

А ты используй не DelphiX, а PowerDraw3 (http://turbo.gamedev.net) или Omega (http://www.delphisanctuary.com). Они получше будут


 
Jus   (2004-09-21 08:56) [8]


> OSG   (21.09.04 08:27) [7]
> А ты используй не DelphiX, а PowerDraw3 (http://turbo.gamedev.net)
> или Omega (http://www.delphisanctuary.com). Они получше
> будут

PowerDraw3 я скачал давно, но не могу инфу достать по ней.


 
Jus   (2004-09-21 09:10) [9]


> Обновлять только те места, где картинка изменялась,

1)т.е. как? экран же полностью обновляется по таймеру!? Было б конечно хорошо если б знать как!:)


> либо создать одну большую поверхность, куда нарисовать уровень,
> и при изменении какого-то участка, перерисовать только этот
> участок. А на экран выводить эту большую поверхность.


Ведь дело в том, что не в самих изображениях спрайтов дело, а в объектах. Когда их много, то начинает "тормозить". Ведь если не выводить объекты "по отдельности"(а иначе никак), то как ИГРОК будет взаимодействовать с ними. Если я чёто не понял, объясните по подробнее.


 
Jus   (2004-09-21 09:11) [10]

Ах да, я наверное не прав на счёт последего, ну тогда и на счёт "большой поверности..." если можно по подробнее...


 
Jus   (2004-09-21 09:21) [11]


> Обновлять только те места, где картинка изменялась,

А где надо прописывать те места которые надо обновлять и вообще чё тогда в тимере написать?


 
Jus   (2004-09-21 09:26) [12]

Примерно представляю, но помогите кодом где все спрайты рисуются в один большой?

> В танчиках я так сделал, работает быстро, как вы убедились
> в той ветке. Если прямо перерисовывать всю карту, будет
> слишком медленно, в танчиках это 900 клеток земли нужно
> было бы рисовать каждый кадр, плюс ещё лес сверху.

кстати, я твои танчики не увидел, страница не может открытся.(Ошика 404). Но я еще раз попробую, там есть исходники?


 
cyborg ©   (2004-09-21 09:27) [13]

Моё мнение такое (может же у меня быть своё мнение :), никакие таймеры в игре не нужны, это раз. Два - дельфикс можно использовать только для просмотра примеров, ну не удобен он, не понравился мне, я даже честно два раза примеры смотрел :).
Я тебе говорил, попробуй мою библиотеку, гораздо легче и удобнее Дельфикса ;). За основу можешь взять пример "Мухи", в игровой сцене очисти код, и пиши свой. Можно даже меня спрашивать, чего там непонятно будет ;).
И главное, начни сначала с простого, за написание игры сразу не берись. Для начала можно сделать просто вывод карты на экран.


 
cyborg ©   (2004-09-21 09:28) [14]

Танчики я уже убрал.


 
Jus   (2004-09-21 09:40) [15]

никакие таймеры в игре не нужны, это раз

А как будет делатся анимация, через фор чтоли)?


> И главное, начни сначала с простого, за написание игры сразу
> не берись. Для начала можно сделать просто вывод карты на
> экран.

Я попробую разобраться в твоём движке, но досадно DelphiX забросить.

Игра то по идее в голове готова, но единственная проблема, которую я в этой ветке расписал. В игре я всё продумал, чё да как, и анимацию прикольную и объекты интересные( всего 42 различных объекта) продумал весь код до мелочи, но произошла загвозтка такая в этом.

Cyborg:
Еслиб ты мне помог в...

> > Обновлять только те места, где картинка изменялась,
>
> 1)т.е. как? экран же полностью обновляется по таймеру!?
> Было б конечно хорошо если б знать как!:)

я был бы рад, а потом бы может быть перешёл бы на твой движок и не возвращался бы к делфиХ, ведь цель так близка, неохота перестраиватся перед "финешем", помогите!

Благодарю)


 
Jus   (2004-09-21 09:43) [16]


> Танчики я уже убрал.

Жаль

Можешь положить?+ исходники (чисто для обучающего примера) или на мыло,плиз!


 
cyborg ©   (2004-09-21 09:56) [17]

Исходников танчиков не будет ;).
Сейчас могу только скриншот показать
http://www.cyborghome.ru/images/screenshot/Thanchiki2/Thanchiki2.jpg
Рисунок 175 килобайт


 
Jus   (2004-09-21 09:56) [18]

щас скачаю на дискету твои длл и экземпли и возьму на работу, там поразбираться будет думаю время, сегодня с 20:00 на работу. Часовой пояс у меня как в Екатерибкрге +5:00. А сейчас спать:)


 
NikeOLD ©   (2004-09-21 09:58) [19]


> Jus   (21.09.04 07:41) [3]

Дело не в названии, а в идее. Запатентовано было и название и идея. :(


 
Jus   (2004-09-21 10:03) [20]

NikeOLD ©   (21.09.04 09:58) [19]

А это будет какбудто моя идея, похожая, а про Лоде-Рунер я не знал. и назову её "..."!(пока ещё не придумал. Блин, как назвать!

Игры нету, а название уже придумываю:))


 
Jus   (2004-09-22 07:54) [21]

Вот скажите мне пожалуйсто, правильно ли я вообще делаю?:

Type
 Tenemy=class(...
   procedure DoMove(...
   procedure DoCollision(...
 public
   Constructor Create(...
 end;

var
 enemy:array[0..10] of TEnemy;
 
...

Constructor TEnemy.Create(...
begin
Inherited Create;
Image:=...
x:=..
....
end;

В Form1.OnCreate пишу создание enemy
(А можно ли создавать сдесь TEnemy? т.е. разницы нету(на скорость ФПС)? Я в одном примере увидел что объекты создаются в Form1.OnShow/!?/
var i:integer;
begin
Randomize;
For i:=0 to 10 do begin
enemy:=Tenemy.create(...);
enemy.x:=random(800);
enemy.y:=random(600);
end;
end;


В Dxtimer.onTimer всё нормально как и во всех примерах

В Form1.OnClose
For i:=0 to 10 do begin
enemy.free;
end;


Процедуры  procedure DoMove(... и  procedure DoCollision(... описывать не стану... незачем.

Если я правилно делаю, то почему же FPS падает, причём значительно? Если нет то где ошибка?


 
Jus   (2004-09-22 07:58) [22]


> For i:=0 to 10 do begin
> enemy.free;
> end;

enemy[i].free;
извеняюсь,писал прям тут


 
Jus   (2004-09-22 08:42) [23]

Вот ещё такой вопрос всплыл по ходу. Где ФПС будет выше, если создать один и тот же Тобъект 5 раз, или создать 10 разных Тобъектов?(или без разницы)?


 
Nox ©   (2004-09-22 11:26) [24]

Не знаю, что это за игра, но как я понял, это, что-то типа аркады.
Когда я делал свою аркадку, я воспользовался таким "детским" методом:

1. В редакторе какрт создать уровень со всеми обьектами. Сохранить этот уровень как несколько массивов. Массивы 2-х мерные, х и у - координаты поля, а информация string - это какой обьект расположен в данном месте.( obj[x,y]:="stul").

2.После запуска карты, все обьекты прорисовываешь один раз, а потом по мере надобности изменяешь их местоположение и содержание по их личной бирке.

В таймере у тебя будут все механизмы перемещения обьектов, и что бы воспользоваться одним из способов перемещения какого либо обьекта ты должен будешь выполнить условия: что бы твои Х и У были равны х и у. После их выполнения идет задача параметров, типа - куда переместить, или что сделать...
Пример. если пуля летит в монстра, и когда ее Х и У(от * до *) равны х и у монстра,  в таймере, так как выполнены были условия совпадения, проверяют, что это за мостр, и что он должен делать...
Я сам занимаюсь D. еще мало и может чего не понял в вопросе... но попытаться помочь - стоило...


 
breakmaster ©   (2004-09-22 21:32) [25]

[20]
назови ее "НЕ ЛодРанер"


 
Darthman ©   (2004-09-22 23:31) [26]

Что касается PowerDraw, то мой тебе совет использовать последнюю версию powerdraw 2 Deluxe. Она будет стабильнее и дх только 7-й требует.


 
Omar2002   (2004-09-22 23:53) [27]

х3 Ну блин че за косяки. Я в своей гаме вывожу на экран примерно 1000 спрайтов, только немного не так
а вот так:
dxImageList1.Items[61].DrawRotateAlpha(DXDraw1.Surface,trunc(30*(XX-YY)+scx*60),trunc(15*(XX+YY)+scy*30),60,75,0,0 ,0,0,150+trunc(sqr(Anim1-18)/3))


 
Omar2002   (2004-09-23 00:00) [28]

так у мя рисутся максимум один спрайт за раз, а остальные выводятся так:

dximagelist2.Items[22].Draw(Dxdraw1.Surface,X,Y,0)

И при этом при всем еще рисуются всякие примитивы(прямоугольники). FPS вобще не страдает - 56-59
Конфиг компа:
Athlon 800 512SDRAM GeForce FX 5200 - не так уж и модно на сегодняшний день. С другой видяхой - RivaTNT 2 Pro 16 Mb - у мя было в среднем 30 FPS.

Да кстати - спрайты все 60х75 Могу кинуть для показа дему, если надо.


 
Omar2002   (2004-09-23 00:03) [29]

Извиняюсь - ща пересчитал - примерно 700 спрайтов


 
Jus   (2004-09-23 06:08) [30]


> Nox ©   (22.09.04 11:26) [24]


> Я сам занимаюсь D. еще мало и может чего не понял в вопросе...
> но попытаться помочь - стоило...

Я примерно так же и делаю.
Но всё равно спасибо!)


 
Jus   (2004-09-23 06:10) [31]


> Omar2002   (23.09.04 00:00) [28]


> Да кстати - спрайты все 60х75 Могу кинуть для показа дему,
> если надо.

Да, если не трудно исходник.


 
Jus   (2004-09-23 06:13) [32]


> breakmaster ©   (22.09.04 21:32) [25]
> [20]
> назови ее "НЕ ЛодРанер"

Хорошая идея!!!) так и сделаю!


 
Jus   (2004-09-23 09:11) [33]

УРА!!! FPS=70 на экране 400 объектов!!!!(в смысле спрайтов)
Непонимаю, почему раньше так небыло, делал также, но не совсем.
Есть у меня пример программы (скачивал как-то), где при нажатии на Ctrl создаётся корабль в нижней части на всю ширину экрана, а при нажатии Enter создавались бомбы ТБомб которые падали с верху в низ и при колизион уничтожались(Всё при DXTimer.Interval:=0 >[ФПС=32 и меньше]).
И вот, я ползовался этим же Unit1.pas толко всё лишнее постирал из него и сделал как "заготовка" и писал в нем код. А щас создал всё по новой, и всё окей! Хотя тот код в "заготовке" ничем не отличается от моего!?:)


 
Jus   (2004-09-23 09:12) [34]

Ура!!! теперь могу смело делать игру "Не ЛодеРунер" дальше!)


 
Jus   (2004-09-24 23:19) [35]

Ждите к на следующей неделе новую супер игру (скорее демо)"Не лоде рунер", так она и будет называтся! Сделано пока 25%. На "игрока" скажем, уделил свыше 50 разных спрайтов(на всякие там лесинки, ходьбу, приседание, удары и т.д), графику рисовал в паинте, хотел в кореле, но получилось лучше некуда. Уже все основные объекты готовы. Игра расчитывается на двоих, и в отличии от "лоде рунера" будет более интересней и играбельней. В игре будут "сюрпризы" - не скажу, ато будет не страшно:), Будет по задумке JetPac(кто незнает - реактивный ранец), а может нет, ещё не решил, но в демке точно небудет, и много интересного. Плюс редактор карт. Кнопок для игрока около 10 ито 6 основных.


 
Jus   (2004-09-24 23:22) [36]

Вот незнаю как мне лучше сделать? Карту на одном экране, чтоб было видно всё или больше екрана, если больше то для двоих игроков надо буде экран делить (это помоему усложнит мою задачу!).


 
cyborg ©   (2004-09-25 10:39) [37]

Посмотрим ;). Карту на одном экране делай, чтобы всё видно было, что, где и куда бежит.

Куда там 10 кнопок? Отсилы 6 нужно.


 
cyborg ©   (2004-09-25 10:44) [38]

Кстати, разрешение экрана 1024х768 лучше сделай, чтобы много помещалось и красиво было.


 
Jus   (2004-09-25 12:00) [39]


> Куда там 10 кнопок? Отсилы 6 нужно.

Кнопки:
основные:
1) влево
2) вправо
3) вниз
4) вверх
5) пробел - (прыжок(если в прыжке ещё раз пробел, то jetpack));
6) Ctrl - удар кувалдой по кирпичам (в направлении куда смотрит. Если рядом со стеной, то рушит стену, если рядом нет стены а на "земле" кирпич то пробивает землю.
Дополнительные:)
//ну кувалда, не кувалда, смотря какое оружие, предмет выбереш. Если шотган, то стрелять будет. Если телепорт - телепортируется.
7)8) Z,X по умолчанию удар кувалдой влево вправо.
9)10) [,] - менять оружие;
11) Tab - по умолчанию teleport (Есть порт из которого появляется игрок в начале, и когда погибает, туда он телепортируется тоже(тратится 1 батарейка);
12) F12 - самоуничтожение;

Может ещё забыл чё. Ну как тут 6 кнопками обойтись?

Зы: как сделать, чтоб можно было игроку расположение кнопок менять в меню? Например присвоить Button1 не пробел, а например Q?


 
Jus   (2004-09-25 12:01) [40]

Небольшая техническая проблема произошла! Вырубили свет на секунду какраз тогда, когда я нажал сохранить всё, Unit1.pas уцелел, а вот *.dpr пострадал. Придётся восстанавливать, а в DXImaeList загружать все картинки и переименовывать каждую как было, на это уйдёт не больше часа, а может быть получаса, это не проблема, но всё равно не приятно!:(


 
Jus   (2004-09-25 12:18) [41]


> cyborg ©   (25.09.04 10:44) [38]
> Кстати, разрешение экрана 1024х768 лучше сделай, чтобы много
> помещалось и красиво было.

Так то красивее будет, но игок чоторого я прорисовывал до каждого пикселя на этом разрешении будет маленький на 15"мониторе (у меня например 15"ЖК монитор), и не разглядеть мою старательную прорисовку объектов 32х32. Я год учился в художественной школе давно, потом бросил:) // это я так к слову)

Ну наверное так и будет - 1024х768.


 
Servelat ©   (2004-09-25 12:30) [42]

2 Jus [40]
Если тока .dpr пострадал, то нафига какие-то имейдж листы перегружать и т.п.? Если .dfm файл цел, то все картинки с именами уже там. Содержимое .dpr файла угадать очень легко, зная, что ты пишешь юзая DelphiX, там все по умолчанию. Так что в случае утери только .dpr файла все восстанавливается максимум за 3 минуты.

Давай пиши, интересно поглядеть, что выйдет. Успеха!


 
cyborg ©   (2004-09-25 15:10) [43]


> [40] Jus   (25.09.04 12:01)

Это всё тебе знаки свыше, бросай ты этот DelphiX!
А ты всё никак не поймёшь.
;)


 
Jus   (2004-09-25 16:33) [44]


> Это всё тебе знаки свыше, бросай ты этот DelphiX!
> А ты всё никак не поймёшь.

Всё равно его не брошу - потому что он хороший!:)


> Servelat ©   (25.09.04 12:30) [42]
> Если тока .dpr пострадал, то нафига какие-то имейдж листы
> перегружать и т.п.?

Уже всё восстановлено.

> Давай пиши, интересно поглядеть, что выйдет. Успеха!

Спасибо!)


 
Jus   (2004-09-28 16:09) [45]

У меня в "Не лоде рунере"(не в редакторе:)) по массиву карту заполняли случайные объекты, ну чтобы мне для наглядности смотреть объекты. Сейчас почти закончил редактор карт(ошибок нету)!, остались мелочи( меню, новая карта, открыть карту, сохранить карту как...). Теперь сделаю карту и буду тестить плэера и объекты на взаимодействия "с окружающей средой".
Два дня потратил на отрисовку объектов (32х32) как надо, и их анимацию, потом незнаю где мне накачать звуков для игры :( , у меня их в наличии с дюжину:
ходьба 1 плаера"топ-топ1";
ходьба 2 плаера"топ-топ2";
по лестнице1, по лестнице2;
ходьба паука-мины,
взрыв,
удар кувалдой по кирпичу,
падает1,
падает2,
умер1,
умер2,
турель,
пресс,
подобрал жизнь+...
а надо ещё шотган, телепорт и т.д.
, где достать?(
...и чтоб много не весили?)
/////////////////////////////////////////////////////////
P.S.
Кстати сделано из 60 задуманных объектов нарисовано 45 шт. "и из 88 возможных(т.к. редактор и его панель редактирования расчитана на 88 объектов)"  
Всего картинок (объектов с анимацией + те которые не для редактирования, такие как взрыв и прочее) получилось 219шт. У одного только плеера 45шт, ито надо около 60 или чуть больше . Кто нибудь хочет помочь дорисовать остальные объекты? :)


 
Jus   (2004-09-28 22:03) [46]


> Jus   (24.09.04 23:19) [35]
> Ждите к на следующей неделе новую супер игру (скорее демо)"Не
> лоде рунер", так она и будет называтся!

Извеняюсь за поспешные выводы. Дату выхода переношу на 15.10.04 примерно, т.к. по стечению обстоятельств я завтра уеду на неделю в Самару по делам, вернусь обратно 05.10.04!
:(


 
Servelat ©   (2004-09-29 07:49) [47]


> Извеняюсь

извИняйся через букву "И" плиз ;).


 
МЯУ   (2004-09-29 11:36) [48]


> Jus   (28.09.04 16:09) [45]


а зачем кувалдой по кирпичу бить?
я в "лоде рунер" не играл, можно кратко изложить суть игры.

зы: рисовать помог бы, но, блин, не умею :) сам мучаюсь.


 
Jus   (2004-09-29 13:15) [49]


> Jus   (28.09.04 22:03) [46]
>
> > Jus   (24.09.04 23:19) [35]
> > Ждите к на следующей неделе новую супер игру (скорее демо)"Не
>
> > лоде рунер", так она и будет называтся!
>
> Извеняюсь за поспешные выводы. Дату выхода переношу на 15.10.04
> примерно, т.к. по стечению обстоятельств я завтра уеду на
> неделю в Самару по делам, вернусь обратно 05.10.04!
> :(

Поездка отменяется, блин, начальник не отпускает, хотел на машине туда и обратно, но придётся на самолёте на выходных (так быстрее). О блин, жизнь! Только уже не мне лететь, а другу.

> МЯУ   (29.09.04 11:36) [48]
>
> > Jus   (28.09.04 16:09) [45]
>
>
> а зачем кувалдой по кирпичу бить?
> я в "лоде рунер" не играл, можно кратко изложить суть игры.
>
> зы: рисовать помог бы, но, блин, не умею :) сам мучаюсь.


Ну, чтоб разбить кирпич:)
Объекты все у меня 32х32 как я уже писал, есть кирпичи, они могут быть как стенами, так и полом и потолком. К примеру тебя окружают со всех сторон монстры... быстро выбираеш кувалду, пробиваеш кирпичный пол, и сматываешся. Ну можно пристрелить их если ружьё и патроны есть:)


 
Jus   (2004-09-29 13:17) [50]

Кстати могу уже показать скриншот:)


 
cyborg ©   (2004-09-29 13:25) [51]

покажи.


 
cyborg ©   (2004-09-29 13:26) [52]

Покажи.


 
Jus   (2004-09-29 13:55) [53]

Уже второй раз пытаюсь отправить сообщение и в результате получаю:
Internal Server Error :(


> cyborg ©   (29.09.04 13:26) [52]
> Покажи.

Я не умею:)

Может я тебе скину на мыло, а ты его от моего имени в этой ветке опубликуеш?:) согласен?


 
cyborg ©   (2004-09-29 14:55) [54]

присылай


 
Servelat ©   (2004-09-29 17:31) [55]

Ну и где обещанный скрин?


 
Jus   (2004-09-29 19:59) [56]

Была ошибка сервера, не мог в интернет залезть!(
Тока щас соединился нормально, ато "Невозможно отобразить страницу"(


> cyborg ©   (29.09.04 14:55) [54]
> присылай

Щас прям отправлю на cyborg@hotbox.ru, ок!


 
Jus   (2004-09-29 20:10) [57]

Уже отправлено!


 
Jus   (2004-09-29 22:31) [58]

Подскажите как мне лучше сохранить карту?
ScrMap:array[1..32,1..20] of string;
MapFile:TextFile;
Var MapFx,MapFy:integer;


Я делаю к примеру так(Решил в текстовом файле сохранить)

if IsButton3 in Form1.DXInput.States then begin // кнопкой F12
AssignFile(MapFile,"Map0.nlr");
Rewrite(MapFile);
For MapFy:=1 to 20 do begin
For MapFx:=1 to 32 do begin
WriteLn(MapFile,ScrMap[MapFx,MapFy]);
end;
end;
CloseFile(MapFile);
end;


После чего Project1 не отвечает, и ничего не сохраняет.
(Это если нажать через делфи, а если просто запустить *.ехе из папки то нормально, и сохроняется всё)?!


 
Servelat ©   (2004-09-29 23:06) [59]


> После чего Project1 не отвечает, и ничего не сохраняет.

Ты чего, вчера родился что ли? Ставишь брейкпоинт куда-нибудь на AssignFile(...), и дальше F8. Отладка - великая вещь.

> Подскажите как мне лучше сохранить карту?

> Решил в текстовом файле сохранить

Чего-то я не помню ни одной нормальной игры, которая бы свои карты в текстовых файлах построчно хранила. Во-первых - не удобно (IMHO это способ "через жопу"), во-вторых много места. Я бы предложил сделать так:
const
 C_NONE = 0; //пустая клетка
 C_GROUND = 1; //земля
 C_BLOCK = 2;  //кирпич
 //и так далее
...
var
ScrMap:array[0..31,0..19] of byte;
//почему byte? так как вряд ли у тебя больше 256 типов земли будет;
//если все же будет - поставь word вместо байта
MapFile: file of byte;
i,j: integer;
...
begin
 AssignFile(MapFile,"Map0.nlr");
 Rewrite(MapFile);
 for i:=0 to 31 do
   for j:=0 to 19 do
     write(f, SrcMap[i,j]);
 CloseFile(MapFile);
end;


i и j вместо твоих переменных я юзал для краткости. Кстати, в каком порядке сохранять значения в файл я большой разницы не вижу, поэтому у меня внешний цикл до 31, а внутренний до 19. Ну и массив я объявил с 0, как настоящий программист :) . На самом деле, так удобнее, но не принципиально.
В этом случае размер файла карты становится намного меньше (по 1 байту на каждую ячейку, у тебя было явно больше).
Но, видимо, строки хранящиеся в массиве служили как имена картинок для отображения карты? Это тоже не проблема:

const
 Names: array [0..9] of string=("none", "ground", "block", ...)


Тут предполагается, что у тебя 10 типов тайлов, причем первый (который в массиве хранится как C_NONE) занесен в ImageList под именем "none", второй  под именем "ground" и т.д. Тогда отрисовка ячейки с координатами (x,y) будет такой:

DXImageList.Find(Names[SrcMap[x,y]]).Draw(//куды тебе надо...);

Разумеется, все вышесказанное всего лишь совет, не является обязательным к исполнению и единственно правильным решением.

ЗЫ Где скринщрт? :)


 
Jus   (2004-09-29 23:15) [60]


> ЗЫ Где скринщрт? :)

Я его отправил КИБОРГУ на Емайл, а он наверое спит:-) ну хош, тебе тоже отправлю?:)


 
Jus   (2004-09-29 23:23) [61]


> Чего-то я не помню ни одной нормальной игры, которая бы
> свои карты в текстовых файлах построчно хранила. Во-первых
> - не удобно (IMHO это способ "через жопу"), во-вторых много
> места. Я бы предложил сделать так:

я тоже не помню, ну по другому умею только через базы данных, но это лишняя волокита, давно не занимался с бд.


> begin
>  AssignFile(MapFile,"Map0.nlr");
>  Rewrite(MapFile);
>  for i:=0 to 31 do
>    for j:=0 to 19 do
>      write(f, SrcMap[i,j]);
>  CloseFile(MapFile);
> end;


А ОН КАК РАЗЛОЖИТ В ФАЙЛЕ, ПО ОДНОМУ СТОЛБУ КАК У МЕНЯ? И ВАЩЕ, ЧЕРЕЗ ТХТ ЕГО ПРОЧИТАТЬ ПОТОМ МОНЖНО?

А КАК ЗАГРУЖАТЬ? ТАКЖЕ?

 AssignFile(MapFile,"Map0.nlr");
 Reset(MapFile);
 for i:=0 to 31 do
   for j:=0 to 19 do
     read(f, SrcMap[i,j]);
 CloseFile(MapFile);
end;


 
Jus   (2004-09-29 23:25) [62]


> ЗЫ Где скринщрт? :)

на какой адрес скинуть?)


 
Jus   (2004-09-30 00:00) [63]


> Тут предполагается, что у тебя 10 типов тайлов, причем первый
> (который в массиве хранится как C_NONE) занесен в ImageList
> под именем "none", второй  под именем "ground" и т.д.


Почти, тока "none" в ImageList не занесён, и в массиве(String) у меня было: ""- пропускает(0 нету), дальше идёт с 1,2,3 ... ну так пошло, что изначально у меня массив string, а не integer и не byte к тому же, буду исправлять как ты посоветовал в [59] !
Спасибо за помощь!


 
Jus   (2004-09-30 00:38) [64]


> А ОН КАК РАЗЛОЖИТ В ФАЙЛЕ, ПО ОДНОМУ СТОЛБУ КАК У МЕНЯ?
> И ВАЩЕ, ЧЕРЕЗ ТХТ ЕГО ПРОЧИТАТЬ ПОТОМ МОНЖНО?
>
> А КАК ЗАГРУЖАТЬ? ТАКЖЕ?

щас прочитал, и понял что глупость сморозил:) (write/writeln)


 
ASoft   (2004-09-30 03:43) [65]

> потом незнаю где мне накачать звуков для игры [45]
Накачай из Half-Life или Контеров пока, для демки сойдет.


 
Servelat ©   (2004-09-30 07:59) [66]


> А ОН КАК РАЗЛОЖИТ В ФАЙЛЕ, ПО ОДНОМУ СТОЛБУ КАК У МЕНЯ?
> И ВАЩЕ, ЧЕРЕЗ ТХТ ЕГО ПРОЧИТАТЬ ПОТОМ МОНЖНО?

Нет, он будет писать по байтам. Такого понятия как столбец в файле нету, Блокнот просто интерпретирует символ #13 (Enter) как переход на новую строку. Соответственно, Блокнотом открыв этот файл ты ничего интересного не увидишь, там же не символы записаны "1", "2", "0", а байты (Например ячейку с кодовым номером 13 (C_BIGBLOCK=13) блокнот примет за команду перехода на новую строку). Если очень захочется посмотреть, что же там внутри файла, то открой его hex-редактором. Но если будет редактор карт, то вручную поправлять ничего не придется.
Загружать действительно так, как ты написал в [61].

> на какой адрес скинуть?)

А ты много моих адресов знаешь? :) Кидай на тот, что у меня тут прописан, просто по моему имени в любом посте щелкаешь :) .


 
Omar2002   (2004-09-30 09:43) [67]

Мне тоже скриншотик бы не помешало посмотреть. Omar2002@front.ru


 
NikeOLD ©   (2004-09-30 09:59) [68]

Mister Jus, have you ever read any books about Delphi?
There are many possibilities to save your map, e.g. file stream.

Buy or surf internet to look for a good Delphi book.

Send a screenshot please.


 
Jus   (2004-09-30 10:31) [69]

Только что отправил всем, кто просил. Кто его может разместить теперь в и-нете(на этой ветке ссылку)?|:(


 
cyborg ©   (2004-09-30 10:53) [70]

Снимки тут ftp://cyborghome.ru/ScreenShots/
Я ожидал увидеть хуже ;)


 
cyborg ©   (2004-09-30 11:01) [71]

Расскажу вкратце как сделать чтобы быстро работало ;)
Делаешь процедуру рисующую одну ячейку карты, например:

Procedure ShowMapXY(X,Y : Lonhint);
begin
 //тут рисуешь на большую поверхность одну клетку по координатам XY
 //Смотришь в массиве карты, что у тебя за ячейка такая и рисуешь
 //соответственный спрайт в соответствующем месте
end;

Далее, при инициализации сцены рисуешь всю карту вызывая вышеуказаную процедуру.

Затем, в процессе игры при изменении какой-то клетки, меняешь в массиве карты тип клетки и вызываешь вышеуказанную процедуру.

А в процессе игры отображаешь только одну большую поверхность карты, затем сверху неё выводи движущиеся объекты - человечки, пули, эффекты и пр.


 
Jus   (2004-09-30 12:06) [72]

но у меня разве медленно? там на screene  видно(написано):
FPS 16
DXTimer.interval:=50
а если интервал сделать 0, то фпс будет 70.(ну это на моей машине).


 
Jus   (2004-09-30 12:09) [73]


> Я ожидал увидеть хуже ;)

почему?:)


 
Jus   (2004-09-30 12:13) [74]

Хочу добавить, там все объекты(почти) анимированные, всё крутится, вертится, шевелится, короче как положено!:)


 
Jus   (2004-09-30 15:26) [75]


> Servelat ©   (29.09.04 23:06) [59]

Всё сделал как ты посоветовал, карта сохраняется в byte и загружается, долго ковырялся с загрузкой, но сделал, работает как часы:
Удаляет объекты по массиву;
Стирает массив;
Загружает из файла новый массив;
Строит объекты по массиву.


Теперь можно наконец заняться игровой частью:)

Зы: уходил из дома на час, пришёл, решил позвонить по телефону и ... понял, что забыл отключиться от интернета:)))

Кстати, как скриншоты? все посмотели и молчат...(


 
Servelat ©   (2004-09-30 16:09) [76]


> Кстати, как скриншоты? все посмотели и молчат...(

Все ждут .exe :) . По скриншотам можно тока графику оценить; IMHO графика для такого типа игры очень даже ничего, особенно если еще и анимировано многое из этого. Но графика (для этой конференции) не главное, вот на играбельность посмотрим, тогда и будут похвалы/разносы.

> Удаляет объекты по массиву;

Неплохо было бы сделать как описал cyborg, то есть без объектов. Ну сам посуди, нафига они тебе (в карте)? Я так понимаю, каждая ячейка карты у тебя TImageSprite. Но ведь можно при загрузке карты всю отрисовать на отдельный TDXImageItem, и потом его копировать на экран. Но это опять же к сведению, все-таки лучшее - враг хорошего :) .

> FPS 16

По идее,FPS должен быть больше 25.

> а если интервал сделать 0, то фпс будет 70.(ну это на моей
> машине).

А какая у тя машина? Дело в том, что раз эта игра - не 3D шутер с кучей эффектов, то хотелось бы, чтобы она и на первых пнях шла с FPS>25.


 
NikeOLD ©   (2004-09-30 17:02) [77]


> Зы: уходил из дома на час, пришёл, решил позвонить по телефону
> и ... понял, что забыл отключиться от интернета:)))

Надо дисконнект устанавливать по таймауту бездействия.


 
NikeOLD ©   (2004-09-30 17:05) [78]

Графику я хуже ожидал, но ты же вроде в артшколе учился?
Посмотрим на демку, тогда и оценим.


 
Jus   (2004-09-30 19:31) [79]


> Все ждут .exe :)

есть уже доделанный EditorMap.exe:)
> Неплохо было бы сделать как описал cyborg, то есть без объектов.
> Ну сам посуди, нафига они тебе (в карте)? Я так понимаю,
> каждая ячейка карты у тебя TImageSprite. Но ведь можно при
> загрузке карты всю отрисовать на отдельный TDXImageItem,
> и потом его копировать на экран. Но это опять же к сведению,
> все-таки лучшее - враг хорошего :) .

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


> А какая у тя машина? Дело в том, что раз эта игра - не 3D
> шутер с кучей эффектов, то хотелось бы, чтобы она и на первых
> пнях шла с FPS>25.


Машина P-IVC/2600, 512Ram, GeForce4 128MB(пилот, колонки, коврик для мыши:))


> Jus   (21.09.04 08:02) [5]
> На моей машине
> Pentium4C/2600, 512Ram, geForce4 128mb.

Я писал.:)

> Дело в том, что раз эта игра - не 3D шутер с кучей эффектов,
> то хотелось бы, чтобы она и на первых пнях шла с FPS>25.

Она итак будет>25.


 
Servelat ©   (2004-09-30 20:35) [80]


> Она итак будет>25.

Откуда такая уверенность? Ты же не мог тестировать игру на слабых машинах (так как сама игра еще не готова :) ). И почему FPS - она :) ?


 
Omar2002   (2004-09-30 21:09) [81]

to [80]

Конечно это не совсем правильно, но если переводить дословно - Кадров в Секунду. Он тоже про FPS не скажешь :) Если только сказать  - ОНО - колличество кадров в секунду, но в контексте "Оно - FPS" - не звучит. Я сам в разговорном употребляю ФПСка, т.е. в принципе можно сказать ОНА. :) Вот такие пироги. Да и вобще на этот счет я думаю нет особого правила.

Что касается скринов - нормально, делай дальше, единственное - на одном изскринов есть ярко зеленый фон - глаза режет. Не советую его использовать, сильно напрягает.


 
МЯУ   (2004-09-30 21:31) [82]

FPS - это, всё же, ОНИ. Кадры в секунду.

насчет ярко-зеленого фона согласен с Omar2002. Точнее, зеленый фон не нежелателен как таковой, просто с ним осторожнее надо. Вот например с кирпичами красными не вяжется совершенно.


 
Jus   (2004-09-30 21:35) [83]


> Что касается скринов - нормально, делай дальше, единственное
> - на одном изскринов есть ярко зеленый фон - глаза режет.
> Не советую его использовать, сильно напрягает.

ну это на скрине, а в редакторе глазам приятно, он ещё плавно двигается вверх/право:) Ну на скрине - да, самому неприятно, какойто ядовито-зелёный цвет!:)


 
Jus   (2004-09-30 21:38) [84]

Ещё к тому-же *.jpg потеря качества.

> Вот например с кирпичами красными не вяжется совершенно.

Этот фон только в редакторе.
...
Ну ладно, уговорили, сделаю синий!


 
Jus   (2004-10-01 02:10) [85]

Целый час парился, не мог сделать нормальную загрузку массива карты ScrMap:array[0..31,0..19] of byte;
Смотрел в редакторе карт через отладку, как загружается массив(карта). Ну вобщем сначала я сделал в карте по самому верху одни кирпичи т.е. ((1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),(0,0,0... - первая строчка такая выходит, правильно! А смотрел через игру там воще ((1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0...)понял, что не фига не понял, всё вроде правильно делал?! на экране вообще чёрт ногу сломит:( Ковырялся, решил!- пока не найду причину, спать не лягу, ... наконец-то увидел, в редакторе массив был word, а сдесь byte. Короче устал, но сделал:) всё работает ок:) завтра буду продолжать.


 
Jus   (2004-10-01 02:17) [86]


> Она итак будет>25.

Скорее лучше сказать
Их итак будет>25:)


 
Jus   (2004-10-01 11:00) [87]

Помогите, как мне сделать? Вот есть у меня игрок, он появляется в начале игры над "кирпичами" в воздухе и как делать дальше в DoMove и DoCollision?! Я начал вроде, что у плеера по умолчанию стоит свойство Falling:=True; при Player1.DoCollision пишу
If (Sprite is Tkirp) {кирпич} and (Player1.Falling=True) then Falling:=False; А как потом игрок поймёт, что надо опять падать?

Если можно, приведити пример со столкновением с кирпичём (ЛЕВО ПРАВО ВЕРХ ВНИЗ), учитывая то, что есть ещё гравитация. Плиз!


 
имя   (2004-10-03 22:23) [88]

Удалено модератором


 
Jus   (2004-10-07 16:21) [89]

Кто желает посмотреть, что поучается? Бегает где надо и как надо, лазиет по лестницам, падает и т.д.:) Кому дать посмотреть?...
Заодно посмотрите графику в динамике, а не на скринах!:)
архив Rar 240Кб.


 
cyborg ©   (2004-10-07 16:44) [90]

Присылай ;)


 
NikeOLD ©   (2004-10-07 16:53) [91]

Наконец-то дождались. Шли на мыло nikio@mail.nnov.ru


 
Servelat ©   (2004-10-07 17:01) [92]

Мне тоже, и побольше :) .
А выложить куда-нибудь, не судьба, что ли?


 
Jus   (2004-10-07 17:21) [93]

Шоб было мне проще, скину Киборгу, а он выложит сюда). А я пойду на работу в ночную смену.


 
cyborg ©   (2004-10-07 18:25) [94]

Не получил я ничего.


 
Jus   (2004-10-08 05:26) [95]

Извените:) Вчера неуспел отправить, опаздывал на работу. Щас уже отправил.


 
Jus   (2004-10-08 05:29) [96]


>
> Servelat ©   (07.10.04 17:01) [92]
> Мне тоже, и побольше :) .
> А выложить куда-нибудь, не судьба, что ли?

Не умею, если не трудно научи:)


 
Jus   (2004-10-08 06:15) [97]

Отправил Servelaty  на servelat@nc.ru
        Cyborgy    на cyborg@hotbox.ru
        NikeOLDу   на nikio@mail.nnov.ru
        Falcony тоже отправил.


 
Jus   (2004-10-08 09:19) [98]

...ну как?:)


 
cyborg ©   (2004-10-08 10:02) [99]

Тут выложил:
ftp://cyborghome.ru/Temp/

Вполне ничего, только анимация слишком быстрая, и по огню почему-то ходит :).

Если будешь дальше развивать игру, могу выделить место под сайт на своём сервере ;).


 
NikeOLD ©   (2004-10-08 10:22) [100]

FPS 16... маловато будет
Смотрится симпатично. Не хватает фона. Если ты и в правду сможешь довести ее до логического конца со всеми задумками, что там должны быть, то можешь смело продавать по US$15.95
Принип LodeRunner никуда не делся, но много интересных фич. Мне лично идея ворот понравилась.
С прыжками не знаю, как ты будешь выкручиваться. Может и не нужны они, а вот падение с большой высоты можно будет обработать.

Лично мне понравилось. Удачи.

Для тех, кто никогда не видел оригинальный Lode Runner:
http://www.worldofspectrum.org/
На этом же сайте надобно будет скачать эмулятор ZX Spectrum. Я пользуюсь фриварным Gleck005. Файлы лучше скачивать где имеются слова "tap" - они грузятся мгновенно, в противном случае - ждать придется, как при загрузке с магнитофона. Кому стало интересно, но не знает, что делать с эмулятором:
1. Открываем файл с игрой (через меню или драг&дроп)
2. Жмем кнопку "j" если не запустилось само
3. Жмем ПРАВЫЙ Shift и две ставим кавычки
4. Жмем Enter и наслаждаемся

P.S. Сам когда-то хотел нечто подобное написать, но идею не отдам. Там тоже из оригинального LodeRunner"a только часть идеи, да пара графических фич.


 
NikeOLD ©   (2004-10-08 10:27) [101]

У меня скорость нормальная, вполне играбельная, не летает.
Celeron 2ГГц/ 512 МБ/ видео Intel 82865 64МБ / Win2000

Если у Cyborg"a так, значит ты сделал привяку к FPS и результат на всех машинах будет разным, т.е. зависящем от скорости машины.


 
cyborg ©   (2004-10-08 10:33) [102]


> [101] NikeOLD ©   (08.10.04 10:27)

Я говорю, что анимация слишком быстрая, а не скорость игры, у меня тоже 16 кадров идёт.


 
NikeOLD ©   (2004-10-08 11:49) [103]

Терпимо (я вот и не заметил, разве что "фигня" там крутится слишком быстро).


 
UncoNNecteD   (2004-10-08 12:17) [104]

Нормально ;)
Не теряй энтузиазизма.


 
Jus   (2004-10-08 16:36) [105]

Спасибо, учту ваши замечания и предложения, буду доделывать:)


 
Weevil   (2004-10-08 22:51) [106]

До конца так все и не дочитал: сил не хватило :)
Похоже, что остановился на самом интересном месте.
Совет такой (если, конечно никто еще не посоветовал): сделай выбор для разрешения экрана. Что б и 800*600, и 1024*768, так будет лучше!


 
Jus   (2004-10-09 05:37) [107]


> Weevil   (08.10.04 22:51) [106]
> До конца так все и не дочитал: сил не хватило :)
> Похоже, что остановился на самом интересном месте.
> Совет такой (если, конечно никто еще не посоветовал): сделай
> выбор для разрешения экрана. Что б и 800*600, и 1024*768,
> так будет лучше!

Вот надо то было раньше говорить, я уже сделал карту 32/20 объектов по 32х32(т.е. карта уже 1024х640+128(дисплей игрока)), и если делать под 800х600, то надо будет думаю много переделывать, чтоб карта двигалась(т.к. неумещается на экране на 800х600), и потом если на двоих играть, то придётся делить экран на 2 части, а это ещё одни мороки). Сначало я игру доделаю, а потом в будущем посмотрим:)


 
Jus   (2004-10-09 05:38) [108]


> Weevil   (08.10.04 22:51) [106]

А у тебя монитор не поддерживает 1024х768, чтоли?


 
Falcon(TFsoft) ©   (2004-10-09 13:28) [109]

У меня поддерживает, но не является оптимальным, так что сделай kenit выбор или хоть файлу настроек


 
Поручик   (2004-10-09 15:31) [110]

Зато у меня не поддерживает ):


 
Jus   (2004-10-09 17:13) [111]

Блин, чё делать!(


 
Поручик   (2004-10-09 17:28) [112]

Делать 800x600, это не так уж и плохо


 
Servelat ©   (2004-10-09 18:50) [113]


> Блин, чё делать!(

Делай как делал. Вначале сделай чтобы работало, потом будешь красоту наводить, выбор разрешения, хотсит со сплитскрином, etc.

Поглядел демку, в принципе не плохо.

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

Пиши, октябрь идет, а ты еще не слишком продвинулся.


 
Поручик   (2004-10-09 19:14) [114]

бегать равномерно еще можно, но вот равномерно падает - не красиво
Он в оригинале так и падал и руками махал как ненормальный


 
NikeOLD ©   (2004-10-09 19:19) [115]


> Поручик   (09.10.04 19:14) [114]

Вот вот смотрите оригинал :)


 
Jus   (2004-10-10 06:10) [116]


> Servelat ©   (09.10.04 18:50) [113]
>
>
> Делай как делал. Вначале сделай чтобы работало, потом будешь
> красоту наводить, выбор разрешения, хотсит со сплитскрином,
> etc.
> ...
>
> Пиши, октябрь идет, а ты еще не слишком продвинулся.

Да я то продвинулся б, дальше, но не высыпаюсь, времени мало да работа ещё 25 часов в сутки. Я вот в конце октября собираюсь идти в отпуск на 70 дней с последующим увольнением, квартиру продаю в этом городе, в Самару переезжаю жить, там работу хорошую нашёл, короче дел дофига, мало времени, да там ещё прописки всякие, доверенности, бумаги, короче хочу делать игру, но мозги не варят, т.к. устаю очень! ЕЩЁ СЕССИЯ ЧЕРЕЗ НЕДЕЛЮ!:(
А игру доделаю полюбому, т.к. чё, зря рисовал, старался(много рисовал):)!


 
Jus   (2004-10-10 07:32) [117]


> выбор разрешения, хотсит со сплитскрином, etc.

Это как это понимать?

> Посоветовал бы подумать над равноускоренным падением (бегать
> равномерно еще можно, но вот равномерно падает - не красиво).

потом будет падать с ускорением, сначало надо основные вещи доделать.
>  И еще, пускай лучше профилем к игроку стоит, а то постоянно
> лицом поворачиваеся. И падает тоже лицом к нам, да еще руками
> машет, под птичку закосить хочет :) , пускай уж лучше боком
> падает.

Под птичку косит и при этом возникает сопротивление воздуху, и аэродинамика уже не та, и поэтому падает равномерно:), потом сделаю. А почему ты думаешь что боком падать лучше, и провелем стоять, а не фейсом? Впринципе сделать делов никаких, но всё же?)


 
Jus   (2004-10-10 07:38) [118]


> NikeOLD ©   (08.10.04 11:49) [103]
> Терпимо (я вот и не заметил, разве что "фигня" там крутится
> слишком быстро).

Эту фигню я назвал мясорубкой, и она так и должна крутиться, видиш что она ещё дёргается, это я её слабо прикрутил, скоро вот вот отватится:))


> Вполне ничего, только анимация слишком быстрая, и по огню
> почему-то ходит :).

Уже не ходит. Уже научился умирать, и появляться в портале, научился лазить по трубам и лазить по тросу, учится разбивать кирпичи уже:)


 
Jus   (2004-10-10 08:08) [119]

Кстати, хочу вам сказать, трубы характерны тем, что никакая тварь не посмеет туда сунуться кроме игроков:) И ещё нужны трубы для перехода с одной стороны экрана на другую, т.е. залез в трубу которая ведёт в левую часть экрана, а вылез с правой сторны(из трубы), ведь так будет веселее играть:)


 
NikeOLD ©   (2004-10-10 11:02) [120]

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


 
Jus   (2004-10-10 16:33) [121]


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

Непонял?)


 
Falcon(TFsoft) ©   (2004-10-10 22:21) [122]

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

Но если всё же вернутся к варианту 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


 
ASoft   (2004-10-11 04:04) [123]

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


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

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

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

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

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

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

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

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

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

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

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


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


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

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


 
NikeOLD ©   (2004-10-11 11:10) [126]


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

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


 
NikeOLD ©   (2004-10-11 11:16) [127]


> ASoft   (11.10.04 04:04) [123]

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

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


 
ASoft   (2004-10-11 11:53) [128]

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


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

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


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

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


 
NikeOLD ©   (2004-10-11 14:14) [131]


> Zeeqfred   (11.10.04 12:41) [130]

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


 
cyborg ©   (2004-10-11 14:44) [132]


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

Осень.


 
Jus   (2004-10-12 06:06) [133]


> Zeeqfred   (11.10.04 12:41) [130]

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


 
Jus   (2004-10-12 06:12) [134]

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


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

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


 
NikeOLD ©   (2004-10-12 09:30) [136]

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

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

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


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

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


 
ASoft   (2004-10-12 12:03) [138]

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


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

Вчера интернет-карточка кончилась, сёдня купил новую, в кредит не могу, т.к. за телефон уже всё оплатил и 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]
> Играю сейчас - прикольно!!! Так держать!!! Графику улучшай
> и будет рулез!!!

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



Страницы: 1 2 3 4 вся ветка

Форум: "Игры";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.88 MB
Время: 0.035 c
1-1104762803
GanibalLector
2005-01-03 17:33
2005.01.23
ИМЯ файла...


10-1082046038
white dove
2004-04-15 20:20
2005.01.23
подключение клиента на Delphi к AutoCAD


3-1103195036
IBChaynik
2004-12-16 14:03
2005.01.23
Refresh


1-1105394964
Kick
2005-01-11 01:09
2005.01.23
У фрейма нет события OnCreate, как же мне инициализировать переме


1-1105615962
Ega23
2005-01-13 14:32
2005.01.23
В чём может быть дело???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский