Главная | Форум | Мой профиль | Выход | RSS
Меню сайта
Мини-чат
200
Наш опрос
Расширение спектра деятельности. Тоесть принимать и по возможности помогать не только Ultimate 3D
Всего ответов: 298
Кабинет

Логин:
Пароль:
Поиск
Календарь
«  Апрель 2024  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930
Архив записей
Наши друзья
  • Официальный cайт U3D
  • Лучший сайт по GM
  • Сайт по геймдеву
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Мы рады приветствовать Вас на русскоязычном официальном сайте игрового движка Game Maker+Ultimate3D. Этот сайт создан для всех тех, кто хотел бы своими силами создать хотя бы одну компьютерную 3D игру, но не знает, как это сделать и с чего начать.Вы всегда хотели заняться разработкой компьютерных игр, но не знали как?Тогда вы попали по адресу. Game Maker с Ultimate3D это микс, который позволит делать захватывающие компьютерные игры с неограниченными возможностями. Так же есть форум на котором можно задовать свои вопросы по Ultimate 3D!

    Обновляя проекты Ultimate 3D

    Всякий раз, когда новая версия Ultimate 3D выпущена, некоторые скрипты изменились в пределах этой версии, и возможно были добавлены новые. По этой причине Вы должны изменить их в своем проекте, если Вы хотите обновить проект к более новой версии Ultimate 3D. Этот раздел ведет Вас через этот процесс для каждой версии. Только найдите подраздел, который соответствует Вашему случаю и следовать за шагами. Если Вы должны обновить от очень устаревшей версии, Вы можете также приковать шаги обновления цепью, чтобы добраться например от Окончательных трехмерных 2.0 бета 3 до Ultimate 3D 2.1 final. Так как я всегда прилагаю все усилия, чтобы держать совместимость, процесс обновления обычно не занимает больше чем пятнадцать минут.

    Обновление Ultimate 3D 2.1 beta проектирует к Ultimate 3D 2.1 final

    Процесс обновления от Ultimate 3D 2.1 beta до Ultimate 3D 2.1 final является легким процесом. Если Вы не намереваетесь использовать новые особенности, то Вы не должны выполнять процесс обновления. В этом случае достаточно заменить старый dll новым. Рекомендуется выполнить обновление, хотя это - очень простой процесс. Только обновите Init() скрипт и добавьте

    SaveTerrainHeightMap(...)

    CopyVector(...)

    NormalizeVector(...)

    TransformVectorEx(...)

    и дело сделано!

    Обновление Ultimate 3D 2.1 beta проектирует к Ultimate 3D 2.1 final Ultimate 3D 2.1 имеет много меньших новых особенностей и в основном новое обнаружение столкновения и систему ответа столкновения. Поэтому весьма много скриптов должны быть добавлены, некоторая потребность которая будет изменена, и некоторые (связанный с обнаружением столкновения) должны быть удалены. Вы должны будете вероятно переписать большую часть своего обнаружения столкновения и кодекса ответа столкновения, но с новыми функциями это очень легко.

    Вот список всех скриптов, которые должны быть добавлены. Все эти подлинники содержатся в пределах файла NewScripts.gml, который идет с SDK Ultimate 3D 2.1, таким образом Вы можете импортировать этот файл подлинников, чтобы добавить их автоматически.

    SwitchBackgroundMode(...)

    GetBoneCount()

    GetBoneParent(...)

    StartPoseInterpolation(...)

    CopyAnimation(...)

    SetModelMaterialSpecular(...)

    SetObjectSolidity(...)

    AttemptMoveToPosition(...)

    CheckSweptEllipsoidIntersection(...)

    GetTriangleIntersectionCount(...)

    GetIntersectionTime(...)

    GetIntersectionPosition(...)

    GetIntersectedTriangleNormal(...)

    GetPushAwayVector(...)

    CheckRayIntersection(...)

    GetIntersectedMaterialIndex(...)

    GetTextureStrengthAtPosition(...)

    DeformTerrain(...)

    CreateTerrainDecal(...)

    SetParticleRotation(...)

    SwitchAdditiveBlending(...)

    SetRoomVisibilityEnforcement(...)

    SetRoomAmbient(...)

    GetMeshOccurrenceCount(...)

    GetMeshOccurrenceTransformation(...)

    InterpolateMatrices(...)

    GetMatrixEntry(...)

    CoordToScreen(...)

    CheckBoundingBoxVisibility(...)

    CalculateVectorDifference(...)

    CalculateVectorLongitude(...)

    CalculateVectorLatitude(...)

    ComputeMatrixTranslation(...)

    ComputeMatrixScaling(...)

    ApplyTransformationMatrix(...)

    GetDrawnTriangleCount()

    GetDrawCallCount()

    SetMipMapFilter(...)

    Вот список всех скриптов, которые должны быть заменены более новыми версиями:

    Step()

    SetAmbient(...)

    LightPoint()

    LightDirectional()

    LightSpot()

    SmoothNormals(...)

    SetModelMaterialEmissive(...)

    CreateTerrain()

    AddTerrainTexture(...)

    CreateParticleSystem()

    ParticleSystemStep(...)

    MoveCamera()

    SwitchWireFrameMode(...)

    Init()

    InitializeLightVariables() (Только для Game Maker 6.0)

    Для некоторых из этих функций использование изменилось. У SmoothNormals (...) и AddTerrainTexture (...) теперь есть дополнительный параметр, но если Вы проигнорируете этот параметр будут нехорошо. SwitchWireFrameMode (...) больше не позволяет повреждает способ для всех объектов в сцене. Теперь это позволяет или повреждает это исключительно для объекта, который вызвал функцию. Удостоверьтесь, что Вы расцениваете эти изменения интерфейса, когда Вы обновляете свой проект. Наконец вот список подлинников, которые должны быть удалены:

    GetDistanceToModel(...)

    GetDistanceToPrimitive(...)

    GetDistanceToAnyPrimitive(...)

    GetDistanceToTerrain(...)

    CoordToScreenX(...)

    CoordToScreenY(...)

    CoordToScreenZ(...)

    Но если GetDistanceToModel(...), для вас важен- то вы можете просто изменить все его внутренности на это(агументы те же что и раньше): temp= external_call(global.u3d_check_ray_intersection,argument0.u3d_index,argument0.u3d_type,GetObjectRoom(),argument1,argument2,argument3,argument4,argument5);(от zxc76)

    Не чувствуйте себя потрясенными от этого все же. Все еще есть функция, чтобы выполнить тест пересечения трассировки луча на все типы объектов, и это еще более универсально чем старые функции, так как это может автоматически сделать прослеживающий луч тест на предопределенный набор твердых объектов. Новая функция вызвана CheckRayIntersection (...). Так или иначе, для обнаружения столкновения и ответа столкновения там еще более лучшее решение. Вы можете читать об этом в переписанной главе справочного файла об этой теме. Это намного более надежно, легче использовать и при правильных обстоятельствах, еще более эффективных чем старый метод.

    CoordToScreenX/Y/Z (...) были заменены базируемой версией вектора CoordToScreen (...) . Вместо того, чтобы вызвать три различных функции, Вы вызываете только одну функцию, которая возвращает вектор.

    Кроме этого есть некоторые действительно незначительные изменения. Вы должны использовать SetRoomVisibilityEnforcement (...) вместо SetRoomVisibility (...) . Теперь карты высоты ландшафта интерпретируются по-другому теперь, чтобы добавить поддержку 32-битовых карт высоты. Если Ваша карта высоты ландшафта не будет точно шкалой яркости, то Вы получите нежеланные результаты. У красного канала карты высоты очень сильно влияют на результат. Если Ваши карты высоты будут прекрасной шкалой яркости, то Вы не будете получать проблем с новым способом, которым данные интерпретируются.

    Одна последняя вещь, нужно сказать что: Что заказ обратных касательных космических матриц изменился. В Ultimate 3D 2.0 финале поверх нормалей записал второй столбец матриц и поверх третьего координатного множества текстуры записал третий столбец. Сейчас поверх нормалей записал третий столбец и поверх третьего множества координаты текстуры записал второй столбец. Большое преимущество этого есть, что третий столбец обратных касательных космических матриц обычно равняется нормалям. Для этого вы можете иметь материалы, которые используют за пиксель, освещение и другие которые не используют это на одной сети. Несмотря на всё не нужно обращаться к RecalculateNormals() если вы отключаете освещение пикселя. Это означает что, если вы используете вершинный шейдеры, которые используют обратные касательные космические матрицы, вам нужно переставить v3 и v9. Если вы экспортировали Ultimate 3D моделируйте файлы с обратными касательными космическими матрицами со свежими версиями Последнего 3D 2.0, к которому вы также имеете отношение.

    Обновление проектов Ultimate 3D 2.0 до версии Ultimate 3D 2.0 final

    Начиная с Ultimate 3D 2.0 финала не имеет никакой новой особенности, только скрипты, которые придется обновить, - GetObjectTransformation() и Destroy(). Так или иначе это рекомендовано добавить следующие скрипты, если вы используете Game Maker 6 или выше. Это сделает возможным использование Последнего 3D без выбора Game Maker "Рассматривают неинициализированные переменные как значение 0". Следующие скрипты нужно обновить для этой цели:

    CreateWall()

    CreateFloor()

    CreateCube()

    Create2D()

    CreatePolygon()

    LightDirectional()

    LightPoint()

    LightSpot()

    LoadMesh()

    CreatePrimitiveFromModel()

    CreateEmptyMesh()

    ApplyParallaxAndBumpMapping()

    SetMaterialEffectLightSource()

    CreateTerrain()

    CalculateTerrainLightMap(...)

    CreateParticleSystem()

    MoveCamera()

    CreatePostScreenShader()

    Init()

    Несмотря на следующее четыре скрипта нужно добавить группу "Частные функции": InitializePrimitiveVariables()

    InitializeLightVariables()

    InitializeVariable()

    InitializeVariableGlobal()

    Другая случайная модификация включает некоторые изменения к коду контрольного объекта. Код в событие "уничтожение" и в событии "конец игры" должно быть обновленным и код в событии конца комнаты нужно добавить, чтобы вынуждать Ultimate 3D работать должным образом с заменой комнаты

    . Обновление проектов Ultimate 3D 2.0 beta 3 до версии Ultimate 3D 2.0 RC

    С тех пор, как развитие Ultimate 3D 2.0 взяло более длинный конец, чем ожидается, беты были выпущены с некоторыми отсутствующими особенностями, чтобы сократить задержку редакции, они были добавлены сейчас. Чтобы быть способным использовать их, Вам приходится обновить ваш проект Game Maker. Так займите пять минут, чтобы читать эту главу, тратят другой десять минут на выполнении, что это говорит, и вы можете запустить использование Последнего 3D 2.0 дистанционного УПРАВЛЕНИЯ со все его новыми особенностями.

    Первое что вы должны сделать, это загрузить самую новую версию проекта разработки (то есть SDK) с сайта http://ultimate3d.org/ . После этого вы должны заменить Ultimate 3D 2.0 beta 3 "Ultimate3D.dll" новой длл Ultimate 3D из проекта разработки. Теперь вы должны заменить скрипты более новыми версиями. Откройте ваш старый проект (gmd или gm6) и скопируйте файлы проекта Ultimate 3D из пакета разработки "basic.gmd"( или basicGM6.gm6). Вот список скриптов, которые нужно заменить:

     CreatePrimitiveFromModel(...)

     PreloadMesh(...)

     LoadMesh()

     AddFrame(...)

     Step()

     Destroy()

     Init()

     SetFilter()

    GetBoneTransformation()

     CreateTerrain()

     DrawText()

     CreateCube()

     DrawTex()

     DrawTexEx()

     RenderToCubeTexture()

     GetObjectTransformation()

     MoveCamera()

     SetObjectRoom()

     CreateTerrain()

    Теперь вы должны добавить новые скрипты, чтобы можно было использовать новые возможности Ultimate 3D. Вот их список:

    - ExportToU3DFile(...)

    - SwitchAlphaBlending(...)

    - SetBoneFrame(...)

    - GetDistanceToTerrain(...)

    - SetCustomTerrainLightMap(...)

    - GetClippingPlaneSupport()

    - SwitchWireFrameMode(...)

    - UpdateSkeleton()

    - ReleaseModel(...)

    - AddTextureCoordinateSetsFromModel(...)

    - ComputeMatrixRotationAngles(...)

    - GetRayTracingNormal(...)

    - ScreenCoordToVector(...)

    Все скрипты в группе "Shadow and post screen shader functions":

    + GetShadowSupport()

    + SwitchShadows(...)

    + SwitchShadowCasting(...)

    + CreateShadowOptimizedGeometry(...)

    + SwitchShadowReceiving(...)

    + CreatePostScreenShader()

    + SetPSSTexture(...)

    + SetPSSVSConstant(...)

    + SetPSSPSConstant(...)

    + SetPSSFilter(...)

    и в группе "portal engine functions":

    + SwitchPortalEngine(...)

    + GetObjectRoom()

    + GetRoomVisibility(...)

    + CreatePortal(...)

    + SetPortal(...)

    + OpenPortal(...)

    + DestroyPortal(...)

    Все эти скрипты доступны и в виде файла экспорта скриптов Game Maker, который идет вместе с пакетом разработки. Импортировав его вы тем самым можете сэкономить себе время, не добавляя новые скрипты (но обновляя старые !!!). В зависимости от того какую версию Ultimate 3D beta 3 вы использовали, вам может понадобится добавить скрипт GetBoneTransformation(), потому что он отсутствовал в некоторых релизах беты 3. Еще вы должны удалить скрипт LoadAnimated3DS(), потому что он больше не используется, его функции теперь на себя взял скрипт LoadMesh(). После того как вы всё это сделаете, ваш проект будет полностью совместим с (и обновлен до) Ultimate 3D 2.0 RC и теперь вы можете его смело использовать.

    Относительно особенностей, которые как часть секции нового Ultimate 3D мало изменилось. Только изменения есть: что кубические объекты определены по-иному, и что свет вычисляется в более естественном пути. Несколько переменных также было добавлено для примитивных объектов и LoadAnimated3DS () не существует (это - LoadMesh () сейчас). Значение переменные rotx, roty и rotz, изменились для объектов камеры и легких источников. Эти переменные сейчас работают точно таким же образом как соответственные переменные примитивных объектов и моделей. Также, вы не можете использовать вершинный шейдер для примитивных объектов больший который был необходимым изменением, чтобы сделать примитивный рендер гораздо больше эффективным.

    Больше всего особенностей в авансированной секции не существовало в Ultimate 3D 1.31 так как там много могло измениться. Система эффектов частицы целиком новая, и параметры луча, следящего за функциями, изменились немного, благодаря изменению значения переменные rotx и roty для объектов камеры. Это создает все таким же образом сейчас. Это означает, что значение 90 для rotx вынуждало бы камеру посмотреть вниз. Но позволяют нам добираться до преобразования проектов сейчас.

    Шаг один: Замените и добавьте все скрипты.

    Осознающие, что эта часть действительно сверлит мозг, и отбирает много времени. Но когда вы делаете с этим, ваш проект почти готов для Ultimate 3D 2.0. Я рекомендую открытие нового BasicGM5.gmd/gm6 и ваш Ultimate 3D 1.31 проект в двух образцах Game Maker и размещая их окна в левой стороне половине экрана. Первая вещь, которую вам придется сделать чтобы получить новые скрипты в вашем проекте, это удаление следующих старых скриптов, которых больше не существуют:

    CreateParticleSystem()

    DestroyParticle(...)

    GetParticleColorR/G/B/A(...)

    GetParticleNumber(...)

    GetParticlePosX/Y/Z(...)

    GetParticleSize(...)

    GetVSSupport()

    LoadAnimated3DS() LoadVS(...)

    SetParticleColor(...)

    SetParticleNumber(...)

    SetParticlePos(...)

    SetParticleColorEnd(...)

    SetParticleColorStart(...)

    SetParticleSize(...)

    SetParticlesLifetime(...)

    SetParticlesMovement(...)

    SetParticlesMovementInc(...)

    SetParticlesMovementOut(...)

    SetParticleSystemBase(...)

    SetViewport(...)

    SetVS(...)

    SetVSConstant(...)

    И теперь вам нужно переиминовать следующие скрипты:

    collision_h() to CollisionH()

    collision_model() toCollisionTerrainModel()

    collision_v() toCollisionV()

    collision_z() toCollisionZ()

    GetMaterialNumber(...) toGetMaterialIndex(...)

    move(...) to Move(...)

    SetMaterialSphereMap(...) to SetMaterialEnvironmentMap(...)

    Snapshot(...) toTakeScreenshot(...)

    SnapshotEx(...) to TakeScreenshotEx(...)

    Когда вы работайте с этими изменениями, вы должны пробовать запустить вашу игру один раз, используя старый dll Ultimate 3D 1.31, чтобы посмотреть которыя часть программы приходится изменить или переделывать. Если вы использовали системы частицы в Ultimate 3D 1.31, это будет самым простым, чтобы удалить и переделать их. Если вы используете вершинные шейдеры для примитивных объектов в вашем проекте, вам придётся понять: путь получает тот же эффект без шейдера, или вам приходится заменить примитивные объекты с образцовыми объектами. Когда вы делаете это, игра должна работать.

    Сейчас следует действительно раздражающая часть. Вам придется открыть каждый единственный скрипт в новом файле BasicGM5.gmd/gm6, и скопирывать его содержимое, и заменяют содержимое соответственного скрипта в вашем проекте с этим кодом. Если скрипт - не часть старой версии Ultimate 3D вам придется создать это. Вы должны восстановить структуру группы. Чтобы создать это, оказывается что все немного проще.

    Шаг два: Замена объектов

    Когда вы работайте над заменой и добавлением всех скриптов, вы можете включить игру снова, используя новый dll, но результата не будет- что мотивирует))) . Вы не будете видеть что-либо. Но не волнуются, это абсолютно простое для исправления. Вам просто придется изменить обращения к функции, которые делает объект "control". В событие "конец игры" вы найдете вызов к MoveCamera() и вызов к Game Maker функции external_call(...). Вы должны заменить эти два вызова со следующей частью кода после удаления, если инструкция, которая есть выше этих вызовов:

    external_call(global.u3d_transmit_controller_information,BG_r,BG_g,BG_b,show_cursor);

    external_call(global.u3d_render);

    А это в событие "начальный шаг":

    external_call(global.u3d_present);

    Вам также придется заменить скритп события "унечтожение" и событие "конец игры" на следующее:

    external_call(global.u3d_cleanup);

    Когда вы делаете эти изменения, вы можете включить игру снова и должны быть некоторые видимые результаты. Но некоторые вещи, возможно, немного фатальны. Камера не будет вероятно вести себя верно, и есть возможность обнаружение глюков. Это благодаря измененному значению- переменные rotx, roty и rotz и параметры GetDistanceToModel(...) и Move(...). Нет никакой подсказки, с которой я мог помочь вам в этом контексте. Вам просто придется найти коды, которые используют эти переменные, или функционирует и исправлять их. Другая вещь, которую вам придется сделать это модифицирывать любые кубические объекты, которые Вы, возможно, имели бы. Чтобы посмотреть, как они работают сейчас, сошлитесь на главу о примитивных объектах .

    Есть также пара действительно маленьких изменений:

    control.range изменился в camera.max_range global.fall и global.speed (переменные, которые могут использоваться, чтобы вынуждать объекты камеры падать в низ) изменились в camera.falling и camera.falling_speed

    global.x и global.y (переменные вывода GetMousePos(...)) изменились в глобальной переменной.mouse_x и global.mouse_y

    Среда, проецирующая аддитивные работы сейчас. Это означает, что черная карта среды не сможет изменить что-либо вообще, пока белая карта среды строго внесла бы оживление всего.

    Алфавитный параметр DrawTex(...) сейчас берет значения в диапазоне с 0 до 255 вместо значений в диапазоне с 0 до 1.

    Конвертирывание Ultimate 3D проект от Game Maker 5 в Game Maker 6.0 или выше. Благодаря отсутствию совместимости Game Maker 6.0 вам нужно модифицировать некоторые подлинники, когда вы конвертируете Ultimate 3D проект от Game Maker 5 в Game Maker 6.0 или выше. Несмотря на несколько подлинников отличаются, поскольку версия Game Maker6.0 Ultimate 3D вынуждена работать без настроечного элемента "Рассматривать неинициализированную переменную как значение 0". Те нужно заменить правильными версиями, так же. Вот - список всех подлинников, которые нужно заменить соответственными версиями Game Maker 6.0 от BasicGM6.gm6 (resp. BasicGM7.gm7):

    MoveCamera()

    SetSoundPosition()

    Init()

    CreateWall()

    CreateFloor()

    CreateCube()

    Create2D()

    CreatePolygon()

    LightDirectional()

    LightPoint()

    LightSpot()

    LoadMesh()

    CreatePrimitiveFromModel()

    CreateEmptyMesh()

    ApplyParallaxAndBumpMapping()

    SetMaterialEffectLightSource()

    CreateTerrain()

    CalculateTerrainLightMap(...)

    CreateTerrainDecal()

    CreateParticleSystem()

    CreatePostScreenShader()

    К тому же следующее четыре подлинника нужно добавить группе "Private functions":

    InitializePrimitiveVariables()

    InitializeLightVariables()

    InitializeVariable()

    InitializeVariableGlobal()

    Несмотря на некоторый код в пределах объектов нужно быть измененным. Части кода в BasicGM5.gmd, который нужно изменять работать с Game Maker 6.0, или выше - часть участка памяти заканчивают событие контрольного объекта и событие шага камеры.


    © Shkola Ultimate 3D . Все права защищены.Макарский Роман (ASD_W_GAMES) And Беляков Вячеслав (ZXC76)
    Author:
    © Christoph Peters. Some rights reserved.


    Школа Ultimate3D 2009-2010 год