Среда, 24 Апреля 2024, 21:11

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Движки для разработки игр и сложные системы разработки » 3D движки для разработки игр » Уроки по Leadwerks - их уже 2
Уроки по Leadwerks - их уже 2
БомберДата: Четверг, 30 Декабря 2010, 13:24 | Сообщение # 1
The Blank
Сейчас нет на сайте
Пока занимаюсь изучением данного движка, решил написать пару уроков, чтобы самому все усвоить. Итак - приступим!

Leadwerks Engine 2.3

Урок первый

Итак, создаем папку для своего первого проекта. И туда кидаем вот эти файлы из папки с SDK:


  • Папку "Scripts"
  • engine.dll
  • engine.debug.dll
  • newton.dll
  • JointLibrary.dll
  • SciLexer.dll
  • shaders.pak
  • engine.exe

Отлично, теперь закачаем готовую сценку: КЛАЦ

Создадим папку "media" в нашем проекте, и скинем туда разархивированную папку "scene".

Итак, приступаем к скрипту! Создаем в нашей папке файл *.lua и открываем его программой "ScriptEditor.exe".

Заходим в "Tools" -> "Options" и установите путь к файлу "Engine.exe" из вашей папки, и к двум остальным из папки с SDK.

Теперь нам нужно чтобы скрипт определил корневую директорию проекта. Для этого мы назначаем абстрактный путь:

Code
RegisterAbstractPath("")

Это означает что корневой папкой будет выбрана папка в которой находится исполняемый файл.
Поскольку мы будем использовать клавиатуру в данном уроке, нам нужно добавить её скрипт:

Code
require("Scripts/constants/engine_const")

Далее мы задаем разрешение окна:

Code
Graphics(1024, 768)

И создаем "World", это сам игровой мир, "framework"(Если что, профи, подправьте):

Code
fw = CreateWorld()

Теперь нам нужно создать камеру, чтобы мы видели что происходит в этом "Мире":

Code
camera = CreateCamera()

Тоесть мы создаем имя "camera", и как бы на этом слоте создается сама камера...
И тут же нам нужно задать позицию для этой камеры. Таким же образом создаются позиции и для других объектов, а тоесть по такой контрукции:

Code
camera:SetPosition(Vec3(0,2,-10))

Тоесть пишится название объекта, двоеточие, SetPosotion(Vec3(x,y,z))
Если кому не понятно - то Vec3 это координаты, а тоесть три числа.

Далее создадим свет, а то темно будет, ага ага:

Code
light1 = CreateDirectionalLight()
light1:SetRotation(Vec3(45,45,0))

Заметьте, тут мы не определяли позицию, а выбрали вращение, которое тоже настраивается с помощью Vec3.

А теперь загрузим скачанную сцену.

Code
scene = LoadMesh("abstract::scene.gmf")

Тут мы видим как обычно задается имя, и на него ставиться Меш.
И наверно мы захотим знать загрузилась ли эта сцена или нет! Вот что нужно сделать:

Code
if scene == nil then
                Notify("Fail!!!")
else
                Notify("Done!!!")
end

Далее нам нужно создать цикл, который будет рендерить сцену все время. Мы используем цикл "While":

Code
while KeyDown(KEY_ESCAPE)==0 do

                fw:Update()
                fw:Render()

                Flip(0)

end

Это проще будет понять в виде псевдо-кода:

Code
пока КлавишаЗажата(ESCAPE)равно 0, делать следующее

                НашМир:Обновление()
                НашМир:Рендеринг()

                Щелканье (0)

конец

Итак, компилируем! Что мы видим? Эта небольшая сценка, где только что работали гастбайтеры biggrin

Leadwerks Engine 2.3

Урок второй

Итак, мы хотим полетать и рассмотреть нашу сцену. Нам нужно спрятать мышку, чтобы было как в шутерах(это добавляем после загрузки сцены):

Code
HideMouse(1)

Думаю тут пояснений не надо. Далее мы создадим переменную для обзора мышкой чтобы она хранила три координаты:

Code
camrotation = Vec3(0)

Ноль означает что значения пока нет. Теперь перейдем к самому главному, но и сложному. (Это нужно писать внутри цикла)Зададим две переменные для мышки и камеры:

Code
gx=Curve(MouseX() - GraphicsWidth() /2, gx, 10)
gy=Curve(MouseY() - GraphicsHeight() /2, gy, 10)

