Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
6-1174070078
Gubar
2007-03-16 21:34
2007.11.18
Помогите с авторизацией на сайте


2-1193340746
NikitaNovikov
2007-10-25 23:32
2007.11.18
RoundRect


2-1193379623
Layner
2007-10-26 10:20
2007.11.18
Узнать, над каким элементом вызвали PopupMenu


15-1192432862
Ломброзо
2007-10-15 11:21
2007.11.18
VisioModeler


15-1192360079
Актер
2007-10-14 15:07
2007.11.18
Спектакль