ПрограммированиеФорумГрафика

Игровой движок. Создание с нуля. (4 стр)

Страницы: 13 4 5 610 Следующая »
#45
15:32, 26 окт 2009

aRpi
угууу..
тогда я сделаю контроллеры сущностям..  сделаю для камеры какойнить FollowController , в него передам указатель на камеру и объект и добавлю камере в список её контроллеров.  собсно при апдейте он буит получать позицию и т.д. игрока и выставлять камере новую ориентацию

#46
15:50, 26 окт 2009

у меня вот так:

сущности абсолютно все общаются друг с другом при помощи делегатов, камера это тоже сущность, камер может быть несколько
у всех сущностей есть метод "апдейт", даже если он не нужен он все равно есть просто пустой

камера, сама по себе во время апдейта, через делегат, узнаёт позицию сущности и начинает преследовать эту сущность....
в делегате храниться указатель на сущность и указатель на метод от сущности позволяющий узнать позицию этой сущности

#47
16:23, 26 окт 2009

L
> 1b StaticForm
> 1ba тут любай статичная гометрия уровня - стены, пол, забор и т.д.
Ура^^!

#48
18:35, 26 окт 2009

aRpi
я считаю что камера не должна уметь "следить" за объектом и т.д.
У меня так: есть сущность "человек", есть сущность "камера"  сами по себе они отдельны.. камера ни чо не делает, как и в жизни, а есть контроллер  - (в жизни - рука) вот контроллер человека  (рука) и юзает камеру..  кактотак :  )  остальные взаимосвязи решено заскриптовать на LUA

iGod
> Ура^^!
ага  \(^_^)/

#49
19:00, 26 окт 2009

таак.  Вопрос по LUA.

Вот есть у меня  класс  LifeAI

у него есть методы 

public  AIPipe CreateAiPipe(...);
public  bool  PushGoal(sting pipeName, string goal);


я могу зарегистрировать функции CreateAiPipe и PushGoal в луа и вызывать из скрипта, это просто!
А как сделать чтото вроде нэймспейса?  чтобы в скрипте вместо

PushGoal("attackEnemy", "hide");

писать

AI::PushGoal("attackEnemy", "hide");

#50
19:17, 26 окт 2009

 L 
> А как сделать чтото вроде нэймспейса?
Статические функции?

#51
19:37, 26 окт 2009

 L 
> таак. Вопрос по LUA.
> Вот есть у меня класс LifeAI
> у него есть методы
> public AIPipe CreateAiPipe(...);
> public bool PushGoal(sting pipeName, string goal);
>
> я могу зарегистрировать функции CreateAiPipe и PushGoal в луа и вызывать из
> скрипта, это просто!
> А как сделать чтото вроде нэймспейса? чтобы в скрипте вместо
> PushGoal("attackEnemy", "hide");
> писать
> AI::PushGoal("attackEnemy", "hide");

1.
есть такое понятие lua-subclassing, то есть связывание native объектов(методы и переменные) с объектами lua - скрипта
для AI связываете с нативным синглетоном AI, в случае с Entity производится связывание с нативным динамическим объектом.
Существуют различные уже готовые библиотеки, при желании можно написать и свою.
2.
далее в lua средствами языка несложно организовать классы и наследование, создание динамических объектов и синглетонов

#52
19:40, 26 окт 2009

 L 
> далее спорные моменты, которые я не могу решить:
> что есть Entity? Это игрок, триггер, стул.. а стена, она Entity? Я имею
> ввиду обычную стену, которая тупо является Solid объектом и всё! В ней нет
> игровой логики. Она к чему относится? если не она Entity, то что? И в каком
> виде хранить? Хранить в игрвом двиге или достаточно засунуть в физический и
> графический?

существуют простые Entity типа свет, меш, триггер, и.т.д, существуют сложные Entity содержащие в себе другие Entity типа: стул, игрок, дверь

