forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   ЯП & Gamedev(взгляд изнутри) (http://forum.boolean.name/showthread.php?t=8043)

Baisangur 23.03.2009 10:04

ЯП & Gamedev(взгляд изнутри)
 
Привет форумчане!
Хочу узнать я, насколько C++ вообще пригоден для создания игровых приложений? Я уже такую тучу инфы начитался, что у С++ управление памятью не динамическое и писать игру на нём - это настоящее задротство, но опятьже я думаю, что управлять памятью можно и ручками, зато скорость. Еще мне расхваливают, постоянно, Python, мол лучше для игр не найти. Правда? А как же защитить код на нём? Ведь скрипт...
Также мой взор нацелен и на Java, конечно 3D возможности её ранее были убоги, но сейчас уже не первый год живет проект jMonkeyEngine(Open Source), который финансируют очень крупные и солидные фирмы(SUN MicroSystems, NCSoft(Lineage I, II; GuildWars, AION). И НЦСофт даже разрабатывает игру на этом движке, следовательно наверно есть в связке Java-jMonkeyEngine толк? А что посоветуете вы из профессиональных инструментов? Лично мне на Си++ известны OGRE и Nebula Device и если на первом написать игру можно только к старости, то второй в принципе очень неплох и структура его понятна, а последний проект "Drakensang" оставил только лучшие впечатления.

FDsagizi 23.03.2009 10:31

Ответ: ЯП & Gamedev(взгляд изнутри)
 
Цитата:

? Лично мне на Си++ известны OGRE и Nebula Device
А мне изветны вот эти http://en.wikipedia.org/wiki/List_of_game_engines
и ну почти все на с++

О чем это говорит, да, игры не плохо делать на нем! ;)

Baisangur 23.03.2009 10:55

Ответ: ЯП & Gamedev(взгляд изнутри)
 
Собственно те что я назвал это единственные что подходят для создания игры, остальные это поделки какието студенчиские(ну не считая уже устаревших idTech 1, 2 и коммерческих CryEngine, Unreal Engine) =)

HolyDel 23.03.2009 12:04

Ответ: ЯП & Gamedev(взгляд изнутри)
 
Цитата:

уже такую тучу инфы начитался, что у С++ управление памятью не динамическое и писать игру на нём - это настоящее задротство, но опятьже я думаю, что управлять памятью можно и ручками, зато скорость. Еще мне расхваливают, постоянно, Python, мол лучше для игр не найти.
где? кто? как?
пусть назовут список игр сделаных на плюсах и соответствующий список игр сделаных на питоне. и просто сравни их длину.

Цитата:

управление памятью не динамическое
O_o
а new и delete тогда зачем? а malloc и free? из всех инструментов которве я когда либо юзал (C++, delphi, blitz, dark basic) в первом самая гибкая система управления памятью. С ней можно делать что хочешь.

ABTOMAT 23.03.2009 14:50

Ответ: ЯП & Gamedev(взгляд изнутри)
 
Дак ёмоё все мировые хиты (ну, 99%) пишутся на плюсах для всех ОС и приставок :lol: Это ли не аргумент?

ffinder 23.03.2009 20:29

Ответ: ЯП & Gamedev(взгляд изнутри)
 
Цитата:

Сообщение от ABTOMAT (Сообщение 101515)
Дак ёмоё все мировые хиты (ну, 99%) пишутся на плюсах для всех ОС и приставок :lol: Это ли не аргумент?

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

ffinder 23.03.2009 20:44

Ответ: ЯП & Gamedev(взгляд изнутри)
 
Цитата:

Сообщение от Baisangur (Сообщение 101488)
Привет форумчане!
Хочу узнать я, насколько C++ вообще пригоден для создания игровых приложений? Я уже такую тучу инфы начитался, что у С++ управление памятью не динамическое и писать игру на нём - это настоящее задротство, но опятьже я думаю, что управлять памятью можно и ручками, зато скорость. Еще мне расхваливают, постоянно, Python, мол лучше для игр не найти. Правда? А как же защитить код на нём? Ведь скрипт...
Также мой взор нацелен и на Java, конечно 3D возможности её ранее были убоги, но сейчас уже не первый год живет проект jMonkeyEngine(Open Source), который финансируют очень крупные и солидные фирмы(SUN MicroSystems, NCSoft(Lineage I, II; GuildWars, AION). И НЦСофт даже разрабатывает игру на этом движке, следовательно наверно есть в связке Java-jMonkeyEngine толк? А что посоветуете вы из профессиональных инструментов? Лично мне на Си++ известны OGRE и Nebula Device и если на первом написать игру можно только к старости, то второй в принципе очень неплох и структура его понятна, а последний проект "Drakensang" оставил только лучшие впечатления.

тезисно:
1. С++ пригоден.
2. ручное управление памятью в некоторых случаях предпочтительней сборщика мусора. есть задачи, когда память хочется выделять на этапе компиляции.
3. писать игру целиком в 2009 году на С++ настоящее задротство, либо техническая неграмотность.
4. врут про Питон
5. Java - отстой (субъективно бездоказательно). Только для игровой логики и ничего больше.
6. OGRE - гуано. Моя любимая Nebula Device - архитектурный фейл. Печально. Андре Вайсфлог сам это признал.
А как же правильно? Архитектура "слоев". Как в UNIX.
нижний слой (native): API для графики, физики, звука, сети, привязка к конкретной оси, загрузка ассетов.
средний слой (binding managed to native)
верхний слой (managed/script): игровая логика, система событий, GUI, граф сцены, загрузка/выгрузка игрового состояния и т.д.

HolyDel 23.03.2009 21:00

Ответ: ЯП & Gamedev(взгляд изнутри)
 
Цитата:

3. писать игру целиком в 2009 году на С++ настоящее задротство, либо техническая неграмотность.
а как? 60% на С++, 30% на Delphi, 9% на ASM и еще один процент на brainfuck?
я думаю САМУ ИГРУ пишут таки на С++. а вот скрипты, тулзы, всякие конверторы и експортеры конечно надо писать на том инструменте, который более пригоден для конкретной задачи.

ffinder 23.03.2009 21:45

Ответ: ЯП & Gamedev(взгляд изнутри)
 
Цитата:

Сообщение от HolyDel (Сообщение 101547)
а как? 60% на С++, 30% на Delphi, 9% на ASM и еще один процент на brainfuck?
я думаю САМУ ИГРУ пишут таки на С++. а вот скрипты, тулзы, всякие конверторы и експортеры конечно надо писать на том инструменте, который более пригоден для конкретной задачи.

игра != движок
движок на С++, игра на скриптах/managed языках, игра в моем понимании все же игровая логика + ассеты, т.е. все то что не движок и тулзы.

HolyDel 23.03.2009 21:55

Ответ: ЯП & Gamedev(взгляд изнутри)
 
т.е. поменяли скрипты и уже стала другая игра?

ffinder 23.03.2009 22:06

Ответ: ЯП & Gamedev(взгляд изнутри)
 
Цитата:

Сообщение от HolyDel (Сообщение 101555)
т.е. поменяли скрипты и уже стала другая игра?

а разве нет? в скриптах вся игровая логика, был тетрис - стали городки. действительно другая игра.

пример из жизни: колода карт одинаковая (52 штуки), а игры разные: покер, преферанс, спортивный бридж, дурак, подкидной дурак (ну это типо мод:-) и т.д.

Еще пример: какая тебе как игроку разница, если бы Готика 3 была бы сделана не на своем движке, а на движке Обливиона? С теми же (как в Готике) ассетами, игровыми правилами и сюжетом? Только на другом движке?

ABTOMAT 23.03.2009 22:30

Ответ: ЯП & Gamedev(взгляд изнутри)
 
Какая вам разница если бы Фоллаут 3 был сделалн на движке Обливиона?
Тебе может и никакой, но народ возмущался...

jimon 23.03.2009 22:46

Ответ: ЯП & Gamedev(взгляд изнутри)
 
я всё же склоняюсь больше к концепции представленной valve в играх half-life 1,2, id software в quake,doom 3 и других

в общих чертах :
1) есть библиотека render.dll, это графический движок
2) есть библиотека engine.dll, это игровой движок
3) есть библиотека game.dll, это игровые обьекты описаные на языке на котором написан движок (обычно C++)
4) есть медиа, карты, скрипты - это всё уже составляющие игры

