{{notification.text}}

MirGames

22.07.09 18:52
0
Привет. Я тут подумал и решил. Можно написать чтото наподобие DirectX только не для работы с графикой. Библиотека должна будет содержать различные процедуры, как например расчет пути с преодоленим препядствий(поиск кротчайшего пути), и в тому подобное. В общем я думаю от такой библиотеки будет польза - честно говоря надоело писать бессмысленные игры в которые никто не играет) Ну собственно жду ваших советов, если кто хочет помоч то буду рад)
#1
22.07.09 19:33
0
И еще. Если у когото есть какието алгоритмы - например поиск кротчайшего пути реализованный да Delphi то буду очень признателен если вы выложите - я адаптирую и запокую в dll чтобы все смогли пользоваться)
#2
22.07.09 20:58
0
А кроме поиска пути есть еще какие-нибудь идеи?? А ты уверен, что затем желающий сможет легко прикрутить твой модуль к своему проекту, чтобы ничего у себя не перелопачивать?
#3
22.07.09 21:41
0
Цитата(Nikita @ 22.07.2009 - 16:58) [snapback]96451[/snapback]

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

Ну во первых под Delphi я сам напишу модуль для ДДЛ-ки, а во вторых даже если и не напишу - волновой алгоритм к примеру глянь сколько занимает места. Собственно чтобы ты не прикручивал к совему проекту все придется переломапивать) Будь то DirectX ODE DirectG и ваще все что угодно. Но если уж пользователь на столько ленивый что не может подключить уже написанный модуль для использования готовых процедур, то ему даже нечего начинать ниче делать - всеравно лень) Даже кнопку лень кинуть. :D

Кстати идеи-то еще есть. Я только никогда не писал поиск пути и поэтому у мя тут трудности есть нектоторые


P.S. uses DirectG трудно прописать чтоли? Весь проект надо прям перелопачивать?


Кстати ребят кто писал волновой алгоритм помогите - немогу никак реализовать) На всех сайтах либо куча лишнего написанно, типо проверка канвы еще всякой хни, либо написан норм алгоритм, но без объявления переменный и я немогу определить какая переменная каким является типом)
Отредактировано: 22.07.09 21:43
#4
22.07.09 22:54
0
battlemakc Nikita тебе не случайно сказал что трудно будет прикруить, вся проблема кроется что в человека до этого своё представление о карте пок которой проходит поиск пути, а у тебя другое вот и проблема(у него один формат рекрда у тебя другой, переконвертирование это либо потеря памяти либо времени).....как правило в хороших классах карты поиск пути уже встроен...
в сторону поиска пути копни DanJetX там встроенный был(это ыоткрытый двиг).
Ну а для волн 2д: синус и косинус + колнстанта зависящая от масштаба и от того затухает волна или нет, можно дабовить резонанс. а 3д: тоже самое только надо раассмотреть множество плоскостей, в каждой из который случай два д, но здесь не всё так просто, здесь много просчётов(мучтаю что появится MPU(MathPU) аля GPU)начиная от плоскостей и заканчивая вычислением синуса и косинуса
#5
22.07.09 23:16
0
Цитата(lans @ 22.07.2009 - 18:54) [snapback]96454[/snapback]

battlemakc Nikita тебе не случайно сказал что трудно будет прикруить, вся проблема кроется что в человека до этого своё представление о карте пок которой проходит поиск пути, а у тебя другое вот и проблема(у него один формат рекрда у тебя другой, переконвертирование это либо потеря памяти либо времени).....как правило в хороших классах карты поиск пути уже встроен...
в сторону поиска пути копни DanJetX там встроенный был(это ыоткрытый двиг).
Ну а для волн 2д: синус и косинус + колнстанта зависящая от масштаба и от того затухает волна или нет, можно дабовить резонанс. а 3д: тоже самое только надо раассмотреть множество плоскостей, в каждой из который случай два д, но здесь не всё так просто, здесь много просчётов(мучтаю что появится MPU(MathPU) аля GPU)начиная от плоскостей и заканчивая вычислением синуса и косинуса

library DirectF;

uses
SysUtils,Classes,Types;
{$R *.res}
type
TCell = packed record
Locked: Boolean;
Step: Integer;
Parent: TPoint;
end;
TDPArray = array of TPoint;// Тип динамический массив точек.
TCells = array of array of TCell;

var
Way: TDPArray;

