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(взгляд изнутри)
 
Хинт: никого не волнуют люди сидящие на маках и линуксах в плане игр, их аудитория ничтожна, в то время как линуксойды не привыкли за что либо платить а на маках непривыкли играть.

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

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


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

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