#53
19:45, 26 окт 2009

 L 
> вот я гружу ща Entity класса Player.. Entity player =
> EntityFactory.LoadEntity("блаблабла.xml");
> а как мне стену грузить? она вроде не Entity.. тогда мне её не учитывать в
> игровом двиге?

стены обычно относятся к так называемой статической геометрии уровня(или статика),  глобально все стены на уровне порезаны под зоны подзагрузки, во время design time производится preprocess level, который учитывает зоны видимости, нарезает на DIP`ы, строит Octree и BSP, и многое другое, записывается и затем грузится одним куском.

#54
19:48, 26 окт 2009

 L 
> Ещё: у меня есть класс сцены в граф двиге.. получается мне нужно делать опять
> класс сцены в игровом?

сцен нужно столько сколько нужно, к примеру есть сцена 2D пульта на которым можно нажимать кнопочки, и что то анимируется, и этот пульт стоит в 3D сцене, или вы о чем?

#55
19:54, 26 окт 2009

xDimka
> в случае с Entity производится связывание с нативным динамическим объектом.
ты об этом?  (я вот так ещё сейчас тестил)

luanet.load_assembly ("LifeGameEngine");
message = luanet.import_type("LifeGameEngine.Message");
mymessage = message();
ShowMessage(mymessage);
HellishShutdown();

а хотелось бы чтото типа

GE = luanet.load_assembly ("LifeGameEngine");
message = luanet.import_type("LifeGameEngine.Message");
mymessage = message();
GE:ShowMessage(mymessage);
HellishShutdown();


xDimka
> далее в lua средствами языка несложно организовать классы и наследование
набросай мегапростой пример, пожалуйста.
вот может я захочу AI вообще забацать чисто на Lua..  как мне сделать класс, добавить методы?


LowPolyMan
> Статические функции?
да, статичные

#56
19:56, 26 окт 2009

 L 
> Эпизод III. It has began...
> Как я себе представляю игровой двиг:

предлагаю вам рассмотреть движок с другой плоскости -
с анализа технологичесого процесса производства игр на этом двиге, от модели и текстур, материалов, анимаций, скриптов, и.т.д в сторонних(своих ?) редакторах -> к реальной игре на двиге, так как эта сторона самая важная в движке нежели сам движок, так как она определяет за сколько времени(считай денег) и проект какого уровня можно на нем будет собрать.

#57
21:51, 26 окт 2009

xDimka
ды я себе более-менее уже представляю.. и создание (в своём!) редакторе уровней, сущностей, редактирование материалов, как, в каком виде и где всё хранится и т.д.  Уже продумал ИИ.. осталось только сделать. И тем не менее повторюсь:

> > xDimka
> > далее в lua средствами языка несложно организовать классы и наследование
> набросай мегапростой пример, пожалуйста.
> вот может я захочу AI вообще забацать чисто на Lua.. как мне сделать класс,
> добавить методы?

#58
22:44, 26 окт 2009

Так, я нашёл как создавать классы, использовать наследование - это мегапросто! : )
Ок, но я не совсем ещё знаком с LUA поэтому спрошу:
у ЛУА есть такой метод: DoFile()  через него выполняются скрипты в луа... ок.
Например я хочу создать систему ИИ полностью на LUA. Я создам класс, добавлю методы и т.д. получится дольшая такая система - это будет один скриптовый файл!  После того, как он ВЫПОЛНИТСЯ  (выполнится инициализация AI) - я смогу этим классом пользоваться? Он остаётся в памяти или после выполнения скрипта выгружается?    (я думаю остаётся, но всёже перепроверю)

#59
22:48, 26 окт 2009

и да, у кого больше опыта в кодинге под луа...  вообще реально создать норм ИИ на нём?  Я имею ввиду какие-нибудь ограничения языка (предположим что на C#/C++ я сделаю, смогу ли я сделать на LUA его средствами)

Страницы: 13 4 5 610 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.