function FindTravel_1(StartX, StartY, FinishX, FinishY: Integer;
Cells: TCells):TDPArray;stdcall;
var
Angle, X, Y, I, J, Step: Integer;
Added: Boolean;
Point: TPoint;
begin
SetLength(Way, 0); // Обнуляем массив с путем
For I := 0 to High(Cells) do
for J := 0 to High(Cells[I]) do
Cells[I][J].Step := -1; // Мы еще нигде не были
Cells[FinishX][FinishY].Step := 0; // До финиша ноль шагов - от него будем разбегаться
Step := 0; // Изначально мы сделали ноль шагов
Added := True; // Для входа в цикл
While Added And (Cells[StartX][StartY].Step = -1) do begin
// Пока вершины добаляются и мы не дошли до старта
Added := False; // Пока что ничего не добавили
Inc(Step); // Увеличиваем число шагов
For I := 0 to High(Cells) do
For J := 0 to High(Cells[I]) do // Пробегаем по всей карте
If Cells[I][J].Step = Step - 1 then begin
// Если (I, J) была добавлена на предыдущем шаге
For Angle := 0 to 3 do begin
// Пробегаем по всем четырем сторонам света
X := I + Round(Cos(Angle/2*pi)); // Вычисляем коор-
Y := J + Round(Sin(Angle/2*pi)); // динаты соседа
If (X < 0) Or (Y < 0) Or (X > High(Cells)) Or (Y > High(Cells[0])) then
Continue; // Если вышли за пределы поля, (X, Y) не обрабатываем
If Cells[X][Y].Locked Or (Cells[X][Y].Step <> -1) then
Continue; // Если (X, Y) уже добавлено или непроходимо, то не обрабатываем
Cells[X][Y].Step := Step; // Добав-
Cells[X][Y].Parent.X := I; // ля-
Cells[X][Y].Parent.Y := J; // ем
Added := True; // Что-то добавили
end;
end;
end;
if Cells[StartX][StartY].Step = -1 then begin // Если до старта не дошли,
Exit;
end;
Point.X := StartX;
Point.Y := StartY;
While Cells[Point.X][Point.Y].Step <> 0 do begin // Пока не дойдем до финиша
SetLength(Way, Length(Way) + 1);
Way[High(Way)] := Point; // добавляем текущую вершину
Point := Cells[Point.X][Point.Y].Parent; // переходим к следующей
end;
SetLength(Way, Length(Way) + 1); // добавляем финиш
Way[High(Way)].X := FinishX;
Way[High(Way)].Y := FinishY;
Result := Way;
end;
Exports
FindTravel_1 index 1;
begin
end.

Это не трудно - надо просто проверить каждую ячейку своей карты и в соответствии с уже вашими представлениями о препядствии вынести вердикт. Проходимали эта ячейка илиже нет.
#6
22.07.09 23:36
0
Цитата(battlemakc @ Сегодня, 19:16)
[snapback]96455[/snapback]
TCell = packed record
Locked: Boolean;
Step: Integer;
Parent: TPoint;
end;

это у тебя а у юзера
Цитата

TCell = record
Obj: TClassObj;{nil if havent object}
end;

и чтобы сделать так же как у тебя надо будет ручками поработать....я тебя не отговариваю от написания, просто там должнобыть нечто боле нужное чем, нечто такое что заёмёт у другого программиста "титанические усилия", так что советую тебе сначала всё придумать....
#7
22.07.09 23:45
0

Не ну ты писал стратежки? У тебя была матрица? Допустим не писал. В том то весь смысл что карта в принцепи - это матрица, а раз у тебя есть матрица значит она нужна обычно для препядствий))) А еси есть препядствия то делаешь новую переменную-матрицу(ну в общем того типа что нада для моей процедуры) и заполняешь ее true/false а далее просто вызываешь функцию рассчета и она выдает массив, который содержит координаты путя(путя наверное прально) в данной матрице и усе)

Но я понял что ты хотел сказать) Именно по этой причине написали DirectX 1 - скорость - 2 кросплатформенность и оддин из нескольких золотых стандартов графики)
#8
Limited Edition
22.07.09 23:48
0
Battlemakc
ну ка ну ка перечисли все платформы поддерживающие directx
#9
23.07.09 00:25
0
Цитата(battlemakc @ Сегодня, 21:45)
[snapback]96457[/snapback]
Именно по этой причине написали DirectX 1 - скорость - 2 кросплатформенность и оддин из нескольких золотых стандартов графики)

На самом деле только по причине №1. И DX - это системный API. Это несколько другое, чем библиотека вроде той, которую ты хочешь написать (а то что хочешь написать ты ближе к понятию "игровой движок").
Цитата(RzCoDer @ Сегодня, 21:48)
[snapback]96458[/snapback]
ну ка ну ка перечисли все платформы поддерживающие directx

Не, ну их и правда две, если не считать версий )

[offtop]А в целом основной профит с темы - лулзы[/offtop]
#10
23.07.09 01:03
0
Ребят мне не интересно сколько потдержует платформ DirectX я прошу советов в написании моего проекта. Если у кого есть какиенить крутые процедуры или функции которые были кадато написаны я буду благодарен если вы их выложите с комментариями) Вот например: когдато я писал пакмена и ломал голову над тем как сделать чтобы враги не поворачивали назад, ну только если нету другого выхода. Эту функцию я занесу в свою библиотеку. Ну народ меня понял думаю)

