Результаты поиска
| |
Akyltist | Дата: Четверг, 04 Февраля 2010, 12:23 | Сообщение # 401 | Тема: Куча вопросов по 3d rad |
заслуженный участник
Сейчас нет на сайте
| Quote если игрок не прошёл игра тормозилось и выводилось сообщение *вы проиграли* EventTimer - по истечении 60 секунд и запуск ExitFade Quote если прошёл то выдовалось сообщение *вы выйграли* и игрока перебрасывало на другой уровень(прект) EventTimer - по истечении 60 секунд и запуск ExitFade
|
|
| |
Akyltist | Дата: Четверг, 04 Февраля 2010, 11:21 | Сообщение # 402 | Тема: Куча вопросов по 3d rad |
заслуженный участник
Сейчас нет на сайте
| Ок, не вопрос в ближайшие 48 часов выложу.
|
|
| |
Akyltist | Дата: Среда, 03 Февраля 2010, 23:03 | Сообщение # 403 | Тема: Куча вопросов по 3d rad |
заслуженный участник
Сейчас нет на сайте
| Quote Как вобще мои мысли? Из области фантазий? Да нет мысли вполне реальные. 1. Клиент шлет периодически данные на сервер. 2. Сервер их сейвит 3. При разрыве у нас всегда есть последние данные клиентаи мы можем их восстановить Реализовать это конечно на хорошем уровне будет немного геморно, но это не из области фантастики точно.
|
|
| |
Akyltist | Дата: Среда, 03 Февраля 2010, 16:08 | Сообщение # 404 | Тема: Куча вопросов по 3d rad |
заслуженный участник
Сейчас нет на сайте
| Quote Вопрос такой: как сделать перемещение группы объектов? Группа сосотоит из райтбоди, скинмеша, проджектиле и кучи force'ов. Мне надо переместить во время игры. В принципе это надо для сохранёнок. Или как вобще делать сохранёнки? Работать с объектами через Group, брать и связывать их в группу, по поводу функции, так и есть iObjectLocationSet не пойдет, копану ночью, как обойти, на таком не заморачивался, думаю выход есть и не сложный.
|
|
| |
Akyltist | Дата: Среда, 03 Февраля 2010, 15:56 | Сообщение # 405 | Тема: Несколько вопросов по 3D rad |
заслуженный участник
Сейчас нет на сайте
| Переустановите #3DRad или поставьте Директ Икс, потом уже будем смотреть глубже.
|
|
| |
Akyltist | Дата: Среда, 03 Февраля 2010, 15:49 | Сообщение # 406 | Тема: Накопившиеся вопросы! Ответы на них! |
заслуженный участник
Сейчас нет на сайте
| Quote на форуме я видел что вы профессионално разбираетесь в 3D RAD поэтому обратился к вам если вас не затруднит то помогите мне решить эту проблему. Заранее вам благодарен. создал игру в 3D RAD (гонки). когда запускаю её в самой программе то всё нормально пашет . но после компиляции запускаю игру и происходит следующее машины включая и машину игрока (car) едут без SkinMesh тоисть он остаётся на месте как вкопаный а скелеты машинок гоняют. помогите пожалуйста решить эту проблему.огромное вам спасибо! Вариант 1, возможно компилятор не тянет файлы за собой, проверьте есть ли они в скомпилированном варианте игры, если есть то скиньте хоть одну текстуру, копану ее формат, возможно компилятор иначе копает функции импорта, такое бывало.
|
|
| |
Akyltist | Дата: Воскресенье, 31 Января 2010, 14:51 | Сообщение # 407 | Тема: Написание ос на ассемблере |
заслуженный участник
Сейчас нет на сайте
| Ну тогда непосредственный вывод через VGA . На данный момент не используя драйверов как вариант. Листинг обновления соответсвенно ограничивать, чтобы отрисовка не забивала проц на сотню постоянно. Ну и для справки АЛУ под 4 пень идет 16 битным, так что 32 это оптималка. И еще вопрос FASM? MASM? TASM? NASM?
|
|
| |
Akyltist | Дата: Воскресенье, 31 Января 2010, 06:32 | Сообщение # 408 | Тема: Написание ос на ассемблере |
заслуженный участник
Сейчас нет на сайте
| скольки битная система? какая файловая система? Каким образом реализована многозадачность? Есть ли защищенный режим ядра? Чем не устраивает чистый VGA?
|
|
| |
Akyltist | Дата: Суббота, 23 Января 2010, 12:33 | Сообщение # 409 | Тема: Хочу создать игру в 3D Red помогите пожалуста |
заслуженный участник
Сейчас нет на сайте
| Если я как модератор этого раздела отсутствую, это не значит, что можно разводить флейм и демогогию. В последующий раз буду наказывать. Говорим только по теме!!!
|
|
| |
Akyltist | Дата: Понедельник, 18 Января 2010, 07:00 | Сообщение # 410 | Тема: Накопившиеся вопросы! Ответы на них! |
заслуженный участник
Сейчас нет на сайте
| В связи долгим отсутствием сети, пишу с работы контрабандой ответы, на многочисленные вопросы присланные мне в мое отсутствие, прошу прощения за скудные ответы, через 2 недели появится нормальная сеть дома, и тогда уже все вернется в нормальное стратегическое русло. А пока будем выживать как можем. Вопрос от (Chris) Привет Akyltist! Есть вопрос по 3DRad. Если найдёться время, немогбы ты написать статью о том, как добовлять в 3DRad новый RigidBody. Или обьяснить мне лично. Я уже с движком розобрался, а вот с этим RigidBody проблемка, а точней с collision файлом. Ответ: Единственное что Вам необходимо, это научиться правильно экспортировать ваши объекты. Как совет, создавайте объекты моделей и экспортируйте их в Х формат после чего экспортируйте их в скетчап от гугл, и с помощью плагина уже экспортируйте в RigidBody, статичный или динамичный на Ваш выбор. Ну и не забываем связывать с теми объектами где необходимо взаимодействие. Вопрос от (Don_Alexey) Есть проблема с CarAI!!! 1. Ставлю SkyBox 2. Terrain 3. G-Force 4. Car 5. Настраиваю всё как надо что б он ездил!!! 6. Add (Insert) --> Path 7. Захожу в настройки Path и делаю всё как в видео.(т.е. меняю настроёки) 8. Race Path, галочку на Recording Mode, Car ---> с IGNORE на Parend, удаляю значение в окне, OK 9. Project ---> Play, проезжаю сколько надо, жму Stop 10. Снова захожу в настроёки Path,как ноказанно на видео!но в окне где били значения ни чего не появилось,осталось пустое!и на самом поле тоже ни чего не появилось,ну т.е. траектории которую я проехал!!! Может я что то забыл,я не пойму!!!помоги с этим разобраться!!!! Ответ: 1. Сначала свяжите свою машину с путем, переключите в связях с "IGNORE" на "PARENT" (это я так пониаю Вы сделали) галочку recording-mode ставим а частоту не трогаем. 2. Запускаем проект на "пробел" или "Файл -- Плей" 3. Когда проезжаем трассу не забываем жать клавишу [R] иначе узлы не будут добавляться. Жать примерно раз в несколько секунд, при нажатии будет происходить звук, похожий на писк спикера. 4. Вырубаем recording-mode 5. Особое внимание уделите тому, что у Вас тот путь который Вы накатали должен быть связан с машиной, которая не управляется человеком, то есть Вы откатали путь, отрубайте на нее человеческое управление, связывайте с CarAI.
|
|
| |
Akyltist | Дата: Воскресенье, 17 Января 2010, 11:25 | Сообщение # 411 | Тема: помогите сделать прыжки |
заслуженный участник
Сейчас нет на сайте
| без кода не получится, меняйте ориентацию и позицию по вектору направления на событие клавиши. Не справитесь позже выложу код.
|
|
| |
Akyltist | Дата: Воскресенье, 20 Декабря 2009, 03:49 | Сообщение # 412 | Тема: GoogleSUP-3DRad(конвентирование) Тени/Освещение/Модели |
заслуженный участник
Сейчас нет на сайте
| Никому не приходило в голову копье ? 3D Rad Exporter plug-in Для Google SketchUp C:\Program Files\Google\Google SketchUp 6\Plugins\ C:\Program Files\Google\Google SketchUp 7\Plugins\ Официальный туториал как юзать. У кого есть желание можете перевести на русский!
|
|
| |
Akyltist | Дата: Суббота, 19 Декабря 2009, 18:34 | Сообщение # 413 | Тема: Решил попробывать создать космосим в 3dRAD |
заслуженный участник
Сейчас нет на сайте
| Возьмите проект что сейчас прикреплю к сообщению и до настраивайте физику как надо. Мне лень возиться с этим. Демо
|
|
| |
Akyltist | Дата: Суббота, 19 Декабря 2009, 11:45 | Сообщение # 414 | Тема: Tips & Tricks & Effects & Оптимальные Алгоритмы |
заслуженный участник
Сейчас нет на сайте
| Функция Оптимального вычисления арксинуса 0000 | { арксинус [обозначение: arcsin] -----------------------------------------} | 0001 | function ArcSin( x:extended):extended; assembler; | 0007 | | mov | ah,byte ptr [x+9] | | 0009 | | jnc | [color=red]@plus | | 0014 | | db | 0CDh, 35h, 0e8h | {1,x} | 0016 | | fmul | st,st(2) | {x**2,1,x} | 0018 | | fsqrt | | {sqrt(1-x**2),x} | 0022 | | mov | ah,byte ptr [sw+1] | | 0026 | | fpatan | | {arctan(1/x)} | 0028 | | db | 0CDh, 35h, 0e8h | {1,arctan(1/x)} | 0029 | | fchs | | {-1,arctan(1/x)} | 0030 | | db | 0CDh, 35h, 0eBh | {Pi,-1,arctan(1/x)} | 0031 | | fscale | | {Pi/2,-1,arctan(1/x)} | 0032 | | fstp | St(1) | {Pi/2,arctan(1/x)} | 0033 | | fsubrp | st(1),st | {Pi/2-arctan(1/x)} | 0038 | | shr | al,1 | { arctan(x):=-arctan(-x) } | дает прирост 30% производительностипо сравнению со стандартной от Borland t,mks c сопроцессором | t,ms без сопра, но c эмулятором | extended | double | real | single | extended | double | real | single | TYPE | 382 | 395 | 562 | 392 | 19.3 | 20.1 | 21.0 | 20.0 | NEW FUNC | 706 | 708 | 876 | 706 | 23.2 | 24.0 | 24.9 | 24.0 | STANDART | 54% | 56% | 64% | 55% | 83% | 84% | 84% | 84% | % compor. |
|
|
| |
Akyltist | Дата: Суббота, 19 Декабря 2009, 08:21 | Сообщение # 415 | Тема: Tips & Tricks & Effects & Оптимальные Алгоритмы |
заслуженный участник
Сейчас нет на сайте
| Функция Оптимального вычисления арккосинуса
0000 | { арккосинус [обозначение: arccos] ---------------------------------------} | 0001 | function ArcCos( x:extended):extended; assembler; | 0007 | | mov | ah,byte ptr [x+9] | | 0014 | | db | 0CDh, 35h, 0e8h | {1,x} | 0016 | | fmul | st,st(2) | {x**2,1,x} | 0018 | | fsqrt | | {sqrt(1-x**2),x} | 0022 | | mov | ah,byte ptr [sw+1] | | 0025 | | fxch | | {x,sqrt(1-x**2)} | 0027 | | shr | al,1 | { x был <0 ? } | 0030 | | db | 0CDh, 35h, 0eBh | {Pi,arccos(abs(-x))} | 0031 | | fsubrp | st(1),st | {arccos(x)} | 0035 | | shr | al,1 | { x был <0 ? } | 0037 | | db | 0CDh, 35h, 0e8h | {1,arctan(1/x)} | 0038 | | fchs | | {-1,arctan(1/x)} | 0040 | | db | 0CDh, 35h, 0eBh | {Pi,-1,arctan(1/x)} | 0041 | | fscale | | {Pi/2,-1,arctan(1/x)} | 0042 | | fstp | St(1) | {Pi/2,arctan(1/x)} | 0044 | | fadd | | {arccos(x)=Pi/2-arctan(1/x)} | 0047 | | fsubrp | st(1),st | {arccos(x)=Pi/2-arctan(1/x)} | дает прирост 30% производительностипо сравнению со стандартной от Borland t,mks c сопроцессором | t,ms без сопра, но c эмулятором | extended | double | real | single | extended | double | real | single | TYPE | 409 | 406 | 572 | 413 | 19.3 | 20.1 | 20.1 | 20.0 | NEW FUNC | 745 | 748 | 904 | 745 | 23.2 | 24.0 | 24.9 | 24.0 | STANDART | 55% | 54% | 63% | 55% | 83% | 84% | 84% | 84% | % compor. |
|
|
| |
Akyltist | Дата: Суббота, 19 Декабря 2009, 08:20 | Сообщение # 416 | Тема: Tips & Tricks & Effects & Оптимальные Алгоритмы |
заслуженный участник
Сейчас нет на сайте
| ================================== ================================== В данную тему выкладываем самые оптимальные алгоритмы (математические, геометрические, физические, графические) не забываем про качество алгоритмов ================================== ================================== Любой флуд в теме будет наказываться очень жестоко. - [Intro] - [Mathematical Functions] ------{Функция Оптимального вычисления арккосинуса} ------{Функция Оптимального вычисления арксинуса} ------ ------ ------ - [Geometric Functions] ------ ------ ------ - [Physical calculations] ------ ------ ------ - [Algorithms graphics] ------ ------ ------ -[Cryptographic Algorithms] ------ ------ ------ ------------------------------------------------------------------------------------------------------ Правила публикации: 1. Аккуратное оформление 2. Длинные алгоритмы заносим в spoiler 3. Очень длинные заливаем на надежные хостинги, но при этом в посте составляем качественное описание 4. Желательны скачки по прямым ссылкам
|
|
| |
Akyltist | Дата: Суббота, 19 Декабря 2009, 06:11 | Сообщение # 417 | Тема: Куча вопросов по 3d rad |
заслуженный участник
Сейчас нет на сайте
| Quote (pentod65) Извиняюсь, если вопрос уже, где то задан. Как вернуть вылетевший с трассы или перевернувшийся сар или сарАI, не начиная игру заново? Есть несколько вариантов развития 1. вариант "Точки прохождения" На трассе выставляются невидимые объеты которые не обладают физическим свойствами, назовем их условно триггерными точками, не можете конечно туда невидимые примитивы ввиде сфер поставить. После этого как человек перевернулся на машине он жмет некую клавишу, допустим [Enter], после этого мы находим ближайшую к машине точку которую он уже проехал, и откидываем его слегка назад к этой точке скриптом. 2. вариант "Переворот на месте" Так как по идее у нас необходимость тачку просто перевернуть после аварии, то мы можем сделать это непосредственно на месте крушения не откидывая слегка назад как в предыдущем варианте, бонус этого варианта в минимуме кодаи в большей логичности. Ну кто когда будет переворачивать тачку в жизни попрет ее на 100 метров назад чтобы тебя наказать? Ну моразм ведь. Много слов мало дела. Вместо того чтобы болтать реализуем второй вариант на практике, так как с первым будут трудности восприятия у неопытных пользователей. Добавим 2 объекта в проект. а) EventOnInput - оставим Active и Working At Start галочки включенными. Выберем в качестве клавиши ту которая еще не используется, так как мне пофиг я выбрал [Enter] переключаем в связях все на IGNORE. б) Script - оставим Active и Working At Start галочки включенными. Свяжем этот объект с Машиной и EventOnInput в) После чего обращаем внимание на то какие ID у наших объектов и их UIN на входе. Нам интересно событие по нажатию клавиши [Enter], которое назначено у нас в EventOnInput и на входе является IN_0 а машина у нас является объектом OBJ_22. c) Пишем простейший скрипт: Code void Main() { if (IN_0>0) { Quaternion targetOrientation; //get car Orientation iObjectOrientation(OBJ_22,targetOrientation); // angle crash 80 if(targetOrientation.z>80 || targetOrientation.z>-80) { //add some offset to car Orientation targetOrientation.z = 0; //place the label there iObjectOrientationSet(OBJ_22,targetOrientation); } iScriptStop(); } } где if(targetOrientation.z>80 || targetOrientation.z>-80) проверка на то перевернута машина или нет, чтобы не срабатывало если не перевернута. 80 - это угол. Скачать Демо THE END;
|
|
| |
Akyltist | Дата: Суббота, 19 Декабря 2009, 05:03 | Сообщение # 418 | Тема: Необходим ли 3DRad 6.41 на русском языке. |
заслуженный участник
Сейчас нет на сайте
| Используйте пока 6.40 - думаю критической надобности в написании шейдеров ручками нету, а это единственное серьезное отличие 6.40 от 6.41
|
|
| |
Akyltist | Дата: Пятница, 18 Декабря 2009, 17:08 | Сообщение # 419 | Тема: Куча вопросов по 3d rad |
заслуженный участник
Сейчас нет на сайте
| На пункт ниже обсуждалась эта тема по АИ, смотрите вот эту темку, последний пост, там есть видео метров на 13 по пунктам. 3D Rad (Онлайн Руководство Разработчика GCUP)Сообщение # 14. Создаем A.I. Для Машин Look where [step 1] and [step 2]. It's simple. Good luck! PS: Incidentally there is video. PPS: Статья написана в стиле шлака и с опечатками, читать будет тяжело).
|
|
| |
Akyltist | Дата: Пятница, 18 Декабря 2009, 08:37 | Сообщение # 420 | Тема: Куча вопросов по 3d rad |
заслуженный участник
Сейчас нет на сайте
| Quote (Crayzi) У меня такой нупский вопрос: Как получить требуемую информацию из базы MySQL посредством 3D RAD (допустим запущена база на том же компе, логин 123 пароль 321 название "World" в ней раздел "Accounts", который состоит из 1 таблицы "Login", как получить данные из этой таблицы и как выполнить туда sql ф-цию)? Не судите строго, я работал с MySQL только через сторонние программы, да и 3D RAD только начал изучать. Учитывая что NETWORK FUNCTIONS в AngelScript для 3D Rad специфичены, и не совместимы с БД типа MySQL, то средствами чисто 3D Rad никак. Однако у нас есть такой замечательный раздел как "EXTERNAL DLL FUNCTIONS" EXTERNAL DLL FUNCTIONS - int iDLLLoad(string)
- iDLLUnload(int)
- bool iDLLCall(int,string,int)
- iDLLArraySet(int,float)
- float iDLLArrayGet(int)
Code //Функция первых два элемента массива помещает в третьем
int DLLHandle = 0; void Main() { if (iInitializing()) { DLLHandle = iDLLLoad(".\\3DRad_res\\objects\\Script\\MyDLL.dll"); } else if (iDeinitializing()) { if (DLLHandle != 0) iDLLUnload(DLLHandle); } else { if (DLLHandle != 0) { iDLLArraySet(0,3); iDLLArraySet(1,4); iDLLArraySet(2,0); iDLLCall(DLLHandle,"MyFunction",0); OUT_0 = iDLLArrayGet(2); //OUT_0 - вывод на value print } } } Не забываем юзать соглашение __stdcall Либу необходиму для работы можно написать на любом ЯП например на Дельфине. Не буду в даваться в подробности написания либы, но чтобы не было гемора с MySQL запросами то ставим дельфина, качаем эту либу компонентов. После скачки распаковываем в {$Delphi}/lib/. При работе с MySQL добавляем в uses uMySqlVio, uMysqlCT, uMysqlClient, uMysqlHelpers Добавим в объект: MySQLClient: TMySQLClient; Еще нам понадобится один объект для выполнения SQL запросов: MySQLResult: TMysqlResult; Пишем код для подключения к базе и выполнения запроса. Двойной клик на главной форме и в процедуре OnCreate пишем: Code MySQLClient := TMySQLClient.Create; В процедуру OnDestroy добавляем такой код: Code MySQLClient.Free; if MySQLResult <> nil then MySQLResult.Free; Чтобы соединиться с базой, нам нужно определить такие параметры как: хост, порт, пользователь, пароль, UNIX сокет и имя базы данных. Code if FMysql.Connect(Edit1.Text, Edit3.Text, Edit4.Text, 'db', StrToInt(Edit2.text), '', false, 0) then ShowMessage('connected ok!'); Аргументы этой функции располагаются в таком порядке: host, username, password, db, port, socket, try, sockets, client, flag Сам запрос ничем не отличается от такого же, написанного на PhP. Результат выполнения запроса присваивается переменной MySQLResult, а для выполнения используется объект MySQLClient. Функция выполнения запроса принимает три аргумента: сам SQL запрос, флаг - сохранять ли результат и переменную, куда будет записан флаг выполнения (true, false). Code MySQLResult := MySQLClient.Query('SELECT * FROM admin_users WHERE username=''dummy_username'' and password=''dummy_pass''', True, OK); Таким образом, строка кода, которую вы видите выше, присваивает результат выполнения запроса переменной MySQLResult. В запросе извлекается запись из таблицы admin_users. В логической переменной OK сохранен флаг выполнения, то есть, значение true свидетельствует об успешном выполнении, а false означает ошибку. Теперь можно получить значение поля: Code MySQLResult.FieldValueByName('username'); Как можно было догадаться, это скрипт проверки имени пользователя и пароля. Осталось только сделать проверку. Я решил сделать это таким образом, что все проверяется в одном операторе IF, и конкретная причина не выдается: Code if (MySQLResult.FieldValueByName('username') <> 'dummy_username') or (MySQLResult.FieldValueByName('password') <> 'dummy_pass') then Здесь мы проверили жестко закодированное имя пользователя dummy_username с тем, которое возвратил запрос. Пароль проверяется таким же образом. Для проверки пасов разумеется юзаем md5 хеш. На всякий случай прикрепил Uses для md5 PS: в общем пишите либу и через нее работайте.
|
|
| |
|