Воскресенье, 24 Ноября 2024, 11:42

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
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;
0002 var
0003  sw:word;
0004 asm
0005 fld [x] {x}
0006 xor al,al
0007 mov ah,byte ptr [x+9]
0008 shl ah,1
0009 jnc [color=red]@plus
0010 fchs { x<0; x:=-x }
0011 inc al { al:=1 }
0012 @plus:
0013 { fld1}
0014 db 0CDh, 35h, 0e8h {1,x}
0015 fld st(1) {x,1,x}
0016 fmul st,st(2) {x**2,1,x}
0017 fsub {1-x**2,x}
0018 fsqrt {sqrt(1-x**2),x}
0019 fcom st(1)
0020 fstsw [sw]
0021 fwait
0022 mov ah,byte ptr [sw+1]
0023 sahf
0024 jnb @l1
0025 fxch {x,1}
0026 fpatan {arctan(1/x)}
0027 { fld1}
0028 db 0CDh, 35h, 0e8h {1,arctan(1/x)}
0029 fchs {-1,arctan(1/x)}
0030 { fldPi}
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)}
0034 jmp @2
0035 @l1:
0036 fpatan
0037 @2:
0038 shr al,1 { arctan(x):=-arctan(-x) }
0039 jnc @end
0040 fchs
0041 @end:
0042 end;

дает прирост 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;
0002 var
0003   sw:word;
0004 asm
0005 fld [x] {x}
0006 xor al,al
0007 mov ah,byte ptr [x+9]
0008 shl ah,1
0009 jnc @plus
0010 fchs { x<0; x:=-x }
0011 inc al { al:=1 }
0012 @plus:
0013 { fld1}
0014 db 0CDh, 35h, 0e8h {1,x}
0015 fld st(1) {x,1,x}
0016 fmul st,st(2) {x**2,1,x}
0017 fsub {1-x**2,x}
0018 fsqrt {sqrt(1-x**2),x}
0019 fcom st(1)
0020 fstsw [sw]
0021 fwait
0022 mov ah,byte ptr [sw+1]
0023 sahf
0024 jnb @l1
0025 fxch {x,sqrt(1-x**2)}
0026 fpatan {arccos(x)}
0027 shr al,1 { x был <0 ? }
0028 jnc @end
0029 { fldPi}
0030 db 0CDh, 35h, 0eBh {Pi,arccos(abs(-x))}
0031 fsubrp st(1),st {arccos(x)}
0032 jmp @end
0033 @l1:
0034 fpatan
0035 shr al,1 { x был <0 ? }
0036 { fld1}
0037 db 0CDh, 35h, 0e8h {1,arctan(1/x)}
0038 fchs {-1,arctan(1/x)}
0039 { fldPi}
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)}
0043 jnc @lp1
0044 fadd {arccos(x)=Pi/2-arctan(1/x)}
0045 jmp @end
0046 @lp1:
0047 fsubrp st(1),st {arccos(x)=Pi/2-arctan(1/x)}
0048 @end:
0049 end;

дает прирост 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: в общем пишите либу и через нее работайте.

Прикрепления: psnMD5.rar (3.3 Kb)
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг