Сообщения на форуме пользователя Andrey (201 стр.)
Проблемы с обменом значений между C/C++ и Lua. | 12 янв. 2006 | 1:03 | #28 |
---|
Timm
да luabind я уже выкачал надо пробовать...
>А самому мучиться не надо, Lua это очень обкуренная система (португальцы сделали), всё на С - трудно отследить связи и
>за стеком постоянно следить, ужас.
ну тут проверку стека сделать можно...
>Даже при наличии подробной документации - http://www.lua.org/pil/ постоянно экспериментируешь методом случайного >тыка для реализации примитивной вещи.
да ты тут прав...
да luabind я уже выкачал надо пробовать...
>А самому мучиться не надо, Lua это очень обкуренная система (португальцы сделали), всё на С - трудно отследить связи и
>за стеком постоянно следить, ужас.
ну тут проверку стека сделать можно...
>Даже при наличии подробной документации - http://www.lua.org/pil/ постоянно экспериментируешь методом случайного >тыка для реализации примитивной вещи.
да ты тут прав...
Прога не запускается без DX9 SDK | 12 янв. 2006 | 1:01 | #15 |
---|
Careless Angel
>не может быть в принципе, в Dec2004 а не Dec2005 dll нет в принципе, все линкуется статически
ой блин это я что-то стормозил!! :)
если DirectX 9.0 SDK без обновлений то все ок без dll работает...
>не может быть в принципе, в Dec2004 а не Dec2005 dll нет в принципе, все линкуется статически
ой блин это я что-то стормозил!! :)
если DirectX 9.0 SDK без обновлений то все ок без dll работает...
Прога не запускается без DX9 SDK | 11 янв. 2006 | 21:58 | #13 |
---|
GoS
Careless Angel
>Можно....компилировать на DX SDK не новее чем за декабрь 2004 (!)
нет у меня не пахает требует *.dll
Careless Angel
>Можно....компилировать на DX SDK не новее чем за декабрь 2004 (!)
нет у меня не пахает требует *.dll
Проблемы с обменом значений между C/C++ и Lua. | 11 янв. 2006 | 16:15 | #26 |
---|
Sneer
ой спасибо тебе большое скопировал я страницу с сылкой на форум, посмотрю потом еще спрошу...
ой спасибо тебе большое скопировал я страницу с сылкой на форум, посмотрю потом еще спрошу...
Прога не запускается без DX9 SDK | 11 янв. 2006 | 1:19 | #9 |
---|
Osiris
ой я на твою тему и не обратил внимание!! говорю же позвони мне!!!
скинь исходники посмотрю...
повторю что в аське говорил
1) d3dx9_28.dll есть в каталоге установки?
2) DirectX 9.0c должен быть< запусти dxdiag на тех компах на которых не работает и точно узнай какой именно DirectX там стоит.
я в аську скинул тебе совой домашний телефон(а твой забыл :( ) позвони...
ой я на твою тему и не обратил внимание!! говорю же позвони мне!!!
скинь исходники посмотрю...
повторю что в аське говорил
1) d3dx9_28.dll есть в каталоге установки?
2) DirectX 9.0c должен быть< запусти dxdiag на тех компах на которых не работает и точно узнай какой именно DirectX там стоит.
я в аську скинул тебе совой домашний телефон(а твой забыл :( ) позвони...
Применение boost в программировании игр | 10 янв. 2006 | 14:56 | #50 |
---|
All
Ну ничего себе... :)
короче сколько людей столько мнений...
Ну ничего себе... :)
короче сколько людей столько мнений...
Проблемы с обменом значений между C/C++ и Lua. | 10 янв. 2006 | 14:35 | #24 |
---|
Kashey
Спасибо за дополнительный вопрос :)
Qiller
а тебе за ответ :)
Sneer
Спасибо за все!!!
вот еще 1 момент я тут освоил основы...
т.е. сейчас я умею передавать и получать значения нескольких переменных. Сделал тестовфый проект где окружность двигается по 2 измененным координатам. координаты меняются в скрипте по заданному закону
sin(os.clock())
теперь вопрос сложней. Как вообще реализовать логику на скриптах и привязать к игровым объектам?
вопрос 1
lua_State - для каждого объекта отдельно или можно все через 1 состояние сделать?
вопрос 2
для каждого объекта есть скрипт который меняет его состояние и сдедит за логикой игры
я так понимаю мы просто в скрипте работаем через несколько функций(в зависимости от сложности) и меняем данные игрового объекта в главном цикле движка
идея правильная?
вопрос 3 если можно обойтись 1 lua_State можно ли для каждого объекта выбрать загруженный скпипт и вызывать из нгего функции меняющие состояния игрового объекта?
Спасибо за дополнительный вопрос :)
Qiller
а тебе за ответ :)
Sneer
Спасибо за все!!!
вот еще 1 момент я тут освоил основы...
т.е. сейчас я умею передавать и получать значения нескольких переменных. Сделал тестовфый проект где окружность двигается по 2 измененным координатам. координаты меняются в скрипте по заданному закону
sin(os.clock())
теперь вопрос сложней. Как вообще реализовать логику на скриптах и привязать к игровым объектам?
вопрос 1
lua_State - для каждого объекта отдельно или можно все через 1 состояние сделать?
вопрос 2
для каждого объекта есть скрипт который меняет его состояние и сдедит за логикой игры
я так понимаю мы просто в скрипте работаем через несколько функций(в зависимости от сложности) и меняем данные игрового объекта в главном цикле движка
идея правильная?
вопрос 3 если можно обойтись 1 lua_State можно ли для каждого объекта выбрать загруженный скпипт и вызывать из нгего функции меняющие состояния игрового объекта?
Применение boost в программировании игр | 9 янв. 2006 | 22:41 | #27 |
---|
Gbp
>for(it = array1.begin(); it != array1.end(); it++)
>Судя по этому, очень плохо читал!
ну что я на это скажу тот тест я написал, я делал в 3 часа ночи. поэтому не учел постоянный вызов array1.end(); и array1.begin() :)
>for(it = array1.begin(); it != array1.end(); it++)
>Судя по этому, очень плохо читал!
ну что я на это скажу тот тест я написал, я делал в 3 часа ночи. поэтому не учел постоянный вызов array1.end(); и array1.begin() :)
Применение boost в программировании игр | 9 янв. 2006 | 21:34 | #25 |
---|
Gbp
читал, но на скорость не обратил внимание. но все равно я сомневаюсь в скорости.
читал, но на скорость не обратил внимание. но все равно я сомневаюсь в скорости.
Применение boost в программировании игр | 9 янв. 2006 | 16:48 | #20 |
---|
JokerR
Fuzzy
отдельно сомпилировать и протестить 2 цикла попробовал?
CyberZX
>как говорится, найдите десять отличий
мне кажеться их нет, кроме разных регистров и значений адресов
я сильно в assembler'е не силен
но мне кажеться
эти команды по скорости не будут различаться, но я могу ошибиться т.к. второй операнд индекстный регистр и регистор аккамулятор:
mov dword ptr [eax],edi
Fuzzy
отдельно сомпилировать и протестить 2 цикла попробовал?
CyberZX
>как говорится, найдите десять отличий
мне кажеться их нет, кроме разных регистров и значений адресов
я сильно в assembler'е не силен
но мне кажеться
эти команды по скорости не будут различаться, но я могу ошибиться т.к. второй операнд индекстный регистр и регистор аккамулятор:
mov dword ptr [eax],edi
mov dword ptr [ecx],eax
итак STL не медленнее обычных массивов?
Применение boost в программировании игр | 9 янв. 2006 | 3:51 | #16 |
---|
ArT
>А ты тестил Debug или Release?
конечно Release в Debug std::vector по определениею в 10 раз медленнее....
>Приведи код теста.
Итак вот обшая программа теста, подойдет под любой компилятор т.к. код ANSI C/C++(кроме макроса _MSC_VER):
Я все тестировал отдельно т.к. это будут более равные условия если гонять 3 цикла в одной программе результатыт будут отличаться...время можно перемерять высокоточным Win32 таймером...
вот как я тестировал по отдельности
1) Простой массив:
2) std::vector доступ по индексу (operator [])
3) std::vector доступ по итераторам
Если все 3 цикла гонять в 1 программе результаты могут быть не верны.
итак вот результаты:
>А ты тестил Debug или Release?
конечно Release в Debug std::vector по определениею в 10 раз медленнее....
>Приведи код теста.
Итак вот обшая программа теста, подойдет под любой компилятор т.к. код ANSI C/C++(кроме макроса _MSC_VER):
#include <vector> #include <ctime> using namespace std; int main(int argc, char* argv[]) { vector<int> array1; int* array2; enum {SIZE = 27000000}; array1.resize(SIZE); array2 = new int[SIZE]; int value = 6; fprintf(stderr, "%s%d%s", "Visual C++ version: ", _MSC_VER, "\n"); #ifdef _DEBUG fprintf(stderr, "%s", "Debug version\n"); #else fprintf(stderr, "%s", "Release version\n"); #endif vector<int>::iterator it; unsigned int i = 0; clock_t t = 0; float k = 1.0f / static_cast<float>(CLOCKS_PER_SEC); fprintf(stderr, "%s", "std::vector<int> test, press enter key\n"); getchar(); t = clock(); for(i = 0; i < SIZE; i++) array1[i] = value; fprintf(stderr, "%s%f%s", "std::vector<int> time: ", (clock() - t) * k, "\n"); fprintf(stderr, "%s", "int* test, press enter key\n"); getchar(); t = clock(); for(i = 0; i < SIZE; i++) array2[i] = value; fprintf(stderr, "%s%f%s", "int* time: ", (clock() - t) * k, "\n"); fprintf(stderr, "%s", "std::vector<int>::iterator test, press enter key\n"); getchar(); t = clock(); for(it = array1.begin(); it != array1.end(); it++) *it = value; fprintf(stderr, "%s%f%s", "std::vector<int>::iterator time: ", (clock() - t) * k, "\n"); delete [] array2; fprintf(stderr, "%s", "End test, press enter key\n"); getchar(); return 0; } |
вот как я тестировал по отдельности
1) Простой массив:
//убрать array1.resize(SIZE); //оставить только этот цикл: fprintf(stderr, "%s", "int* test, press enter key\n"); getchar(); t = clock(); for(i = 0; i < SIZE; i++) array2[i] = value; fprintf(stderr, "%s%f%s", "int* time: ", (clock() - t) * k, "\n");
//убрать int *array2; //убрать array2 = new int[SIZE]; //убрать delete [] array2; //оставить только этот цикл: fprintf(stderr, "%s", "std::vector<int> test, press enter key\n"); getchar(); t = clock(); for(i = 0; i < SIZE; i++) array1[i] = value; fprintf(stderr, "%s%f%s", "std::vector<int> time: ", (clock() - t) * k, "\n");
//убрать int *array2; //убрать array2 = new int[SIZE]; //убрать delete [] array2; //оставить только этот цикл: fprintf(stderr, "%s", "std::vector<int>::iterator test, press enter key\n"); getchar(); t = clock(); for(it = array1.begin(); it != array1.end(); it++) *it = value; fprintf(stderr, "%s%f%s", "std::vector<int>::iterator time: ", (clock() - t) * k, "\n"); |
итак вот результаты:
Visual C++ .Net 2003:
Visual C++ version: 1310
Release version
int* test, press enter key
int* time: 0.157000
End test, press enter key
Visual C++ version: 1310
Release version
std::vector<int> test, press enter key
std::vector<int> time: 0.141000
End test, press enter key
Visual C++ version: 1310
Release version
std::vector<int>::iterator test, press enter key
std::vector<int>::iterator time: 0.172000
End test, press enter key
Процессор AMD Athlon(tm) XP 2500+
Конечно если поиграться размером массива то могут результаты измениться...
Применение boost в программировании игр | 8 янв. 2006 | 21:50 | #9 |
---|
JokerR
>а можно поподробней?
ну смотри:
скорость обращения array1[index] и array2[index] будеть отличаться в пользу array1, т.к. возможно компилятор не подставит
vector::operator [] в код, а будет вызываться метод класса. На больших массивах будет это может сказыаться на скорости.
Насчет итераторов STL ситуация возможно будет такая-же. простой массив есть простой массив. STL безусловно удобна но в real time я отказался от нее.
Nick Chirkov
>STL даёт большую скорость написания кода, а про скорость выполнения рекомендую читать страуструпа.
Нука подскажи эту страничку.
я сделал тест: 2 массива пару миллионов элементов. Один std::vector другой простой массив.
замерял время перед цикломи(2 цикла для 2 тестовых массивов) и после, где я просто в массивы записывал значения. Для Visual C++ 6.0 скорость заметно отличалась. В Visual C++ .Net 2003 ситуация улучшилась, но все рано быстрей работал обычный массив.Я возможно ошибаюсь.
Juster~
вообще навеорное буду использовать boost::luabind
>а можно поподробней?
ну смотри:
vector<int> array1; int *array2;
vector::operator [] в код, а будет вызываться метод класса. На больших массивах будет это может сказыаться на скорости.
Насчет итераторов STL ситуация возможно будет такая-же. простой массив есть простой массив. STL безусловно удобна но в real time я отказался от нее.
Nick Chirkov
>STL даёт большую скорость написания кода, а про скорость выполнения рекомендую читать страуструпа.
Нука подскажи эту страничку.
я сделал тест: 2 массива пару миллионов элементов. Один std::vector другой простой массив.
замерял время перед цикломи(2 цикла для 2 тестовых массивов) и после, где я просто в массивы записывал значения. Для Visual C++ 6.0 скорость заметно отличалась. В Visual C++ .Net 2003 ситуация улучшилась, но все рано быстрей работал обычный массив.Я возможно ошибаюсь.
Juster~
вообще навеорное буду использовать boost::luabind
Применение boost в программировании игр | 8 янв. 2006 | 4:38 | #3 |
---|
jaguard
>Мне вот удобно писать игры со статическими указателями, без применения stl(совсем), без применения буста(тем более >совсем),
согласен :) STL в real time уже дает малуюскорость...
>с минимумом классов но с большим количеством глобальных переменных и указателей, с единым неймспейсом.
не согласен :)
>Мне вот удобно писать игры со статическими указателями, без применения stl(совсем), без применения буста(тем более >совсем),
согласен :) STL в real time уже дает малуюскорость...
>с минимумом классов но с большим количеством глобальных переменных и указателей, с единым неймспейсом.
не согласен :)
Intel Jpeg Liblary: Сохранение 1 байтового изображения в jpg формат | 7 янв. 2006 | 16:53 | #10 |
---|
All
Ну еще кто нибудь?
Ну еще кто нибудь?
VC6, VC7 или VC2005? | 4 янв. 2006 | 20:40 | #37 |
---|
All
интересную тему открыли как там насчет Win32 в Visual C++ .Net 2005?
слышал windows.h отсутствует?
интересную тему открыли как там насчет Win32 в Visual C++ .Net 2005?
слышал windows.h отсутствует?