Это трудно понять, но если немного подумать... Теперь зададим координаты той самой переменной, которую мы создали(Это, и все остальное мы будем писать внутри цикла):

Code
camrotation.x = camrotation.x + gy / 10
camrotation.y = camrotation.y - gx / 10

Тут уже все понятно. На самом деле можно сделать управление камерой с меньшим количеством кода, но тогда камера будет вертеться очень плохо. Теперь делаем так чтобы камера смотрела туда, где мышка:

Code
camera:SetRotation(camrotation,1)

Управление камерой мышкой почти готово, осталось только сделать так, чтобы мышка была всегда в центре экрана:

Code
MoveMouse(GraphicsWidth()/2,GraphicsHeight()/2)

И делаем движение:

Code
move = KeyDown(KEY_D) - KeyDown(KEY_A), move, 10
strafe = KeyDown(KEY_W) - KeyDown(KEY_S), strafe, 10
camera:Move(Vec3(move/10, 0, strafe/10))

Тут тоже, кто хоть чуть чуть знает любой ЯП, поймет этот код.
Теперь компилируем и радуемся. Кто скажет что камера не совсем хороша -> в английском видео туториале на офф. сайте, камера была просто бешеная!

Добавлено (30.12.2010, 13:24)
---------------------------------------------
Чтоже комментов нет?




Сообщение отредактировал Бомбер - Четверг, 30 Декабря 2010, 13:19
GefreДата: Четверг, 30 Декабря 2010, 13:55 | Сообщение # 2
Любитель ретро игр
Сейчас нет на сайте
На форуме последние время можно наблюдать бум на уроки и это хорошо.
Бомбер, я хоть и не пользуюсь Leadwerks Engine , но статью прочитал. Хорошую статью написал, теперь у Gcup есть урок по Leadwerks Engine.
Quote (Бомбер)
Чтоже комментов нет?

Ты погоди, у меня такая ерунда была с Mugen, но потом всё было нормально, к тому же кому урок будет нужен найдёт твою статью и потом скажет спасибо.
P.S.Лови + в репу.



Люблю получать +


Сообщение отредактировал Gefre - Четверг, 30 Декабря 2010, 13:57
БомберДата: Четверг, 30 Декабря 2010, 14:11 | Сообщение # 3
The Blank
Сейчас нет на сайте
Quote (Gefre)
На форуме последние время можно наблюдать бум на уроки и это хорошо.

Я тоже заметил, действительно хорошо wink
Quote (Gefre)
Бомбер, я хоть и не пользуюсь Leadwerks Engine , но статью прочитал. Хорошую статью написал, теперь у Gcup есть урок по Leadwerks Engine.

Спасибо, я если я двиг хорошо выучу, есть идея создания русского сообщества.


GefreДата: Четверг, 30 Декабря 2010, 14:14 | Сообщение # 4
Любитель ретро игр
Сейчас нет на сайте
Quote (Бомбер)
Спасибо, я если я двиг хорошо выучу, есть идея создания русского сообщества.

Я не интересовался Leadwerks Engine, поэтому не знал, что у него нет сообщества. А если хорошо выучишь и захочешь создать сообщество, флаг тебе в руки.



Люблю получать +
БомберДата: Четверг, 30 Декабря 2010, 17:47 | Сообщение # 5
The Blank
Сейчас нет на сайте
Buldоzer, И все же разница есть... И уроки делал я не только для юзеров, а так же и для себя.

SlavyanOOsДата: Четверг, 30 Декабря 2010, 17:48 | Сообщение # 6
Problems, developer?
Сейчас нет на сайте
Мой урок лучше, мой урок со скринами. biggrin
А вот второй урок нужен - я на свои забил.


Сообщение отредактировал SlavyanOOs - Четверг, 30 Декабря 2010, 17:48
БомберДата: Четверг, 30 Декабря 2010, 17:50 | Сообщение # 7
The Blank
Сейчас нет на сайте
SlavyanOOs, В твоем нету выхода по нажатию на ESCAPE biggrin

GamePlayerProДата: Пятница, 31 Декабря 2010, 13:42 | Сообщение # 8
был не раз
Сейчас нет на сайте
Бомбер, у тебя их два, и это главное.
Совет: сделай подсветку кода в уроке, как у SlavyanOOs
happy


Играю игры, делаю игры, ненавижу игры
o_O, товарищи!


