Текущий архив: 2007.11.18;
Скачать: CL | DM;
Вниз
Проф. геймдев на Делфи Найти похожие ветки
← →
Ketmar © (2006-10-16 19:03) [120]>[118] Shirson(c) 16-Oct-2006, 18:46
>И по следующему кругу погнали...
не погнали. мне лениво. %-)
← →
XProger © (2006-10-16 19:25) [121]Алгоритм и технология - решают. Наносекунды никто не измеряет и "полупустые" циклы не крутит. Тот же код
for i:=1 to 99999 do
begin
inc(a);
for j:=1 to 99999 do
begin
inc(b);
end;
end;
пример совершенно бестактного алгоритма написанного явно не программистом (в лучшем смысле этого слова)
Настоящий программер пишет так:a := a + 99999;
b := b + 99999 * 99999;
И как можно догадаться, этот код работает в несколько десятков миллиардов раз быстрее.
Прекращайте заниматься фигнёй, лучше докажите, что геймдев на Delphi является професcиональным... ;)
← →
Ketmar © (2006-10-16 19:31) [122]>[121] XProger(c) 16-Oct-2006, 19:25
>докажите, что геймдев на Delphi является професcиональным... ;)
элементарно. "профессиональное" -- это значит, что на этом зарабатывают деньги (сиречь, это профессия). вполне достаточно найти игру на Delphi, которую продали (такие есть, кажись). всё. доказано.
← →
XProger © (2006-10-16 19:35) [123]Ketmar, их не мало и я о них знаю. Я прошу здесь присутствующих доказать самим себе, что это реально - написав при этом коммерческую Delphi игру. Сам для себя я это уже доказал...
← →
Ketmar © (2006-10-16 19:39) [124]>[123] XProger(c) 16-Oct-2006, 19:35
>присутствующих доказать самим себе, что это реально
зачем? кому надо -- тот делает. не важно, на чём. а кто не хочет -- тот ищет причины не делать.
← →
@!!ex © (2006-10-16 19:39) [125]
> Наносекунды никто не измеряет
Я сталкивался с другим мнением...
Ибо на меня выпала честь сидеть и рефакторить код в проекте в погоне за теми самыми наносекундами.
Утрированно, конечно.
Но дело доходило до того, что надо было оптимизить блоки ради 3 мс.
> пример совершенно бестактного алгоритма написанного явно
> не программистом (в лучшем смысле этого слова)
Цель была не получить результат максимально быстрым и простым способом, а показать разницу между компиляторами. :))
> XProger © (16.10.06 19:35) [121]
У Дельфи в геймдеве место есть.
Но С++ и Шарп он в ближайшем обозримом будущем не убьет.
> XProger © (16.10.06 19:35) [123]
Видели. Уважаем.
← →
KA_ © (2006-11-02 22:29) [126]Не надо слушать тех, кто говорит, что Delphi - это плохо и у него нет будущего.
В разработке игр и программировании вообще главное не знание языка.
Т.е. знание языка конечно необходимо, но имея некоторый опыт в одном или двух языках, новые осваиваешь как семечки лузгаешь.
Принципы все равно везде заложены одинаковые (ой только не надо мне говорить про Пролог и функциональное програмирование).
Я считаю, что надо исходить из твоих знаний на итекущий момент и из твоих целей.
Если у тебя нет опыта програмирования, и ты хочешь научиться, то тебе все равно какой язык изучать, но делфи по-проще будут чем C++ или Java.
Если опыт программирования есть и твоя цель сделать хорошую игру, то программируй на том языке, который лучше знаешь. Все равно львиная доля времени уйдетна освоение графических библиотек, работы со звуком и т.п. А эти вещи одинаковы во всех языках.
Если твоя цель приобрести опыт в игростроении и потом пойти работать в какой-нибудь Нивал, то учи сразу C++, т.к. этот язык доминирует в программировании вообще и программировании игр в частности.
← →
KA_ © (2006-11-02 22:37) [127]
> DR0N © (16.01.06 20:46) [68]
> NE_ParovozЕсть Delphi Script который применяется в ряде
> Quality Ashuarence системах, например Test Compete. Больше
> не встречал, для скриптов си конечно удобнее чисто его синтаксиси
> проще реализовать.
Вот те раз!
А я то думал что это все компиляторы C++ двухпроходные, а паскаля однопроходные.
Оказывается у С++ синтаксис проще реализовать :)))))))))
← →
Ketmar © (2006-11-02 23:01) [128]>[127] KA_(c) 2-Nov-2006, 22:37
>А я то думал что это все компиляторы C++ двухпроходные, а
>паскаля однопроходные.
ну и неверно ты думал.
← →
KA_ © (2006-11-02 23:23) [129]А что уже появился однопроходный копилятор С++?
← →
Ketmar © (2006-11-02 23:34) [130]>[129] KA_(c) 2-Nov-2006, 23:23
>А что уже появился однопроходный копилятор С++?
а в чём, собственно, проблема? %-)
кстати: что, Delphi/FPC, по-твоему, однопроходны? таки я тебя разочарую: ни разу.
← →
megabyte-ceercop © (2006-11-03 07:11) [131]Именно! Качество игры целиком зависит от количества проходов в компиляторе.
:)
← →
KA_ © (2006-11-03 11:47) [132]Нда. Порылся в интернете и убедился как глубоко я заблуждался :)
← →
Slavikkk © (2006-11-03 12:08) [133]Delphi 2006 - самый удобный компилятор, всегда показывает где ошибка и работает быстро. Пробовал MS c++ 2005 - неудобно и иза неудобство срок разработки может растянутся в разы. OpenGl - дас гуд, но запутался в расширениях, так что пока из всего перепробавонного остановился на Delphi 2006 + Directx9. Но это моё мнение. По скорости работы... Грузите по полной видеокарту шейдерами и оптимизируйте не только под интел, но и под AMD и будет счастье. Кто то скажет нет оддержки 64 бит, Borland обещал её в следующем году. Мультиплатформенность мало кому нужна. Для консолей свои SDK и там надо смотреть может хидеры есть возможность под делфю переписать.
Но одно но - В Российском геймдеве требуются програмисты только С++, но они получают меньше чем програмисты Б.Д. (в Москве)
← →
MeF Dei Corvi © (2006-11-03 13:03) [134]Пока Borland не сделает качественный компилятор, Delphi не получит сильного распространения в геймдеве. В 2006 компиляторе глюков куча, а скорость скомпилированных программ даже ниже скорости аналогичных программ, скомпилированных на Delphi5. Даже поддержка инлайна ИМХО не сильно спасает.
← →
Shirson © (2006-11-03 13:44) [135]До сих пор сижу на D6. Ляпота :)
← →
Ketmar © (2006-11-03 13:59) [136]>[134] MeF Dei Corvi(c) 3-Nov-2006, 13:03
>а скорость скомпилированных
>программ даже ниже скорости аналогичных программ,
>скомпилированных на Delphi5.
тестики?
← →
MeF Dei Corvi © (2006-11-03 17:07) [137]
> тестики?
были :) Судя по ним Delphi 5 самый быстрый, за ним D7. D2006 вроде даже медленнее C# был. Можно восстановить, если есть желание проверить.
← →
DeadMeat © (2006-11-04 12:36) [138]Есть.. Чисто из банального интереса.
← →
MeF Dei Corvi © (2006-11-04 16:10) [139]
> Есть.. Чисто из банального интереса.
Если есть желающие потестить, могу им предложить написать тесты ;)
← →
Ketmar © (2006-11-04 19:10) [140]>[139] MeF Dei Corvi(c) 4-Nov-2006, 16:10
>Если есть желающие потестить, могу им предложить написать
>тесты ;)
ты, однако, сам напиши. и выложи. а то трындеть -- это просто. а вот как до обоснований доходит -- сразу проблемы начинаются.
← →
MeF Dei Corvi © (2006-11-04 21:42) [141]
> ты, однако, сам напиши. и выложи. а то трындеть -- это просто.
> а вот как до обоснований доходит -- сразу проблемы начинаются.
Я для себя уже сделал выводы о производительности. Сказанное мною о качестве компиляторов, естественно ИМХО, как и вообще всё, что я говорю. Переубеждать окружающих не собираюсь. Кому надо, тот проверит.
← →
Ketmar © (2006-11-04 23:19) [142]слив защитан.
← →
MeF Dei Corvi © (2006-11-05 01:13) [143]
> слив защитан.
Взаимно. Лично мне лениво ставить D5 и D7, чтобы тестить.
← →
Ketmar © (2006-11-05 03:54) [144]>[143] MeF Dei Corvi(c) 5-Nov-2006, 01:13
>Лично мне лениво ставить D5 и D7, чтобы тестить.
скажи проще: "имел я в виду отвечать за свои слова". ага?
← →
MeF Dei Corvi © (2006-11-05 13:41) [145]
> скажи проще: "имел я в виду отвечать за свои слова". ага?
Написать тест, охватывающий всё довольно сложно. Так уж и быть поддамся на твою провокацию и потестю D2006 и D7.
Тест писать не стал. Взял первый попавшийся из гугля.program DelphiBenchV2;
{$APPTYPE CONSOLE}
uses
SysUtils,
classes,
Windows,
Math;
type
TBenchMarkDelphi = class
private
startTime: Integer;
stopTime: Integer;
elapsedTime: Integer;
function intArithmetic(const IntMax: Integer): Int64;
function doubleArithmetic(const doubleMin, doubleMax: Double): Int64;
function longArithmetic(const longMin, longMax: comp): Int64;
function trig(const trigMax: double): Int64;
function io(const ioMax: Integer): Int64;
procedure Run;
end;
function TBenchMarkDelphi.intArithmetic(const IntMax: Integer): Int64;
var
intResult: Integer;
i: Integer;
begin
startTime := GetTickCount;
intResult := 1;
i := 1;
while (i < intMax) do begin
inc(i);
dec(intResult, i);
inc(i);
inc(intResult, i);
inc(i);
intResult := intResult * i;
inc(i);
intResult := intResult div i;
end;
stopTime := GetTickCount;
elapsedTime := stopTime - startTime;
Writeln("Int arithmetic elapsed time: " + IntToStr(elapsedTime) +
" ms with max of " + IntToStr(intMax));
Writeln(" i: " + IntToStr(i));
Writeln(" intResult: " + IntToStr(intResult));
Result := Int64(elapsedTime);
end;
function TBenchMarkDelphi.doubleArithmetic(const doubleMin, doubleMax: Double): Int64;
var
doubleResult: double;
i: double;
begin
startTime := GetTickCount;
doubleResult := doubleMin;
i := doubleMin;
while (i < doubleMax) do begin
i := i + 1;
doubleResult := doubleResult - i;
i := i + 1;
doubleResult := doubleResult + i;
i := i + 1;
doubleResult := doubleResult * i;
i := i + 1;
doubleResult := doubleResult / i;
end;
stopTime := GetTickCount;
elapsedTime := stopTime - startTime;
Writeln("Double arithmetic elapsed time: " + IntToStr(elapsedTime) +
" ms with min of " + FloatToStr(doubleMin) + ", max of " + FloatToStr(doubleMax));
Writeln(" i: " + FloatToStr(i));
Writeln(" doubleResult: " + FloatToStr(doubleResult));
Result:=Int64(elapsedTime);end;
function TBenchMarkDelphi.longArithmetic(const longMin, longMax: comp): Int64;
var
longResult: comp;
i: comp;
begin
startTime := GetTickCount;
longResult := longMin;
i := longMin;
Set8087CW($133F);
while (i < longMax) do begin
i := i + 1;
longResult := longResult - i;
i := i + 1;
longResult := longResult + i;
i := i + 1;
longResult := longResult * i;
i := i + 1;
longResult := longResult / i;
end;
stopTime := GetTickCount;
elapsedTime := stopTime - startTime;
Writeln("Long arithmetic elapsed time: " + IntToStr(elapsedTime) +
" ms with min of " + FloatToStr(longMin) + ", max of " + FloatToStr(longMax));
Writeln(" i: " + FloatToStr(i));
Writeln(" longResult: " + FloatToStr(longResult));
Result := Int64(elapsedTime);
end;
function TBenchMarkDelphi.trig(const trigMax: double): Int64;
var
sine, cosine, tangent, logarithm, squareRoot, i: double;
begin
startTime := GetTickCount;
sine := 0;
cosine := 0;
tangent := 0;
logarithm := 0;
squareRoot := 0;
i := 0;
while (i < trigMax) do begin
i := i + 1;
sine := Sin(i);
cosine := Cos(i);
tangent := Tan(i);
logarithm := Log10(i);
squareRoot := Sqrt(i);
end;
stopTime := GetTickCount;
elapsedTime := stopTime - startTime;
Writeln("Trig elapsed time: " + IntTostr(elapsedTime) +
" ms with max of " + FloatToStr(trigMax));
Writeln(" i: " + FloatToStr(i));
Writeln(" sine: " + FloatToStr(sine));
Writeln(" cosine: " + FloatToStr(cosine));
Writeln(" tangent: " + FloatToStr(tangent));
Writeln(" logarithm: " + FloatToStr(logarithm));
Writeln(" squareRoot: " + FloatToStr(squareRoot));
Result := Int64(elapsedTime);
end;
function TBenchMarkDelphi.io(const ioMax: Integer): Int64;
const textLine="abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz12345678 90abcdefgh";
var
myLine: string;
i: integer;
F: textfile;
begin
startTime := GetTickCount;
i := 0;
try
AssignFile(F, "c:\TestDelphi.txt");
Rewrite(F);
while (i < ioMax) do begin
Writeln(F, textLine);
Inc(i);
end;
CloseFile(F);
i := 0;
AssignFile(F, "c:\TestDelphi.txt");
Reset(F);
while (i < ioMax) do begin
Readln(F, myLine);
inc(i);
end;
CloseFile(F);
except
on e: exception do Writeln(e.Message);
end;
stopTime := GetTickCount;
elapsedTime := stopTime - startTime;
Writeln("IO elapsed time: " + IntToStr(elapsedTime) +
" ms with max of " + IntToStr(ioMax));
Writeln(" i: " + IntToStr(i));
Writeln(" myLine: " + myLine);
Result := Int64(elapsedTime);
end;
procedure TBenchMarkDelphi.Run;
var
intArTime, doubleArTime, longArTime, trigTime, ioTime, totalTime: Int64;
begin
Writeln("Start Delphi silly benchmark");
intArTime := intArithmetic(1000000000);
doubleArTime := doubleArithmetic(10000000000, 11000000000);
longArTime := longArithmetic(10000000000, 11000000000);
trigTime := trig(10000000);
ioTime := io(1000000);
totalTime := intArTime + doubleArTime + longArTime + trigTime + ioTime;
Writeln("Total Delphi benchmark time: " + IntToStr(totalTime) + " ms");
Writeln("End Delphi benchmark");
end;
var MyBench: TBenchMarkDelphi;
begin
MyBench := TBenchMarkDelphi.Create;
MyBench.Run;
MyBench.Free;
end.
Тест запускался несколько раз. Вот усредненное полное время выполнения тестов для D7 и D2006:
D7: 99836
D206: 103570
Разница около 5%. Разница, конечно, незначительная, но за свои слова я всё же отвечаю.
В D2006 правда стоит FastMM v4.62, а в D7 - стандартный, но сильно повлиять это не должно.
Компилятора ни от D2, D3, ни от D5 у меня нет. Судя по тестам на
http://itc.ua/article.phtml?ID=15800&IDw=33&pid=52
код сгенерированный D2 и D3 работал почти в два раза быстрее аналога на D5-D7.
А вообще, сколько тестов, столько и результатов. Например, по некоторым тестам C# значительно обгонял D7, по моему опыту C# не быстрее D7 (но быстрее D2006). Тесты, которые проводили любители FPC показывали, что FPC быстрее Delphi. Судя по вышеприведенному тесту, FPC вообще курит в сторонке вне зависимости от настроек компиляции, т.к. в лучшем случае FPC проигрывал процентов 20.
← →
MeF Dei Corvi © (2006-11-05 13:45) [146]Согласен, что тест бредовый и вообще подобное тестирование - безусловно глупость.
← →
MeF Dei Corvi © (2006-11-05 13:47) [147]
> http://itc.ua/article.phtml?ID=15800&IDw=33&pid=52
гм. Вчитался повнимательнее в это. Жуткий бред.
← →
Ketmar © (2006-11-05 15:01) [148]что интересно: у меня результаты прямо противоположные. весело и радостно отстаёт D7. то ли тест таки дебильный (как и признаётся при запуске %-), то ли у меня марсианские Delphi.
← →
Vansss (2006-11-11 14:15) [149]Delfhi это только начало!!!!!
потом идут более сложные языки типо С + + и т.д.
← →
Ketmar © (2006-11-11 15:03) [150]Удалено модератором
← →
Fosgen (2006-11-11 20:47) [151]Возвращаясь к теме ветки - в подтверждение того что на Дельфи можно сделать полноценную игру:
Кибервойны: Прототип 2700 - чел писал в одиночку, на Дельфе. Потом у него перекупила контора Dragon Software и испортила, но издала. Но проект все-таки вышел в свет - это можно засчитать как продукт профессионального геймдева на Дельфи? Или что тогда - "профессиональный"?
← →
MeF Dei Corvi © (2006-11-14 01:17) [152]
> что интересно: у меня результаты прямо противоположные.
> весело и радостно отстаёт D7. то ли тест таки дебильный
> (как и признаётся при запуске %-), то ли у меня марсианские
> Delphi.
Либо марсианский компьютер :) Тест дебильный, ассемблер всё-равно круче ;) GetTickCount - не лучший способ замера времени.
← →
Ketmar © (2006-11-14 02:18) [153]>[152] MeF Dei Corvi(c) 14-Nov-2006, 01:17
>Либо марсианский компьютер :)
pIII/600. %-)
>GetTickCount
кто ж о нём говорит? более того: замер времени в винде вообще мало смысла имеет, потому что не RTOS.
← →
grisme © (2006-11-14 02:26) [154]>кто ж о нём говорит? более того: замер времени в винде вообще мало смысла имеет, потому что не RTOS.
а куда ж деваться-то? :)
← →
Ketmar © (2006-11-14 02:33) [155]>[154] grisme(c) 14-Nov-2006, 02:26
>а куда ж деваться-то? :)
QNX.
%-)
← →
XProger © (2006-11-14 12:08) [156]Fosgen, не Titan 2175 в обработке ли это? По скринам очень смахивает...
← →
Fosgen (2006-11-14 13:36) [157]XProger, да он самый от IMP"а....
← →
MeF Dei Corvi © (2006-11-14 13:36) [158]
> а куда ж деваться-то? :)
Брать лыжи и в лес...
Страницы: 1 2 3 4 вся ветка
Текущий архив: 2007.11.18;
Скачать: CL | DM;
Память: 0.84 MB
Время: 0.027 c