човек иска да си направи редактор

Ако сте начинаещ, отделете малко време тук преди да посетите другите форуми.
SuryIIID
Power User
Power User
Мнения: 431
Регистриран: 01 яну 2004 21:03
Местоположение: София
Контакти:

човек иска да си направи редактор

Мнение от SuryIIID » 24 окт 2009 19:56

Чакай да използвам темата на човека да попитам и аз нещо.
Да предположим, че човек иска да си направи редактор. Да приемем, че има някакъв легаси код на DirectX 9.
С какво е най-удачно да си направи интерфейса ? Знам, че може да се ползва unmanaged DirectX с Windows Forms , но не знам дали в дългосрочен план е удачно, че малко като hack ми изглежда.. MFC не искам да ползвам, C++ Builder-а и той си е PITA за работа с библиотеките на Visual C++ .net. Да се портва към XNA съществуващия код не е опция..

gemicha
Site Admin
Site Admin
Мнения: 2930
Регистриран: 20 ное 2003 22:20
Местоположение: USA

Re: човек иска да си направи редактор

Мнение от gemicha » 24 окт 2009 21:22

Няма такова животно като unmanaged код! Има native код и managed код.

Погледни WPF може да ти свърши работа за следващите няколко години.

GeLeTo
Power User
Power User
Мнения: 285
Регистриран: 16 дек 2003 17:02

Re: човек иска да си направи редактор

Мнение от GeLeTo » 25 окт 2009 19:39

Погледни wxWidgets и Qt. Първото няма проблеми с DirectX, за второто не знам. Qt наскоро стана LGPL (преди беше GPL/commercial).

Потребителски аватар
YE
Power User
Power User
Мнения: 1554
Регистриран: 01 дек 2003 21:08
Местоположение: Outer Qwghlm
Контакти:

Re: човек иска да си направи редактор

Мнение от YE » 25 окт 2009 22:06

Има една теория, според която рендерера на света си е твоето EXЕ с твоята си технология (native / OpenGL / DirectX / whatever), и си говори по socket със тежкото GUI, което е на каквото е най-удобно - примерно Windows Forms или WPF. В дългосрочен план можеш да имаш по-малко главоболия така, отколкото ако се опиташ да embed-ваш native рендерер в managed EXE или нещо такова.

Потребителски аватар
haho
Power User
Power User
Мнения: 999
Регистриран: 07 дек 2003 21:52
Местоположение: България
Контакти:

Re: човек иска да си направи редактор

Мнение от haho » 25 окт 2009 22:17

YE написа:Има една теория, според която рендерера на света си е твоето EXЕ с твоята си технология (native / OpenGL / DirectX / whatever), и си говори по socket със тежкото GUI, което е на каквото е най-удобно - примерно Windows Forms или WPF. В дългосрочен план можеш да имаш по-малко главоболия така, отколкото ако се опиташ да embed-ваш native рендерер в managed EXE или нещо такова.

Аз съм 547895423789348934789 процента ЗА това което каза колегата. Още повече, че когато играта е ексклузивно за конзоли може би това е единствения разумен вариант. Ние не използвахме този похват при сегашния ни проект и сега много съжелявам.

SuryIIID
Power User
Power User
Мнения: 431
Регистриран: 01 яну 2004 21:03
Местоположение: София
Контакти:

Re: човек иска да си направи редактор

Мнение от SuryIIID » 25 окт 2009 23:20

Надявах се просто да включа по някакъв начин съществуващия код в проект, който е..как да кажа.. "GUI-enabled"
Опитах да вкарам native DX9 код във Visual C++ WinForms приложение да рендва в панел. Работи, но просто..не ми харесва. Отделно крашва при излизане, с някакъв System.NullReferenceException на device->release(). Гарбидж колектори са какво са, не ми се занимава...
Спомням си как беше с Borland C++ Builder-a преди няколко години. Вярно, не харесва да се линква към статичните DirectX библиотеки, но иначе си беше брийз. Само трябваше да се внимава, да не се ползват VCL-ски неща в кода, заради преносимост. Така и го пренесох без много ядове на VC++.
Геле , за wxWidgets не знам, не Qt не е никак лошо. "Троловете" или Нокия не знам, го направиха свободен и съм си играл с него, но само за елементарни неща.
Мина ми през акъла да взема да пробвам нещо от сорта на CEGUI или дори DXUT фреймуърк-а, но DXUT е много беден, а на мен ще ми трябват и менюта и treeview-та и прочие. Дали си струва да уча CEGUI , и Огре3Д инфлуенцията му вместо WinForms е отделен въпрос. Той също е доста ограничен.
Досега редактирах нивата в 3ds max и експортвах сцената със скрипт към двоичен формат, но като гледам редактори от сорта на SandBox-a на Crytek , на Torque и други си мисля, че бъркам с тоя 3дмакс и pipeline-а като цяло. Още повече, че вече няма бейкнати лайтмапи за сцената, а осветлението е динамично и други.
Имаше тука тема някъде, с дискусия относно дали да се ползва готов софтуер за аранжиране и редакция на сцена и ниво или такъв разработен специално, и по- WYSIWYG.

Добре, да предположим, че направя динамична библиотека от тоя код. Ще трябва да се пишат интерфейси.. Има ли ограничения да комуникирам със C# WinForms проложение ? Трябва ли интерфейса да бъде plain "C" и ще имам ли проблеми със С# стрингове и char* в аргументите и други подобни неща ?

Потребителски аватар
Kerberos
Power User
Power User
Мнения: 234
Регистриран: 24 фев 2005 16:08
Местоположение: София
Контакти:

Re: човек иска да си направи редактор

Мнение от Kerberos » 26 окт 2009 16:19

Енджина е в C динамична библиотека (има и C++,но със C експортнати функции). Използвам PyQT и Python да аксесна библиотеката (използвам ctypes (http://python.net/crew/theller/ctypes/tutorial.html) за извикване на С функциите) - редактора работи перфектно под Windows и Linux.

Edit: В ctypes нямаш wrapper layer около С функциите - каквото имаш в DLL-ката това използваш. Неща като SWIG и SIP за мен вече са в историята.

Потребителски аватар
TBoNe
Power User
Power User
Мнения: 519
Регистриран: 05 мар 2004 12:44
Местоположение: София
Контакти:

Re: човек иска да си направи редактор

Мнение от TBoNe » 26 окт 2009 21:00

TBH, ние в момента установихме, че най-добре се прави със редактор написан изцяло на C#, в който просто не ползваме rendering-а за game-а. C# е прекрасен за писане на интерфейс и много много не те боли за производителност. За съжаление правене на WYSIWYG редактор, трябва да минеш през преминаване от managed към native код, което си е много голям pain, без да се взима впредвид, че engine-а ти трябва да е предвиден да може да чертае в drawing context.

Потребителски аватар
Kerberos
Power User
Power User
Мнения: 234
Регистриран: 24 фев 2005 16:08
Местоположение: София
Контакти:

Re: човек иска да си направи редактор

Мнение от Kerberos » 26 окт 2009 21:05

Е те такoва съм правил даже - C++ рендер в програма писана на C# .... на онова подобие на език наречено Managed C++ (puke) (puke) (puke) !!!

Потребителски аватар
haho
Power User
Power User
Мнения: 999
Регистриран: 07 дек 2003 21:52
Местоположение: България
Контакти:

Re: човек иска да си направи редактор

Мнение от haho » 26 окт 2009 22:52

Не знам дали някой ме разбра, но аз пак да го кажа - истината е в разговор по сокет. От там нататък GUI на МФЦ, Ц шарп, и т.н, няма значение, каквото е удобно.

Потребителски аватар
Zemedelec
Power User
Power User
Мнения: 782
Регистриран: 08 дек 2003 15:45
Контакти:

Re: човек иска да си направи редактор

Мнение от Zemedelec » 27 окт 2009 12:24

haho написа:Не знам дали някой ме разбра, но аз пак да го кажа - истината е в разговор по сокет. От там нататък GUI на МФЦ, Ц шарп, и т.н, няма значение, каквото е удобно.
Не е ултимативна истина обаче - view-то от играта не ти е вътре в редактора, трябва 2 монитора за да се работи нормално. И пак не е удобно, ако трябда да манипулираш неща във view-то на играта. Удобно е само като технология.

GeLeTo
Power User
Power User
Мнения: 285
Регистриран: 16 дек 2003 17:02

Re: човек иска да си направи редактор

Мнение от GeLeTo » 27 окт 2009 17:40

Преди време правих такова нещо - редактора си правеше viewport/Оpengl сетъпа, навигацията и т.н., и викаше енджина от един DLL за да му изрисува нивото. В DLL-a имаше няколко функции -зареждане на ниво, рисуване, добавяне/изтриване/промяна на обект. И редактора може да рисува в прозореца - примерно като избереш обект.

SuryIIID
Power User
Power User
Мнения: 431
Регистриран: 01 яну 2004 21:03
Местоположение: София
Контакти:

Re: човек иска да си направи редактор

Мнение от SuryIIID » 27 окт 2009 18:17

TBone, на мен ми се ще да редактирам нещата ин-гейм. Неща, като рисуване на "сплатовете" по терена, редакция на геометрията му, пътища, реки , "озеленяване",отревяване , настройка на светлини, сенки, материали и шейдъри,текстури, поставяне и манипулиране на разни "мешки", нагласа на пост-процесите, физики и др. Мисля, че ще си струва инвестицията на време и усилия.
Засега мисля да го направя с DLL експортващ С функции и да ги викам от някакъв RAD tool, като WInForms, QT, или ВСВ.

SuryIIID
Power User
Power User
Мнения: 431
Регистриран: 01 яну 2004 21:03
Местоположение: София
Контакти:

Re: човек иска да си направи редактор

Мнение от SuryIIID » 13 мар 2010 00:20

Малко ъпдаейт 8)
"Енджина" е във VisualС++ dll, екпортващ plain С функции. Редактора е на Borland C++ 6.0. Засега комбинацията ми харесва с малки изключения, като например, че до някаква степен се "замърсява" графичния dll с функционалност необходима за самия редактор.

<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/8NhWfz2PrL8&hl ... ram><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/8NhWfz2PrL8&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object>[/youtube]

OldschoolBG
Power User
Power User
Мнения: 1102
Регистриран: 30 яну 2008 11:10
Местоположение: България
Контакти:

Re: човек иска да си направи редактор

Мнение от OldschoolBG » 15 мар 2010 02:51

@SuryIIID релефа на терена как го прави? Сам ли го "нагъва" или си генерира някакъв heightmap?

SuryIIID
Power User
Power User
Мнения: 431
Регистриран: 01 яну 2004 21:03
Местоположение: София
Контакти:

Re: човек иска да си направи редактор

Мнение от SuryIIID » 15 мар 2010 21:54

Тоя специално е от heightmap, но вече нагъвам и с мишката в реално време с фетч на вертексна текстура.

Отговори