3D Game Engine для сетевого мирового моделирования / Песочница AI [закрыто

StackOverflow https://stackoverflow.com/questions/2471702

Вопрос

Более 5 лет назад я играл с DirectSound и Direct3D, и я нашел это действительно захватывающим, хотя потребовалось много времени, чтобы получить хорошие результаты с C ++. Я тогда был студентом колледжа. Теперь у меня в основном опыт развития предприятий в C# и PHP, и я делаю это для жизни. На самом деле нет шансов заработать деньги с серьезным развитием игры в нашей стране. Каждый день все больше и больше я нахожу, что что -то скучаю. Поэтому я решил проводить час или около того каждый день, чтобы выполнять программирование для развлечения.

Поэтому моя идея состоит в том, чтобы построить мировую симуляцию. Я хотел бы начать с чего -то простого - некоторых человеческих существ, которые живут своей жизнью - например, Sims 3, но гораздо более простые, просто основные потребности, основные анимации, минимальные графические активы - я думаю, это не город, а просто Большой дом для начала. Идея состоит в том, чтобы иметь какое -то приложение сервера, которое хранит мировые данные в базе данных MySQL, и некоторые клиентские приложения - боты ИИ без тела, которые имитируют движение и некоторые взаимодействия с миром и друг с другом. Но это не было бы весело без 3D. Таким образом, есть также 3D -клиенты - я могу войти в этот виртуальный мир и увидеть живые боты ИИ. Когда бот входит в видимую область, он становится материалом - загружает сетку и анимацию, поэтому я вижу это. Когда я ухожу, боты снова теряют свои 3D -сетчатые тела, но их виртуальная жизнь все еще продолжается.

Со временем я надеюсь сделать это как какая -то расширяемая сценария песочницы для экспериментов с различными алгоритмами ИИ и так далее. Но я не намерен создавать полномасштабную MMORPG: D

Я искал много возможных вещей, которые мне понадобятся (бесплатно и открытый исходный код), и теперь я должен сделать выбор:

  • OGRE3D + ENET (или RAKNET). Старый хороший C ++. Но разве это не замедлит меня так сильно, что мне больше не будет веселья?

  • Crystalspace. Формально не игровой двигатель, но очень близко к этому. C ++ снова.

  • Mogre (OGRE3D обертка для .NET) + Lidgren (сетевая библиотека, которая уже используется в некоторых игровых проектах). Хорошо - мне нравится C#, он хорош для быстрого программирования, а также может использоваться для сценариев.

  • XNA кажется просто структурой, а не двигателем, так что действительно есть сомнения, если я даже посмотрю на игру XNA Game Studio :(

  • PANDA3D - Полный игровой двигатель с положительными отзывами. Мне очень нравится идея иметь весь набор инструментов в одном пакете, у него хорошие отзывы в качестве двигателя для начинающих ... если вы знаете Python. На стороне C ++ Panda3D имеет почти несуществующую документацию. У меня есть 0 опыта с Python, но я слышал, что его легко выучить. И если это будет весело и сложно, то, я думаю, я бы выиграл от опыта на одном языке программирования.

Что из них вы бы предложили, не из -за расширенных функций или хорошей поддержки платформы, а в основном для веселья, простых рабочих процессов и расширения, и поэтому я могу создавать и интегрировать все необходимые мне компоненты - сервер с базой данных, AI -ботов и 3D Клиентское приложение?

Это было полезно?

Решение

Если вам нравится Python, есть привязки для OGRE. Проверить Python-Ogre. Анкет Я использовал это немного, и это казалось достаточно стабильным, чтобы его использовали. Однако вы столкнетесь с случайной ошибкой, поскольку пользовательская база не такая большая.

У меня есть больше опыта с простой C ++ OGRE, который мне нравится много использовать. Я не думаю, что это замедлит вас так сильно. Похоже, что ваш проект может масштабироваться до довольно большого уровня, и вам понадобится много производительности, чтобы сделать это. В этом случае C ++ никогда не является плохим выбором.

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

Другие советы

Я использовал только XNA, поэтому я не могу дать вам хорошее сравнение с другими. Я скажу, что пока XNA - это просто рамка, Torquex 3d это двигатель. Вы получаете доступ к бинальности Torquex 2D и 3D Engine, когда вы регистрируетесь для разработки для XNA (100 долларов в год).

Я не работал с 3D -двигателем, но я использовал 2D -двигатель. Я скажу, что документация об API может быть немного разреженной, но у них есть действительно хорошие учебники для введения и довольно полезный и активный форум для вопросов, на которые не отвечают учебные пособия.

Ваш опыт работы с C#, очевидно, очень удобен. Вам придется придерживаться разработки Windows, потому что у вас не будет доступа к стеку сети (или базы данных) на Xbox 360.

Как только я проработал учебные пособия и привык к стилю крутящего момента, я обнаружил, что с ним довольно весело работать. Это очень легко добавить объекты/поведение. Звуковая поддержка была улучшена и сделана действительно проста с некоторыми из последних выпусков XNA Framework. У него есть хороший редактор для 2D, и я думаю, что 3D -редактор также приличный (не пробовал это), чтобы помочь вам начать создание уровней. Я полагаю, что в отделе сети/базы данных ему не хватает, вам придется использовать стандартный материал .NET или привлечь другие библиотеки для работы.

Я думаю, что это стоило бы вашего времени, чтобы взглянуть на это и сравнить это с другими. Я считаю, что вы можете скачать бесплатную (30 -дневную) пробную версию, даже не подписываясь на XNA, если хотите поиграть с ним. Удачи!

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

Используя Innodb, вы можете сделать таблицы что -то вроде моего SQL, вероятно, выключено, но это дает идею:

create table `vertex` (
  `id` bigint(15) not null auto_increment,
  `when` timestamp default now() not null,
  `x` number not null,
  `y` number not null,
  `z` number not null,
  `cR` number default 0.0 not null,
  `cG` number default 0.0 not null,
  `cB` number default 0.0 not null,
  `cA` number default 1.0 not null,
  `u` number default 0.5 not null,
  `v` number default 0.5 not null
) primary key (id) ENGINE=InnoDB;

create table triangles (
  `p1` bigint(15) not null references (vertex.id) on delete restrict on update cascade,
  `p2` bigint(15) not null references (vertex.id) on delete restrict on update cascade,
  `p3` bigint(15) not null references (vertex.id) on delete restrict on update cascade,
  `when` timestamp default now() not null
) primary key (p1,p2,p3) ENGINE=InnoDB;

ID - это идентификатор вершины, когда временная метка позволяет сделать обновление патчей x, y, z - 3D -точка вершины CR, CG, CB, CA - это RGBA Vertex Color U, V - координата текстуры вершины P1, P2, P3. В таблице Vertex для формирования треугольников, как указано этими ссылками на внешнее ключ ... Innodb позволяет нам предотвратить неопределенную вершину (т.е.: согласованность), так и могут также использовать ее. Если приемлемо удалить все треугольники с удаленной вершиной в вашей ситуации, изменение «ограничить» для «каскада» (ограничение делает ошибкой для удаления вершины с треугольниками, которые ее используют)

Что касается алгоритма сетки бота, то в основном вы внедряете отбор для ботов для ботов. Многие двигатели уже могут сделать это для вас. Например, все сетки кожи/анимации бота могут быть сделаны детьми на внешнем объекте бота в Panda3D, и если внешний объект бота отбрасывается из видимой области, тогда ни на одну из детей не упоминается вообще.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top