P.S. Кстати ребят у меня одного такая проблема - бывает написал сообщение нажимаю отправить и эксплорер думает.... думает. Это не тот случай када сообщение раз в 30 сек отправлять надо - чтото другое. Странно ;)
Отредактировано: 23.07.09 01:07
#11
23.07.09 01:32
0
Battlemakc ой помнюв эксплорреле такая же **йня была.....
не понимаешь тогда всётаки эффективность твой либрари падает....сравни что быстрее работает когда ненадо менять формат ненадо ничего конвертировать или надо, убытки скорости и памяти, другое дело если ты хочшеь написать директГ(что значит "г"???) то надо както более мастшатбно.....ну это моё мнение....сугубо индивидуальное наверно)такие вещи как ты назвал из своего пакамена и состовляют игру, ты что хочешь чтобы программисты исчезли с лица земли(благодаря таким заготовкам) =-(=-(=-(

Vga да вроде 2.....виндосовская и какойто консоли....

#12
23.07.09 02:31
0
Battlemakc
Лучше возьми какое-нибудь узкое направление и реализуй его хорошо. Все на свете написать не сможешь, а набор функций, делающих что-то поверхностно, думаю, никому не нужен.
#13
23.07.09 02:45
0
Цитата(visual @ 22.07.2009 - 22:31) [snapback]96464[/snapback]

Battlemakc
Лучше возьми какое-нибудь узкое направление и реализуй его хорошо. Все на свете написать не сможешь, а набор функций, делающих что-то поверхностно, думаю, никому не нужен.

Ну тут не набор буит - тут буит сборник процедур и функций наиболее часто использующихся в игроделание. Чтобы вы посоветовали)!? :blush:

Цитата(lans @ 22.07.2009 - 21:32) [snapback]96463[/snapback]

Battlemakc ой помнюв эксплорреле такая же **йня была.....
не понимаешь тогда всётаки эффективность твой либрари падает....сравни что быстрее работает когда ненадо менять формат ненадо ничего конвертировать или надо, убытки скорости и памяти, другое дело если ты хочшеь написать директГ(что значит "г"???) то надо както более мастшатбно.....ну это моё мнение....сугубо индивидуальное наверно)такие вещи как ты назвал из своего пакамена и состовляют игру, ты что хочешь чтобы программисты исчезли с лица земли(благодаря таким заготовкам) =-(=-(=-(

Vga да вроде 2.....виндосовская и какойто консоли....


Хочется написать) Немогу - хочется)




---------------
Я уже сделал поиск кротчайшего пути волновым МетоДоМ вродь) ДУмаю еще засунуть можно буит сортирование БЫстрым способом.
Отредактировано: 23.07.09 02:48
#14
23.07.09 03:03
0
Я стока умею но нифика немогу сделать :(


P.S. Вспомнил анекдот) " Ну и что что я проиграл со счетом 0 - 15, я ведь хорошо играл!" :D
Отредактировано: 23.07.09 03:06
#15
23.07.09 03:06
0
Цитата
Ребят мне не интересно сколько потдержует платформ DirectX

Зачем же тогда писать ахинею о кроссплаформенности? :)
#16
23.07.09 03:07
0
Цитата(Andru @ 22.07.2009 - 23:06) [snapback]96467[/snapback]

Зачем же тогда писать ахинею о кроссплаформенности? :)

Да, я чет напутал) Но возможно я имел в виду изыки программирования а не операционку) :)
#17
23.07.09 03:07
0
Цитата
Ну тут не набор буит - тут буит сборник процедур и функций наиболее часто использующихся в игроделание

Что набор, что сборник - один хрен, слова-то даже однокоренные :)

Цитата
Чтобы вы посоветовали)!? blush.gif

Напиши полноценную механику для RTS с возможностью прокачки персонажей, спец. оружием и автоматическим управлением юнитов.
#18
23.07.09 03:08
0
У меня была бредовая идея добавить в делфи то что есть в с++) Но если я вам об этом скажу меня совесть замучает совсем.

Цитата(visual @ 22.07.2009 - 23:07) [snapback]96469[/snapback]

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

Извини я не понял - поясни)

Я щас спать пойду скорее обнадежте меня)!

И это, я дллку потом выложу - она робит, ищет кротчайший путь, может есть такие же лентяи как и я которым буит писать в лом с чистого листа и они использкют то что я написал)
Отредактировано: 23.07.09 03:13
#19
23.07.09 03:14
0
Battlemakc
Ну, ты ведь знаешь что такое РТС?

dll для такой байды - еще одна веская причина юзерам не пользоваться твоими трудами :)
Отредактировано: 23.07.09 03:15
#20
23.07.09 03:15
0
Не совсем) Может знаю но непонял чтото названия.
Отредактировано: 23.07.09 03:15
#{{post.Index}}
{{post.Author.Login}}
{{post.CreatedDate | date:'dd.MM.yy HH:mm'}}
{{post.VotesRating}}
Отредактировано: {{post.UpdatedDate | date:'dd.MM.yy HH:mm'}}