те к чему это всё :
в game.dll описываются игровые обьекты, например обьект дом, а моделей этих домов может быть куча, сложное взаимодействие (скриптовые сцены) пишутся на скриптах, а обобщенное (например AI) пишется уже на C++
получаем некоторую data-driven игру, по-сути программер один раз пишет обобщённые типы обьектов, а потом все остальные клепают самые разнообразные обьекты и движок нормально их воспринимает
самое главное - без каких либо проблем вся сцена сохраняется в файл и так же от туда полностью загружается

потому выходит :
1) писать враппер графического двига для скриптового языка не имеет смысла
2) описывать полностью базовые игровые обьекты в скриптах тоже не имеет смысла
3) писать сложное взаимодействие или расширение базовых типов в скриптах имеет смысл

из этого можно сказать что игра это :
1) игровой движок (зачастую написано на C++)
2) игровые обьекты (зачастую написано на C++ и на скриптовых языках)
3) игровая логика (зачастую написано на скриптовых языках)

вот и выходит что надо юзать и C++ и скрипты и не боятся :)

Baisangur 24.03.2009 02:16

Ответ: ЯП & Gamedev(взгляд изнутри)
 
Насчет Питона, на нем есть даже ММОРПГ небезысвестная от студии Дисней - Пираты Карибского Моря.
Ну я почемуто был уверен, что в итоге в основном люди будут за С++ и скрипты. А что посоветуете из движков? Почему Небула не прёт?
И почему в сторону Java такое отношение? =) Ведь Джава - это вопервых большая прибавка аудитории людей сидящих на Маках и Линуксах..

SBJoker 24.03.2009 10:24

Ответ: ЯП & Gamedev(взгляд изнутри)
 
Хинт: никого не волнуют люди сидящие на маках и линуксах в плане игр, их аудитория ничтожна, в то время как линуксойды не привыкли за что либо платить а на маках непривыкли играть.

Иными словами под них неделают непотому что сложно а потому что невыгодно.

З.Ы. на с++ можно и под маки с линуксами писать..хоть под программируемые контроллеры станков :)

ffinder 24.03.2009 12:34

Ответ: ЯП & Gamedev(взгляд изнутри)
 
Цитата:

Сообщение от Baisangur (Сообщение 101594)
Насчет Питона, на нем есть даже ММОРПГ небезысвестная от студии Дисней - Пираты Карибского Моря.

ну да, есть еще Eve Online.
ты не понял, я тут как раз больше всех за Питон. Красивый язык, богатая библиотека, много биндингов. Но есть и недостатки и их никто (Гвидо) не собирается исправлять, так как они объявлены фичами.
Контроль типов параметров просили - в ругани на форуме идея утонула.
Просили быстродействия - подняли в 2.5, но его недостаточно для движков.
Питон - язык прикладной, а не системный. И в качестве языка для игровой логики подходит. Памяти жрет много, тоже аргумент против.
На вебе, где он хорошо прижился, он конечно в тысячу раз лучше чем PHP. Но в игропроме другие проблемы и другие решения.

Цитата:

Сообщение от Baisangur (Сообщение 101594)
Ну я почемуто был уверен, что в итоге в основном люди будут за С++ и скрипты.

потому что компромис скорость/гибкость
Цитата:

Сообщение от Baisangur (Сообщение 101594)
А что посоветуете из движков?

а какая игра?
Цитата:

Сообщение от Baisangur (Сообщение 101594)
Почему Небула не прёт?

потому что Небьюла должна была стать переносимым фреймворком для игр. А получили громадное распухшее ядро и маленькую кучку кривых модулей, огромное время сброки проекта (ни STL ни boost они не использут принципиально). Потом начались архитектурные метания (куча маленьких DLLок или одна большая статическая либа). Когда нет четких интерфейсов (они постоянно менялись) люди не могут писать модули, потому что их постоянно надо править... Потом я перестал следить за событиями.
Цитата:

Сообщение от Baisangur (Сообщение 101594)
И почему в сторону Java такое отношение? =) Ведь Джава - это вопервых большая прибавка аудитории людей сидящих на Маках и Линуксах..

Смотри на Mono (.NET) в качестве прикладного слоя оно лучше чем Питон, потому что: контроль типов, хороший JIT и возможность генерации машинного кода сразу. Годится одновремменно и для скриптов и для тулзов, т.е. более однородная среда получается.

jimon 24.03.2009 12:36

Ответ: ЯП & Gamedev(взгляд изнутри)
 
ffinder
я тебя обрадую, используя boost время компиляции увеличивается раз в 10, потому что boost так и написан - даешь удобство, компиляцию реже
STL к разным компиляторам тоже различается, зачем делать изменения когда можно свой STL накатать ? ну или на крайний случай использовать STLPort, но с ним тоже возится надо
к тому же даже C Runtime между компиляторами может отличатся, к примеру наличие дополнительных критериев безопастности в visual studio

Nebula мне нравится некоторыми решениями, но стиль у них гадкий имхо

ffinder 24.03.2009 13:06

Ответ: ЯП & Gamedev(взгляд изнутри)
 
Цитата:

Сообщение от jimon (Сообщение 101612)
ffinder
я тебя обрадую, используя boost время компиляции увеличивается раз в 10

знаю

Baisangur 24.03.2009 14:29

Ответ: ЯП & Gamedev(взгляд изнутри)
 
2 ffinder: Mono, насколько я знаю, это просто пародие на .NET CLR и более, менее "дышащий" софт запустить на нем нереально.. Java в отличии, это поддерживаемое ОпенСорсом детище и даже если Майкрософт перестанет поддерживать свой .NET, то Джава не умрет, а идеология почти таже что у C#, что у Джава.

Итак, как показало обсуждение, лучшим на сегодняшний день решением является использование C++ совместно со скриптами(тот же Питон).
Но вот для меня открыт еще вопрос, ежели Небьюла это ужос, Огр, как выше сказали, гуано.. То какой двиг юзать? Хочется чтобы был заточен на рендеринг именно оутдор сцен.

SBJoker 24.03.2009 14:40

Ответ: ЯП & Gamedev(взгляд изнутри)
 
а вот в том то и прикол что хороших движков за приемлимые деньги нет, а какие есть требуют тщательной доработки напильником.

ffinder 24.03.2009 15:10

Ответ: ЯП & Gamedev(взгляд изнутри)
 
Цитата:

Сообщение от Baisangur (Сообщение 101618)
2 ffinder: Mono, насколько я знаю, это просто пародие на .NET CLR и более, менее "дышащий" софт запустить на нем нереально.. Java в отличии, это поддерживаемое ОпенСорсом детище и даже если Майкрософт перестанет поддерживать свой .NET, то Джава не умрет, а идеология почти таже что у C#, что у Джава.

это не верно. Mono идет в исходниках. различие только в количестве "фич" рантайма (сейчас на уровне 2.0), оконных библиотек (WinForms против Gtk), ну и всякие ASP.NET которые совершенно неактуальны для игропрома.
Идея в том что .NET interop делается легче чем JNI.

Цитата:

Сообщение от Baisangur (Сообщение 101618)
лучшим на сегодняшний день решением является использование C++ совместно со скриптами(тот же Питон).

это не "лучшее решение", а "путь наименьшего сопротивления". Под Win/DX писать кроме как на Microsoftовском компиляторе - это искать себе лишних проблем.

FDsagizi 25.03.2009 07:30

Ответ: ЯП & Gamedev(взгляд изнутри)
 
Цитата:

Сообщение от SBJoker (Сообщение 101619)
а вот в том то и прикол что хороших движков за приемлимые деньги нет, а какие есть требуют тщательной доработки напильником.

Вот только зачастую, в этих програмах мегатонны строк, и тут напильник нужен невебенный;)

Огр нормальный граф двиг:)

Baisangur 25.03.2009 10:53

Ответ: ЯП & Gamedev(взгляд изнутри)
 
О FDsagizi - Казахстанец =) Салам земляк!
Цитата:

ffinder:
Под Win/DX писать кроме как на Microsoftовском компиляторе - это искать себе лишних проблем.
Почему? Например мне удобнее существовать в Code::Blocks, чем в VS2008, у второго глюки и постоянные тормоза. Единственный вопрос, что в Майкрософт(в первых версиях Висты), ограничила выделение ОЗУ для программ написанных не на их компиляторе до 32 Мб, сейчас вроде после Сервис Пака этого уже нет. Да и юзать я хочу не DX, а OpenGL =)
2FDsagizi:
Я вижу у тебя в подписи ссылка на сайт с игрой, которая на ОГРЕ сделана тобой, как вообще ощущения от него? Подойдет ли он для игр РПГ жанра? Я вроде как помню у него есть несколько режимов рендеринга: оутдор, индор и т.п.

FDsagizi 25.03.2009 13:35

Ответ: ЯП & Gamedev(взгляд изнутри)
 
Цитата:

Сообщение от Baisangur (Сообщение 101732)
О FDsagizi - Казахстанец =) Салам земляк!
Я вижу у тебя в подписи ссылка на сайт с игрой, которая на ОГРЕ сделана тобой, как вообще ощущения от него? Подойдет ли он для игр РПГ жанра? Я вроде как помню у него есть несколько режимов рендеринга: оутдор, индор и т.п.

Дарова>O<

Огр, ну разные, были не приятные моменты, но приятных куда больше! К примеру те - же режимы out indor , ты можешь изменять без изменения кода, просто изменяешь тип используемого сцене менеджера. А дальше все само.
Удобно плагины подключать, комьюнити очень большое, в том числе русско язычное. Очень много тулз, хорошая скорость работы, приятный стиль кода использован в нем, неплохой менеджмент ресурсов, материалы вообще прикольно сделано! А стабильность - выше всех похвал! Очень много чего для него сделано, и практически все в опен сорсе! Развиваеться, и довольно хорошо.

Baisangur 25.03.2009 19:59

Ответ: ЯП & Gamedev(взгляд изнутри)
 
Да на русском сайте огра посмотрел скрины тамашних людей, очень даже приличные они, да и ОГР вроде не такое уж и гуано, почему его так не любят здешние не пойму.. И насколько знаю можно без насилования кода одним кликом задействовать OpenGL вместо DirectX.
Значит всетаки из доступных на сегодня инструментов первенство держат C++ в связке с OGRE и скриптами(скорее всего Lua). =)

ffinder 25.03.2009 21:41

Ответ: ЯП & Gamedev(взгляд изнутри)
 
Короче, FDsagizi, тебе только рекламщиком работать, расхвалил мощно, я аж на сайт ихний пошел:)
Движок повзрослел, вернее его поддержка. Теперь всё есть в бинарниках, есть скрины, демы, плагины. Есть интегрированные ODE и Newton. И главное что есть враппер под .NET/Mono!
Когда я смотрел на Ogre всё было значительно печальнее. Но за это время и DX9 стал массовым, и интернет теперь такой что скачать 80-100 метров казуалки - не вопрос.
Baisangur
Lua на PC - нонсенс и инерция мышления, создает столько же проблем, сколько и решает.
Я для себя выбрал Boo = .NET + Python + опциональная(!) статическая типизация + умеет перезагрузку кода на лету (умные люди говорят)
Где взять? SharpDevelop идет с ней в комплекте. Сейчас сижу и под Boo пробую примеры от Mogre:cool:


Часовой пояс GMT +4, время: 03:38.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot