Структура создания игр, с++/Directx OpenGL, #новичкам
| |
elianyyf | Дата: Вторник, 06 Мая 2014, 00:18 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Знаю что есть куча вопрос на эту тему, но те, что я находил, либо не давали ответа на мой вопрос, либо ответы 2008-2009 годов, что не гуд. Собственно вопросы: 1)Вот допустим я изучил с++, взялся изучать Directx, какие возможности его? Я как бы не могу понять самую структуру написания игры. В Directx можно ли совать 3д модели, сделанные в том же 3д максе? Как создавать текстуры, уровни и интерфейс пользователя, не думаю что с++ и директа или Опена хватит для создания игры, хотя об этом только и слышу. 2)Чем отличается Directx и OpenGL, что лучше? В одной статье обосрали Опен в другой Директ, сиди и думай что юзать. Говорят что ОПен плохо стал поддерживатся но он мол кроссплатформенный. 3)Где создается сам мир игры, как и где это все рисуется, что бы заранее знать с чем придется иметь дело? 4)По поводу библиотек, кучу нашел, но не знаю какие толковые, кому не сложно назовите пару нормальных библиотек с норм документацией. 5)Можно ли на с++ писать не только под виндовс игры? Нашел разные ответы, не понятно кому верить. 6)Последовательность изучения книг по с++(Например с++ для чайников, 21 день, Страуструп), нашел на форуме только какие есть, хотя и в гугле мог бы найти, а правильную последовательность.
Кому не трудно, опишите структуру и инструменты для создания игры. Полноценную 3D. И ещё вопрос, если создавать онлайн игру, то что ещё нужно к этому всему что я наговорил?
Движки не предлагайте, их всех слышал, в планах другие вещи. Поиск на форуме юзал, не нашел конкретных ответов.
Спасибо.
Сообщение отредактировал elianyyf - Вторник, 06 Мая 2014, 00:21 |
|
| |
Storm54 | Дата: Вторник, 06 Мая 2014, 12:21 | Сообщение # 2 |
постоянный участник
Сейчас нет на сайте
| Цитата либо ответы 2008-2009 годов, что не гуд. Ничего особо не поменяется. Цитата В Directx можно ли совать 3д модели, сделанные в том же 3д максе? Тебе придется написать свой загрузчик 3D модели. По сути, любой 3D формат представляет из себя набор вершин, некоторые хранят данные об анимации. Найти документацию по какому-либо открытому формату достаточно просто. Да и готовые загрузчики тоже есть в сети. В DirectX уже реализована поддержка формата .X - его на первое время хватит. Цитата Как создавать текстуры, уровни и интерфейс пользователя, не думаю что с++ и директа или Опена хватит для создания игры, хотя об этом только и слышу. Достаточно взять и поискать, что означает каждое, написанное тобою, слово. Текстура - грубо говоря обычная картинка. Уровень - это вообще слишком обширное понятие, т.к. может включать в себя модели, текстуры, позиции источников освещения и т.п. Формат уровня, как и редактор придется писать самому. Интерфейс в большинстве случаев представляет из себя несколько текстур. Хотя в наше время отдают предпочтение и 3D интерфейсу, который рендерится перед камерой.
Цитата Где создается сам мир игры, как и где это все рисуется, что бы заранее знать с чем придется иметь дело? Мир игры представляет из себя совокупность уровней. Об уровнях я написал выше. Каждый кадр тебе придется сформировать набор геометрии, который должна будет отрендерить видеокарта - это грубо говоря.
Цитата По поводу библиотек, кучу нашел, но не знаю какие толковые, кому не сложно назовите пару нормальных библиотек с норм документацией. Какие именно библиотеки тебя интересуют? DirectX хорошо документирован. В SDK даже примеры есть.
Цитата Можно ли на с++ писать не только под виндовс игры? Нашел разные ответы, не понятно кому верить. C++ - просто язык программирования. Все, что ты пишешь представляет из себя обычные текстовые файлы. А вот их преобразованием в машинный код занимается компилятор. Так что все зависит от того, есть ли компилятор под нужную тебе ОС. Универсальный код в большинстве случаев написать не получится( не используя ухищрения ), т.к. API каждой ОС отличается.
Цитата И ещё вопрос, если создавать онлайн игру, то что ещё нужно к этому всему что я наговорил? Тебе нужно будет реализовать работу с одним из сетевых протоколов. В большинстве случаев это UDP или TCP.
Цитата Движки не предлагайте, их всех слышал, в планах другие вещи. Поиск на форуме юзал, не нашел конкретных ответов. Судя по твоим вопросам, у тебя совсем нет представления о создании даже простых приложений. Если ты не представляешь, как именно все работает, то написать почти с нуля(что именно ты и собираешься) невозможно. А если у тебя нет и знаний математики(включая выш. мат.) то твои шансы равны нулю. Именно нулю, как бы разочаровывающе это не звучало.
Так что для начала бери какой-нибудь движок, например Irrlicht, и работай с ним. По этому движку я могу тебя проконсультировать. Почему именно он, а не какой-нибудь Unity3D ? Потому что он представляет из себя одну библиотеку, которую ты подключаешь в IDE и пишешь на C++. Другие, более мощные движки, например Unity3D, CryEngine, Unreal Engine, представляют из себя целый набор инструментов. Научиться на них программировать гораздо труднее. Лучше начинать с чего-нибудь более приземленного.
Цитата Чем отличается Directx и OpenGL, что лучше? В одной статье обосрали Опен в другой Директ, сиди и думай что юзать. Говорят что ОПен плохо стал поддерживатся но он мол кроссплатформенный. DirectX - целый ряд библиотек, предоставляющих работу со звуком, графикой, сетью и устройствами ввода. Однако, DirectX функционирует лишь на Windows(ну и в какой-то мере на консолях. Там есть свои обертки. Например Sony DirectX) OpenGL (Open Graphics Library) - представляет из себя набор кроссплатформенных библиотек, предоставляющих работу исключительно с графикой.
Сообщение отредактировал Storm54 - Вторник, 06 Мая 2014, 12:21 |
|
| |
elianyyf | Дата: Вторник, 06 Мая 2014, 12:35 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Спасибо большое за ответы. Т.к. у вас 8 лет работы, думаю стоить прислушаться и начать с движка Irrlicht. Я так понял, это библиотека которая просто инклюдится, и без знания с++ я ничего все равно не сделаю, нужно сначала язык выучить, правильно? На счет текстур и мира, то это понятно что картинка, модели и т.д., я хотел узнать где это все рисовать, куда импортировать? Потому что на данный момент я думаю, что просто взял нарисовал картинку в фотошопе и вставил.
|
|
| |
Storm54 | Дата: Вторник, 06 Мая 2014, 12:46 | Сообщение # 4 |
постоянный участник
Сейчас нет на сайте
| Цитата Я так понял, это библиотека которая просто инклюдится, и без знания с++ я ничего все равно не сделаю, нужно сначала язык выучить, правильно? Да, библиотека просто подключается к какой-нибудь IDE, например Visual Studio. При работе с Irrlicht потребуется хорошее знание C++, в частности ООП. Советую посетить русский сайт Irrlicht там можно найти много советов и примеров.
Цитата я хотел узнать где это все рисовать, куда импортировать? Потому что на данный момент я думаю, что просто взял нарисовал картинку в фотошопе и вставил. Нужно экспортировать в тот формат, который поддерживается движком. Если пишешь с нуля, то тогда поддержку формата нужно реализовать самому.
|
|
| |
elianyyf | Дата: Вторник, 06 Мая 2014, 12:53 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| Как то мутно все про текстуры и т.д., думаю пока не стоит заморачиватся, знаю зато куда копать. Ещё пару советов пожалуйста и можно закрывать тему.
Сейчас стоит среда VS 2012, работать в ней или скачивать более новые версии? И раз такой у вас большой опыт по с++, посоветуйте книги по с++, знаю что их много и загуглить без проблем, но отзывы разные и не знаешь, в какой правильной последовательности их читать. Спасибо.
|
|
| |
Folleah | Дата: Вторник, 06 Мая 2014, 13:03 | Сообщение # 6 |
Архитектор
Сейчас нет на сайте
| elianyyf, вы какие языки программирования знаете?
|
|
| |
elianyyf | Дата: Вторник, 06 Мая 2014, 13:04 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| PHP js ну и соответственно html css, чуть больше года
Сообщение отредактировал elianyyf - Вторник, 06 Мая 2014, 13:05 |
|
| |
Snake174 | Дата: Вторник, 06 Мая 2014, 13:13 | Сообщение # 8 |
участник
Сейчас нет на сайте
| Цитата Сейчас стоит среда VS 2012, работать в ней или скачивать более новые версии? Можешь эту оставить. У меня вообще 2010 стоит и вполне её хватает.
Цитата посоветуйте книги по с++, знаю что их много и загуглить без проблем, но отзывы разные и не знаешь, в какой правильной последовательности их читать Я думаю, тут не важно в какой последовательности читать. В институте изучали С++, писали простые программы на TurboC, можно даже сказать, что не знал его. На работу устроился, там C++ в связке с Qt используют, программируют под винду и линукс. Давали какие-то задания, так потихоньку и стал С++ понимать. Начни с простых приложений, например чтение текста из файла, потом посложнее и т.д. Так потихоньку и будет всё получаться.
Не следует обманывать инспектора Pipmak Assistant Love2D Exporter Love2D-Helpers Old Consoles Games
|
|
| |
elianyyf | Дата: Вторник, 06 Мая 2014, 13:17 | Сообщение # 9 |
был не раз
Сейчас нет на сайте
| Спасибо всем. Все что хотел узнал.
|
|
| |
Folleah | Дата: Вторник, 06 Мая 2014, 13:19 | Сообщение # 10 |
Архитектор
Сейчас нет на сайте
| Хотя вы все уже узнали, но я советую подучить клиентские ЯП (с паскаля начните), прежде чем таких гигантов (вроде С++) изучать. Можете даже не стараться, не зная банальных принципов клиентского программирования, это дело вам быстро надоест (тут вот паскаль и пригодится). Я тоже начинал с PHP, потом выучил паскаль, теперь вот Java учу.
Сообщение отредактировал Folleah - Вторник, 06 Мая 2014, 13:20 |
|
| |
Snake174 | Дата: Вторник, 06 Мая 2014, 13:28 | Сообщение # 11 |
участник
Сейчас нет на сайте
| Цитата Кому не трудно, опишите структуру и инструменты для создания игры. Полноценную 3D. PhotoShop или Gimp для рисования текстур. Blender, Maya, 3DMax, ... для создания моделей Для создания музыки что-нибудь
OpenGL или DirectX для написания графического движка. Лучше OpenGL, если хочешь не только под винду писать.
Java + LibGDX или LWJGL тоже неплохо )
Цитата И ещё вопрос, если создавать онлайн игру, то что ещё нужно к этому всему что я наговорил? Возьми какую-нибудь библиотеку для работы с сетью, например enet или zeromq. Так быстрей будет, чем что-то своё писать.
Не следует обманывать инспектора Pipmak Assistant Love2D Exporter Love2D-Helpers Old Consoles Games
|
|
| |
goldsphere | Дата: Четверг, 08 Мая 2014, 11:59 | Сообщение # 12 |
заслуженный участник
Сейчас нет на сайте
| Цитата Folleah ( ) Хотя вы все уже узнали, но я советую подучить клиентские ЯП (с паскаля начните), прежде чем таких гигантов (вроде С++) изучать. По своему опыту могу сказать, что не обязательно, всё что есть в паскале, есть в Си, и почему бы не пользоваться этим в Си, заодно изучая его. Когда почувствуете, что вполне освоились, можно уже углубляться в вещи, которые некоторые считают "сложными".
FinderX - Android Аркада
Сообщение отредактировал goldsphere - Четверг, 08 Мая 2014, 12:00 |
|
| |
OoOoOoO | Дата: Среда, 14 Мая 2014, 16:36 | Сообщение # 13 |
был не раз
Сейчас нет на сайте
| Storm54, Цитата Storm54 ( ) Так что для начала бери какой-нибудь движок, например Irrlicht, и работай с ним. какой интересный движок, нужно попробовать.
C#|.NET - ASP.NET, ASP.NET MVC/WebAPI, WinForm, WCF, Service, Entity Framework/NHibernate... jquery, javascript Objective-C
|
|
| |
DantorS | Дата: Среда, 14 Мая 2014, 17:40 | Сообщение # 14 |
заслуженный участник
Сейчас нет на сайте
| Цитата elianyyf ( ) Вот допустим я изучил с++, взялся изучать Directx, какие возможности его? DirectX - это просто несколько библиотек с набором функций. Не понимаю что ты имеешь ввиду под возможностями. Цитата elianyyf ( ) В Directx можно ли совать 3д модели, сделанные в том же 3д максе? Ну если у тебя есть исходный код 3д макса, то да сможешь. Если нет - придётся либо создать экспортер, либо загружать в свою программу общие форматы файлов для 3д моделей (obj,fbx,dae и т.д.). Цитата elianyyf ( ) Как создавать текстуры, уровни и интерфейс пользователя, не думаю что с++ и директа или Опена хватит для создания игры, хотя об этом только и слышу. Текстуры, уровни в 3д максе, например. Интерфейс пользователя: по сути у тебя осталса тот же си ++ но с графической оболочкой. Твори чё хочешь. Цитата elianyyf ( ) Чем отличается Directx и OpenGL, что лучше? Директ чуть-чуть лучше по графике. OpenGL - по оптимизации. Опен гл поддерживается далеко не всеми видеокартами (я имею ввиду посление версии). Директ проще изучать, т.к. у него практически на всё есть свои функции. У опен гл - лишь всё базовые. Остально там иллюзия технологий. (как GI и fake GI). Там даже света нет. Но могу заметить что большинство 3д редакторов написаны на опен гл. Цитата elianyyf ( ) Где создается сам мир игры, как и где это все рисуется, что бы заранее знать с чем придется иметь дело? В отдельных программах (3д макс, например). Все не могу перечислить. Цитата elianyyf ( ) По поводу библиотек, кучу нашел, но не знаю какие толковые, кому не сложно назовите пару нормальных библиотек с норм документацией. Каких библиотек? Цитата elianyyf ( ) Можно ли на с++ писать не только под виндовс игры? Нашел разные ответы, не понятно кому верить. Ты можешь писать на любом языке, даже придумать свой. Все готовые программы - это скомпилированные приложения. Т.е. тебе нужен лишь язык и компилятор.
|
|
| |
DragYourAssets | Дата: Среда, 14 Мая 2014, 18:45 | Сообщение # 15 |
CHANGIN' ENGINES
Сейчас нет на сайте
| Цитата DantorS ( ) Директ чуть-чуть лучше по графике. OpenGL - по оптимизации. Опен гл поддерживается далеко не всеми видеокартами (я имею ввиду посление версии). Директ проще изучать, т.к. у него практически на всё есть свои функции. У опен гл - лишь всё базовые. Остально там иллюзия технологий. (как GI и fake GI). Там даже света нет. Но могу заметить что большинство 3д редакторов написаны на опен гл. Рассмеялся с каждого предложения. Ты хоть раз пробовал использовать OpenGL?
|
|
| |
DantorS | Дата: Среда, 14 Мая 2014, 19:05 | Сообщение # 16 |
заслуженный участник
Сейчас нет на сайте
| Да, и пробывал писать. Как дошло до света - я решил - да ну в жопу, директ проще Добавлено (14.05.2014, 18:57) --------------------------------------------- Про оптимизацию почитал в интернете. А по поводу: Цитата DantorS ( ) Опен гл поддерживается далеко не всеми видеокартами На моём компьютере поддерживается только 2 вестия опен глДобавлено (14.05.2014, 19:05) --------------------------------------------- А сейяас уже 4
|
|
| |
DragYourAssets | Дата: Среда, 14 Мая 2014, 19:13 | Сообщение # 17 |
CHANGIN' ENGINES
Сейчас нет на сайте
| Цитата DantorS ( ) Как дошло до света - я решил - да ну в жопу, директ проще Что там, что там освещение делается похожим образом - через шейдеры. А фиксированные графические конвейеры давно в прошлом. Цитата DantorS ( ) На моём компьютере поддерживается только 2 вестия опен гл Современные версии OpenGL (начиная с 3) поддерживаются, начиная с GeForce 8. Что же у тебя за мастодонт такой заместо пеки? Цитата DantorS ( ) Про оптимизацию почитал в интернете. И где же ты, интересно, это прочитал?
|
|
| |
DantorS | Дата: Среда, 14 Мая 2014, 19:27 | Сообщение # 18 |
заслуженный участник
Сейчас нет на сайте
| Ладно, был неправ. Цитата DragYourAssets ( ) Что там, что там освещение делается похожим образом - через шейдеры. А фиксированные графические конвейеры давно в прошлом. Я первый раз об этом слышу, можно подробнее?
|
|
| |
DragYourAssets | Дата: Среда, 14 Мая 2014, 19:36 | Сообщение # 19 |
CHANGIN' ENGINES
Сейчас нет на сайте
| Цитата DantorS ( ) Я первый раз об этом слышу, можно подробнее? Суть в том, что в старых фиксированных графических конвейерах все алгоритмы трансформации, освещения, текстурирования были "зашиты" в библиотеку, и программист не мог менять их и довольствовался тем, что есть. Программируемый же графический конвейер при помощи шейдеров заставляет самому контролировать все эти процессы, что позволяет получать нужную тебе картинку.
|
|
| |
DantorS | Дата: Среда, 14 Мая 2014, 19:46 | Сообщение # 20 |
заслуженный участник
Сейчас нет на сайте
| А можно ссылочку? Где сожно об этом почитать. Как это делается, примеры. По документации долго искать.
|
|
| |
|