Сообщение отредактировал GamePlayerPro - Пятница, 31 Декабря 2010, 16:29
БомберДата: Пятница, 31 Декабря 2010, 13:50 | Сообщение # 9
The Blank
Сейчас нет на сайте
GamePlayerPro, Спасибо. Надо сделать, так красиво. Следующий урок будет по звуку biggrin

stunderДата: Среда, 27 Июля 2011, 14:46 | Сообщение # 10
был не раз
Сейчас нет на сайте
Таков вопрос. Вот я в эдиторе сделал сцену. А как ее запустить? В игре. Движком.
nilremДата: Среда, 27 Июля 2011, 15:14 | Сообщение # 11
Просветленный разум
Сейчас нет на сайте
Quote (stunder)
Вот я в эдиторе сделал сцену. А как ее запустить? В игре. Движком.


Ты чем первый урок читал, самое начало? Все указанные файлы в кучу скидай и сцену туда и запускай engine.exe.

Надо же как Leadwerks поднялся. Я когда-то на нем демо дизайна делал, так выглядело страшненько. А сейчас графика на высоте.


Windmill 2

WindMill 2D Game Engine
stunderДата: Среда, 27 Июля 2011, 18:23 | Сообщение # 12
был не раз
Сейчас нет на сайте
Да, читал smile
Цитирую код: scene = LoadMesh("abstract::scene.gmf")
А то, что создано в editor имеет другой формат

Добавлено (27.07.2011, 18:23)
---------------------------------------------
Нутс? Никто не знает?

nilremДата: Среда, 27 Июля 2011, 19:09 | Сообщение # 13
Просветленный разум
Сейчас нет на сайте
Quote (stunder)
Нутс? Никто не знает?


Че там знать то. Вместо LoadMesh("abstract::scene.gmf") пиши LoadScene("четотут.sbx").
У Бомбера сцена была мешем.


Windmill 2

WindMill 2D Game Engine
stunderДата: Среда, 27 Июля 2011, 20:57 | Сообщение # 14
был не раз
Сейчас нет на сайте
Хм. Если в едиторе проиграть, все выглядит гораздо круче. А если запустить скриптом, что указан выше, то как-то все ужасно выглядит. А между тем, когда запускаешь в эдиторе, там и оружие есть и тд. Не знаете, можно ли скрипт запуска в эдиторе выудить?
SlavyanOOsДата: Среда, 27 Июля 2011, 21:26 | Сообщение # 15
Problems, developer?
Сейчас нет на сайте
Да, где в папке SDK есть Scripts, там Game Scripts. Вроде бы так. Сейчас не дома, посмотреть не могу.
stunderДата: Среда, 27 Июля 2011, 22:08 | Сообщение # 16
был не раз
Сейчас нет на сайте
Дада, перекопипастил скрипт fpsблаблабл, при запуске вылет =(
null framewerk object

Добавлено (27.07.2011, 22:08)
---------------------------------------------
Я знаю, что страшно нублю, ну я мало что понимаю в луа скриптах. Меня в данный момент интересует как переделать скрипт fpscontroller.lua в качестве start.lua, чтобы загружалась сцена, к примеру tunnel

Добавлено (27.07.2011, 22:08)
---------------------------------------------
Не можешь ли мне помочь? Буду страшно благодарен

CTAPbIu_KODEPДата: Суббота, 13 Августа 2011, 09:40 | Сообщение # 17
был не раз
Сейчас нет на сайте
хороший движок, жаль русского сообщества нет sad
CCCRДата: Среда, 30 Ноября 2011, 20:01 | Сообщение # 18
почетный гость
Сейчас нет на сайте
Бомбер, Как в exe файл компилировать сцену?

Если помог, ставь +
Мои проекты:
[3D]-Cube
[2D]-GTA Dead Man
[2D]-SOLT

jekardo666Дата: Четверг, 26 Апреля 2012, 22:09 | Сообщение # 19
был не раз
Сейчас нет на сайте
А можно ли Leadwerks Engine поставить на Blitz3D?

Ничто не истино. Все бульдожкино))
The_WitcherДата: Четверг, 26 Апреля 2012, 23:06 | Сообщение # 20
The Witcher
Сейчас нет на сайте
Quote (jekardo666)
А можно ли Leadwerks Engine поставить на Blitz3D?

Интересно, как это ты себе это представляешь xD
Форум игроделов » Движки для разработки игр и сложные системы разработки » 3D движки для разработки игр » Уроки по Leadwerks - их уже 2
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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